Tidy up API docs
* Add bit about images api vs glance * Explain how to send auth token * Prepend '/v1' to example URIs Related to bp glance-folsom-docs-cleanup Change-Id: I2c3b568e463f62033268573f50f2d8a74d053965
This commit is contained in:
parent
4c038b0d85
commit
7a0d2eb6cd
@ -17,52 +17,58 @@
|
|||||||
Using Glance's Public APIs
|
Using Glance's Public APIs
|
||||||
==========================
|
==========================
|
||||||
|
|
||||||
Glance has a RESTful API that exposes both metadata about registered virtual
|
Glance fully implements versions 1.0, 1.1 and 2.0 of the OpenStack Images API.
|
||||||
machine images and the image data itself.
|
The Images API specification is developed alongside Glance, but is not
|
||||||
|
considered part of the Glance project.
|
||||||
|
|
||||||
A host that runs the ``bin/glance-api`` service is said to be a *Glance API
|
Authentication
|
||||||
Server*.
|
--------------
|
||||||
|
|
||||||
Assume there is a Glance API server running at the URL
|
Glance depends on Keystone and the OpenStack Identity API to handle
|
||||||
``http://glance.example.com``.
|
authentication of clients. You must obtain an authentication token from
|
||||||
|
Keystone using and send it along with all API requests to Glance through
|
||||||
|
the ``X-Auth-Token`` header. Glance will communicate back to Keystone to
|
||||||
|
verify the token validity and obtain your identity credentials.
|
||||||
|
|
||||||
Let's walk through how a user might request information from this server.
|
Using v1.X
|
||||||
|
----------
|
||||||
|
|
||||||
Requesting a List of Public VM Images
|
For the purpose of examples, assume there is a Glance API server running
|
||||||
-------------------------------------
|
at the URL ``http://glance.example.com`` on the default port 80.
|
||||||
|
|
||||||
We want to see a list of available virtual machine images that the Glance
|
List Available Images
|
||||||
server knows about.
|
*********************
|
||||||
|
|
||||||
We issue a ``GET`` request to ``http://glance.example.com/images/`` to retrieve
|
We want to see a list of available images that the authenticated user has
|
||||||
this list of available *public* images. The data is returned as a JSON-encoded
|
access to. This includes images owned by the user, images shared with the user
|
||||||
|
and public images.
|
||||||
|
|
||||||
|
We issue a ``GET`` request to ``http://glance.example.com/v1/images`` to
|
||||||
|
retrieve this list of available images. The data is returned as a JSON-encoded
|
||||||
mapping in the following format::
|
mapping in the following format::
|
||||||
|
|
||||||
{'images': [
|
{'images': [
|
||||||
{'uri': 'http://glance.example.com/images/71c675ab-d94f-49cd-a114-e12490b328d9',
|
{'uri': 'http://glance.example.com/v1/images/71c675ab-d94f-49cd-a114-e12490b328d9',
|
||||||
'name': 'Ubuntu 10.04 Plain',
|
'name': 'Ubuntu 10.04 Plain',
|
||||||
'disk_format': 'vhd',
|
'disk_format': 'vhd',
|
||||||
'container_format': 'ovf',
|
'container_format': 'ovf',
|
||||||
'size': '5368709120'}
|
'size': '5368709120'}
|
||||||
...]}
|
...]}
|
||||||
|
|
||||||
.. note::
|
|
||||||
|
|
||||||
All images returned from the above `GET` request are *public* images
|
List Available Images in More Detail
|
||||||
|
************************************
|
||||||
|
|
||||||
|
We want to see a more detailed list of available images that the authenticated
|
||||||
|
user has access to. This includes images owned by the user, images shared with
|
||||||
|
the user and public images.
|
||||||
|
|
||||||
Requesting Detailed Metadata on Public VM Images
|
We issue a ``GET`` request to ``http://glance.example.com/v1/images/detail`` to
|
||||||
------------------------------------------------
|
retrieve this list of available images. The data is returned as a
|
||||||
|
|
||||||
We want to see more detailed information on available virtual machine images
|
|
||||||
that the Glance server knows about.
|
|
||||||
|
|
||||||
We issue a ``GET`` request to ``http://glance.example.com/images/detail`` to
|
|
||||||
retrieve this list of available *public* images. The data is returned as a
|
|
||||||
JSON-encoded mapping in the following format::
|
JSON-encoded mapping in the following format::
|
||||||
|
|
||||||
{'images': [
|
{'images': [
|
||||||
{'uri': 'http://glance.example.com/images/71c675ab-d94f-49cd-a114-e12490b328d9',
|
{'uri': 'http://glance.example.com/v1/images/71c675ab-d94f-49cd-a114-e12490b328d9',
|
||||||
'name': 'Ubuntu 10.04 Plain 5GB',
|
'name': 'Ubuntu 10.04 Plain 5GB',
|
||||||
'disk_format': 'vhd',
|
'disk_format': 'vhd',
|
||||||
'container_format': 'ovf',
|
'container_format': 'ovf',
|
||||||
@ -81,8 +87,6 @@ JSON-encoded mapping in the following format::
|
|||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
All images returned from the above `GET` request are *public* images
|
|
||||||
|
|
||||||
All timestamps returned are in UTC
|
All timestamps returned are in UTC
|
||||||
|
|
||||||
The `updated_at` timestamp is the timestamp when an image's metadata
|
The `updated_at` timestamp is the timestamp when an image's metadata
|
||||||
@ -106,10 +110,10 @@ JSON-encoded mapping in the following format::
|
|||||||
The `owner` field is a string which may either be null or which will
|
The `owner` field is a string which may either be null or which will
|
||||||
indicate the owner of the image
|
indicate the owner of the image
|
||||||
|
|
||||||
Filtering Images Returned via ``GET /images`` and ``GET /images/detail``
|
Filtering Images Lists
|
||||||
------------------------------------------------------------------------
|
**********************
|
||||||
|
|
||||||
Both the ``GET /images`` and ``GET /images/detail`` requests take query
|
Both the ``GET /v1/images`` and ``GET /v1/images/detail`` requests take query
|
||||||
parameters that serve to filter the returned list of images. The following
|
parameters that serve to filter the returned list of images. The following
|
||||||
list details these query parameters.
|
list details these query parameters.
|
||||||
|
|
||||||
@ -156,30 +160,29 @@ These two resources also accept sort parameters:
|
|||||||
Results will be sorted in the direction ``DIR``. Accepted values are ``asc``
|
Results will be sorted in the direction ``DIR``. Accepted values are ``asc``
|
||||||
for ascending or ``desc`` (default) for descending.
|
for ascending or ``desc`` (default) for descending.
|
||||||
|
|
||||||
|
Retrieve Image Metadata
|
||||||
Requesting Detailed Metadata on a Specific Image
|
***********************
|
||||||
------------------------------------------------
|
|
||||||
|
|
||||||
We want to see detailed information for a specific virtual machine image
|
We want to see detailed information for a specific virtual machine image
|
||||||
that the Glance server knows about.
|
that the Glance server knows about.
|
||||||
|
|
||||||
We have queried the Glance server for a list of public images and the
|
We have queried the Glance server for a list of images and the
|
||||||
data returned includes the `uri` field for each available image. This
|
data returned includes the `uri` field for each available image. This
|
||||||
`uri` field value contains the exact location needed to get the metadata
|
`uri` field value contains the exact location needed to get the metadata
|
||||||
for a specific image.
|
for a specific image.
|
||||||
|
|
||||||
Continuing the example from above, in order to get metadata about the
|
Continuing the example from above, in order to get metadata about the
|
||||||
first public image returned, we can issue a ``HEAD`` request to the Glance
|
first image returned, we can issue a ``HEAD`` request to the Glance
|
||||||
server for the image's URI.
|
server for the image's URI.
|
||||||
|
|
||||||
We issue a ``HEAD`` request to
|
We issue a ``HEAD`` request to
|
||||||
``http://glance.example.com/images/71c675ab-d94f-49cd-a114-e12490b328d9`` to
|
``http://glance.example.com/v1/images/71c675ab-d94f-49cd-a114-e12490b328d9`` to
|
||||||
retrieve complete metadata for that image. The metadata is returned as a
|
retrieve complete metadata for that image. The metadata is returned as a
|
||||||
set of HTTP headers that begin with the prefix ``x-image-meta-``. The
|
set of HTTP headers that begin with the prefix ``x-image-meta-``. The
|
||||||
following shows an example of the HTTP headers returned from the above
|
following shows an example of the HTTP headers returned from the above
|
||||||
``HEAD`` request::
|
``HEAD`` request::
|
||||||
|
|
||||||
x-image-meta-uri http://glance.example.com/images/71c675ab-d94f-49cd-a114-e12490b328d9
|
x-image-meta-uri http://glance.example.com/v1/images/71c675ab-d94f-49cd-a114-e12490b328d9
|
||||||
x-image-meta-name Ubuntu 10.04 Plain 5GB
|
x-image-meta-name Ubuntu 10.04 Plain 5GB
|
||||||
x-image-meta-disk_format vhd
|
x-image-meta-disk_format vhd
|
||||||
x-image-meta-container_format ovf
|
x-image-meta-container_format ovf
|
||||||
@ -218,23 +221,23 @@ following shows an example of the HTTP headers returned from the above
|
|||||||
be null or which will indicate the owner of the image
|
be null or which will indicate the owner of the image
|
||||||
|
|
||||||
|
|
||||||
Retrieving a Virtual Machine Image
|
Retrieve Raw Image Data
|
||||||
----------------------------------
|
***********************
|
||||||
|
|
||||||
We want to retrieve that actual raw data for a specific virtual machine image
|
We want to retrieve that actual raw data for a specific virtual machine image
|
||||||
that the Glance server knows about.
|
that the Glance server knows about.
|
||||||
|
|
||||||
We have queried the Glance server for a list of public images and the
|
We have queried the Glance server for a list of images and the
|
||||||
data returned includes the `uri` field for each available image. This
|
data returned includes the `uri` field for each available image. This
|
||||||
`uri` field value contains the exact location needed to get the metadata
|
`uri` field value contains the exact location needed to get the metadata
|
||||||
for a specific image.
|
for a specific image.
|
||||||
|
|
||||||
Continuing the example from above, in order to get metadata about the
|
Continuing the example from above, in order to get metadata about the
|
||||||
first public image returned, we can issue a ``HEAD`` request to the Glance
|
first image returned, we can issue a ``HEAD`` request to the Glance
|
||||||
server for the image's URI.
|
server for the image's URI.
|
||||||
|
|
||||||
We issue a ``GET`` request to
|
We issue a ``GET`` request to
|
||||||
``http://glance.example.com/images/71c675ab-d94f-49cd-a114-e12490b328d9`` to
|
``http://glance.example.com/v1/images/71c675ab-d94f-49cd-a114-e12490b328d9`` to
|
||||||
retrieve metadata for that image as well as the image itself encoded
|
retrieve metadata for that image as well as the image itself encoded
|
||||||
into the response body.
|
into the response body.
|
||||||
|
|
||||||
@ -242,7 +245,7 @@ The metadata is returned as a set of HTTP headers that begin with the
|
|||||||
prefix ``x-image-meta-``. The following shows an example of the HTTP headers
|
prefix ``x-image-meta-``. The following shows an example of the HTTP headers
|
||||||
returned from the above ``GET`` request::
|
returned from the above ``GET`` request::
|
||||||
|
|
||||||
x-image-meta-uri http://glance.example.com/images/71c675ab-d94f-49cd-a114-e12490b328d9
|
x-image-meta-uri http://glance.example.com/v1/images/71c675ab-d94f-49cd-a114-e12490b328d9
|
||||||
x-image-meta-name Ubuntu 10.04 Plain 5GB
|
x-image-meta-name Ubuntu 10.04 Plain 5GB
|
||||||
x-image-meta-disk_format vhd
|
x-image-meta-disk_format vhd
|
||||||
x-image-meta-container_format ovf
|
x-image-meta-container_format ovf
|
||||||
@ -288,8 +291,8 @@ returned from the above ``GET`` request::
|
|||||||
`application/octet-stream`.
|
`application/octet-stream`.
|
||||||
|
|
||||||
|
|
||||||
Adding a New Virtual Machine Image
|
Add a New Image
|
||||||
----------------------------------
|
***************
|
||||||
|
|
||||||
We have created a new virtual machine image in some way (created a
|
We have created a new virtual machine image in some way (created a
|
||||||
"golden image" or snapshotted/backed up an existing image) and we
|
"golden image" or snapshotted/backed up an existing image) and we
|
||||||
@ -303,15 +306,14 @@ Assuming, like in the examples above, that a Glance API server is running
|
|||||||
at ``glance.example.com``, we issue a ``POST`` request to add an image to
|
at ``glance.example.com``, we issue a ``POST`` request to add an image to
|
||||||
Glance::
|
Glance::
|
||||||
|
|
||||||
POST http://glance.example.com/images/
|
POST http://glance.example.com/v1/images
|
||||||
|
|
||||||
The metadata about the image is sent to Glance in HTTP headers. The body
|
The metadata about the image is sent to Glance in HTTP headers. The body
|
||||||
of the HTTP request to the Glance API will be the MIME-encoded disk
|
of the HTTP request to the Glance API will be the MIME-encoded disk
|
||||||
image data.
|
image data.
|
||||||
|
|
||||||
|
|
||||||
Adding Image Metadata in HTTP Headers
|
**Image Metadata in HTTP Headers**
|
||||||
*************************************
|
|
||||||
|
|
||||||
Glance will view as image metadata any HTTP header that it receives in a
|
Glance will view as image metadata any HTTP header that it receives in a
|
||||||
``POST`` request where the header key is prefixed with the strings
|
``POST`` request where the header key is prefixed with the strings
|
||||||
@ -396,7 +398,7 @@ The list of metadata headers that Glance accepts are listed below.
|
|||||||
a public image, meaning that any user may view its metadata and may read
|
a public image, meaning that any user may view its metadata and may read
|
||||||
the disk image from Glance.
|
the disk image from Glance.
|
||||||
|
|
||||||
When not present, the image is assumed to be *not public* and specific to
|
When not present, the image is assumed to be *not public* and owned by
|
||||||
a user.
|
a user.
|
||||||
|
|
||||||
* ``x-image-meta-min-ram``
|
* ``x-image-meta-min-ram``
|
||||||
@ -444,8 +446,8 @@ The list of metadata headers that Glance accepts are listed below.
|
|||||||
of image properties.
|
of image properties.
|
||||||
|
|
||||||
|
|
||||||
Updating an Image
|
Update an Image
|
||||||
*****************
|
***************
|
||||||
|
|
||||||
Glance will view as image metadata any HTTP header that it receives in a
|
Glance will view as image metadata any HTTP header that it receives in a
|
||||||
``PUT`` request where the header key is prefixed with the strings
|
``PUT`` request where the header key is prefixed with the strings
|
||||||
@ -462,8 +464,8 @@ headers.
|
|||||||
See more about image statuses here: :doc:`Image Statuses <statuses>`
|
See more about image statuses here: :doc:`Image Statuses <statuses>`
|
||||||
|
|
||||||
|
|
||||||
Requesting Image Memberships
|
List Image Memberships
|
||||||
----------------------------
|
**********************
|
||||||
|
|
||||||
We want to see a list of the other system tenants (or users, if
|
We want to see a list of the other system tenants (or users, if
|
||||||
"owner_is_tenant" is False) that may access a given virtual machine image that
|
"owner_is_tenant" is False) that may access a given virtual machine image that
|
||||||
@ -471,9 +473,9 @@ the Glance server knows about. We take the `uri` field of the image data,
|
|||||||
append ``/members`` to it, and issue a ``GET`` request on the resulting URL.
|
append ``/members`` to it, and issue a ``GET`` request on the resulting URL.
|
||||||
|
|
||||||
Continuing from the example above, in order to get the memberships for the
|
Continuing from the example above, in order to get the memberships for the
|
||||||
first public image returned, we can issue a ``GET`` request to the Glance
|
first image returned, we can issue a ``GET`` request to the Glance
|
||||||
server for
|
server for
|
||||||
``http://glance.example.com/images/71c675ab-d94f-49cd-a114-e12490b328d9/members``
|
``http://glance.example.com/v1/images/71c675ab-d94f-49cd-a114-e12490b328d9/members``
|
||||||
. What we will get back is JSON data such as the following::
|
. What we will get back is JSON data such as the following::
|
||||||
|
|
||||||
{'members': [
|
{'members': [
|
||||||
@ -486,11 +488,11 @@ that tenant is authorized to further share the image, the `can_share` field is
|
|||||||
`true`.
|
`true`.
|
||||||
|
|
||||||
|
|
||||||
Requesting Shared Images
|
List Shared Images
|
||||||
------------------------
|
******************
|
||||||
|
|
||||||
We want to see a list of images which are shared with a given tenant. We issue
|
We want to see a list of images which are shared with a given tenant. We issue
|
||||||
a ``GET`` request to ``http://glance.example.com/shared-images/tenant1``. We
|
a ``GET`` request to ``http://glance.example.com/v1/shared-images/tenant1``. We
|
||||||
will get back JSON data such as the following::
|
will get back JSON data such as the following::
|
||||||
|
|
||||||
{'shared_images': [
|
{'shared_images': [
|
||||||
@ -503,12 +505,12 @@ The `image_id` field identifies an image shared with the tenant named by
|
|||||||
`can_share` field is `true`.
|
`can_share` field is `true`.
|
||||||
|
|
||||||
|
|
||||||
Adding a Member to an Image
|
Add a Member to an Image
|
||||||
---------------------------
|
************************
|
||||||
|
|
||||||
We want to authorize a tenant to access a private image. We issue a ``PUT``
|
We want to authorize a tenant to access a private image. We issue a ``PUT``
|
||||||
request to
|
request to
|
||||||
``http://glance.example.com/images/71c675ab-d94f-49cd-a114-e12490b328d9/members/tenant1``
|
``http://glance.example.com/v1/images/71c675ab-d94f-49cd-a114-e12490b328d9/members/tenant1``
|
||||||
. With no body, this will add the membership to the image, leaving existing
|
. With no body, this will add the membership to the image, leaving existing
|
||||||
memberships unmodified and defaulting new memberships to have `can_share`
|
memberships unmodified and defaulting new memberships to have `can_share`
|
||||||
set to `false`. We may also optionally attach a body of the following form::
|
set to `false`. We may also optionally attach a body of the following form::
|
||||||
@ -522,20 +524,20 @@ If such a body is provided, both existing and new memberships will have
|
|||||||
will return a 204 ("No Content") status code.
|
will return a 204 ("No Content") status code.
|
||||||
|
|
||||||
|
|
||||||
Removing a Member from an Image
|
Remove a Member from an Image
|
||||||
-------------------------------
|
*****************************
|
||||||
|
|
||||||
We want to revoke a tenant's right to access a private image. We issue a
|
We want to revoke a tenant's right to access a private image. We issue a
|
||||||
``DELETE`` request to ``http://glance.example.com/images/1/members/tenant1``.
|
``DELETE`` request to ``http://glance.example.com/v1/images/1/members/tenant1``.
|
||||||
This query will return a 204 ("No Content") status code.
|
This query will return a 204 ("No Content") status code.
|
||||||
|
|
||||||
|
|
||||||
Replacing a Membership List for an Image
|
Replace a Membership List for an Image
|
||||||
----------------------------------------
|
**************************************
|
||||||
|
|
||||||
The full membership list for a given image may be replaced. We issue a ``PUT``
|
The full membership list for a given image may be replaced. We issue a ``PUT``
|
||||||
request to
|
request to
|
||||||
``http://glance.example.com/images/71c675ab-d94f-49cd-a114-e12490b328d9/members``
|
``http://glance.example.com/v1/images/71c675ab-d94f-49cd-a114-e12490b328d9/members``
|
||||||
with a body of the following form::
|
with a body of the following form::
|
||||||
|
|
||||||
{'memberships': [
|
{'memberships': [
|
||||||
|
Loading…
x
Reference in New Issue
Block a user