[go: up one dir, main page]

WO2025030172A1 - Dynamic association of preconfigured virtual machines to domain users - Google Patents

Dynamic association of preconfigured virtual machines to domain users Download PDF

Info

Publication number
WO2025030172A1
WO2025030172A1 PCT/US2024/040894 US2024040894W WO2025030172A1 WO 2025030172 A1 WO2025030172 A1 WO 2025030172A1 US 2024040894 W US2024040894 W US 2024040894W WO 2025030172 A1 WO2025030172 A1 WO 2025030172A1
Authority
WO
WIPO (PCT)
Prior art keywords
virtual machines
user
pool
virtual machine
distinct
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
PCT/US2024/040894
Other languages
French (fr)
Inventor
Kevin HARITMONDS
Vijay Kumar
Boburmirzo KHAMRAKULOV
Ananya MAITI
Vikram ATHARE
Arvind Narayanan
Yogesh BUJUVALLY LINGARAJU
Ankur MUKHERJEE
Priya Darshini
Kunal Soni
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Schlumberger Canada Ltd
Services Petroliers Schlumberger SA
Geoquest Systems BV
Schlumberger Technology Corp
Original Assignee
Schlumberger Canada Ltd
Services Petroliers Schlumberger SA
Geoquest Systems BV
Schlumberger Technology Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Schlumberger Canada Ltd, Services Petroliers Schlumberger SA, Geoquest Systems BV, Schlumberger Technology Corp filed Critical Schlumberger Canada Ltd
Publication of WO2025030172A1 publication Critical patent/WO2025030172A1/en
Pending legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5011Pool

Definitions

  • One method of providing the physical resources, operating system, and software resources used by a SAAS system is to provisional a virtual machine hosted on a server.
  • the server is accessible by a user device of the user desiring to use the SAAS.
  • FIG. 10 shows a method for assigning a virtual machine in the context of the examples of FIG. 4 through FIG. 9, in accordance with one or more embodiments.
  • a virtual machine is provisioned after a user requests the virtual machine, in some cases, forty-five minutes or more may be used to provision the virtual machine. During this time, the virtual machine provisioning process could fail for any number of technical reasons, forcing the user to restart a provisioning process and possibly causing undesirable user frustration.
  • the one or more embodiments also provide the capability of creating and maintaining multiple tiers of pools of virtual machines.
  • the user may have access to a pool of virtual machines that includes sub-pools of virtual machines.
  • Each sub-pool of virtual machines may be provided with different options for selecting an individual virtual machine.
  • users among different sub-organizations within a larger organization may have access to different pools of virtual machines.
  • the pools of virtual machines may be controlled using a larger pool of virtual machines maintained by an administrator at the user organization who has been granted sufficient administrative privileges to configure the various pools of virtual machines.
  • “user” may also be an automated process that requests a virtual machine be provisioned as an output of the automated process. Thus, a “user” is not necessarily a human.
  • FIG. 1 shows a computing system, in accordance with one or more embodiments.
  • the system shown in FIG. 1 includes a server data repository (100).
  • the server data repository (100) is a type of storage unit and/or device (e.g., a file system, database, data structure, or any other storage mechanism) for storing data.
  • the server data repository (100) may include multiple different, potentially heterogeneous, storage units and/or devices.
  • the CRMs (104) include user profiles (118), such as user profile (120).
  • the user profiles (118) are associated with ones of the distinct user credentials, described below. It is possible that multiple ones of the distinct user credentials are associated with a single user profile, such as the user profile (120). However, one user profile (e.g., the user profile (120)) is associated with one of the CRMs (104) (e.g., the selected CRM (116)). Thus, for example, the user profile (120) is associated with the selected CRM (116), but the user profile (120) could be associated with multiple distinct user credentials in some cases.
  • Each of the user profiles (118) is a set of data, code, or both that defines the configuration of a virtual machine when the selected CRM (116) is associated with a selected virtual machine (described below).
  • the user profiles (118) may be modified by the options (112) when distinct user devices log into the system using the user credentials (106). Otherwise, the user profiles (118) are used to define the selection and configuration of virtual machines or virtual machine pools when the user logs into the system using the user credentials (106).
  • the CRMs (104) also may store one or more rules (126), such as rule (128), which may be the rules mentioned immediately above.
  • a rule may be a script or some other code executable for defining how the selected CRM (116) is to be assigned to a selected virtual machine, as summarized above and as described with respect to FIG. 2.
  • the rales (126) may specify the assignment of a selected virtual machine, from among the available virtual machines, to a distinct user device.
  • the rales (126) may be considered as defined within the user profiles (118), in some cases. In any case, the rales (126) specify the provisioning of the selected virtual machine with the selected CRM (116).
  • the pools of virtual machines (132) are composed of multiple virtual machines that are associated with each other and managed under a common virtual machine management scheme.
  • the pools of virtual machines (132) includes pool A (134) and pool B (136), each of which are composed of multiple virtual machines. What distinguishes the pool A (134) from the pool B (136) is how the virtual machines within those two pools are associated with each other by a server controller (144), described below.
  • the server controller ( 144) may use the user profiles (118), and possibly the options (112) and the rules (126), to govern the pools of virtual machines (132). Thus, more or fewer virtual machines may be assigned to a given pool, and the arrangements of virtual machines within a pool may be adjusted, using the information contained in the user profiles (118), the options (112), or the rules (126).
  • each of the pools of virtual machines (132) may contain multiple virtual machines, for purposes of illustration the pool B (136) is described as including a first subset of virtual machines (138), a second subset of virtual machines (140), and a selected virtual machine (142).
  • the subsets of virtual machines indicate that different classes, or states of preparedness, may be assigned to virtual machines in a given pool.
  • an individual virtual machine is not ready for immediate use. Instead, some aspect of the virtual machine in question is to be provisioned before a user can start using the virtual machine. For example, processing resources, operating system resources, etc. may be assigned and the virtual machine booted before use.
  • the virtual machine in question is defined by no more than the selected CRM (116). In this case, the rest of the resources of the virtual machine later will be assigned, associated, and booted.
  • an extended time may be used before the selected virtual machine (142) is available for use. Additionally, the user may assume the risk that provisioning of the selected virtual machine (142) at the lowest provisioning level may fail, possibly resulting in the provisioning process starting over again.
  • the first subset of virtual machines (138) are virtual machines that are at a higher level of provisioning, relative to the number range or scale range.
  • the second subset of virtual machines (140) are virtual machines that are at a lower level of provisioning, relative to the first subset of virtual machines (138) with respect to the number range or scale range.
  • first and second may be reversed in some instances.
  • More or fewer subsets of virtual machines at different number ranges or scale ranges of provisioning may be present in the pool B (136).
  • a third subset of virtual machines at an intermediate provisioning level between the first subset of virtual machines (138) and the second subset of virtual machines (140) may be present in the pool B (136).
  • the pool A (134) and the pool B (136) may have varying numbers of subsets of virtual machines.
  • An advantage to the arrangement of different virtual machines at different provisioning levels is that the users are able to allocate the available computing resources to “hot” and “cold” virtual machines subsets in a pool to which they have paid to have access.
  • users can more efficiently take advantage of computing resources based on user desires and the settings established by the users and as further limited by the administrator of the server(s) (102).
  • the pool B (136) includes the selected virtual machine (142).
  • the selected virtual machine (142) is the virtual machine that is selected for assignment to a specific distinct user credential (/. e. , the distinct user credential A (108) or the distinct user credential B (110), for example).
  • the selected virtual machine (142) may be selected from among the first subset of virtual machines (138) and the second subset of virtual machines (140), in this example.
  • the selected virtual machine (142) could come from a virtual machine in the pool A (134), or in any of the pools of virtual machines (132).
  • the server(s) (102) also include the server controller (144).
  • the server controller (144) is software or application specific hardware that executes the rule (128) (or the rules (126)) that assigns a distinct user credential (e.g., the distinct user credential A (108)) to the selected virtual machine (142).
  • the server controller (144) is further configured, based on execution of the rule (128), to select the selected virtual machine (142) and assign the selected virtual machine to one of the distinct user credentials (106).
  • the server controller (144) may have other functions.
  • the server controller (144) also may control the provisioning of the selected virtual machine (142), if the selected virtual machine (142) is provisioned at a provisioning level than is less than a fully provisioned virtual machine.
  • the server controller (144) also may be configured to reconfigure the pools of virtual machines (132). For example, the server controller (144) may change how virtual machines are distributed among the pools of virtual machines (132). The server controller (144) may change the relative numbers of virtual machines within the first and second subsets of virtual machines within a given pool of virtual machines. The server controller (144) may govern aspects of the establishment, provisioning, and maintenance of the pools, the subsets of virtual machines within pools, and individual ones of the virtual machines.
  • the users may have some ability to manage operation of the server controller (144).
  • the server controller (144) may use the options (112) to control allocation of virtual machines to pools and subsets within pools. Use of the server controller (144) is described further with respect to FIG. 3.
  • Each of the distinct user devices (146) is a distinct computing device used by one of the users. It is possible that the distinct user devices (146) is one of the virtual machines in the pools of virtual machines (132) (in which case the virtual machine that is acting as the distinct user device (148) is being used to create a second virtual machine (z.e., the selected virtual machine (142)). Thus, for example, the distinct user device (148) could be a “hot” virtual machine which is then used while the selected virtual machine (142) (selected from among the “cold” virtual machines) is being provisioned. However, the distinct user devices (146) may be completely separate from, or remote from, the server(s) (102).
  • the distinct user device (148) is associated with a distinct display device (150), a distinct user credential (152), and a distinct request (154).
  • the word “distinct” in each case is used to indicate that the corresponding object is associated with one of the distinct user devices (146).
  • the term “distinct” refers to an individual association.
  • the distinct user device (148), in turn, is one of the distinct user devices (146).
  • the distinct display device (150) may be a variety of display devices.
  • the distinct display device (150) may be one or more monitors, speakers, touchscreens, other display devices.
  • the distinct user credential (152) may be a certificate, password, or some other security mechanism under the control of the distinct user device (148).
  • the distinct user credential (152) may match the corresponding distinct user credential in the user credentials (106) stored in the server data repository (100).
  • the distinct user credential (152) may be supplied by a user based on a prompt displayed on the distinct display device (150).
  • the distinct user device (148) may display a password prompt to the user, who then supplies the password.
  • the supplied password is provided to the server(s) (102), which compares the supplied password to the distinct user credential A (108), for example.
  • the distinct user credential A (108) may include more information than just the pre-determined password.
  • the distinct user credential A (108) may include the option (114) or other virtual machine configuration information.
  • the distinct user credential (152) may include more than just the supplied password, such as a supplied option setting for the options (112) or other virtual machine configuration information.
  • the distinct user devices (146) generates a distinct request (154).
  • the distinct request (154) is a request that is provided by the distinct user device (148) to the server(s) (102).
  • the distinct request (154) is a request to access a pool of virtual machines, or a specific subset of virtual machines within a pool, or a specific virtual machine within the pools of virtual machines (132).
  • the distinct request (154) may specify a requested provisioning level.
  • a default setting may be applied to the request.
  • the default setting may be controllable by the user, the administrator of the server(s) (102), or both.
  • the default setting may be to select a virtual machine from the first subset of virtual machines (138), a virtual machine from the second subset of virtual machines (140), or some other virtual machine in the pools of virtual machines (132).
  • FIG. 1 shows a configuration of components
  • other configurations may be used without departing from the scope of the one or more embodiments.
  • various components may be combined to create a single component.
  • the functionality performed by a single component may be performed by two or more components.
  • FIG. 2 shows a method for providing access to a selected virtual machine, in accordance with one or more embodiments. The method of FIG. 2 may be executed using the system shown in FIG. 1.
  • Block 200 includes receiving, from a user device operated by a user, a request to access a pool including virtual machines.
  • the request may be transmitted via a launch screen transmitted to a web browser of a user.
  • the user accesses the server via a web browser, or perhaps application specific software.
  • the server or the application specific software displays a launch screen to the user.
  • the user selects a widget or some command to access a pool of virtual machines.
  • the request possibly may be to access a specific virtual machine or a subset of virtual machines within a pool; however, the request for access is still being made to the pool of virtual machines.
  • the plurality of virtual machines may be a first subset of virtual machines and a second subset of virtual machines.
  • the first subset of virtual machines includes a first provisioning level.
  • the second subset of virtual machines includes a second provisioning level that is less than the first provisioning level.
  • the request specifies a provisioning level request.
  • Block 202 includes receiving a user profile associated with the user.
  • the user profile may be received from a selected CRM.
  • a server application verifies a user credential received from a distinct user device
  • the distinct user device is associated with the selected CRM.
  • the profile in the selected CRM is accessed, and the method may continue.
  • the user profile may be received from the distinct user device or may be stored on a server data repository.
  • Block 204 includes assigning, to the user, a selected virtual machine. Assigning may be performed according to instructions included in the request, the user profile, or a combination thereof.
  • the selected virtual machine may be selected from among the first subset of virtual machines and the second subset of virtual machines based on the user profile and further based on the provisioning level request in the user request.
  • a given pool of virtual machines, or a selected virtual machine within a subset of virtual machines in a pool may be selected based on a whether a “hot” or a “cold” virtual machine is requested.
  • Block 206 includes providing, to the user device, access to the selected virtual machine. Access may be provided over a network via a web browser, via an application executing on the user device, or by some other means.
  • the method of FIG. 2 may terminate thereafter.
  • the method of FIG. 2 may include more, fewer, different, or modified steps.
  • the selected virtual machine may be selected from among the second subset of virtual machines.
  • the method also includes completing, prior to providing access to the user device, provisioning of the selected virtual machine.
  • the method also includes receiving, as part of receiving the request to access the pool, a user credential from the user device.
  • the method also may include mounting a CRM, useable with the pool, based on the user credential.
  • Receiving the user profile includes receiving the user profile from the CRM.
  • the method also may include provisioning the selected virtual machine with the CRM.
  • the pool is one of several pools, each including different sets of virtual machines.
  • the method further includes selecting, prior to assigning, the pool from among the several pools.
  • the user profile specifies a configuration of virtual machines, and selecting the pool is performed based on the configuration.
  • the user profile may specify an image including a specification of at least one of software and hardware. Then, selecting the pool from among the several pools is further performed based on the specification.
  • the method also includes adjusting, after assigning, a configuration of the pool to generate an adjusted configuration. Then, an additional request to access the pool is received. Assignment of a second selected virtual machine of the pool may be limited based on the adjusted configuration.
  • the user profile may be one of several user profiles associated with the user.
  • the method also includes selecting, prior to assigning, the user profile from among the several user profiles belonging to the user. Selecting the user profile may be performed based on a login credential supplied by the user device.
  • FIG. 3 shows a method of provisioning pools of virtual machines, in accordance with one or more embodiments.
  • the method of Fig. 3 may be executed using the system of FIG. 1. Note that block 300 through block 306 may be performed concurrently, in sequence, or in a sequence different from that represented in FIG. 3.
  • Block 300 includes identifying a pool of virtual machines from a group of pools of virtual machines.
  • pools of virtual machines may be associated to a larger logical entity (z.e., a group of pools of virtual machines) that is assigned a name or other identifier.
  • each of the pools may be displayed to a user as separate entities, without showing the groups of pools to the user.
  • the server administrator that controls the virtual machines of the one or more embodiments may decide how groups of pools are displayed to various different users.
  • multiple groups of pools of virtual machines may be created and maintained by the one or more embodiments.
  • the identified pool of virtual machines may be assigned a name or other identifier. Access to the pool and control of the virtual machines of the various subsets may be managed by managing rules and settings that apply to the identified pool of virtual machines. [0082] In some embodiments block 300 may be optional. For example, in some cases, one pool of virtual machines is available, or from a user perspective one pool of virtual machines among many pools is visible or accessible. In such a case, step 300 is no longer used.
  • Block 302 includes provisioning, for the pool of virtual machines, a first subset of virtual machines at a first provisioning level. For example, a subset of virtual machines may be provisioned at a high provision level, relative to a pre- established number scale or scale range. Provisioning the first subset of virtual machines may include ensuring that a fully available virtual machine is ready to perform computing tasks that may be assigned to it. Thus, a user may access a virtual machine in the first subset of virtual machines and begin using software and data provisioned for that virtual machine immediately.
  • Block 302 includes provisioning, for the pool of virtual machines, a second subset of virtual machines at a second provisioning level that is less than the first provisioning level. For example, a subset of virtual machines may be provisioned at a second provision level, lower than the first provisioning level, relative to a pre-established number scale or scale range.
  • Provisioning the second subset of virtual machines may include, for example, assigning fast memory, applications, or a small portion of processor resources available to a server system.
  • An operating system may be assigned to the virtual machine, but has not yet been booted, for example. Thus, a user may have to wait until the virtual machine at the second provisioning level is fully provisioned and ready for use.
  • Block 308 includes provisioning the CRMs.
  • Each CRM is associated with, for each user, a distinct user credential.
  • Each CRM is useable with the pools of virtual machines.
  • Each CRM stores a distinct user profile associated with each distinct user credential. Thus, for each distinct user profile, there is a corresonding CRM.
  • Each distinct user profile specifies a distinct image to be associated with corresponding ones of the pools of virtual machines.
  • each user profile specifies the software or hardware specifications which may be used to determine which pool of virtual machines should be accessed, and to determine which virtual machine within the selected pool should be associated with the CRM.
  • each distinct user profile specifies a distinct rule for assigning, based on a selected image, a pool of virtual machines to a distinct user device of a distinct user. The rule also may be for assigning one virtual machine, from a selected pool, to the distinct user device.
  • the one virtual machine (z.e., the selected virtual machine) is selectable from one of the first subset of virtual machines and the second subset of virtual machines.
  • the selected virtual machine may be a “hot” virtual machine or a “cold” virtual machine.
  • the method of FIG. 3 may be varied.
  • the method may include more, fewer, or different blocks.
  • the method of FIG. 3 also includes receiving a request from the distinct user device to provision a selected virtual machine.
  • the method also includes identifying, based on the distinct user credential, a selected CRM associated with the distinct user, from among the CRMs.
  • the method also includes selecting, based on the distinct rule and the distinct user profile stored on the selected CRM, the one virtual machine. The method then includes assigning access to the one virtual machine to the distinct user device. Finally, the method also includes provisioning the one virtual machine with the selected CRM. [0092] In another embodiment, the method of FIG. 3 may also include receiving a request from the distinct user device to provision a selected virtual machine. In this case, the method also includes identifying, based on the distinct user credential, a selected CRM associated with the distinct user, from among the CRMs.
  • the method also includes selecting, based on the distinct user profile stored on the selected CRM, a selected pool of virtual machines from among the pools of virtual machines. The method then includes selecting, based on the distinct rule and the distinct user profile, the one virtual machine from among the selected pool of virtual machines. The method then also includes assigning access to the one virtual machine to the distinct user device. Finally, the method then includes provisioning the one virtual machine with the selected CRM.
  • the distinct CRM stores an image that specifies at least one of software and hardware specifications.
  • the method further includes further selecting the one virtual machine based on the image.
  • the distinct CRM stores an image that specifies at least one of software or hardware specifications.
  • the method also includes further selecting a selected pool from among the plurality of pools based on the image.
  • the method then includes further selecting the one virtual machine based on the image.
  • the method of FIG. 3 also includes receiving a request from the distinct user device to reconfigure options for the pools. Then, the method includes reconfiguring the options for the plurality of pools.
  • the options may include at least one of numbers of available virtual machines in the first subset of virtual machines; numbers of available virtual machines in the second subset of virtual machines; numbers of total available virtual machines among both the first subset of virtual machines and the second subset of virtual machines; and modifying the distinct rule.
  • FIG. 4, FIG. 5, and FIG. 6 show an example of an architecture for provisioning and assigning virtual machines, in accordance with one or more embodiments. The following example is for explanatory purposes and not intended to limit the scope of the one or more embodiments.
  • FIG. 4 through FIG. 6 share some common reference numerals, which refer to common objects having common descriptions.
  • UI refers to “user interface” and the term “VM” refers to “virtual machine.”
  • VM refers to “virtual machine.”
  • API refers to “application programming interface.”
  • FIG. 4 shows an architecture for managing sets of pools, each of which may include subsets of virtual machines, as described above with respect to FIG. 1 through FIG. 3.
  • the architecture of FIG. 4 includes a VM pool API (400).
  • the VM pool API (400) is the application programming interface that allows an administrator (402) and a user (404) to interact with the architecture shown in FIG. 4.
  • the administrator (402) may interact with the VM pool API (400) via a dashboard, which may be presented to the administrator on an administrative computing device via a web browser or some application specific software, which may be specific to the administrator (402).
  • the user (404) may interact with the VM pool API (400) via a user interface (406).
  • the user interface (406) may be a local web browser (z.e., hosted on the user device of the user (404)), or may be application specific software either hosted on the remote user device or hosted by the server and accessed by the user (404).
  • the VM pool API (400) accesses a VM pool binding service (408) via a network resources service bus (410).
  • the VM pool binding service (408) applies the rule(s) in the user profile accessed from the CRM associated with the user credential of the user (404). Assuming a virtual machine is available in a pool of virtual machines that are available, then the VM pool binding service (408) get a virtual machine from a VM pool operator (412).
  • the VM pool operator (412) also may interact with the VM pool API (400) to give the user choices during the provisioning process.
  • the VM pool operator (412) then commands a provisioning service (414) to assign a user-agnostic virtual machine from among a pool of VMs (416) residing on a tenant (418) of an enterprise system.
  • a provisioning service 414 to assign a user-agnostic virtual machine from among a pool of VMs (416) residing on a tenant (418) of an enterprise system.
  • the VM pool API (400) may access a database (420) on the tenant (418).
  • the database (420) may be the server data repository (100) of FIG. 1, for example.
  • the VM pool binding service (408) may assign a new CRM to the user credential.
  • New rules and options may be generated by querying the user via the VM pool API (400) and the user interface (406).
  • the new CRM may be provisioned with a selected virtual machine according to the new rules and options.
  • FIG. 5 shows the architecture of FIG. 4, from a process perspective.
  • the dashed line (500) separates the client-side processes from the serverside processes.
  • the user (404) is using a user interface displayed by a user device (502) in order to connect to the VM pool API (400).
  • the VM pool API (400) connects to the VM pool binding service (408).
  • the VM pool binding service (408) binds one of the available virtual machines provided by the server, as described below with respect to the server-side process.
  • the user device (502) is then connected to the selected virtual machine (504).
  • the administrator (402) uses the VM pool API (400) to access the VM pool operator (412).
  • the VM pool API (400) is shown twice in FIG. 5 in order to simplify the description of the flow representation, though the administrator (402) and the user (404) may access the same API, as shown in FIG. 4.
  • the administrator may use the VM pool operator (412) to determine the number of hot virtual machines available in a first subset of virtual machines (506), the number of cold virtual machines available in a second subset of virtual machines (508), and the maximum number of virtual machines that may operate at a time within one pool (510) of virtual machines.
  • the virtual machines in the pool (510) of virtual machines (the hot subset and the cold subset) are allocated from available network resources (512).
  • the sum of the number of currently assigned virtual machines, the number of available hot virtual machines, and the number of available cold virtual machines equals the maximum number of virtual machines allowed in the pool (510).
  • the maximum number of virtual machines may be set. Thus, when a cold virtual machine or a hot virtual machine is assigned, the number of assigned virtual machines increase and the relative number available cold virtual machines or hot virtual machines decreases. However, the maximum number of virtual machines remains the same, unless the user takes action to increase the maximum number of virtual machines (presumably by paying more for a higher service level agreement).
  • FIG. 6 shows that multiple pools may be available. For example, the pool (510) shown in FIG. 5 may be replaced with multiple pools of virtual machines. Alternatively, the pool (510) shown in FIG.
  • FIG. 6 shows a tenant VM pool (600), which includes multiple pools of virtual machines.
  • the multiple pools of virtual machines include pool #1 (602), pool #2 (604), pool #3 (606), and pool #4 (608).
  • Each of the pools may include subsets of pools; namely hot virtual machines la (610), cold pool lb (612), hot pool 2a (614), cold pool 2b (616), hot pool 3a (618), cold pool 3b (620), hot pool 4a (622), and cold pool 4b (624).
  • FIG. 6 shows the flexibility of maintaining the tenant VM pool (600) with multiple pools of virtual machines, each including subsets of virtual machines. For example, each pool may be provisioned to different sizes.
  • the “size” of a pool represents the amount of processing resources assigned to the pool, relative to the total amount of processing resources that are available to be assigned to virtual machines.
  • the “size” of a pool may reflect the total number of virtual machines available in the pool, or a combination of processing resource relative allocation and number of virtual machines.
  • a customer due to expense and processing resource limitations, may desire access to a small number of available virtual machines, virtual machines of modest size, or a combination thereof.
  • the customer may select access to a “medium” pool (626), which is pre-provisioned with a smaller maximum number of virtual machines (resulting in fewer total hot and cold virtual machines), with each of the virtual machines being of modest size.
  • the medium pool (626) may include one or more large size virtual machines, but the total available virtual machines are small, relative to other sizes of pools available.
  • the other pools may be of different sizes.
  • the pool #2 (604) may be a “large” pool (628)
  • the pool #3 (606) may be an “extra-large” sized pool (630)
  • the pool #4 (608) may be a “triple extra-large” sized pool (632).
  • Each pool has increasing available resources, in terms of one or more of the number of virtual machines available, the proportions of the provisioning status of the subsets of virtual machines (i.e., “hot” or “cold” virtual machines), or the size of the virtual machines within the corresonding pool.
  • a user may have a first user credential for when the user desires to execute image 1 (634) and a second user credential for when the user desires to execute image 2 (636).
  • the image 1 (634) may be suitable for execution on medium pool (626) or the large pool (628), but the extra-large pool (630) or the triple extra-large pool (632) have an overabundance of computing resources relative to computing resources used to execute the image 1 (634).
  • the user may execute the image 1 (634) more frequently, but execute the image 2 (636) less frequently.
  • the user has one set of options and rules for the first user credential.
  • the user s set of options and rules provide that when the user desires to execute the image 1 (634), the user accesses the large pool (628).
  • the large pool (628) has a greater proportion of the hot virtual machines la (610), relative to the cold virtual machines lb (612).
  • the medium pool (626) therefore may be referred-to as highly available.
  • the user desires greater processing resources when executing the image 1 (634).
  • the user may also have a second user credential which has different options and rules that the user may configure upon login.
  • One set of options and rules for the second user credential may be used to access the extralarge pool (630) for executing the image 2 (636).
  • the other set of options and rules for the second user credential may be used to access the triple extra-large pool (632) for executing the image 2 (636).
  • FIG. 7, FIG. 8, and FIG. 9 show example screenshots of a graphical user interface for interacting with the architecture shown in FIG. 4, FIG. 5, and FIG.
  • screenshots shown in FIG. 1 may be used to manipulate the pools of virtual machines or to accomplish access to a virtual machine shown in FIG. 4 through FIG. 6.
  • FIG. 7 shows a screenshot of a start screen (700), which may be displayed to an end user that desires access to a virtual machine.
  • the cunent number of virtual machines may be listed in a job summary window (702). Details of a selected virtual machine may be displayed in a detail window (704).
  • a user may begin a session by selecting a start session widget (706).
  • a user may access or request a particular network by selecting a network widget (708).
  • a user credential may be referenced or entered via an access token input widget (710).
  • Additional widgets (712) may be added to provide further functionality, such as to get a log, get envelop properties, manipulate settings, or specify rules or options, etc. Note that while rules and options may be stored on a server-side CRM to be associated with a selected virtual machine, and assigned to the user credential, rule or options also may be directly provided by a user at the start screen (700) in some embodiments.
  • FIG. 8 shows a screenshot of a VM pool operator (800) for virtual machine pool management.
  • the VM pool operator (800) may be the VM pool operator (412) in FIG. 4 and FIG. 5.
  • the VM pool operator (800) may be used to configure pools of virtual machines, subsets of pools of virtual machines, or individual virtual machines.
  • the user may specify the tenant name (802).
  • the user may specify the percent population (804).
  • the percent population for a selected pool is the percentage of hot virtual machines to cold virtual machines, in this example.
  • Other aspects of the virtual machine pool may be varied.
  • FIG. 9 shows a screenshot of a status screen showing the current states of various virtual machine pools.
  • the screenshot shown in FIG. 9 may be accessed via the VM pool operator (800) shown in FIG. 8.
  • the user is permitted to change, by user credential, the numbers between the hot virtual machines, the cold virtual machines, the maximum number of virtual machines, and various other technical aspects of the virtual machines in a given pool associated with the user credential.
  • the current state shown in the screenshot of FIG. 9 may vary from what is shown.
  • pool setting (900) is associated with user credential “vmlto4xl,” which in this example is a “medium” sized pool.
  • the pool setting (900) indicates two available hot virtual machines, two available cold virtual machines, and fourteen total number of virtual machines. Because the maximum number of virtual machines is 14, there is an application that ten virtual machines are already assigned.
  • Other information is shown for the virtual machine pool, such as the central processing unit (cpu) type, graphics processing unit (gpu) type, memory, disk size, machine type, and other information.
  • pool setting (902) is associated with a user credential associated with several different customers.
  • the pool setting (902) is a “triple extra-large” sized pool.
  • the pool setting (900) indicates 96 available hot virtual machines, 96 available cold virtual machines, and 965 total number of virtual machines. Because the maximum number of virtual machines is 965, there is an application that 773 virtual machines are already assigned.
  • Other information is shown for the virtual machine pool, such as the central processing unit (cpu) type, graphics processing unit (gpu) type, memory, disk size, machine type, and other information.
  • FIG. 10 shows a method for assigning a virtual machine in the context of the examples of FIG. 4 through FIG. 9, in accordance with one or more embodiments.
  • the method of FIG. 10 also may be executed using the system shown in FIG. 1.
  • Block 1000 includes setting virtual machine metadata.
  • the virtual machine metadata may be set by accessing a server data repositoiy that stores a corresonding user credential.
  • This virtual machine metadata may be stored as cloud storage.
  • the virtual machine metadata may be used by the operating system and applications to provide user and project contexts.
  • Block 1002 includes assigning a disk; else, creating a disk if a disk does not exist.
  • the disk may be assigned by the application programming interface.
  • the disk may be assigned by assigning the pre-allocated CRM that is associated with the user credential supplied when requesting to assign the disk. If no disk is associated with the user credential, then the disk is created or provisioned from the available computing resources.
  • each user has their user own data disk (such as D: drive).
  • the user data disk may be persistent and mounted when user is connected to a virtual machine.
  • This user data disk also may be used to store their user profiles, such as my documents, my downloads, etc.
  • Block 1004 includes attaching the disk to a selected virtual machine.
  • the selected virtual machine is selected according to the rules and options set by the user on login, or set by the user credential, or both. If the virtual machine is a hot virtual machine, then assigning the disk means that the virtual machine is immediately available for use. If the virtual machine is a cold, or some other provisioning level less than hot, then the user may wait while other aspects of the selected virtual machine is provisioned. Note, however, that in an embodiment, the user may be able to access the CRM, even if a virtual machine is not assigned to the CRM.
  • a different virtual machine may be assigned every time user starts their virtual machine session. This assignment scheme means the same user's data disk may be mounted to the correspond virtual machine.
  • Block 1006 includes updating a table of users applications, and instances.
  • the table may be stored on the server data repository.
  • the table may be, for example, the virtual machine pool status shown in FIG. 9.
  • the updating step at block 1006 may be used to show list of applications and also to generate connection files (remote desktop protocol (RDP) or other remote desktop connection file, such as TGX Remote Desktop) correctly to the given user.
  • RDP remote desktop protocol
  • TGX Remote Desktop remote desktop protocol
  • Block 1008 includes updating a user context table.
  • the user context table may be updated via the application programming interface. Updating the user context table is used to store the user’s current subscription information when the session is initiated by the user. Block 1008 may be used for information tracking purposes.
  • some applications may call an application programming interface to retrieve "UserContext” information, such as to know user's current project name, user's department, user's country name, contract details, and billing details. This information may be stored on a "UserContext" table, which may be a persistent database on the CRM.
  • Block 1010 optionally includes resetting a password via a provisioning service application programming interface.
  • Resetting the user password may be requested to remove possibility of a user interface being unable to retrieve a list of applications and then to connect appropriately to the selected virtual machine (via RDP or TGX) due to user credentials being expired. Note that resetting the password may be optional in some cases.
  • Block 1012 includes setting system environment variables.
  • virtual machine applications that the user desires to execute on the requested virtual machine may use environment variables to retrieve user context, application settings, etc. This step is novel as an AZURE® run command may be used to set system environment variables.
  • block 1012 may be optional in some cases, such as when requested applications do not need such variables, when a user desires to set the variables, or when the applications are to be selected after the selected virtual machine is connected.
  • Block 1014 includes executing scripts to assigned selected virtual machines. Any custom scripts that request user context may be run after previous steps have been completed. Thus, block 1014 may be optional in some cases. In one embodiment, the method of FIG. 10 may terminate thereafter.
  • Embodiments may be implemented on a computing system specifically designed to achieve an improved technological result.
  • the features and elements of the disclosure provide a technological advancement over computing systems that do not implement the features and elements of the disclosure.
  • Any combination of mobile, desktop, server, router, switch, embedded device, or other types of hardware may be improved by including the features and elements described in the disclosure. For example, as shown in FIG.
  • the computing system (1100) may include one or more computer processor(s) (1102), non-persistent storage device(s) (1104), persistent storage device(s) (1106), a communication interface (1108) (e.g., Bluetooth interface, infrared interface, network interface, optical interface, etc.), and numerous other elements and functionalities that implement the features and elements of the disclosure.
  • the computer processor(s) (1102) may be an integrated circuit for processing instructions.
  • the computer processor(s) may be one or more cores or micro-cores of a processor.
  • the computer processor(s) (1102) includes one or more processors.
  • the one or more processors may include a central processing unit (CPU), a graphics processing unit (GPU), a tensor processing units (TPU), combinations thereof, etc.
  • the input devices (1110) may include a touchscreen, keyboard, mouse, microphone, touchpad, electronic pen, or any other type of input device.
  • the input devices (1110) may receive inputs from a user that are responsive to data and messages presented by the output devices (1112).
  • the inputs may include text input, audio input, video input, etc., which may be processed and transmitted by the computing system (1100) in accordance with the disclosure.
  • the communication interface (1108) may include an integrated circuit for connecting the computing system (1100) to a network (not shown) (e.g., a local area network (LAN), a wide area network (WAN) such as the Internet, mobile network, or any other type of network) and/or to another device, such as another computing device.
  • a network not shown
  • LAN local area network
  • WAN wide area network
  • the output devices (1112) may include a display device, a printer, external storage, or any other output device. One or more of the output devices may be the same or different from the input device(s).
  • the input and output device(s) may be locally or remotely connected to the computer processor(s) (1102). Many different types of computing systems exist, and the aforementioned input and output device(s) may take other forms.
  • the output devices (1112) may display data and messages that are transmitted and received by the computing system (1100).
  • the data and messages may include text, audio, video, etc., and include the data and messages described above in the other figures of the disclosure.
  • Software instructions in the form of computer readable program code to perform embodiments may be stored, in whole or in part, temporarily or permanently, on a non-transitory computer readable medium such as a CD, DVD, storage device, a diskette, a tape, flash memory, physical memory, or any other computer readable storage medium.
  • the software instructions may correspond to computer readable program code that, when executed by a processor(s), is configured to perform one or more embodiments, which may include transmitting, receiving, presenting, and displaying data and messages described in the other figures of the disclosure.
  • the computing system (1100) in FIG. 11.1 may be connected to or be a part of a network.
  • the network (1120) may include multiple nodes (e.g., node X (1122), node Y (1124)).
  • Each node may correspond to a computing system, such as the computing system shown in FIG. 11.1, or a group of nodes combined may correspond to the computing system shown in FIG. 11.1.
  • embodiments may be implemented on a node of a distributed system that is connected to other nodes.
  • embodiments may be implemented on a distributed computing system having multiple nodes, where each portion may be located on a different node within the distributed computing system.
  • one or more elements of the aforementioned computing system (1100) may be located at a remote location and connected to the other elements over a network.
  • the nodes may be configured to provide services for a client device (1126), including receiving requests and transmitting responses to the client device (1126).
  • the nodes may be part of a cloud computing system.
  • the client device (1126) may be a computing system, such as the computing system shown in FIG. 11.1. Further, the client device (1126) may include and/or perform at least a portion of one or more embodiments.
  • the computing system of FIG. 11.1 may include functionality to present raw and/or processed data, such as results of comparisons and other processing.
  • presenting data may be accomplished through various presenting methods.
  • data may be presented by being displayed in a user interface, transmitted to a different computing system, and stored.
  • the user interface may include a GUI that displays information on a display device.
  • the GUI may include various GUI widgets that organize what data is shown as well as how data is presented to a user.
  • the GUI may present data directly to the user, e.g., data presented as actual data values through text, or rendered by the computing device into a visual representation of the data, such as through visualizing a data model.
  • connection may be direct or indirect (e.g., through another component or network).
  • a connection may be wired or wireless.
  • a connection may be temporary, permanent, or semi-permanent communication channel between two entities.
  • ordinal numbers e.g., first, second, third, etc.
  • an element i.e., any noun in the application.
  • the use of ordinal numbers is not to imply or create any particular ordering of the elements nor to limit any element to being a single element unless expressly disclosed, such as by the use of the terms "before”, “after”, “single”, and other such terminology. Rather, the use of ordinal numbers is to distinguish between the elements.
  • a first element is distinct from a second element, and the first element may encompass more than one element and succeed (or precede) the second element in an ordering of elements.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

A method including receiving, from a user device operated by a user, a request to access a pool of virtual machines. The virtual machines include a first subset of virtual machines and a second subset of virtual machines. The first subset of virtual machines are at a first provisioning level. The second subset of virtual machines includes a second provisioning level that is less than the first provisioning level. The request specifies a provisioning level request. The method also includes receiving a user profile associated with the user. The method also includes assigning, to the user, a selected virtual machine. The selected virtual machine is selected from among the first subset of virtual machines and the second subset of virtual machines based on the user profile and further based on the provisioning level request. The method also includes providing, to the user device, access to the selected virtual machine.

Description

DYNAMIC ASSOCIATION OF PRECONFIGURED
VIRTUAL MACHINES TO DOMAIN USERS
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application claims the benefit of Indian Patent Application No. 202311052246 entitled “DYNAMIC ASSOCIATION OF PRECONFIGURED VIRTUAL MACHINES TO DOMAIN USERS,” filed August 3, 2023, the disclosure of which is incorporated herein by reference in its entirety.
BACKGROUND
[0002] An organization may offer one or more applications as “software as a service” (SAAS). The applications may operate on vast amounts of data. In some cases, the applications are accessed via a network. Such a network- accessed application may execute complex operations on the vast amounts of data.
[0003] One method of providing the physical resources, operating system, and software resources used by a SAAS system is to provisional a virtual machine hosted on a server. The server is accessible by a user device of the user desiring to use the SAAS.
[0004] A virtual machine is a software construct that operates, to the perspective of a user, perspective of software executing within the virtual machine, and to the perspective of the server that hosts the virtual machine, as a self-contained computer. For example, a virtual machine may use pre-determined amounts of available processing power, available short term memory, available long term memory, available networking resources, available operating systems, available applications, etc. In brief, the virtual machine is a logically distinct computer that is virtually carved from the larger server system. [0005] Thus, a user may use a web browser to log onto a virtual machine provisioned to execute the SAAS that uses the desired data. In this manner, a lightweight computing system (one with fewer resources than the server being accessed) can access and use a SAAS that otherwise might exceed the computing resources of the lightweight computing system.
SUMMARY
[0006] The one or more embodiments include a method of assigning a virtual machine. The method includes receiving, from a user device operated by a user, a request to access a pool of virtual machines. The virtual machines include a first subset of virtual machines and a second subset of virtual machines. The first subset of virtual machines are at a first provisioning level. The second subset of virtual machines includes a second provisioning level that is less than the first provisioning level. The request specifies a provisioning level request. The method also includes receiving a user profile associated with the user. The method also includes assigning, to the user, a selected virtual machine. The selected virtual machine is selected from among the first subset of virtual machines and the second subset of virtual machines based on the user profile and further based on the provisioning level request. The method also includes providing, to the user device, access to the selected virtual machine. In other embodiments, a method may include provisioning the virtual machines by identifying a pool of virtual machines, provisioning a first subset of virtual machines in the pool at a first provisioning level, provisioning a second subset of virtual machines in the pool at a second provisioning level that is less than the first provisioning level, and provisioning computer readable media associated with individual users with the virtual machines.
[0007] Other aspects of the one or more embodiments will be apparent from the following description and the appended claims. BRIEF DESCRIPTION OF DRAWINGS
[0008] FIG. 1 shows a computing system, in accordance with one or more embodiments.
[0009] FIG. 2 shows a method for providing access to a selected virtual machine, in accordance with one or more embodiments.
[0010] FIG. 3 shows a method of provisioning pools of virtual machines, in accordance with one or more embodiments.
[0011] FIG. 4, FIG. 5, and FIG. 6 show an example of an architecture for provisioning and assigning virtual machines, in accordance with one or more embodiments.
[0012] FIG. 7, FIG. 8, and FIG. 9 show example screenshots of a graphical user interface for interacting with the architecture shown in FIG. 4, FIG. 5, and FIG. 6, in accordance with one or more embodiments.
[0013] FIG. 10 shows a method for assigning a virtual machine in the context of the examples of FIG. 4 through FIG. 9, in accordance with one or more embodiments.
[0014] FIG. 11.1 and FIG. 11.2 show a computing system and network environment, in accordance with one or more embodiments.
[0015] Like elements in the various figures are denoted by like reference numerals for consistency.
DETAILED DESCRIPTION
[0016] In general, embodiments are directed to providing user flexibility with respect to accessing and defining virtual machines. The one or more embodiments permit a user to access a virtual machine selected from among multiple levels of availability of virtual machines in a pool of available virtual machines. The one or more embodiments also permit a user to reconfigure virtual machines within a pool, and to reconfigure multiple pools of virtual machines that might be accessible by multiple users belonging to an organization.
[00171 A technical problem exists in the field of virtual machines. The problem is that a tension exists between the time used to provision a virtual machine and the cost of maintaining provisioned virtual machines in teims of both processing resources and monetary resources.
[0018] For example, if a virtual machine is provisioned after a user requests the virtual machine, in some cases, forty-five minutes or more may be used to provision the virtual machine. During this time, the virtual machine provisioning process could fail for any number of technical reasons, forcing the user to restart a provisioning process and possibly causing undesirable user frustration.
[0019] However, if a server’s computing resources are divided up into fully provisioned virtual machines so that a virtual machine may be quickly accessed by a user, then the computing cost and hence the monetary cost of maintaining the virtual machines may be undesirable. Furthermore, the overall availability of virtual machines may be decreased, also leading to undesirable user frustration. Still further, flexibility is lost, as not some users may not use the same amount of processing resources for a given software suite that is to be accessed by a given user. The loss in flexibility may also lead to the server being able to host as many virtual machines.
[0020] The one or more embodiments provide for several technical solutions to the above-described technical problems. For example, the one or more embodiments create different pools of virtual machines that are provisioned at different levels of readiness. Thus, a user is given the ability to select which virtual machine to access at which cost. A user could access a powerful (relative to the set of computing tasks that may be performed) virtual machine that is readily available, at greater cost. A user could request provisioning of a new virtual machine at greater time, but at least cost. A user could request that a partially provisioned virtual machine be completely provisioned for a specific task, representing a compromise between the provisioning time and the provisioning cost. In essence, the one or more embodiments provide a server-side technical solution that grants a user the flexibility to choose a virtual machine and the time used before being able to access the chosen virtual machine.
[0021 J The one or more embodiments also provide the capability of creating and maintaining multiple tiers of pools of virtual machines. For example, the user may have access to a pool of virtual machines that includes sub-pools of virtual machines. Each sub-pool of virtual machines may be provided with different options for selecting an individual virtual machine. Thus, users among different sub-organizations within a larger organization may have access to different pools of virtual machines. The pools of virtual machines may be controlled using a larger pool of virtual machines maintained by an administrator at the user organization who has been granted sufficient administrative privileges to configure the various pools of virtual machines.
[0022] Still further, the virtual machines of the one or more embodiments and their pools may be configured for use by individual users. Thus, the virtual machines may be referred-to as “user-aware.” The availability of user-aware virtual machines increases the flexibility of accessing virtual machine, and also reduces the cost of maintaining virtual machines in terms of computing resources and monetary resources, and increases the overall availability of virtual machines.
[0023] As used herein, the term “user” may be an individual or entity. The term
“user” may also be an automated process that requests a virtual machine be provisioned as an output of the automated process. Thus, a “user” is not necessarily a human.
[0024] Attention is now turned to the figures, which together with the descriptions provided herein, relate the details of the technical solutions summarized above. FIG. 1 shows a computing system, in accordance with one or more embodiments. The system shown in FIG. 1 includes a server data repository (100). The server data repository (100) is a type of storage unit and/or device (e.g., a file system, database, data structure, or any other storage mechanism) for storing data. The server data repository (100) may include multiple different, potentially heterogeneous, storage units and/or devices.
[0025] The server data repository (100) is accessible by one or more server(s) (102). The server data repository (100) is distinguished from other computer readable storage media that may be described herein in terms of the relationship of the server data repository (100) to the server(s) (102). Specifically, the server data repository (100) contains information and/or computer readable program code that the server(s) (102) uses as part of administrating the one or more pools of virtual machines described herein. It is possible that the physical media that underlies the server data repository (100) contains partitions that include or more computer readable storage media (104) used to support the virtual machines described below. However, the server data repository (100) is nevertheless the portion of such media that is used by the server(s) (102) as part of the virtual machine administrative process described herein. The administrative process may refer to the method of FIG. 2 or FIG. 3, or the administrative examples provided in FIG. 4 through FIG. 10.
[0026] For the sake of brevity, the term “computer readable storage medium” may be referred-to as “CRM.” Similarly, the term “computer readable storage media” may be referred-to as “CRMs.” The computer readable storage medium or media may be non-transitory.
[0027] The server data repository (100) stores one or more user credentials (106), which include, in this example, distinct user credential A (108) and distinct user credential B (110). The user credentials (106) are one or more sets of information that describes various distinct users, passwords or other security information for the various distinct users, and settings for one or more virtual machines or one or more virtual machine pools described herein, and combinations thereof.
[0028] A distinct user credential (e.g., the distinct user credential A (108) or the distinct user credential B (110)) is one of the user credentials (106) that is for a specific, distinct user. Note that a given distinct user may have multiple distinct user credentials. Thus, there is not necessarily a one to one relationship between a distinct user and a distinct user credential, but each distinct user credential is associated with a single distinct user.
[0029] The server data repository (100) also stores one or more options (112), such as option (114). The options (112) are data received from a user device associated with a corresponding distinct user credential (i.e., one of the user credentials (106)). Optionally, the options (112) may be stored in the user profiles (118) associated with the selected CRM (116). The options (112) are parameters for configuring one or more of the virtual machines or the pools of virtual machines. The options may be in the foim of computer readable instructions or attribute value pairs. An example of the option (114) is shown in FIG. 9 (specifically referring to the attribute-value pairs, such as “desired hof ’ followed by the number “2,” for example).
[0030] The system shown in FIG. 1 also includes one or more of the CRMs (104). The CRMs (104) are data storage devices, or partitions thereof, associated with ones of the virtual machines described further below. The CRMs (104) may be partitions of the server data repository (100), may be separate individual CRMs, or may be subdivisions of some other storage device controllable or accessible by the server(s) (102). Each of the CRMs (104), upon provisioning, may be associated with any of the virtual machines.
[0031] Reference may be made to a selected CRM (116). The selected CRM (116) is one of the CRMs (104), but is a specific CRM that has been assigned to a corresponding specific virtual machine. Still more particularly, the selected CRM (116) is the CRM that is selected to be assigned to the corresponding virtual machine.
[0032] In an embodiment, the CRMs (104) may be individually allocated to corresponding ones of distinct user credentials, described below. Thus, for example, the CRMs (104) may remain pre-allocated to one or more of the distinct user credentials and be ready for attachment to one of the virtual machines, as described with respect to FIG. 2.
[0033] The CRMs (104) include user profiles (118), such as user profile (120). The user profiles (118) are associated with ones of the distinct user credentials, described below. It is possible that multiple ones of the distinct user credentials are associated with a single user profile, such as the user profile (120). However, one user profile (e.g., the user profile (120)) is associated with one of the CRMs (104) (e.g., the selected CRM (116)). Thus, for example, the user profile (120) is associated with the selected CRM (116), but the user profile (120) could be associated with multiple distinct user credentials in some cases.
[0034] Each of the user profiles (118) is a set of data, code, or both that defines the configuration of a virtual machine when the selected CRM (116) is associated with a selected virtual machine (described below). The user profiles (118) may be modified by the options (112) when distinct user devices log into the system using the user credentials (106). Otherwise, the user profiles (118) are used to define the selection and configuration of virtual machines or virtual machine pools when the user logs into the system using the user credentials (106).
[0035] Each of the CRMs (104) also may store one or more images (122), including image (124). The images (122) are specifications of at least one of software and hardware that are to be associated with a corresponding virtual machine. Thus, for example, the image (124) may include a software suite stored on the selected CRM (116) that is intended for use when a given user uses a distinct user credential to log into the system. The image (124) also may store a hardware configuration that is to be associated with the selected CRM (116) when the selected CRM (116) is associated with the corresponding selected virtual machine.
[0036] Each distinct user profile of the user profiles (118) specifies a distinct image among the images (122) to be associated with corresponding ones of the pools of virtual machines (described below). Each of the user profiles (118) also may specify a distinct rule for assigning, based on a selected image from set of images, a pool of virtual machines to a distinct user device of a distinct user and for assigning one virtual machine to the distinct user device. Thus, for example, the user profile (120) may specify a rule for assigning one of the images (122) (e.g., the image (124)) one of the pools of virtual machines to a distinct user device. Additionally, the user profile (120) may specify a rule for assigning one or more of the virtual machines within that pool to the distinct user device.
[0037] The CRMs (104) also may store one or more rules (126), such as rule (128), which may be the rules mentioned immediately above. A rule may be a script or some other code executable for defining how the selected CRM (116) is to be assigned to a selected virtual machine, as summarized above and as described with respect to FIG. 2. [0038] Thus, the rales (126) may specify the assignment of a selected virtual machine, from among the available virtual machines, to a distinct user device. The rales (126) may be considered as defined within the user profiles (118), in some cases. In any case, the rales (126) specify the provisioning of the selected virtual machine with the selected CRM (116).
[0039] As mentioned above, the system shown in FIG. 1 includes the server(s) (102). Each of the server(s) (102) includes one or more processors, such as the processor (130). For ease of reference, the one or more embodiments describe “the processor (130).” However, the processor (130) may refer to multiple processors, possibly in a distributed computing environment. The processor (130) may refer to one or more processors configured to execute the functions of the server! s) (102) (such as, for example, to maintain and use the server data repository (100) or assign the selected CRM (116) to the selected virtual machine). However, the processor (130) also may refer to one or more processors, a portion of whose computing resources are assigned to the pools of virtual machines (132).
[0040] The pools of virtual machines (132) are composed of multiple virtual machines that are associated with each other and managed under a common virtual machine management scheme. Thus, for example, the pools of virtual machines (132) includes pool A (134) and pool B (136), each of which are composed of multiple virtual machines. What distinguishes the pool A (134) from the pool B (136) is how the virtual machines within those two pools are associated with each other by a server controller (144), described below.
[0041] For example, the pool A (134) may have one set of virtual machines, and the pool B (136) may have another set of virtual machines. Some of the user profiles (118) may specify that the set of virtual machines in the pool A (134) may be accessed by a distinct user credential, and others of the user profiles (118) may specify that the set of virtual machines in the pool B (136) may be accessed by another distinct user credential.
[0042] The server controller ( 144) may use the user profiles (118), and possibly the options (112) and the rules (126), to govern the pools of virtual machines (132). Thus, more or fewer virtual machines may be assigned to a given pool, and the arrangements of virtual machines within a pool may be adjusted, using the information contained in the user profiles (118), the options (112), or the rules (126).
[0043] While each of the pools of virtual machines (132) may contain multiple virtual machines, for purposes of illustration the pool B (136) is described as including a first subset of virtual machines (138), a second subset of virtual machines (140), and a selected virtual machine (142). The subsets of virtual machines indicate that different classes, or states of preparedness, may be assigned to virtual machines in a given pool.
[0044] For example, the first subset of virtual machines (138) may be provisioned at a first provisioning level. A provisioning level is a quantitative assessment of the extent to which a virtual machine is ready for use. For example, a provisioning level could be set to a number range (e.g. 1-5) or a scale range (e.g., “hot” or “cold.”). The terms “hot” and “cold” (or a number range) are quantitatively ascertainable, because the terms refer to satisfaction of a minimum or maximum set of properties associated with a provisioning level of one or more virtual machines.
[0045] At a high provisioning level, relative to the number range or scale range, an individual virtual machine is ready for immediate use. Thus, for example, the processor resources, CRM, operating system, software, and data are available for immediate use by a user logging into the system. Such a virtual machine may be referred to as a “hot” virtual machine, for example. A virtual machine at a high provisioning level may specify more overall computing resources to maintain, and temporarily reduce the overall available computing resources that could be assigned to provision other virtual machines when additional virtual machines are requested by other users.
[00461 At a low provisioning level, relative to the number scale or scale range, an individual virtual machine is not ready for immediate use. Instead, some aspect of the virtual machine in question is to be provisioned before a user can start using the virtual machine. For example, processing resources, operating system resources, etc. may be assigned and the virtual machine booted before use. At a lowest provisioning level, the virtual machine in question is defined by no more than the selected CRM (116). In this case, the rest of the resources of the virtual machine later will be assigned, associated, and booted.
[0047] At the lowest provisioning level, an extended time may be used before the selected virtual machine (142) is available for use. Additionally, the user may assume the risk that provisioning of the selected virtual machine (142) at the lowest provisioning level may fail, possibly resulting in the provisioning process starting over again.
[0048] In the one or more embodiments, the first subset of virtual machines (138) are virtual machines that are at a higher level of provisioning, relative to the number range or scale range. In turn, the second subset of virtual machines (140) are virtual machines that are at a lower level of provisioning, relative to the first subset of virtual machines (138) with respect to the number range or scale range. However, the terms “first” and “second” may be reversed in some instances.
[0049] More or fewer subsets of virtual machines at different number ranges or scale ranges of provisioning may be present in the pool B (136). Thus, for example, a third subset of virtual machines at an intermediate provisioning level between the first subset of virtual machines (138) and the second subset of virtual machines (140) may be present in the pool B (136). Note, also, that the pool A (134) and the pool B (136) may have varying numbers of subsets of virtual machines.
[0050] An advantage to the arrangement of different virtual machines at different provisioning levels is that the users are able to allocate the available computing resources to “hot” and “cold” virtual machines subsets in a pool to which they have paid to have access. Thus, users can more efficiently take advantage of computing resources based on user desires and the settings established by the users and as further limited by the administrator of the server(s) (102).
[0051] In this example, the pool B (136) includes the selected virtual machine (142). The selected virtual machine (142) is the virtual machine that is selected for assignment to a specific distinct user credential (/. e. , the distinct user credential A (108) or the distinct user credential B (110), for example). The selected virtual machine (142) may be selected from among the first subset of virtual machines (138) and the second subset of virtual machines (140), in this example. However, the selected virtual machine (142) could come from a virtual machine in the pool A (134), or in any of the pools of virtual machines (132).
[0052] The server(s) (102) also include the server controller (144). The server controller (144) is software or application specific hardware that executes the rule (128) (or the rules (126)) that assigns a distinct user credential (e.g., the distinct user credential A (108)) to the selected virtual machine (142). Thus, the server controller (144) is further configured, based on execution of the rule (128), to select the selected virtual machine (142) and assign the selected virtual machine to one of the distinct user credentials (106).
[0053] The server controller (144) may have other functions. For example, the server controller (144) also may control the provisioning of the selected virtual machine (142), if the selected virtual machine (142) is provisioned at a provisioning level than is less than a fully provisioned virtual machine.
[0054] The server controller (144) also may be configured to reconfigure the pools of virtual machines (132). For example, the server controller (144) may change how virtual machines are distributed among the pools of virtual machines (132). The server controller (144) may change the relative numbers of virtual machines within the first and second subsets of virtual machines within a given pool of virtual machines. The server controller (144) may govern aspects of the establishment, provisioning, and maintenance of the pools, the subsets of virtual machines within pools, and individual ones of the virtual machines.
[0055] The users may have some ability to manage operation of the server controller (144). For example, the server controller (144) may use the options (112) to control allocation of virtual machines to pools and subsets within pools. Use of the server controller (144) is described further with respect to FIG. 3.
[0056] The system shown in FIG. 1 either includes, or communicates with, one or more distinct user devices (146), such as distinct user device (148). At least some of the distinct user devices ( 146) may not be under the control of the entity or entities that manage the server data repository (100), the server(s) (102), or the CRMs (104). Such user devices are not part of the system of FIG. 1, and thus may be referred to as “remote distinct user devices.”
[0057] Each of the distinct user devices (146) is a distinct computing device used by one of the users. It is possible that the distinct user devices (146) is one of the virtual machines in the pools of virtual machines (132) (in which case the virtual machine that is acting as the distinct user device (148) is being used to create a second virtual machine (z.e., the selected virtual machine (142)). Thus, for example, the distinct user device (148) could be a “hot” virtual machine which is then used while the selected virtual machine (142) (selected from among the “cold” virtual machines) is being provisioned. However, the distinct user devices (146) may be completely separate from, or remote from, the server(s) (102).
[0058] The distinct user device (148) is associated with a distinct display device (150), a distinct user credential (152), and a distinct request (154). The word “distinct” in each case is used to indicate that the corresponding object is associated with one of the distinct user devices (146). Thus, the term “distinct” refers to an individual association. The distinct user device (148), in turn, is one of the distinct user devices (146).
[0059] The distinct display device (150) may be a variety of display devices. The distinct display device (150) may be one or more monitors, speakers, touchscreens, other display devices.
[0060] The distinct user credential (152) may be a certificate, password, or some other security mechanism under the control of the distinct user device (148). The distinct user credential (152) may match the corresponding distinct user credential in the user credentials (106) stored in the server data repository (100). The distinct user credential (152) may be supplied by a user based on a prompt displayed on the distinct display device (150). Thus, for example, the distinct user device (148) may display a password prompt to the user, who then supplies the password. The supplied password is provided to the server(s) (102), which compares the supplied password to the distinct user credential A (108), for example.
[0061] However, note that the distinct user credential A (108) may include more information than just the pre-determined password. For example, the distinct user credential A (108) may include the option (114) or other virtual machine configuration information. Likewise, the distinct user credential (152) may include more than just the supplied password, such as a supplied option setting for the options (112) or other virtual machine configuration information.
[0062] The distinct user devices (146) generates a distinct request (154). The distinct request (154) is a request that is provided by the distinct user device (148) to the server(s) (102). The distinct request (154) is a request to access a pool of virtual machines, or a specific subset of virtual machines within a pool, or a specific virtual machine within the pools of virtual machines (132). The distinct request (154) may specify a requested provisioning level.
[0063] If the distinct request (154) does not, in some manner, indicate the type or provisioning level of the virtual machine to be accessed, then a default setting may be applied to the request. The default setting may be controllable by the user, the administrator of the server(s) (102), or both. The default setting may be to select a virtual machine from the first subset of virtual machines (138), a virtual machine from the second subset of virtual machines (140), or some other virtual machine in the pools of virtual machines (132).
[0064] While FIG. 1 shows a configuration of components, other configurations may be used without departing from the scope of the one or more embodiments. For example, various components may be combined to create a single component. As another example, the functionality performed by a single component may be performed by two or more components.
[0065] FIG. 2 shows a method for providing access to a selected virtual machine, in accordance with one or more embodiments. The method of FIG. 2 may be executed using the system shown in FIG. 1.
[0066] Block 200 includes receiving, from a user device operated by a user, a request to access a pool including virtual machines. The request may be transmitted via a launch screen transmitted to a web browser of a user. In other words, the user accesses the server via a web browser, or perhaps application specific software. The server or the application specific software displays a launch screen to the user. The user then selects a widget or some command to access a pool of virtual machines. The request possibly may be to access a specific virtual machine or a subset of virtual machines within a pool; however, the request for access is still being made to the pool of virtual machines.
[0067] In the example of FIG. 2, the plurality of virtual machines may be a first subset of virtual machines and a second subset of virtual machines. The first subset of virtual machines includes a first provisioning level. The second subset of virtual machines includes a second provisioning level that is less than the first provisioning level. The request specifies a provisioning level request.
[0068] Block 202 includes receiving a user profile associated with the user. The user profile may be received from a selected CRM. Thus, for example, when a server application verifies a user credential received from a distinct user device, the distinct user device is associated with the selected CRM. The profile in the selected CRM is accessed, and the method may continue. However, in another embodiment, the user profile may be received from the distinct user device or may be stored on a server data repository.
[0069] Block 204 includes assigning, to the user, a selected virtual machine. Assigning may be performed according to instructions included in the request, the user profile, or a combination thereof.
[0070] The selected virtual machine may be selected from among the first subset of virtual machines and the second subset of virtual machines based on the user profile and further based on the provisioning level request in the user request. Thus, for example, a given pool of virtual machines, or a selected virtual machine within a subset of virtual machines in a pool, may be selected based on a whether a “hot” or a “cold” virtual machine is requested. [0071] Block 206 includes providing, to the user device, access to the selected virtual machine. Access may be provided over a network via a web browser, via an application executing on the user device, or by some other means.
[0072] In one embodiment, the method of FIG. 2 may terminate thereafter. However, the method of FIG. 2 may include more, fewer, different, or modified steps.
[0073] For example, the selected virtual machine may be selected from among the second subset of virtual machines. In this case, the method also includes completing, prior to providing access to the user device, provisioning of the selected virtual machine.
[0074] In another example, the method also includes receiving, as part of receiving the request to access the pool, a user credential from the user device. In this case, the method also may include mounting a CRM, useable with the pool, based on the user credential. Receiving the user profile includes receiving the user profile from the CRM. Then, the method also may include provisioning the selected virtual machine with the CRM.
[0075] In another example, the pool is one of several pools, each including different sets of virtual machines. In this case, the method further includes selecting, prior to assigning, the pool from among the several pools. In this arrangement, the user profile specifies a configuration of virtual machines, and selecting the pool is performed based on the configuration. Furthermore, the user profile may specify an image including a specification of at least one of software and hardware. Then, selecting the pool from among the several pools is further performed based on the specification.
[0076] In still another example, the method also includes adjusting, after assigning, a configuration of the pool to generate an adjusted configuration. Then, an additional request to access the pool is received. Assignment of a second selected virtual machine of the pool may be limited based on the adjusted configuration.
[0077] In yet another example, the user profile may be one of several user profiles associated with the user. In this case, the method also includes selecting, prior to assigning, the user profile from among the several user profiles belonging to the user. Selecting the user profile may be performed based on a login credential supplied by the user device.
[0078] FIG. 3 shows a method of provisioning pools of virtual machines, in accordance with one or more embodiments. The method of Fig. 3 may be executed using the system of FIG. 1. Note that block 300 through block 306 may be performed concurrently, in sequence, or in a sequence different from that represented in FIG. 3.
[0079] Block 300 includes identifying a pool of virtual machines from a group of pools of virtual machines. As indicated above in FIG. 1, pools of virtual machines may be associated to a larger logical entity (z.e., a group of pools of virtual machines) that is assigned a name or other identifier. Alternatively, each of the pools may be displayed to a user as separate entities, without showing the groups of pools to the user.
[0080] Thus, the server administrator that controls the virtual machines of the one or more embodiments may decide how groups of pools are displayed to various different users. Thus, it is possible that multiple groups of pools of virtual machines may be created and maintained by the one or more embodiments.
[0081] The identified pool of virtual machines may be assigned a name or other identifier. Access to the pool and control of the virtual machines of the various subsets may be managed by managing rules and settings that apply to the identified pool of virtual machines. [0082] In some embodiments block 300 may be optional. For example, in some cases, one pool of virtual machines is available, or from a user perspective one pool of virtual machines among many pools is visible or accessible. In such a case, step 300 is no longer used.
[0083] Block 302 includes provisioning, for the pool of virtual machines, a first subset of virtual machines at a first provisioning level. For example, a subset of virtual machines may be provisioned at a high provision level, relative to a pre- established number scale or scale range. Provisioning the first subset of virtual machines may include ensuring that a fully available virtual machine is ready to perform computing tasks that may be assigned to it. Thus, a user may access a virtual machine in the first subset of virtual machines and begin using software and data provisioned for that virtual machine immediately.
[0084] Block 302 includes provisioning, for the pool of virtual machines, a second subset of virtual machines at a second provisioning level that is less than the first provisioning level. For example, a subset of virtual machines may be provisioned at a second provision level, lower than the first provisioning level, relative to a pre-established number scale or scale range.
[0085] Provisioning the second subset of virtual machines may include, for example, assigning fast memory, applications, or a small portion of processor resources available to a server system. An operating system may be assigned to the virtual machine, but has not yet been booted, for example. Thus, a user may have to wait until the virtual machine at the second provisioning level is fully provisioned and ready for use.
[0086] Block 308 includes provisioning the CRMs. Each CRM is associated with, for each user, a distinct user credential. Each CRM is useable with the pools of virtual machines. [0087] Each CRM stores a distinct user profile associated with each distinct user credential. Thus, for each distinct user profile, there is a corresonding CRM.
[0088] Each distinct user profile specifies a distinct image to be associated with corresponding ones of the pools of virtual machines. In other words, each user profile specifies the software or hardware specifications which may be used to determine which pool of virtual machines should be accessed, and to determine which virtual machine within the selected pool should be associated with the CRM. To facilitate said association, each distinct user profile specifies a distinct rule for assigning, based on a selected image, a pool of virtual machines to a distinct user device of a distinct user. The rule also may be for assigning one virtual machine, from a selected pool, to the distinct user device.
[0089] In an embodiment, the one virtual machine (z.e., the selected virtual machine) is selectable from one of the first subset of virtual machines and the second subset of virtual machines. Thus, for example, the selected virtual machine may be a “hot” virtual machine or a “cold” virtual machine.
[0090] The method of FIG. 3 may be varied. For example, the method may include more, fewer, or different blocks. In an embodiment, the method of FIG. 3 also includes receiving a request from the distinct user device to provision a selected virtual machine. In this case, the method also includes identifying, based on the distinct user credential, a selected CRM associated with the distinct user, from among the CRMs.
[0091] Then, the method also includes selecting, based on the distinct rule and the distinct user profile stored on the selected CRM, the one virtual machine. The method then includes assigning access to the one virtual machine to the distinct user device. Finally, the method also includes provisioning the one virtual machine with the selected CRM. [0092] In another embodiment, the method of FIG. 3 may also include receiving a request from the distinct user device to provision a selected virtual machine. In this case, the method also includes identifying, based on the distinct user credential, a selected CRM associated with the distinct user, from among the CRMs.
[0093] Then, the method also includes selecting, based on the distinct user profile stored on the selected CRM, a selected pool of virtual machines from among the pools of virtual machines. The method then includes selecting, based on the distinct rule and the distinct user profile, the one virtual machine from among the selected pool of virtual machines. The method then also includes assigning access to the one virtual machine to the distinct user device. Finally, the method then includes provisioning the one virtual machine with the selected CRM.
[0094] In still another variation of the method of FIG. 3, the distinct CRM stores an image that specifies at least one of software and hardware specifications. In this case, the method further includes further selecting the one virtual machine based on the image.
[0095] In yet another variation, the distinct CRM stores an image that specifies at least one of software or hardware specifications. In this case, the method also includes further selecting a selected pool from among the plurality of pools based on the image. The method then includes further selecting the one virtual machine based on the image.
[0096] In still another variation, the method of FIG. 3 also includes receiving a request from the distinct user device to reconfigure options for the pools. Then, the method includes reconfiguring the options for the plurality of pools. The options may include at least one of numbers of available virtual machines in the first subset of virtual machines; numbers of available virtual machines in the second subset of virtual machines; numbers of total available virtual machines among both the first subset of virtual machines and the second subset of virtual machines; and modifying the distinct rule.
[0097] Still other variations are possible. Thus, while the various steps in the flowcharts of FIG. 2 and FIG. 3 are presented and described sequentially, at least some of the steps may be executed in different orders, may be combined or omitted, and at least some of the steps may be executed in parallel. Furthermore, the steps may be performed actively or passively.
[0098] FIG. 4, FIG. 5, and FIG. 6 show an example of an architecture for provisioning and assigning virtual machines, in accordance with one or more embodiments. The following example is for explanatory purposes and not intended to limit the scope of the one or more embodiments. FIG. 4 through FIG. 6 share some common reference numerals, which refer to common objects having common descriptions.
[0099] In the figures, the term “UI” refers to “user interface” and the term “VM" refers to “virtual machine.” The term “API” refers to “application programming interface.
[00100] FIG. 4, in particular, shows an architecture for managing sets of pools, each of which may include subsets of virtual machines, as described above with respect to FIG. 1 through FIG. 3. The architecture of FIG. 4 includes a VM pool API (400).
[00101] The VM pool API (400) is the application programming interface that allows an administrator (402) and a user (404) to interact with the architecture shown in FIG. 4. The administrator (402) may interact with the VM pool API (400) via a dashboard, which may be presented to the administrator on an administrative computing device via a web browser or some application specific software, which may be specific to the administrator (402). The user (404) may interact with the VM pool API (400) via a user interface (406). The user interface (406) may be a local web browser (z.e., hosted on the user device of the user (404)), or may be application specific software either hosted on the remote user device or hosted by the server and accessed by the user (404).
[00102] The VM pool API (400) accesses a VM pool binding service (408) via a network resources service bus (410). In the case of an existing user, the VM pool binding service (408) applies the rule(s) in the user profile accessed from the CRM associated with the user credential of the user (404). Assuming a virtual machine is available in a pool of virtual machines that are available, then the VM pool binding service (408) get a virtual machine from a VM pool operator (412). The VM pool operator (412) also may interact with the VM pool API (400) to give the user choices during the provisioning process.
[00103] The VM pool operator (412) then commands a provisioning service (414) to assign a user-agnostic virtual machine from among a pool of VMs (416) residing on a tenant (418) of an enterprise system. Note that the VM pool API (400) may access a database (420) on the tenant (418). The database (420) may be the server data repository (100) of FIG. 1, for example.
[00104] Returning to the VM pool binding service (408), if the user is a new user, or is using a new user credential, then the VM pool binding service (408) may assign a new CRM to the user credential. New rules and options may be generated by querying the user via the VM pool API (400) and the user interface (406). The new CRM may be provisioned with a selected virtual machine according to the new rules and options.
[00105] FIG. 5 shows the architecture of FIG. 4, from a process perspective. In FIG. 5, the dashed line (500) separates the client-side processes from the serverside processes.
[00106] The user (404) is using a user interface displayed by a user device (502) in order to connect to the VM pool API (400). In turn, the VM pool API (400) connects to the VM pool binding service (408). The VM pool binding service (408) binds one of the available virtual machines provided by the server, as described below with respect to the server-side process. The user device (502) is then connected to the selected virtual machine (504).
[00107] On the server side, the administrator (402) uses the VM pool API (400) to access the VM pool operator (412). Note that the VM pool API (400) is shown twice in FIG. 5 in order to simplify the description of the flow representation, though the administrator (402) and the user (404) may access the same API, as shown in FIG. 4.
[00108] The administrator may use the VM pool operator (412) to determine the number of hot virtual machines available in a first subset of virtual machines (506), the number of cold virtual machines available in a second subset of virtual machines (508), and the maximum number of virtual machines that may operate at a time within one pool (510) of virtual machines. The virtual machines in the pool (510) of virtual machines (the hot subset and the cold subset) are allocated from available network resources (512).
[00109] The sum of the number of currently assigned virtual machines, the number of available hot virtual machines, and the number of available cold virtual machines equals the maximum number of virtual machines allowed in the pool (510). The maximum number of virtual machines may be set. Thus, when a cold virtual machine or a hot virtual machine is assigned, the number of assigned virtual machines increase and the relative number available cold virtual machines or hot virtual machines decreases. However, the maximum number of virtual machines remains the same, unless the user takes action to increase the maximum number of virtual machines (presumably by paying more for a higher service level agreement). [00110] FIG. 6 shows that multiple pools may be available. For example, the pool (510) shown in FIG. 5 may be replaced with multiple pools of virtual machines. Alternatively, the pool (510) shown in FIG. 5 may be replaced with a larger group of pools, each including multiple pools of virtual machines. Thus, FIG. 6 shows a tenant VM pool (600), which includes multiple pools of virtual machines. The multiple pools of virtual machines include pool #1 (602), pool #2 (604), pool #3 (606), and pool #4 (608). Each of the pools may include subsets of pools; namely hot virtual machines la (610), cold pool lb (612), hot pool 2a (614), cold pool 2b (616), hot pool 3a (618), cold pool 3b (620), hot pool 4a (622), and cold pool 4b (624).
[00111] FIG. 6 shows the flexibility of maintaining the tenant VM pool (600) with multiple pools of virtual machines, each including subsets of virtual machines. For example, each pool may be provisioned to different sizes. The “size” of a pool represents the amount of processing resources assigned to the pool, relative to the total amount of processing resources that are available to be assigned to virtual machines. Alternatively, the “size” of a pool may reflect the total number of virtual machines available in the pool, or a combination of processing resource relative allocation and number of virtual machines.
[00112] A customer, due to expense and processing resource limitations, may desire access to a small number of available virtual machines, virtual machines of modest size, or a combination thereof. Thus, the customer may select access to a “medium” pool (626), which is pre-provisioned with a smaller maximum number of virtual machines (resulting in fewer total hot and cold virtual machines), with each of the virtual machines being of modest size. Alternatively, the medium pool (626) may include one or more large size virtual machines, but the total available virtual machines are small, relative to other sizes of pools available. [00113] The other pools may be of different sizes. Thus, the pool #2 (604) may be a “large” pool (628), the pool #3 (606) may be an “extra-large” sized pool (630), and the pool #4 (608) may be a “triple extra-large” sized pool (632). Each pool has increasing available resources, in terms of one or more of the number of virtual machines available, the proportions of the provisioning status of the subsets of virtual machines (i.e., “hot” or “cold” virtual machines), or the size of the virtual machines within the corresonding pool.
[00114] The flexibility in the assignment of a user devices to the different pools and subsets of pools available permit users to access the kind of virtual machine desired in the amount of time desired, within the cost the user is willing to pay for the access to the virtual machines. The flexibility in virtual machine assignment also allows a user to execute different images having different computing resource specifications.
[00115] For example a user may have a first user credential for when the user desires to execute image 1 (634) and a second user credential for when the user desires to execute image 2 (636). The image 1 (634) may be suitable for execution on medium pool (626) or the large pool (628), but the extra-large pool (630) or the triple extra-large pool (632) have an overabundance of computing resources relative to computing resources used to execute the image 1 (634). The user may execute the image 1 (634) more frequently, but execute the image 2 (636) less frequently.
[00116] In this example, the user has one set of options and rules for the first user credential. The user’s set of options and rules provide that when the user desires to execute the image 1 (634), the user accesses the large pool (628). The large pool (628) has a greater proportion of the hot virtual machines la (610), relative to the cold virtual machines lb (612). The medium pool (626) therefore may be referred-to as highly available. [00117] However, sometimes the user desires greater processing resources when executing the image 1 (634). Thus, the user has another set of options and rules for the first user credential that provide that when the user desires to execute the image 1 (634), the user accesses the large pool (628), which has more of the cold virtual machines 2b (616) than the hot virtual machines 2a (614). However, each individual virtual machine in the large pool (628) has more processing resources relative to the virtual machines in the medium pool (626).
[00118] Similarly, the user may also have a second user credential which has different options and rules that the user may configure upon login. One set of options and rules for the second user credential may be used to access the extralarge pool (630) for executing the image 2 (636). The other set of options and rules for the second user credential may be used to access the triple extra-large pool (632) for executing the image 2 (636).
[00119] Many variations are possible. Thus, the configuration of virtual machines, and pools of virtual machines, sets of hot and cold virtual machines, user credentials, rales and options, and other aspects of the system shown may be varied. More or fewer subsets of virtual machines may be present in each pool. Accordingly, the example shown in FIG. 4 through FIG. 6 may be varied and do not necessarily limit the other embodiments described herein.
[00120] FIG. 7, FIG. 8, and FIG. 9 show example screenshots of a graphical user interface for interacting with the architecture shown in FIG. 4, FIG. 5, and FIG.
6, in accordance with one or more embodiments. Thus, the screenshots shown in FIG. 1 may be used to manipulate the pools of virtual machines or to accomplish access to a virtual machine shown in FIG. 4 through FIG. 6.
[00121] FIG. 7 shows a screenshot of a start screen (700), which may be displayed to an end user that desires access to a virtual machine. The cunent number of virtual machines may be listed in a job summary window (702). Details of a selected virtual machine may be displayed in a detail window (704).
[00122] A user may begin a session by selecting a start session widget (706). A user may access or request a particular network by selecting a network widget (708). A user credential may be referenced or entered via an access token input widget (710). Additional widgets (712) may be added to provide further functionality, such as to get a log, get envelop properties, manipulate settings, or specify rules or options, etc. Note that while rules and options may be stored on a server-side CRM to be associated with a selected virtual machine, and assigned to the user credential, rule or options also may be directly provided by a user at the start screen (700) in some embodiments.
[00123] FIG. 8 shows a screenshot of a VM pool operator (800) for virtual machine pool management. The VM pool operator (800) may be the VM pool operator (412) in FIG. 4 and FIG. 5.
[00124] The VM pool operator (800) may be used to configure pools of virtual machines, subsets of pools of virtual machines, or individual virtual machines. In the example of FIG. 8, the user may specify the tenant name (802). The user may specify the percent population (804). The percent population for a selected pool is the percentage of hot virtual machines to cold virtual machines, in this example. Other aspects of the virtual machine pool may be varied.
[00125] FIG. 9 shows a screenshot of a status screen showing the current states of various virtual machine pools. The screenshot shown in FIG. 9 may be accessed via the VM pool operator (800) shown in FIG. 8.
[00126] Note that the user is permitted to change, by user credential, the numbers between the hot virtual machines, the cold virtual machines, the maximum number of virtual machines, and various other technical aspects of the virtual machines in a given pool associated with the user credential. Thus, the current state shown in the screenshot of FIG. 9 may vary from what is shown.
[00127] In the example shown, pool setting (900), is associated with user credential “vmlto4xl,” which in this example is a “medium” sized pool. The pool setting (900) indicates two available hot virtual machines, two available cold virtual machines, and fourteen total number of virtual machines. Because the maximum number of virtual machines is 14, there is an application that ten virtual machines are already assigned. Other information is shown for the virtual machine pool, such as the central processing unit (cpu) type, graphics processing unit (gpu) type, memory, disk size, machine type, and other information.
[00128] In contrast, In the example shown, pool setting (902), is associated with a user credential associated with several different customers. The pool setting (902) is a “triple extra-large” sized pool. The pool setting (900) indicates 96 available hot virtual machines, 96 available cold virtual machines, and 965 total number of virtual machines. Because the maximum number of virtual machines is 965, there is an application that 773 virtual machines are already assigned. Other information is shown for the virtual machine pool, such as the central processing unit (cpu) type, graphics processing unit (gpu) type, memory, disk size, machine type, and other information.
[00129] FIG. 10 shows a method for assigning a virtual machine in the context of the examples of FIG. 4 through FIG. 9, in accordance with one or more embodiments. The method of FIG. 10 also may be executed using the system shown in FIG. 1.
[00130] Block 1000 includes setting virtual machine metadata. The virtual machine metadata may be set by accessing a server data repositoiy that stores a corresonding user credential. This virtual machine metadata may be stored as cloud storage. The virtual machine metadata may be used by the operating system and applications to provide user and project contexts.
[00131] Block 1002 includes assigning a disk; else, creating a disk if a disk does not exist. The disk may be assigned by the application programming interface. The disk may be assigned by assigning the pre-allocated CRM that is associated with the user credential supplied when requesting to assign the disk. If no disk is associated with the user credential, then the disk is created or provisioned from the available computing resources.
[00132] In an embodiment, each user has their user own data disk (such as D: drive). The user data disk may be persistent and mounted when user is connected to a virtual machine. This user data disk also may be used to store their user profiles, such as my documents, my downloads, etc.
[00133] Block 1004 includes attaching the disk to a selected virtual machine. The selected virtual machine is selected according to the rules and options set by the user on login, or set by the user credential, or both. If the virtual machine is a hot virtual machine, then assigning the disk means that the virtual machine is immediately available for use. If the virtual machine is a cold, or some other provisioning level less than hot, then the user may wait while other aspects of the selected virtual machine is provisioned. Note, however, that in an embodiment, the user may be able to access the CRM, even if a virtual machine is not assigned to the CRM.
[00134] In virtual machine pool, a different virtual machine may be assigned every time user starts their virtual machine session. This assignment scheme means the same user's data disk may be mounted to the correspond virtual machine.
[00135] Block 1006 includes updating a table of users applications, and instances. The table may be stored on the server data repository. The table may be, for example, the virtual machine pool status shown in FIG. 9. The updating step at block 1006 may be used to show list of applications and also to generate connection files (remote desktop protocol (RDP) or other remote desktop connection file, such as TGX Remote Desktop) correctly to the given user.
[00136] Block 1008 includes updating a user context table. The user context table may be updated via the application programming interface. Updating the user context table is used to store the user’s current subscription information when the session is initiated by the user. Block 1008 may be used for information tracking purposes.
[00137] In other cases, some applications may call an application programming interface to retrieve "UserContext" information, such as to know user's current project name, user's department, user's country name, contract details, and billing details. This information may be stored on a "UserContext" table, which may be a persistent database on the CRM.
[00138] Block 1010 optionally includes resetting a password via a provisioning service application programming interface. Resetting the user password may be requested to remove possibility of a user interface being unable to retrieve a list of applications and then to connect appropriately to the selected virtual machine (via RDP or TGX) due to user credentials being expired. Note that resetting the password may be optional in some cases.
[00139] Block 1012 includes setting system environment variables. In some cases, virtual machine applications that the user desires to execute on the requested virtual machine may use environment variables to retrieve user context, application settings, etc. This step is novel as an AZURE® run command may be used to set system environment variables. Note that block 1012 may be optional in some cases, such as when requested applications do not need such variables, when a user desires to set the variables, or when the applications are to be selected after the selected virtual machine is connected. [00140] Block 1014 includes executing scripts to assigned selected virtual machines. Any custom scripts that request user context may be run after previous steps have been completed. Thus, block 1014 may be optional in some cases. In one embodiment, the method of FIG. 10 may terminate thereafter.
[00141] Embodiments may be implemented on a computing system specifically designed to achieve an improved technological result. When implemented in a computing system, the features and elements of the disclosure provide a technological advancement over computing systems that do not implement the features and elements of the disclosure. Any combination of mobile, desktop, server, router, switch, embedded device, or other types of hardware may be improved by including the features and elements described in the disclosure. For example, as shown in FIG. 11.1, the computing system (1100) may include one or more computer processor(s) (1102), non-persistent storage device(s) (1104), persistent storage device(s) (1106), a communication interface (1108) (e.g., Bluetooth interface, infrared interface, network interface, optical interface, etc.), and numerous other elements and functionalities that implement the features and elements of the disclosure. The computer processor(s) (1102) may be an integrated circuit for processing instructions. The computer processor(s) may be one or more cores or micro-cores of a processor. The computer processor(s) (1102) includes one or more processors. The one or more processors may include a central processing unit (CPU), a graphics processing unit (GPU), a tensor processing units (TPU), combinations thereof, etc.
[00142] The input devices (1110) may include a touchscreen, keyboard, mouse, microphone, touchpad, electronic pen, or any other type of input device. The input devices (1110) may receive inputs from a user that are responsive to data and messages presented by the output devices (1112). The inputs may include text input, audio input, video input, etc., which may be processed and transmitted by the computing system (1100) in accordance with the disclosure. The communication interface (1108) may include an integrated circuit for connecting the computing system (1100) to a network (not shown) (e.g., a local area network (LAN), a wide area network (WAN) such as the Internet, mobile network, or any other type of network) and/or to another device, such as another computing device.
[00143] Further, the output devices (1112) may include a display device, a printer, external storage, or any other output device. One or more of the output devices may be the same or different from the input device(s). The input and output device(s) may be locally or remotely connected to the computer processor(s) (1102). Many different types of computing systems exist, and the aforementioned input and output device(s) may take other forms. The output devices (1112) may display data and messages that are transmitted and received by the computing system (1100). The data and messages may include text, audio, video, etc., and include the data and messages described above in the other figures of the disclosure.
[00144] Software instructions in the form of computer readable program code to perform embodiments may be stored, in whole or in part, temporarily or permanently, on a non-transitory computer readable medium such as a CD, DVD, storage device, a diskette, a tape, flash memory, physical memory, or any other computer readable storage medium. Specifically, the software instructions may correspond to computer readable program code that, when executed by a processor(s), is configured to perform one or more embodiments, which may include transmitting, receiving, presenting, and displaying data and messages described in the other figures of the disclosure.
[00145] The computing system (1100) in FIG. 11.1 may be connected to or be a part of a network. For example, as shown in FIG. 11.2, the network (1120) may include multiple nodes (e.g., node X (1122), node Y (1124)). Each node may correspond to a computing system, such as the computing system shown in FIG. 11.1, or a group of nodes combined may correspond to the computing system shown in FIG. 11.1. By way of an example, embodiments may be implemented on a node of a distributed system that is connected to other nodes. By way of another example, embodiments may be implemented on a distributed computing system having multiple nodes, where each portion may be located on a different node within the distributed computing system. Further, one or more elements of the aforementioned computing system (1100) may be located at a remote location and connected to the other elements over a network.
[00146] The nodes (e.g., node X (1122), node Y (1124)) in the network (1120) may be configured to provide services for a client device (1126), including receiving requests and transmitting responses to the client device (1126). For example, the nodes may be part of a cloud computing system. The client device (1126) may be a computing system, such as the computing system shown in FIG. 11.1. Further, the client device (1126) may include and/or perform at least a portion of one or more embodiments.
[00147] The computing system of FIG. 11.1 may include functionality to present raw and/or processed data, such as results of comparisons and other processing. For example, presenting data may be accomplished through various presenting methods. Specifically, data may be presented by being displayed in a user interface, transmitted to a different computing system, and stored. The user interface may include a GUI that displays information on a display device. The GUI may include various GUI widgets that organize what data is shown as well as how data is presented to a user. Furthermore, the GUI may present data directly to the user, e.g., data presented as actual data values through text, or rendered by the computing device into a visual representation of the data, such as through visualizing a data model. [00148] As used herein, the term “connected to” contemplates multiple meanings. A connection may be direct or indirect (e.g., through another component or network). A connection may be wired or wireless. A connection may be temporary, permanent, or semi-permanent communication channel between two entities.
[00149] The various descriptions of the figures may be combined and may include or be included within the features described in the other figures of the application. The various elements, systems, components, and steps shown in the figures may be omitted, repeated, combined, and/or altered as shown from the figures. Accordingly, the scope of the present disclosure should not be considered limited to the specific arrangements shown in the figures.
[00150] In the application, ordinal numbers (e.g., first, second, third, etc.) may be used as an adjective for an element (i.e., any noun in the application). The use of ordinal numbers is not to imply or create any particular ordering of the elements nor to limit any element to being a single element unless expressly disclosed, such as by the use of the terms "before", "after", "single", and other such terminology. Rather, the use of ordinal numbers is to distinguish between the elements. By way of an example, a first element is distinct from a second element, and the first element may encompass more than one element and succeed (or precede) the second element in an ordering of elements.
[00151] Further, unless expressly stated otherwise, the word “or” is an “inclusive or” and, as such includes “and.” Further, items joined by an or may include any combination of the items with any number of each item unless expressly stated otherwise.
[00152] In the above description, numerous specific details are set forth in order to provide a more thorough understanding of the disclosure. However, it will be apparent to one of ordinary skill in the art that the technology may be practiced without these specific details. In other instances, well-known features have not been described in detail to avoid unnecessarily complicating the description. Further, other embodiments not explicitly described above can be devised which do not depart from the scope of the claims as disclosed herein. Accordingly, the scope should be limited by the attached claims.

Claims

CLAIMS What is claimed is:
1. A method comprising : receiving, from a user device operated by a user, a request to access a pool comprising a plurality of virtual machines, wherein: the plurality of virtual machines comprises a first subset of virtual machines and a second subset of virtual machines, the first subset of virtual machines comprises a first provisioning level, the second subset of virtual machines comprises a second provisioning level that is less than the first provisioning level, and the request specifies a provisioning level request; receiving a user profile associated with the user; assigning, to the user, a selected virtual machine, wherein the selected virtual machine is selected from among the first subset of virtual machines and the second subset of virtual machines based on the user profile and further based on the provisioning level request; and providing, to the user device, access to the selected virtual machine.
2. The method of claim 1, wherein the selected virtual machine is selected from among the second subset of virtual machines, and wherein the method further comprises: completing, prior to providing access to the user device, provisioning of the selected virtual machine.
3. The method of claim 1, further comprising: receiving, as part of receiving the request to access the pool, a user credential from the user device; and mounting a non-transitory computer readable storage medium, useable with the pool, based on the user credential, wherein receiving the user profile comprises receiving the user profile from the non-transitory computer readable storage medium.
4. The method of claim 3, further comprising: provisioning the selected virtual machine with the non-transitory computer readable storage medium.
5. The method of claim 1, wherein the pool is one of a plurality of pools comprising different pluralities of virtual machines, and wherein the method further comprises: selecting, prior to assigning, the pool from among the plurality of pools, wherein: the user profile specifies a configuration of virtual machines, and selecting the pool is performed based on the configuration.
6. The method of claim 5, wherein: the user profile specifies an image comprising a specification of at least one of software and hardware, and selecting the pool from among the pools is further performed based on the specification.
7. The method of claim 1, further comprising: adjusting, after assigning, a configuration of the pool to generate an adjusted configuration; receiving an additional request to access the pool; and limiting assignment of a second selected virtual machine of the pool based on the adjusted configuration.
8. The method of claim 1, wherein the user profile is one of a plurality of user profiles associated with the user, and wherein the method further comprises: selecting, prior to assigning, the user profile from among the plurality of user profiles belonging to the user, wherein selecting the user profile is performed based on a login credential supplied by the user device.
9. A method comprising: identifying a pool of virtual machines from a plurality of pools of virtual machines; provisioning, for the pool of virtual machines, a first subset of virtual machines at a first provisioning level; provisioning, for the pool of virtual machines, a second subset of virtual machines at a second provisioning level that is less than the first provisioning level; provisioning a plurality of CRMs, wherein: each of the plurality of CRMs is associated with a distinct user credential among a plurality of user credentials associated with a plurality of users, each of the plurality of CRMs is useable with the plurality of pools of virtual machines, each of the plurality of CRMs stores a distinct user profile associated with each distinct user credential of the plurality of user credentials, each distinct user profile specifies a distinct image among a plurality of images to be associated with corresponding ones of the plurality of pools of virtual machines, each distinct user profile specifies a distinct rule for assigning, based on a selected image from the plurality of images, the pool of virtual machines to a distinct user device of a distinct user of the plurality of users and for assigning one virtual machine from the pool of virtual machines to the distinct user device, and the one virtual machine is selectable from one of the first subset of virtual machines and the second subset of virtual machines.
10. The method of claim 9, further comprising: receiving a request from the distinct user device to provision a selected virtual machine; identifying, based on the distinct user credential, a selected non-transitory computer readable storage medium associated with the distinct user, from among the plurality of CRMs; selecting, based on the distinct rule and the distinct user profde stored on the selected non-transitory computer readable storage medium, the one virtual machine; assigning access to the one virtual machine to the distinct user device; and provisioning the one virtual machine with the selected non-transitory computer readable storage medium.
11. The method of claim 9, further comprising: receiving a request from the distinct user device to provision a selected virtual machine; identifying, based on the distinct user credential, a selected non-transitory computer readable storage medium associated with the distinct user, from among the plurality of CRMs; selecting, based on the distinct user profile stored on the selected non-transitory computer readable storage medium, a selected pool of virtual machines from among the plurality of pools of virtual machines; selecting, based on the distinct rule and the distinct user profde, the one virtual machine from among the selected pool of virtual machines; assigning access to the one virtual machine to the distinct user device; and provisioning the one virtual machine with the selected non-transitory computer readable storage medium.
12. The method of claim 10, wherein the selected non-transitory computer readable storage medium stores an image that specifies at least one of software and hardware specifications, and wherein the method further comprises: further selecting the one virtual machine based on the image.
13. The method of claim 10, wherein the selected non-transitory computer readable storage medium stores an image that specifies at least one of software and hardware specifications, and wherein the method further comprises: further selecting a selected pool from among the plurality of pools based on the image; and further selecting the one virtual machine based on the image.
14. The method of claim 9, further comprising: receiving a request from the distinct user device to reconfigure options for the plurality of pools; and reconfiguring the options for the plurality of pools.
15. The method of claim 14, wherein the options comprise at least one of: numbers of available virtual machines in the first subset of virtual machines; numbers of available virtual machines in the second subset of virtual machines; numbers of total available virtual machines among both the first subset of virtual machines and the second subset of virtual machines; and modifying the distinct rule.
16. A system comprising: a plurality of provisioned virtual machines, wherein: the plurality of provisioned virtual machines comprises a first subset of virtual machines and a second subset of virtual machines, the first subset of virtual machines comprises a first provisioning level, and the second subset of virtual machines comprises a second provisioning level that is less than the first provisioning level, a plurality of CRMs, wherein each of the plurality of CRMs are associated a plurality of user credentials and store a plurality of user profiles, wherein: each of the plurality of CRMs is associated with a distinct user credential such that a selected non-transitory computer readable storage medium is associated with a selected user profile, each of the plurality of CRMs stores a distinct user profile of the plurality of user profiles, and the distinct user profile is associated with the distinct user credential, the distinct user profile stores a rule for assigning a selected virtual machine, from among the first subset of virtual machines and the second subset of virtual machines, to the selected user profile, and the rule further is for provisioning the selected virtual machine with the selected non-transitory computer readable storage medium.
17. The system of claim 16, further comprising: a server controller which, when executed by a processor of the system, executes the rule.
18. The system of claim 17, wherein the server controller is further configured, based on execution of the rule, to select the selected virtual machine and assign the selected virtual machine to the distinct user credential.
19. The system of claim 18, wherein: the selected virtual machine is taken from the second subset of virtual machines, and the server controller is further configured to complete provisioning of the selected virtual machine.
0. The system of claim 17, wherein the server controller is further configured to reconfigure the plurality of provisioned virtual machines based on an option received from a user device associated with the distinct user credential.
PCT/US2024/040894 2023-08-03 2024-08-05 Dynamic association of preconfigured virtual machines to domain users Pending WO2025030172A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
IN202311052246 2023-08-03
IN202311052246 2023-08-03

Publications (1)

Publication Number Publication Date
WO2025030172A1 true WO2025030172A1 (en) 2025-02-06

Family

ID=92503588

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2024/040894 Pending WO2025030172A1 (en) 2023-08-03 2024-08-05 Dynamic association of preconfigured virtual machines to domain users

Country Status (1)

Country Link
WO (1) WO2025030172A1 (en)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090282404A1 (en) * 2002-04-05 2009-11-12 Vmware, Inc. Provisioning of Computer Systems Using Virtual Machines

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090282404A1 (en) * 2002-04-05 2009-11-12 Vmware, Inc. Provisioning of Computer Systems Using Virtual Machines

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"System and method to create profile-aware virtual machine pool in cloud environment ED - Darl Kuhn", IP.COM, IP.COM INC., WEST HENRIETTA, NY, US, 16 May 2013 (2013-05-16), XP013157332, ISSN: 1533-0001 *

Similar Documents

Publication Publication Date Title
US10757036B2 (en) Method and system for provisioning computing resources
US20100313200A1 (en) Efficient virtual machine management
EP2746940A1 (en) Heterogeneous cloud-store provider access systems, and/or associated methods
US11095648B2 (en) Dashboard as remote computing services
US10237252B2 (en) Automatic creation and management of credentials in a distributed environment
US20070255798A1 (en) Brokered virtualized application execution
US11822932B2 (en) Provisioning services (PVS) cloud streaming with read cache
WO2025030172A1 (en) Dynamic association of preconfigured virtual machines to domain users
US11922190B2 (en) Systems and methods for autonomous provision of desktop as a service (DAAS)
AU2015261587B2 (en) Method and system for monitoring usage of computing resources
AU2014256382B2 (en) Method and system for providing access to computing resources
EP4115282A1 (en) Provisioning services (pvs) cloud streaming with read cache
AU2014240303A1 (en) Method and system for monitoring usage of computing resources
CN110476146A (en) Shell application
AU2014201374A1 (en) Method and system for provisioning computing resources

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 24759314

Country of ref document: EP

Kind code of ref document: A1