|  | 1 | = Slice Manager API Specification (User Exposed) = | 
          
            |  | 2 |  | 
          
            |  | 3 | The API specification is classified based on functionality. Each category of APIs has both: | 
          
            |  | 4 | * getters – responsible for reporting based on specified control information, and | 
          
            |  | 5 | * setters – responsible for setting the specified control information. | 
          
            |  | 6 |  | 
          
            |  | 7 | The slice manager API are further classified into | 
          
            |  | 8 | 1. VM control functions and | 
          
            |  | 9 | 2. Client control functions. | 
          
            |  | 10 |  | 
          
            |  | 11 | == SLICE (VM) Control Functions == | 
          
            |  | 12 |  | 
          
            |  | 13 | These set of functions are responsible for managing context isolation of multiple slices through the use of virtual machines. | 
          
            |  | 14 |  | 
          
            |  | 15 | === createSLICE(used_id, passwd, image_type) === | 
          
            |  | 16 | This function is invoked from a gateway machine by the slice user to instantiate its slice for experimentation. | 
          
            |  | 17 | -       Uses the slice user_id and passwd to create a new SLICE. | 
          
            |  | 18 | -       image_type is an integer which specifies the distribution to be loaded on the disk of the virtual machine. | 
          
            |  | 19 | image_type = 1 loads a Debian disk image | 
          
            |  | 20 | image_type = 2 loads a Ubuntu disk image | 
          
            |  | 21 | image_type = 3 loads a Fedora disk image | 
          
            |  | 22 | - Return the IP of the SLICE to which the user can log into (when successful) | 
          
            |  | 23 | - Failure returns “nok”, success returns SLICEID. | 
          
            |  | 24 |  | 
          
            |  | 25 | === destroySLICE(user_id, passwd, IP) === | 
          
            |  | 26 | -       Destroy instance of the SLICE for which IP is assigned | 
          
            |  | 27 | -       SLICE is destroyed only after authentication of  the used_id and passwd. | 
          
            |  | 28 | -       Returns status “ok” if command was executed correctly, “nok” otherwise. | 
          
            |  | 29 |  | 
          
            |  | 30 | === startSLICE( SLICEID, user_id, passwd, IP) === | 
          
            |  | 31 | This functionality can be invoked after the the createSLICE() call is made. | 
          
            |  | 32 | -       Start instance of the SLICE for which IP is assigned | 
          
            |  | 33 | -       SLICE instance is started only if the instance is owned by the issuing user. | 
          
            |  | 34 | -       Returns status “ok” if command was executed correctly, “nok” otherwise. | 
          
            |  | 35 |  | 
          
            |  | 36 | === stopSLICE( SLICEID, user_id, passwd, IP) === | 
          
            |  | 37 | -       Stop instance of the SLICE for which IP is assigned | 
          
            |  | 38 | -       SLICE instance is stopped only if the instance is owned by the issuing user. | 
          
            |  | 39 | -       Returns status “ok” if command was executed correctly, “nok” otherwise. | 
          
            |  | 40 |  | 
          
            |  | 41 | === setSLICEParams(SLICEID, used_id, passwd) === | 
          
            |  | 42 | -       Allows the user to set all controllable parameters for creation of SLICE. | 
          
            |  | 43 | -       Features include the amount of disk space per SLICE template, percentage of CPU resources. | 
          
            |  | 44 | -       Number of parameters supported as a part of this API may vary with underlying virtualization technology. | 
          
            |  | 45 | -       Successful setting returns “ok”, “nok” otherwise. | 
          
            |  | 46 |  | 
          
            |  | 47 |  | 
          
            |  | 48 | == Client Control Functions == | 
          
            |  | 49 |  | 
          
            |  | 50 | These set of functions allow the datapath controller to determine which WiMAX clients can associate with the BTS and vice-versa. These API are internal and are based on the input provided by the slice user. | 
          
            |  | 51 |  | 
          
            |  | 52 | === addClient(MSID, SliceID) === | 
          
            |  | 53 | -       This API is called by the user to add a client with MAC address MSID to the slice SliceID. | 
          
            |  | 54 | -       Successful execution of this function returns “ok” from the grid service, “no” otherwise | 
          
            |  | 55 | === deleteClient(MSID, SliceID)== | 
          
            |  | 56 | -       Used to remove client with MAC address MSID  from the slice with identifier as Slice ID. | 
          
            |  | 57 | -       Successful execution of this function returns “ok” from the grid service, “no” otherwise |