Patent ID: 8364802

Claim:
For a hypervisor management module that interfaces with a plurality of resource nodes of a hosting system, each of the resource nodes comprising resources for hosting a plurality of virtual machines, a method for deploying virtual machines of a plurality of users on the hosting system, the method comprising: from a plurality of hypervisors that each operate to virtualize the resources of a resource node, collecting a first set of statistics of the resource nodes on which the hypervisors operate, wherein the plurality of resource nodes of the hosting system comprise at least two different types of hypervisors; from a plurality of utility management modules that each operate as a virtual machine on a resource node, collecting a second set of statistics of the resource nodes on which the utility management modules operate, wherein each utility management module is a virtual machine operating on the resources of a particular resource node to deploy and configure user-specified virtual machines on the particular resource node, wherein the hypervisor management module collects statistics from both the hypervisor and the utility management module of at least one resource node; based on the first and second sets of collected statistics, generating a mapping of resource usage and resources available on the plurality of resource nodes; receiving a modification to a particular configuration of a particular virtual machine hosted by a first node of the plurality of resource nodes, wherein the first node does not have sufficient available resources to host the particular modified virtual machine; based on the generated mapping, determining a different node from the plurality of resource nodes to host the modified configuration for the virtual machine by (i) identifying a hypervisor operating on the first node and (ii) identifying a second node having sufficient available resources to host the particular modified virtual machine and having the same type of hypervisor as the first node; and migrating the particular configuration from the first node to the second node of the plurality of resource nodes by installing the modified configuration to the second node.