IP Library Granted Patent US 12,710,930
Granted Patent B2
US 12,710,930 · App. 17/817,944 · Granted Aug 18, 2026

Reusable multi-language component for a desired state configuration system

Inventors: Lucas James Hoban (Seattle, WA); Patrick Duncan Gavlin (Seattle, WA); Justin Robert Van Patten (Redmond, WA)
Assignee: Pulumi Corporation
G06F8/31G06F8/34G06F9/454
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,710,930
App. No.
17/817,944
Granted
Aug 18, 2026
Kind
B2
Abstract

A multi-language component management system allows users to create and reuse reusable components in various supported languages for a desired state configuration system. The system manages creation and construction of reusable multi-language components. The system may receive a request to create an instance of a component in a first configuration language. The request may include input parameters for creating the instance. The component may be authored in a second configuration language different from the first configuration language and may include resources such as child components that depend on the component. The system may generate output properties containing information for generating the plurality of resources. The system may recursively construct the child components that depend on the component, which may in turn result in construction of additional resources. In response to the dependency of the component is resolved, the system outputs a set of completely resolved output properties.

Claims (75)

1 . A computer-implemented method of specifying a desired state of a cloud computing infrastructure, the computer-implemented method comprising:

receiving, from a client device, a computer program comprising an instruction for creating an instance of a component, the instruction including a set of input parameters for creating the instance;

creating the component based on the instruction,

wherein the component includes a plurality of resources, the plurality of resources including one or more of a compute resource, a storage resource, or a network resource,

wherein the component includes logic that defines a desired state configuration authored in a first procedural configuration language,

wherein the component comprises one or more child components,

wherein at least a child component is authored in a second procedural configuration language that is different from the first procedural configuration language, and

wherein the component comprises a schema authored in a declarative language, the schema specifying output properties of the component, and the declarative language different from the first procedural configuration language and the second procedural configuration language;

determining a list of needed resources by comparing the desired state configuration specified to a current state configuration of an environment in a cloud computing provider, the list of needed resources including the plurality of resources of the component;

generating a software development kit (SDK) for the second procedural configuration language based on the schema of the component, wherein the SDK enables cross-language instantiation of the component from the computer program written in the first procedural configuration language within a desired state configuration system for managing the cloud computing infrastructure, the SDK being generated from the schema to enable component reuse across different procedural configuration languages;

generating, by a service, a complete set of output properties for the list of needed resources by performing a recursive process comprising, for one or more iterations of the recursive process:

constructing the list of needed resources with the set of input parameters,

generating a set of output properties for the list of needed resources, wherein at least one resource and corresponding output properties for the child component is constructed by using the SDK for the second procedural configuration language,

determining whether a terminating condition is achieved based on whether additional resources to be constructed are physical resources or component resources, wherein the terminating condition is achieved when the additional resources to be constructed are physical resources, and

responsive to determining that the terminating condition is not achieved invoking another recursive process to construct at least an additional component configured to construct additional resources;

responsive to determining that the terminating condition is achieved, terminating the recursive process and defining the complete set of output properties to include each generated set of output properties; and

providing the complete set of output properties to the client device, the complete set of output properties representing information associated with the list of needed resources constructed within the cloud computing provider.

2 . The method of claim 1 , wherein the terminating condition is that the plurality of resources does not depend on another component resource.

3 . The method of claim 1 , further comprising generating, based on a schema for the component, a language-specific software development kit (SDK) for the component in each of a plurality of different procedural configuration languages, the SDK for a procedural configuration language allowing use of the component from that procedural programming language.

4 . The method of claim 1 , wherein the recursive process further comprises creating a child component that depends on the component, wherein the child component is authored in a third procedural configuration language.

5 . The method of claim 1 , wherein constructing the plurality of resources further comprises:

looking up resource provider information based on the set of input parameters; and

calling a constructor function based on the resource provider information.

6 . The method of claim 1 , wherein the set of output properties include a handle that drives construction of the additional resources.

7 . The method of claim 1 , wherein the set of output properties include a plurality of resource references generated based on the plurality of resources.

8 . The method of claim 1 , wherein each of the first procedural configuration language and the second procedural configuration language is one of: JavaScript, TypeScript, Python, Go, C#, F #, or HCL.

9 . A non-transitory computer-readable storage medium storing executable computer instructions that, when executed by one or more processors, cause the one or more processors to perform steps comprising:

receiving, from a client device, a computer program comprising an instruction for creating an instance of a component, the instruction including a set of input parameters for creating the instance;

creating the component based on the instruction,

wherein the component includes a plurality of resources, the plurality of resources including one or more of a compute resource, a storage resource, or a network resource,

wherein the component includes logic that defines a desired state configuration authored in a first procedural configuration language,

wherein the component comprises one or more child components,

wherein at least a child component is authored in a second procedural configuration language that is different from the first procedural configuration language, and

wherein the component comprises a schema authored in a declarative language, the schema specifying output properties of the component, and the declarative language different from the first procedural configuration language and the second procedural configuration language;

determining a list of needed resources by comparing the desired state configuration specified to a current state configuration of an environment in a cloud computing provider, the list of needed resources including the plurality of resources of the component;

generating a software development kit (SDK) for the second procedural configuration language based on the schema of the component, wherein the SDK enables cross-language instantiation of the component from the computer program written in the first procedural configuration language within a desired state configuration system for managing a cloud computing infrastructure, the SDK being generated from the schema to enable component reuse across different procedural configuration languages;

generating, by a service, a complete set of output properties for the list of needed resources by performing a recursive process comprising, for one or more iterations of the recursive process:

constructing the list of needed resources with the set of input parameters,

generating a set of output properties for the list of needed resources, wherein at least one resource and corresponding output properties for the child component is constructed by using the SDK for the second procedural configuration language,

determining whether a terminating condition is achieved based on whether additional resources to be constructed are physical resources or component resources, wherein the terminating condition is achieved when the additional resources to be constructed are physical resources, and

responsive to determining that the terminating condition is not achieved invoking another recursive process to construct at least an additional component configured to construct additional resources;

responsive to determining that the terminating condition is achieved, terminating the recursive process and defining the complete set of output properties to include each generated set of output properties; and

providing the complete set of output properties to the client device, the complete set of output properties representing information associated with the list of needed resources constructed within the cloud computing provider.

10 . The non-transitory computer-readable storage medium of claim 9 , wherein the terminating condition is that the plurality of resources does not depend on another component resource.

11 . The non-transitory computer-readable storage medium of claim 9 , further comprising generating, based on a schema, a language-specific software development kit (SDK) in the first procedural configuration language.

12 . The non-transitory computer-readable storage medium of claim 9 , wherein the recursive process further comprises creating a child component that depends on the component, wherein the child component is authored in a third procedural configuration language.

13 . The non-transitory computer-readable storage medium of claim 9 , wherein constructing the plurality of resources further comprises:

looking up resource provider information based on the set of input parameters; and

calling a constructor function based on the resource provider information.

14 . The non-transitory computer-readable storage medium of claim 9 , wherein the set of output properties include a handle that drives construction of the additional resources.

15 . The non-transitory computer-readable storage medium of claim 9 , wherein the set of output properties include a plurality of resources references generated based on the plurality of resources.

16 . A system comprising:

one or more processors configured to execute instructions; and

a memory storing instructions for execution on the one or more processors, including instructions causing the one or more processors to:

receive, from a client device, a computer program comprising an instruction for creating an instance of a component, the instruction including a set of input parameters for creating the instance;

create the component based on the instruction,

wherein the component includes a plurality of resources, the plurality of resources including one or more of a compute resource, a storage resource, or a network resource,

wherein the component includes logic that defines a desired state configuration authored in a first procedural configuration language,

wherein the component comprises one or more child components,

wherein at least a child component is authored in a second procedural configuration language that is different from the first procedural configuration language, and

wherein the component comprises a schema authored in a declarative language, the schema specifying output properties of the component, and the declarative language different from the first procedural configuration language and the second procedural configuration language;

determine a list of needed resources by comparing the desired state configuration specified to a current state configuration of an environment in a cloud computing provider, the list of needed resources including the plurality of resources of the component;

generate a software development kit (SDK) for the second procedural configuration language based on the schema of the component, wherein the SDK enables cross-language instantiation of the component from the computer program written in the first procedural configuration language within a desired state configuration system for managing a cloud computing infrastructure, the SDK being generated from the schema to enable component reuse across different procedural configuration languages;

generate, by a service, a complete set of output properties for the list of needed resources by performing a recursive process causing the one or more processors to, for one or more iterations of the recursive process:

construct the list of needed resources with the set of input parameters,

generate a set of output properties for the list of needed resources, wherein at least one resource and corresponding output properties for the child component is constructed by using the SDK for the second procedural configuration language,

determine whether a terminating condition is achieved based on whether additional resources to be constructed are physical resources or component resources, wherein the terminating condition is achieved when the additional resources to be constructed are physical resources, and

responsive to determining that the terminating condition is not achieved invoke another recursive process to construct at least an additional component configured to construct additional resources;

responsive to determining that the terminating condition is achieved, terminate the recursive process and defining the complete set of output properties to include each generated set of output properties; and

provide the complete set of output properties to the client device, the complete set of output properties representing information associated with the list of needed resources constructed within the cloud computing provider.

17 . The system of claim 16 , wherein the terminating condition is that the plurality of resources does not depend on another component resource.

18 . The system of claim 16 , wherein the instructions further cause the one or more processors to generate, based on a schema, a language-specific software development kit (SDK) in the first configuration language.

19 . The system of claim 16 , wherein constructing the plurality of resources further comprises:

looking up resource provider information based on the set of input parameters; and

calling a constructor function based on the resource provider information.