Methods and apparatus for event-based extensibility of system logic

Methods and apparatus to customize deployment are disclosed. An example deployment customization manager can generate a first notification payload including an uncustomized application component property of an application component that provides a logical template of an application. A deployment event broker can reply back to the deployment customization manager with another payload that includes a customized or modified application component property.

FIELD OF THE DISCLOSURE

The present disclosure relates generally to cloud computing and, more particularly, to methods and apparatus to provide event-based extensibility of system logic in deployment provisioning.

BACKGROUND

Virtualizing computer systems provide benefits such as the ability to execute multiple computer systems on a single hardware computer, replicating computer systems, moving computer systems among multiple hardware computers, and so forth.

“Infrastructure-as-a-Service” (also commonly referred to as “IaaS”) generally describes a suite of technologies provided by a service provider as an integrated solution to allow for elastic creation of a virtualized, networked, and pooled computing platform (sometimes referred to as a “cloud computing platform”). Enterprises may use IaaS as a business-internal organizational cloud computing platform (sometimes referred to as a “private cloud”) that gives an application developer access to infrastructure resources, such as virtualized servers, storage, and networking resources. By providing ready access to the hardware resources required to run an application, the cloud computing platform enables developers to build, deploy, and manage the lifecycle of a web application (or any other type of networked application) at a greater scale and at a faster pace than ever before.

Cloud computing environments may be composed of many processing units (e.g., servers). The processing units may be installed in standardized frames, known as racks, which provide efficient use of floor space by allowing the processing units to be stacked vertically. The racks may additionally include other components of a cloud computing environment such as storage devices, networking devices (e.g., switches), etc.

DETAILED DESCRIPTION

Cloud computing is based on the deployment of many physical resources across a network, virtualizing the physical resources into virtual resources, and provisioning the virtual resources to perform cloud computing services and applications. Example systems for virtualizing computer systems are described in U.S. patent application Ser. No. 11/903,374, entitled “METHOD AND SYSTEM FOR MANAGING VIRTUAL AND REAL MACHINES,” filed Sep. 21, 2007, and granted as U.S. Pat. No. 8,171,485, U.S. Provisional Patent Application No. 60/919,965, entitled “METHOD AND SYSTEM FOR MANAGING VIRTUAL AND REAL MACHINES,” filed Mar. 26, 2007, and U.S. Provisional Patent Application No. 61/736,422, entitled “METHODS AND APPARATUS FOR VIRTUALIZED COMPUTING,” filed Dec. 12, 2012, all three of which are hereby incorporated herein by reference in their entirety.

Cloud computing platforms may provide many powerful capabilities for performing computing operations. However, taking advantage of these computing capabilities manually may be complex and/or require significant training and/or expertise. Prior techniques to providing cloud computing platforms and services often require customers to understand details and configurations of hardware and software resources to establish and configure the cloud computing platform. Methods and apparatus disclosed herein facilitate the management of virtual machine resources in cloud computing platforms.

A virtual machine is a software computer that, like a physical computer, runs an operating system and applications. An operating system installed on a virtual machine is referred to as a guest operating system. Because each virtual machine is an isolated computing environment, virtual machines (VMs) can be used as desktop or workstation environments, as testing environments, to consolidate server applications, etc. Virtual machines can run on hosts or clusters. The same host can run a plurality of VMs, for example.

As disclosed in detail herein, methods and apparatus disclosed herein provide for automation of management tasks such as provisioning multiple virtual machines for a multiple-machine computing system (e.g., a group of servers that inter-operate), linking provisioned virtual machines and tasks to desired systems to execute those virtual machines or tasks, and/or reclaiming cloud computing resources that are no longer in use. The improvements to cloud management systems (e.g., the vRealize Orchestrator (vRO) from VMware®, the vRealize Automation Cloud Automation Software from VMware®), interfaces, portals, etc. disclosed herein may be utilized individually and/or in any combination. For example, all or a subset of the described improvements may be utilized.

As used herein, “availability” refers to the level of redundancy required to provide the continuous operation expected for the workload domain. As used herein, “performance” refers to the computer processing unit (CPU) operating speeds (e.g., CPU gigahertz (GHz)), memory (e.g., gigabytes (GB) of random access memory (RAM)), mass storage (e.g., GB hard drive disk (HDD), GB solid state drive (SSD)), and power capabilities of a workload domain. As used herein, “capacity” refers to the aggregate number of resources (e.g., aggregate storage, aggregate CPU, etc.) across all servers associated with a cluster and/or a workload domain. In examples disclosed herein, the number of resources (e.g., capacity) for a workload domain is determined based on the redundancy, the CPU operating speed, the memory, the storage, the security, and/or the power requirements selected by a user. For example, more resources are required for a workload domain as the user-selected requirements increase (e.g., higher redundancy, CPU speed, memory, storage, security, and/or power options require more resources than lower redundancy, CPU speed, memory, storage, security, and/or power options).

Example Virtualization Environments

Many different types of virtualization environments exist. Three example types of virtualization environment are: full virtualization, paravirtualization, and operating system virtualization.

Full “virtualization”, as used herein, is a virtualization environment in which hardware resources are managed by a hypervisor to provide virtual hardware resources to a virtual machine. In a full virtualization environment, the virtual machines do not have direct access to the underlying hardware resources. In a typical full virtualization environment, a host operating system with embedded hypervisor (e.g., VMware ESXi®) is installed on the server hardware. Virtual machines including virtual hardware resources are then deployed on the hypervisor. A guest operating system is installed in the virtual machine. The hypervisor manages the association between the hardware resources of the server hardware and the virtual resources allocated to the virtual machines (e.g., associating physical random access memory (RAM) with virtual RAM). Typically, in full virtualization, the virtual machine and the guest operating system have no visibility and/or direct access to the hardware resources of the underlying server. Additionally, in full virtualization, a full guest operating system is typically installed in the virtual machine while a host operating system is installed on the server hardware. Example full virtualization environments include VMware ESX®, Microsoft Hyper-V®, and Kernel Based Virtual Machine (KVM).

“Paravirtualization”, as used herein, is a virtualization environment in which hardware resources are managed by a hypervisor to provide virtual hardware resources to a virtual machine, and guest operating systems are also allowed direct access to some or all of the underlying hardware resources of the server (e.g., without accessing an intermediate virtual hardware resource). In a typical paravirtualization system, a host operating system (e.g., a Linux-based operating system) is installed on the server hardware. A hypervisor (e.g., the Xen® hypervisor) executes on the host operating system. Virtual machines including virtual hardware resources are then deployed on the hypervisor. The hypervisor manages the association between the hardware resources of the server hardware and the virtual resources allocated to the virtual machines (e.g., associating physical random access memory (RAM) with virtual RAM). In paravirtualization, the guest operating system installed in the virtual machine is configured also to have direct access to some or all of the hardware resources of the server. For example, the guest operating system may be precompiled with special drivers that allow the guest operating system to access the hardware resources without passing through a virtual hardware layer. For example, a guest operating system may be precompiled with drivers that allow the guest operating system to access a sound card installed in the server hardware. Directly accessing the hardware (e.g., without accessing the virtual hardware resources of the virtual machine) may be more efficient, may allow for performance of operations that are not supported by the virtual machine and/or the hypervisor, etc.

“Operating system virtualization” is also referred to herein as container virtualization. As used herein, “operating system virtualization” refers to a system in which processes are isolated in an operating system. In a typical operating system virtualization system, a host operating system is installed on the server hardware. The host operating system of an operating system virtualization system is configured (e.g., utilizing a customized kernel) to provide isolation and resource management for processes that execute within the host operating system (e.g., applications that execute on the host operating system). The isolation of the processes is known as a container. Several containers may share a host operating system. Thus, a process executing within a container is isolated the process from other processes executing on the host operating system. Thus, operating system virtualization provides isolation and resource management capabilities without the resource overhead utilized by a full virtualization environment or a paravirtualization environment. Alternatively, the host operating system may be installed in a virtual machine of a full virtualization environment or a paravirtualization environment. Example operating system virtualization environments include Linux Containers LXC and LXD, DockerTM, OpenVZTM, etc.

In some instances, a data center (or pool of linked data centers) may include multiple different virtualization environments. For example, a data center may include hardware resources that are managed by a full virtualization environment, a paravirtualization environment, and an operating system virtualization environment. In such a data center, a workload may be deployed to any of the virtualization environments.

FIGS. 1A-1Cdepict an example system100constructed in accordance with the teachings of this disclosure for managing a cloud computing platform. The example system100includes an application director106and a cloud manager138to manage a cloud computing platform provider110as described in more detail below. As described herein, the example system100facilitates management of the cloud provider110and does not include the cloud provider110. Alternatively, the system100could be included in the cloud provider110.

The cloud computing platform provider110provisions virtual computing resources (e.g., virtual machines, or “VMs,”114) that may be accessed by users of the cloud computing platform110(e.g., users associated with an administrator116and/or a developer118) and/or other programs, software, device, etc.

An example application102ofFIG. 1Aincludes multiple VMs114. The example VMs114ofFIG. 1Aprovide different functions within the application102(e.g., services, portions of the application102, etc.). One or more of the VMs114of the illustrated example are customized by an administrator116and/or a developer118of the application102relative to a stock or out-of-the-box (e.g., commonly available purchased copy) version of the services and/or application components. Additionally, the services executing on the example VMs114may have dependencies one or more other ones of the VMs114.

As illustrated inFIG. 1A, the example cloud computing platform provider110may provide multiple deployment environments112, for example, for development, testing, staging, and/or production of applications. The administrator116, the developer118, other programs, and/or other devices may access services from the cloud computing platform provider110, for example, via REST (Representational State Transfer) APIs (Application Programming Interface) and/or via any other client-server communication protocol. Example implementations of a REST API for cloud computing services include a vRealize Orchestrator (vRO) and/or vRealize Automation (vRA) API and a vCloud Director API available from VMware, Inc. The example cloud computing platform provider110provisions virtual computing resources (e.g., the VMs114) to provide the deployment environments112in which the administrator116and/or the developer118can deploy multi-tier application(s). One particular example implementation of a deployment environment that may be used to implement the deployment environments112A ofFIG. 1Ais vCloud DataCenter cloud computing services available from VMware, Inc.

In some examples disclosed herein, a lighter-weight virtualization is employed by using containers instead of VMs114as shown in the development environment112B. Example containers114aare software constructs that run on top of a host operating system without the need for a hypervisor or a separate guest operating system. Unlike virtual machines, the containers114ado not instantiate their own operating systems. Like virtual machines, the containers114aare logically separate from one another. Numerous containers can run on a single computer, processor system and/or in the same development environment112. Also like virtual machines, the containers114acan execute instances of applications or programs (e.g., an example application102a) separate from application/program instances executed by the other containers in the same development environment112B.

The example application director106ofFIG. 1A, which may be running in one or more VMs, orchestrates deployment of multi-tier applications onto one of the example deployment environments112A,112B,112C. As illustrated inFIG. 1A, the example application director106includes a topology generator120, a deployment plan generator122, and a deployment director124.

The example topology generator120generates a basic blueprint126ofFIG. 1Athat specifies a logical topology of an application to be deployed. The example basic blueprint126generally captures the structure of an application as a collection of application components executing on virtual computing resources. An example online store application basic blueprint126generated by the example topology generator120may specify a web application (e.g., in the form of a Java web application archive or “WAR” file including dynamic web pages, static web pages, Java servlets, Java classes, and/or other property, configuration and/or resources files that make up a Java web application) executing on an application server (e.g., Apache Tomcat application server) that uses a database (e.g., MongoDB) as a data store. As used herein, the term “application” generally refers to a logical deployment unit, including of one or more application packages and their dependent middleware and/or operating systems. Applications may be distributed across multiple VMs. Thus, in the example described above, the term “application” refers to the entire online store application, including application server and database components, rather than just the web application itself. In some instances, the application may include the underlying hardware and/or virtual computing hardware utilized to implement the components.

The example basic blueprint126ofFIG. 1Amay be assembled from items (e.g., templates) from a catalog130, which is a listing of available virtual computing resources (e.g., VMs, networking, storage, etc.) that may be provisioned from the cloud computing platform provider110and available application components (e.g., software services, scripts, code components, application-specific packages) that may be installed on the provisioned virtual computing resources.FIG. 1Bshows a more detailed view of example catalog130, explicitly showing for example Application Component150including Uncustomized Application Component Properties154a, which for example can include an Uncustomized Machine Name156a, a reservation for an Uncustomized Internet Protocol (IP) Address158a, and an Uncustomized Resource Allocation159a. The forgoing are related to VM's. For example, the Uncustomized Resource Allocation159acan be broadly directed to examples such as uncustomized Central Processing Unit (CPU) allocation for VM's, and uncustomized memory allocation for VM's, etc. As will be discussed in greater detail subsequently, the Uncustomized Application Properties can be customized and/or modified so as to provide for deployment customization.

More generally, the example catalog130may be pre-populated and/or customized by an administrator116(e.g., IT (Information Technology) or system administrator) that enters in specifications, configurations, properties, and/or other details about items in the catalog130. Based on the application, the example blueprints126may define one or more dependencies between application components to indicate an installation order of the application components during deployment. For example, since a load balancer usually cannot be configured until a web application is up and running, the developer118may specify a dependency from an Apache service to an application code package.

The example deployment plan generator122of the example application director106ofFIG. 1Agenerates a deployment plan128based on the basic blueprint126that includes deployment settings (e.g., virtual computing resources' cluster size, CPU, memory, networks, etc.) and an execution plan of tasks. The execution plan specifies an order in which virtual computing resources are provisioned and application components are installed, configured, and started. The example deployment plan128ofFIG. 1Aprovides an IT administrator with a process-oriented view of the basic blueprint126that indicates discrete actions to be performed to deploy the application. Different deployment plans128may be generated from a single basic blueprint126to test prototypes (e.g., new application versions), to scale up and/or scale down deployments, and/or to deploy the application to different deployment environments112A,112B.112C, etc. (e.g., for testing, staging, production). In this example the deployment plan128is separated and distributed as a series of local deployment plans having a series of tasks to be executed by the VMs114provisioned from the deployment environment112A. Each VM114coordinates execution of each task with a centralized deployment module (e.g., the deployment director124) to ensure that tasks are executed in an order that complies with dependencies specified in the application blueprint126. The Application Director106can generate a Blueprint Display135, as shown inFIG. 1Aand as shown for example in greater detail inFIG. 1C. In the example ofFIG. 1C, the Blueprint Display135displays an example Blueprint126showing for example a Visual Depiction of Application Component160. In the example ofFIG. 1C, the Application Component includes an example Load Balancer Component162topologically coupled with example Application Server Components164topologically coupled with Database Component166.

The example deployment director124ofFIG. 1Aexecutes the deployment plan128by communicating with the cloud computing platform provider110via a cloud interface132to provision and configure the VMs114in the deployment environment112A and/or containers114ain the deployment environment112B. The example cloud interface132ofFIG. 1Aprovides a communication abstraction layer by which the application director106may communicate with a heterogeneous mixture of cloud provider(s)110and/or deployment environments112A,112B,112C, etc. The deployment director124provides each VM114and/or Containers114A with a series of tasks specific to the receiving VM114and/or Containers114A (herein referred to as a “local deployment plan”). Tasks are executed by the VMs114and/or Containers114A to install, configure, and/or start one or more application components. For example, a task may be a script that, when executed by a VM114and/or Containers114A, causes the VM114and/or Containers114A to retrieve and install particular software packages from a central package repository134. The example deployment director124ofFIG. 1Acoordinates with the VMs114and/or Containers114A to execute the tasks in an order that observes installation dependencies between VMs114and/or Containers114A according to the deployment plan128. After the application has been deployed, the application director106may be utilized to monitor and/or modify (e.g., scale) the deployment.

The cloud manager138ofFIG. 1Ainteracts with the components of the system100(e.g., the application director106and the cloud provider110) to facilitate the management of the resources of the cloud provider110. The example cloud manager138includes a blueprint manager140to facilitate the creation and management of multi-machine blueprints and a resource manager144to reclaim unused cloud resources. The cloud manager138may additionally include other components for managing a cloud environment.

The blueprint manager140of the illustrated example manages the creation of multi-machine blueprints that define the attributes of multiple virtual machines as a single group that can be provisioned, deployed, managed, etc. as a single unit. For example, a multi-machine blueprint may include definitions for multiple basic blueprints that make up a service (e.g., an e-commerce provider that includes web servers, application servers, and database servers). A basic blueprint is a definition of policies (e.g., hardware policies, security policies, network policies, etc.) for a single machine (e.g., a single virtual machine such as a web server virtual machine and/or container). Accordingly, the blueprint manager140facilitates more efficient management of multiple virtual machines and/or containers than manually managing (e.g., deploying) basic blueprints individually. Example management of multi-machine blueprints is described in further detail in conjunction withFIG. 2.

The example blueprint manager140ofFIG. 1Aadditionally annotates basic blueprints and/or multi-machine blueprints to control how workflows associated with the basic blueprints and/or multi-machine blueprints are executed. A “workflow” as used herein is a series of actions and decisions to be executed in a virtual computing platform. The example system100ofFIG. 1Aincludes first and second distributed execution manager(s) (DEM(s))146A and146B to execute workflows. According to the illustrated example, the first DEM146A includes a first set of characteristics and is physically located at a first location148A. The second DEM146B includes a second set of characteristics and is physically located at a second location148B. The location and characteristics of a DEM may make that DEM more suitable for performing certain workflows. For example, a DEM may include hardware particularly suited for performance of certain tasks (e.g., high-end calculations), may be located in a desired area (e.g., for compliance with local laws that require certain operations to be physically performed within a country's boundaries), may specify a location or distance to other DEMS for selecting a nearby DEM (e.g., for reducing data transmission latency), etc. Thus, the example blueprint manager140ofFIG. 1Aannotates basic blueprints and/or multi-machine blueprints with capabilities that can be performed by a DEM that is labeled with the same or similar capabilities.

The resource manager144of the illustrated example facilitates recovery of cloud computing resources of the cloud provider110that are no longer being activity utilized. Automated reclamation may include identification, verification and/or reclamation of unused, underutilized, etc. resources to improve the efficiency of the running cloud infrastructure.

FIG. 2illustrates an example implementation of the blueprint126as a multi-machine blueprint generated by the example blueprint manager140ofFIG. 1. In the illustrated example ofFIG. 2, three example basic blueprints (a web server blueprint202, an application server blueprint204, and a database (DB) server blueprint206) have been created (e.g., by the topology generator120). For example, the web server blueprint202, the application server blueprint204, and the database server blueprint206may define the components of an e-commerce online store.

The example blueprint manager140provides a user interface for a user of the blueprint manager140(e.g., the administrator116, the developer118, etc.) to specify blueprints (e.g., basic blueprints and/or multi-machine blueprints) to be assigned to an instance of a multi-machine blueprint208. For example, the user interface may include a list of previously generated basic blueprints (e.g., the web server blueprint202, the application server blueprint204, the database server blueprint206, etc.) to allow selection of desired blueprints. The blueprint manager140combines the selected blueprints into the definition of the multi-machine blueprint208and stores information about the blueprints in a multi-machine blueprint record defining the multi-machine blueprint208. The blueprint manager140may additionally include a user interface to specify other characteristics corresponding to the multi-machine blueprint208. For example, a creator of the multi-machine blueprint208may specify a minimum number and a maximum number of each blueprint component of the multi-machine blueprint208that may be provisioned during provisioning of the multi-machine blueprint208.

Accordingly, any number of virtual machines (e.g., the virtual machines associated with the blueprints in the multi-machine blueprint208) and/or containers may be managed collectively. For example, the multiple virtual machines corresponding to the multi-machine blueprint208may be provisioned based on an instruction to provision the multi-machine blueprint208, may be power cycled by an instruction, may be shut down by an instruction, may be booted by an instruction, etc. As illustrated inFIG. 2, an instruction to provision the multi-machine blueprint208may result in the provisioning of a multi-machine service formed from one or more VMs114that includes virtualized web server(s)210A, virtualized application server(s)210B, and virtualized database server(s)210C. The number of virtual machines and/or containers provisioned for each blueprint may be specified during the provisioning of the multi-machine blueprint208(e.g., subject to the limits specified during creation or management of the multi-machine blueprint208).

The multi-machine blueprint208maintains the reference to the basic blueprints202,204,206. Accordingly, changes made to the blueprints (e.g., by a manager of the blueprints different than the manager of the multi-machine blueprint208) may be incorporated into future provisioning of the multi-machine blueprint208. Accordingly, an administrator maintaining the source blueprints (e.g., an administrator charged with managing the web server blueprint202) may change or update the source blueprint and the changes may be automatically propagated to the machines provisioned from the multi-machine blueprint208. For example, if an operating system update is applied to a disk image referenced by the web server blueprint202(e.g., a disk image embodying the primary disk of the web server blueprint202), the updated disk image is utilized when deploying the multi-machine blueprint210. Additionally, the blueprints may specify that the machines210A,210B,210C of the multi-machine service210provisioned from the multi-machine blueprint208operate in different environments. For example, some components may be physical machines, some may be on-premise virtual machines, and some may be virtual machines at a cloud service.

Several multi-machine blueprints may be generated to provide one of one or more varied or customized services. For example, if virtual machines deployed in the various States of the United States require different settings, a multi-machine blueprint could be generated for each such state. The multi-machine blueprints could reference the same build profile and/or disk image, but may include different settings specific to each state. For example, the deployment workflow may include an operation to set a locality setting of an operating system to identify a particular State in which a resource is physically located. Thus, a single disk image may be utilized for multiple multi-machine blueprints reducing the amount of storage space for storing disk images compared with storing a disk image for each customized setting.

FIG. 3illustrates an example installation of deployed appliances or virtual appliances (vAs) (e.g. VMs114and or containers114a) and associated virtualized servers acting as hosts for deployment of component servers (e.g., Web server, application server, database server, etc.) for a customer. The vAs can be deployed as an automation tool, for example, used to deliver VMs and associated applications for on-premise automation and/or handling of external cloud resources (e.g., Microsoft Azure™, Amazon Web Services™, etc.).

As shown in the example ofFIG. 3, an installation300includes a load balancer (LB)310to assign tasks and/or manage access among a plurality of vAs320,322,324. Each vA320-324is a deployed VM114or container114a. In this example, the vA320communicates with a plurality of component or host servers330a,334a,336awhich store components for execution by users (e.g., Web server210A with Web components, App server210B with application components, DB server210C with database components, etc.). As shown in the example ofFIG. 3, component servers334a,336acan stem from component server330arather than (or in addition to) directly from the virtual appliance320, although the vA320can still communicate with such servers334a,336a. The LB310enables the multiple vAs320-324and multiple servers330-336to appear as one device to a user. Access to functionality can then be distributed among appliances320-324by the LB310and among servers330a-336aby the respective appliance320, for example.

In the example installation300, each vA320,322,324includes a management endpoint340,342,344. Each component server330a,334a,336aincludes a management agent350a,354a,356a. The management agents350a-356acan communicate with their respective endpoint340to facilitate transfer of data, execution of tasks, etc., for example. The LB310can use least response time, round-robin, and/or other method to balance traffic to vAs320-324and servers330-336, for example.

In certain examples, a graphical user interface associated with a front end of the load balancer310guides a customer through one or more questions to determine system requirements for an installation300to be performed. Once the customer has completed the questionnaire and provided firewall access to install the agents350a-356a, the agents350a-356acommunicate with the endpoint340without customer involvement. Thus, for example, if a new employee needs a Microsoft Windows® machine, a manager selects an option (e.g., clicks a button, etc.) via the graphical user interface to install a VM114and/or container114athat is managed through the installation300. To the user, he or she is working on a single machine, but behind the scenes, the virtual appliance (e.g. vA320) is accessing different servers (e.g. Component Servers330a-336a) depending upon what functionality is to be executed.

In certain examples agents350-356are deployed in a same data center as the endpoint340to which the agents350-356are associated. The deployment can include a plurality of agent servers330-336distributed worldwide, and the deployment can be scalable to accommodate additional server(s) with agent(s) to increase throughput and concurrency, for example.

As will be discussed in greater detail subsequently herein, one or more of the virtual appliances (vAs) can be configured as a Deployment Customization Virtual Appliance324. Similar to vA320communicating with the plurality of component or host servers330a,334a,336a, the Deployment Customization Virtual Appliance324can similarly communicate with another plurality of component or host servers330b,334b,336b, which can likewise store components for execution by users (e.g., Web server210A with Web components, App server210B with application components, DB server210C with database components, etc.). Each component server330b,334b,336bassociated with the Deployment Customization Virtual Appliance324can include a respective management agent350b,354b,356b. These management agents350b-356bcan communicate with their respective endpoint344of Deployment Customization Virtual Appliance324to facilitate transfer of data, execution of tasks, etc., for example.

FIGS. 4A-4Fillustrate example implementations of virtual appliances. The example ofFIG. 4Aillustrates a generalized example implementation of a vA320ofFIG. 3.FIGS. 4B-4Fillustrate particular example implementation of the Deployment Customization Virtual Appliance324. Looking first at the example ofFIG. 4A, the vA320of this example includes a Service Provisioner410a, an orchestrator420a, an event broker430a, an authentication provider440a, an internal reverse proxy450a, and a database460a. The components410a,420a,430a,440a,450a,460aof the vA320may be implemented by one or more of the VMs114or containers114a. The example Service Provisioner410aprovides services to provision interfaces (e.g., Web interface, application interface, etc.) for the vA320. The example orchestrator (e.g., vCO)420ais an embedded or internal orchestrator for processing workflows, which can leverage a provisioning manager, such as the application director106and/or catalog database130and/or cloud manager138, to provision VM services but is embedded in the vA320. For example, the vCO420acan be used to invoke a blueprint to provision a manager for services.

Example services can include catalog services, identity services, component registry services, event broker services, IaaS, XaaS, etc. Catalog services provide a user interface via which a user can request provisioning of different preset environments (e.g., a VM including an operating system and software and some customization, etc.), for example. Identity services facilitate authentication and authorization of users and assigned roles, for example. The component registry maintains information corresponding to installed and deployed services (e.g., uniform resource locators for services installed in a VM/vA, etc.), for example. The event broker provides a messaging broker for event-based communication, for example. The IaaS provisions one or more VMs and/or containers for a customer via the vA320. The XaaS extends this to also request, approve, provision, operate, and decommission any type of catalog items (i.e storage, applications, accounts, and anything else that the catalog provides as a service).

The example event broker430aofFIG. 4Aprovides a mechanism to handle tasks which are transferred between services with the orchestrator420a. The example authentication provider440a(e.g., VMware Horizon™ services, etc.) authenticates access to services and data, for example.

The components of the vA320access each other through REST API calls behind the internal reverse proxy450a(e.g., a high availability (HA) proxy HAProxy) which provides a high availability load balancer and proxy for Transmission Control Protocol (TCP) and Hypertext Transfer Protocol (HTTP) based application requests. In this example, the proxy450aforwards communication traffic from within the vA320and/or between vAs320,322,324ofFIG. 3to the appropriate component(s) of the vA320. In certain examples, services access the local host/proxy450aon a particular port, and the call is masked by the proxy450aand forwarded to the particular component of the vA320. Since the call is masked by the proxy450a, components can be adjusted within the vA320without impacting outside users.

FIGS. 4B-4Fillustrate an example implementation of the Deployment Customization Virtual Appliance324ofFIG. 4A. In the example ofFIGS. 4B-4Fthe Deployment Customization Virtual Appliance324includes a Service Provisioner410band a Deployment Customization Manager Service420b. The Deployment Customization Manager Service420bcan include a Deployment Customization Event Record422, Deployment Customization Event Information423, a Deployment Customization Event Notification Generator424, a Deployment Customization Timer425and a Deployment Customization Processor426as shown in the example ofFIG. 4C. The Deployment Customization Virtual Appliance324further includes First and Second Deployment Customization Workflow Processors420c,420d. The First Deployment Customization Workflow Processor420ccan include a First Deployment Customization Workflow Communications Manager427a, a First Deployment Customization Workflow Execution Unit428a, and First Deployment Customization Workflow429aas shown inFIG. 4E. Similarly, the Second Deployment Customization Workflow Processor420dcan include a Second Deployment Customization Workflow Communications Manager427b, a Second Deployment Customization Workflow Execution Unit428band Second Deployment Customization Workflow429bas shown inFIG. 4E. The Deployment Customization Virtual Appliance324further includes a Deployment Event Broker430b. The Deployment Event Broker430bcan include a Deployment Event Subscription Manager431, a Deployment Customization Topic Hierarchical Registry432, a Registration of a First Blocking Subscription432a, a Registration of a Second Blocking Subscription432b, a Registration of Non-Blocking Subscriptions432c, a Deployment Customization Topic433and a Deployment Customization Schema434, as shown inFIG. 4D. The Deployment Customization Virtual Appliance324of the example ofFIG. 4Bfurther includes an Authentication Provider440b, a Proxy450band a Catalog Item Customization or Modification Database460b. The Catalog Item Customization or Modification Database460bcan include Application Component150, Uncustomized Application Component Properties154a, Customized or Modified Application Component Properties154b, Uncustomized Machine Name156aas shown in theFIG. 4F, Customized or Modified Machine Name156b, Uncustomized IP Address158a, Customized or Modified IP Address158b, An Customized Resource Allocation159aand Customized or Modified Resource Allocation159b. The components150,154a,154b,156a,156b,158a,158b,159a,159b,410b,420b,422,423,424,425,426,420c,420d,427a,427b,428a,428b,429a,429b,430b,431,432,432a,432b,432c,433,434,440b,450b, and460bof the Deployment Customization Virtual Appliance324may be implemented by one or more VM's114or containers114a.

Similar to what was discussed previously in connection withFIG. 4A, in the example ofFIGS. 4B-4F, the Deployment Customization Virtual Appliance324includes a Service Provisioner410band an internal reverse proxy450b. The Service Provisioner410bprovides services to provision interfaces (e.g., Web interface, application interface, etc.) for the Deployment Customization Virtual Appliance324. The proxy450bforwards communication traffic from within the Deployment Customization Virtual Appliance324and/or between vAs320,322,324ofFIG. 3to the appropriate component(s) of the Deployment Customization Virtual Appliance324. The components of the Deployment Customization Virtual Appliance324access each other through REST API calls behind the internal reverse proxy450b(e.g., a high availability (HA) proxy HAProxy) which provides a high availability load balancer and proxy for Transmission Control Protocol (TCP) and Hypertext Transfer Protocol (HTTP) based application requests.

Further, the previous discussions of the example orchestrator (e.g., vCO)420aare likewise applicable to the Deployment Customization Manager Service420b, and the First and Second Deployment Customization Workflow Processors420c,420d. The Deployment Customization Manager Service420b, and the First and Second Deployment Customization Workflow Processors420c,420dbe embedded or internal, but also can be external, and can function as orchestrators for processing workflows. The Deployment Customization Manager Service420b, and the First and Second Deployment Customization Workflow Processors420c,420dcan leverage the provisioning manager, such as the application director106and/or catalog database130and/or cloud manager138, to provision VM services, but can be embedded in the Deployment Customization Virtual Appliance324. For example, the Deployment Customization Manager Service420b, and the example First and Second Deployment Customization Workflow Processors420c,420dcan be used to invoke a blueprint to provision a manager for services.

As another example, the Catalog Item Customization and/or Modification Database460bshown inFIG. 4B(and shown in greater detail inFIG. 4F) can leverage the catalog database130shown inFIG. 1A, so that Catalog Item Customization and/or Modification Database460bcan include Uncustomized Application Component Properties154a, which for example can include an Uncustomized Machine Name156a, a reservation for an Uncustomized Internet Protocol (IP) Address158a, and an Uncustomized Resource Allocation159a. As mentioned previously, the forgoing are related to VM's. For example, the Uncustomized Resource Allocation159acan be broadly directed to examples such as Uncustomized Central Processing Unit (CPU) Allocation for VM's, and Uncustomized Memory Allocation for VM's, etc. As will be discussed in greater detail subsequently herein, the Uncustomized Application Properties154acan be customized and/or modified so as to provide for deployment customization. For example, once Uncustomized Application Component Properties154ahave been customized and/or modified in accordance with this disclosure, as will be discussed in greater detail subsequently herein, Customized or Modified Application Component Properties154bcan be associated with the Application Component150in the Catalog Item Customization or Modification Database460b. Just as the Uncustomized Application Component Properties154a, can include Uncustomized Machine Name156a, Uncustomized Internet Protocol (IP) Address158a, and Uncustomized Resource Allocation159a, so likewise Customized or Modified Application Component Properties154bcan include Customized or Modified Machine Name156b, Customized or Modified Internet Protocol (IP) Address158b, and Customized or Modified Resource Allocation159b. The Application Component150can provide a logical template of Application102,102afor deployment in an Application Deployment Environment112. The Catalog Item Customization or Modification Database460bcan include the Application Component150to provide the logical template of the Application102,102a.

The example Deployment Customization Manager Service, also referenced more generally as Deployment Customization Manager420b, can be implemented as a service. As mentioned previously, various services can include catalog services, identity services, component registry services, event broker services, IaaS, XaaS, etc. Using the IaaS, the Deployment Customization Manager Service420band/or the First and Second Deployment Customization Workflow Processors420c,420dcan provision one or more VMs for the customer via the Deployment Customization Virtual Appliance324. This can be extended using the XaaS, so that the Deployment Customization Manager Service420band/or the First and Second Deployment Customization Workflow Processors420c,420dcan provide for various deployment activities (e.g. requesting, approving, provisioning, operating, and/or decommissioning) with respect to any type of catalog database130items (e.g. storage, applications, accounts, and anything else that the catalog database130provides as a service).

As mentioned previously, Catalog services provide the user interface via which the user can request provisioning of different preset environments (e.g., a VM including an operating system and software and some customization, etc.), for example. When a user requests a catalog item that can be customized, this is an example of an occurrence of a deployment customization event (a deployment customization event occurrence.) For example, the catalog item can be an Application Component150. When a user requests the Application Component150, this is an example of a deployment customization event occurrence.

The Deployment Customization Manager Service420bshown inFIG. 4B(and shown in greater detail inFIG. 4C) can include a Deployment Customization Event Record422that records Deployment Customization Event Information423about the Deployment Customization Event Occurrence. For example, the Deployment Customization Manager Service420bcan include a Deployment Customization Event Record422that records Deployment Customization Event information423about the user requesting the Application Component150. The Deployment Customization Event Record422that records Deployment Customization Event Information423about the deployment customization event occurrence can include a deployment Customization event log422.

The Deployment Customization Manager Service420bcan include a Deployment Customization Processor426to process the Deployment Customization Event Information, and can further include a Deployment Customization Event Notification Generator424. The Deployment Customization Event Notification Generator424of the Deployment Customization Manager420bcan generate a first Deployment Customization Event Notification in response to the Deployment Customization Event Record422that records Deployment Customization Event Information423about a deployment customization event occurrence. The first Deployment Customization Event Notification can include Deployment Customization Event Information423, and can include a First Notification Payload including the Uncustomized Application Component Property. The Uncustomized Application Component Property of the First Notification Payload can include at least one of the Uncustomized Machine Name156a, the reservation for the Uncustomized Internet Protocol (IP) Address158a, and the Uncustomized Resource Allocation159a. The Uncustomized Resource Allocation159acan be broadly directed to examples such as uncustomized Central Processing Unit (CPU) allocation for VM's, and uncustomized memory allocation for VM's, etc. The first deployment event notification can also include a serialized form of at least a portion of the Deployment Customization Event Record422that records the Deployment Customization Event Information423about the deployment event occurrence.

The Deployment Customization Event Notification Generator424of the Deployment Customization Manager Service420bcan send the First Deployment Customization Event Notification to the Deployment Event Broker430b. The Authentication Provider440bcan authenticate access to the Deployment Event Broker430b. The Deployment Customization Event Broker430bof this example includes a scalable distributed service. The Deployment Customization Manager Service420bcan start the Deployment Customization Timer425running, when the Deployment Customization Manager Service420bsends the First Deployment Customization Event Notification to the Deployment Event Broker430b. The Deployment Customization Manager Service420bcan wait, for a predetermined period of time as indicated using the Deployment Customization Timer425, for a responsive event notification (e.g. a reply-back) from the Deployment Event Broker430b. For example, if the predetermined time period is 24 hours, then the Deployment Customization Manager Service420bcan wait for 24 hours for a reply-back from the Deployment Event Broker430b. If the Deployment Customization Manager Service420breceives no reply-back from the Deployment Event Broker430bwithin the predetermined time period as indicated by the Deployment Customization Timer425, then the Deployment Customization Manager Service420bcan notify the user.

An example implementation of the Deployment Event Broker430bofFIG. 4Bis shown inFIG. 4D. In the example ofFIG. 4D, the Deployment Event Broker430bincludes a Deployment Event Subscription Manager431, a Deployment Customization Topic Registry432, a Deployment Customization Topic433. The Deployment Customization Topic433can include a Deployment Customization Schema434. The Deployment Customization Topic Registry432can be hierarchical, so as provide a Deployment Customization Topic Hierarchical Registry432(or a Hierarchical Registry432of the Deployment Customization Topic433.)

The Deployment Customization Topic Hierarchical Registry432can provide for a hierarchical registry of subscriptions to the Deployment Customization Topic433. In the example ofFIG. 4Da first blocking subscription432aof the first customization workflow processor420cis superior in the hierarchy of the Hierarchical Registry432. A second blocking subscription432bof the second customization workflow processor420dis a first subordinate in the hierarchy of the Hierarchical Registry432. Accordingly, in the hierarchy of the example Hierarchical Registry432, the second blocking subscription432bof the second customization workflow processor420dis subordinate to the first blocking subscription432aof the first customization workflow processor420c. Although not shown in the example ofFIG. 4D, other examples of the Hierarchical Registry432can include a second subordinate in the hierarchy of the Hierarchical Registry432, which can be a third blocking subscription of a third customization workflow processor. Similarly, in other examples, the Hierarchical Registry432can include a third subordinate in the hierarchy of the Hierarchical Registry, which can be a fourth blocking subscription of a fourth customization workflow processor, and so on. In various other examples, any number of blocking and/or non-blocking consumers may be present.

In the example shown inFIG. 4D, non-blocking subscriptions432cof one or more additional consumers can be further subordinate (e.g. below the first and second blocking subscriptions) in the hierarchy of the Hierarchical Registry432. As a general matter, workflow processors, such as the First and Second Customization Workflow Processors420c,420d, as well as the one or more additional consumers each register their respective subscriptions at the Hierarchical Registry432of the Deployment Event Broker430bto receive notifications published by the Deployment Customization Topic433. However, since the First and Second Customization Workflow Processors420c,420dare blocking consumers, each having respective First and Second Blocking Subscriptions431,432, registered at the Hierarchical Registry432of the Deployment Event Broker430b, notifications are published in an ordered sequence according to the hierarchy of the Hierarchical Registry432.

For example, as will be discussed in greater detail subsequently herein, the ordered sequence according to the hierarchy of the Hierarchical Registry432can be as follows. First, consume, via the Deployment Event Broker430b, the First Deployment Customization Event Notification, when the Deployment Customization Manager Service420bsends the First Deployment Customization Event Notification to the Deployment Event Broker430b. Next, publish according to the hierarchy, via the Deployment Customization Topic433of the Deployment Event Broker430b, the First Deployment Customization Event Notification to the First Customization Workflow Processor420c, while the First Blocking Subscription432ablocks the Second Customization Workflow Processor420dand the one or more additional consumers from receiving the First Deployment Customization Event Notification from the Deployment Customization Topic433(and while the First Blocking Subscription432ablocks the Second Customization Workflow Processor420dand the one or more additional consumers from receiving any notification from the Deployment Customization Topic433, until after the First Customization Workflow Processor420creplies back to the Deployment Customization Topic433with a Second Deployment Customization Event Notification.) Next, reply-back, via the First Customization Workflow Processor420c, with the Second Deployment Customization Event Notification to the Deployment Customization Topic433. Next, publish according to the hierarchy, via Deployment Customization Topic433of the Deployment Event Broker430b, the Second Deployment Customization Event Notification to the second Customization Workflow Processor420d, while the Second Blocking Subscription432bblocks the one or more additional consumers from receiving the Second Deployment Customization Event Notification from the Deployment Customization Topic433(and while the Second Blocking Subscription432bblocks the one or more additional consumers from receiving any notification from the Deployment Customization Topic433, until after the Second Customization Workflow Processor420dreplies back to the Deployment Customization Topic433with a third Deployment Customization Event Notification.) Next, reply-back, via the Second Customization Workflow Processor420d, with the Third Deployment Customization Event Notification to the Deployment Customization Topic433. Next, publish according to the hierarchy, via Deployment Customization Topic433of the Deployment Event Broker430b, the third Deployment Customization Event Notification to the additional consumers. Next, reply-back, via Deployment Customization Topic433of the Deployment Event Broker430b, with the third Deployment Customization Event Notification to the Deployment Customization Manager Service420b. Such an approach is shown and discussed subsequently herein in connection withFIG. 5.

In the illustrated example, according to the hierarchy of the Hierarchical Registry432of the Deployment Customization Topic433, the Second Blocking Subscription432bcan be subordinate to the First Blocking Subscription432a, so that blocking associated with the Second Deployment Customization Workflow Processor420dis subordinate to blocking associated with the First Deployment Customization Workflow Processor420c. For example, because blocking associated with the Second Deployment Customization Workflow Processor420dis subordinate to blocking associated with the First Deployment Customization Workflow Processor420c, the First Blocking Subscription432aof the First Deployment Customization Workflow Processor420cfirst blocks the Second Customization Workflow Processor420dand the one or more additional consumers from receiving the First Deployment Customization Event Notification from the Deployment Customization Topic433(and the First Blocking Subscription432aof First Deployment Customization Workflow Processor420cfirst blocks the Second Customization Workflow Processor420dand the one or more additional consumers from receiving any notification from the Deployment Customization Topic433, until after the First Customization Workflow Processor420creplies back to the Deployment Customization Topic433with a Second Deployment Customization Event Notification.) Moreover, because blocking associated with the Second Deployment Customization Workflow Processor420dis subordinate to blocking associated with the First Deployment Customization Workflow Processor420c, after the First Customization Workflow Processor420creplies back to the Deployment Customization Topic433with the Second Deployment Customization Event Notification, the Second Blocking Subscription432bof the Second Deployment Customization Workflow Processor420dblocks the one or more additional consumers from receiving the Second Deployment Customization Event Notification from the Deployment Customization Topic433(and the Second Blocking Subscription432bof the Second Deployment Customization Workflow Processor420dblocks the one or more additional consumers from receiving any notification from the Deployment Customization Topic433, until after the Second Customization Workflow Processor420dreplies back to the Deployment Customization Topic433with a third Deployment Customization Event Notification.) In the illustrated example, it should also be noted that the example Deployment Customization Topic433of the Deployment Event Broker430bcan be a repliable topic. For example, since the example Deployment Customization Topic433is repliable, the example Deployment Customization Topic433can accept the Second Deployment Customization Event Notification as a reply back notification from the First Deployment Customization Workflow Processor420csubscriber, in reply back to the prior First Deployment Customization Event Notification received by the First Deployment Customization Workflow Processor420csubscriber from the repliable Deployment Customization Topic433. A repliable topic can be defined as capable of accepting a reply back notification from a subscriber, in reply back to a prior notification received by the subscriber from the repliable topic. For example: inFIG. 5as discussed subsequently herein, message503reply-back, via the First Customization Workflow Processor420c, with the Second Deployment Customization Event Notification to the Deployment Customization Topic433; message505reply-back, via the Second Customization Workflow Processor420d, with the Third Deployment Customization Event Notification to the Deployment Customization Topic433; and message507reply-back, via Deployment Customization Topic433of the Deployment Event Broker430b, with the third Deployment Customization Event Notification to the Deployment Customization Manager Service420bare examples of replies.

In this example the First Blocking Subscription432aof the First Deployment Customization Workflow Processor420ccan be registered at the Hierarchical Registry432of the Deployment Customization Topic433to provide for the First Deployment Customization Workflow Processor420creceiving the First Deployment Customization Event Notification from the Deployment Customization Topic433. The Second Blocking Subscription432bof the Second Deployment Customization Workflow Processor420dcan likewise be registered at the Hierarchical Registry432of the Deployment Customization Topic433. The First Subscription432aof the First Customization Workflow Processor can be a First Blocking Subscription432aand is registered at the Deployment Customization Topic433to block the Second Deployment Customization Workflow Processor420dfrom receiving the First Deployment Customization Event Notification. Additional non-blocking subscriptions432c, corresponding to respective additional non-blocking consumers are registered at the deployment customization topic433. The First Subscription432aof the First Customization Workflow Processor420cis a First Blocking Subscription432aand is registered at the Hierarchical Registry432of the Deployment Customization Topic433to block the additional consumers from receiving the First Deployment Customization Event Notification from the Deployment Customization Topic433.

Moreover, in this example the First Subscription432aof the First Customization Workflow Processor420ccan be a First Blocking Subscription432aand can be registered at the Hierarchical Registry432of the Deployment Customization Topic433to block the additional consumers from receiving any Deployment Customization Event Notification until after the First Deployment Customization Workflow Processor420creplies back to the Deployment Customization Topic433with the Second Deployment Event Notification. The First Subscription432aof the First Deployment Customization Workflow Processor420ccan be a First Blocking Subscription432aand can be registered at the Hierarchical Registry432of the Deployment Customization Topic433to block the Second Deployment Customization Workflow Processor420dfrom receiving any Deployment Customization Event Notification until after the First Deployment Customization Workflow Processor420creplies-back to the Deployment Customization Topic433with the second deployment event notification.

The Second Subscription432bof the Second Deployment Customization Workflow Processor420dcan be registered at the Deployment Customization Topic433so as to provide for the Second Deployment Customization Workflow Processor420dreceiving the Second Deployment Customization Event Notification from the deployment customization topic433. The Second Subscription432bof the Second Customization Workflow Processor can be a Second Blocking Subscription432band can be registered at the Hierarchical Registry432of the Deployment Customization Topic433to block the additional consumers from receiving any deployment customization event notification until after the Second Deployment Customization Workflow Processor420dreplies-back to the Deployment Customization Topic433with the Third Deployment Customization Notification. For example, Third and fourth subscriptions each corresponding to a respective third and fourth non-blocking consumer can be registered at the Hierarchical Registry432of the Deployment Customization Topic433. The Second Subscription432bof the Second Deployment Customization Workflow Processor420dcan be a Second Blocking Subscription432band can be registered at the Hierarchical Registry432of the Deployment Customization Topic433to block the third and fourth non-blocking consumers from receiving any deployment customization event notification until after the Second Deployment Customization Workflow Processor420dreplies-back to The Deployment Customization Topic433with the Third Deployment Event Notification.

Example implementations of the First and Second Deployment Customization Workflow Processors420c,420dshown inFIG. 4Bare shown in greater detail inFIG. 4E. As shown inFIG. 4E, the First Deployment Customization Workflow Processor420ccan include a First Deployment Customization Workflow Communications Manager427ato manage communications with the First Deployment Customization Workflow Processors420c. Additionally, the First Deployment Customization Workflow Processor420ccan include a First Deployment Customization Workflow Execution Unit428ato process the First Deployment Customization Workflow429a.

Similarly, as shown inFIG. 4E, the Second Deployment Customization Workflow Processor420dcan include a Second Deployment Customization Workflow Communications Manager427bto manage communications with the Second Deployment Customization Workflow Processors420d. Additionally, the Second Deployment Customization Workflow Processor420dcan include a Second Deployment Customization Workflow Execution Unit428bto process the Second Deployment Customization Workflow429b.

For example, as mentioned previously, the Deployment Customization Topic433of the Deployment Event Broker430bcan publish the First Deployment Customization Event Notification to the First Customization Workflow Processor420c. In response, the First Customization Workflow Processor420ccan: consume the First Deployment Customization Event Notification (including the First Notification Payload); customize the First Notification Payload into the Second Notification Payload; and reply-back to the Deployment Customization Topic433of the Deployment Event Broker430bwith the Second Deployment Customization Event Notification (including the Second Notification Payload.).

More particularly, the First Deployment Customization Event Notification can include the First Notification Payload, which can include the Uncustomized Application Component Property. The First Deployment Customization Workflow Processor420ccan process the First Deployment Customization Workflow429ato customize the Uncustomized Application Component Property of the First Notification Payload into the Customized Application Component Property of the Second Notification Payload. As mentioned previously, the Uncustomized Application Component Properties154a, for example can include an Uncustomized Machine Name156a, a reservation for an Uncustomized Internet Protocol (IP) Address158a, and an Uncustomized Resource Allocation159a. As mentioned previously, the forgoing are related to VM's and/or containers. For example, the Uncustomized Resource Allocation159acan be broadly directed to examples such as Uncustomized Central Processing Unit (CPU) Allocation for VM's and/or, and Uncustomized Memory Allocation for VM's and/or containers, etc.

For example, at least one of the Uncustomized Application Component Properties154aof the First Notification Payload can be customized by the First Deployment Customization Workflow Processor420cinto at least one of the Customized Application Component Properties154bof the Second Notification Payload. More particularly, for example, the Uncustomized Virtual Machine Name156a(for example “foo-machine-name”) of the First Notification Payload can be customized into the Customized Virtual Machine Name156b(for example “my-foo-machine-name”) of the Second Notification Payload. For example, the Uncustomized Virtual Machine Internet Protocol (IP) Address Reservation158a(for example “198.111.111”) can be customized into the Customized Virtual Machine Internet Protocol (IP) Address Reservation158b(for example “198.999.999”).

Similarly, for example, at least one Uncustomized Virtual Machine Resource Allocation159aof the First Notification Payload can be customized by the First Deployment Customization Workflow Processor420cinto at least one Customized Virtual Machine Resource Allocation159bof the Second Notification Payload. For example, the Uncustomized Virtual Machine Memory Allocation (for example “4 Gigabytes of Memory”) of the First Notification Payload can be customized into the Customized Virtual Machine Memory Allocation (for example “2 Gigabytes of Memory”) of the Second Notification Payload. For example, the Uncustomized Central Processing Unit (CPU) Allocation (for example “4 CPUs”) of the First Notification Payload can be customized into the Customized Central Processing Unit (CPU) Allocation (for example “2 CPU's”) of the Second Notification Payload.

For avoidance of doubt, it should be understood the forgoing are just some examples, and various other examples can likewise be implemented in accordance with this disclosure. For example, it should be understood that the Second Notification Payload can include a mix that can include an Uncustomized Application Component Property in addition to the Customized Application Component Property. For example, the Second Notification Payload can include the Uncustomized Virtual Machine Name156(for example “foo-machine-name”) and Uncustomized Virtual Machine Internet Protocol (IP) Address Reservation158a(for example “198.111.111”) in a mix along with the Customized Virtual Machine Memory Allocation (for example “2 Gigabytes of Memory”) and along with the Customized Central Processing Unit (CPU) Allocation (for example “2 CPU's”)

For example, the First Deployment Customization Workflow Processor420ccan generate the Second Deployment Customization Event Notification that includes the Second Notification Payload, which includes the Customized Application Component Property. For example, the First Deployment Customization Workflow Processor420ccan reply-back to the Deployment Customization Topic433with the Second Deployment Customization Event Notification that includes the Second Notification Payload, which includes the Customized Application Component Property.

For example, at a point in time after First Deployment Customization Workflow Processor420creplies-back to the Deployment Customization Topic433with the Second Deployment Customization Event Notification, the Deployment Customization Topic433can publish to the Second Deployment Customization Workflow Processor420dthe Second Deployment Customization Event Notification. For example, the Second Deployment Customization Event Notification can include the Second Notification Payload, which can include the Customized Application Component Property.

In response, the Second Customization Workflow Processor420dcan: consume the Second Deployment Customization Event Notification (including the Second Notification Payload); modify the Second Notification Payload into the Third Notification Payload; and reply-back to the Deployment Customization Topic433of the Deployment Event Broker430bwith the Third Deployment Customization Event Notification (including the Third Notification Payload.). For example, the Third Notification Payload can include the Customized Application Component Property in addition to the Modified Application Component Property. Moreover, for example, the Third Notification Payload can include the Uncustomized Application Component Properties154ain addition to the Customized Application Component Property and in addition to the Modified Application Component Property.

In various examples, in accordance with this disclosure, at least one of the Uncustomized Application Component Properties154aand/or at least one of the Customized Application Component Properties154bof the Second Notification Payload can be modified by the Second Deployment Customization Workflow Processor420dinto at least one of the Modified Application Component Properties154bof the Third Notification Payload. More particularly, for example, the Uncustomized Virtual Machine Name156a(for example “foo-machine-name”) or the Customized Virtual Machine Name156b(for example “my-foo-machine-name”) of the Second Notification Payload can be modified into the Modified Virtual Machine Name156b(for example “my-own-foo-machine-name”) of the Third Notification Payload. For example, the Uncustomized Virtual Machine Internet Protocol (IP) Address Reservation158a(for example “198.111.111”) or the Customized Virtual Machine Internet Protocol (IP) Address Reservation158b(for example “198.999.999”) of the Second Notification Payload can be modified into the Modified Virtual Machine Internet Protocol (IP) Address Reservation158b(for example “198.999.001”).

Similarly, for example, at least one Uncustomized Virtual Machine Resource Allocation159aand/or at least one Customized Virtual Machine Resource Allocation159bof the First Notification Payload of the Second Notification Payload can be modified by the Second Deployment Customization Workflow Processor420dinto at least one Modified Virtual Machine Resource Allocation159bof the Third Notification Payload. For example, the Uncustomized Virtual Machine Memory Allocation (for example “4 Gigabytes of Memory”) or the Customized Virtual Machine Memory Allocation (for example “2 Gigabytes of Memory”) of the Second Notification Payload can be modified into the Modified Virtual Machine Memory Allocation (for example “1 Gigabyte of Memory”) of the Third Notification Payload. For example, the Uncustomized Central Processing Unit (CPU) Allocation (for example “4 CPUs”) or the Customized Central Processing Unit (CPU) Allocation (for example “2 CPU's”) of the Second Notification Payload can be modified into the Modified Central Processing Unit (CPU) Allocation (for example “1 CPU”) of the Third Notification Payload.

For avoidance of doubt, it should be understood the forgoing are just some examples, and various other examples can likewise be implemented in accordance with this disclosure. For example, it should be understood that the Third Notification Payload can include a mix that includes the Uncustomized Application Component Property in addition to the one or Customized Application Component Properties154bin addition to the Modified Application Component Property. For example, the Third Notification Payload can include the Uncustomized Virtual Machine Name156(for example “foo-machine-name”) and Modified Virtual Machine Internet Protocol (IP) Address Reservation158a(for example “198.999.001”) along with the Customized Virtual Machine Memory Allocation (for example “2 Gigabytes of Memory”) and along with the Modified Central Processing Unit (CPU) Allocation (for example “1 CPU's”).

For example, as illustrated by the foregoing, the Uncustomized Virtual Machine Name156(for example “foo-machine-name”) of the First Notification Payload can remain uncustomized as the Uncustomized Virtual Machine Name156(for example “foo-machine-name”) in the Second Notification Payload, and further can remain unmodified as the Uncustomized Virtual Machine Name156(for example “foo-machine-name”) in the Third Notification Payload. Accordingly, for example, at least one of the Uncustomized Application Component Properties154aof the First Notification Payload can remain uncustomized as an Uncustomized Application Component Property154ain the Second Notification Payload, and further can remain unmodified as the Uncustomized Application Component Property154ain the Third Notification Payload.

For example, as illustrated by the foregoing, the Uncustomized Virtual Machine Internet Protocol (IP) Address Reservation158a(for example “198.111.111”) of the First Notification Payload, can remain as the Uncustomized Virtual Machine Internet Protocol (IP) Address Reservation158a(for example “198.111.111”) in the Second Notification Payload, but then can be modified to the Modified Virtual Machine Internet Protocol (IP) Address Reservation158a(for example “198.999.001”) in the Third Notification Payload. Accordingly, for example, at least one of the Uncustomized Application Component Properties154aof the First Notification Payload can remain uncustomized as an Uncustomized Application Component Property154ain the Second Notification Payload, but can be modified into the Modified Application Component Property154bin the Third Notification Payload.

For example, as illustrated by the foregoing, the Uncustomized Virtual Machine Memory Allocation (for example “4 Gigabytes of Memory”) of the First Notification Payload can be customized to the Customized Virtual Machine Memory Allocation (for example “2 Gigabytes of Memory”) in the Second Notification Payload, and can remain unmodified so as to be the Customized Virtual Machine Memory Allocation (for example “2 Gigabytes of Memory”) in the Third Notification Payload. Accordingly, for example, at least one of the Uncustomized Application Component Properties154aof the First Notification Payload can be customized into the Customized Application Component Property154bin the Second Notification Payload, and can remain unmodified so as to be the Customized Application Component Property154bin the Third Notification Payload.

For example, as illustrated by the foregoing, the Uncustomized Central Processing Unit (CPU) Allocation (for example “4 CPUs”) of the First Notification Payload can be customized into the Customized Central Processing Unit (CPU) Allocation (for example “2 CPU's”) of the Second Notification Payload, and then can be modified into the Modified Central Processing Unit (CPU) Allocation (for example “1 CPU”) of the Third Notification Payload. Accordingly, for example, at least one of the Uncustomized Application Component Properties154aof the First Notification Payload can be customized into the Customized Application Component Property154bin the Second Notification Payload, and further can be modified into the Modified Application Component Property154bin the Third Notification Payload.

For example, the Second Deployment Customization Workflow Processor420dcan generate the Third Deployment Customization Event Notification that includes the Notification Payload, which includes the Modified Application Component Property. For example, the Second Deployment Customization Workflow Processor420dcan reply-back to the Deployment Customization Topic433with the Third Deployment Customization Event Notification that includes the Third Notification Payload, which includes the Modified Application Component Property.

For example, the Second Deployment Customization Workflow Processor420dcan modify an application component property (e.g. an Uncustomized Application Component Property and/or a Customized Application Component Property) of the Second Notification Payload into a Modified Application Component Property of the Third Notification Payload. For example, one or more Modified Application Component Properties of the Third Notification Payload can include at least one of: a Modified Virtual Machine Name156b, a Modified Virtual Machine Internet Protocol (IP) Address Reservation158b, and a Modified Virtual Machine Resource Allocation1509b, a Modified Virtual Machine Memory Allocation and a Modified Central Processing Unit (CPU) Allocation.

For example, the Second Deployment Customization Workflow Processor420dcan generate the Third Deployment Customization Event Notification505that can include the Third Notification Payload, which can include the Modified Application Component Property. For example, the Second Deployment Customization Workflow Processor420dcan reply-back to the Deployment Customization Topic433with the Third Deployment Customization Event Notification505that can include the Third Notification Payload, which can include the Modified Application Component Property. For example, after the Second Deployment Customization Workflow Processor420dreplies-back to the deployment customization topic433, the deployment customization topic433can publish to a third consumer the third deployment customization event notification506that includes the third notification payload, which includes the modified application component property.

For example, after the Second Deployment Customization Workflow Processor420dreplies back to the Deployment Customization Topic433, the Deployment Customization Topic433can publish to third and/or fourth and/or fifth consumers530,540,550the Third Deployment Customization Event Notification506that can include the Third Notification Payload, which can include the Modified Application Component Property. For example, after the Second Deployment Customization Workflow Processor420dreplies-back to the Deployment Customization Topic433, the Deployment Customization Topic433can reply-back to the Deployment Customization Manager420bwith the Third Deployment Customization Event Notification505that can include the Third Notification Payload, which can include the Modified Application Component Property.

For example, the deployment customization manager420bcan associate the Application Component150with the Modified Application Component Property in the database460b. For example, the deployment customization manager420bcan create an association between the Application Component150and the Modified Application Component Property154bin the database460b, in place of an association between the Application Component150and the Uncustomized Application Component Property in the database460b.

FIG. 5illustrates an example of deployment customization event notifications occurring in the context of the example Deployment Customization Virtual Appliance324ofFIGS. 4B-4F.

The example ofFIG. 5includes the Deployment Customization Manager Service420band Deployment Event Broker430. First Deployment Customization Workflow Processor420cand Second Deployment Customization Workflow Processor420dcan be blocking consumers, in accordance with this disclosure, and as shown inFIG. 5. Additional consumers, for example, Third Consumer530, Fourth Consumer540and Fifth Consumer550can be non-blocking consumers, in accordance with this disclosure, and as shown inFIG. 5.

As a general matter, workflow processors, such as the First and Second Customization Workflow Processors420c,420d, shown inFIG. 5as well as the additional consumers, such as Third Consumer530, Fourth Consumer540and Fifth Consumer550can register their respective subscriptions at the Hierarchical Registry432of the Deployment Event Broker430bto receive notifications published by the Deployment Customization Topic433. However, since the First and Second Customization Workflow Processors420c,420dare blocking consumers, each having respective First and Second Blocking Subscriptions431,432, registered at the Hierarchical Registry432of the Deployment Event Broker430b, notifications are published in an ordered sequence according to the hierarchy of the Hierarchical Registry432. So as a general matter, in the example topic-based system shown in the figures, event notifications are published by event notification producers/generators to the Deployment Customization Topic433of the Deployment Event Broker430b, and in turn the Deployment Customization Topic433publishes the event notifications to subscribers registered with the Deployment Customization Topic433to receive the event notifications. The Deployment Customization Topic433functions as a named logical channel for subscribers registered with the Deployment Customization Topic433to receive the event notifications. The Deployment Customization Topic433of the Deployment Event Broker430bcan perform a store and forward function to route event notifications from event notification producers/generators to subscribers. However, since the First and Second Customization Workflow Processors420c,420dare blocking consumers, each having respective First and Second Blocking Subscriptions431,432, registered at the Hierarchical Registry432of the Deployment Event Broker430b, the Deployment Customization Topic433of the Deployment Event Broker430broutes event notifications from event notification producers/generators to subscribers in the ordered sequence according to the hierarchy of the Hierarchical Registry432as shown in the example ofFIG. 5.

In the example ofFIG. 5, the ordered sequence is according to the hierarchy of the Hierarchical Registry432. In the example ofFIG. 5, first,501consume, via the Deployment Event Broker430b, the First Deployment Customization Event Notification (including the First Notification Payload), when the Deployment Customization Manager Service420bsends the First Deployment Customization Event Notification (including the First Notification Payload) to the Deployment Event Broker430b.

Next,502publish according the hierarchy, via the Deployment Customization Topic433of the Deployment Event Broker430b, the First Deployment Customization Event Notification (including the First Notification Payload) to the First Customization Workflow Processor420c, while the First Blocking Subscription432ablocks the Second Customization Workflow Processor420dand the additional consumers from receiving the First Deployment Customization Event Notification from the Deployment Customization Topic433(and while the First Blocking Subscription432ablocks the Second Customization Workflow Processor420dand the additional consumers from receiving any notification from the Deployment Customization Topic433, until after the First Customization Workflow Processor420creplies back to the Deployment Customization Topic433with a Second Deployment Customization Event Notification.)

Next,503reply-back, via the First Customization Workflow Processor420c, with the Second Deployment Customization Event Notification (including the Second Notification Payload) to the Deployment Customization Topic433.

Next,504publish according to the hierarchy, via Deployment Customization Topic433of the Deployment Event Broker430b, the Second Deployment Customization Event Notification (including the Second Notification Payload) to the second Customization Workflow Processor420d, while the Second Blocking Subscription432bblocks the additional consumers from receiving the Second Deployment Customization Event Notification from the Deployment Customization Topic433(and while the Second Blocking Subscription432bblocks the additional consumers from receiving any notification from the Deployment Customization Topic433, until after the Second Customization Workflow Processor420dreplies back to the Deployment Customization Topic433with a third Deployment Customization Event Notification.)

Next,505reply-back, via the Second Customization Workflow Processor420d, with the Third Deployment Customization Event Notification (including the Third Notification Payload) to the Deployment Customization Topic433.

Next,506publish according to the hierarchy, via Deployment Customization Topic433of the Deployment Event Broker430b, the third Deployment Customization Event Notification (including the Third Notification Payload) to the additional consumers.

Next,507reply-back, via Deployment Customization Topic433of the Deployment Event Broker430b, with the third Deployment Customization Event Notification (including the Third Notification Payload) to the Deployment Customization Manager Service420b.

FIG. 6illustrates an additional example of deployment customization event notifications occurring in the context of an additional example of the Deployment Customization Virtual Appliance324ofFIGS. 4B-4F.

FIG. 6shows an arrangement of Deployment Customization Manager Service420b, and Deployment Event Broker430. However, the example ofFIG. 6only includes one blocking consumer (e.g. First Deployment Customization Workflow Processor420c) and so the example ofFIG. 6is greatly simplified relative to the example ofFIG. 5as discussed previously herein. In the example ofFIG. 6, additional consumers, for example, Second Consumer620, Third Consumer630and Fourth Consumer640are non-blocking consumers.

As a general matter, the First Workflow Processors420c, in the example ofFIG. 6as well as the additional consumers, such as Second Consumer620, Third Consumer620and Fourth Consumer640can each register their respective subscriptions at the Hierarchical Registry432of the Deployment Event Broker430bto receive notifications published by the Deployment Customization Topic433. However, since the First Customization Workflow Processor420cis a blocking consumer, having its First Blocking Subscriptions431registered at the Hierarchical Registry432of the Deployment Event Broker430b, notifications are published in another example ordered sequence according to the hierarchy of the Hierarchical Registry432. So as a general matter, in the example topic-based system shown in the figures, event notifications are published by event notification producers/generators to the Deployment Customization Topic433of the Deployment Event Broker430b, and in turn the Deployment Customization Topic433publishes the event notifications to subscribers registered with the Deployment Customization Topic433to receive the event notifications. The Deployment Customization Topic433functions as a named logical channel for subscribers registered with the Deployment Customization Topic433to receive the event notifications. The Deployment Customization Topic433of the Deployment Event Broker430bcan perform a store and forward function to route event notifications from event notification producers/generators to subscribers. However, since the First Customization Workflow Processor420cis a blocking consumer, having its First Blocking Subscriptions431registered at the Hierarchical Registry432of the Deployment Event Broker430b, the Deployment Customization Topic433of the Deployment Event Broker430broutes event notifications from event notification producers/generators to subscribers in another example ordered sequence according to the hierarchy of the Hierarchical Registry432as shown in the example ofFIG. 6.

In the example ofFIG. 6, the example ordered sequence according to the hierarchy of the Hierarchical Registry432is as follows. In the exampleFIG. 6, first,601consume, via the Deployment Event Broker430b, the First Deployment Customization Event Notification (including the First Notification Payload), when the Deployment Customization Manager Service420bsends the First Deployment Customization Event Notification (including the First Notification Payload) to the Deployment Event Broker430b.

Next,602publish according to the hierarchy, via the Deployment Customization Topic433of the Deployment Event Broker430b, the First Deployment Customization Event Notification (including the First Notification Payload) to the First Customization Workflow Processor420c, while the First Blocking Subscription432ablocks the additional consumers from receiving the First Deployment Customization Event Notification from the Deployment Customization Topic433(and while the First Blocking Subscription432ablocks the additional consumers from receiving any notification from the Deployment Customization Topic433, until after the First Customization Workflow Processor420creplies back to the Deployment Customization Topic433with a Second Deployment Customization Event Notification.)

Next,603reply-back, via the First Customization Workflow Processor420c, with the Second Deployment Customization Event Notification (including the Second Notification Payload) to the Deployment Customization Topic433.

Next,604publish according to the hierarchy, via Deployment Customization Topic433of the Deployment Event Broker430b, the Second Deployment Customization Event Notification (including the Second Notification Payload) to the additional consumers.

Next,605reply-back, via Deployment Customization Topic433of the Deployment Event Broker430b, with the Second Deployment Customization Event Notification (including the Second Notification Payload) to the Deployment Customization Manager Service420b.

After the First Deployment Customization Workflow Processor420creplies back to the Deployment Customization Topic433with the Second Deployment Event Notification, the Deployment Customization Topic433can publish to consumers620,630,640the Second Deployment Customization Event Notification604that includes the second notification payload, which includes the Customized Application Component Properties154b. Further, for example, after the First Deployment Customization Workflow Processor420creplies back to the Deployment Customization Topic433with the Second Deployment Event Notification, the Deployment Customization Topic433can reply back to the Deployment Customization Manager420bwith the Second Deployment Customization Event Notification that includes the Second Notification Payload, which includes the Customized Application Component Property. For example, the Deployment Customization Manager420bcan associate the Application Component150with the Customized Application Component Property in the Database460b. For example, the Deployment Customization Manager420bcan create an association between the Application Component150and the Customized Application Component Property in the Database460b, in place of an association between the Application Component150and the one Uncustomized Application Component Property in the database460b.

While an example manner of implementing the system100is illustrated inFIGS. 1A-1C, and an example manner of implementing the blueprints202-208and an example manner of implementing the multimachine service210is illustrated inFIG. 2, and an example manner of implementing installation300is illustrated inFIG. 3, and an example manner of implementing virtual appliance320, Deployment Customization Virtual Appliance324, Deployment Customization Manager Service420b, Deployment Event Broker430bFirst and Second Deployment Customization Workflow Processors420c,420dand Catalog Item Customization or Modification Database460bis illustrated inFIGS. 4A-4F, and an example manner of operating the Deployment Customization Virtual Appliance324is illustrated inFIG. 5, and another example manner of operating the Deployment Customization Virtual Appliance324is illustrated inFIG. 6, one or more of the elements, processes and/or devices illustrated in these foregoing figures may be combined, divided, re-arranged, omitted, eliminated and/or implemented in any other way.

Further, the example application102,102a, the example application director106, the example cloud provider110, the example deployment environments112, the example VMs114, the example containers114a, the example topology generator120, the example deployment plan generator122, the example deployment director124, the example blueprint126, the example deployment plans128, the example catalog database130, the example cloud interface132, the example central package repository134, the example blueprint display135, the example cloud manager138, the example blueprint manager140, the example distributed execution managers146A,146B, the example application component150, the example approver designation156, the example Customization level158, the example visual depiction of application component160, and/or, more generally, the example system100ofFIGS. 1A-1Cmay be implemented by hardware, software, firmware and/or any combination of hardware, software and/or firmware.

Thus, for example, any of the example application102, the example deployment environment104, the example application director106, the example virtual infrastructure navigator108, the example cloud provider110, the example deployment environments112, the example VMs114, the example topology generator120, the example deployment plan generator122, the example deployment director124, the example blueprints126,127, the example deployment plans128, the example catalog130, the example cloud interface132, the example central package repository134, the example blueprint display135the example cloud manager138, the example blueprint manager140, the example distributed execution managers146A,146B, the example application component150, the example approver designation156, the example Customization level158, the example visual depiction of application component160, and/or, more generally, the example system100ofFIGS. 1A-1Ccould be implemented by one or more analog or digital circuit(s), logic circuits, programmable processor(s), application specific integrated circuit(s) (ASIC(s)), programmable logic device(s) (PLD(s)) and/or field programmable logic device(s) (FPLD(s)).

Further, the example blueprints202,206,208, the example servers210A,210B,210C, and/or, more generally, the example multi-machine blueprints ofFIG. 2may be implemented by hardware, software, firmware and/or any combination of hardware, software and/or firmware. Thus, for example, any of the example blueprints202,206,208, the example servers210A,210B,210C, and/or, more generally, the example multi-machine blueprints ofFIG. 2could be implemented by one or more analog or digital circuit(s), logic circuits, programmable processor(s), application specific integrated circuit(s) (ASIC(s)), programmable logic device(s) (PLD(s)) and/or field programmable logic device(s) (FPLD(s)).

Further, the example load balancer310, the example Virtual Appliances320,322, the example Deployment Customization Virtual Appliance324, the example Component Servers330a-336a,330b-336b, the example Management Endpoints340-344, the example Management Agents350a-356a,350b-356band/or, more generally, the example installation300ofFIG. 3may be implemented by hardware, software, firmware and/or any combination of hardware, software and/or firmware. Thus, for example, any of the example load balancer310, the example Virtual Appliances320,322, the example Deployment Customization Virtual Appliance324, the example Component Servers330a-336a,330b-336b, the example Management Endpoints340-344, the example Management Agents350a-356a,350b-356band/or, more generally, the example installation300ofFIG. 3could be implemented by one or more analog or digital circuit(s), logic circuits, programmable processor(s), application specific integrated circuit(s) (ASIC(s)), programmable logic device(s) (PLD(s)) and/or field programmable logic device(s) (FPLD(s)).

Further, the example Application Component150, example Uncustomized Application Component Properties154a, example Customized or Modified Application Component Properties154b, example Uncustomized Machine Name156a, example Customized or Modified Machine Name156b, example Uncustomized IP Address158a, example Customized or Modified IP Address158b, example Customized Resource Allocation159a, example Customized or Modified Resource Allocation159b, example Service Provisioner410b, example Deployment Customization Manager Service420b, example Deployment Customization Event Record422, example Deployment Customization Event Information423, example Deployment Customization Event Notification Generator424, example Deployment Customization Timer425, example Deployment Customization Processor426), example First and Second Deployment Customization Workflow Processors420c,420d(example First Deployment Customization Workflow Communications Manager427a, example First Deployment Customization Workflow Execution Unit428a, example First Deployment Customization Workflow429a, example Second Deployment Customization Workflow Communications Manager427b, example Second Deployment Customization Workflow Execution Unit428b, example Second Deployment Customization Workflow429b, example Deployment Event Broker430b, example Deployment Event Subscription Manager431, example Deployment Customization Topic Hierarchical Registry432, example Registration of a First Blocking Subscription432a, example Registration of a Second Blocking Subscription432b, example Registration of Non-Blocking Subscriptions432c, example Deployment Customization Topic433and example Deployment Customization Schema434), example Authentication Provider440b, example Proxy450band example Catalog Item Customization or Modification Database460band/or, more generally, example Virtual Appliance320and example Deployment Customization Virtual Appliance324ofFIGS. 4A-4Fmay be implemented by hardware, software, firmware and/or any combination of hardware, software and/or firmware.

Thus, for example, any of the example Application Component150, example Uncustomized Application Component Properties154a, example Customized or Modified Application Component Properties154b, example Uncustomized Machine Name156a, example Customized or Modified Machine Name156b, example Uncustomized IP Address158a, example Customized or Modified IP Address158b, example Customized Resource Allocation159a, example Customized or Modified Resource Allocation159b, example Service Provisioner410b, example Deployment Customization Manager Service420b, example Deployment Customization Event Record422, example Deployment Customization Event Information423, example Deployment Customization Event Notification Generator424, example Deployment Customization Timer425, example Deployment Customization Processor426), example First and Second Deployment Customization Workflow Processors420c,420d(example First Deployment Customization Workflow Communications Manager427a, example First Deployment Customization Workflow Execution Unit428a, example First Deployment Customization Workflow429a, example Second Deployment Customization Workflow Communications Manager427b, example Second Deployment Customization Workflow Execution Unit428b, example Second Deployment Customization Workflow429b, example Deployment Event Broker430b, example Deployment Event Subscription Manager431, example Deployment Customization Topic Hierarchical Registry432, example Registration of a First Blocking Subscription432a, example Registration of a Second Blocking Subscription432b, example Registration of Non-Blocking Subscriptions432c, example Deployment Customization Topic433and example Deployment Customization Schema434, example Authentication Provider440b, example Proxy450band example Catalog Item Customization or Modification Database460band/or, more generally, example Virtual Appliance320and example Deployment Customization Virtual Appliance324ofFIGS. 4A-4Fcould be implemented by one or more analog or digital circuit(s), logic circuits, programmable processor(s), application specific integrated circuit(s) (ASIC(s)), programmable logic device(s) (PLD(s)) and/or field programmable logic device(s) (FPLD(s)).

Further, example Deployment Customization Manager Service420b, example Deployment Event Broker430b, example First Deployment Customization Workflow Processor420c, example Second Deployment Customization Workflow Processor420d, example Third Consumer530, example Fourth Consumer540, example Fifth Consumer550, example Consume First Deployment Customization Event Notification501, example Publish First Deployment Customization Event Notification502, example Reply-Back with Second Deployment Customization Event Notification503, example Publish Second Deployment Customization Event Notification504, example Reply-Back with Third Deployment Customization Event Notification505, example Publish Third Deployment Customization Event Notification506and example Reply-Back with Third Deployment Customization Notification507and/or example manner of operating the Deployment Customization Virtual appliance324as inFIG. 5may be implemented by hardware, software, firmware and/or any combination of hardware, software and/or firmware. Thus, for example, any of the example Deployment Customization Manager Service420b, example Deployment Event Broker430b, example First Deployment Customization Workflow Processor420c, example Second Deployment Customization Workflow Processor420d, example Third Consumer530, example Fourth Consumer540, example Fifth Consumer550, example Consume First Deployment Customization Event Notification501, example Publish First Deployment Customization Event Notification502, example Reply-Back with Second Deployment Customization Event Notification503, example Publish Second Deployment Customization Event Notification504, example Reply-Back with Third Deployment Customization Event Notification505, example Publish Third Deployment Customization Event Notification506and example Reply-Back with Third Deployment Customization Notification507and/or the example manner of operating the Deployment Customization Virtual324as inFIG. 5could be implemented by one or more analog or digital circuit(s), logic circuits, programmable processor(s), application specific integrated circuit(s) (ASIC(s)), programmable logic device(s) (PLD(s)) and/or field programmable logic device(s) (FPLD(s)).

Further, example Deployment Customization Manager Service420b, example Deployment Event Broker430b, example First Deployment Customization Workflow Processor420c, example Second Consumer620, example Third Consumer630, example Fourth Consumer640, example Consume First Deployment Customization Event Notification601, example Publish First Deployment Customization Event Notification602, example Reply-Back with Second Deployment Customization Event Notification, example Publish Second Deployment Customization Event Notification604and example Reply-Back with Second Deployment Customization Notification605and/or the additional example manner of operating the Deployment Customization Virtual Appliance324as inFIG. 6may be implemented by hardware, software, firmware and/or any combination of hardware, software and/or firmware.

Thus, for example, any of the example Deployment Customization Manager Service420b, example Deployment Event Broker430b, example First Deployment Customization Workflow Processor420c, example Second Consumer620, example Third Consumer630, example Fourth Consumer640, example Consume First Deployment Customization Event Notification601, example Publish First Deployment Customization Event Notification602, example Reply-Back with Second Deployment Customization Event Notification, example Publish Second Deployment Customization Event Notification604and example Reply-Back with Second Deployment Customization Notification605and/or the additional example manner of operating the Deployment Customization Virtual Appliance as inFIG. 6could be implemented by one or more analog or digital circuit(s), logic circuits, programmable processor(s), application specific integrated circuit(s) (ASIC(s)), programmable logic device(s) (PLD(s)) and/or field programmable logic device(s) (FPLD(s)).

Further still, the example system100ofFIGS. 1A-1C, and the example blueprints202-208and the example multimachine service210ofFIG. 2, and the example installation300ofFIG. 3, and the example virtual appliance320and the example deployment Customization virtual appliance324, the example Deployment Customization Manager Service420band the example deployment event broker430bofFIGS. 4A-4F, and the example manner of operating the Deployment Customization Virtual Appliance324as inFIG. 5and the example deployment customization event notifications occurring in the context of the example Deployment Customization Virtual Appliance324as inFIG. 5, and the additional example manner of operating the Deployment Customization Virtual Appliance324as inFIG. 6and the additional example deployment customization event notifications occurring in the context of the example Deployment Customization Virtual Appliance324may include one or more elements, processes and/or devices in addition to, or instead of, those illustrated in these foregoing figures, and/or may include more than one of any or all of the illustrated elements, processes and devices.

Example flowcharts representative of example machine readable instructions which may be executed to implement the example Deployment Customization Virtual Appliance ofFIGS. 4A-4Fto manage deployment customization of an application for deployment in an application deployment environment of a cloud computing platform provider are shown in the flowchart ofFIGS. 7A-7Dand in the flowchart ofFIGS. 8A-8C.

In these examples, the machine readable instructions implement programs for execution by a processor such as the processor912shown in the example processor platform900discussed below in connection withFIG. 9. The programs may be embodied in software stored on a tangible computer readable storage medium such as a CD-ROM, a floppy disk, a hard drive, a digital versatile disk (DVD), a Blu-ray disk, or a memory associated with the processor912, but the entire program and/or parts thereof could alternatively be executed by a device other than the processor912and/or embodied in firmware or dedicated hardware. Further, although the example programs are described with reference to the flowchart illustrated inFIGS. 7A-7Dand the flowchart illustrated inFIGS. 8A-8C, many other methods of managing customizations in accordance with the teachings of this disclosure may alternatively be used. For example, the order of execution of the blocks may be changed, and/or some of the blocks described may be changed, eliminated, or combined.

A first flowchart representative of example machine readable instructions which may be executed to implement the example Deployment Customization Virtual Appliance ofFIGS. 4A-4Fto manage deployment customization of an application for deployment in an application deployment environment of a cloud computing platform provider are shown inFIGS. 7A-7D.

FIGS. 7A-7Ddepict a first flowchart representative of computer readable instructions that may be executed to implement the example Deployment Customization Virtual Appliance ofFIGS. 4A-4Fto manage deployment Customization of an application for deployment in an application deployment environment of a cloud computing platform provider. An example program700is illustrated beginning inFIG. 7A. Initially at block702, a first notification payload including an Uncustomized Application Component Property of the Application Component is generated the Deployment Customization Manager Service. For example, Uncustomized Application Component Properties154aare associated with the Application Component150in a database460b. For example, a catalog database item can be an Application Component150. Uncustomized Application Component Properties154acan be associated with the Application Component150, as shown as included in the database Catalog130ofFIGS. 1B and 1nthe Catalog Item Customization or Modification Database460bofFIG. 4F. The Deployment Customization Manager Service420bis associated with Uncustomized Application Component Properties. For example, the Deployment Customization Manager Service420bin the example ofFIG. 4B(and shown in greater detail in the example ofFIG. 4C) can be associated with the Uncustomized Application Component Properties154ain the Catalog Item Customization or Modification Database460b. The Deployment Customization Manager Service420bcan generate a First Notification Payload including an Uncustomized Application Component Property. In some examples a plurality of Uncustomized Application Component Properties154acan be included in the First Notification Payload. The Uncustomized Application Component Property of the First Notification Payload can include at least one of the Uncustomized Machine Name156a, the reservation for the Uncustomized Internet Protocol (IP) Address158a, and the Uncustomized Resource Allocation159a. The Uncustomized Resource Allocation159acan be broadly directed to examples such as uncustomized Central Processing Unit (CPU) allocation for VM's, and uncustomized memory allocation for VM's, etc.

In the example ofFIG. 7A, a First Deployment Customization Event Notification is generated in response to a Deployment Customization Event Record (block708). For example, the Deployment Customization Manager Service420bcan include a Deployment Customization Event Record422that records Deployment Customization Event information423about the Deployment Customization Event Occurrence. For example, the Deployment Customization Manager Service420bcan include a Deployment Customization Event Record422that records Deployment Customization Event information423about the user requesting the Application Component150. For example, the Deployment Customization Manager Service420can include a Deployment Customization Processor426to process the Deployment Customization Event Information, and can further include a Deployment Customization Event Notification Generator424. The Deployment Customization Event Notification Generator424of the Deployment Customization Manager420bcan generate the first Deployment Customization Event Notification in response to the Deployment Customization Event Record422that records Deployment Customization Event Information423about a deployment customization event occurrence. The first deployment Customization event notification can include Deployment Customization Event Information423, and in particular includes the First Notification Payload, including an Uncustomized Application Component Property. In some examples a plurality of Uncustomized Application Component Properties154acan be included in the First Notification Payload. The first deployment event notification can also include a serialized form of at least a portion of the Deployment Customization Event Record422that records the Deployment Customization Event Information423about the deployment event occurrence.

In the example ofFIG. 7A, in accordance with flowchart of example program700, the Deployment Customization Manager submits the First Deployment Customization Event Notification to the Deployment Customization Topic of the Deployment Event Broker for publication (block710). The Deployment Customization Topic of the Deployment Event Broker consumes the First Deployment Customization Notification (block712.) For example, The Deployment Customization Event Notification Generator424of the Deployment Customization Manager Service420bcan send the First Deployment Customization Event Notification to the Deployment Event Broker430b. Authentication provider440bcan authenticate access to the Deployment Event Broker430b. The Deployment Customization Event Broker430bcan comprises a scalable distributed service. The Deployment Customization Manager Service420bcan start the Deployment Customization Timer425running, when the Deployment Customization Manager Service420bsends the First Deployment Customization Event Notification to the Deployment Event Broker430b. The Deployment Customization Manager Service420bcan wait, for a predetermined period of time as indicated using the Deployment Customization Timer425, for a responsive event notification (e.g. a reply-back) from the Deployment Event Broker430b. For example, if the predetermined time period is 24 hours, then the Deployment Customization Manager Service420bcan wait for 24 hours for a reply-back from the Deployment Event Broker430b. If the Deployment Customization Manager Service420breceives no reply-back from the Deployment Event Broker430bwithin the predetermined time period as indicated by the Deployment Customization Timer425, then the Deployment Customization Manager Service420bcan notify the user.

In the example ofFIG. 7A, in accordance with flowchart of example program700, First and Second Blocking Subscriptions of the First and Second Deployment Customization Workflow Processors are registered at the Deployment Customization Topic of the Deployment Event Broker (block714.) For example, the Deployment Event Broker430bshown inFIG. 4B, and shown in greater detail inFIG. 4Dcan include a Deployment Event Subscription Manager431, a Deployment Customization Topic Registry432, a Deployment Customization Topic433. The Deployment Customization Topic433can include a Deployment Customization Schema434. The Deployment Customization Topic Registry432can be hierarchical, so as provide the Deployment Customization Topic Hierarchical Registry432(or the Hierarchical Registry432of the Deployment Customization Topic433.) The Deployment Customization Topic Hierarchical Registry432can provide for a hierarchical registry of subscriptions to the Deployment Customization Topic433. For example: superior in the hierarchy of the Hierarchical Registry432can be a first blocking subscription432aof the first customization workflow processor420c; and a first subordinate in the hierarchy of the Hierarchical Registry432can be a second blocking subscription432bof the second customization workflow processor420d. Accordingly, in the hierarchy of the Hierarchical Registry432, the second blocking subscription432bof the second customization workflow processor420dis subordinate to the first blocking subscription432aof the first customization workflow processor420c. Although not shown in the example ofFIG. 4D, in other examples of the Hierarchical Registry432can include a second subordinate in the hierarchy of the Hierarchical Registry432, which can be a third blocking subscription of a third customization workflow processor. Similarly, in other examples, the Hierarchical Registry432can include a third subordinate in the hierarchy of the Hierarchical Registry, which can be a fourth blocking subscription of a fourth customization workflow processor, and so on. In the example shown inFIG. 4D, further subordinate in the hierarchy of the Hierarchical Registry432can be non-blocking subscriptions432cof one or more additional consumers. As a general matter, workflow processors, such as the First and Second Customization Workflow Processors420c,420d, as well as the one or more additional consumers each register their respective subscriptions at the Hierarchical Registry432of the Deployment Event Broker430bto receive notifications published by the Deployment Customization Topic433. However, since the First and Second Customization Workflow Processors420c,420dare blocking consumers, each having respective First and Second Blocking Subscriptions431,432, registered at the Hierarchical Registry432of the Deployment Event Broker430b, notifications are published in an ordered sequence according to the hierarchy of the Hierarchical Registry432. For example, the ordered sequence according to the hierarchy of the Hierarchical Registry432can be as follows. First,501consume, via the Deployment Event Broker430b, the First Deployment Customization Event Notification, when the Deployment Customization Manager Service420bsends the First Deployment Customization Event Notification to the Deployment Event Broker430b. Next,502publish according the hierarchy, via the Deployment Customization Topic433of the Deployment Event Broker430b, the First Deployment Customization Event Notification to the First Customization Workflow Processor420c, while the First Blocking Subscription432ablocks the Second Customization Workflow Processor420dand the one or more additional consumers from receiving the First Deployment Customization Event Notification from the Deployment Customization Topic433(and while the First Blocking Subscription432ablocks the Second Customization Workflow Processor420dand the one or more additional consumers from receiving any notification from the Deployment Customization Topic433, until after the First Customization Workflow Processor420creplies back to the Deployment Customization Topic433with a Second Deployment Customization Event Notification.) Next,503reply-back, via the First Customization Workflow Processor420c, with the Second Deployment Customization Event Notification to the Deployment Customization Topic433. Next,504publish according to the hierarchy, via Deployment Customization Topic433of the Deployment Event Broker430b, the Second Deployment Customization Event Notification to the second Customization Workflow Processor420d, while the Second Blocking Subscription432bblocks the one or more additional consumers from receiving the Second Deployment Customization Event Notification from the Deployment Customization Topic433(and while the Second Blocking Subscription432bblocks the one or more additional consumers from receiving any notification from the Deployment Customization Topic433, until after the Second Customization Workflow Processor420dreplies back to the Deployment Customization Topic433with a third Deployment Customization Event Notification.) Next,505reply-back, via the Second Customization Workflow Processor420d, with the Third Deployment Customization Event Notification to the Deployment Customization Topic433. Next,506publish according to the hierarchy, via Deployment Customization Topic433of the Deployment Event Broker430b, the third Deployment Customization Event Notification to the additional consumers. Next,507reply-back, via Deployment Customization Topic433of the Deployment Event Broker430b, with the third Deployment Customization Event Notification to the Deployment Customization Manager Service420b. As discussed, according to the hierarchy of the Hierarchical Registry432of the Deployment Customization Topic433, the Second Blocking Subscription432bcan be subordinate to the First Blocking Subscription432a, so that blocking associated with the Second Deployment Customization Workflow Processor420dis subordinate to blocking associated with the First Deployment Customization Workflow Processor420c. It should also be noted that the example Deployment Customization Topic433of the Deployment Event Broker430bcan be a repliable topic. For example:503reply-back, via the First Customization Workflow Processor420c, with the Second Deployment Customization Event Notification to the Deployment Customization Topic433;505reply-back, via the Second Customization Workflow Processor420d, with the Third Deployment Customization Event Notification to the Deployment Customization Topic433; and507reply-back, via Deployment Customization Topic433of the Deployment Event Broker430b, with the third Deployment Customization Event Notification to the Deployment Customization Manager Service420b. Accordingly, in light of all of the foregoing, it should be understood that in this example the First Blocking Subscription432aof the First Deployment Customization Workflow Processor420ccan be registered at the Hierarchical Registry432of the Deployment Customization Topic433to provide for the First Deployment Customization Workflow Processor420creceiving The First Deployment Customization Event Notification501from the Deployment Customization Topic433. The Second Blocking Subscription432bof the Second Deployment Customization Workflow Processor420dcan likewise be registered at the Hierarchical Registry432of the Deployment Customization Topic433. The First Subscription432aof the First Customization Workflow Processor can be a First Blocking Subscription432aand is registered at the Deployment Customization Topic433to block the Second Deployment Customization Workflow Processor420dfrom receiving the First Deployment Customization Event Notification501. One or more additional non-blocking subscriptions432c, each corresponding to a respective one or more additional non=blocking consumers530,540,550,620,630,640, are registered at the deployment customization topic433. The First Subscription432aof the First Customization Workflow Processor420cis A First Blocking Subscription432aand is registered at the Hierarchical Registry432of the Deployment Customization Topic433to block the one or more additional consumers530,540,550,620,630,640, from receiving the First Deployment Customization Event Notification501from the Deployment Customization Topic433. Moreover, in light of all of the foregoing, it should be understood that in this example the First Subscription432aof the First Customization Workflow Processor420ccan be a First Blocking Subscription432aand can be registered at the Hierarchical Registry432of the Deployment Customization Topic433to block the one or more additional consumers530,540,550,620,630,640from receiving any Deployment Customization Event Notification until after the First Deployment Customization Workflow Processor420cis to reply back to the Deployment Customization Topic433with the Second Deployment Event Notification. The First Subscription432aof the First Deployment Customization Workflow Processor420ccan be a First Blocking Subscription432aand can be registered at the Hierarchical Registry432of the Deployment Customization Topic433to block the Second Deployment Customization Workflow Processor420dfrom receiving any Deployment Customization Event Notification until after the First Deployment Customization Workflow Processor420cis to reply-back to the Deployment Customization Topic433with the second deployment event notification. The Second Subscription432bof the Second Deployment Customization Workflow Processor420dcan be registered at the Deployment Customization Topic433so as to provide for the Second Deployment Customization Workflow Processor420dreceiving the Second Deployment Customization Event Notification503from the deployment customization topic433. The Second Subscription432bof the Second Customization Workflow Processor can be a Second Blocking Subscription432band can be registered at the Hierarchical Registry432of the Deployment Customization Topic433to block the one or more additional consumers530,540,550,620,630,640from receiving any deployment customization event notification until after the Second Deployment Customization Workflow Processor420dis to reply-back to the Deployment Customization Topic433with the Third Deployment Customization Notification. For example, Third and fourth subscriptions each corresponding to a respective third and fourth non-blocking consumer can be registered at the Hierarchical Registry432of the Deployment Customization Topic433. The Second Subscription432bof the Second Deployment Customization Workflow Processor420dcan be a Second Blocking Subscription432band can be registered at the Hierarchical Registry432of the Deployment Customization Topic433to block the third and fourth non-blocking consumers from receiving any deployment customization event notification until after the Second Deployment Customization Workflow Processor420dreplies-back to the Deployment Customization Topic433with the Third Deployment Event Notification.

In the example ofFIG. 7B, in accordance with flowchart of example program700, the Deployment Customization Topic of the Deployment Event Broker publishes the First Deployment Customization Event Notification to the First Deployment Customization Workflow Processor, via the First Blocking Subscription of the First Deployment Customization Workflow Processor (block716.) The First Blocking subscription blocks the Second Deployment Customization Workflow Processor and Additional Consumers from receiving the First Deployment Customization Event Notification (block718.) For example, the Deployment Customization Topic433of the Deployment Event Broker430bpublishes502, according the hierarchy of the Hierarchical Registry432, the First Deployment Customization Event Notification to the First Customization Workflow Processor420c, while the First Blocking Subscription432ablocks the Second Customization Workflow Processor420dand the one or more additional consumers from receiving the First Deployment Customization Event Notification from the Deployment Customization Topic433(and while the First Blocking Subscription432ablocks the Second Customization Workflow Processor420dand the one or more additional consumers from receiving any notification from the Deployment Customization Topic433, until after the First Customization Workflow Processor420creplies back to the Deployment Customization Topic433with a Second Deployment Customization Event Notification.)

In the example ofFIG. 7B, and in accordance with flowchart of example program700, the First Deployment Workflow Processor consumes the First Deployment Customization Event Notification (block720.) The First Deployment Workflow Processor customizes the Uncustomized Application Component Property of the First Payload into Customized Application Component Property of the Second Payload (block722.) For example, Examples of the First and Second Deployment Customization Workflow Processors420c,420dshown inFIG. 4Bare shown in greater detail inFIG. 4E. In the example ofFIG. 4E, the First Deployment Customization Workflow Processor420ccan include a First Deployment Customization Workflow Communications Manager427ato manage communications with the First Deployment Customization Workflow Processors420c. Additionally, the First Deployment Customization Workflow Processor420ccan include a First Deployment Customization Workflow Execution Unit428ato process the First Deployment Customization Workflow429a. For example, as mentioned previously, the Deployment Customization Topic433of the Deployment Event Broker430bcan publish the First Deployment Customization Event Notification to the First Customization Workflow Processor420c. In response, the First Customization Workflow Processor420ccan: consume the First Deployment Customization Event Notification (including the First Notification Payload); customize the First Notification Payload into the Second Notification Payload; and reply-back to the Deployment Customization Topic433of the Deployment Event Broker430bwith the Second Deployment Customization Event Notification (including the Second Notification Payload.). More particularly, the First Deployment Customization Event Notification can include the First Notification Payload, which can include the Uncustomized Application Component Property. For example the Uncustomized Application Component Property can be the plurality of Uncustomized Application Component Properties154a. The First Deployment Customization Workflow Processor420ccan process the First Deployment Customization Workflow429ato customize the Uncustomized Application Component Property (or the plurality Uncustomized Application Component Properties154a) of the First Notification Payload into Customized Application Component Property (or the Customized Application Component Properties154bof the Second Notification Payload.) As mentioned previously, the Uncustomized Application Component Properties154a, for example can include an Uncustomized Machine Name156a, a reservation for an Uncustomized Internet Protocol (IP) Address158a, and an Uncustomized Resource Allocation159a. As mentioned previously, the forgoing are related to VM's. For example, the Uncustomized Resource Allocation159acan be broadly directed to examples such as Uncustomized Central Processing Unit (CPU) Allocation for VM's, and Uncustomized Memory Allocation for VM's, etc. For example, at least one of the Uncustomized Application Component Properties154aof the First Notification Payload can be customized by the First Deployment Customization Workflow Processor420cinto at least one of the Customized Application Component Properties154bof the Second Notification Payload. More particularly, for example, the Uncustomized Virtual Machine Name156a(for example “foo-machine-name”) of the First Notification Payload can be customized into the Customized Virtual Machine Name156b(for example “my-foo-machine-name”) of the Second Notification Payload. For example, the Uncustomized Virtual Machine Internet Protocol (IP) Address Reservation158a(for example “198.111.111”) can be customized into the Customized Virtual Machine Internet Protocol (IP) Address Reservation158b(for example “198.999.999”). Similarly, for example, at least one Uncustomized Virtual Machine Resource Allocation159aof the First Notification Payload can be customized by the First Deployment Customization Workflow Processor420cinto at least one Customized Virtual Machine Resource Allocation159bof the Second Notification Payload. For example, the Uncustomized Virtual Machine Memory Allocation (for example “4 Gigabytes of Memory”) of the First Notification Payload can be customized into the Customized Virtual Machine Memory Allocation (for example “2 Gigabytes of Memory”) of the Second Notification Payload. For example, the Uncustomized Central Processing Unit (CPU) Allocation (for example “4 CPUs”) of the First Notification Payload can be customized into the Customized Central Processing Unit (CPU) Allocation (for example “2 CPU's”) of the Second Notification Payload. For avoidance of doubt, it should be understood the forgoing are just some examples, and various other examples can likewise be implemented in accordance with this disclosure. For example, Second Notification Payload can include a mix that can include an Uncustomized Application Component Property in addition to the Customized Application Component Property. For example, the Second Notification Payload can include the Uncustomized Virtual Machine Name156(for example “foo-machine-name”) and Uncustomized Virtual Machine Internet Protocol (IP) Address Reservation158a(for example “198.111.111”) in a mix along with the Customized Virtual Machine Memory Allocation (for example “2 Gigabytes of Memory”) and along with the Customized Central Processing Unit (CPU) Allocation (for example “2 CPU's”)

In the example ofFIG. 7B, in accordance with flowchart of example program700, the First Deployment Workflow Processor generates the Second Deployment Customization Event Notification to include the Second Notification Payload (block724.) For example, the First Deployment Customization Workflow Processor420ccan generate the Second Deployment Customization Event Notification that includes the Second Notification Payload, which includes the a Customized Application Component Property.

The First Deployment Customization Workflow Processor replies-back to the Deployment Customization Topic with the Second Deployment Customization Event Notification (block726.) The Deployment Customization Topic of the Deployment Event Broker consumes the Second Deployment Customization Event Notification (block728.) For example, the First Deployment Customization Workflow Processor420ccan reply-back to the Deployment Customization Topic433with the Second Deployment Customization Event Notification503that includes the Second Notification Payload, which includes the Customized Application Component Property.

The Deployment Customization Topic of the Deployment Event Broker publishes the Second Deployment Customization Event Notification to the Second Deployment Workflow Processor, via the Second Blocking Subscription of the Second Deployment Customization Workflow Processor (block729.) For example, at a point in time after First Deployment Customization Workflow Processor420creplies-back to the Deployment Customization Topic433with the Second Deployment Customization Event Notification, the Deployment Customization Topic433can publish to the Second Deployment Customization Workflow Processor420dthe Second Deployment Customization Event Notification. For example, the Second Deployment Customization Event Notification can include the Second Notification Payload, which can include the Customized Application Component Property.

The Deployment Customization Topic blocks the Additional Consumer from receiving the Second Deployment Customization Event notification (block730.) For example, the Deployment Customization Topic433of the Deployment Event Broker430bcan publish504, according to the hierarchy of the Hierarchical Registry432, the Second Deployment Customization Event Notification to the Second Customization Workflow Processor420d, while the Second Blocking Subscription432bblocks the additional consumers from receiving the Second Deployment Customization Event Notification from the Deployment Customization Topic433(and while the Second Blocking Subscription432bblocks the additional consumers from receiving any notification from the Deployment Customization Topic433, until after the Second Customization Workflow Processor420dreplies back to the Deployment Customization Topic433with a third Deployment Customization Event Notification.)

In the example ofFIG. 7C, in accordance with flowchart of example program700, the Second Deployment Customization Workflow Processor consumes the Second Deployment Customization Event Notification (block732.) The Second Deployment Workflow Processor modifies the Customized Application Component Properties of the Second Payload into Modified Application Component Properties of the Third Payload (block734.) The Second Deployment Customization Workflow Processor generates a Third Deployment Customization Event Notification to include the Third Notification Payload (block736.) The Second Deployment Customization Workflow Processor replies-back to the Deployment Customization Topic with the Third Deployment Customization Event Notification (block738.) For example, the Second Customization Workflow Processor420dcan: consume the Second Deployment Customization Event Notification (including the Second Notification Payload); modify the Second Notification Payload into the Third Notification Payload; and reply-back to the Deployment Customization Topic433of the Deployment Event Broker430bwith the Third Deployment Customization Event Notification (including the Third Notification Payload.). For example, the Third Notification Payload can include a Customized Application Component Property in addition to the Modified Application Component Property. Moreover, for example, the Third Notification Payload can include the Uncustomized Application Component Property in addition to the Customized Application Component Properties and in addition to the Modified Application Component Property. In various examples, in accordance with this disclosure, at least one of the Uncustomized Application Component Properties154aand/or at least one of the Customized Application Component Properties154bof the Second Notification Payload can be modified by the Second Deployment Customization Workflow Processor420dinto at least one of the Modified Application Component Properties154bof the Third Notification Payload. More particularly, for example, the Uncustomized Virtual Machine Name156a(for example “foo-machine-name”) or the Customized Virtual Machine Name156b(for example “my-foo-machine-name”) of the Second Notification Payload can be modified into the Modified Virtual Machine Name156b(for example “my-own-foo-machine-name”) of the Third Notification Payload. For example, the Uncustomized Virtual Machine Internet Protocol (IP) Address Reservation158a(for example “198.111.111”) or the Customized Virtual Machine Internet Protocol (IP) Address Reservation158b(for example “198.999.999”) of the Second Notification Payload can be modified into the Modified Virtual Machine Internet Protocol (IP) Address Reservation158b(for example “198.999.001”). Similarly, for example, at least one Uncustomized Virtual Machine Resource Allocation159aand/or at least one Customized Virtual Machine Resource Allocation159bof the First Notification Payload of the Second Notification Payload can be modified by the Second Deployment Customization Workflow Processor420dinto at least one Modified Virtual Machine Resource Allocation159bof the Third Notification Payload. For example, the Uncustomized Virtual Machine Memory Allocation (for example “4 Gigabytes of Memory”) or the Customized Virtual Machine Memory Allocation (for example “2 Gigabytes of Memory”) of the Second Notification Payload can be modified into the Modified Virtual Machine Memory Allocation (for example “1 Gigabyte of Memory”) of the Third Notification Payload. For example, the Uncustomized Central Processing Unit (CPU) Allocation (for example “4 CPUs”) or the Customized Central Processing Unit (CPU) Allocation (for example “2 CPU's”) of the Second Notification Payload can be modified into the Modified Central Processing Unit (CPU) Allocation (for example “1 CPU”) of the Third Notification Payload. For avoidance of doubt, it should be understood the forgoing are just some examples, and various other examples can likewise be implemented in accordance with this disclosure. For example, it should be understood that the Third Notification Payload can include a mix that includes an Uncustomized Application Component Property in addition to the Customized Application Component Property in addition to Modified Application Component Properties154b. For example, the Third Notification Payload can include the Uncustomized Virtual Machine Name156(for example “foo-machine-name”) and Modified Virtual Machine Internet Protocol (IP) Address Reservation158a(for example “198.999.001”) along with the Customized Virtual Machine Memory Allocation (for example “2 Gigabytes of Memory”) and along with the Modified Central Processing Unit (CPU) Allocation (for example “1 CPU's”). For example, as illustrated by the foregoing, the Uncustomized Virtual Machine Name156(for example “foo-machine-name”) of the First Notification Payload can remain uncustomized as the Uncustomized Virtual Machine Name156(for example “foo-machine-name”) in the Second Notification Payload, and further can remain unmodified as the Uncustomized Virtual Machine Name156(for example “foo-machine-name”) in the Third Notification Payload. Accordingly, for example, at least one of the Uncustomized Application Component Properties154aof the First Notification Payload can remain uncustomized as an Uncustomized Application Component Property154ain the Second Notification Payload, and further can remain unmodified as the Uncustomized Application Component Property154ain the Third Notification Payload. For example, as illustrated by the foregoing, the Uncustomized Virtual Machine Internet Protocol (IP) Address Reservation158a(for example “198.111.111”) of the First Notification Payload, can remain as the Uncustomized Virtual Machine Internet Protocol (IP) Address Reservation158a(for example “198.111.111”) in the Second Notification Payload, but then can be modified to the Modified Virtual Machine Internet Protocol (IP) Address Reservation158a(for example “198.999.001”) in the Third Notification Payload. Accordingly, for example, at least one of the Uncustomized Application Component Properties154aof the First Notification Payload can remain uncustomized as an Uncustomized Application Component Property154ain the Second Notification Payload, but can be modified into the Modified Application Component Property154bin the Third Notification Payload. For example, as illustrated by the foregoing, the Uncustomized Virtual Machine Memory Allocation (for example “4 Gigabytes of Memory”) of the First Notification Payload can be customized to the Customized Virtual Machine Memory Allocation (for example “2 Gigabytes of Memory”) in the Second Notification Payload, and can remain unmodified so as to be the Customized Virtual Machine Memory Allocation (for example “2 Gigabytes of Memory”) in the Third Notification Payload. Accordingly, for example, at least one of the Uncustomized Application Component Properties154aof the First Notification Payload can be customized into the Customized Application Component Property154bin the Second Notification Payload, and can remain unmodified so as to be the Customized Application Component Property154bin the Third Notification Payload. For example, as illustrated by the foregoing, the Uncustomized Central Processing Unit (CPU) Allocation (for example “4 CPUs”) of the First Notification Payload can be customized into the Customized Central Processing Unit (CPU) Allocation (for example “2 CPU's”) of the Second Notification Payload, and then can be modified into the Modified Central Processing Unit (CPU) Allocation (for example “1 CPU”) of the Third Notification Payload. Accordingly, for example, at least one of the Uncustomized Application Component Properties154aof the First Notification Payload can be customized into the Customized Application Component Property154bin the Second Notification Payload, and further can be modified into the Modified Application Component Property154bin the Third Notification Payload. For example, the Second Deployment Customization Workflow Processor420dcan generate the Third Deployment Customization Event Notification that includes the Third Notification Payload, which includes the Modified Application Component Property. For example, the Second Deployment Customization Workflow Processor420dcan reply-back to the Deployment Customization Topic433with the Third Deployment Customization Event Notification that includes the Third Notification Payload, which includes the Modified Application Component Property. For example, the Second Deployment Customization Workflow Processor420dcan modify the application component properties (e.g. an Uncustomized Application Component Property and/or the Customized Application Component Properties) of the Second Notification Payload into a Modified Application Component Property154bof the Third Notification Payload. For example, a Modified Application Component Property of the Third Notification Payload can include at least one of: a Modified Virtual Machine Name156b, a Modified Virtual Machine Internet Protocol (IP) Address Reservation158b, and a Modified Virtual Machine Resource Allocation1509b, a Modified Virtual Machine Memory Allocation and a Modified Central Processing Unit (CPU) Allocation. For example, the Second Deployment Customization Workflow Processor420dcan generate the Third Deployment Customization Event Notification505that can include the Third Notification Payload, which can include the Modified Application Component Property. For example, the Second Deployment Customization Workflow Processor420dcan reply-back to the Deployment Customization Topic433with the Third Deployment Customization Event Notification505that can include the Third Notification Payload, which can include the Modified Application Component Property.

In the example ofFIG. 7D, in accordance with flowchart of example program700, the Deployment Customization Topic of the Deployment Event Broker publishes the Third Deployment Customization Event Notification to an Additional Consumer (block742.) For example, after the Second Deployment Customization Workflow Processor420dreplies-back to the deployment customization topic433, the deployment customization topic433can publish to a third consumer the third deployment customization event notification506that includes the third notification payload, which includes the modified application component property. For example, after the Second Deployment Customization Workflow Processor420dreplies back to the Deployment Customization Topic433, the Deployment Customization Topic433can publish to third and/or fourth and/or fifth consumers530,540,550the Third Deployment Customization Event Notification506that can include the Third Notification Payload, which can include the Modified Application Component Property.

In the example ofFIG. 7D, in accordance with flowchart of example program700, the Deployment Customization Topic of the Deployment Event Broker replies-back to the Application Customization Manager with the Third Deployment Customization Event Notification (block744.) For example, after the Second Deployment Customization Workflow Processor420dreplies-back to the Deployment Customization Topic433, the Deployment Customization Topic433can reply back to the Deployment Customization Manager420bwith the Third Deployment Customization Event Notification505that can include the Third Notification Payload, which can include the Modified Application Component Property.

In the example ofFIG. 7D, in accordance with flowchart of example program700, the Application Customization Manager consumes the Third Deployment Customization Event Notification (block746.) The Deployment Customization Manager creates an association between the Application Component and Modified Application Component Property in the database (block748.) The Deployment Customization Manager replaces the association between the Application Component and Uncustomized Application Component Property in the database (block750.) For example, the deployment customization manager420bcan associate the Application Component150with the Modified Application Component Property in the database460b. For example, the deployment customization manager420bcan create an association between the Application Component150and the Modified Application Component Property in the database460b, in place of an association between the Application Component150and the Uncustomized Application Component Property in the database460b. After executing block750, execution of example program700can end.

Another flowchart representative of example machine readable instructions which may be executed to implement another example Deployment Customization Virtual Appliance ofFIGS. 4A-4Fto manage deployment customization of an application for deployment in an application deployment environment of a cloud computing platform provider is shown inFIGS. 8A-8C.

FIGS. 8A-8Cdepict another flowchart representative of computer readable instructions that may be executed to implement the example Deployment Customization Virtual Appliance ofFIGS. 4A-4Fto manage deployment Customization of an application for deployment in an application deployment environment of a cloud computing platform provider. An example program800is illustrated beginning inFIG. 8A. Initially at block802, a first notification payload including an Uncustomized Application Component Property of the Application Component is generated the Deployment Customization Manager Service. For example, Uncustomized Application Component Properties154aare associated with the Application Component150in a database460b. For example, a catalog database item can be an Application Component150. Uncustomized Application Component Properties154acan be associated with the Application Component150, as shown as included in the database Catalog130ofFIGS. 1B and 1nthe Catalog Item Customization or Modification Database460bofFIG. 4F. The Deployment Customization Manager Service420bis associated with Uncustomized Application Component Properties. For example, the Deployment Customization Manager Service420bin the example ofFIG. 4B(and shown in greater detail in the example ofFIG. 4C) can be associated with the Uncustomized Application Component Properties154ain the Catalog Item Customization or Modification Database460b. The Deployment Customization Manager Service420bcan generate a First Notification Payload including an Uncustomized Application Component Property. In some examples a plurality of Uncustomized Application Component Properties154acan be included in the First Notification Payload. The Uncustomized Application Component Property of the First Notification Payload can include at least one of the Uncustomized Machine Name156a, the reservation for the Uncustomized Internet Protocol (IP) Address158a, and the Uncustomized Resource Allocation159a. The Uncustomized Resource Allocation159acan be broadly directed to examples such as uncustomized Central Processing Unit (CPU) allocation for VM's, and uncustomized memory allocation for VM's, etc.

In the example ofFIG. 8A, a First Deployment Customization Event Notification is generated in response to a Deployment Customization Event Record (block808). For example, the Deployment Customization Manager Service420bcan include a Deployment Customization Event Record422that records Deployment Customization Event information423about the Deployment Customization Event Occurrence. For example, the Deployment Customization Manager Service420bcan include a Deployment Customization Event Record422that records Deployment Customization Event information423about the user requesting the Application Component150. For example, the Deployment Customization Manager Service420can include a Deployment Customization Processor426to process the Deployment Customization Event Information, and can further include a Deployment Customization Event Notification Generator424. The Deployment Customization Event Notification Generator424of the Deployment Customization Manager420bcan generate the First Deployment Customization Event Notification in response to the Deployment Customization Event Record422that records Deployment Customization Event Information423about a deployment customization event occurrence. The First deployment Customization event notification can include Deployment Customization Event Information423, and in particular includes the First Notification Payload, including an Uncustomized Application Component Property. In some examples a plurality of Uncustomized Application Component Properties154acan be included in the First Notification Payload. The first deployment event notification can also include a serialized form of at least a portion of the Deployment Customization Event Record422that records the Deployment Customization Event Information423about the deployment event occurrence.

In the example ofFIG. 8A, in accordance with flowchart of example program800, the Deployment Customization Manager submits the First Deployment Customization Event Notification to the Deployment Customization Topic of the Deployment Event Broker for publication (block810). The Deployment Customization Topic of the Deployment Event Broker consumes the First Deployment Customization Notification (block812.) For example, The Deployment Customization Event Notification Generator424of the Deployment Customization Manager Service420bcan send the First Deployment Customization Event Notification to the Deployment Event Broker430b. Authentication provider440bcan authenticate access to the Deployment Event Broker430b. The Deployment Customization Event Broker430bcan comprises a scalable distributed service. The Deployment Customization Manager Service420bcan start the Deployment Customization Timer425running, when the Deployment Customization Manager Service420bsends the First Deployment Customization Event Notification to the Deployment Event Broker430b. The Deployment Customization Manager Service420bcan wait, for a predetermined period of time as indicated using the Deployment Customization Timer425, for a responsive event notification (e.g. a reply-back) from the Deployment Event Broker430b. For example, if the predetermined time period is 24 hours, then the Deployment Customization Manager Service420bcan wait for 24 hours a reply-back from the Deployment Event Broker430b. If the Deployment Customization Manager Service420breceives no reply-back from the Deployment Event Broker430bwithin the predetermined time period as indicated by the Deployment Customization Timer425, then the Deployment Customization Manager Service420bcan notify the user.

In the example ofFIG. 8A, in accordance with flowchart of example program800, First Blocking Subscription of the First Deployment Customization Workflow Processor is registered at the Deployment Customization Topic of the Deployment Event Broker (block814.) For example, the Deployment Event Broker430bshown inFIG. 4B, and shown in greater detail in the example ofFIG. 4D, can include a Deployment Event Subscription Manager431, a Deployment Customization Topic Registry432, a Deployment Customization Topic433. The Deployment Customization Topic433can include a Deployment Customization Schema434. The Deployment Customization Topic Registry432can be hierarchical, so as provide the Deployment Customization Topic Hierarchical Registry432(or the Hierarchical Registry432of the Deployment Customization Topic433.) The Deployment Customization Topic Hierarchical Registry432can provide for a hierarchical registry of subscriptions to the Deployment Customization Topic433. For example: superior in the hierarchy of the Hierarchical Registry432can be a first blocking subscription432aof the first customization workflow processor420c. In the example shown inFIG. 4D, further subordinate in the hierarchy of the Hierarchical Registry432can be non-blocking subscriptions432cof additional consumers. As a general matter, the First Customization Workflow Processors420cas well as the additional consumers can register their respective subscriptions at the Hierarchical Registry432of the Deployment Event Broker430bto receive notifications published by the Deployment Customization Topic433. However, since the First Customization Workflow Processors420cis a blocking consumer, having a First Blocking Subscription431registered at the Hierarchical Registry432of the Deployment Event Broker430b, notifications are published in an ordered sequence according to the hierarchy of the Hierarchical Registry432. For example, the ordered sequence according to the hierarchy of the Hierarchical Registry432can be as follows. first,601consume, via the Deployment Event Broker430b, the First Deployment Customization Event Notification (including the First Notification Payload), when the Deployment Customization Manager Service420bsends the First Deployment Customization Event Notification (including the First Notification Payload) to the Deployment Event Broker430b. Next,602publish according the hierarchy, via the Deployment Customization Topic433of the Deployment Event Broker430b, the First Deployment Customization Event Notification (including the First Notification Payload) to the First Customization Workflow Processor420c, while the First Blocking Subscription432acan block the additional consumer from receiving the First Deployment Customization Event Notification from the Deployment Customization Topic433(and while the First Blocking Subscription432ablocks the additional consumer from receiving any notification from the Deployment Customization Topic433, until after the First Customization Workflow Processor420creplies back to the Deployment Customization Topic433with a Second Deployment Customization Event Notification.) Next,603reply-back, via the First Customization Workflow Processor420c, with the Second Deployment Customization Event Notification (including the Second Notification Payload) to the Deployment Customization Topic433. Next,604publish according to the hierarchy, via Deployment Customization Topic433of the Deployment Event Broker430b, the Second Deployment Customization Event Notification (including the Second Notification Payload) to the additional consumers. Next,605reply-back, via Deployment Customization Topic433of the Deployment Event Broker430b, with the Second Deployment Customization Event Notification (including the Second Notification Payload) to the Deployment Customization Manager Service420b. Accordingly, in light of all of the foregoing, it should be understood that in this example the First Blocking Subscription432aof the First Deployment Customization Workflow Processor420ccan be registered at the Hierarchical Registry432of the Deployment Customization Topic433to provide for the First Deployment Customization Workflow Processor420creceiving The First Deployment Customization Event Notification501from the Deployment Customization Topic433. Additional non-blocking subscriptions432c, for example, corresponding to respective additional non-blocking consumers620,630,640, are registered at the deployment customization topic433. The First Subscription432aof the First Customization Workflow Processor420cis a First Blocking Subscription432aand is registered at the Hierarchical Registry432of the Deployment Customization Topic433to block additional consumers530,540,550,620,630,640, from receiving the First Deployment Customization Event Notification501from the Deployment Customization Topic433. Moreover, in light of all of the foregoing, it should be understood that in this example the First Subscription432aof the First Customization Workflow Processor420ccan be a First Blocking Subscription432aand can be registered at the Hierarchical Registry432of the Deployment Customization Topic433to block additional consumers530,540,550,620,630,640from receiving any Deployment Customization Event Notification until after the First Deployment Customization Workflow Processor420cis to reply back to the Deployment Customization Topic433with the Second Deployment Event Notification. For example, in various different arrangements Second and Third Non-Blocking Subscriptions each corresponding to a respective second and third non-blocking consumer can be registered at the Hierarchical Registry432of the Deployment Customization Topic433.

In the example ofFIG. 8B, in accordance with flowchart of example program800, the Deployment Customization Topic of the Deployment Event Broker publishes the First Deployment Customization Event Notification to the First Deployment Customization Workflow Processor, via the First Blocking Subscription of the First Deployment Customization Workflow Processor (block816.) The First Blocking subscription blocks Additional Consumers from receiving the First Deployment Customization Event Notification (block818.) For example, the Deployment Customization Topic433of the Deployment Event Broker430bpublishes502, according the hierarchy of the Hierarchical Registry432, the First Deployment Customization Event Notification to the First Customization Workflow Processor420c, while the First Blocking Subscription432ablocks the additional consumers from receiving the First Deployment Customization Event Notification from the Deployment Customization Topic433(and while the First Blocking Subscription432ablocks additional consumers from receiving any notification from the Deployment Customization Topic433, until after the First Customization Workflow Processor420creplies back to the Deployment Customization Topic433with the Second Deployment Customization Event Notification.)

In the example ofFIG. 8B, in accordance with flowchart of example program800, the First Deployment Workflow Processor consumes the First Deployment Customization Event Notification (block820.) The First Deployment Workflow Processor customizes the Uncustomized Application Component Properties of the First Payload into Customized Application Component Properties of the Second Payload (block822.) For example, examples of the First and Second Deployment Customization Workflow Processors420c,420din the example ofFIG. 4Bare shown in greater detail inFIG. 4E. in the example ofFIG. 4E, the First Deployment Customization Workflow Processor420ccan include a First Deployment Customization Workflow Communications Manager427ato manage communications with the First Deployment Customization Workflow Processors420c. Additionally, the First Deployment Customization Workflow Processor420ccan include a First Deployment Customization Workflow Execution Unit428ato process the First Deployment Customization Workflow429a. For example, as mentioned previously, the Deployment Customization Topic433of the Deployment Event Broker430bcan publish the First Deployment Customization Event Notification to the First Customization Workflow Processor420c. In response, the First Customization Workflow Processor420ccan: consume the First Deployment Customization Event Notification (including the First Notification Payload); customize the First Notification Payload into the Second Notification Payload; and reply-back to the Deployment Customization Topic433of the Deployment Event Broker430bwith the Second Deployment Customization Event Notification (including the Second Notification Payload.). More particularly, the First Deployment Customization Event Notification can include the First Notification Payload, which can include the Uncustomized Application Component Property. The First Deployment Customization Workflow Processor420ccan process the First Deployment Customization Workflow429ato customize the Uncustomized Application Component Property of the First Notification Payload into the Customized Application Component Property of the Second Notification Payload. As mentioned previously, the Uncustomized Application Component Properties154a, for example can include an Uncustomized Machine Name156a, a reservation for an Uncustomized Internet Protocol (IP) Address158a, and an Uncustomized Resource Allocation159a. As mentioned previously, the forgoing are related to VM's. For example, the Uncustomized Resource Allocation159acan be broadly directed to examples such as Uncustomized Central Processing Unit (CPU) Allocation for VM's, and Uncustomized Memory Allocation for VM's, etc. For example, at least one of the Uncustomized Application Component Properties154aof the First Notification Payload can be customized by the First Deployment Customization Workflow Processor420cinto at least one of the Customized Application Component Properties154bof the Second Notification Payload. More particularly, for example, the Uncustomized Virtual Machine Name156a(for example “foo-machine-name”) of the First Notification Payload can be customized into the Customized Virtual Machine Name156b(for example “my-foo-machine-name”) of the Second Notification Payload. For example, the Uncustomized Virtual Machine Internet Protocol (IP) Address Reservation158a(for example “198.111.111”) can be customized into the Customized Virtual Machine Internet Protocol (IP) Address Reservation158b(for example “198.999.999”). Similarly, for example, at least one Uncustomized Virtual Machine Resource Allocation159aof the First Notification Payload can be customized by the First Deployment Customization Workflow Processor420cinto at least one Customized Virtual Machine Resource Allocation159bof the Second Notification Payload. For example, the Uncustomized Virtual Machine Memory Allocation (for example “4 Gigabytes of Memory”) of the First Notification Payload can be customized into the Customized Virtual Machine Memory Allocation (for example “2 Gigabytes of Memory”) of the Second Notification Payload. For example, the Uncustomized Central Processing Unit (CPU) Allocation (for example “4 CPUs”) of the First Notification Payload can be customized into the Customized Central Processing Unit (CPU) Allocation (for example “2 CPU's”) of the Second Notification Payload. For avoidance of doubt, it should be understood the forgoing are just some examples, and various other examples can likewise be implemented in accordance with this disclosure. For example, it should be understood that the Second Notification Payload can include a mix that can include an Uncustomized Application Component Property in addition to a Customized Application Component Property. For example, the Second Notification Payload can include the Uncustomized Virtual Machine Name156(for example “foo-machine-name”) and Uncustomized Virtual Machine Internet Protocol (IP) Address Reservation158a(for example “198.111.111”) in a mix along with the Customized Virtual Machine Memory Allocation (for example “2 Gigabytes of Memory”) and along with the Customized Central Processing Unit (CPU) Allocation (for example “2 CPU's”)

In the example ofFIG. 8B, in accordance with flowchart of example program800, the First Deployment Workflow Processor generates the Second Deployment Customization Event Notification to include the Second Notification Payload (block824.) For example, the First Deployment Customization Workflow Processor420ccan generate the Second Deployment Customization Event Notification that includes the Second Notification Payload, which includes the Customized Application Component Property. In the example ofFIG. 8B, in accordance with flowchart of example program800, the First Deployment Customization Workflow Processor replies-back to the Deployment Customization Topic with the Second Deployment Customization Event Notification (block826.) For example, the First Deployment Customization Workflow Processor replies-back to the Deployment Customization Topic with the Second Deployment Customization Event Notification. For example, the First Deployment Customization Workflow Processor420ccan reply-back to the Deployment Customization Topic433with the Second Deployment Customization Event Notification603that includes the Second Notification Payload, which includes the Customized Application Component Property.

In the example ofFIG. 8C, in accordance with flowchart of example program800, the Deployment Customization Topic of the Deployment Event Broker publishes the Second Deployment Customization Event Notification to an Additional Consumer (block828.) For example, the Deployment Customization Topic433of the Deployment Event Broker430bpublishes604, according to the hierarchy of the Hierarchical Registry432, the Second Deployment Customization Event Notification (including the Second Notification Payload) to the additional consumer or additional consumers.

In the example ofFIG. 8C, in accordance with flowchart of example program800, the Deployment Customization Topic of the Deployment Event Broker replies-back to the Application Customization Manager with the Second Deployment Customization Event Notification (block830.) The Application Customization Manager consumes the Second Deployment Customization Event Notification (block832.) For example, the Deployment Customization Topic433of the Deployment Event Broker430bcan reply-back605with the Second Deployment Customization Event Notification (including the Second Notification Payload) to the Deployment Customization Manager Service420b. Accordingly, in light of the foregoing discussion, and in light of what is shown in the example ofFIG. 6, it should be understood that after the First Deployment Customization Workflow Processor420creplies-back to the Deployment Customization Topic433with the Second Deployment Event Notification, the Deployment Customization Topic433can reply-back to the Deployment Customization Manager420bwith the Second Deployment Customization Event Notification that includes the Second Notification Payload, which includes the Customized Application Component Property.

The Deployment Customization Manager creates an association between the Application Component and Customized Application Component Property in the database (block834.) The Deployment Customization Manager replaces the association between the Application Component and Uncustomized Application Component Property in the database (block836.) For example, the Deployment Customization Manager420bcan associate the Application Component150with the customized application component property in the Database460b. For example, the Deployment Customization Manager420bcan create an association between the Application Component150and the Customized Application Component Property in the Database460b, in place of an association between the Application Component150and the Uncustomized Application Component Property in the database460b. After executing block836, execution of example program800can end.

Although the example program700ofFIGS. 7A-7Dand the example program800ofFIGS. 8A-8Care described in connection with managing deployment customization of an application for deployment in an application deployment environment of a cloud computing platform provider, the example program700ofFIGS. 7A-7Dand the example program800ofFIGS. 8A-8Cimplemented in accordance with the teachings of this disclosure can be used in a multi-user scenario in which hundreds or thousands of users obtain deployment customization from Cloud Provider110. For example, while manually managing deployment customizations in a manual fashion for such quantities of users would be overly burdensome or near impossible within required time constraints, examples disclosed herein may be used to process deployment customizations using the operations and Deployment Customization Virtual Appliance324to manage deployment customizations and deploy large quantities of virtual machines114and/or containers114ain an efficient and streamlined fashion without burdening and frustrating end users with long customization times to access such virtual machines114and/or containers114a.

FIG. 9is a block diagram of an example processor platform900capable of executing the example machine-readable instructions of the flowchart ofFIGS. 7A-7Dand the flowchart ofFIGS. 8A-8Cto implement the example the Deployment Customization Virtual Appliance324ofFIGS. 4B-4F. The processor platform900of the illustrated example includes a processor912. The processor912of the illustrated example is hardware employing virtualization. For example, the processor912can be implemented by one or more integrated circuits, logic circuits, microprocessors or controllers from any desired family or manufacturer. As already discussed in detail previously herein, the hardware of processor912is virtualized using virtualization such as VMs and/or containers. In the example ofFIG. 9, the Deployment Customization Virtual Appliance324may be implemented by one or more VM's or containers, so as to virtualize the hardware of processor912. In the example ofFIG. 9, the Deployment Customization Virtual Appliance324includes Service Provisioner410b, Deployment Customization Manager Service420b, Deployment Event Broker430b, First Deployment Customization Workflow Processor420c, Second Deployment Customization Workflow Processor420d, Authentication Provider440band Catalog Item Customization and/or Modification Database460b.

The processor platform900of the illustrated example also includes an interface circuit920. The interface circuit920may be implemented by any type of interface standard, such as an Ethernet interface, a universal serial bus (USB), and/or a PCI express interface.

In the illustrated example, one or more input devices922are connected to the interface circuit920. The input device(s)922permit(s) a user to enter data and commands into the processor912. The input device(s) can be implemented by, for example, an audio sensor, a microphone, a keyboard, a button, a mouse, a touchscreen, a track-pad, a trackball, isopoint and/or a voice recognition system.

The processor platform900of the illustrated example also includes one or more mass storage devices928for storing software and/or data. Examples of such mass storage devices928include flash devices, floppy disk drives, hard drive disks, optical compact disk (CD) drives, optical Blu-ray disk drives, RAID systems, and optical digital versatile disk (DVD) drives.

Coded instructions932representative of the example machine readable instructions ofFIGS. 7A-7DandFIGS. 8A-8Cmay be stored in the mass storage device928, in the volatile memory914, in the non-volatile memory916, and/or on a removable tangible computer readable storage medium such as a CD or DVD.

Copending U.S. patent application entitled “Apparatus and Methods to Incorporate External System to Approve Deployment Provisioning”, filed on the same day as the present application, by Boris Savoy, Rostislav Georgiev, Lazarin Lazarov, Ventsyslav Raikov and Ivanka Baneva is hereby incorporated by reference herein in its entirety. Copending U.S. patent application entitled “Methods and Apparatus for Limiting Data Transferred Over the Network by Interpreting Part of the Data as a Metaproperty”, filed on the same day as the present application, by Ventsyslav Raikov, Lazarin Lazarov, Boris Savoy and Rostislav Georgiev is hereby incorporated by reference herein in its entirety.

The various aspects, features and/or implementations as disclosed above can be used alone or in various combinations. Although certain example methods, apparatus and articles of manufacture have been disclosed herein, the scope of coverage of this patent is not limited thereto. On the contrary, this patent covers all methods, apparatus and articles of manufacture fairly falling within the scope of the claims of this patent.