Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
METHOD AND SYSTEM FOR PROVIDING VIRTUAL COMPUTING ENVIRONMENT FOR USERS IN AN ORGANIZATION
Document Type and Number:
WIPO Patent Application WO/2019/012322
Kind Code:
A1
Abstract:
Disclosed herein is a method and system for providing virtual computing environment for users in an organization. A machine configuration server receives machine set-up request from a manager associated with the organization for dynamically creating the virtual machines. Later, machine set-up information related to the virtual machines is provided to manager for assigning the virtual machines to the users. Also, the server provides a web-based user interface to the users for facilitating the users to access the virtual machines through the user interface. In some embodiments, the present method helps in automatically creating, monitoring, and destroying the virtual machines, thereby eliminating manual process setting up virtual environments. Also, the method helps in reducing overall costs associated with setting up of the virtual machines by using evaluation versions of required software utilities.

Inventors:
RICHARD CHRISTOPHER (IN)
Application Number:
PCT/IB2017/056396
Publication Date:
January 17, 2019
Filing Date:
October 16, 2017
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
G7CR TECH INDIA PVT LTD (IN)
International Classes:
G06F9/455; G06F9/46; G06F15/16; G06Q10/06
Domestic Patent References:
WO2012056731A12012-05-03
Foreign References:
JP2010102415A2010-05-06
US8443219B22013-05-14
Attorney, Agent or Firm:
RAGHAVEDNRA, Ramya, Rao et al. (IN)
Download PDF:
Claims:
CLAIMS:

1. A method of providing a virtual computing environment (108) for one or more users (104) in an organization (103), the method comprising:

receiving, by a machine configuration server (101), a machine set-up request (107) from a manager (105) associated with the organization (103) for creating one or more virtual machines (109) in the virtual computing environment (108), wherein the machine set-up request (107) comprises one or more machine configuration requirements (211); dynamically creating, by the machine configuration server (101), the one or more virtual machines (109) based on each of the one or more machine configuration requirements (211); providing, by the machine configuration server (101), machine set-up information (111) related to each of the one or more virtual machines (109) to the manager (105), wherein the manager (105) assigns one of the one or more virtual machines (109) to each of the one or more users (104) based on the machine set-up information (111); and providing, by the machine configuration server (101), a web-based user interface (230) to each of the one or more users (104) for accessing one of the one or more virtual machines (109) assigned to each of the one or more users (104) using the machine set-up information (111).

2. The method as claimed in claim 1, wherein the one or more machine configuration requirements (211) comprises number of virtual machines (109) required, list of software utilities to be installed on each of the one or more virtual machines (109), hardware configuration requirements on each of the one or more virtual machines (109), and number of working hours for which each of the one or more virtual machines (109) are required to be in operation.

3. The method as claimed in claim 1 , wherein the software utilities are installed on each of the one or more virtual machines (109) using at least one of evaluation versions and non-evaluation versions of each of the software utilities.

4. The method as claimed in claim 1, wherein the machine set-up information (111) associated with each of the one or more virtual machines (109) comprises login credentials of each of the one or more virtual machines (109), and a pre-configured machine destruction time of each of the one or more virtual machines (109).

5. The method as claimed in claim 4, wherein the pre-configured machine destruction time for the one or more virtual machines (109) is modifiable by the manager (105) based on requirement of the one or more virtual machines (109) by the one or more users (104).

6. The method as claimed in claim 1 further comprises monitoring operation of each of the one or more virtual machines (109) assigned to the one or more users (104).

7. The method as claimed in claim 6, wherein monitoring the operation of each of the one or more virtual machines (109) further comprises suspending one or more of the one or more virtual machines (109) upon determining at least one of inactivity of one or more of the one or more virtual machines (109) for a predetermined time or completion of pre-configured machine destruction time by one or more of the one or more virtual machines (109).

8. A machine configuration server (101) for providing a virtual computing environment (108) to one or more users (104) in an organization (103), the machine configuration server (101) comprising:

a processor (203); and a memory (205) communicatively coupled to the processor (203), wherein the memory (205) stores processor-executable instructions, which, on execution, causes the processor (203) to: receive a machine set-up request (107) from a manager (105) associated with the organization (103) to create one or more virtual machines (109) in the virtual computing environment (108), wherein the machine setup request (107) comprises one or more machine configuration requirements

(2i i); dynamically create the one or more virtual machines (109) based on each of the one or more machine configuration requirements (211); provide machine set-up information (111) related to each of the one or more virtual machines (109) to the manager (105), wherein the manager (105) assigns one of the one or more virtual machines (109) to each of the one or more users (104) based on the machine set-up information (111); and provide a web-based user interface (230) to each of the one or more users (104) to access one of the one or more virtual machines (109) assigned to each of the one or more users (104) using the machine set-up information (111).

9. The machine configuration server (101) as claimed in claim 8, wherein the one or more machine configuration requirements (211) comprises number of virtual machines (109) required, list of software utilities to be installed on each of the one or more virtual machines (109), hardware configuration requirements on each of the one or more virtual machines (109), and number of working hours for which each of the one or more virtual machines (109) are required to be in operation.

10. The machine configuration server (101) as claimed in claim 8, wherein the processor (203) installs the software utilities on each of the one or more virtual machines (109) using at least one of evaluation versions and non-evaluation versions of each of the software utilities.

11. The machine configuration server (101) as claimed in claim 8, wherein the machine set-up information (111) associated with each of the one or more virtual machines (109) comprises login credentials of each of the one or more virtual machines (109), and a pre-configured machine destruction time of each of the one or more virtual machines (109). 12. The machine configuration server (101) as claimed in claim 11, wherein the pre- configured machine destruction time for the one or more virtual machines (109) is modifiable by the manager (105) based on requirement of the one or more virtual machines (109) by the one or more users (104).

13. The machine configuration server (101) as claimed in claim 8, wherein the instructions further cause the processor (203) to monitor operation of each of the one or more virtual machines (109) assigned to the one or more users (104). 14. The machine configuration server (101) as claimed in claim 13, wherein the instructions further cause the processor (203) to suspend one or more of the one or more virtual machines (109) upon determining at least one of inactivity of one or more of the one or more virtual machines (109) for a predetermined time or completion of pre-configured machine destruction time by one or more of the one or more virtual machines (109), while monitoring the operation of each of the one or more virtual machines (109).

Description:
METHOD AND SYSTEM FOR PROVIDING VIRTUAL COMPUTING ENVIRONMENT FOR USERS IN AN ORGANIZATION

TECHNICAL FIELD The present subject matter is related, in general to virtual computing and more particularly, but not exclusively to a method and system for providing a virtual computing environment to one or more users in an organization.

BACKGROUND Training has been an integral part of any organization. The organizations, at all times, have a great need of technical training for newly recruited professionals, and for existing employees to upgrade their technical skills and help them in learning newer technologies. However, cost of setting up and conducting these training programs has been increasing exponentially year on year. The trainings add as a huge investment in the overall budget of the organization. Apart from the cost aspects, coordination efforts required for conducting such trainings is immense.

Usually, trainings involve setting up infrastructure and lab environments for the trainees to facilitate the trainees in demonstrations and hands-on practices of the technology involved. Currently, Information Technology (IT) professionals who are responsible for setting up the training program collect the required training setup details from the trainer and manually configure and test each participant machine before the training start time. Further, the IT professionals of such organizations spend a lot of time and resources in creating, destroying and re-creating training environments for various training needs of the organization. On top of these, providing right set of technologies and computing platform to each trainee to exactly suit the requirements of the training on each participant machine becomes unmanageable.

SUMMARY

Disclosed herein is a method of providing a virtual computing environment for one or more users in an organization, the method comprises receiving, by a machine configuration server, a machine set-up request from a manager associated with the organization for creating one or more virtual machines in the virtual computing environment. The machine set-up request comprises one or more machine configuration requirements. Further, the one or more machine configuration requirements are used for dynamically creating the one or more virtual machines. Upon creating the one or more virtual machines, machine set-up information related to each of the one or more virtual machines are provided to the manager. The manager assigns one of the one or more virtual machines to each of the one or more users based on the machine set-up information. Finally, a web-based user interface is provided to each of the one or more users for accessing one of the one or more virtual machines assigned to each of the one or more users using the machine set-up information.

Further, the present disclosure relates to a machine configuration server for providing a virtual computing environment to one or more users in an organization. The machine configuration server comprises a processor and a memory. The memory is communicatively coupled to the processor and stores processor-executable instructions, which, on execution, causes the processor to receive a machine set-up request from a manager associated with the organization to create one or more virtual machines in the virtual computing environment. The machine set-up request comprises one or more machine configuration requirements. Further, the processor dynamically creates the one or more virtual machines based on each of the one or more machine configuration requirements. Upon creating the one or more virtual machines, the processor provides machine set-up information related to each of the one or more virtual machines to the manager. The manager assigns one of the one or more virtual machines to each of the one or more users based on the machine set-up information. Finally, the processor provides a web-based user interface to each of the one or more users to access one of the one or more virtual machines assigned to each of the one or more users using the machine set-up information.

The foregoing summary is illustrative only and is not intended to be in any way limiting. In addition to the illustrative aspects, embodiments, and features described above, further aspects, embodiments, and features will become apparent by reference to the drawings and the following detailed description.

BRIEF DESCRIPTION OF THE ACCOMPANYING DRAWINGS

The accompanying drawings, which are incorporated in and constitute a part of this disclosure, illustrate exemplary embodiments and, together with the description, explain the disclosed principles. In the figures, the left-most digit(s) of a reference number identifies the figure in which the reference number first appears. The same numbers are used throughout the figures to reference like features and components. Some embodiments of system and/or methods in accordance with embodiments of the present subject matter are now described, by way of example only, and regarding the accompanying figures, in which:

FIG. 1 shows an exemplary environment for providing a virtual computing environment for one or more users in an organization in accordance with some embodiments of the present disclosure;

FIG. 2A shows a detailed block diagram illustrating a machine configuration server for providing the virtual computing environment in accordance with some embodiments of the present disclosure; FIG. 2B illustrates a manager dashboard on a web-based user interface provided to a manager associated with the organization in accordance with some embodiments of the present disclosure;

FIG. 2C illustrates a user dashboard on the web-based user interface provided to each of one or more users in the organization in accordance with some embodiments of the present disclosure;

FIG. 3 shows a flowchart illustrating a method for providing the virtual computing environment for the one or more users in accordance with some embodiments of the present disclosure; and

FIG. 4 illustrates a block diagram of an exemplary computer system for implementing embodiments consistent with the present disclosure. It should be appreciated by those skilled in the art that any block diagrams herein represent conceptual views of illustrative systems embodying the principles of the present subject matter. Similarly, it will be appreciated that any flow charts, flow diagrams, state transition diagrams, pseudo code, and the like represent various processes which may be substantially represented in computer readable medium and executed by a computer or processor, whether such computer or processor is explicitly shown. DETAILED DESCRIPTION

In the present document, the word "exemplary" is used herein to mean "serving as an example, instance, or illustration." Any embodiment or implementation of the present subject matter described herein as "exemplary" is not necessarily to be construed as preferred or advantageous over other embodiments.

While the disclosure is susceptible to various modifications and alternative forms, specific embodiment thereof has been shown by way of example in the drawings and will be described in detail below. It should be understood, however that it is not intended to limit the disclosure to the specific forms disclosed, but on the contrary, the disclosure is to cover all modifications, equivalents, and alternative falling within the spirit and the scope of the disclosure.

The terms "comprises", "comprising", "includes", or any other variations thereof, are intended to cover a non-exclusive inclusion, such that a setup, device or method that comprises a list of components or steps does not include only those components or steps but may include other components or steps not expressly listed or inherent to such setup or device or method. In other words, one or more elements in a system or apparatus proceeded by "comprises... a" does not, without more constraints, preclude the existence of other elements or additional elements in the system or method. Currently cloud infrastructure services are provided by companies like Microsoft®

Amazon® and many other service providers. By using these services, corporates and organizations can create virtual machines manually for each user based on user learning and/or training requirements. However, one of the key limitation in the above method is that, the process of creating and managing the virtual machines requires manual intervention of a system administrator. More often, it gets very difficult for the administrators to control machine usage and wastage of learning hours on all the virtual machines. Also, these virtual machines keep running until a user manually stops it, even when the user is not using the machines. This adds as a huge cost to the operation of the organization. Furthermore, the cost of running these virtual machines may be very high due to license cost of all software utilities installed on them. On the other hand, if free evaluation versions of licenses are used instead, then replacing the old licenses manually with new licenses on each virtual machine upon expiry, is a huge burden on the administrators. Therefore, such management process would also require a bigger IT support team, which in-turn increases the overall IT budget of the organizations.

Hence, there was a need to automate the entire process of creating, destroying and re-creating technology infrastructures and training environment for the benefit of the organizations, without consuming a lot of manual intervention, time, and effort of the IT support team, thereby reducing the associated costs, and improving the productivity.

The present disclosure relates to a method and a machine configuration server for creating and providing a virtual computing environment for one or more users in an organization. The machine configuration server may be used to automatically create one or more virtual machines required for training one or more users such as, managers, and professionals of the organization as per requirements of the training program. Further, each of the one or more virtual machines may be assigned to one or more users in the organization, thereby facilitating each user to participate in the training program through the virtual machines that are pre-configured with required training set-up and machine configurations., The machine configuration server, which is responsible for creating the one or more virtual machines, may be referred to as a Machine for Learning (M4L) platform, since it enables users in the organization to access pre-configured virtual machines for learning during the training programs. Further, the M4L allows a manager of the organization and/or the training program to create, manage and access virtual machines/training labs from anywhere and anytime using a web-browser. Therefore, the use of M4L platform in an organization can save money, time, and efforts required for setting-up the training environment for each user in the organization. In some embodiments, in addition to training of software trainees/professionals, the one or more virtual machines may also be assigned to other employees of the organization to enable them practice and learn various technologies and keep themselves upgraded to latest technologies always. This leads to overall software skill upgradation and knowledge enhancement, with no coordination effort required, at much lesser costs to the organization. In the following detailed description of the embodiments of the disclosure, reference is made to the accompanying drawings that form a part hereof, and in which are shown by way of illustration specific embodiments in which the disclosure may be practiced. These embodiments are described in sufficient detail to enable those skilled in the art to practice the disclosure, and it is to be understood that other embodiments may be utilized and that changes may be made without departing from the scope of the present disclosure. The following description is, therefore, not to be taken in a limiting sense.

FIG. 1 shows an exemplary environment 100 for providing virtual computing environment 108 for one or more users 104 in an organization 103 in accordance with some embodiments of the present disclosure.

The environment 100 includes a machine configuration server 101 for creating and providing a virtual computing environment 108 for one or more users 104 in an organization 103. Initially, the machine configuration server 101 receives a machine set-up request 107 from a manager 105 associated with the organization 103. The machine set-up request 107 may include one or more machine configuration requirements 211 that are necessary for the one or more users 104. As an example, the one or more machine configuration requirements 211 may include, without limiting to, number of virtual machines 109 required by the organization 103, list of software utilities to be installed on each of the one or more virtual machines 109, hardware configuration requirements on each of the one or more virtual machines 109, and number of working hours for which each of the one or more virtual machines 109 are required to be in operation.

In some embodiments, the manager 105 associated with the organization 103 may include an administrator, an infrastructure manager, IT support personnel or third-party agents who are responsible for conducting and managing various trainings at the organization 103. Similarly, the one or more users 104 in the organization 103 may include software professionals, trainee professionals, and other employees of the organization 103.

In some embodiments, upon receiving the machine set-up request 107 from the manager 105, the machine configuration server 101 may dynamically create the one or more virtual machines 109 on the virtual computing environment 108 based on the one or more machine configuration requirements 211 of the organization 103. As an example, the virtual computing environment 108 used for creating the one or more virtual machines 109 may include, without limiting to, Microsoft® Azure, Amazon® Web Service (AWS), Rackspace open cloud, IBM SmartCloud enterprise, HP enterprise converged infrastructure and the like. Upon creating the one or more virtual machines 109 on the virtual computing environment 108, the machine configuration server 101 may provide machine set-up information 111 related to each of the one or more virtual machines 109 to the manager 105. As an example, the machine set-up information 111 may include, without limiting to, login credentials of each of the one or more virtual machines 109, and a pre-configured machine destruction time of each of the one or more virtual machines 109. The manager 105 may assign one of the one or more virtual machines 109 to each of the one or more users 104 based on machine set-up information 111 provided by the machine configuration server 101.

Further, the machine configuration server 101 may provide a web-based user interface to each of the one or more users 104, through which the one or more users 104 may access the one or more virtual machines 109 assigned to the one or more users 104. As an example, the one or more users 104 may use respective login credentials provided by the manager 105 to login to the one or more virtual machines 109. In some implementations, the machine configuration server 101 may provide the one or more machine set-up information 111 to the one or more users 104 through various modes of communication including a text message service (SMS) or as an electronic mail sent to registered e-mail IDs of the one or more users 104.

Finally, the one or more users 104 may voluntarily logout from the one or more virtual machines 109 assigned to them upon performing required tasks. Alternatively, the machine configuration server 101 itself may suspend/terminate operation of the one or more virtual machines 109 upon completion of the pre-configured machine destruction time or upon determining inactivity of the one or more virtual machines 109 for a predetermined time. As an example, the machine configuration server 101 may automatically terminate and destroy the one or more virtual machines 109 when the one or more virtual machines 109 remain idle or unoperated for 15 minutes. FIG. 2A shows a detailed block diagram illustrating a machine configuration server 101 for providing the virtual computing environment 108 in accordance with some embodiments of the present disclosure. The machine configuration server 101 includes an I/O interface 201, a processor 203, and a memory 205. The I/O interface 201 may be configured to receive the machine set-up request 107 from the manager 105 associated with the organization 103. The memory 205 may be communicatively coupled to the processor 203. The processor 203 may be configured to perform one or more functions of the machine configuration server 101 while creating and providing the one or more virtual machines 109 to the one or more users 104 in the organization 103. In an implementation, the machine configuration server 101 may include data 207 and modules 209 for performing various operations in accordance with the embodiments of the present disclosure. In an embodiment, the data 207 may be stored within the memory 205 and may include, without limiting to, the machine configuration requirements 211, the machine set-up information 111, and other data 213.

In some embodiments, the data 207 may be stored within the memory 205 in the form of various data structures. Additionally, the data 207 may be organized using data models, such as relational or hierarchical data models. The other data 213 may store data, including temporary data and temporary files, generated by the modules 209 while performing various functions of the machine configuration server 101.

In an embodiment, the machine configuration requirements 211 are received from the manager 105 along with the machine set-up request 107 for creating the one or more virtual machines 109. As an example, the one or more machine configuration requirements 211 may include, without limiting to, number of virtual machines 109 required by the organization 103, list of software utilities to be installed on each of the one or more virtual machines 109, hardware configuration requirements on each of the one or more virtual machines 109, and number of working hours for which each of the one or more virtual machines 109 are required to be in operation. Here, the list of software utilities may include a base operating system to be configured on the one or more virtual machines 109, database servers, web-browsers, specific learning applications and the like. Similarly, the hardware configuration requirements may include size limitations on Random Access Memory (RAM), Read-Only Memory (ROM), Secondary Storage space, specific version of Graphic card, Processor, Screen resolution and the like.

In an embodiment, the machine configuration requirements 211 may be modified as per specific requirements of the training program. In some implementations, the machine configuration server 101 may install freeware evaluation versions of software utilities as per the machine configuration requirements 211 for reducing the costs associated with creating and setting up of the one or more virtual machines 109. Further, the freeware evaluation versions of software utilities may be dynamically renewed and/or replaced upon expiry of their license, thereby ensuring uninterrupted service to the one or more users 104. Alternatively, if the freeware versions of the requested software utilities are unavailable, the machine configuration server 101 would automatically choose and install the non- evaluation versions of the software utilities. In an embodiment, the machine set-up information 111 may include information related to the one or more virtual machines 109 created by the machine configuration server 101. As an example, the machine set-up information 111 may include, without limiting to, the login credentials of each of the one or more virtual machines 109, and the pre-configured machine destruction time of each of the one or more virtual machines 109. The login credentials may further include a username and a unique password, using which the one or more users 104 may access the one or more virtual machines 109 through the web-based user interface provided by the machine configuration server 101.

Further, the pre-configured machine destruction time may correspond to a maximum time period for which the one or more virtual machines 109 have to be maintained in operation. The pre-configured machine destruction time may be determined based on requirement of the one or more virtual machines 109 by the one or more users 104. As an example, the pre-configured machine destruction time may be 30 days (say, the duration of training program), which means that the one or more virtual machines 109 are automatically destroyed upon completion of 30 days from creation date and time of the one or more virtual machines 109.

In some embodiments, the data 207 may be processed by one or more modules 209 of the machine configuration server 101. In an implementation, the one or more modules 209 may be stored as a part of the processor 203. In another implementation, the one or more modules 209 may be communicatively coupled to the processor 203 for performing one or more functions of the machine configuration server 101. The modules 209 may include, without limiting to, a receiving module 215, a virtual machine creation module 217, a notification module 219, a machine access provider 221, and other modules 223.

As used herein, the term module refers to an application specific integrated circuit (ASIC), an electronic circuit, a processor (shared, dedicated, or group) and memory that execute one or more software or firmware programs, a combinational logic circuit, and/or other suitable components that provide the described functionality. In an embodiment, the other modules 223 may be used to perform various miscellaneous functionalities of the machine configuration server 101. It will be appreciated that such modules 209 may be represented as a single module or a combination of different modules. In some embodiments, the receiving module 215 may be responsible for receiving the machine set-up request 107 from the manager 105. In some implementations, the receiving module 215 may function in conjunction with the web-based user interface (not shown in Fig.2A), such that the manager 105 may submit the machine set-up request 107 to the machine configuration server 101 through the web-based user interface. Further, the machine configuration server 101 may display a set of available software utilities and hardware configurations on the web-based user interface. Later, based on the machine configuration requirements 211, the manager 105 may select the required software utilities and hardware configuration from the set of software utilities and hardware configurations displayed on the web-based user interface. Subsequently, the machine configuration server 101 installs the selected software utilities and hardware configurations on each of the one or more virtual machines 109.

In some embodiments, the virtual machine creation module 217 may be responsible for creating the one or more virtual machines 109 upon receiving the machine set-up request 107 from the manager 105. Initially, the virtual machine creation module 217 may create required number of instances of virtual machines 109 on the virtual computing environment 108 based on the number of virtual machines 109 requested by the manager 105. Later, the virtual machine creation module 217 may install each of the one or more software utilities and hardware configurations requested by the manager 105 on each instance of the created virtual machines 109 to fully configure the one or more virtual machines 109 as per the machine configuration requirements 211. Further, the virtual machine creation module 217 may generate unique login credentials corresponding to each of the one or more virtual machines 109, which are provided to the manager 105 and are used by the one or more users 104 for accessing the one or more virtual machines 109.

In some implementations, the virtual machine creation module 217 may be capable of parallelly creating and configuring as many virtual machines 109 as requested by the manger in a single execution. Therefore, speed of creation of the one or more virtual machines 109 by the machine configuration server 101 may remain unchanged irrespective of the number of virtual machines 109 requested by the manager 105.

In some embodiments, the notification module 219 may be responsible for providing the machine set-up information 111 related to the one or more virtual machines 109 to the manager 105. In an exemplary embodiment, the notification module 219 may display a notification on the web-based user interface when the requested number of virtual machines 109 are created and ready to be used by the one or more users 104. Additionally, the notification module 219 may directly notify the one or more users 104 about the creation of the one or more virtual machines 109 by providing the machine set-up information 111 to the one or more users 104. As an example, the notification module 219 may transmit an e- mail notification comprising the login credentials to the one or more virtual machines 109 to the registered e-mail IDs of the one or more users 104. Later, the one or more users 104 may use the provided login credentials to access the one or more virtual machines 109 assigned to them.

In some embodiments, the machine access provider 221 may be responsible for facilitating the manager 105 and/or the one or more users 104 in accessing the one or more virtual machines 109. The machine access provider 221 may provide the web-based user interface to each of the one or more users 104, using which each of the one or more users 104 may access the one or more virtual machines 109 which are assigned to them by the manager 105. FIG. 2B illustrates a manager dashboard 231 on the web-based user interface 230 provided to a manager 105 associated with the organization 103 in accordance with some embodiments of the present disclosure. The manager 105 may login to the manager dashboard 231 depicted in FIG. 2B by accessing the web-based user interface 230 provided by the machine configuration server 101 through the login credentials given to the manager 105. In an exemplary embodiment, the manager dashboard 231 may include various features that would help the manager 105 in selecting right combination of the software utilities and hardware configurations required to be installed on the one or more virtual machines 109. Further, the manager dashboard 231 may facilitate the manager 105 in requesting creation of the one or more virtual machines 109 based on the selected set of the software utilities, hardware configurations and other machine configuration requirements 211. In an embodiment, the one or more software utilities and hardware configurations which are pre-installed and available on the virtual computing environment 108 may be combined and represented as one or more templates such as template Ol, template_02 and the like. Further, each template having various combinations of the software utilities and hardware configurations may be displayed on the manager dashboard 231 under the "description" column. The manager 105 may compare each of the said templates with each of the one or more machine configuration requirements 211 to identify and select an appropriate template that meets each of the one or more machine configuration requirements 211 In some embodiments, along with a list of the available templates, the manager dashboard 231 may also facilitate the manager 105 in either selecting or deleting the one or more pre-configured templates as per the machine configuration requirements 211 (as indicated in 'Action' column of the manager dashboard 231 in FIG. 2B). Suppose, if none of the pre-configured templates, already being represented on the manager dashboard 231, include the software utilities and the hardware configuration as required by the manager 105, then the manager 105 may create and define a new template. Later, using the newly created template, the manager 105 may request the machine configuration server 101 to create the one or more virtual machines 109 having the same configurations as required by the manager 105 or the one or more users 104. Furthermore, using the manager dashboard 231, the manager 105 may effectively manage the one or more users 104 to whom the one or more virtual machines 109 must be assigned. As an example, the manager 105, through the manager dashboard 231, may add/assign one of the one or more virtual machines 109 to a training facilitator, a training manager 105 or a report administrator who may or may not belong to the organization 103. Similarly, through the manager dashboard 231, the manager 105 may register one or more new users into the virtual computing environment 108 at the beginning of a training program, or may unregister the one or more existing users upon completion of the training program. Additionally, the manager 105 may also keep a track of usage patterns of the one or more virtual machines 109 by the one or more users 104, thereby determining the effectiveness of the training program.

FIG. 2C illustrates a user dashboard 233 on the web-based user interface 230 provided to each of one or more users 104 in the organization 103 in accordance with some embodiments of the present disclosure.

In some embodiments, each of the one or more users 104 who are assigned with the one or more virtual machines 109 by the manager 105 may access the user dashboard 233 by accessing the web-based user interface 230 through the login credentials provided to each of the one or more user by the manager 105. In an exemplary embodiment, a list of each of the one or more training programs to which the one or more users 104 are registered is displayed to the one or more users 104 on the user dashboard 233. Further, the one or more users 104 may select the one or more training programs available to them, to access the virtual machine which is configured with the machine configuration requirements 211 corresponding to the selected training program.

As an example, suppose, if the one or more users 104 are assigned with two training programs namely, 'Training Ol ' and 'Training_02', then the user dashboard 233 corresponding to the one or more users 104 displays the two training programs 'Training Ol ' and 'Training_02' . Now, to access the virtual machine which is configured according to 'Training Ol ', the one or more users 104 may select the 'Training Ol ' (as shown in FIG. 2C). Further, information related to the virtual machine corresponding to 'Training Ol ' are displayed on the user dashboard 233 upon selection of 'Training Ol '. As an example, the information displayed on the user dashboard 233 may include name and/or a unique identification number of the virtual machine, machine start date and time of the virtual machine, the pre-determined machine destruction time of the virtual machine (end date and time) and working status of the virtual machine. Additionally, using the user dashboard 233, the user may connect to the selected virtual machine or may terminate a running instance of the selected virtual machine using the options provided in 'Action' column of the user dashboard 233. However, if the user does not manually stop the running instance of the virtual machine, the machine configuration server 101 would automatically suspend the virtual machine upon determining that the virtual machine is in the idle state for a predefined time.

In some embodiments, both the manager dashboard 231 and the user dashboard 233 on the web-based user interface 230 may allow the manager 105 and the one or more users 104 to provide feedback on the one or more virtual machines 109 assigned to them. As an example, the feedback may be related to, without limiting to, issues in the one or more virtual machines 109, suggestions, or additional requirements on the one or more virtual machines 109 and the like. Thereafter, the feedback that are received from the manager 105 and the one or more users 104 may be forwarded to concerned personnel associated with the machine configuration server 101 to suitably handle the received feedback. The feedback may also be used for self-learning the interests and necessities of the manager 105 or the one or more users 104 and to dynamically modify the one or more virtual machines 109 based on the received feedback. FIG. 3 shows a flowchart illustrating a method for providing the virtual computing environment 108 for the one or more users 104 in accordance with some embodiments of the present disclosure.

As illustrated in FIG. 3, the method 300 includes one or more blocks illustrating a method for providing the virtual computing environment 108 for the one or more users 104 in an organization 103 using a machine configuration server 101. The method 300 may be described in the general context of computer executable instructions. Generally, computer executable instructions can include routines, programs, objects, components, data structures, procedures, modules, and functions, which perform specific functions or implement specific abstract data types.

The order in which the method 300 is described is not intended to be construed as a limitation, and any number of the described method blocks can be combined in any order to implement the method. Additionally, individual blocks may be deleted from the methods without departing from the spirit and scope of the subject matter described herein. Furthermore, the method can be implemented in any suitable hardware, software, firmware, or combination thereof.

At block 301, method 300 comprises receiving, by the machine configuration server 101, a machine set-up request 107 from a manager 105 associated with the organization 103 for creating one or more virtual machines 109 in the virtual computing environment 108. In an embodiment, the machine set-up request 107 may include one or more machine configuration requirements 211. As an example, the one or more machine configuration requirements 211 may include, without limiting to, number of virtual machines 109 required, list of software utilities to be installed on each of the one or more virtual machines 109, hardware configuration requirements on each of the one or more virtual machines 109, and number of working hours for which each of the one or more virtual machines 109 are required to be in operation.

At block 303, method 300 comprises dynamically creating, by the machine configuration server 101, the one or more virtual machines 109 based on each of the one or more machine configuration requirements 211. In an embodiment, during creation of the one or more virtual machines 109, the software utilities which are to be installed on each of the one or more virtual machines 109 are installed using at least one of evaluation versions and non-evaluation versions of each of the software utilities.

At block 305, method 300 comprises providing, by the machine configuration server 101, machine set-up information 111 related to each of the one or more virtual machines 109 to the manager 105. In an embodiment, the manager 105 may assign one of the one or more virtual machines 109 to each of the one or more users 104 based on the machine setup information 111. As an example, the machine set-up information 111 may include, without limiting to, login credentials of each of the one or more virtual machines 109, and a pre-configured machine destruction time of each of the one or more virtual machines 109.

At block 307, method 300 comprises providing, by the machine configuration server 101, a web-based user interface 230 to each of the one or more users 104. Each of the one or more users 104 may access one of the one or more virtual machines 109 assigned to each of the one or more users 104 using the machine set-up information 111. In an embodiment, the web-based user interface 230 may be automatically suspended by the machine configuration server 101 upon completion of the pre-configured machine destruction time. The pre-configured machine destruction time for the one or more virtual machines 109 may be modifiable by the manager 105 based on requirement of the one or more virtual machines 109 by the one or more users 104.

Further, the machine configuration server 101 may monitor operation of each of the one or more virtual machines 109 assigned to the one or more users 104 to determine usage of the one or more virtual machines 109. In an embodiment, the monitoring may include suspending the one or more virtual machines 109 upon determining at least one of inactivity of one or more of the one or more virtual machines 109 for a predetermined time or upon completion of pre-configured machine destruction time by one or more of the one or more virtual machines 109.

Computer System

FIG. 4 illustrates a block diagram of an exemplary computer system 400 for implementing embodiments consistent with the present disclosure. In an embodiment, the computer system 400 may be the machine configuration server 101 which is used for providing a virtual computing environment 108 for one or more users 104 in an organization 103. The computer system 400 may include a central processing unit ("CPU" or "processor") 402. The processor 402 may comprise at least one data processor for executing program components for executing user- or system-generated business processes. A user may include a person, an employee of the organization 103, a manager 105 associated with the organization 103, a person using a device such as such as those included in this invention, or such a device itself. The processor 402 may include specialized processing units such as integrated system (bus) controllers, memory management control units, floating point units, graphics processing units, digital signal processing units, etc. The processor 402 may be disposed in communication with one or more input/output (I/O) devices (411 and 412) via I/O interface 401. The I/O interface 401 may employ communication protocols/methods such as, without limitation, audio, analog, digital, stereo, IEEE-1394, serial bus, Universal Serial Bus (USB), infrared, PS/2, BNC, coaxial, component, composite, Digital Visual Interface (DVI), high-definition multimedia interface (HDMI), Radio Frequency (RF) antennas, S-Video, Video Graphics Array (VGA), IEEE 802.n /b/g/n/x, Bluetooth, cellular (e.g., Code-Division Multiple Access (CDMA), High- Speed Packet Access (HSPA+), Global System For Mobile Communications (GSM), Long- Term Evolution (LTE) or the like), etc. Using the I/O interface 401, the computer system 400 may communicate with one or more I/O devices (411 and 412). In some embodiments, the processor 402 may be disposed in communication with a communication network 409 via a network interface 403. The network interface 403 may communicate with the communication network 409. The network interface 403 may employ connection protocols including, without limitation, direct connect, Ethernet (e.g., twisted pair 10/100/1000 Base T), Transmission Control Protocol/Internet Protocol (TCP/IP), token ring, IEEE 802.1 la/b/g/n/x, etc. Using the network interface 403 and the communication network 409, the computer system 400 may communicate with the manager 105 associated with the organization 103 for receiving the machine se-up request from the manager 105. Further, the computer system 400 may use the communication network 409 to communicate with each of the one or more users 104 in the organization 103 to provide them an access to a web-based user interface 230, thereby facilitating each of the one or more users 104 in using the one or more virtual machines 109.

The communication network 409 can be implemented as one of the several types of networks, such as intranet or Local Area Network (LAN) and such within the organization 103. The communication network 409 may either be a dedicated network or a shared network, which represents an association of several types of networks that use a variety of protocols, for example, Hypertext Transfer Protocol (HTTP), Transmission Control Protocol/Internet Protocol (TCP/IP), Wireless Application Protocol (WAP), etc., to communicate with each other. Further, the communication network 409 may include a variety of network devices, including routers, bridges, servers, computing devices, storage devices, etc. In some embodiments, the processor 402 may be disposed in communication with a memory 405 (e.g., RAM 413, ROM 414, etc. as shown in FIG. 4) via a storage interface 404. The storage interface 404 may connect to memory 405 including, without limitation, memory drives, removable disc drives, etc., employing connection protocols such as Serial Advanced Technology Attachment (SATA), Integrated Drive Electronics (DDE), IEEE- 1394, Universal Serial Bus (USB), fiber channel, Small Computer Systems Interface (SCSI), etc. The memory drives may further include a drum, magnetic disc drive, magneto- optical drive, optical drive, Redundant Array of Independent Discs (RAID), solid-state memory devices, solid-state drives, etc. The memory 405 may store a collection of program or database components, including, without limitation, user/application 406, an operating system 407, web browser 408 etc. In some embodiments, computer system 400 may store user/application data 406, such as the data, variables, records, etc. as described in this invention. Such databases may be implemented as fault-tolerant, relational, scalable, secure databases such as Oracle or Sybase.

The operating system 407 may facilitate resource management and operation of the computer system 400. Examples of operating systems include, without limitation, Apple Macintosh OS X, UNIX, Unix-like system distributions (e.g., Berkeley Software Distribution (BSD), FreeBSD, Net BSD, Open BSD, etc.), Linux distributions (e.g., Red Hat, Ubuntu, K-Ubuntu, etc.), International Business Machines (IBM) OS/2, Microsoft Windows (XP, Vista/7/8, etc.), Apple iOS, Google Android, Blackberry Operating System (OS), or the like. A user interface may facilitate display, execution, interaction, manipulation, or operation of program components through textual or graphical facilities. For example, user interfaces may provide computer interaction interface elements on a display system operatively connected to the computer system 400, such as cursors, icons, check boxes, menus, windows, widgets, etc. Graphical User Interfaces (GUIs) may be employed, including, without limitation, Apple Macintosh operating systems' Aqua, IBM OS/2, Microsoft Windows (e.g., Aero, Metro, etc.), Unix X-Windows, web interface libraries (e.g., ActiveX, Java, JavaScript, AJAX, HTML, Adobe Flash, etc.), or the like. In some embodiments, the computer system 400 may implement a web browser 408.

The web browser 408 may be a hypertext viewing application, such as Microsoft Internet Explorer, Google Chrome, Mozilla Firefox, Apple Safari, etc. Secure web browsing may be provided using Secure Hypertext Transport Protocol (HTTPS) secure sockets layer (SSL), Transport Layer Security (TLS), etc. Web browsers may utilize facilities such as AJAX, DHTML, Adobe Flash, JavaScript, Java, Application Programming Interfaces (APIs), etc. In some embodiments, the computer system 400 may implement a mail server stored program component.

The mail server 416 may be an Internet mail server such as Microsoft Exchange, or the like. The mail server 416 may utilize facilities such as Active Server Pages (ASP), ActiveX, American National Standards Institute (ANSI) C++/C#, Microsoft .NET, CGI scripts, Java, JavaScript, PERL, PHP, Python, WebObjects, etc. The mail server may utilize communication protocols such as Internet Message Access Protocol (IMAP), Messaging Application Programming Interface (MAPI), Microsoft Exchange, Post Office Protocol (POP), Simple Mail Transfer Protocol (SMTP), or the like. In some embodiments, the computer system 400 may implement a mail client 415. The mail client 415 may be a mail viewing application, such as Apple Mail, Microsoft Entourage, Microsoft Outlook, Mozilla Thunderbird, etc.

Furthermore, one or more computer-readable storage media may be utilized in implementing embodiments consistent with the present invention. A computer-readable storage medium refers to any type of physical memory on which information or data readable by a processor may be stored. Thus, a computer-readable storage medium may store instructions for execution by one or more processors, including instructions for causing the processor(s) to perform steps or stages consistent with the embodiments described herein. The term "computer-readable medium" should be understood to include tangible items and exclude carrier waves and transient signals, i.e., non-transitory. Examples include Random Access Memory (RAM), Read-Only Memory (ROM), volatile memory, nonvolatile memory, hard drives, Compact Disc (CD) ROMs, Digital Video Disc (DVDs), flash drives, disks, and any other known physical storage media.

Advantages of the embodiment of the present disclosure are illustrated herein.

In an embodiment, the present disclosure discloses a method of automatically creating virtual machines for all selected users in a single request with specific set of software utilities and hardware requirements pre-installed on the virtual machines based on learning requirements of the users.

In an embodiment, the present disclosure provides a method for automatically suspending or destroying the virtual machines assigned to the users, without requirement of manual intervention, thereby optimally utilizing the computing resources of the virtual environment.

In an embodiment, the present disclosure facilitates a manger of the organization to keep a track of number of hours the one or more users use the assigned virtual machines during a training program, using various analytical reports provided by the machine configuration server.

In an embodiment, the method of present disclosure uses legally provided evaluation versions of software utilities for deploying the virtual machines, thereby reducing costs associated with setting-up of the virtual machines required by the users.

In an embodiment, the virtual computing environment created using the instant method may be used across organizations and educational institutions to constantly train the one or more employees, professionals, or students on latest technologies available.

The terms "an embodiment", "embodiment", "embodiments", "the embodiment", "the embodiments", "one or more embodiments", "some embodiments", and "one embodiment" mean "one or more (but not all) embodiments of the invention(s)" unless expressly specified otherwise.

The terms "including", "comprising", "having" and variations thereof mean "including but not limited to", unless expressly specified otherwise.

The enumerated listing of items does not imply that any or all of the items are mutually exclusive, unless expressly specified otherwise.

The terms "a", "an" and "the" mean "one or more", unless expressly specified otherwise. A description of an embodiment with several components in communication with each other does not imply that all such components are required. On the contrary, a variety of optional components are described to illustrate the wide variety of possible embodiments of the invention.

When a single device or article is described herein, it will be clear that more than one device/article (whether they cooperate) may be used in place of a single device/article. Similarly, where more than one device or article is described herein (whether they cooperate), it will be clear that a single device/article may be used in place of the more than one device or article or a different number of devices/articles may be used instead of the shown number of devices or programs. The functionality and/or the features of a device may be alternatively embodied by one or more other devices which are not explicitly described as having such functionality/features. Thus, other embodiments of the invention need not include the device itself.

Finally, the language used in the specification has been principally selected for readability and instructional purposes, and it may not have been selected to delineate or circumscribe the inventive subject matter. It is therefore intended that the scope of the invention be limited not by this detailed description, but rather by any claims that issue on an application based here on. Accordingly, the embodiments of the present invention are intended to be illustrative, but not limiting, of the scope of the invention, which is set forth in the following claims.

While various aspects and embodiments have been disclosed herein, other aspects and embodiments will be apparent to those skilled in the art. The various aspects and embodiments disclosed herein are for purposes of illustration and are not intended to be limiting, with the true scope and spirit being indicated by the following claims.

Referral Numerals:

403 Network interface

404 Storage interface

405 Memory of the exemplary computer system

406 User/Application

407 Operating system

408 Web browser

409 Communication network

411 Input devices

412 Output devices

413 RAM

414 ROM

415 Mail client

416 Mail server

417 Web server