# US 10,481,949 B2 · Methods and apparatus to automate deployments of software defined data centers based on user-provided parameter values

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,481,949 B2
- Document ID: US10481949B2
- Status: Granted
- Kind: B2
- Application number: 15/373,831
- Filed: 2016-12-09
- Published: 2018-06-14
- Granted: 2019-11-19
- Earliest claimed: 2016-12-09
- Assignees: VMware, Inc.
- Applicants: VMware, Inc.
- Inventors: Pavel Mitkov Dobrev
- Web page: https://patentgrep.com/patent/US10481949B2

## CPC

- G06F 9/4881: {Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues}
- G06F 8/38: for implementing user interfaces
- G06F 8/60: Software deployment
- G06F 9/45558: {Hypervisor-specific management and integration aspects}
- G06F 9/5038: {considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration (scheduling strategies G06F9/4881 and subgroups)}
- G06F 2009/45562: {Creating, deleting, cloning virtual machine instances}
- G06F 2009/4557: {Distribution of virtual machine instances; Migration and load balancing}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A disclosed example method to automate deployment of a software defined data center includes generating, by executing an instruction with at least one processor, a task list based on tasks provided in an automation plan to deploy the software defined data center; determining, by executing an instruction with the at least one processor, dependencies between the tasks prior to executing the tasks; determining, by executing an instruction with the at least one processor, whether a resource that is to be an output of a first one of the tasks exists before execution of the first one of the tasks; removing, by executing an instruction with the at least one processor, the first one of the tasks from the task list when the resource exists before execution of the first one of the tasks; generating an execution schedule, by executing an instruction with the at least one processor, based on the dependencies and ones of the tasks remaining in the task list; and executing, with the at least one processor, the ones of the tasks based on the execution schedule to deploy the software defined data center.

## Claims

### Claim 1

A method to automate user deployment of a software defined data center based on an automation plan generated by a service provider and accessible by a user, the method comprising:
obtaining, via a user interface, user-provided parameter values for user-configurable parameters in the automation plan to configure features of the software defined data center;
accessing, by executing a first instruction of first machine-executable instructions with at least one processor before a task list is generated, the automation plan as compiled second machine-executable instructions to deploy the software defined data center, the task list based on the automation plan of the compiled second machine-executable instructions and the user-provided parameter values;
determining, by executing a second instruction of the first machine-executable instructions with the at least one processor, dependencies between tasks in the task list prior to executing the tasks;
associating, by executing a third instruction of the first machine-executable instructions with the at least one processor, the user-provided parameter values for the user-configurable parameters with corresponding ones of the tasks from the task list;
removing, by executing a fourth instruction of the first machine-executable instructions with the at least one processor, a first task from the task list when a resource that is to be an output of the first task already exists before the first task is to be executed;
generating an execution schedule, by executing a fifth instruction of the first machine-executable instructions with the at least one processor, based on the dependencies, tasks remaining in the task list, and the user-provided parameter values, the execution schedule to alter execution of the tasks of the automation plan to modify deployment of the software defined data center without recompiling the automation plan; and
executing, with the at least one processor, the tasks remaining in the task list based on the execution schedule to deploy the software defined data center.

### Claim 2 (depends on 1)

The method as defined in claim 1, wherein the tasks of the automation plan are provided in a plurality of JavaScript Open Notation (JSON) files.

### Claim 3 (depends on 1)

The method as defined in claim 1, wherein the automation plan is generated by the service provider independent of a need of a customer to deploy the software defined data center, and the automation plan is to be subsequently accessible by the customer when the customer is to deploy the software defined data center.

### Claim 4 (depends on 1)

The method as defined in claim 1, further including accessing the automation plan as a pre-prepared automation plan before generating the task list, the task list based on the user-provided parameter values without receiving any line of code via any user input for the pre-prepared automation plan after accessing the pre-prepared automation plan.

### Claim 5 (depends on 1)

The method as defined in claim 1, wherein the generating of the execution schedule and the executing of the tasks in the task list are performed by a single server node.

### Claim 6 (depends on 1)

The method as defined in claim 1, wherein the automation plan is to configure a virtual appliance, and further including executing a second task from the task list corresponding to a second automation plan to configure core components of the software defined data center, the core components including a hypervisor, a network virtualizer, and a virtual storage area network.

### Claim 7 (depends on 6)

The method as defined in claim 6, wherein the virtual appliance is at least one of a web server, an application server, or a database server.

### Claim 8

An apparatus with at least one or more processors to automate user deployment of a software defined data center based on an automation plan generated by a service provider and accessible by a user, the apparatus comprising:
a user interface to obtain user-provided parameter values for user-configurable parameters to configure features of the software defined data center;
the at least one or more processors to, before a task list is generated, access the automation plan as compiled machine-executable instructions to deploy the software defined data center, the task list based on the automation plan of the compiled machine-executable instructions and the user-provided parameter values;
a dependency determiner to determine dependencies between tasks in the task list prior to executing the tasks;
a schedule generator to:
associate the user-provided parameter values for the user-configurable parameters with corresponding ones of the tasks from the task list;
remove a first task from the task list when a resource that is to be an output of the first task already exists before the first task is to be executed; and
generate an execution schedule based on the dependencies, tasks remaining in the task list, and the user-provided parameter values, the execution schedule to alter execution of the tasks of the automation plan to modify deployment of the software defined data center without recompiling the automation plan; and
the at least one or more processors to execute the tasks remaining in the task list based on the execution schedule to deploy the software defined data center.

### Claim 9 (depends on 8)

The apparatus as defined in claim 8, wherein the automation plan includes the tasks in a plurality of JavaScript Open Notation (JSON) files.

### Claim 10 (depends on 8)

The apparatus as defined in claim 8, wherein the automation plan is generated by the service provider independent of a need of a customer to deploy the software defined data center, and the automation plan is to be subsequently accessible by the customer when the customer is to deploy the software defined data center.

### Claim 11 (depends on 8)

The apparatus as defined in claim 8, wherein the at least one or more processors is further to access the automation plan as a pre-prepared automation plan before the task list is generated, the task list based on the user-provided parameter values without receiving any line of code via any user input for the pre-prepared automation plan after accessing the pre-prepared automation plan.

### Claim 12 (depends on 8)

The apparatus as defined in claim 8, wherein the dependency determiner and the schedule generator correspond to a single server node.

### Claim 13 (depends on 8)

The apparatus as defined in claim 8, wherein the automation plan is to configure a virtual appliance, and the at least one or more processors is further to execute a second task from the task list corresponding to a second automation plan to configure core components of the software defined data center, the core components including a hypervisor, a network virtualizer, and a virtual storage area network.

### Claim 14 (depends on 13)

The apparatus as defined in claim 13, wherein the virtual appliance is at least one of a web server, an application server, or a database server.

### Claim 15

At least one non-transitory computer readable medium comprising instructions to automate user deployment of a software defined data center based on an automation plan generated by a service provider and accessible by a user, the instructions, when executed, cause at least one processor to:
obtain, via a user interface, user-provided parameter values for user-configurable parameters to configure features of the software defined data center;
access, before a task list is generated, the automation plan as compiled machine-executable instructions to deploy the software defined data center, the task list based on the automation plan of the compiled machine-executable instructions and the user-provided parameter values;
determine dependencies between tasks in the task list prior to executing the tasks;
associate the user-provided parameter values for the user-configurable parameters with corresponding ones of the tasks from the task list;
remove a first task from the task list when a resource that is to be an output of the first task already exists before the first task is to be executed;
generate an execution schedule based on the dependencies, tasks remaining in the task list, and the user-provided parameter values, the execution schedule to alter execution of the tasks of the automation plan to modify deployment of the software defined data center without recompiling the automation plan; and
execute the tasks remaining in the task list based on the execution schedule to deploy the software defined data center.

### Claim 16 (depends on 15)

The at least one non-transitory computer readable medium as defined in claim 15, wherein the tasks of the automation plan are provided in a plurality of JavaScript Open Notation (JSON) files.

### Claim 17 (depends on 15)

The at least one non-transitory computer readable medium as defined in claim 15, wherein the automation plan is generated by the service provider independent of a need of a customer to deploy the software defined data center, and the automation plan is to be subsequently accessible by the customer when the customer is to deploy the software defined data center.

### Claim 18 (depends on 15)

The at least one non-transitory computer readable medium as defined in claim 15, wherein the instructions are further to cause the at least one processor to access the automation plan as a pre-prepared automation plan before generating the task list, the task list based on the user-provided parameter values without receiving any line of code via any user input for the pre-prepared automation plan after accessing the pre-prepared automation plan.

### Claim 19 (depends on 15)

The at least one non-transitory computer readable medium as defined in claim 15, wherein the generating of the execution schedule and the executing of the tasks in the task list are performed by a single server node.

### Claim 20 (depends on 15)

The at least one non-transitory computer readable medium as defined in claim 15, wherein the automation plan is to configure a virtual appliance, and the instructions are further to cause the at least one processor to execute a second task from the task list corresponding to a second automation plan to configure core components of the software defined data center, the core components including a hypervisor, a network virtualizer, and a virtual storage area network.

### Claim 21 (depends on 20)

The at least one non-transitory computer readable medium as defined in claim 20, wherein the virtual appliance is at least one of a web server, an application server, or a database server.
