Add new API call CreateImage; create/snapshot a geni sliver node.
This call allows a geni user to create a sliver, customise the node, and then take a snapshot (possibly creating a new image descriptor) without having to use the Emulab web interface. The API looks like: int CreateImage(slice_urn, sliver_urn, imagename, credentials); The slice must be unlocked and the sliver in the ready state. Once the operation starts, the slice is locked until the backend finishes. This is something that I might revisit later, but this was the easiest approach that ensures consistency. The imagename is looked up in the current project the node is attached to. If it does not exists, create it. Then snapshot the node. You can call this again of course, to take a new snapshot, without having to provide a new imagename. The image file is written to the images directory of the project, which is available to the node via /proj, so the user can get to it (since the user might not have a local account).
Showing with 206 additions and 1 deletion