Abstract:
A graphical user interface (GUI) for managing virtual machines (VMs) that are running in one or more hosts provides a search interface that is intuitive and presents search results in a tree structure that lists or marks items that meet user-designated search criteria. User-designated search criteria include favorite VMs, powered-on VMs, VMs running in a specified host, and text-based search criteria. Both VMs that are running locally in a local host and VMs that are running remotely in a remote host are listed so long as they meet the user-designated search criteria and thus can be managed using the GUI.

Description:
BACKGROUND 
     Virtual machines (VMs) are an increasingly popular technology for improving flexibility and efficiency in a range of computational systems. Certain VM systems are conventionally managed using a graphical user interface (GUI) application, which provides an intuitive visual interface for managing individual virtual machine instances. One example GUI known in the art is included in a product sold by VMware, Inc. of Palo Alto, Calif. as VMware Workstation. This product includes a sidebar containing a tree with two main top-level items, a “Powered On” list and a “Favorites” list. The “Powered On” list provides an inventory of virtual machines currently executing in the workstation and the “Favorites” list provides an inventory of virtual machines that the user has designated as a favorite. Thus, as virtual machines are powered on and off, they appear and disappear from the “Powered On” list. Similarly, virtual machines appear and disappear from the “Favorites” list as they are designated as a favorite or not. 
     Another GUI known in the art is included in a product sold by VMware, Inc. as vSphere Client. A sidebar with a tree view of certain objects is used to represent search results. However, the entire tree structure may change based on whether the user wants to organize by host, data store, network, etc. As a result, this GUI requires some training and experience before a user can navigate it with ease. 
     As VM systems grow to include a larger number of VM instances, conventional GUIs can quickly become unwieldy and inefficient in presenting information about individual VM instances. Therefore, what is needed in the art is a technique for presenting information about VM instances in a simple and intuitive manner while providing sufficient information so that virtual machines can be managed effectively. 
     SUMMARY 
     One or more embodiments of the present invention provide a GUI for managing VMs that are running in one or more hosts. The GUI exposes a search interface to the user that is intuitive and presents search results in a tree structure that lists or marks items that meet the user&#39;s designated search criteria. As compared to conventional GUIs, the GUI according to one or more embodiments of the invention is compact, easy to learn, and flexible. 
     A method according to an embodiment of the present invention generates a display list of VMs that include both VMs running locally in a local computer system and VMs running remotely in one or more remote computer systems. The method includes the steps of detecting a user input event that specifies a search criteria for VMs, generating a list of VMs that meet the specified search criteria, the VMs including one or more VMs that are running locally in the computer system and one or more VMs that are running remotely in the remote computer systems, and displaying the list of VMs in a GUI. 
     A method according to another embodiment of the present invention generates a display list of VMs in a GUI that includes VMs meeting two or more criteria. The method includes the steps of generating a list of VMs that meet a first criteria, wherein the list of VMs has a tree structure and each VM listing appears underneath a listing for a host in which the corresponding VM has been initialized, and displaying a marker on or near VM listings corresponding to VMs that meet a second criteria. 
     Further embodiments of the present invention include a non-transitory computer readable storage medium that stores instructions to be executed in a processing unit of a computer system, wherein the instructions when executed in the processing unit generates a GUI. The GUI includes a first list of VMs, each of which runs locally in the computer system, and a second list of VMs, each of which runs remotely in one or more remote computer systems. In addition, each list of VMs in the GUI has a tree structure, such that each VM listing appears underneath the computer system in which the corresponding VM has been initialized. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1A  illustrates a virtual machine system comprising an administration host configured to manage virtual machines executing on plural hosts, according to one embodiment of the present invention. 
         FIG. 1B  illustrates a virtual machine system comprising a workstation host configured to manage virtual machines executing on the workstation host, according to one embodiment of the present invention. 
         FIG. 2A  illustrates a graphical user interface for searching and managing virtual machines, according to one embodiment of the present invention. 
         FIG. 2B  is a detail of a search element within the graphical user interface configured to receive text search strings and to present a shortcut list of search targets, according to one embodiment of the present invention. 
         FIG. 2C  is a detail of the search element within graphical user interface illustrating an exemplary list of shortcut search targets, according to one embodiment of the present invention. 
         FIG. 2D  is a detail of the graphical user interface illustrating a list of virtual machines, according to one embodiment of the present invention. 
         FIG. 2E  illustrates a graphical user interface displaying search results for virtual machines designated as favorites, according to one embodiment of the present invention. 
         FIG. 2F  illustrates a graphical user interface displaying search results for virtual machines that are powered on, according to one embodiment of the present invention. 
         FIG. 3  is a flow diagram of method steps, performed by a graphical user interface module within a management application, for searching and managing virtual machine instances, according to one embodiment of the present invention. 
     
    
    
     DETAILED DESCRIPTION 
       FIG. 1A  illustrates a virtual machine system  100  comprising an administration host  110  configured to manage virtual machines  142 ,  144  executing on plural hosts  140 , according to one embodiment of the present invention. The virtual machine system  100  comprises the administration host  110 , a data network  120 , and cluster  130 . The administration host  110  includes a management application  112  configured to facilitate management of the virtual machines (VMs)  142 ,  144 . The administration host  110  is coupled to the cluster  130  via data network  120 . Data network  120  may comprise any technically feasible networking system. For example, data network  120  may implement an industry standard Ethernet switched network, internet protocol (IP) routed network, or any combination thereof. Alternately, the data network  120  may implement a Fibre Channel switched network. 
     Cluster  130  comprises one or more host systems  140 , configured to execute VMs  142 ,  144 . It should be noted that in the description provided herein an element that has multiple instances (e.g., N), such as host system  140 , is referred to individually as  140 - i  (where i is any one of 1 to N) and collectively as  140 . As shown, host system  140 - 0  is configured to execute VMs  142 - 0  through  142 -J, while host system  140 -N is configured to execute VMs  144 - 0  through  144 -K. The virtual machine system  100  may also include additional clusters, such as cluster  132 , which is structured substantially identically to cluster  130 . Each host system  140  may comprise a computation platform, such as a general-purpose computer system. Each host system  140  may include local mass storage, networked mass storage, or a combination thereof based on specific implementation requirements. 
     The management application  112  is configured to communicate with host systems  140  via data network  120  to configure, manage, and interact with VMs  142 ,  144 . For example, management application  112  can instruct a specific VM to turn on, turn off, and pause execution. Management application  112  can also connect to a particular VM to enable a user to interact with a guest operating system (OS) and guest applications executing within the VM. The graphical user interface (GUI) module  114  provides specific tools, detailed in greater detail below in  FIGS. 2A-2F, and 3 , for selecting one or more VMs from VMs  142 - 0  through  144 -K, and for accepting management commands from the user for the selected VMs. 
       FIG. 1B  illustrates a virtual machine system  102  comprising a workstation host  150  configured to manage virtual machines  152  executing on the workstation host  152 , according to one embodiment of the present invention. The workstation host  150  includes application  112 , which manages VMs  152 . As described previously in  FIG. 1A , the application  112  includes GUI module  114 , which provides a GUI for managing the VMs  152 . 
       FIG. 2A  illustrates a GUI  200  for searching and managing VMs, according to one embodiment of the present invention. GUI  200  is generated by GUI module  114  shown in  FIG. 1 . GUI  200  includes a search element  210 , a list panel  230 , and a VM panel  220 . Search element  210  enables the user to enter specific search criteria for listing VMs in list panel  230 . List panel  230  displays a list of hosts and associated VMs configured to execute on hosts  240 . VM panel  220  provides a portal to a specified VM  260 . The user may interact with a guest OS and guest applications executing within the specified VM  260  via VM panel  220 . For example, the user may connect to the guest OS, resulting in a frame buffer for the guest OS being displayed within VM panel  220 . The user may transmit GUI events, such as mouse movements and key presses to the guest OS, which should then react appropriately to the GUI events. In this way, the user is able to interact with the specified VM. 
     As shown, list panel  230  displays a list of hosts  240  and individual VMs  260  organized into folders within hosts  240 - i . Individual VMs  260  are configured to nominally reside within a specified host  240 , although migration of VMs  260  between hosts  240  may also be implemented without departing the scope of the present invention. It should be recognized that each of hosts  240  displayed in GUI  200  corresponds to one of host systems  140  of  FIG. 1 . 
     A set of favorites  232  is associated with certain designated VMs  260  within list panel  230 . Each VM  260  may be designated as a favorite by the user. After being designated as a favorite, the corresponding VM may be listed with an accompanying icon, such as a heart icon, to signify that it is a favorite. As further described below, a favorite designation provides one attribute for searching and listing VMs  260 . A user may remove a favorite designation from a particular VM  260  by clicking on the corresponding favorite attribute icon. The user may add a favorite designation to a particular VM  260  by clicking in a region that corresponds to the region otherwise occupied by a favorite attribute icon. To assist the user in easily locating the region corresponding to a particular VM  260 , an indication is generated when the user hovers a mouse cursor  292  over the region. In one embodiment, the indication comprises an outline of the favorite attribute icon. For example, if the user hovers the mouse cursor  292  over the intersecting region of the column of favorites  232  and the row corresponding to VM  260 - 9 , an outline of the heart icon  290  is displayed while the cursor  292  hovers over the region. If the user clicks on the region while the outline of the heart icon  290  is displayed, then VM  260 - 9  is designated a favorite and a heart icon is displayed next to VM  260 - 9 . 
     Each host  240 , folder  250 , and VM  260  is represented in the GUI  200  using both an icon and a text descriptor. For example, host  240 - 0  is represented using an icon, text descriptor “My Computer.” Similarly, VM  260 - 0  is represented using an icon and text descriptor “WinXP+IE6.” Each host  240  and folder  250  representation also includes a corresponding expansion tool, indicated here by a tip-down black triangle. The expansion tool is used to toggle between listing and not listing contained items. For example, the expansion tool is used to list or not list folders  250  within each host  240 . Similarly, the expansion tool is used to list or not list VMs  260  within each folder  250 . 
       FIG. 2B  is a detail of search element  210  within GUI  200  configured to receive text search strings and to present a shortcut list of search targets, according to one embodiment of the present invention. Search element  210  includes a text entry field  216 , a clear tool  214 , and an expansion tool  212 . Text entry field  216  is configured to receive one or more text strings that the user may enter. A search indicator icon  217 , described in greater detail below in  FIG. 2C , is positioned within the search element  210  to indicate if a search is currently active. Clear tool  214  clears text entry field  216  and clears related search data from being listed, for example, in list panel  230 . Expansion tool  212  toggles between displaying and not displaying a list shortcut of search targets, as illustrated below in  FIG. 2C . 
       FIG. 2C  is a detail of the search element within graphical user interface illustrating an exemplary list of shortcut search targets  218 , according to one embodiment of the present invention. If the user generates a mouse click on the expansion tool  212  while the list of shortcut search targets  218  is being displayed, then the list is hidden. If the user generates a mouse click on the expansion tool  212  while the list of shortcut search targets  218  is not being displayed, then the list of shortcut search targets  218  is then displayed. 
     As shown, the list of shortcut search targets  218  includes plural shortcut searches  270 . For example,  270 - 0  is a shortcut search to display a list of VMs  260  that are each designated as a favorite. The action of shortcut search  270 - 0  is indicated by the favorite (heart) icon  274 - 0 , and text descriptor “Favorites”  272 - 0 . The action of shortcut search  270 - 1  is indicated by a powered-on icon  274 - 1 , and text descriptor “Powered On”  272 - 1 . Similarly, each shortcut search  270 - 2  through  270 - 4  includes a corresponding icon  274 , and text descriptor  272 . A notification  276  informs the user that they may type a search string into text field  216  to search VM names and notes. 
     The search indicator icon  217  displays one specific icon from icons  274 - 0  through  274 - 4  to indicate the search corresponding to the one specific icon  274  is the active search result being displayed. Certain shortcut search items  270  within the list of shortcut search targets  218  are color-coded. When a given shortcut search item  270  is the active search result being displayed, the corresponding color-coding color for the shortcut search item  270  is used to color code at least a portion of the search element  210 . For example, if the favorites shortcut search item  270 - 0  is color-coded as pink, then the region corresponding to the favorites shortcut search item  270 - 0  is shaded pink. Furthermore, if the favorites shortcut search is the active search result being displayed, then the search element  210  is also color-coded pink to indicate that the active search result being displayed is for the favorites shortcut search. In this way, the user is provided with a visual cue regarding the active search result being displayed. 
       FIG. 2D  is a detail of the GUI  200  illustrating a list of virtual machines  260 , according to one embodiment of the present invention. The detail illustrates a listing for host  240 - 0 . Host  240 - 0  is designated by icon  244 - 0  and text descriptor  246 - 0 . Expansion tool  242 - 0  enables the user to either display or not display items related to host  240 - 0 . Specifically, expansion tool  242 - 0  causes folders  256 - 0  and  256 - 1  residing within host  240 - 0 , along with VMs  260 - 0  through  260 - 4 , to either be displayed or not displayed. Folder  250 - 0  is designated by icon  254 - 0  and text descriptor  256 - 0 . Expansion tool  252 - 0  enables the user to either display or not display VMs  260 - 0  through  260 - 2 , contained within folder  250 - 0 . Similarly, expansion tool  252 - 1  enables the user to either display or not display VMs  260 - 3  through  260 - 4 , contained within folder  250 - 1 . 
     Each VM  260  is represented by a corresponding VM icon  264  and text descriptor  266 . For example, VM  260 - 0  is represented by VM icon  264 - 0  and text descriptor  266 - 0 . Each VM icon  264 - 0  may include an overlay icon  268  that indicates state information about the corresponding VM  260 . A pause icon, shown as  268 - 0  indicates VM  260 - 0  is powered on, but in a halted state. A powered on icon  268 - 1  indicates VM  260 - 1  is powered on and running. A VM icon  264  with no overlay icon  268  indicates that the corresponding VM  260  is powered off. For example VM icon  264 - 2  has no overlay icon  268 , indicating VM  260 - 2  is powered off. 
     Favorite icons  280  associated with individual VMs  260  indicate that the corresponding VM  260  has been designated a favorite by the user, and the corresponding VM  260  includes a search attribute of favorite. As shown, VMs  260 - 0 ,  260 - 1 ,  260 - 2  are designated favorites via favorite icons  280 - 0 ,  280 - 1 , and  280 - 2 , respectively. VMs  260 - 3  and  260 - 4  are not favorites and will not appear in a search for favorites. 
       FIG. 2E  illustrates GUI  200  displaying search results for VMs designated as favorites, according to one embodiment of the present invention. As shown, only VMs  260  having a favorite attribute are shown in these search results. The favorite attribute is indicated by favorite icons  280 - 0  through  280 - 5 . The search results are obtained when the user selects favorites shortcut search  270 - 0  from the list of shortcut search targets  218 . 
       FIG. 2F  illustrates GUI  200  displaying search results for VMs that are powered on, according to one embodiment of the present invention. As shown, only VMs  260  that are powered on are shown in these search results. Each VM  260  is indicated as being in a powered on state by powered on icons  268 . The search results are obtained when the user selects powered on shortcut search  270 - 1  from the list of shortcut search targets  218 . 
       FIG. 3  is a flow diagram of method steps  300 , performed by GUI module  114  within management application  112  of  FIG. 1 , for searching and managing VMs  142 ,  144 , according to one embodiment of the present invention. Although the method steps are described in conjunction with the system of  FIG. 1 , it should be understood that there are other systems in which method steps may be carried out. 
     The method begins in step  310 , where the GUI is initialized. This step may occur, when the VM management application is launched and GUI module  114  is initialized. This step includes clearing search criteria and setting the list of shortcut search targets  218  to include favorite VMs and powered-on VMs. Optionally, additional shortcut search items may be included at initialization. For example, local VMs and VMs on a pre-selected list of hosts may also be included. 
     In step  312 , GUI module  114  detects an event. The event may be a VM state update event, in which state information for one or more VMs is updated. For example, a VM may go from powered-on to powered-off. The event may also be a user input event in the form of an entered text string or a mouse click requiring action by GUI module  114 , such as a mouse click. If, in step  320 , the event is a user input event for a search modification, then the method proceeds to step  322 . A search modification may include any technically feasible type of search modification. For example, the search modification may comprise entry of a text string within text entry field  216 . In step  322 , GUI module  114  updates an item list based on the modification to the search criteria. In step  324 , GUI module  114  displays an updated item list based on the modified search criteria in list panel  230 . The item list includes a list of hosts  240 , related folders  250 , and matching VMs  260 . Upon displaying the updated item list, the method proceeds back to step  312 . 
     Returning to step  320 , if the event is not a user input event for a search modification, then the method proceeds to step  330 . If, in step  330 , the event is a user input event for a shortcut menu request, then the method proceeds to step  332 . An example of a shortcut menu request is a mouse click on expansion tool  212  of  FIG. 2B  to request display of the list of shortcut search targets  218  of  FIG. 2C . In step  332 , GUI module  114  displays a shortcut menu comprising a list of shortcut search targets, such as the list of shortcut search targets  218 . In step  334 , GUI module  114  receives a selection from the shortcut menu for display. In step  336 , GUI module  114  displays an updated item list based on the shortcut menu selection. The item list includes a list of hosts  240 , related folders  250 , and matching VMs  260 . Upon displaying the updated item list, the method proceeds back to step  312 . 
     Returning to step  330 , if the event is not a user input event for a shortcut menu request, then the method proceeds to step  340 . If, in step  340 , the event comprises a user input event for selecting a VM  260  from the item list displayed in list panel  230 , then the method proceeds to step  342 . In step  342 , GUI module  114  connects to the selected VM  260  and brings the VM to front in VM panel  220  of GUI  200 . At this point, the user may interact with the VM  260  within VM panel  220 . The method proceeds back to step  312 . In one embodiment, the selected VM  260  remains active within VM panel  220  and executes concurrently with GUI module  114 . If the selected VM  260  resides on a remote host, such as one of host systems  140 , then GUI module  114  connects to the remote host using any technically feasible technique. Persons skilled in the art will recognize that certain connection techniques for remote hosts require user authentication, which is not described herein because authentication is independent of the present invention. 
     Returning to step  340 , if the event does not comprise a user input event for selecting a VM  260  from the item list displayed in list panel  230 , then the method proceeds to step  350 . If, in step  350 , the event is a VM state update event, then the method proceeds to step  352 . In step  352 , the GUI module  114  updates the item list based on the VM state update event. 
     Returning to step  350 , if the event is not a VM state update event, then the method proceeds to step  360 . If, in step  360 , the event is not a request to quit the management application  112 , then the method proceeds to step  362 . In step  362 , the GUI module  114  processes the event using any technically feasible technique and based on implementation specific requirements of the management application  112 . It should be recognized that there are many different types and categories of events. For example, the GUI module  114  may detect an event indicating the mouse cursor  292  has started or stopped hovering over a region that now needs to be redrawn, as described in  FIG. 2A  with respect to the outline of the heart icon  290 . Upon processing such an event in step  362 , the method proceeds back to step  312 . 
     Returning to step  360 , if the user input event is a request to quit the management application  112 , then the method terminates in step  390 . 
     It should be recognized that various modifications and changes may be made to the specific embodiments described herein without departing from the broader spirit and scope of the invention as set forth in the appended claims. 
     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 invention may be useful machine operations. In addition, one or more embodiments of the invention 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. 
     One or more embodiments of the present invention may be implemented as one or more computer programs or as one or more computer program modules embodied in one or more computer readable media. The term computer readable medium refers to any data storage device that can store data which can thereafter be input to a computer system computer readable media may be based on any existing or subsequently developed technology for embodying computer programs in a manner that enables them to be read by a computer. Examples of a computer readable medium include a hard drive, network attached storage (NAS), read-only memory, random-access memory (e.g., a flash memory device), a CD (Compact Discs) CD-ROM, a CD-R, or a CD-RW, a DVD (Digital Versatile Disc), a magnetic tape, and other optical and non-optical data storage devices. The computer readable medium can also be distributed over a network coupled computer system so that the computer readable code is stored and executed in a distributed fashion. 
     Although one or more embodiments of the present invention have been described in some detail for clarity of understanding, it will be apparent that certain changes and modifications may be made within the scope of the claims. Accordingly, the described embodiments are to be considered as illustrative and not restrictive, and the scope of the claims is not to be limited to details given herein, but may be modified within the scope and equivalents of the claims. In the claims, elements and/or steps do not imply any particular order of operation, unless explicitly stated in the claims. 
     Plural instances may be provided for components, operations or structures described herein as a single instance. Finally, boundaries between various components, operations and data stores are somewhat arbitrary, and particular operations are illustrated in the context of specific illustrative configurations. Other allocations of functionality are envisioned and may fall within the scope of the invention(s). In general, structures and functionality presented as separate components in exemplary configurations may be implemented as a combined structure or component. Similarly, structures and functionality presented as a single component may be implemented as separate components. These and other variations, modifications, additions, and improvements may fall within the scope of the appended claims(s).