Glance API Specification

Glance <=> Nova Integration requires these components:

Parallax API Commands

This section describes the Parallax REST API for creating, listing, modifying, and deleting image metadata.

Fetch id/name basic information on all public images

GET http://parallax.openstack.org/images

Returns a mapping containing a list of mappings containing details information about the public images encoded in JSON:

{
"images":
  [
  {"id": 1, "name": "My Image 1"},
  {"id": 2, "name": "My Image 2"},
  ]
}

Fetch detailed information on all public images

GET http://parallax.openstack.org/images/detail

Returns a mapping containing a list of mappings containing details information about the public images encoded in JSON:

{
"images":
  [
    {
    "id": 1,
    "name": "My Image",
    "status": "available",
    "image_type": "kernel"
    "is_public": true,
    "properties": { "mykey": "myvalue" },
    "files": [ { "location": "swift://user:passwd@acct/container/obj.tar.gz.0",
                 "size": 101 } ]
    }
  ]
}

Notes

The properties element is a mapping of custom key/value pairs the image may have saved with it.

The files element is a list of mappings containing the chunks comprising an image along with the chunk's size

Fetch a single image's metadata

GET http://parallax.openstack.org/images/<ID>

Returns the image's metadata encoded in JSON:

{
"image":
  {
  "id": 1,
  "name": "My Image",
  "status": "available",
  "image_type": "kernel"
  "is_public": true,
  "properties": { "mykey": "myvalue" },
  "files": [ { "location": "swift://user:passwd@acct/container/obj.tar.gz.0",
             "size": 101 } ]
  }
}

Notes

The reason the returned dict contains only a single element, 'image', is for XML conversion purposes, where the root element will be <image> and not the root XML namespace.

The properties element is a mapping of custom key/value pairs the image may have saved with it.

The files element is a list of mappings containing the chunks comprising an image along with the chunk's size

Exceptions

404:: Image was not found

Register/create a new image

POST http://parallax.openstack.org/images

The body of the request shall be a JSON encoded mapping of the image's metadata:

{
"image":
  {
  "name": "My Image",
  "status": "available",
  "image_type": "kernel"
  "is_public": true,
  "properties": { "mykey": "myvalue" },
  "files": [ { "location": "swift://user:passwd@acct/container/obj.tar.gz.0",
             "size": 101 } ]
  }
}

The returned response, is successful, will be a JSON encoded mapping of the newly-created image in Parallax, including a populated id column with the new image's internal identifier:

{
"image":
  {
  "id": 1,
  "name": "My Image",
  "status": "available",
  "image_type": "kernel"
  "is_public": true,
  "properties": { "mykey": "myvalue" },
  "files": [ { "location": "swift://user:passwd@acct/container/obj.tar.gz.0",
             "size": 101 } ]
  }
}

Notes

The reason the body dict and result dict contains only a single element, 'image', is for XML conversion purposes, where the root element will be <image> and not the root XML namespace.

The properties element is a mapping of custom key/value pairs the image may have saved with it.

The files element is a list of mappings containing the chunks comprising an image along with the chunk's size

Update an existing image's metadata

PUT http://parallax.openstack.org/images/<ID>

The body of the request shall be a JSON encoded mapping of the image's metadata:

{
"image":
  {
  "id": 2349823,
  "name": "My Image",
  "status": "disabled",
  "image_type": "kernel"
  "is_public": true,
  "properties": { "mykey": "myvalue" },
  "files": [ { "location": "swift://user:passwd@acct/container/obj.tar.gz.0",
             "size": 101 } ]
  }
}

The returned response, if successful, will be a JSON encoded mapping of the updated image metadata in Parallax:

{
"image":
  {
  "id": 2349823,
  "name": "My Image",
  "status": "disabled",
  "image_type": "kernel"
  "is_public": true,
  "metadata": { "mykey": "myvalue" },
  "files": [ { "location": "swift://user:passwd@acct/container/obj.tar.gz.0",
             "size": 101 } ]
  }
}

Notes

The reason the body dict and result dict contains only a single element, 'image', is for XML conversion purposes, where the root element will be <image> and not the root XML namespace.

The properties element is a mapping of custom key/value pairs the image may have saved with it.

The files element is a list of mappings containing the chunks comprising an image along with the chunk's size

Exceptions

404:: Image was not found

Delete an existing image from the registry

DELETE http://parallax.openstack.org/images/<ID>

The body of the request will be ignored.

Exceptions

404:: Image was not found

Teller API Commands

This section describes the Teller REST API.

Fetch an Image

GET http://teller.openstack.org/images/<ID>

Returns the virtual machine image data as response body.

Exceptions

404:: Image was not found

Store an Image

POST http://teller.openstack.org/images/<ID>

The body of the POST request shall be a mime-encoded blob of data representing the image to be stored.

Note: All this does is store the raw image data in Teller's backend. If you are responsible for storing the metadata about the image, you should do that with a similar call to Parallax's API.

Immediately returns a mapping of image information indicating status of the image:

{
'image':
  {
    'id': identifier for image,
    'status': 'pending'
  }
}

Update an Image

There is no operation for updating an image. All images are immutable once created.

Delete an Image

DELETE http://teller.openstack.org/images/<ID>

Returns 200 OK on success

Returns 404 when image with URI does not exist

Wiki: GlanceAPISpec (last edited 2010-11-29 17:00:34 by JayPipes)