= Slice Manager API Specification (User Exposed) = The API specification is classified based on functionality. Each category of APIs has both: * getters – responsible for reporting based on specified control information, and * setters – responsible for setting the specified control information. The slice manager API are further classified into 1. VM control functions and 2. Client control functions. == SLICE (VM) Control Functions == These set of functions are responsible for managing context isolation of multiple slices through the use of virtual machines. === createSLICE(used_id, passwd, image_type) === This function is invoked from a gateway machine by the slice user to instantiate its slice for experimentation. - Uses the slice user_id and passwd to create a new SLICE. - image_type is an integer which specifies the distribution to be loaded on the disk of the virtual machine. image_type = 1 loads a Debian disk image image_type = 2 loads a Ubuntu disk image image_type = 3 loads a Fedora disk image - Return the IP of the SLICE to which the user can log into (when successful) - Failure returns “nok”, success returns SLICEID. === destroySLICE(user_id, passwd, IP) === - Destroy instance of the SLICE for which IP is assigned - SLICE is destroyed only after authentication of the used_id and passwd. - Returns status “ok” if command was executed correctly, “nok” otherwise. === startSLICE( SLICEID, user_id, passwd, IP) === This functionality can be invoked after the the createSLICE() call is made. - Start instance of the SLICE for which IP is assigned - SLICE instance is started only if the instance is owned by the issuing user. - Returns status “ok” if command was executed correctly, “nok” otherwise. === stopSLICE( SLICEID, user_id, passwd, IP) === - Stop instance of the SLICE for which IP is assigned - SLICE instance is stopped only if the instance is owned by the issuing user. - Returns status “ok” if command was executed correctly, “nok” otherwise. === setSLICEParams(SLICEID, used_id, passwd) === - Allows the user to set all controllable parameters for creation of SLICE. - Features include the amount of disk space per SLICE template, percentage of CPU resources. - Number of parameters supported as a part of this API may vary with underlying virtualization technology. - Successful setting returns “ok”, “nok” otherwise. == Client Control Functions == 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. === addClient(MSID, SliceID) === - This API is called by the user to add a client with MAC address MSID to the slice SliceID. - Successful execution of this function returns “ok” from the grid service, “no” otherwise === deleteClient(MSID, SliceID)== - Used to remove client with MAC address MSID from the slice with identifier as Slice ID. - Successful execution of this function returns “ok” from the grid service, “no” otherwise