Dynamic computing resource assignment and scalable computing environment generation for real-time environments
By using metadata-driven sandbox container technology, the problem of manual generation and establishment of computing environments in cloud computing environments is solved, and efficient and flexible computing environment management and dynamic resource adjustment are achieved.
Patent Information
- Application Number
- CN201980035859.7
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2018-07-06
- Filing Date
- 2019-05-16
- Publication Date
- 2025-03-25
- Estimated Expiration
- 2039-05-16
AI Technical Summary
In a cloud computing environment, the process of manually generating and building multiple computing environments is cumbersome and time-consuming, especially when dynamically adjusting computing resources and managing multiple teams and projects.
Generate and build computing environments by using metadata associated with individually defined containers of sandbox groups, allowing sandbox and computing environments to be generated in parallel, and supporting dynamic adjustment of created environments and resource consumption limits.
Simplifies the generation and management of computing environments, improves efficiency and flexibility, and enables dynamic adjustment of resource allocation to meet the needs of different teams and projects.
Smart Images

Figure CN112219190B_ABST
Abstract
Description
Technical Field
[0001] Embodiments of the present application generally relate to dynamic computing resource assignment and scalable computing environment generation for real-time environments. Background Art
[0002] Increasingly, computing environments do not need to be supported by hardware physically co-located with users utilizing such computing environments, but can be supported by networked computing hardware that is aggregated in large data centers physically far from users. Typically, such computing environments are referred to as "cloud computing environments" and can provide users with different computing environments, which are typically supported by virtual machines released by a large number of computing hardware that provide stability, redundancy, and high availability. Typically, the provisioning of computing environments such as virtual machines can be performed once, such as by an administrator, and then the resulting constructed computing environment can be provided to users for use, developing such utilization of computing resources in a continuous manner. And such utilization of computing resources is invoiced in a continuous manner. Typically, even for skilled administrators, the generation and construction of computing environments may be tedious and time-consuming, especially when there are many such computing environments to be generated.
[0003] In a variable team setting, it may be necessary to repeatedly generate and build multiple computing environments. For example, a team composed of multiple different individuals that may be unknown or known in advance needs to build multiple computing environments for each such individual according to multiple different tasks or projects that the individual members of such a team will perform. Typically, such situations occur in demonstrative and / or educational contexts. As an example, a computer science professor may seek to educate one of his classes to implement functionality using a database application, while another class that may educate him to use a specific application development tool set for programming. In such an example, the professor is required to establish a computing environment set for each individual in the class to implement functionality using a database application, and will then be further required to establish another computing environment set for each individual in the class to use a specific application development tool set for programming. If the first class is subsequently assigned a project for an image editing application, the professor may be required again to establish a completely different computing environment set for each individual in the class. If such a class includes dozens or hundreds of students, the amount of computing environments to be established may quickly become unsustainable. As another example, a presenter such as at a conference may seek to provide attendees with access to a specific computing environment as part of a demonstration. However, the specific individuals, and indeed the total number of individuals, may be unknown and may change dynamically before or even during the presentation. In such an example, the presenter would be required to have each individual attendee participate in a multi-step process of generating their own computing environment, thereby causing confusion among the attendees and reducing the efficiency and effectiveness of the entire presentation. Additionally, requiring each attendee to participate in a multi-step process of generating their own computing environment diverts the attendees' attention and delays the presenter's presentation of useful material.
[0004] In addition, resource consumption limits can further complicate the professor's or presenter's difficulties, as such professors may not be able to obtain additional resource consumption credits or presenters may not know how much resource consumption will be required. Specifically, while resource consumption limits can be established by a single administrator (such as the professor or presenter in the above example), typical cloud computing environments are individually inventoried, thus requiring manual division or allocation of resource consumption limits among multiple different computing environments being built. Such fragmentation of resource consumption limits may further exacerbate the likelihood of manually establishing computing environments in such a team setting. Summary of the invention
[0005] Computing environments can be scalably generated and built based on metadata associated with individually defined containers of sandbox groups. Each container of a sandbox group is its own digital construct and is wrapped by metadata that defines the nature and various aspects of the grouping, including enumerating individual members in the team, assigned factors or attributes, etc. Metadata can therefore identify the sandboxes to be generated and can identify computing environments to be generated within these sandboxes and how such computing environments are built. Sandboxes can be generated in parallel and computing environments can be built in parallel, or interleaved based on individual user access. Additionally, as relevant metadata is changed, created computing environments and sandboxes can be modified or deleted, and new computing environments and sandboxes can be generated. The assignment of consumption limits can be individually assigned based on a predetermined amount or based on an amount determined according to a variable factor (such as the amount of individual sandboxes currently in a container). The container construction then provides monitoring and adjustment of such consumption limits on an aggregated basis.
[0006] This Summary is provided to introduce some concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter.
[0007] Additional features and advantages will become apparent from the following detailed description, which proceeds with reference to the accompanying drawings. BRIEF DESCRIPTION OF THE DRAWINGS
[0008] The following detailed description may be better understood in conjunction with the accompanying drawings, in which:
[0009] Figure 1 is a system diagram providing an exemplary system for computing environment generation;
[0010] Figure 2 is a system diagram of an exemplary system providing scalable computing environment generation;
[0011] Figure 3 is a system diagram of an exemplary system that provides updateable computing environment generation;
[0012] Figure 4 is a flow chart of an exemplary computing environment generation and construction mechanism; and
[0013] Figure 5 is a block diagram of an exemplary computing device. DETAILED DESCRIPTION
[0014] The following description relates to the scalable generation and construction of sandboxes for individual users, and the computing environments available to such users within these sandboxes. Such sandboxes and computing environments can be scalably generated and built based on metadata associated with individually defined containers of sandbox groups. Each container of a sandbox group can be its own digital construction and can be wrapped by metadata that defines the nature and various aspects of the grouping, including enumerating individual members in the team, assigned factors or attributes, etc. Metadata can therefore identify the sandboxes to be generated and can identify the computing environments to be generated within these sandboxes and how such computing environments are built. Sandboxes can be generated in parallel and computing environments can be built in parallel, or interleaved based on individual user access. Additionally, as the relevant metadata is changed, the created computing environments and sandboxes can be modified or deleted, and new computing environments and sandboxes can be generated. The assignment of consumption limits can be individually assigned based on a predetermined amount or based on an amount determined according to a variable factor (such as the amount of individual sandboxes currently in the container). The container construction then provides monitoring and adjustment of such consumption limits on an aggregated basis.
[0015] Although not required, the following description will be in the overall context of computer-executable instructions (e.g., program modules) executed by a computing device. More specifically, unless otherwise indicated, the description will refer to actions and symbolic representations of operations performed by one or more computing devices or peripherals. As such, it will be understood that such actions and operations, sometimes referred to as being performed by a computer, include manipulations of electrical signals representing data in a structured form by a processing unit. The manipulations transform the data or maintain it at a location in a memory, reconfigure or otherwise alter the operation of the computing device or peripheral in a manner well known to those skilled in the art. The data structure in which the data is maintained is a physical location having specific properties defined by the data format.
[0016] Typically, program modules include routines, programs, objects, components, data structures, etc. that perform specific tasks or implement specific abstract data types. Moreover, it will be appreciated by those skilled in the art that computing devices need not be limited to conventional personal computers, and include other computing configurations, including servers, handheld devices, multiprocessor systems, microprocessor-based or programmable consumer electronics, network PCs, minicomputers, mainframe computers, etc. Similarly, computing devices need not be limited to stand-alone computing devices, as the mechanisms may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote memory storage devices.
[0017] refer to Figure 1, illustrates an exemplary system 100, which provides context for the following description. An administrator, such as exemplary administrator 110, may provide one or more team definitions, such as exemplary team definition 120, and one or more project definitions, such as exemplary project definition 130, to a computing environment generator, such as exemplary computing environment generator 140. For purposes of illustrating the underlying computing hardware context, administrator 110 may utilize a computing device, such as exemplary personal computing device 111, which may be communicatively coupled to one or more server computing devices, such as exemplary server computing devices 151, 152, and 153, via a computer communication network, such as exemplary network 190.
[0018] According to one aspect, a team definition such as one of the team definitions 120 may include identification information (such as a name), and information related to establishing computing resource items and restrictions. For example, a team definition may include an indication of the amount of computing resources represented by any appropriate computing resource metric. For example, a team definition may include an enumeration of computing resources in terms of processor hours, cost (dollar), memory consumption, or other quantification of similar computing resources. As the computing environment performs calculations or other similar computer processing, computing resources are therefore consumed or occupied. Such computing resources may have been assigned to an administrator 110, who may be a class professor, through authorization or other similar resource assignment mechanisms. Alternatively or additionally, such computing resources can be used by an administrator 110 on an as-needed or dynamic basis, and the administrator may be a speaker or a presenter of a conference seminar or laboratory. Therefore, according to one aspect, computing resources can be enumerated in terms of restrictions such as authorization restrictions or per-user restrictions, and once all such computing resources are exhausted or otherwise consumed by the execution of calculations on the computing environment, the restrictions can be exhausted, thereby causing further termination of computing functionality.
[0019] A team definition may also include a roster or list of individuals who are part of the team. Figure 1 Such individuals of one of the team definitions 120 shown in , such as part of an initial team definition, may be enumerated first. Alternatively or additionally, individuals may join a team at a later time, for example, through the mechanism described in detail below.
[0020] In addition to the exemplary team definition 120, an administrator such as the exemplary administrator 110 may provide one or more project definitions, such as the exemplary project definition 130. According to one aspect, a project definition may include information indicating a computing environment to be generated, as well as identification information (such as the name of the project) and guidance or other basic materials related to the initiation, execution, or completion of the project. For example, a project for database operations may have a project definition associated therewith that identifies the computing environment to be generated for such a project as including a processor of a given type, speed, or other similar processor-indicating attribute, a large amount of memory, a large amount of storage capacity, and related applications (such as database applications). Each individual executing such a project may therefore be provided with a computing environment suitable for such a project (such as a computing environment designed by a professor teaching a class). Additionally, a project for database operations may include a manual, a syllabus, guidance, or other similar information that may be provided by a professor teaching a class about database operations.
[0021] As shown by generating action 141, upon receiving team and project definitions (such as exemplary team definition 120 and project definition 130), a computing environment generator (such as exemplary computing environment generator 140) can generate multiple computing environments (such as exemplary computing environments 161 and 162). More specifically, according to one aspect, the computing environment generator can generate computing environments for each project for each currently enumerated team member. Thus, for example, if one of the team definitions 120 enumerates ten entities as part of a given team, and two of the project definitions 130 indicate that they have been assigned to the team, the computing environment generator 140 can generate twenty computing environments, one for each member of the ten-person team corresponding to the first project, and another for each member of the same ten-person team corresponding to the second project. According to another aspect, one or more computing environments can be pre-generated by the computing environment generator 140, such as to be subsequently associated with individual users when such users join one or more teams defined by the exemplary team definition 120. Additionally, the computing environment generator 140 may perform the generation action 141 multiple times based on the relevant metadata when the generation action 141 is performed. For example, if the team definition enumerates five team members and only a single project definition identifies the team, the exemplary computing environment generator 140 may generate five computing environments. Continuing with such an example, if the team subsequently includes a sixth individual, the computing environment generator 140 may generate another (sixth) computing environment at that subsequent time. Alternatively or additionally, the generation action 141 may be scheduled for a predetermined time. For example, if the team definition enumerates five team members and only a single project definition identifies the team, the exemplary computing environment generator 140 may delay the generation of the five computing environments until a subsequent specified time. If, before this time, the sixth individual joins the team, the computing environment generator 140 may continue to delay the generation of the computing environment until the scheduled time, but, at the scheduled time, all six computing environments may be generated simultaneously. According to yet another aspect, computing environment generator 140 can determine which computing environments need to be generated, but can delay generating such computing environments pending subsequent actions, such as user acceptance of an invitation.
[0022] The computing environment generator may assign limits or other similar controls on computing resources consumed by such computing environments. To provide security and control over such computing environments, a computing environment generator such as exemplary computing environment generator 140 may establish manageability and security policies, such as identifying individual users who will be granted user access to such computing environments, while also identifying administrators such as exemplary departments as having administrative privileges to such environments, including, for example, the ability to modify parameters or resources of such environments and other administrative controls.
[0023] According to one aspect, the generated computing environment (such as exemplary computing environments 161 and 162) can be a virtual machine hosted by one or more of computing devices 151, 152, and 153. Such a virtual machine can present a virtualized computing environment, which is ultimately supported by the hardware and software of the host computing device (such as exemplary computing devices 151, 152, and 153) through a virtual machine monitor and other similar mechanisms. According to one aspect, computing devices 151, 152, and 153 can be data center-based server computing devices that can provide redundant and parallelized hardware and software for hosting remotely accessible computing services such as cloud computing services. Such services can include hosting virtual machines or other similar computing environments. Users of such hosted services (such as exemplary users 170 and 180) can have accounts or other similar structures, and the user's ability to access the hosted service and utilize its hardware and software is controlled by the account or other similar structure. Typically, such an account takes the form of a subscription, which enumerates the temporary, computational, and other similar restrictions on the user's access to the hardware and software of the hosted service. As used herein, the term "sandbox" refers to a subscription or other similar enumeration of temporary, computing or other similar capabilities provided to a user for utilizing a computing-based hosted service, or a restriction on a user's utilization of a computing-based hosted service. As will be described in detail below, although the precise hierarchy of sandboxes and computing environments hosted by a hosting service and therefore accessible may be orthogonal to the description herein, with reference to the generation of computing environments, such as by the exemplary computing environment generator 140, generating exemplary computing environments 161 and 162 may include generating one or more sandboxes, such that such computing environments may be accessed and utilized through one or more sandboxes, such as by the hardware and software of the hosting service (such as by Figure 1 151, 152, and 153 shown in the figure are hardware represented by the hosted service) and executed on the hardware and software of the hosted service.
[0024] In addition to generating computing environments, the exemplary computing environment generator 140 may also generate digital constructs that may be linked to the computing environment to facilitate its management. For example, for each of the team definitions 120, a team may be created by the computing environment generator 140, wherein the term "team" as used herein refers to a digital construct that is a collection of user identities, and metadata may be associated with the digital construct to link additional information thereto. For example, team metadata may include an identifier for the team (e.g., a team name), and computing resource limits or availability applicable to the team.
[0025] In a similar manner, for each project definition in project definition 130, computing environment generator 140 can generate a project, wherein the term "project" as used herein refers to a digital construct for recording metadata (such as identification information, instructional materials, templates defining the properties of a computing environment, computing resource constraints, and other similar metadata). Once computing environment generator 140 generates one or more teams and one or more projects, computing environment generator 140 can link a particular project to a particular team. Additionally, computing environment generator 140 can link the generated computing environment (e.g., exemplary computing environments 161 and 162) to the project, such computing environment being generated for the project. Individual users such as exemplary individual users 170 and 180 can access computing environments such as exemplary computing environments 161 and 162 generated by computing environment generator 140 using computing devices such as exemplary computing devices 171 and 181. More specifically, exemplary computing devices 171 and 181 may be communicatively coupled to one or more server computing devices, such as exemplary server computing devices 151, 152, and 153, via a computer communications network, such as exemplary network 190. Figure 1 As shown by utilizing action 178, users such as exemplary users 170 and 180 may utilize computing environments generated by computing environment generator 140 (such as exemplary computing environments 161 and 162) to execute projects and consume computing resources in the process.
[0026] Go to Figure 2 , wherein the exemplary system 200 shown illustrates exemplary links between computing environments, sandboxes, projects, and teams. Teams such as exemplary teams 210 and 220 and projects such as exemplary projects 230 and 240 can be generated based on information received from team and project definitions. For example, the exemplary team 210 may include a wrapper that may include metadata indicating the name of the team, a roster of individuals in the form of user identities, and other similar information, the roster of individuals including the team 210. Similarly, the exemplary project 230 may include a wrapper that may include metadata such as the following: metadata indicating the name of the project, guidance, or other similar resources suitable for initiating, executing, or completing the project, computing resource constraints associated with the project, and a computing environment template defining the computing environment on which the project will be executed. Additionally, the project 230 may be assigned to the team 210. Therefore, as shown by arrow 213, a link may be established between the project 230 and the team 210.
[0027] Figure 2The illustrated exemplary system 200 illustrates a plurality of projects assigned to a team 210, including, for example, project 230 and project 240. According to one example, such projects may represent homework projects, or schoolwork projects assigned to a class of students, with team 210 representing the class.
[0028] Additional links can be formed between individual computing environments and the projects to which they correspond. For example, project 230 may have specified and may have included a computing environment definition template as part of metadata 231. As previously described, such a template may include identification of the amount, type, speed, and other similar definition attributes of the processor, which will be simulated or represented within such a computing environment. As previously also noted, such a template may include identification of the amount, storage capacity, and other similar computing environment attributes of the memory. Additionally, such a template may include identification of computer software types, such as operating systems and applications to be installed on the computing environment. Multiple computing environments (such as exemplary computing environments 251 and 252) may be created based on computing environment definition templates, which may be one of the templates enumerated in metadata 231. According to one aspect, a computing environment may be generated for each individual enumerated in the roster of team 210, project 230 being linked to team 210, such a computing environment being generated for project 230. In a similar manner, computing environments 261 and 262 may be generated.
[0029] The generated computing environment (such as exemplary computing environments 251, 252, 261 and 262) can take the form of a virtual machine hosted by a service, which provides hardware and software to support the hosting of such a virtual machine. In such a case, the generation of individual computing environments (e.g., the generation of individual virtual machine images) and the subsequent loading of such virtual machine images using virtualization software can be part of the aforementioned generation of the computing environment, and the virtualization software includes a virtual machine monitor or other similar virtualization software. Another part can be the generation of a sandbox (e.g., a subscription, account or other similar structure) within the context of the hosted service itself, and the sandbox can provide a mechanism by which a user can access and utilize the computing environment. For example, such a sandbox can provide a mechanism by which access to the service can be restricted or tracked. Therefore, the generation of the computing environment may require the generation of a sandbox within which the computing environment is accessed.
[0030] A sandbox (e.g., exemplary sandbox 271) may also be generated based on a template, such as a sandbox template, which may be one of the templates of metadata 231 associated with project 230. A sandbox template may specify aspects of the sandbox, such as the type of account or subscription, pre-established restrictions imposed on such an account or subscription or capabilities granted, and other similar definitional or attribute aspects.
[0031] Once generated, security and manageability boundaries for computing environments and sandboxes containing such computing environments can be established. For example, computing environment 251 can be accessed by a user such as exemplary user 170 through a sandbox such as exemplary sandbox 271, which can represent a security and manageability boundary that enables the computing environment to be accessed by user 170 but not by, for example, user 180. In other words, computing environment 251 and sandbox 271 can be associated with a specific user (e.g., exemplary user 170) so that user 170 can access sandbox 271 and utilize computing environment 251 to the exclusion of other users (e.g., exemplary user 180). In a similar manner, computing environment 261 corresponding to a different project can also be accessed by user 170, but not by user 180. Conversely, computing environments 252 and 262 can be accessed by user 180 to the exclusion of user 170.
[0032] According to one aspect, such multiple computing environments may be presented to a user via an appropriate graphical user interface (e.g., an account or subscription graphical user interface that may graphically represent to a given user all of the computing environments available to such a user). Such a graphical user interface may additionally present information from a team or project linked to a user's sandbox. For example, a user 170, upon accessing a sandbox 271, may be provided with a graphical user interface that displays not only the mechanism by which the user 170 may access the computing environment 251, but also information about the project 230, such as, for example, project names, project guidelines, manuals, notes, and other similar informational materials, and other aspects that may be part of the metadata 231 of the project 230. Additionally, the user 170 may be similarly provided with information obtained from metadata 211 associated with the team 210 (e.g., such as the team name).
[0033] As previously described, a sandbox may be in the form of an account or subscription. Thus, each individual user may be uniquely associated with only a single sandbox and may access multiple different computing environments from within that single sandbox. For example, sandboxes 271 and 281 may both be single sandboxes associated with exemplary user 170, and in a similar manner, sandboxes 272 and 282 may both likewise be single sandboxes associated with exemplary user 180. In such an embodiment, a user such as exemplary user 170 may be presented with multiple different computing environments that the user may be permitted to access when accessing their sandbox, such as through the graphical user interface described above. For example, exemplary user 170 may be presented with computing environment 251 and computing environment 261. As previously described, the graphical user interface may further indicate that computing environment 251 is associated with project 230, including, for example, providing a project name or other similar identifier, and may likewise indicate that computing environment 261 is associated with project 240, both of which may have been assigned to user 170 when a portion of the user is a member of team 210 (such as, for example, user 170 is part of an educational class whose students are enumerated as team 210). In a similar manner, user 180 may, upon accessing a single sandbox, again as a combination of sandboxes 272 and 282, be presented with a graphical user interface that allows user 180 to select computing environment 252, computing environment 262, and any other computing environment within the single sandbox.
[0034] To facilitate management and operation of computing environments, each of computing environments 251, 252, 261, and 262, and the sandboxes within the context of which such computing environments are accessed (e.g., exemplary sandboxes 271, 272, 281, and 282) may also be associated with administrative privileges that may be granted to one or more users. Figure 2 In the particular example illustrated in system 200 of , administrator 110 is shown as having such administrative access granted. As previously indicated, administrator 110 may be a class professor who is assigning projects to individual students in the class. Administrator 110 may also be provided with a monitoring dashboard or other similar user interface through which administrator 110 may be presented with the current status of invitations, such as when accepted by users 170 and 180, the creation of various sandboxes, and the creation of various computing environments. Such a user interface may provide details about the creation of individual sandboxes and computing environments, as well as aggregated information as described below.
[0035] According to one aspect, the consumption of computing resources can be accounted for at the individual computing environment or sandbox level. Therefore, the computing resources assigned based on the team or project can be dispersed among the various computing environments being created, contained within the team container or project container. For example, computing resource restrictions or availability can be equally dispersed among all computing environments to which such restrictions or availability apply. For example, the computing resource restrictions enumerated in metadata 231 and applicable to project 230 can be replicated among computing environments 251 and 252. However, according to one aspect, such default items can be manually changed, such as by an administrator (such as exemplary administrator 110) when generating computing environments (such as exemplary computing environments 251 and 252) or at a subsequent time.
[0036] The allocation of computing resources and the subsequent monitoring of their consumption or utilization can be performed in a hierarchical manner. Therefore, for example, computing resources can be allocated to team 210 and can be enumerated in metadata 211 associated with team 210. Such a portion of computing resources can then also be allocated to each of projects 230 and 240, and any other project assigned to team 210. Such a portion can be an equal portion by, for example, each of projects 230 and 240 being assigned to half of the computing resources assigned to team 210. Alternatively, such a portion can be dissimilar. Additionally, for example at the team level, some computing resource amounts can be reserved for future projects or for future allocation to existing projects (e.g., exemplary projects 230 and 240). Continuing the hierarchical example, such as the portion of computing resources assigned to each project from the team level can then be further dispersed among the computing environments linked to such projects. Therefore, the portion of computing resources assigned to project 230 from team 210 can, for example, be further dispersed among computing environments 251 and 252 in the above manner. The mechanism of distributing computing resources in any tier can be equally applied to any other tier.
[0037] According to another aspect, the allocation of computing resources may be performed on a per-user or per-sandbox level, in which case ...sandbox level, in which case the allocation of computing resources may be performed on a per-sandbox level, in which case the allocation of computing resources may be performed on a Figure 3 As detailed in the ,aggregate amount of computing resources can be unlimited as long as additional users are allowed to join one or more teams.
[0038] The computing resource restrictions may also include an enumeration of one or more services that are allowed or constrained. For example, computing environments 251 and 252 may be constrained to prevent execution of specific enumerated software packages. Alternatively or additionally, computing environments 251 and 252 may be constrained to only allow execution of specific enumerated services, or may be explicitly allowed to access specific services regardless of other restrictions.
[0039] Where appropriate, monitoring of consumption of such computing resources may then also be aggregated at the project and team levels. For example, computing resources consumed by users 170 and 180 utilizing computing environments 251 and 252, respectively, may be aggregated and compared to computing resource limits enumerated in metadata 231 associated with project 230. In a similar manner, if computing resource limits or availabilities are enumerated on a team-wide basis, computing resource consumption of individual computing environments may be aggregated at the project level, and such aggregation may then be further aggregated at the team level.
[0040] Go to Figure 3 , wherein the exemplary system 300 shown illustrates an exemplary extension of an existing team (e.g., exemplary team 310) with a new user (e.g., exemplary user 372). More specifically, an administrator such as exemplary administrator 110 may have provided one or more team definitions and one or more project definitions, which may result in the creation of one or more team containers (e.g., exemplary team 310) and one or more project containers (e.g., exemplary project 330). For example, exemplary administrator 110 may be a presenter at a conference. Therefore, although exemplary administrator 110 is able to establish a template for a computing environment used by attendees of its conference, exemplary administrator 110 may not know exactly how many attendees will be present. For example, a conference may not require attendees to pre-register, or may allow attendees to move freely between presentations. In such a case, an administrator may provide a team definition that does not include a roster or only includes a roster of those individuals who have registered in advance. Individuals who subsequently join can then be dynamically added to the roster, and appropriate sandboxes and computing environments for them can be generated at a different time than when sandboxes and computing environments for other users are generated.
[0041] For example, in Figure 3In the example shown in the system 300 of , sandboxes 341 and 342 for users 170 and 371 may have been created in the manner described above. Additionally, computing environments such as exemplary computing environments 351 and 352 may have been generated and accessible within sandboxes 341 and 342, respectively, such as in the manner also previously detailed, based on a template or other similar metadata associated with project 330. As part of the creation of team 310, an administrator such as exemplary administrator 110 may be provided with an identifier such as exemplary identifier 360, which may be system generated and may uniquely identify team 310 and otherwise enable a process to update metadata for team 310, such as, for example, updating a roster of team 310 to include new members. More specifically, administrator 110 may share identifier 360 with other users who may be interested in joining team 310. For example, administrator 110 may provide identifier 360 to all attendees of a meeting to enable those attendees to join a presentation given by administrator 110 at the meeting.
[0042] like Figure 3 As shown in the exemplary system 300 of , a user such as the exemplary user 372 can receive an identifier 360, for example, through a decentralized action 381 triggered by the administrator 110. Such an identifier can then be provided to computer-executable instructions that can utilize the identifier to add the user (e.g., the exemplary user 372) to a team (e.g., the exemplary team 310). For example, the exemplary user 372 can provide the identifier 360 to a web page that can act as a front end for a process that can accept such an identifier and then utilize it to add the user 372 to the roster of the team 310.
[0043] As indicated by actions 382 and 383, once the metadata of team 310 is modified to include the updated roster, subsequent processing may generate new sandboxes and / or new computing environments to account for the changes in the metadata of team 310. For example, once action 382 updates the metadata of the team at 310 to include user 372 in the roster, create action 383 may be triggered to create sandbox 343 that may be associated with user 372, and computing environment 353 may be generated and made available to user 372 via sandbox 343, where computing environment 353 conforms to a template and other similar information that may be part of the metadata of item 330, which, in this example, may represent a presentation that a presenter in the form of administrator 110 is presenting at a meeting.
[0044] As previously described, as shown in action 382, creation action 383 need not be triggered by a modification of the metadata of team 310 (such as by adding user 372 to the roster of team 310). For example, as opposed to being triggered by a modification of the metadata of team 310, creation action 383 can be scheduled or triggered based on a current time that matches a scheduled time. In such an example, any user added to the roster of team 310 since the last execution of creation action 383 can have a sandbox and / or computing environment created for them upon a subsequent execution of creation action 383. For example, administrator 110 can trigger the creation of sandboxes 341 and 342 and computing environments 351 and 352 for use by users who register in advance for an administrator meeting demonstration. Administrator 110 can then further specify that any other users seeking to attend the demonstration must attend no later than ten minutes before the start of the demonstration. Ten minutes before the start of the presentation, creation action 383 may identify any additional users that have been added to the roster of team 310 since the time that initial sandboxes 341 and 342 and initial computing environments 351 and 352 were created. Such creation action 383 may identify user 372 as having been added to the roster of team 310 since that time, and ten minutes before the start of the presentation, creation action 383 may create sandbox 343 and computing environment 353, thereby allowing user 372 to access the computing environment designed by the presenter of the presentation. Alternatively, the creation of all sandboxes and computing environments may be triggered at one or more predetermined times. More specifically, for users who pre-register for the administrator's conference presentation when the administrator provides relevant team and project definitions, the administrator 110 does not have to trigger the creation of sandboxes 341 and 342 and computing environments 351 and 352, but rather the creation of sandboxes 341 and 342 and computing environments 351 and 352 can be performed at the same time as the creation of sandbox 343 in computing environment 353 (i.e., for example, ten minutes before the presentation begins). On the other hand, a check for new users may not be required, and new users can be added to the system temporarily.
[0045] The creation of the sandbox and the computing environment can be triggered independently of each other. For example, since the creation of the computing environment can be time-consuming, it is possible to trigger the creation of the sandbox and the computing environment independently of each other. Figure 2 In the case of the exemplary system 200 shown, the creation of such a computing environment can be delayed. Figure 2, a professor in the form of an administrator 110 can provide relevant team definitions and project definitions, which can create a team container 210 in project containers 230 and 240. In turn, sandboxes 341, 342, and 343 can be created, for example, in the aforementioned manner. Users such as exemplary users 170 and 180 may not be able to access those sandboxes until a later point in time. For example, a professor in the form of an administrator 110 can provide relevant information a few days, weeks, or even months before the start of a course. In addition, individual users can log in at different times, with some users logging in a few days before the start of the course, some other users logging in at the first meeting of the course, and some other users logging in later. Therefore, in order to disperse the processing load generated when creating a computing environment, according to one aspect, the creation of computing environments such as exemplary computing environments 251, 252, 261, and 262 can be delayed until a user actually logs in and seeks to utilize such a computing environment. Thus, for example, if user 170 logs in the evening before a course begins, exemplary computing environments 251 and 261 may be generated at that time, while generation of computing environments 252 and 262 may be delayed until a later time when user 180 logs in, such as, for example, just a few minutes before the course begins, or even after the course has begun. In this manner, the creation of computing environments may be time-shifted in distribution across time, thereby reducing the processing load at any one point in time.
[0046] As another example, in a Figure 3 In the case of the exemplary system 300 shown in FIG. 1 , the creation of the computing environment can be accelerated. For example, returning to Figure 3, the conference presenter in the form of administrator 110 may not be sure how many users will attend their presentation. However, the conference presenter may expect, for example, twenty users to attend the presentation. Therefore, for example, in addition to waiting for users to join, the administrator 110 can trigger the creation of a retention sandbox, which can be associated with any specific user, rather than the administrator 110 itself. Such a retention sandbox may then have created twenty computing environments therein, such as computing environments that conform to templates for other similar metadata for project 330. As individual users are added to the roster of team 310, for example, by adding action 382, new sandboxes for these users can be created again when the user is added to the roster or at a predetermined time. Once such a new sandbox is created, the computing environment from the retention sandbox can be reassigned to the newly created sandbox, thereby moving the processing load of creating such a computing environment to the past, and allowing users to access such a computing environment faster after being added to the roster. Therefore, for example, computing environment 353 may have been created in advance and may have been assigned to the retention sandbox. When creating sandbox 343 , as shown by creation action 383 , computing environment 353 can simply be reassigned from the retaining sandbox to sandbox 343 , which is much faster and more efficient than creating an entirely new computing environment within sandbox 343 .
[0047] As previously indicated, to facilitate management and operation of computing environments, each of computing environments 351, 352, and 353, as well as the sandboxes within the context of which such computing environments are accessed (e.g., exemplary sandboxes 341, 342, and 343), may also be associated with administrative privileges that may be granted to one or more users. Figure 3 In the particular example illustrated in system 300 of FIG. 1 , administrator 110 is shown as being granted such administrative access. Administrator 110 may also be provided with a monitoring dashboard or other similar user interface through which administrator 110 may be presented with the current status of, for example, acceptance of invitations by users 170, 371, and / or 372, creation of various sandboxes, and creation of various computing environments. Such a user interface may provide details on individual sandbox and computing environment creations, as well as aggregated information.
[0048] Go to Figure 4, wherein the flowchart 400 shown illustrates an exemplary series of steps by which a computing environment can be created on a large scale. Initially, at step 410, a team definition and a project definition can be received. As previously described, such a definition can include a team roster, a project computing resource template, and other similar information detailed above. Subsequently, at steps 415 and 420, teams and projects can be generated from the definitions received at step 410, and metadata including information enumerated in such definitions can be wrapped around such teams and projects. At step 425, links can be established between projects corresponding to teams to which such projects are assigned.
[0049] At step 430, one or more sandboxes may be created for the following users: users listed in the team roster, or users identified by the team or project metadata received at steps 415 and 420, respectively. As previously described, step 430 may be triggered by various events (e.g., user acceptance, a specific time, etc.). At step 435, one or more computing environments may be generated within the sandbox created at step 430, such as in the manner described above. As previously described, the creation of a virtual machine, for example, may be a time-consuming process, so various aspects of step 435 may be performed in parallel or in an interleaved manner. With regard to the latter, according to one aspect, as described above, the creation of a virtual machine image may be triggered by a user attempting to log into his account or otherwise access a sandbox associated with the user. In such a case, once the on-demand creation of the computing environment is completed, the user will be able to access the computing environment within the context of the sandbox. As described above, for example, in an example where a computing environment is generated and maintained in a holding sandbox until it is assigned to one or more sandboxes created at step 430, various aspects of step 435 may be moved before step 430.
[0050] Once the sandboxes and computing environments are created, processing may proceed to step 440, and computing resource limits or availability may be established for each individual sandbox and computing environment created at step 350. As previously described, step 440 may cause an initial dispersion, such as an equal dispersion across each computing environment associated with a project, where such computing resource availability or limits are defined at the project level, or an equal dispersion across each computing environment associated with a team, where such computing resource availability or limits are defined at the team level. Step 440 may also cause each sandbox to be built with a predetermined amount of computing resources. For example, in a conference setting, each attendee may have a predetermined amount of computing resources regardless of how many other attendees join the presentation. However, as part of step 440, the default dispersion may be modified in advance, for example, by an administrator, or subsequently, in which case such modifications may be applied at step 440, and in which case such modifications will not be part of the initial execution of the steps of exemplary flowchart 400.
[0051] Subsequently, at step 445, administrative and security boundaries may be generated for each sandbox and computing environment generated at steps 430 and 435. Such boundaries may include defining individual users who will have user access to such computing environments within the context of such sandboxes, and defining administrative access to such computing environments. As previously described, a user with access to multiple computing environments may be presented with such multiple computing environments through an account graphical user interface or other similar unified access mechanism. At step 450, a link may be created between an individual computing environment and a project sandbox corresponding to a project for which such computing environment was created.
[0052] As described above, the metadata of the team and / or project can be modified, including adding a new user to the team's roster or removing an existing user from the team's roster. If such a change occurs, then at step 455, processing can trigger the execution of step 460, at which point the metadata of the team is modified to accommodate the new user or remove the existing user. Processing can then return to step 430, in which a sandbox for the new user can be created, or a sandbox for the removed user can be deleted. The remaining steps 435 to 450 can then be performed again. As previously described, step 455 can be triggered when, for example, a new user is detected to be added to the team, because step 455 can be executed on a predetermined schedule or at a predetermined time (e.g., ten minutes before the start of the demonstration). If no changes are made to the metadata of the team or project (such as determined in step 455), the relevant processing can end at step 465.
[0053] Go to Figure 5 , illustrates an exemplary computing device 500 that may perform some or all of the mechanisms and actions described above. The exemplary computing device 500 may include, but is not limited to, one or more central processing units (CPUs) 520, a system memory 530, and a system bus 521, which couples various system components including the system memory to the processing unit 520. The system bus 521 may be any of several types of bus structures, including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures. The computing device 500 may optionally include graphics hardware, including, but not limited to, a graphics hardware interface 560 and a display device 561, which may include a display device capable of receiving touch-based user input (e.g., a touch-sensitive or multi-touch display device). Depending on the particular physical implementation, the CPU 520, the system memory 530, and one or more of the other components of the computing device 500 may be physically located in the same place (e.g., on a single chip). In such a case, some or all of the system bus 521 may be simply silicon paths within a single chip structure, and its Figure 5 The illustrations in may be for illustration purposes only.
[0054] The computing device 500 also typically includes computer-readable media, which may include any available media that the computing device 500 can access, and includes volatile and non-volatile media and removable and non-removable media. As an example and not a limitation, computer-readable media may include computer storage media and communication media. Computer storage media include media for storing content such as computer-readable instructions, data structures, program modules, or other data implemented in any method or technology. Computer storage media include, but are not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disk (DVD) or other optical disk storage devices, cassettes, tapes, disk storage or other magnetic storage devices, or any other media that can be used to store desired content and accessible by the computing device 500. However, computer storage media do not include communication media. Communication media typically embody computer-readable instructions, data structures, program modules, or other data in modulated data signals such as carrier waves or other transmission mechanisms, and include any content delivery media. As an example and not a limitation, communication media include wired media such as wired networks or direct wired connections, and wireless media such as acoustic, RF, infrared, and other wireless media. Combinations of the any of the above should also be included within the scope of computer readable media.
[0055] System memory 530 includes computer storage media in the form of volatile and / or nonvolatile memory, such as read-only memory (ROM) 531 and random access memory (RAM) 532. Basic input / output system 533 (BIOS), which contains the basic routines that help transfer content between elements within computing device 500, such as during startup, is typically stored in ROM 531. RAM 532 typically contains data and / or program modules that are immediately accessible and / or currently being operated on by processing unit 520. By way of example and not limitation, Figure 5 Operating system 534 , other program modules 535 , and program data 536 are illustrated.
[0056] The computing device 500 may also include other removable / non-removable, volatile / non-volatile computer storage media. For example only, Figure 5 A hard disk drive 541 is illustrated that reads from or writes to a non-removable non-volatile magnetic medium. Other removable / non-removable, volatile / non-volatile computer storage media that can be used with the exemplary computing device include, but are not limited to, magnetic cassettes, flash memory cards, digital versatile disks, digital videotapes, solid-state RAM, solid-state ROM, and other computer storage media defined and described above. The hard disk drive 541 is typically connected to the system bus 521 via a non-volatile memory interface such as interface 540.
[0057] discussed above and in Figure 5 The drives and their associated computer storage media illustrated in FIG. 5 provide storage of computer readable instructions, data structures, program modules, and other data for the computing device 500. Figure 5 544, other program modules 545, and program data 546. Note that these components may be the same as or different from operating system 534, other program modules 535, and program data 536. Operating system 544, other program modules 545, and program data 546 are given different reference numbers to illustrate that they are at least different copies.
[0058] The computing device 500 can operate in a networked environment using logical connections to one or more remote computers. The computing device 500 is illustrated as being connected to a general network connection 551 (to the network 190) through a network interface or adapter 550, which in turn is connected to the system bus 521. In a networked environment, program modules depicted relative to the computing device 500, or portions or peripherals thereof, can be stored in the memory of one or more other computing devices that are communicatively coupled to the computing device 500 through the general network connection 551. It will be understood that the network connections shown are exemplary and other ways of establishing a communications link between computing devices may be used.
[0059] Although a single physical device is described, the exemplary computing device 500 may be a virtual computing device, in which case the functionality of the above-mentioned physical components (e.g., CPU 520, system memory 530, network interface 540, and other similar components) may be provided by computer executable instructions. Such computer executable instructions may be executed on a single physical computing device, or may be dispersed across multiple physical computing devices, including being dispersed across multiple physical computing devices in a dynamic manner, so that the specific physical computing device hosting such computer executable instructions may dynamically change over time according to needs and availability. In the case where the exemplary computing device 500 is a virtualized device, the underlying physical computing device hosting such a virtualized computing device may itself include physical components similar to those described above and operating in a similar manner. In addition, virtual computing devices may be utilized in multiple layers, where one virtual computing device is executed within the fabric of another virtual computing device. The term "computing device" as used herein therefore refers to a physical computing device or a virtualized computing environment including a virtual computing device, within which computer executable instructions may be executed in a manner consistent with the manner in which the physical computing device executes them. Similarly, as used herein, terms referring to physical components of a computing device refer to those physical components or virtualizations thereof that perform the same or equivalent functions.
[0060] As a first example, the above description includes a method for generating a set of multiple virtual computing environments and allocating computing resources among the set of multiple virtual computing environments, the method including: generating a first set of multiple virtual computing environments, wherein each virtual computing environment includes a simulation of computing hardware specified by a first template; providing user access to a unique virtual computing environment in the first set of multiple virtual computing environments to each member of a team enumerated by a team roster; providing administrator access to each virtual computing environment in the first set of multiple virtual computing environments to a first administrator; linking each virtual computing environment in the first set of multiple virtual computing environments to a first project, the first project being associated with first project metadata including the first template; linking the first project to a team associated with team metadata including the team roster; allocating an initial allocation of computing resources to each virtual computing environment in the first set of multiple virtual computing environments, wherein simulated computing performed by the virtual computing environment consumes computing resources allocated to the virtual computing environment; after generation of the first set of multiple virtual computing environments, determining that one or more newly added members have been added to the team roster; providing user access to a unique virtual computing environment to each of the one or more newly added members; and allocating an initial allocation of computing resources to each virtual computing environment provided to each of the one or more newly added members.
[0061] The second example is a method according to the first example, further comprising: after the determination, generating a second set of multiple virtual computing environments, wherein each virtual computing environment includes a simulation of computing hardware specified by the first template; wherein the unique virtual computing environment provided to each of the one or more newly added members is from the second set of multiple virtual computing environments.
[0062] A third example is the method of the first example, wherein the unique virtual computing environment provided to each of the one or more newly added members is from the first set of the plurality of virtual computing environments.
[0063] A fourth example is a method according to the first example, wherein generating a first set of multiple virtual computing environments and providing user access to a unique virtual computing environment in the first set of multiple virtual computing environments includes: generating each virtual computing environment in the first set of multiple virtual computing environments within a unique sandbox assigned to each member of a team enumerated by a team roster.
[0064] The fifth example is a method according to the first example, wherein generating a first set of multiple virtual computing environments includes: generating the first set of multiple virtual computing environments within a retention sandbox assigned to a first administrator; and wherein providing user access to a unique virtual computing environment in the first set of multiple virtual computing environments also includes: reassociating individual virtual computing environments in the first set of multiple virtual computing environments from the retention sandbox to a unique sandbox assigned to each member of a team enumerated by a team roster.
[0065] The sixth example is a method according to the fifth example, wherein providing user access to a unique virtual computing environment to each of the one or more newly added members also includes: reassociating other individual virtual computing environments in the first set of multiple virtual computing environments from the retention sandbox to the unique sandbox assigned to each of the one or more newly added members.
[0066] The seventh example is a method according to the first example, further comprising: receiving a unique identifier from the new user; and modifying the team metadata to update the team roster to now include the new user, the modification being triggered by receiving the unique identifier from the new user.
[0067] The eighth example is a method according to the first example, further comprising: monitoring the consumption of a first initial allocation of computing resources for each virtual computing environment in a first set of multiple virtual computing environments; and generating a notification to a first administrator if the consumption of the monitored first initial allocation of computing resources is higher than a threshold.
[0068] The ninth example is a method according to the first example, further comprising: if a first virtual computing environment in the first set of multiple virtual computing environments has consumed all computing resources previously allocated to the first virtual computing environment, preventing the first virtual computing environment from performing further simulation calculations.
[0069] The tenth example is a method according to the first example, further including: if a first virtual computing environment in a first set of multiple virtual computing environments is consuming computing resources previously allocated to the first virtual computing environment at a rate faster than a threshold rate, even if the computing resources previously allocated to the first virtual computing environment have not yet been fully consumed, preventing the first virtual computing environment from performing further simulation calculations.
[0070] The eleventh example is a method according to the first example, further comprising: presenting a plurality of templates to a first administrator; receiving a selection of a first template from the plurality of templates; and based on the selection, modifying the first project metadata to include the first template.
[0071] The twelfth example is a method according to the first example, further comprising: receiving a first resource consumption limit from a first administrator; and preventing the first virtual computing environment from performing further simulation calculations if the consumption of computing resources of a first virtual computing environment previously allocated to a first virtual computing environment in a first set of multiple virtual computing environments exceeds the first resource consumption limit, even if the computing resources previously allocated to the first virtual computing environment have not been fully consumed.
[0072] The thirteenth example is a method according to the first example, wherein in a first set of multiple virtual computing environments and in a virtual computing environment provided to each of one or more newly added members, the initial allocation of computing resources is the same allocation for each virtual computing environment.
[0073] The fourteenth example is a clustered set of computing devices, the set of computing devices comprising: processing units; and one or more computer-readable storage media comprising computer-executable instructions, which, when executed by at least some of the processing units, cause at least some of the computing devices in the set of computing devices to perform the following operations: generate a first set of multiple virtual computing environments, wherein each virtual computing environment comprises a simulation of computing hardware specified by a first template; provide each member of a team enumerated by a team roster with user access to a unique virtual computing environment in the first set of multiple virtual computing environments; provide a first administrator with administrator access to each virtual computing environment in the first set of multiple virtual computing environments; and linking each virtual computing environment to a first project, the first project being associated with first project metadata including a first template; linking the first project to a team associated with team metadata including a team roster; allocating an initial allocation of computing resources to each virtual computing environment in a first set of multiple virtual computing environments, wherein simulated computing consumption performed by the virtual computing environment is allocated to the computing resources of the virtual computing environment; after generation of the first set of multiple virtual computing environments, determining that one or more newly added members have been added to the team roster; providing each of the one or more newly added members with user access to a unique virtual computing environment; and allocating an initial allocation of computing resources to each virtual computing environment provided to each of the one or more newly added members.
[0074] The fifteenth example is a set of computing devices according to the fourteenth example, wherein one or more computer-readable storage media include additional computer-executable instructions, which, when executed by at least some of the processing units, cause at least some of the computing devices in the set of computing devices to further perform the following operations: after determining, generating a second set of multiple virtual computing environments, wherein each virtual computing environment includes a simulation of computing hardware specified by the first template; wherein the unique virtual computing environment provided to each of the one or more newly added members is from the second set of multiple virtual computing environments.
[0075] A sixteenth example is the set of computing devices according to the fourteenth example, wherein the unique virtual computing environment provided to each of the one or more newly added members is from the first set of the plurality of virtual computing environments.
[0076] The seventeenth example is a set of computing devices according to the fourteenth example, wherein the computer executable instructions that cause generation of a first set of multiple virtual computing environments and providing user access to a unique virtual computing environment in the first set of multiple virtual computing environments include the following computer executable instructions: which, when executed by at least some of the processing units, cause at least some of the computing devices in the set of computing devices to: generate each virtual computing environment in the first set of multiple virtual computing environments within a unique sandbox assigned to each member of a team enumerated by a team roster.
[0077] The eighteenth example is a set of computing devices according to the fourteenth example, wherein computer executable instructions that cause generation of a first set of multiple virtual computing environments and provide user access to a unique virtual computing environment in the first set of multiple virtual computing environments include the following computer executable instructions: which, when executed by at least some of the processing units, cause at least some of the computing devices in the set of computing devices to: generate each virtual computing environment in the first set of the multiple virtual computing environments within a unique sandbox assigned to each member of a team enumerated by a team roster.
[0078] The nineteenth example is a set of computing devices according to the fourteenth example, wherein one or more computer-readable storage media include other computer-executable instructions, which, when executed by at least some of the processing units, cause at least some of the computing devices in the set of computing devices to further perform the following operations: receive a unique identifier from a new user; and modify the team metadata to update the team roster to now include the new user, the modification being triggered by receiving the unique identifier from the new user.
[0079] The twentieth example is one or more computer-readable storage media including computer-executable instructions, which, when executed by a computing device, cause the computing device to perform the following operations: generate a first set of multiple virtual computing environments, wherein each virtual computing environment includes a simulation of computing hardware specified by a first template; provide each member of a team enumerated by a team roster with user access to a unique virtual computing environment in the first set of multiple virtual computing environments; provide a first administrator with administrator access to each virtual computing environment in the first set of multiple virtual computing environments; link each virtual computing environment in the first set of multiple virtual computing environments to a first project, the first project being associated with the first project including the first template; associating first project metadata of a template; linking the first project to a team associated with team metadata including a team roster; allocating an initial allocation of computing resources to each virtual computing environment in a first set of multiple virtual computing environments, wherein simulation computing consumption performed by the virtual computing environment is allocated to the computing resources of the virtual computing environment; after the first set of multiple virtual computing environments is generated, determining that one or more newly added members have been added to the team roster; providing each of the one or more newly added members with user access to a unique virtual computing environment; and allocating an initial allocation of computing resources to each virtual computing environment provided to each of the one or more newly added members.
[0080] From the foregoing description it can be seen that a mechanism for scalably generating and providing a computing environment has been presented.In view of the many possible variations of the subject matter described herein, we claim as the invention all such embodiments that fall within the scope of the appended claims and their equivalents.
Claims
1. A method for generating a set of multiple virtual computing environments and allocating computing resources among the set of multiple virtual computing environments, the method comprising: receiving a first input, the first input comprising: a team definition including an original team roster and a first project definition including a first template; automatically generating a first set of a plurality of virtual computing environments based on the first input, wherein each virtual computing environment includes a simulation of computing hardware specified by the first template; automatically creating administrator access for a first administrator to each virtual computing environment in the first set of a plurality of virtual computing environments based on the first input; automatically linking each virtual computing environment in the first set of a plurality of virtual computing environments to a first project, the first project being associated with the first project definition; automatically linking the first project to a team defined by the team definition; automatically allocating an initial predetermined allocation of computing resources to each virtual computing environment in said first set of a plurality of virtual computing environments, wherein simulation computations performed by the virtual computing environment consume computing resources allocated to said virtual computing environment; subsequent to said generating of said first set of a plurality of virtual computing environments, receiving a second input associated with an updated team definition including an updated team roster; After said generating of said first set of a plurality of virtual computing environments, determining that said updated team roster includes one or more newly added members that were not part of said original team roster; and Each of the one or more newly added members is automatically provided user access to a unique virtual computing environment from among a second subset of the first set of previously generated plurality of virtual computing environments.
2. The method of claim 1, wherein said automatically generating said first set of a plurality of virtual computing environments comprises: Each virtual computing environment in a first subset of the first set of a plurality of virtual computing environments is generated within a unique sandbox assigned to each member of the original team roster.
3. The method according to claim 2, further comprising: Prior to receiving the second input, automatically providing each member of the original team roster with user access to the unique virtual computing environment from the first subset of the first set of multiple virtual computing environments, the automatic providing being performed by generating each virtual computing environment from the first subset of the first set of multiple virtual computing environments within the unique sandbox assigned to each member of the original team roster.
4. The method of claim 1, wherein said automatically generating said first set of a plurality of virtual computing environments comprises: generating, within a sandbox assigned to the first administrator, the second subset of the first set of a plurality of virtual computing environments; and Wherein automatically providing the user access to the unique virtual computing environment in the second subset of the first set of multiple virtual computing environments to the one or more newly added members also includes: reassociating individual virtual computing environments in the second subset of the first set of multiple virtual computing environments from the sandbox to the unique sandbox assigned to the one or more newly added members.
5. A method according to claim 2, wherein the initial predetermined allocation of computing resources allocated to the first subset of the first set of multiple virtual computing environments is different from the initial predetermined allocation of computing resources allocated to the second subset of the first set of multiple virtual computing environments.
6. The method of claim 1 , wherein receiving the second input comprises: receiving a unique identifier from the new user; as well as The updated team definition is automatically generated by modifying the team definition to update the original team roster to now include the new user.
7. The method according to claim 1, further comprising: for each virtual computing environment in said first set of a plurality of virtual computing environments, monitoring consumption of said initial predetermined allocation of said computing resources; as well as If the monitored consumption is above a threshold, a notification is generated to the first administrator.
8. The method according to claim 1, further comprising: If a first virtual computing environment in the first set of multiple virtual computing environments has consumed all computing resources previously allocated to the first virtual computing environment, the first virtual computing environment is prevented from performing further simulation computations.
9. The method according to claim 1, further comprising: If a first virtual computing environment in the first set of multiple virtual computing environments is consuming computing resources previously allocated to the first virtual computing environment at a rate faster than a threshold rate, the first virtual computing environment is prevented from performing further simulation calculations even if the computing resources previously allocated to the first virtual computing environment have not yet been fully consumed.
10. The method of claim 1, wherein automatically generating the first set of multiple virtual computing environments comprises: Based on acceptance of the invitation by the first user, automatic generation of a first virtual computing environment in the first set of a plurality of computing environments is automatically triggered.
11. The method according to claim 1, further comprising: receiving a first resource consumption limit from the first administrator; as well as If a first virtual computing environment in the first set of multiple virtual computing environments consumes computing resources previously allocated to the first virtual computing environment in excess of the first resource consumption limit, the first virtual computing environment is prevented from performing further simulation calculations even if the computing resources previously allocated to the first virtual computing environment have not been fully consumed.
12. A collection of aggregated computing devices, comprising: Central Processing Unit (CPU); as well as One or more computer-readable storage media including computer-executable instructions that, when executed by at least some of the processing units, cause at least some of the set of computing devices to: receiving a first input, the first input comprising: a team definition including an original team roster and a first project definition including a first template; automatically generating a first set of a plurality of virtual computing environments based on the first input, wherein each virtual computing environment includes a simulation of computing hardware specified by the first template; automatically creating, based on the first input, a method of providing a first administrator with administrator access to each virtual computing environment in the first set of a plurality of virtual computing environments; automatically linking each virtual computing environment in the first set of a plurality of virtual computing environments to a first project, the first project being associated with the first project definition; automatically linking the first project to a team defined by the team definition; automatically allocating an initial predetermined allocation of computing resources to each virtual computing environment in said first set of a plurality of virtual computing environments, wherein simulation computations performed by the virtual computing environment consume computing resources allocated to said virtual computing environment; subsequent to said generating of said first set of a plurality of virtual computing environments, receiving a second input associated with an updated team definition including an updated team roster; After said generating of said first set of a plurality of virtual computing environments, determining that said updated team roster includes one or more newly added members that were not part of said original team roster; and Each of the one or more newly added members is automatically provided user access to a unique virtual computing environment from among a second subset of the first set of previously generated plurality of virtual computing environments.
13. The set of computing devices of claim 12, wherein the computer executable instructions that cause automatic generation of the first set of multiple virtual computing environments include computer executable instructions that, when executed by at least some of the CPUs, cause at least some of the set of computing devices to: Each virtual computing environment in a first subset of the first set of a plurality of virtual computing environments is generated within a unique sandbox assigned to each member of the original team roster.
14. The set of computing devices of claim 13, wherein the one or more computer-readable storage media further comprise computer-executable instructions that, when executed by at least some of the processing units, cause at least some of the set of computing devices to: Prior to receiving the second input, automatically providing each member of the original team roster with user access to the unique virtual computing environment from the first subset of the first set of multiple virtual computing environments, the automatic providing being performed by generating each virtual computing environment from the first subset of the first set of multiple virtual computing environments within a unique sandbox assigned to each member of the original team roster.
15. The set of computing devices of claim 12, wherein the computer executable instructions that cause generation of the first set of multiple virtual computing environments include computer executable instructions that, when executed by at least some of the processing units, cause at least some of the set of computing devices to: generating, within a sandbox assigned to the first administrator, the second subset of the first set of multiple virtual computing environments; and Wherein automatically providing the user access to the only virtual computing environment in the second subset of the first set of multiple virtual computing environments to the one or more newly added members further comprises: Individual virtual computing environments in the second subset of the first set of a plurality of virtual computing environments are reassociated from the sandbox to a unique sandbox assigned to the one or more newly added members.
16. A set of computing devices according to claim 13, wherein the initial predetermined allocation of computing resources allocated to the first subset of the first set of multiple virtual computing environments is different from the initial predetermined allocation of computing resources allocated to the second subset of the first set of multiple virtual computing environments.
17. The set of computing devices of claim 12, wherein the computer executable instructions that cause at least some of the set of computing devices to receive the second input further comprise computer executable instructions that, when executed by at least some of the CPUs, further cause at least some of the set of computing devices to: receiving a unique identifier from the new user; and The updated team definition is automatically generated by modifying the team definition to update the original team roster to now include the new user.
18. The set of computing devices of claim 12, wherein the computer executable instructions that cause automatic generation of the first set of multiple virtual computing environments include computer executable instructions that, when executed by at least some of the CPUs, cause at least some of the set of computing devices to: Based on acceptance of the invitation by the first user, automatic generation of a first virtual computing environment in the first set of a plurality of computing environments is automatically triggered.
19. The set of computing devices of claim 12, wherein the one or more computer-readable storage media further comprise computer-executable instructions that, when executed by at least some of the processing units, cause at least some of the set of computing devices to: receiving a first resource consumption limit from the first administrator; and If a first virtual computing environment in the first set of multiple virtual computing environments consumes computing resources previously allocated to the first virtual computing environment in excess of the first resource consumption limit, the first virtual computing environment is prevented from performing further simulation calculations even if the computing resources previously allocated to the first virtual computing environment have not been fully consumed.
20. One or more computer storage media comprising computer executable instructions that, when executed by a computing device, cause the computing device to: A first input is received, wherein the first input comprises: a team definition including an original team roster and a first project definition including a first template; automatically generating a first set of a plurality of virtual computing environments based on the first input, wherein each virtual computing environment includes a simulation of computing hardware specified by the first template; automatically creating administrator access for a first administrator to each virtual computing environment in the first set of a plurality of virtual computing environments based on the first input; automatically linking each virtual computing environment in the first set of a plurality of virtual computing environments to a first project, the first project being associated with the first project definition; automatically linking the first project to a team defined by the team definition; automatically allocating an initial predetermined allocation of computing resources to each virtual computing environment in said first set of a plurality of virtual computing environments, wherein simulation computations performed by the virtual computing environment consume computing resources allocated to said virtual computing environment; subsequent to said generating of said first set of a plurality of virtual computing environments, receiving a second input associated with an updated team definition including an updated team roster; subsequent to said generating of said first set of a plurality of virtual computing environments, determining that said updated team roster includes one or more newly added members that were not part of said original team roster; as well as Each of the one or more newly added members is automatically provided user access to a unique virtual computing environment from among a second subset of the first set of previously generated plurality of virtual computing environments.
Citation Information
Patent Citations
Assignment of resources in virtual machine pools
CN104040526A
Tagging physical resources in cloud computing environment
CN104106051A