Custom property cluster definition for a graphic user interface

An example method for utilizing custom properties in a user interface may include receiving, by an application configuration window, a custom property cluster definition. The custom property cluster definition may include a workflow configuration. The method may also include generating, by the application configuration window, a plurality of custom properties for a graphic user interface (GUI) based on the custom property cluster definition. The method may further include retrieving, by the application configuration window, a plurality of property values corresponding to the plurality of custom properties using the workflow configuration, and displaying, by the application configuration window, the plurality of custom properties and the corresponding plurality of property values on the GUI.

BACKGROUND

A cloud management system may be used to perform cloud management operations on a cloud system. A generic application blueprint system in the cloud management system may provide an application developer access to the hardware resources required to run an application, enable the application developer to build, deploy, and manage the lifecycle of the application in the cloud system. The cloud management system may support custom properties to allow the application developer to extend various concept models at runtime on demand. The custom properties may be constructed based on custom property definitions that have one-to-one mapping relationships with the custom properties.

In the real world, multiple custom properties, even though having different names, may share a common configuration, and may have the same display style in a graphic user interface. Because of this one-to-one mapping, the application developer needs to repeatedly define multiple almost identical custom property definitions for these custom properties, resulting in tedious, error-prone, and inflexible configuration processes. Furthermore, the multiple tenants in the cloud management system may utilize the same series of custom properties. The one-to-one mapping may require the creating of duplicated custom property definitions for these different tenants.

SUMMARY

System and methods for utilizing custom properties in a user interface is provided. The method may include receiving, by an application configuration window, a custom property cluster definition. The custom property cluster definition may include a workflow configuration. The method may include generating, by the application configuration window, a plurality of custom properties for a graphic user interface (GUI) based on the custom property cluster definition. The method may further include retrieving, by the application configuration window, a plurality of property values corresponding to the plurality of custom properties using the workflow configuration; and displaying, by the application configuration window, the plurality of custom properties and the corresponding plurality of property values on the GUI.

DETAILED DESCRIPTION

FIG. 1illustrates a block diagram of a system configured to utilize custom properties for managing a cloud environment, according to one or more embodiments of the present disclosure. InFIG. 1, the system may include an application configuration client110, an application manager120, and a cloud computing environment140(or “cloud140”). The application manager120may be configured to manage the cloud computing environment140, as well as the one or more deployment environments142,143, and144contained therein. The application manager120may be accessed by one or more application configuration clients110, which may be configured to utilize custom properties in managing applications, deployments, and the cloud computing environment140.

In some embodiments, a “cloud computing environment”, or a “cloud”, may be a network-based, computing architecture that provides shared pools of cloud resources on demand. A “virtual machine cloud computing environment”, or “VM cloud”, may be a cloud computing environment implemented using some virtualized computing resources. The cloud140may contain, among other components, one or more virtual machines (VMs) and physical machines (all of which are not shown inFIG. 1). The application manager120may be responsible for managing the cloud140, and implementing various cloud functionalities such as resource pooling, resource allocating, high-availability, and automation etc. In some embodiments, the cloud140may be constructed using products such as VMWARE® vCloud. The application manager120may be implemented using a VMWARE vRealize Suite.

In some embodiments, the application manager120may construct a cloud140by creating one or more VMs, and implement in the cloud140cloud-based functionalities such as VM high-availability, VM load-balancing, VM resource distributions, etc. The VMs may be created based on one or more physical machines having various “physical hardware components”, such as, without limitation, one or more physical Central Processing Units (CPUs), physical memory, physical storage (e.g., hard drive), physical Network Interface Card (NIC), and/or additional electronic circuit components. The physical machines may include a “hypervisor” to construct one or more “virtual hardware components” for VMs, based on their physical hardware components. The virtual hardware components, which may include, without limitation, one or more virtual CPUs, virtual memory, virtual storage, virtual NIC, and/or additional virtual components, may be configured to emulate the behaviors and the computing capabilities of the physical hardware components. Thus, the hypervisor may allow the VMs to function as if they were physical machines. Further, the application manager120may pool all the resources in the VMs together to form “virtual computing resources” in the cloud140.

In some embodiments, the cloud140may be used to implement one or more deployment environments142,143, and144for deploying an application. An “application” may refer to any software application and package that need to be designed, developed, tested, installed, configured, and/or executed in the cloud140. A “deployment environment” may refer to a relatively independent/isolated environment having a set of physical machines, VMs, and configurations, and allowing the application to be developed, tested, and/or executed without being interfered by other environments. As depicted inFIG. 1, the application manager120may configure in the cloud140a development deployment environment142, a testing and staging deployment environment143, and a production deployment environment144for a specific application.

In some embodiments, the application manager120may utilize a cloud broker141to access and manage the cloud140and the deployment environments142,143, and144contained therein. A “cloud broker” may be an application or module tailored to a specific cloud, and configured to perform various tasks in view of the specific cloud's customized implementation and configurations. For example, the cloud broker141may be configured to manage application deployment in the cloud140. In other words, the cloud broker141may provide a communication interface through which application manager120may interact with the cloud140. The application manager120may interact with the cloud broker141via Representational State Transfer (REST) Application Programming Interface (API) or any other client-server communication protocols. For example, the application manager120may utilize a VMWARE vCloud Director REST API to communicate with the cloud broker141.

In some embodiments, the cloud broker141may be implemented as a component or service of the cloud140. In other words, the cloud broker141may be operating within the cloud140's environment. Alternatively, the cloud broker141may be implemented as an application or service external to the cloud140. In this case, the cloud broker141may be located at a third-party system, acting as a cloud service customer of the cloud140, and may interact with the cloud140using network communications. In addition, the cloud broker141may also be installed as an internal component of the application manager120.

In some embodiments, the application configuration client110may be an interfacing, managing, and communicating application installed on a client computer (e.g., a personal computer or workstation). Specifically, the application configuration client110may display one or more application windows111to interact with users. The application configuration client110may contain software modules to perform functionalities related to custom properties, custom property definitions116, blueprint113, and/or deployment plan114. The application configuration client110may communicate with the application manager120, as well as access and manage the cloud140via the application manager120. The application configuration client110may interact with the application manager120via Transmission Control Protocol/Internet Protocol (TCP/IP), Hypertext Transfer Protocol (HTTP), or any other network communication means. Alternatively, the application configuration client110may be implemented as a software/hardware module executing directly on the application manager120. In some embodiments, the application configuration client110may be implemented using a VMWARE vSphere client.

In some embodiments, the application developer may utilize the application configuration client110to display and configure a blueprint113for an application, generate a deployment plan114based on the blueprint113, and transmit the generated deployment plan114to the application manager120for deployment. Specifically, the application manager120may include multiple hardware/software modules such as, without limitations, a deployment director121and a workflow engine123. The application configuration client110may transmit one or more deployment-related client requests to the deployment director121for processing. The application configuration client110may also transmit one or more workflow-related client requests to the workflow engine123for retrieving information from the cloud140.

In some embodiments, the application manager120may receive one or more client requests, requesting the performing of certain deployment operations on a specific application in the cloud140. The application manager120may implement a blueprint deployment approach to fulfill the client requests. A “blueprint”113for the application may include a logical topology of virtual/physical computing resources and application components associated with the deployment of the application. In addition, a blueprint113may be an abstract representation of the deployment environment for the application, including virtual/physical machines, application components corresponding to the application, operating systems, services, dependencies, and configurations. A blueprint113may be used in the repeated deployments of the application in multiple and possibly diverse deployment environments.

In some embodiments, the blueprint113may include a set of application components associated with the application to be deployed. “Application components” may include application-specific binaries, scripts, or processes packaged in file-formats, all of which may be executed to perform the functionalities of the application. Examples of the types of application components include Java Archive (JAR) files, Java Enterprise Archive (EAR) files, Java web application archive (WAR) files, Ruby Gems packages, SQL scripts, and other suitable modules of scripting logic. Further, the blueprint113may include hardware infrastructure that can support the execution of the application. Examples of the hardware infrastructure include VMs, physical machines, application servers, database servers, monitoring services, web servers, and any hardware resources that can be provisioned from the cloud140. The hardware infrastructure in the blueprint113may be in the form of one or more nodes, each of which may represent a unit of virtual/physical computing resource in the cloud140. The application components in the blueprints113may be assigned to these nodes, indicating that these application components shall be installed and executed on these nodes during the deployment process.

In some embodiments, the application developer may initiate a deployment process to deploy the application to a specific deployment environment (e.g., the deployment environment142,143, or144). The application configuration client110may display a blueprint113. The application developer may utilize the application configuration client110to construct and/or configure a deployment plan114based on a blueprint113. While the blueprint113may provide a component-oriented view of the application topology, the deployment plan114may provide a step-oriented view of the application topology defined in the blueprint113that depicts time dependencies between tasks to deploy the application components in a particular order.

In some embodiments, the deployment plan114generated by the application window111may include a set of deployment settings (e.g., virtual computing resources' cluster size, CPU, memory, networks) derived from the blueprint113, as well as an execution plan of tasks having a specified order in which virtual computing resources are provisioned, and application components are installed, configured, and started. A “task” may be a specific operation (such as creation, installation, configuration) that can be implemented based on an executable program or script. For example, a task associated with an application component may be implemented using a computing script comprised of one or more lines of scripting logic that, when executed by a virtual machine on which the application component is hosted, perform operations for an application lifecycle stage (e.g., install, configure, start, stop, upgrade, migrate, etc.). A task may also include requesting installation via a package manager, setting environmental variables, launching runtimes, checking configurations, and other commands.

In some embodiments, in response to client requests from the application configuration client110, the application manager120may utilize the deployment director121to execute the deployment plan114. Specifically, the deployment director121may be configured to select a deployment environment (e.g., deployment environment142) from a listing of available deployment environments in the cloud140. Afterward, the deployment director121may execute the deployment plan114and deploy the application to the selected deployment environment in the cloud140by communicating with the cloud broker141of the cloud140.

In some embodiments, as specified by the deployment plan114, the deployment director121may provision and configure a set of VMs in the deployment environment142. Afterward, the deployment director121may provide a series of tasks specific to each of the VMs (a “local deployment plan”) in the deployment environment142. For example, the tasks may be scripts that are executed by VMs to install, configure, and/or start one or more application components. The deployment director121may coordinates with VMs to execute the tasks in an order that observes installation dependencies between VMs according to the deployment plan114. After the deployment director121completes all the tasks in the deployment plan114, the application may be been deemed deployed to the production deployment environment142in the cloud140.

In some embodiments, the application configuration client110may allow an application developer to define one or more custom properties for displaying as GUI elements on an application window111. A “GUI element” may refer to any graphic element that can be displayed on the application window111. Examples of GUI elements may include text-input field, drop-down list, button, menu, etc. Some GUI elements may provide a user interaction interface, through which a user may provide user inputs via keyboard or mouse. For example, a user may select one of the multiple choices provided by a drop-down list, and the selected choice may be deemed a user input. A “custom property” may refer to a property that is not originally associated with a set of information (e.g., a blueprint113), but can be dynamically and subsequently added to the set of information as a customization. After being created, the custom property may be displayed on the application window111in the form of a custom GUI element which is not originally being displayed.

For example, a blueprint113may not include a property associated with a storage policy in the cloud140. As a result, the application window111for displaying the blueprint113may not show a GUI element that allows a user to input/select a storage policy for generating the deployment plan114. To allow such functionality, an application developer may create/add in the blueprint113a custom property118(e.g., “StoragePolicy”), or a custom property definition116for the configuration of a single custom property118. Based on this custom property118or custom property definition116, the application configuration client110may display a drop-down GUI element112on the application window111, and provide a user multiple storage policy choices in this drop-down GUI element112. The user may use a mouse to activate and select from this drop-down GUI element112a specific choice as a storage policy user-input.

In some embodiments, during the configuration of a deployment plan114based on the blueprint113, the application developer may face a series of custom properties with different labels but similar GUI styles and functionalities. For example, the deployment plan114may require a specific storage policy for each hard drive in the cloud140. If the deployment plan114includes hundreds of hard drives, then the application developer may need to construct hundreds of custom properties based on the blueprint113. Rather than creating hundreds of custom property definitions116each of which is one-to-one mapped to (and used for creating) a corresponding custom property, the blueprint113may utilize a custom property cluster definition116for the configuration of these multiple similar custom properties.

In some embodiments, a custom property definition116may be for defining a single custom property118, or for defining a custom property cluster117. For clarification purposes, when defining a custom property118, the custom property definition116may be referred to as a “single custom property definition”. When defining a custom property cluster117, the custom property definition116may be referred to as a “custom property cluster definition.” Thus, the single custom property definition may have a one-to-one mapping with a custom property, and the custom property cluster definition may have a one-to-many mapping with multiple custom properties.

In some embodiments, the application developer may add a custom property into the blueprint113by referencing a property identifier (e.g., a unique number or string) that can be used to identify a specific custom property or a specific custom property definition116associated with the custom property. The application configuration client110may maintain a list of custom properties, and/or custom property definitions116for all the custom properties used by the application configuration client110, and may retrieve a specific custom property or custom property definition116based on a property identifier. Alternatively, the application manager120and/or the cloud140may be configured to maintain the list of custom properties and/or the list of custom property definitions116, and the application configuration client110may communicate with the application manager120to retrieve a specific custom property or custom property definition116based on the property identifier.

In some embodiments, to display the blueprint113, the application configuration client110may extract one or more property identifiers from the blueprint113, and retrieve the custom properties and/or the custom property definitions116based on these property identifiers. Afterward, the application configuration client110may process each of the custom properties and/or custom property definitions116to determine how to generate the GUI elements.

In some embodiments, if the application configuration client110determines that a specific property identifier is associated with a custom property, the application configuration client110may retrieve a custom property definition116corresponding to this custom property. In addition, if the retrieved custom property definition116is a single custom property definition, the application configuration client110may generate a single GUI element112for displaying on the application window111. Alternatively, if the application configuration client110determines that a specific property identifier is associated with a single custom property definition, then the application configuration client110may generate a one-to-one mapping custom property, and generate a single GUI element112for displaying on the application window111.

In some embodiments, if the application configuration client110determines that a specific property identifier is associated with a custom property, and the custom property corresponds to a custom property cluster definition, then the application configuration client110may retrieve corresponding configurations associated with the custom property, and generate a single GUI element112for displaying on the application window111. Alternatively, if the application configuration client110determines that a specific property identifier is associated with a custom property cluster definition, then the application configuration client110may generate multiple custom properties, as well as a corresponding number of GUI elements112for displaying on the application window111.

In some embodiments, a custom property cluster definition116may have an “enumeration cluster type” and a “parameterization cluster type.” When the custom property cluster definition116has an enumeration cluster type, the custom property cluster definition116may contain a fixed list of custom property choices. In this case, the application configuration client110may generate one or more custom properties based on the custom property choices enumerated in the custom property cluster definition116, and construct a same number of GUI elements112as these one or more custom properties.

In some embodiments, if the custom property cluster definition116has a parameterization cluster type, the custom property cluster definition116may contain a “cluster parameter” and a “property pattern”, which may be used to generate a dynamic number of custom properties. Specifically, the application configuration client110may retrieve from the application manager120a set of parameter values (as a list such as [1, 2, 3], or a value range such as [>=1 & <=3]) based on the cluster parameter. Afterward, the application configuration client110may combine each of the parameter values with the property pattern (or apply the property pattern to each of the parameter values), and generate a set of custom property choices. Afterward, the application configuration client110may generate custom properties based on the custom property choices, and construct a same number of GUI elements112as these one or more custom properties.

In some embodiments, the custom property cluster definition116may have, among other configurations, a workflow configuration for generating the details corresponding to one or more custom properties. The workflow configuration may include workflow logics as well as input parameters. The application configuration client110may transmit the workflow configuration of the custom property definition116to the workflow engine123of the application manager120. Upon receiving the workflow configuration, the workflow engine123may extract the workflow logics as well as the input parameters from therein, and execute the workflow logics using the input parameters for input. The outputs from the workflow engine123may be deemed a set of property values, which may be used to populate the details of the custom properties.

In some embodiments, the workflow engine123may interact with the cloud broker141to extract information from the cloud140. For example, the workflow engine123may invoke relevant cloud services provided by the cloud140via the cloud broker141, in order to retrieve a list of storage policies that are configured in the deployment environment143. The workflow engine123may return the retrieved list of storage policies to the application configuration client110as a set of property values. If the application configuration client110is to generate a custom property based on a single custom property definition116, the application configuration client110may create a GUI element112(e.g., a drop-down list) for the application window111, and use the list of storage policies received from the application manager120as property choices for the GUI element112. Likewise, if the application configuration client110is to generate a set of custom properties based on a custom property cluster definition116, the application configuration client110may create one custom property at a time, retrieve a corresponding set of property values for this custom property based on the workflow configuration, and construct a GUI element112for the custom property using the corresponding set of property values. The application configuration client110may repeat the above process till finished creating all the custom properties.

In some embodiments, the custom property cluster definition116may include, among other configurations, a label configuration for generating a display name (or display label) for the GUI element112in the application window111. Specifically, if the application configuration client110is to generate a set of display labels based on a custom property cluster definition116, then for each custom property generated, the application configuration client110may create a display label by applying the label configuration to one of the parameter values (as discussed above) that is associated with the custom property.

In some embodiments, after the custom properties and the GUI elements112are constructed, the application configuration client110may display the GUI elements112in an application window111. A user may interact with the GUI elements112in the application window111, and input/select a specific value for each of the GUI elements112. The application configuration client110may store the user inputs into the custom properties, and use the user inputs to generate the deployment plan114. For example, a custom property “StoragePolicy” may be shown as a GUI element112. A user may select a “High IO shares allocation” value as a user input for the GUI element112and the custom property. The application configuration client110may store this user input in this custom property “StoragePolicy”, and may use this user input in the deployment plan114.

Thus, by utilizing the custom property cluster definition, an application developer may configure one custom property cluster definition for a series of custom properties. Further, a custom property cluster definition may be used as a global concept in the cloud140, and can be shared among multiple tenants of the cloud140. Also, different custom properties belonging to different context may be generated based on a single workflow configuration.

FIG. 2illustrates multiple GUI windows configured to manage and display custom properties, according to one or more embodiments of the present disclosure. InFIG. 2, an application configuration client may utilize a window210to configure a custom property cluster definition. The window230may be used for displaying the custom properties that are configured based on a custom property cluster definition.

In some embodiments, a custom property cluster definition created in window210may be illustrated in the Example 1 ofFIG. 4or Example 2 ofFIG. 5. Besides a definition name, each custom property cluster definition may have a “cluster type”, which may be enumeration, parameterization, or any other cluster type. An enumeration cluster type indicates that the custom property cluster definition may include a series of discrete “custom property choices.” A parameterization cluster type may be used to create custom properties that are related to one or more “cluster parameters” and one “property pattern.” Specifically, a “cluster parameter” may refer to a specific keyword for identifying a relevant piece of information. And a “property pattern” may be a predefined string embedded with one or more cluster parameters.

The custom property cluster definition in Example 1 as illustrated inFIG. 4may have an “Enumeration” cluster type, and may include two custom property choices: “VM.Home.StoragePolicy” and “VM.Disks.StoragePolicy.” Thus, an application configuration client may create one or two custom properties by selecting one or two of these custom property choices. The two created custom properties may be named “VM.Home.StoragePolicy” and “VM.Disks.StoragePolicy”, and may have a “String” data type. Further, the two custom properties may have a “global” visibility, indicating they may be visible and used throughout the cloud104. Further, if the blueprint contains a property identifier for the custom property (e.g., “VM.Home.StoragePolicy”), and the application configuration client determines that this custom property is defined in a custom property cluster definition as shown in Example 1, then the application configuration client may select one of the two custom property choices in Example 1 (e.g., selecting “VM.Home.StoragePolicy”), and utilize the configurations associated with this custom property choice to create a GUI element.

In some embodiments, the application configuration client may construct two drop-down GUI elements for these two custom properties, based on the “Display as” configuration in the custom property cluster definition. The application configuration client may fill the drop-down GUI element for custom property VM.Home.StoragePolicy, with “External Values” obtained via “External Workflow.” In other words, the custom property cluster definition may have a workflow configuration which contains workflow logics (e.g., com.vmware.library/getStoragePolicies) and input parameters as shown under “External Workflow Inputs.” Thus, the application configuration client may invoke the workflow engine of an application manager by passing the workflow configuration along with an input parameter “custom Property” that is filled with the value “VM.Home.StoragePolicy.”

Afterward, the application configuration client may receive a set of property values generated by the workflow engine processing the workflow configuration. The received set of property values may be used as “external values” to fill the drop-down GUI elements associated with the custom property “VM.Home.StoragePolicy.” Likewise, the application configuration client may perform the above process one more time to fill the second drop-down GUI element for custom property “VM.Disks.StoragePolicy.”

The custom property cluster definition in Example 1 as illustrated inFIG. 4may have a label configuration for generating display labels for the GUI elements. Based on the “Label mapping” in the custom property cluster definition, the application configuration client may generate two display labels for the two GUI elements that are associated with the two custom properties. Specifically, the application configuration client may generate a display label “VM Home Storage Policy” for the first GUI element that is associated with the first custom property “VM.Home.StoragePolicy”, and generate a display label “VM Disks Storage Policy” for the second GUI element that is associated with the second custom property “VM.Disks.StoragePolicy.”

The custom property cluster definition in Example 2 as illustrated inFIG. 5may have a “Parameterization” cluster type, and may include a dynamic number of custom property choices that is generated based on one or more “Cluster Parameters” and “Property Pattern.” In this case, the cluster parameter may be disk_number, which may be the corresponding numbers for all the disks in a deployment environment or in a cloud140. For example, during the generating of the deployment plan based on a blueprint, the application configuration client may interact with the application manager to retrieve the numbers for all the physical disks in a deployment environment in the cloud. The application configuration client may treat the retrieved disk numbers as “parameter values”, and use these parameter values to dynamically generate a set of custom property choices based on the property pattern. Afterward, the application configuration client may create a number of custom properties based on this set of custom property choices.

For example, the application configuration client may receive from the application manager a set of disk numbers (e.g., “0”, and “1”). This set of disk numbers may be applied to the property pattern “VM.Disk{disk_number}.StoragePolicy”, resulting custom property choices “VM.Disk0.StoragePolicy” and VM.Disk1.StoragePolicy.” Based on these two custom property choices, the application configuration client may create two corresponding custom properties and two corresponding GUI elements.

As shown inFIG. 2's window230, the application configuration client may construct two drop-down GUI elements231for these two custom properties, based on the “Display as” configuration in the custom property cluster definition. The application configuration client may fill the drop-down list235of the GUI element231for custom property VM.Disk0.StoragePolicy, with “External Values” obtained via “External Workflow.” In other words, the custom property cluster definition may have a workflow configuration which contains workflow logics (com.vmware.library/getStoragePolicies) and input parameters as shown under “External Workflow Inputs.”

In some embodiments, the application configuration client may invoke the workflow engine of an application manager by passing the workflow configuration along with an input parameter “diskNumber” that is filled with disk number “0”. Afterward, the application configuration client may receive a set of property values generated by the workflow engine processing the workflow configuration. The received set of property values may be used as “external values” to fill the drop-down list235associated with the custom property “VM.Disk0.StoragePolicy.” Afterward, the application configuration client may perform the above process one more times to fill the drop-down GUI elements for custom properties “VM.Disk1.StoragePolicy.”

The custom property cluster definition in Example 2 as illustrated inFIG. 5may have a label configuration for generating display labels for the GUI elements. Specifically, the label configuration contains a pattern (“Disk {disk_number} Storage Policy) that can be filled with a cluster parameter (e.g., disk_number). Based on this label configuration, the application configuration client may generate two display labels233for the two GUI elements that are associated with the two custom properties. Specifically, the application configuration client may generate a first display label “Disk 0 Storage Policy” for the first GUI element that is associated with the first custom property “VM.Disk0.StoragePolicy”, and generate a second display label “Disk 1 Storage Policy” for the second GUI element that is associated with the second custom property “VM.Disk1.StoragePolicy.”

FIG. 3shows a flow diagram illustrating a process to utilize custom properties in a graphic user interface, according to one or more embodiments of the present disclosure. The processes301may set forth various functional blocks or actions that may be described as processing steps, functional operations, events, and/or acts, which may be performed by hardware, software, and/or firmware. Those skilled in the art in light of the present disclosure will recognize that numerous alternatives to the functional blocks shown inFIG. 3may be practiced in various implementations.

At block310, an application configuration window for managing a cloud environment via an application manager may receive a blueprint for deploying an application in the cloud environment. The blueprint may include at least one custom property identifier.

At block320, the application configuration window may retrieve a custom property cluster definition based on the custom property identifier. The custom property cluster definition may include a label configuration and a workflow configuration.

At block330, the application configuration window may generate a plurality of custom properties for a graphic user interface (GUI) based on the custom property cluster definition. In some embodiments, the custom property cluster definition may have an enumeration cluster type and include a plurality of custom property choices. In this case, the application configuration window may generate the plurality of custom properties based on one or more custom property choices selected from the plurality of custom property choices.

In some embodiments, the custom property cluster definition may have a parameterization cluster type and include a cluster parameter and a property pattern. In this case, the application configuration window may generate the plurality of custom properties by retrieving a plurality of parameter values based on the cluster parameter. Afterward, the application configuration window may generate a plurality of custom property choices by applying the plurality of parameter values to the property pattern, and generate the plurality of custom properties based on the plurality of custom property choices.

At block340, the application configuration window may retrieve a plurality of property values corresponding to the plurality of custom properties using the workflow configuration in the custom property cluster definition. Specifically, the application configuration window may transmit the workflow configuration to a workflow engine. The workflow engine may be configured to interact with a cloud broker of a cloud environment, and generate the plurality of property values by communicate with the cloud broker to execute workflow logics contained in the workflow configuration.

At block350, the application configuration window may display the plurality of custom properties and the corresponding plurality of property values on the GUI. Specifically, for each custom property in the plurality of custom properties, the application configuration window may generate a corresponding display label for displaying on the GUI using the label configuration in the custom property cluster definition. In some embodiments, the application configuration window may generate the corresponding display label by applying the label configuration to a parameter value retrieved based on a cluster parameter defined in the custom property cluster definition. In other words, the label configuration may contain a property pattern, and the application configuration window may integrate the parameter value into the property pattern to generate the display label.

In some embodiments, the application configuration window may display the plurality of property values along with the displaying of the plurality of custom properties. Further, the application configuration window may display the display labels along with the displaying of the plurality of custom properties.

At block360, the application configuration window may receive user inputs associated with the displayed plurality of custom properties, and may store the user inputs received from the GUI to the plurality of custom properties. Further, the application configuration window may generate a deployment plan for the application based on the plurality of custom properties and the user inputs.

Thus, systems and methods for utilizing custom properties in a user interface have been disclosed. The various embodiments described herein may employ various computer-implemented operations involving data stored in computer systems. For example, these operations may require physical manipulation of physical quantities usually, though not necessarily, these quantities may take the form of electrical or magnetic signals where they, or representations of them, are capable of being stored, transferred, combined, compared, or otherwise manipulated. Further, such manipulations are often referred to in terms, such as producing, identifying, determining, or comparing. Any operations described herein that form part of one or more embodiments of the disclosure may be useful machine operations.

In addition, one or more embodiments of the disclosure also relate to a device or an apparatus for performing these operations. The apparatus may be specially constructed for specific required purposes, or it may be a general purpose computer selectively activated or configured by a computer program stored in the computer. In particular, various general purpose machines may be used with computer programs written in accordance with the teachings herein, or it may be more convenient to construct a more specialized apparatus to perform the required operations. The various embodiments described herein may be practiced with other computer system configurations including hand-held devices, microprocessor systems, microprocessor -based or programmable consumer electronics, minicomputers, mainframe computers, and the like.

In addition, while described virtualization methods have generally assumed that virtual machines present interfaces consistent with a particular hardware system, persons of ordinary skill in the art will recognize that the methods described may be used in conjunction with virtualizations that do not correspond directly to any particular hardware system. Virtualization systems in accordance with the various embodiments, implemented as hosted embodiments, non-hosted embodiments, or as embodiments that tend to blur distinctions between the two, are all envisioned. Furthermore, various virtualization operations may be wholly or partially implemented in hardware. For example, a hardware implementation may employ a look-up table for modification of storage access requests to secure non-disk data.