Enhanced configuration and property management system

Embodiments of the invention are directed to systems, methods and computer program products for creating and managing a virtual operating environment on a physical machine connected to a distributed network, the virtual operating environment is virtualized by the physical machine. The invention may categorize the virtual operating environment using a tiered data structure, where each tier of the tiered data structure defines an attribute for categorizing the virtual operating environment. The invention generates a graphical representation of the tiered data structure for display via a user computing device that enables a user to communicate requests for causing the virtual operating environment to perform a function and communicates commands to the physical machine based on receiving such requests. The invention may additionally update the graphical representation after the virtual operating environment has executed the function.

FIELD OF THE INVENTION

The invention is directed to systems, methods and computer program products for creating and managing a virtual operating environment on a physical machine connected to a distributed network, the virtual operating environment being virtualized by the physical machine.

BACKGROUND

A physical computing device may be configured to simulate a virtualized machine where the virtualized machine utilizes hardware resources of the physical machine to operate. There exists a need for organizing and controlling virtualized machines over a network environment and creating new virtualized machines based on loading factors.

BRIEF SUMMARY

Embodiments of the invention are directed to systems, methods, and computer program products to create a virtual operating environment, wherein the virtual operating environment is hosted on a physical machine accessible via a distributed network, wherein the physical machine is configured to receive operational commands over the distributed network for controlling the virtual operating environment, wherein the virtual operating environment is virtualized by the physical machine, and wherein the virtual operating environment accesses hardware components of the physical machine to perform at least one preconfigured function.

In some embodiments, the invention is further configured to categorize the virtual operating environment using a tiered data structure, wherein each tier of the tiered data structure defines an attribute for categorizing the virtual operating environment, wherein each tier of the multiple tiered data structure may comprise one or more sub-tiers, thereby forming a parent/child relationship, wherein the sub-tier is associated with the attribute of each parent tier, wherein categorizing the virtual operating environment comprises assigning the virtual operating environment to a selected tier of the tiered data-structure such that the virtual operating environment is defined by the attribute of the selected tier and attributes of each parent tier of the selected tier.

In other embodiments, the invention is further configured to generate a graphical representation of the tiered data structure for display via a user computing device, wherein the graphical representation of the tiered data structure illustrates at least each of the tiers of the tiered data structure in a hierarchal format, and illustration of the physical machine displayed under at least one of the tiers of the tiered data structure, and an illustration of the virtual operating environment displayed under the illustration of the physical machine, wherein the illustration of the virtual operating environment enables a user to communicate an operational request to cause the virtual operating environment to perform a function associated with the operational request, wherein the illustration of the virtual operating environment comprises an operational status of the virtual operating environment.

While yet in other embodiments, the invention is further configured to communicate a command to the physical machine for causing the virtual operating environment to perform the function associated with the operational request based on the user interacting with the illustration of the virtual operating environment of the graphical representation of the tiered data structure.

Based on the virtual operating environment executing the function associated with the operational request, the invention may be configured to receive, from the virtual operating environment, an updated status, and update the illustration of the virtual operating environment based on receiving the updated status.

In other embodiments of the invention, the invention may be configured to receive authentication information of the user and validate the authentication information of the user, and where the invention is configured to communicate the command to cause the virtual operating environment to perform a function, communicating the command is further based on validating the authentication information of the user.

In some embodiments the function associated with the operational request may be at least one of a command to shut down the virtual operating environment, a command to startup the virtual operating environment, and a command to reboot the virtual operating environment.

In other embodiments, the illustration of the physical machine accessible via the distributed network enables the user to communicate a second request to perform at least one command to control the physical machine, and wherein the illustration of the physical machine displays a status of the remote machine.

In some embodiments, the invention may be further configured to receive the second request to perform the at least one command for controlling the physical machine based on the user interacting with the illustration of the physical machine; communicate an instruction to the physical machine, thereby causing the remote machine to execute a function associated with the at least one command to control the physical machine; and update the illustration of the physical machine.

While in other embodiments, the invention may be configured to identify a second virtual operating environment; determine that the second virtual operating environment operates in tandem with the virtual operating environment; receive a request to startup the second virtual operating environment; determine that the virtual operating environment is not running; communicate a command to the physical machine causing the virtual operating environment to startup; determine that the virtual operating environment is running; and communicate causing the second virtual operating environment to startup.

Additionally, the invention may be configured to identify that the virtual operating environment has experienced an error; and update the illustration of the virtual operating environment based on identifying the virtual operating environment has experienced an error.

While in other embodiments the invention is configured to create a plurality of copies of the virtual operating environment, wherein at least one of the plurality of copies of the virtual operating environment is a testing environment, and wherein at least one of the plurality of copies of the virtual operating environment is a production environment.

In yet further embodiments, the invention is further configured to create a trigger for communicating at least one of the operational commands to the physical machine; and communicate the at least one command of the list of commands based on an occurrence of the trigger and wherein the occurrence of the trigger is based on at least one of an occurrence of a predetermined period of time, and receiving a computer generated instruction over the distributed network.

The features, functions, and advantages that have been discussed may be achieved independently in various embodiments of the present invention or may be combined with yet other embodiments, further details of which can be seen with reference to the following description and drawings. Additionally, as will be appreciated by one of ordinary skill in the art, the features, functions, and advantages that have been discussed may include and/or be embodied as an apparatus (including, for example, a system, machine, device, computer program product, and/or the like), as a method (including, for example, a business method, computer-implemented process, and/or the like), or as any combination of the foregoing.

DETAILED DESCRIPTION OF EMBODIMENTS OF THE INVENTION

In some embodiments, an “entity” may refer to a business entity that is either maintaining or acting on behalf of an entity maintaining one or more databases for monitoring and housing data. For example, in exemplary embodiments, an entity may be a financial institution, or one or more parties within the financial institution. For the purposes of this invention, a “financial institution” may be defined as any organization, entity, or the like in the business of moving, investing, or lending money, dealing in financial instruments, or providing financial services. This may include commercial banks, thrifts, federal and state savings banks, savings and loan associations, credit unions, investment companies, insurance companies and the like. In some embodiments, the entity may allow a customer to establish an account with the entity. An “account” may be the relationship that the customer has with the entity. Examples of accounts include a deposit account, such as a transactional account (e.g., a banking account), a savings account, an investment account, a money market account, a time deposit, a demand deposit, a pre-paid account, a credit account, a non-monetary customer profile that includes only personal information associated with the customer, or the like. The account is associated with and/or maintained by the entity. In other embodiments, an entity may not be a financial institution. In still other embodiments, the entity may be the merchant itself.

In some embodiments, the “user” or “client” in the context of this case may be a system or a computer user.

Referring toFIG. 1, a network environment is illustrated in accordance with embodiments of the present invention. As illustrated inFIG. 1, the host control system102is operatively coupled via a network110to the user computing device140and/or a repository106. In this configuration, the host control system102may send information to and receive information from the user computing device140and/or the repository106. Additionally, the user computing device140may send and receive information directly from the repository106. The host control system102may be or include communication interfaces142.FIG. 1illustrates only one example of an embodiment of a network environment100, and it will be appreciated that in other embodiments one or more of the systems, devices, or servers may be combined into a single system, device, or server, or be made up of multiple systems, devices, or server.

The network110may be a global area network (GAN), such as the Internet, a wide area network (WAN), a local area network (LAN), a telecommunication network or any other type of network or combination of networks. The network110may provide for wire line, wireless, or a combination wire line and wireless communication between devices on the network110.

As illustrated inFIG. 1, the host control system102generally comprises a communication device142, at least one processor144, and a memory device146. As used herein, the term “processor” or “processing device” generally includes circuitry used for implementing the communication and/or logic functions of the particular system. For example, a processing device may include a digital signal processor device, a microprocessor device, and various analog-to-digital converters, digital-to-analog converters, and other support circuits and/or combination of the foregoing. Control and signal processing functions of the host control system102are allocated between these processing devices according to their respective capabilities. The processing device may include functionality to operate one or more software programs based on computer readable instructions thereof, which may be stored in a memory device.

The processor144is operatively coupled to the communication interface142to communicate with the network101and other devices on the network101. As such, the communication interface142generally comprises a modem, server, or other device for communicating with other devices on the network101.

As further illustrated inFIG. 1, the host control system102comprises a control application160. The control application160may perform one or more of the steps and/or sub-steps discussed herein and/or one or more steps not discussed herein. For example, in some embodiments, the control application160may generate a graphical representation of a business structure.

As illustrated inFIG. 1, the user computing device140generally comprises a communication interface130, a processor132, and a memory device134. The processor132is operatively coupled to the communication device130and the memory device134. In some embodiments, the processing device132may send or receive data from the user computing device140, to the host control system102via the communication device130over a network101. As such, the communication device130generally comprises a modem, server, or other device for communicating with other devices on the network101.

As further illustrated inFIG. 1, the user computing device140comprises a client application136which is executable by the processor132. In the embodiment illustrated inFIG. 1, the client application136allows the user computing device140to be linked to the host control system102to communicate, via a network101. The client application136may also allow the user computing device140to connect directly (i.e. locally or device to device) with the repository106for sending and receiving information. The client application136may perform one or more of the steps and/or sub-steps discussed herein and/or one or more steps not discussed herein. For example, in some embodiments, the client application136may enable a user to interact with a graphical representation to communicate a request to the host control system102for causing a virtual operating environment to perform a function.

As further illustrated inFIG. 1, multiple virtualization host machines180are connected to the network110. Each remote host machine may be a computing device capable of executing virtualization software190for creating, updating, and maintaining a virtual operating environment. The multiple virtualization host machines180are configured to communicate with the host control system102to receive instructions from the host control system102for causing a virtual operating to execute a function.

As further illustrated inFIG. 1, the repository106comprises computer readable instructions for creating and setting up a virtual operating environment, known as packages. In some embodiments, the repository106may act as a version management system. Where the repository106stores packages, the database may store versions of the package for updating the virtual operating environment. The repository106is connected to the network110and the repository106is configured to communicate with other devices over the network110.

Any of the features described herein with respect to a particular process flow are also applicable to any other process flow. In accordance with embodiments of the invention, the term “module” with respect to a system may refer to a hardware component of the system, a software component of the system, or a component of the system that includes both hardware and software. As used herein, a module may include one or more modules, where each module may reside in separate pieces of hardware or software.

Referring now toFIG. 2A, a diagram of a virtualization host machine180is presented in accordance with various embodiments of the present invention. The host comprises at least one processor182, a communication interface184, and a memory device186. The processor182is operatively coupled to the communication interface184and the memory186. The processor182is operatively coupled to the communication interface184to communicate with the network101and other devices on the network101. As such, the communication interface184generally comprises a modem, server, or other device for communicating with other devices on the network101.

In some embodiments, the memory device186of the virtualization host machine180comprises a virtualization application188, and a virtual operating environment190. The virtualization application188causes the processor182to receive instructions from the host control system102for creating, upgrading, and maintaining a virtual operating environment190. The virtualization application188further instructs the processor182to allocate hardware resources (e.g. processing power, and memory) to the virtual operating environment190. Further, the virtualization application188causes the processor182to communicate with the host control system102to receive instructions on causing the virtual operating environment190to perform a function.

The virtual operating environment190comprises at least an allocated memory192which further comprises virtual operating instructions194, and a preconfigured application196. The allocated memory192is allocated by the virtualization application188and is stored within the memory device188. The virtual operating instructions194instruct the processing device192how to maintain the virtual operating environment190. Since the virtual operating environment relies on hardware resources from the virtualization host machine180, the virtual operating instructions194direct the processor182how to simulate hardware functionality. This simulation may include simulating a communication device to connect with and communicate over the network110, running an operating system, and executing instructions as if the virtual operating environment190were a physical machine. The preconfigured application is similar to an application stored in memory and executed by a computing device. The preconfigured application196is executed by the processor182through the virtual operating environment190based on the virtual operating instructions194.

Referring now toFIG. 2B, a block diagram illustrates an exemplary embodiment of the repository106. The repository106comprises at least a relational database200and an object oriented database204. The relational database200comprises at least business structure elements202stored in a relational database format. As is typical with a relational database, information is stored in a table structure. Each table of a relational database contains columns, where each column contains a given data type (e.g. number, text). A table may further comprise entries that define a particular instance of the table using the columns. Each entry must have a corresponding value for each column. For example, where the table defines a category, the table may have columns for a name of the category, and a description of the category. An entry may be made for the table where the name is “Category A” and the entry has a related description. With relational databases, an entry in a given table may reference another entry, where the entry is either from the same table or a separate table. Such references may be done using any relational method, where the methods include, but are not limited to, one-to-many, one-to-one, many-to-many, and the like.

The object oriented database204is similar to the relational database200in that it allows entries but the object oriented database204does not include a structure for defining the entry. Instead, the object oriented database204defines entries separately, even though they may contain attributes similar to another entry. The entry is an object204that comprises at least attributes. The attributes are defined in a key/value pair. Such attributes are stored in the object oriented database204as the virtual operating environmental attributes208. For example, an object may define a virtual operating environment and one attribute of the virtual operating environment may be a name and a second attribute may be a network address. A second object may define a virtual operating environment and in addition to the two attributes of the first object, the second object further includes an attribute for defining ports. The object may be described in any standard notation but may include Extensive Markup Language (XML), Javascript Object Notation (JSON), and the like. In some embodiments, an object may include an attribute that defines executable code. Such code may be executed by a processor directly after it is compiled into machine code or may be interpreted by a scripting engine or the like. A scripting engine is executed by a processor directly and receives commands in run-time that cause the processor to perform a precompiled function. For example, a scripting engine may be configured to cause a processor to communicate a message when the scripting engine receives a related request. The request is interpreted by the scripting engine directly by means of the processor. Such code is represented by the functional instructions210.

In one embodiment, the relational database200and the object oriented database204operate in tandem to store and organize the business structure. The main part of the business structure is defined in the business structure elements202which reference other business structure elements202, as defined herein. Specifically the business structure elements202are nested in hierarchal format, where one business structure element202may reference multiple sub business structure elements202in a one-to-many relationship. A business structure elements202may further reference a virtual operating environment object206from the object oriented database204. Thus, each virtual operating environment object206is defined by a series of business structure elements202. Conversely, it should be noted that not all business structure elements202need to be tied to a virtual operating environment object206.

It should be noted that the repository106may be a physical computing device comprising a processor, memory, and code stored in memory which causes the repository to perform the functions necessary for proper operation. In addition the repository106may further comprise a communication device that is attached to the network110. The repository106may communicate with other devices on the network110to store and communicate information of the repository described herein.

Referring now toFIG. 3, a method300to implement a comprehensive system for operating a virtual operating environment190over a distributed network110is illustrated in accordance with one embodiment of the present invention, which will be discussed in further detail throughout this specification. As illustrated, the method may comprise a plurality of steps, including but not limited to, step310for creating a virtual operating environment190hosted by a virtualization host machine180, step320for receiving a business structure for categorizing remote host machines, step330for categorizing the host machine using the business structure, step340for receiving a status of the virtual operating environment190, step350for generating a graphical representation of the business structure for display via a user computing device140, step360for receiving a request to perform a command for controlling the virtual operating environment190, step370for communicating the command to the host machine causing the virtual operating environment190to perform a predefined function, step380for receiving an updated status based for the virtual operating environment190based on the host machine causing the virtual operating environment190to perform the predefined function, and step390for updating the graphical representation based on the updated status.

At step310, the host control system102may first create a virtual operating environment190which is hosted by a host machine. The hosted machine may be accessed via a distributed network110. The host machine is a physical machine with at least one processor, memory, and code stored in the memory which is executed by the processor. The host machine connects to the distributed network110via a communication device.

Each virtualization host machine180has virtualization software190stored in memory which is executed by the processor of the virtual machine. The virtualization host machine180is configured to create a virtual operating environment190when the machine receives an instruction to do so. Unlike the virtualization host machine180, the virtual operating environment190is not a physical machine with a processor and memory. Instead, the virtualization host machine180mimics the operation of a physical machine by allocating processing functionality and memory to the virtual operating environment190. However, the virtual operating environment190is capable of executing an operating system, storing information in memory, and executing run-time code. The virtual operating environment190is additionally capable of communicating to devices on the distributed network110via a virtualized communication device. The virtualized communication device communicates through the physical communication device of the virtualization host machine180in order to communicate messages over the distributed network110. The virtualized communication device receives an address as if the virtualized communication device were actually a physical device connected to the distributed network110. The virtualization host machine180allocates a portion of the memory of the virtualization host machine180for use by the virtual operating environment190. This allocated memory192may be defined as a given size (e.g. 5 Gigabytes) or it may be allocated as needed by the virtual operating environment190. Further, the memory allocated by the virtualization host machine180for use by the virtual operating environment190may be repositioned in memory as needed by the virtualization host machine180, as is typical during a defragmentation process. In addition to the memory, processor, and communication device of the virtualization host machine180, the virtual operating environment190may utilize other hardware of the virtualization host machine180. For example, if user input devices are connected to the virtualization host machine180, a user may interact with the virtual operating environment190using these same devices. Additionally, if the virtualization host machine180has an interchangeable storage medium (e.g. CD-ROM, Flash Memory), the virtual operating environment190may be granted access to these devices. Yet further, the virtual operating environment190may further be granted access to memory that is not necessarily allocated to the virtual operating environment190. For example, the virtualization host machine180may be configured to host a file system, where the files may be accessed by application executed by the virtualization host machine180. However, the virtualization host machine180may share the file system with the virtual operating environment190such that the virtual operating environment190would adopt the file system and access the file system directly. Further, such a sharing may be done using a network protocol such as File Transmission Protocol (FTP).

Generally, a virtualization host machine180may be instructed to create any number of virtual operating environments190but each environment may be limited based on the resources of the virtualization host machine180. However, the virtualization host machine180may be configured to conserve resources available by starting up and stopping virtual operating environments190.

In some embodiments, the host control system102interacts with the virtualization host machine180to create a virtual operating environment190on the virtualization host machine180. The host control system102may instruct the virtualization host machine180to create a virtual operating environment190based on a given set of parameters. Such parameters may include, the amount of processing power of the virtualization host machine180the virtual operating environment190may utilize, the size of memory of the virtualization host machine180allocated to the virtual operating environment190, a given operating system for the virtual operating environment190to run, directions on setting up virtualized communication devices for the virtual operating environment190, and so forth. In some embodiments, based on receiving such an instruction, the virtualization host machine180, using the virtualization software190, creates the virtual operating environment190based on the parameters. The host control system102may be configured to perform a pre-creation checks to determine whether creating the virtual operating environment190is possible. For example, the host control system102may determine the amount of memory available to the virtualization host machine180. The host control system102may compare the amount of memory available with the memory allocation size of the virtual operating system and determine whether such memory is sufficient. Based on determining that sufficient memory exists on the virtualization host machine180, the host control system102instructs the virtualization host machine180to proceed with the creation of the virtual operating environment190. Additionally, the host control system102may determine what virtual operating environments190may be already hosted by the virtualization host machine180. The host control system102may perform an analysis to determine the criticality of the already hosted virtual operating environments190. Such an analysis may determine that a given virtual operating environment190hosted on the virtualization host machine180requires a given amount of processing power to operate efficiently, an amount of processing power available by the virtualization host machine180, and an amount the processing power would be decreased based on creating a subsequent virtual operating environment190. If the decrease in processing power would be decreased below the requirements of the already hosted virtual operating environment190, the host control system102may either not instruct the virtualization host machine180to create the virtual operating environment190or instruct the virtual virtualization host machine180to abort the installation of the virtual operating environment190. Further analysis might include determining when each virtual operating environment190would require available resources. For example, a first virtual operating environment190may be setup to receive requests from a first country and a second virtual operating environment190may be setup to receive requests from a second country. Depending on the time of the day, the first and second virtual operating environments190may experience different levels of requests. Therefore, the virtualization host machine180may never be strained in resources. The host control system102may determine based on previous balance loads how to direct virtualization host machines180on creating virtual operating environments190.

In addition to the operating system, the host control system102may direct the virtualization host machine180to further configure the virtual operating environment190to execute given software packages. For example, the host control system102may instruct a virtualization host machine180to configure the virtual operating environment190to operate a web server that processes negotiable instrument images. Such software packages may be bundled together with the operating system and stored in a repository106that is made available to the virtualization host machine180. Therefore, the host control system102may simply need to direct the virtualization host machine180to create the virtual operating environment190using a predetermined bundle. In addition, the bundle may include other instructions for causing the virtualization host machine180to configure the virtual operating environment190upon creation. The bundles stored in the repository106may be created and updated using version controls. Therefore, in addition to the instruction which bundle to use, the host control system102may instruct the virtualization host machine180to create the virtual operating environment190using a specific version of the bundle. Such a practice simplifies creating virtual operating environments190. As explained earlier, the host control system102may be configured to monitor resources of the virtualization host machine180. As a virtualization host machine180hosting a virtual operating environment based on a given bundle becomes resource constrained, the host control system102may instruct a second virtualization host machine180to create a second virtual operating environment based on the same given bundle. Thus, increasing the amount of resources available for performing a given task. This is especially beneficial if the machines communicate with an outside storage system, such as a database. Therefore, each virtual operating environment is not reliant on information stored locally by other virtual operating environments190to function properly. The host control system102may be further configured, based on monitoring resources, to determine that a virtual operating environment190is not needed and configure a virtualization host machine180to terminate the virtual operating environment190. Further, as will explained later, such version control bundling aids in simplifying updates to already existing virtual operating environments190.

The host control system102may further configure the virtualization host machine180on how to control the virtual operating environment190. The virtualization host machine180may be configured to control the virtual operating environment190based on receiving instructions over the distributed network110. Such instructions might include, but are not limited to, starting the virtual operating environment190, stopping the virtual operating environment190, increasing the amount of allocated memory192available or processing power to the virtual operating environment190, creating or terminating a virtualized communication device for the virtual operating environment190, connecting the virtualized operating environment to hardware or other resources available to the virtualization host machine180, and terminating the virtual operating environment190. In other embodiments, the host control system102may configure the virtualization host machine180to setup triggers to perform such functions. Such triggers may be time based (i.e. expiration of a timer), or based on receiving status information from the virtual operating environment190. For example, the host control system102may configure to virtualization host machine180to allocate additional memory to the virtual operating environment190when the current memory available to the virtual operating environment190exceeds a given threshold.

In some embodiments, the host control system102interacts with the virtualization host machine180using an Application Program Interface (API) to instruct the virtualization host machine180to create the virtual operating environment190or control the virtual operating environment190. The virtualization host machine180may receive instructions using the API via the distributed network110. As is typical with APIs, the virtualization host machine180may require authentication prior to receiving any instruction to setup or control the virtual operating environment190.

At step320, the host control system102receives a structure for categorizing virtualization host machines180located on the distributed network110. In some embodiments, the business structure is based on a tiered hierarchal format, where each tier comprises attributes for defining the virtualization host machine180. There are no limits to the number of tiers of the business structure or to the number of attributes associated with each tier. As an example, one tier of the business structure may define a location of the virtualization host machine180. The attributes of the tier may represent countries, where each country listed is an attribute of the tier that will define the virtualization host machine180. Based on the hierarchy of the business structure each tier may comprise sub tiers and a parent tier. At least one tier will be the root tier, where the root tier may have children but not a parent. There may be multiple root tiers. Each sub tier may define additional attributes of the virtualization host machine180. For example, a sub tier may define a business group that manages the virtualization host machine180. Therefore, a first tier may define the country of the virtualization host machine180and the sub tier defines the business group that manages the virtualization host machine180. It is important to note that attributes of a sub tier are associated with the selected attribute of the parent tier and not the parent tier itself. Therefore, where the first tier defines Country A and Country B as attributes, when Country A is selected the sub tier may have for selection Business Group X and Business Group Y, while when Country B is selected, the sub tier may have for selection Business Group Z. In other embodiments, the sub tier itself may be associated with an attribute of the parent tier and not just the attributes of the sub tier. For example, where the parent group may define Country A and Country B as attributes. If Country A is selected, the sub tier may provide attributes for selecting a business group that manages the virtualization host machine180, while if Country B is selected, the sub tier may provide attributes for selecting a vendor or third party entity that manages the virtualization host machine180. Further if a Country C were available and selected, the sub tier for selecting Country C may display attributes that are not related to the management of the virtualization host machine180. As more tiers are defined, more attributes may be associated with the virtualization host machine180. The attributes may include, but are not limited to, business attributes (e.g. which business group manages the hot machine), technology attributes (e.g. operating system, processor, version of software bundle), organization attributes (e.g. age of virtualization host machine180), and so forth.

Once the host control system102receives the business structure, the host control system102may categorize the virtualization host machine180as demonstrated in step330. In categorizing the virtualization host machine180, the host control system102associates the virtualization host machine180with at least one tiered attribute. Because of the tiered nature of the business structure, once a virtualization host machine180is associated with the tiered attribute, the virtualization host machine180assumes all attributes of all higher ranked tiers of the business structure. For example, a tiered business structure has a root tier for defining which country the virtualization host machine180is located, a sub tier to the root tier of the business group that manages the virtualization host machine180, another sub tier that defines a data center where the virtualization host machine180is located, and another sub tier that defines the principal function of the virtualization host machine180. The root tier may have an attribute of Country A, an attribute for the sub tier for Country A may be Business Group X, an attribute of the sub tier for Group X may be Datacenter1, and an attribute for the sub tier of Datacenter1may be Check Processing. If the virtualization host machine180is associated with the Check Processing attribute, the virtualization host machine180is automatically associated with Datacenter1, Group X, and Country A based on the hierarchal order of the business structure. It should be further noted that a virtual machine may be associated with an attribute in a tier above Check Processing. Following the example, if a virtualization host machine180were associated with Datacenter1, the virtualization host machine180would automatically be associated with Business Group X, and Country A. However, the virtualization host machine180would not be associated with Check Processing.

Using this same structure it is possible to define virtual operating environments190the same way using an association between the virtual operating environment190and the virtualization host machine180that hosts the virtual operating environment190. Therefore, where a virtualization host machine180is associated with an attribute of a tier, each virtual operating environment190being hosted on such a virtualization host machine180would be automatically associated with all the attributes of the virtualization host machine180.

At step340, the host control system102receives a status of the virtual operating environment190. After the host control system102instructs the virtualization host machine180to create the virtual operating environment190, the host control system102may receive status information regarding the virtual operating environment190. This status information may include, but is not limited to, whether the virtual operating environment190is running or shutdown, whether the machine has experienced an error, an amount of memory that the is made available to the virtual operating environment190, the amount of available memory that the virtual operating environment190is using, an amount of processing power that the virtual operating environment190is using, and the like. In some embodiments, the host control system102may further be configured to test the virtual operating environment190. As explained previously, each virtual operating environment190may comprise software for performing a particular function. The host control system102may be configured to test the ability of the virtual operating environment190to perform this function. In some instances, the host control system102determines whether the virtual operating environment190is capable of performing the function error free or at all. In such an instance, the host control system102may communicate a request to the virtual operating environment190and expect to receive a response back from the virtual operating environment190. The host control system102has an exemplary response to compare the actual response received. For example, where the virtual operating environment190is configured to process a check image into meta data, the virtual operating environment190returns a response of the meta data. The host control system102compares the response with predetermined meta data to determine whether the virtual operating environment190processed the check image correctly. If the predetermined response does not match the response from the computer, the host control system102may be configured to perform a function correct the abnormality. In other embodiments, where the virtual operating environment190does not generate a response, the host control system102may additionally perform a predetermined function. Such a function may include notifying a technician or user. Such response may further provide an indication of the status of the virtual operating environment190.

At step350, the host control system102generates a graphical representation of the business structure for display via a user computing device140. The graphical representation provides a user interaction interface for receiving information related to each of the virtualization host machines180. The host control system102may further enable the user to update the business structure and interact with the virtualization host machines180to perform functions on a virtual operating environment190hosted on the virtualization host machine180. Specific embodiments of the graphical representation will be discussed in other sections of this specification. In some embodiments, in building the graphical representation, the host control system102may be configured to communicate with each of the virtualization host machines180over the distributed network110to receive information about the virtualization host machines180and also the virtual operating environments190. For the host machine information, this information may include, but is not limited to, a name of the virtualization host machine180, an identifier of the virtualization host machine180, an address of the virtualization host machine180, hardware specifications of the virtualization host machine180, software installed on the virtualization host machine180, available memory of the virtualization host machine180, total memory installed on the virtualization host machine180, a list of virtual operating environments190being hosted by the virtualization host machine180, data transfer rates of the communication device of the virtualization host machine180, functions that the virtual virtualization host machine180may perform by remote request, and the like. With respect to the virtual operating environments190, the information might include status information of the virtual operating environment190, available memory to the virtual operating environment190, a list of functions which the virtual operating environment190may perform by remote request, and the like. The host control system102may include this information when generating the graphical representation.

At step360, the host control system102receives a request to perform a command for controlling the virtual operating environment190. In some embodiments, when the user interacts with the graphical representation, the host control system102receives may receive a request to perform a function on the virtual operating environment190. In some embodiments, the host control system102receives the request using an API. The API may be require the request to include information relating to the virtualization host machine180, the virtual operating environment190, and a specific function that the user would like the virtual operating environment190to perform. It should be noted that the request for the virtual operating environment190to perform a function may be minimal in comparison commands and instructions necessary to actually enable the virtual operating environment190to actually perform the function. The request is merely an instruction to cause the host control system102and other computing devices to enable the virtual operating environment190and/or virtualization host machine180to perform the function.

In some embodiments, the host control system102may require authentication information in conjunction with the request. This information may be a standard username and password. In an Internet based environment, the authentication credentials may be created using cookies or session variables.

At step370, the host control system102communicates the command to the virtualization host machine180causing the virtual operating environment190to perform a predefined function. Based on receiving the request the host control system102may first determine whether the request is valid. Where the request contains information related to the virtualization host machine180and virtual operating environment190, the host control system102may determine whether the virtualization host machine180and/or virtual operating environment190exist and are capable of receiving instructions based on the request. Where the virtualization host machine180and/or virtual operating environment190do not exist or are not capable of receiving instructions, the host control system102may communicate a message stating that the virtualization host machine180and/or virtual operating environment190are not available. In other embodiments, where the host control system102requires authentication credentials, the host control system102may authenticate the credentials prior to instruction the virtualization host machine180and/or virtual operating environment190.

After the host control system102determines that the virtualization host machine180and/or virtual operating environment190exist and are capable of receiving instructions, the host control system102may actually communicate instructions as necessary to cause the virtual operating environment190to perform the requested function. Various functions and will be described in further detail.

Several basic functions might include starting the virtual operating environment190, stopping the virtual operating environment190, and restarting the virtual operating environment190. When the host control system102receives a request to perform one of these functions, the host control system102may communicate an instruction to the virtualization host machine180, and more specifically virtualizing software executed by the virtualization host machine180, to cause the virtual operating environment190to perform accordingly. The actual execution of these instructions may require multiple steps and processes executed by the virtualization host machine180and the virtual operating environment190respectively. For example, where the request is to start up a virtual operating environment190, the host control system102may send an instruction to the virtualization host machine180to cause the virtual operating environment190to perform a boot-up sequence. The virtualization host machine180may in turn cause the virtualizing software to simulate a boot-up sequence of the virtual operating environment190. As the virtual operating environment190is virtual, the boot-up sequence is performed by virtualizing steps that normally would be accomplished by hardware components of a machine. No actual power signals are sent to any hardware but instead the virtual operating environment190is generated based on stored instructions in memory and diverting processing power of the virtualization host machine180. Once the virtual operating environment190has been booted, the virtualization host machine180may continue the boot sequence accessing components of the virtualization host machine180to access files, initiate communication ports, and so forth. The virtual operating environment190may act as an actual machine even though it is virtualized. Each phase of the startup process may be monitored by the virtualization host machine180and communicated back to the host control system102.

More complex functions might include creating the virtual operating environment190and destroying the virtual operating environment190. In the case of creating the virtual operating environment190, the host control system102may receive information of the virtualization host machine180to determine whether the virtualization host machine180may actually be able to create and host the virtual operating environment190. Such tests might include determining whether the virtualization host machine180has the processing power capable of hosting the virtual operating environment190, and whether the virtualization host machine180has sufficient memory for creating the virtual operating environment190. Where the virtual operating environment190is based on a package, as defined herein, these tests may be determined based on the package information. The tests may be further based on information relating to other virtual operating environments190hosted by the virtualization host machine180. This information may include bandwidth requirements of the other virtual operating environments190, expected memory requirements of the virtual operating environments190, and criticality of the other virtual operating environments190. For example, at times it might be necessary to restart a virtualization host machine180in order to configure a given virtual operating environment190, by restarting the virtualization host machine180operating of the other virtual operating environments190might be interrupted. In such instances, rules may be established for the virtualization host machine180to prevent or limit the creation or updating of a virtual operating environment190. Such rules may be based on the times when a virtual operating environment190may be created or updated.

After the host control system102has received the command to create the virtual operating environment190and the precondition tests have been met, the host control system102may receive information relating to the virtual operating environment190. As explained earlier, this information may be based on a package that defines how to setup the virtual operating environment190. In some embodiments, the information might include the amount of memory to allocate to the virtual operating environment190, the processing power requirements for the virtual operating environment190, communication device requirements, software installation instructions, and so forth. Where information is provided on setting up communication devices, the software may further setup safety devices such as firewalls. Such information may detail which ports are available for receiving communications and what protocols may be used over the ports. The instructions may further detail which software installed on the virtual operating environment190may be able to communicate using the communication devices.

After receiving the information, the host control system102may further send the instruction to the virtualization host machine180to create the virtual operating environment190based on the information. Where the creation is based on a package, the host control system102may instruct the virtual operating environment190how to receive the package. For example, the package may be stored in memory of a repository106and the instruction may be to communicate with the repository106to receive a copy of the package.

Once the virtualization host machine180receives the instruction, the virtualization host machine180, using the virtualizing software, may create the virtual operating environment190. This may include several steps and processes. The virtualization host machine180may communicate status information of creating the virtual operating environment190to the host control system102. Once the creation process has been completed, the virtualization host machine180may perform a startup of the virtual operating environment190as explained herein.

In another embodiment, the host control system102may be able to receive requests to update the virtual operating environment190, similar to the creation process. The host control system102may perform tests to determine whether the virtualization host machine180is capable of the upgrade. Additionally, the host control system102may instruct the virtualization host machine180to perform the update and receive information from the virtualization host machine180relating to the update process. Where the update is based on a package, the information may further include a version of the package.

At step380, the host control system102, using the same methods as explained herein, receives an updated status from the virtual operating environment190. After the host control host control system102receives the updated status, the host control host control system102updates the graphical representation based on the updated status of the virtual operating environment190, as explained in step390. As explained above, the host control system102manipulates the graphical representation to provide indications to the user relating to the status of the virtualization host machine180and the virtual operating environment190.

Referring now toFIG. 4, further embodiments of the invention are directed to demonstrating the generated representation of the business structure that is displayed on the user computing device140using a dashboard400. A dashboard is provided with a graphical representation of the business structure. Examples of this dashboard are provided later in the specification. Dashboard400comprises at last a tree structure410and an information panel420. The tree structure410is generated based on the business structure described herein. The tree structure410may have a hierarchal format where root nodes comprise children nodes. Each of the nodes of the tree structure410describes an attribute that is assignable to a host machine and/or a virtual operating environment hosted by the host machine. Nodes are linked in the hierarchal format to provide multiple attributed to each of the host machines and virtual operating environments. For example, a root node may describe a location of a data center (e.g. Data Center #1), a children node of the root node may describe a business team that is tasked with maintaining a host machine (e.g. Team A). Therefore, all host machines that are categorized under Team A would also be linked to Data Center #1. Any number of attributed may be linked together to describe the host machines and/or virtual operating environments using this hierarchal format.

The dashboard400may be configured to receive input from a user using the user computing device140. The user may interact with the dashboard400using standard techniques which includes, but is not limited to, a mouse or keyboard, a touchscreen, voice recognition commands, and the like. The tree structure410, wherein the tree structure comprises multiple nodes412. The tree structure may be configured to receive input to enable a user to interact with each of the nodes of the tree structure410. Interacting with the nodes412may cause the node412to expand and cause the user computing device140to display all children nodes412under the selected node412. Further, if a node412is expanded (i.e. the children nodes are displayed), the user may interact with the node412to collapse the node412(i.e. hide all children nodes under the node). Further, each of the nodes412may be configured to be selectable. When a user interacts with the node412by selecting the node412, the user computing device140may be configured to communicate with the host control system102to retrieve additional details related to the node412. Such details are returned to the user computing device140and the user computing device140updates the dashboard400based on the details.

Where the node412is either a host machine180or a virtual operating environment190operated on the host machine, the node412, each node may further comprise status indicator414. Such status indicator may display a particular status of the virtual operating environment190. For example, the status indicator414may display whether the host machine180or the virtual operating environment190is running or shutdown. The status indicator414may display any status of the virtual operating environment190or the host machine180.

The details received from the host control system102may be displayed in the information panel420. As embodied inFIG. 4, the information panel420may display the details in a table format using key/value pairs. The details may be unique to each of the one or more nodes. For example, a node describing an attribute of the host machine may include a name of the node, and other identifying information for the specific node. If the node described a physical location, the details for the node may include a mailing address, a contact phone number, and a name for a point of contact. If the described a management team, the details for the node may include a list of each of the team members with roles for each, and contact information for the team. If the node described a host machine, the details for the node may include, but are not limited to, the name of the host machine, a path or network address for the host machine, a reference to ports for interacting with the host machine (e.g. Port22—SSH). Where the node describes a virtual operating environment, the details may include details similar to that of the host machine. This is possible because the virtual operating environment simulates an actual machine operating on the network and is given a physical address and is capable of opening ports for interacting with the virtual operating environment.

In some embodiments, the dashboard400may further enable a user to manipulate the tree format410and details contained in the information panel420for each of the nodes. For example, the dashboard400may enable a user to create a child node under a parent node, delete a child node, move child nodes to other parent nodes, and the like. In the information panel420, the dashboard400may enable a user to update the details or create additional details.

In other embodiments, nodes of the tree structure may display status information relating to the nodes. For example, where the node describes a host machine, the node may present information related to the status of the host machine. This information may include an icon or a simple text.

Referring now toFIG. 5,FIG. 5demonstrates a dashboard500in accordance with one embodiment of the invention. Dashboard500further comprises a navigation panel608, a list of virtual operating environments510for a given host machine, an operation sub panel520, and a virtual operating environment create button530. When a user selects a host machine node, the user computing device140receives details from the host control system102related to the host machine. Such information may include the virtual operating environments that are hosted on the host machine. These virtual operating environments may be listed in the list of virtual operating environments510. The list of virtual operating environments510may further define a running state of each of the virtual operating environments (e g running, starting up, and shutdown). The list of virtual operating environments510may be configured to allow a user to interact with a description of each of the virtual operating environments. When the user interacts with the description of the virtual operating environment, the user computing device140may update the dashboard to display the operation sub panel520. The operating sub panel520enables a user to request the system perform a function on the virtual operating environments. As depicted inFIG. 5, the functions may include editing the details for the virtual operating environment, deleting the virtual operating environment, restarting the virtual operating environment, shutting down the virtual operating environment, and starting the virtual operating environment. It should be noted that when a user selects one of the options under the operating sub panel520, the user computing device communicates a request to the host control system102for causing the host control system102to interact with the host machine and/or virtual operating environment to cause the virtual operating environment to perform the function, as defined herein. The options on the operating sub panel520may reference functions that either define the structure of the virtual operating environment or the functionality of the virtual operating environment. With respect to the options that define the structure of the virtual operating environment, a request may be made to the host control system102to update the structure of the virtual operating environment. Such request may cause the host control system102to interact with the repository106to create, edit, or update a virtual operating environment object206related to the virtual operating environment. In other embodiments, the host control system102may further update a business structure element202of the relational database. While in other embodiments, the host control system102may further update a reference of a business structure element202and another business structure element202or a virtual operating environment object206.

With respect to the options on the operating sub panel520that define the functionality of the virtual operating environment, the host control system102may receive such functionality from the object oriented database204of the repository106. Such functionality is defined by the functional instructions210related to a virtual operating environment object206. As defined herein, the functional instructions210may be scripts that are executable by a scripting engine of the virtual operating environment. Thus the host control system102receives a request for a virtual operating environment to perform a given function210. The host control system102may communicate with the object oriented database204to receive a virtual operating environment object206related to the virtual operating environment. Using the virtual operating environment object206, the host control system102may determine a functional instruction210that corresponds to the request. The host control system210may communicate the functional instruction210to the virtual operating environment for a scripting engine to interpret the functional instruction210, thus causing the virtual operating environment to perform a function associated with the functional instruction210. In other embodiments, the functional instruction210may require variables to operate properly. A user may submit the variables through a graphical user interface which are relayed to the host control system102. Prior to the host control system102communicating the functional instruction210to the virtual operating environment, the host control system102may update the functional instruction210with the variables. In other embodiments, the functional instruction210may include default variables. Therefore, if the user does not supply a variable, the host control system102may update the functional instruction210using the default variable.

Additionally, the dashboard500defined inFIG. 5comprises the virtual operating environment create button530. This button may be configured to allow a user to send a request to the host control system102to create a virtual operating environment for the selected host machine. The user computing device140may be configured to enable a user to submit information necessary to create the virtual operating environment, as defined herein. After the user submits the information, the user computing device140submits a request to the host control system102, causing the host control system102to interact with the host machine to create the virtual operating environment.

Referring now toFIG. 6,FIG. 6describes a dashboard600in accordance with one embodiment of the invention. Dashboard600comprises a navigation panel608, a task management panel610for performing maintenance based tasks on a host machine or a virtual operating environment. As depicted inFIG. 6, the task management panel610comprises tabs for handling maintenance tasks. Such tabs may comprise a pending tab, a submitted tab, an approved tab, a completed tab, and a canceled tab. Each of the tabs are configured to enable a user to select a tab, thereby causing the user computing device140to update the dashboard600to display maintenance tasks for that area. Each of the maintenance tasks may be displayed in the dashboard600using a table format. The maintenance task may display information comprising a task name (e.g. cycle logs), a version, a date/time that describes the start date or due date of the task, a creator or editor of the task, and other options for the task.

In other embodiments of the present invention, the host control system102is further configured to monitor the status of the host machine and/or virtual operating environment to receive status information of the host machine and/or virtual operating environment, as explained herein. When the host control system102receives an updated status, the host control system102communicates with the user computing device140to display and update the display of the user computing device140with the updated status.

Referring now toFIG. 7,FIG. 7illustrates a navigation panel700displaying a business structure710based on Business Process Management Notation (BPMN). The business structure710is similar to that described herein and includes a tree structure with multiple nodes. Using BPMN, each node of the business structure710is organized where the top node defines a realm. A sub node of the realm is a pool. A sub node of the pool is a lane. A sub node of the lane is a component. A sub node of the component is a site. A sub node of the site is virtual operating environment. Each of the terms (e.g. realm, pool, lane) are defined by the BPMN standards, which version is current (i.e. version 2.0) at the time of filing of this application or any previous version.

In other embodiments, the business structure may be based on Enterprise Integration Patterns as defined at the time of filing this application.