Abstract:
Provided are techniques for receiving, from a client at a server, a request to access a software package for a specified duration of time, wherein the software package requires a license key; requesting the license key from a key server; transmitting a base virtual machine in conjunction with the software package and the license key to the client; hooting the base virtual machine on the client; and utilizing an encrypted disk containing the software package on the booted base virtual machine at the client for the duration of time.

Description:
CROSS-REFERENCES TO RELATED APPLICATIONS 
       [0001]    The present application is a continuation and claims the benefit of the filing date of an application entitled, “Running Local Virtual Disks Containing Applications With Limited Licenses” Ser. No. 14/105,727, filed Dec. 13, 2013, assigned to the assignee of the present application, and herein incorporated by reference 
     
    
     FIELD OF DISCLOSURE 
       [0002]    The claimed subject matter relates generally to cloud computing and, more specifically, to techniques for enabling virtual machines (VMs) associated with a cloud to run on a user&#39;s computing device rather than on infrastructure associated with the cloud. 
       BACKGROUND OF THE INVENTION 
       [0003]    Institutions such as universities may provide cloud computing resources for the benefit of associated users. These cloud computing resources, including networking infrastructure, are often maintained at considerable expense while resources of the users, such as laptop computers, are employed as little more than dumb terminals. Typically, this configuration is provided to control a limited number of application license keys. 
         [0004]    For example, a user may register for a VM to use a specific software package for a period of time such as two (2), four (4) or eight (8) hours. However, the user will not receive access unless there are available licenses. Once access to the VM is received, the user must remain connected to the corresponding network for the duration of the period to utilize the software package. This generates unnecessary expense for the institution with respect to computing and network resources while underutilizing the user&#39;s personal resources such as, but not limited to, a laptop or personal computer. 
       SUMMARY 
       [0005]    Provided are techniques for enabling virtual machines (VMs) associated with a cloud computing architecture, or simply “cloud,” to run on a user&#39;s computing device rather than on infrastructure associated with the cloud. 
         [0006]    Provided are techniques for receiving, from a client at a server, a request to access a software package for a specified duration of time, wherein the software package requires a license key; requesting the license key from a key server; transmitting a base virtual machine in conjunction with the software package and the license key to the client; booting the base virtual machine on the client: and utilizing an encrypted disk containing the software package on the booted base virtual machine at the client for the duration of time. 
         [0007]    This summary is not intended as a comprehensive description of the claimed subject matter but, rather, is intended to provide a brief overview of some of the functionality associated therewith. Other systems, methods, functionality, features and advantages of the claimed subject matter will be or will become apparent to one with skill in the art upon examination of the following figures and detailed description. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0008]    A better understanding of the claimed subject matter can be obtained when the following detailed description of the disclosed embodiments is considered in conjunction with the following figures, in which: 
           [0009]      FIG. 1  is an example of a cloud computing architecture that may implement the claimed subject matter. 
           [0010]      FIG. 2  is a block diagram of a Virtual Machine Distribution Center (VMDC), first introduced above in conjunction with  FIG. 1 , that implements aspects of the claimed subject matter. 
           [0011]      FIG. 3  is a flowchart of one example of a “Generate Custom Virtual Machine (CVM)” process that may implement aspects of the claimed subject matter. 
           [0012]      FIG. 4  is a flowchart of one example of a “Utilize CVM” process that may implement aspects of the claimed subject matter. 
       
    
    
     DETAILED DESCRIPTION 
       [0013]    It is understood in advance that although this disclosure includes a detailed description on cloud computing, implementation of the teachings recited herein are not limited to a cloud computing environment. Rather, embodiments of the present invention are capable of being implemented in conjunction with any other type of computing environment now known or later developed. 
         [0014]    Cloud computing is a model of service delivery for enabling convenient, on-demand network access to a shared pool of configurable computing resources (e.g. networks, network bandwidth, servers, processing, memory, storage, applications, virtual machines, and services) that can be rapidly provisioned and released with minimal management effort or interaction with a provider of the service. This cloud model may include at least five characteristics, at least three service models, and at least four deployment models. 
         [0015]    Characteristics are as follows: 
         [0016]    On-demand self-service: a cloud consumer can unilaterally provision computing capabilities, such as server time and network storage, as needed automatically without requiring human interaction with the service&#39;s provider. 
         [0017]    Broad network access: capabilities are available over a network and accessed through standard mechanisms that promote use by heterogeneous thin or thick client platforms (e.g., mobile phones, laptops, and PDAs). 
         [0018]    Resource pooling: the provider&#39;s computing resources are pooled to serve multiple consumers using a multi-tenant model, with different physical and virtual resources dynamically assigned and reassigned according to demand. There is a sense of location independence in that the consumer generally has no control or knowledge over the exact location of the provided resources but may be able to specify location at a higher level of abstraction (e.g., country, state, or datacenter). 
         [0019]    Rapid elasticity: capabilities can be rapidly and elastically provisioned, in some cases automatically, to quickly scale out and rapidly released to quickly scale in. To the consumer, the capabilities available for provisioning often appear to be unlimited and can be purchased in any quantity at any time. 
         [0020]    Measured service: cloud systems automatically control and optimize resource use by leveraging a metering capability at some level of abstraction appropriate to the type of service (e.g., storage, processing, bandwidth, and active user accounts). Resource usage can be monitored, controlled, and reported providing transparency for both the provider and consumer of the utilized service. 
         [0021]    Service Models are as follows: 
         [0022]    Software as a Service (SaaS): the capability provided to the consumer is to use the provider&#39;s applications running on a cloud infrastructure. The applications are accessible from various client devices through a thin client interface such as a web browser (e.g., web-based email). The consumer does not manage or control the underlying cloud infrastructure including network, servers, operating systems, storage, or even individual application capabilities, with the possible exception of limited user-specific application configuration settings. 
         [0023]    Platform as a Service (PaaS): the capability provided to the consumer is to deploy onto the cloud infrastructure consumer-created or acquired applications created using programming languages and tools supported by the provider. The consumer does not manage or control the underlying cloud infrastructure including networks, servers, operating systems, or storage, but has control over the deployed applications and possibly application hosting environment configurations. 
         [0024]    Infrastructure as a Service (IaaS): the capability provided to the consumer is to provision processing, storage, networks, and other fundamental computing resources where the consumer is able to deploy and run arbitrary software, which can include operating systems and applications. The consumer does not manage or control the underlying cloud infrastructure but has control over operating systems, storage, deployed applications, and possibly limited control of select networking components (e.g., host firewalls). 
         [0025]    Deployment Models are as follows: 
         [0026]    Private cloud: the cloud infrastructure is operated solely for an organization. It may be managed by the organization or a third party and may exist on-premises or off premises. 
         [0027]    Community cloud: the cloud infrastructure is shared by several organizations and supports a specific community that has shared concerns (e.g., mission, security requirements, policy, and compliance considerations). It may be managed by the organizations or a third party and may exist on-premises or off-premises. 
         [0028]    Public cloud: the cloud infrastructure is made available to the general public or a large industry group and is owned by an organization selling cloud services. 
         [0029]    Hybrid cloud: the cloud infrastructure is a composition of two or more clouds (private, community, or public) that remain unique entities but are bound together by standardized or proprietary technology that enables data and application portability (e.g., cloud bursting for loadbalancing between clouds). 
         [0030]    A cloud computing environment is service oriented with a focus on statelessness, low coupling, modularity, and semantic interoperability. At the heart of cloud computing is an infrastructure comprising a network of interconnected nodes. 
         [0031]    As will be appreciated by one skilled in the art, aspects of the present invention may be embodied as a system, method or computer program product. Accordingly, aspects of the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.” Furthermore, aspects of the present invention may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon. 
         [0032]    Any combination of one or more computer readable medium(s) may be utilized. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device. 
         [0033]    A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device. 
         [0034]    Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing. 
         [0035]    Computer program code for carrying out operations for aspects of the present invention may be written in any bombination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The program code may execute entirely on the user&#39;s computer, partly on the user&#39;s computer, as a stand-alone software package, partly on the user&#39;s computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user&#39;s computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider). 
         [0036]    Aspects of the present invention are described below with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means tar implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. 
         [0037]    These computer program instructions may also be stored in a computer readable medium that can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including instructions which implement the function/act specified in the flowchart and/or block diagram block or blocks. 
         [0038]    The computer program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational actions to be performed on the computer, other programmable apparatus or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. 
         [0039]    Turning now to the figures,  FIG. 1  is a block diagram of one example of a cloud computing architecture  109  that may incorporate the claimed subject matter. A computing system  102  includes a central processing unit (CPU)  104 , coupled to a monitor  106 , a keyboard  108  and a pointing device, or “mouse,”  110 , which together facilitate human interaction with architecture  100  and computing system  102 . Computing system  102  is used as an example of a client device that may be provided with applications and virtual machines in accordance with the claimed subject matter. 
         [0040]    Also included in computing system  102  and attached to CPU  104  is a computer-readable storage medium (CRSM)  112 , which may either be incorporated into computing system  102  i.e. an internal device, or attached externally to CPU  104  by means of various, commonly available connection devices such as but not limited to, a universal serial bus (USB) port (not shown). CRSM  112  is illustrated storing logic associated with an operating system (OS)  114 , a hypervisor  116  and a custom virtual machine (CVM)  118  provided and operated in accordance with the claimed subject matter. It should be noted that a typical computing system would include more elements, but for the sake of simplicity only a few are illustrated. 
         [0041]    Computing system  102  and CPU  104  are connected to a network  120 , which is also connected to cloud resources, or simply a “cloud,”  122 . Network  120  may be any available communication medium including, but not limited to, the Internet, a local area network (LAN) or a direct wire. One resource associated with cloud  122  is an application server  124 . Application server  124  is coupled to a CRSM  126 , which stores logic associated with a Virtual Machine Distribution Center (VMDC)  128 , a virtual machine  132  and two associated software packages, i.e., a SP — 1  134  and SP — 2  136 . VMDC  128  implements aspects of the claimed subject matter and is described in more detail below in conjunction with  FIGS. 2-4 . Virtual machine  132 , SP — 1  134  and SP — 2  1368  are used thorough out the Specification as examples of cloud resource that may be made available to clients such as computing system  102  by VMDC  128  in accordance with the claimed subject matter. It should be understood that other resources and types of resources may be made available in a similar fashion. 
         [0042]    Also coupled to both network  120  and cloud  122  thereby available to computing system  102  is a login and license (L&amp;L) server  142 . Server  142  is illustrated providing a license  144 , which typically takes the form of a key or token, to computing system  102  to make CVM  118  available to a user in accordance with the disclosed technology. It should he noted there are many possible cloud computing configurations, of which architecture  100  is only one simple example used for the purposes of illustration. The role of L&amp;L server  142  and license  144  are described in more detail below in conjunction with  FIGS. 2-4 . 
         [0043]      FIG. 2  is a block diagram of VMDC  128 , first introduced above in conjunction with  FIG. 1 , in more detail. VMDC  128  includes an input/output (I/O) module  150 , a data module  152 , an authentication and verification (A&amp;V) module  154 , a virtual machine distribution module  156  and a graphical user interface module, or simply “GUI,”  158 . For the sake of the following examples, VMDC  128  logic associated with VMDC  128  is assumed to be stored on CRSM  126  and execute on one or more processors (not shown) of application server  124  ( FIG. 1 ). It should be understood that the claimed subject matter can be implemented in many types of computing systems and data storage structures but, for the sake of simplicity, is described only in terms of application server  124  and architecture  100  ( FIG. 1 ). Further, the representation of VMDC  128  in  FIG. 2  is a logical model. In other words, components  150 ,  152 ,  154 ,  156  and  158  may be stored in the same or separates tiles and loaded and/or executed within cloud  122  either as a single system or as separate processes interacting via any available inter process communication (IPC) techniques. 
         [0044]    I/O module  150  handles any communication VMDC  128  has with other components of architecture  100 . Data module  152  is a data repository for information that VMDC  128  requires during normal operation. Examples of the types of information stored in data module  142  include application data  162 , user data  164 , system data  166  and operating parameters  168 . Application data  162  stores the names and configuration data for programs or applications that have been designated as potential applications of VMDC  128  that may be provided to users in accordance with the claimed subject matter. In the following examples, SP — 1  134  ( FIG. 1 ) and SP — 2  136  ( FIG. 1 ) are used as examples of such programs. User data  164  stores the names and configuration and verification data associated with potential users of the disclosed technology. System data  166  stores information associated with potential systems to which VMDC  128  may be requested to provide applications in accordance with the claimed subject matter. Computing system  102  ( FIG. 1 ) is used as an example of such a system and the data stored in system data  166  may include, but is not limited to, information that identifies OS  114  ( FIG. 1 ), hypervisor  116  ( FIG. 1 ) and addressing information. Operating parameters  168  includes information on various administrator preferences that have been set to control the operation of VMDC  128 . For example, an administrator may determine that a request for a particular application of less than one hour in duration is too short to implement in accordance with the claimed subject matter and should be provided in a conventional fashion. 
         [0045]    A&amp;V module  154  determines whether or not to request for the provision of an application is from an authorized user, typically by means of an interaction with L&amp;L server  142  ( FIG. 1 ). In addition, A&amp;V module  154  is responsible for directing L&amp;L server  142  to provide license  144  ( FIG. 1 ) to computing system  102  once a determination that CVM  118  ( FIG. 1 ) is to be provided to the requesting user. VMDM  156  is responsible for the preparation and transmission of CVM  118  to computing system  102 . GUI component  158  enables administrators of VMDC  128  to interact with and to define the desired functionality of VMDC  128 , typically be the setting of parameters in operating parameters  168 . 
         [0046]      FIG. 3  is a flowchart of one example of a “Generate Custom Virtual Machine (CVM)” process  200  that may implement aspects of the claimed subject matter. In this example, process  200  is associated with logic stored on CRSM  126  ( FIG. 1 ) in conjunction with VMDC  128  ( FIG. 1 ) and executed on one or more processors (not shown) of application server  124  ( FIG. 1 ). Process  200  starts in a “Begin Generate CVM” block  202  and proceeds immediately to a “Receive Request” block  204 . During processing associated with block  204 , a request for a CVM associated with a particular software package such as SP — 1  134  ( FIG. 1 ) or SP — 2  136  ( FIG. 1 ) is received from as user, which in the following example is a user on computing system  102  ( FIG. 1 ). 
         [0047]    During processing associated with a “Remote Enabled?” block  206 , a determination is made as to whether or not the computing system from which the request originated and the user that initiated the request are authorized (see  154 ,  FIG. 2 ) and configured to receive a CVM, which in this example is associated with a software package such as SP — 1  134  ( FIG. 1 ) or SP — 2  136  ( FIG. 1 ). If so, control proceeds to “Generate Image” block  208  and an image of SP — 1  134  or SP — 2  136  is generated as a CVM, which in this example is CVM  118  ( FIG. 1 ). During processing associated with an “Encrypt Image” block  210 , the image generated during processing associated with block  208  is encrypted, either by using a key provided by L&amp;L server  142  ( FIG. 1 ) or generated by VMDC  128  (see  156 ,  FIG. 2 ). 
         [0048]    During processing associated with a “Notify Key Server” block  212 , L&amp;L server  142  is notified that a CVM has been generated and encrypted and a key, if not originally provided by server  142 , to unlock the image is provided to server  142  to be transmitted to the user. During processing associated with a “Transmit Image” block  214 , CVM  118 , generated during processing associated with block  208  and encrypted during processing associated with block  210 , is transmitted to computing system  102  and the user that requested it. 
         [0049]    If, during processing associated with block  206 , a determination is made that the user requesting the remote CVM in either not authorized or configured properly, control proceeds to a “Standard Virtual Machine (VM) Procedure” block  216 . During processing associated with block  216 , the user is provided access to a CVM on cloud  122  in accordance with commonly available procedures. Once processing has concluded in either of blocks  214  or  216 , control proceeds to an “End Generate CVM” block  219  during which process  200  is complete. 
         [0050]      FIG. 4  is a flowchart of one example of a “Utilize CVM” process  250  that may implement aspects of the claimed subject matter. In this example, process  250  is associated with logic stored on CRSM  112  ( FIG. 1 ) and executed on one or more processors (not shown) of computing system  102  ( FIG. 1 ). 
         [0051]    Process  250  starts in a “Begin Utilize CVM” block  252  and proceeds immediately to a “Request CVM” block  254 . In this example, during processing associated with block  254 , a user on computing system  102  transmits to VMDC  128  ( FIG. 1 ) and application server  124  a request for a CVM (see  204 ,  FIG. 3 ). It should be noted that the processing associated with process  250  is predicated on the assumption that the user and computing system  102  are both authorized and configured to receive a CVM (see  206 ,  FIG. 3 ). 
         [0052]    During processing associated with a “Receive Image” block  256 , computing system  102  receives the image generated and encrypted by VMDC  128  (see  214   FIG. 3 ), which in this example is CVM  118  ( FIG. 1 ) During processing associated with an “Acquire Key” block  258 , a key to decrypt CVM  118  is requested and received from L&amp;L server  142  ( FIG. 1 ). During processing associated with a “Decrypt Image” block  260 , CVM  118  is decrypted using the key acquired during processing associated with block  258 . During processing associated with a “Mount Image” block  262 . CVM  118 , which was decrypted during processing associated with block  260  is mounted on OS  114  ( FIG. 1 ) and therefore available for use by hypervisor  116  ( FIG. 1 ). Once CVM  118  has been mounted, the corresponding software package, in this example SP — 1  134  ( FIG. 1 ) or SP — 2  136  ( FIG. 1 ), is available to the user. 
         [0053]    An asynchronous interrupt  264  is received by OS  114  in the event that either a timeout or shutdown signal is received. Interrupt  264  causes process  250  to proceed to a “Stop CVM image” block  264  during which CVM  118  is made unavailable to the user by disabling CVM  118 . Finally, control proceeds to an “End Utilize CVM” block  269  during which process  250  is complete. 
         [0054]    The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the invention. As used herein, the singular forms “a”, “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “comprises” and/or “comprising,” when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof. 
         [0055]    The corresponding structures, materials, acts, and equivalents of all means or step plus function elements in the claims below are intended to include any structure, material, or act for performing the function m combination with other claimed elements as specifically claimed. The description of the present invention has been presented for purposes of illustration and description, but is not intended to be exhaustive or limited to the invention in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the invention. The embodiment was chosen and described in order to best explain the principles of the invention and the practical application, and to enable others of ordinary skill in the art to understand the invention for various embodiments with various modifications as are suited to the particular use contemplated. 
         [0056]    The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions.