WADL to RST migration (part 2 - images)
This brings the Images API Reference to the glance tree as part of the effort described here: https://wiki.openstack.org/wiki/Documentation/Migrate#API_Reference_Plan This patch contains the content of the Images v2 API reference converted to RST. The content has been corrected where I noticed divergences with reality (which actually happened a lot, so this patch contains a lot of revisions). Tasks and metadefs are submitted as separate patches. Change-Id: If69c469da7f28f090a2286ec0b115d9bcaac4fbf Closes-Bug: #1550457 Closes-Bug: #1589264 Closes-Bug: #1592715
This commit is contained in:
parent
514d10ad53
commit
c028c2d23e
132
api-ref/source/v2/images-data.inc
Normal file
132
api-ref/source/v2/images-data.inc
Normal file
@ -0,0 +1,132 @@
|
|||||||
|
.. -*- rst -*-
|
||||||
|
|
||||||
|
Image data
|
||||||
|
**********
|
||||||
|
|
||||||
|
Uploads and downloads raw image data.
|
||||||
|
|
||||||
|
*These operations may be restricted to administrators. Consult your cloud
|
||||||
|
operator's documentation for details.*
|
||||||
|
|
||||||
|
|
||||||
|
Upload binary image data
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
.. rest_method:: PUT /v2/images/{image_id}/file
|
||||||
|
|
||||||
|
Uploads binary image data.
|
||||||
|
*(Since Image API v2.0)*
|
||||||
|
|
||||||
|
Set the ``Content-Type`` request header to ``application/octet-stream``.
|
||||||
|
|
||||||
|
Example call:
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
curl -i -X PUT -H "X-Auth-Token: $token" \
|
||||||
|
-H "Content-Type: application/octet-stream" \
|
||||||
|
-d @/home/glance/ubuntu-12.10.qcow2 \
|
||||||
|
$image_url/v2/images/{image_id}/file
|
||||||
|
|
||||||
|
**Preconditions**
|
||||||
|
|
||||||
|
Before you can store binary image data, you must meet the following
|
||||||
|
preconditions:
|
||||||
|
|
||||||
|
- The image must exist.
|
||||||
|
|
||||||
|
- You must set the disk and container formats in the image.
|
||||||
|
|
||||||
|
- The image status must be ``queued``.
|
||||||
|
|
||||||
|
- Your image storage quota must be sufficient.
|
||||||
|
|
||||||
|
- The size of the data that you want to store must not exceed the
|
||||||
|
size that the OpenStack Image service allows.
|
||||||
|
|
||||||
|
**Synchronous Postconditions**
|
||||||
|
|
||||||
|
- With correct permissions, you can see the image status as
|
||||||
|
``active`` through API calls.
|
||||||
|
|
||||||
|
- With correct access, you can see the stored data in the storage
|
||||||
|
system that the OpenStack Image Service manages.
|
||||||
|
|
||||||
|
**Troubleshooting**
|
||||||
|
|
||||||
|
- If you cannot store the data, either your request lacks required
|
||||||
|
information or you exceeded your allotted quota. Ensure that you
|
||||||
|
meet the preconditions and run the request again. If the request
|
||||||
|
fails again, review your API request.
|
||||||
|
|
||||||
|
- The storage back ends for storing the data must have enough free
|
||||||
|
storage space to accommodate the size of the data.
|
||||||
|
|
||||||
|
Normal response codes: 204
|
||||||
|
|
||||||
|
Error response codes: 400, 401, 403, 404, 409, 410, 413, 415, 503
|
||||||
|
|
||||||
|
|
||||||
|
Request
|
||||||
|
-------
|
||||||
|
|
||||||
|
.. rest_parameters:: images-parameters.yaml
|
||||||
|
|
||||||
|
- Content-type: Content-Type-data
|
||||||
|
- image_id: image_id-in-path
|
||||||
|
|
||||||
|
|
||||||
|
Download binary image data
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
.. rest_method:: GET /v2/images/{image_id}/file
|
||||||
|
|
||||||
|
Downloads binary image data.
|
||||||
|
*(Since Image API v2.0)*
|
||||||
|
|
||||||
|
Example call: ``curl -i -X GET -H "X-Auth-Token: $token"
|
||||||
|
$image_url/v2/images/{image_id}/file``
|
||||||
|
|
||||||
|
The response body contains the raw binary data that represents the
|
||||||
|
actual virtual disk. The ``Content-Type`` header contains the
|
||||||
|
``application/octet-stream`` value. The ``Content-MD5`` header
|
||||||
|
contains an MD5 checksum of the image data. Use this checksum to
|
||||||
|
verify the integrity of the image data.
|
||||||
|
|
||||||
|
**Preconditions**
|
||||||
|
|
||||||
|
- The image must exist.
|
||||||
|
|
||||||
|
**Synchronous Postconditions**
|
||||||
|
|
||||||
|
- You can download the binary image data in your machine if the
|
||||||
|
image has image data.
|
||||||
|
|
||||||
|
- If image data exists, the call returns the HTTP ``200`` response code.
|
||||||
|
|
||||||
|
- If no image data exists, the call returns the HTTP ``204`` (No Content)
|
||||||
|
response code.
|
||||||
|
|
||||||
|
- If no image record exists, the call returns the HTTP ``404`` response code.
|
||||||
|
|
||||||
|
Normal response codes: 200, 204
|
||||||
|
|
||||||
|
Error response codes: 400, 403, 404
|
||||||
|
|
||||||
|
|
||||||
|
Request
|
||||||
|
-------
|
||||||
|
|
||||||
|
.. rest_parameters:: images-parameters.yaml
|
||||||
|
|
||||||
|
- image_id: image_id-in-path
|
||||||
|
- Content-Range: Content-Range
|
||||||
|
|
||||||
|
|
||||||
|
Response
|
||||||
|
--------
|
||||||
|
.. rest_parameters:: images-parameters.yaml
|
||||||
|
|
||||||
|
- Content-Type: Content-Type-data-response
|
||||||
|
- Content-Md5: Content-Md5
|
||||||
|
- Content-Length: Content-Length
|
645
api-ref/source/v2/images-images-v2.inc
Normal file
645
api-ref/source/v2/images-images-v2.inc
Normal file
@ -0,0 +1,645 @@
|
|||||||
|
.. -*- rst -*-
|
||||||
|
|
||||||
|
Images
|
||||||
|
******
|
||||||
|
|
||||||
|
Creates, lists, shows, updates, deletes, and performs other operations on
|
||||||
|
images.
|
||||||
|
|
||||||
|
General information
|
||||||
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
**Images**
|
||||||
|
|
||||||
|
An *image* is represented by a JSON Object, that is, as a set of key:value
|
||||||
|
pairs. Some of these keys are *base properties* that are managed by the
|
||||||
|
Image service. The remainder are properties put on the image by the operator
|
||||||
|
or the image owner.
|
||||||
|
|
||||||
|
Here's some important information about image properties:
|
||||||
|
|
||||||
|
* The base properties are always included in the image representation. A
|
||||||
|
base property that doesn't have a value is displayed with its value set
|
||||||
|
to ``null`` (that is, the JSON null data type).
|
||||||
|
|
||||||
|
* Additional properties, whose value is always a string data type, are
|
||||||
|
only included in the response if they have a value.
|
||||||
|
|
||||||
|
* Since version 2.2, the Images API allows an operator to configure
|
||||||
|
*property protections*, by which the create, read, update, and delete
|
||||||
|
operations on specific image properties may be restricted to particular
|
||||||
|
user roles. Consult the documentation of your cloud operator for details.
|
||||||
|
|
||||||
|
* Arguably the most important properties of an image are its *id*, which
|
||||||
|
uniquely identifies the image, its *status*, which indicates the current
|
||||||
|
situation of the image (which, in turn, indicates what you can do with the
|
||||||
|
image), and its *visibility*, which indicates who has access to the image.
|
||||||
|
|
||||||
|
|
||||||
|
**Image status**
|
||||||
|
|
||||||
|
The possible status values for images are presented in the following table.
|
||||||
|
|
||||||
|
.. list-table::
|
||||||
|
:header-rows: 1
|
||||||
|
|
||||||
|
* - Status
|
||||||
|
- Description
|
||||||
|
* - queued
|
||||||
|
- The Image service reserved an image ID for the image in the catalog
|
||||||
|
but did not yet upload any image data.
|
||||||
|
* - saving
|
||||||
|
- The Image service is is in the process of saving the the raw data for
|
||||||
|
the image into the backing store.
|
||||||
|
* - active
|
||||||
|
- The image is active and ready for consumption in the Image service.
|
||||||
|
* - killed
|
||||||
|
- An image data upload error occurred.
|
||||||
|
* - deleted
|
||||||
|
- The Image service retains information about the image but the image is
|
||||||
|
no longer available for use.
|
||||||
|
* - pending_delete
|
||||||
|
- Similar to the ``deleted`` status. An image in this state is not
|
||||||
|
recoverable.
|
||||||
|
* - deactivated
|
||||||
|
- The image data is not available for use.
|
||||||
|
|
||||||
|
**Image visibility**
|
||||||
|
|
||||||
|
The possible values for image visibility are presented in the following table.
|
||||||
|
|
||||||
|
.. list-table::
|
||||||
|
:header-rows: 1
|
||||||
|
|
||||||
|
* - Visibility
|
||||||
|
- Description
|
||||||
|
* - ``public``
|
||||||
|
- Any tenant may access the image. Additionally, the image appears in
|
||||||
|
the default image list of all tenants.
|
||||||
|
* - ``private``
|
||||||
|
- Only the tenant who owns the image, or any tenants the image has been
|
||||||
|
shared with, may access the image. Additionally, the image appears in
|
||||||
|
the default image list of the owning tenant.
|
||||||
|
|
||||||
|
|
||||||
|
Create an image
|
||||||
|
~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
.. rest_method:: POST /v2/images
|
||||||
|
|
||||||
|
Creates a catalog record for an operating system disk image.
|
||||||
|
*(Since Image API v2.0)*
|
||||||
|
|
||||||
|
The ``Location`` response header contains the URI for the image.
|
||||||
|
The response body contains the new image entity.
|
||||||
|
|
||||||
|
Synchronous Postconditions
|
||||||
|
|
||||||
|
- With correct permissions, you can see the image status as
|
||||||
|
``queued`` through API calls.
|
||||||
|
|
||||||
|
Normal response codes: 201
|
||||||
|
|
||||||
|
Error response codes: 400, 401, 403, 409, 413, 415
|
||||||
|
|
||||||
|
|
||||||
|
Request
|
||||||
|
-------
|
||||||
|
|
||||||
|
.. rest_parameters:: images-parameters.yaml
|
||||||
|
|
||||||
|
- container_format: container_format-in-request
|
||||||
|
- disk_format: disk_format-in-request
|
||||||
|
- id: id-in-request
|
||||||
|
- min_disk: min_disk-in-request
|
||||||
|
- min_ram: min_ram-in-request
|
||||||
|
- name: name-in-request
|
||||||
|
- protected: protected-in-request
|
||||||
|
- tags: tags-in-request
|
||||||
|
- visibility: visibility-in-request
|
||||||
|
|
||||||
|
Additionally, you may include additional properties specified as key:value
|
||||||
|
pairs, where the value must be a string data type. Keys and values are limited
|
||||||
|
to 255 chars in length. Available key names may be limited by the cloud's
|
||||||
|
property protection configuration.
|
||||||
|
|
||||||
|
Request Example
|
||||||
|
---------------
|
||||||
|
|
||||||
|
.. literalinclude:: samples/image-create-request.json
|
||||||
|
:language: json
|
||||||
|
|
||||||
|
Response Parameters
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
.. rest_parameters:: images-parameters.yaml
|
||||||
|
|
||||||
|
- Location: Location
|
||||||
|
- checksum: checksum
|
||||||
|
- container_format: container_format
|
||||||
|
- created_at: created_at
|
||||||
|
- disk_format: disk_format
|
||||||
|
- file: file
|
||||||
|
- id: id
|
||||||
|
- min_disk: min_disk
|
||||||
|
- min_ram: min_ram
|
||||||
|
- name: name
|
||||||
|
- owner: owner
|
||||||
|
- protected: protected
|
||||||
|
- schema: schema-image
|
||||||
|
- self: self
|
||||||
|
- size: size
|
||||||
|
- status: status
|
||||||
|
- tags: tags
|
||||||
|
- updated_at: updated_at
|
||||||
|
- virtual_size: virtual_size
|
||||||
|
- visibility: visibility
|
||||||
|
- direct_url: direct_url
|
||||||
|
- locations: locations
|
||||||
|
|
||||||
|
The response may also include additional properties specified as key:value
|
||||||
|
pairs if additional properties were specified in the request.
|
||||||
|
|
||||||
|
Response Example
|
||||||
|
----------------
|
||||||
|
|
||||||
|
.. literalinclude:: samples/image-create-response.json
|
||||||
|
:language: json
|
||||||
|
|
||||||
|
|
||||||
|
Show image details
|
||||||
|
~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
.. rest_method:: GET /v2/images/{image_id}
|
||||||
|
|
||||||
|
Shows details for an image.
|
||||||
|
*(Since Image API v2.0)*
|
||||||
|
|
||||||
|
The response body contains a single image entity.
|
||||||
|
|
||||||
|
Preconditions
|
||||||
|
|
||||||
|
- The image must exist.
|
||||||
|
|
||||||
|
Normal response codes: 200
|
||||||
|
|
||||||
|
Error response codes: 400, 401, 403, 404
|
||||||
|
|
||||||
|
|
||||||
|
Request
|
||||||
|
-------
|
||||||
|
|
||||||
|
.. rest_parameters:: images-parameters.yaml
|
||||||
|
|
||||||
|
- image_id: image_id-in-path
|
||||||
|
|
||||||
|
|
||||||
|
Response Parameters
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
.. rest_parameters:: images-parameters.yaml
|
||||||
|
|
||||||
|
- checksum: checksum
|
||||||
|
- container_format: container_format
|
||||||
|
- created_at: created_at
|
||||||
|
- disk_format: disk_format
|
||||||
|
- file: file
|
||||||
|
- id: id
|
||||||
|
- min_disk: min_disk
|
||||||
|
- min_ram: min_ram
|
||||||
|
- name: name
|
||||||
|
- owner: owner
|
||||||
|
- protected: protected
|
||||||
|
- schema: schema-image
|
||||||
|
- self: self
|
||||||
|
- size: size
|
||||||
|
- status: status
|
||||||
|
- tags: tags
|
||||||
|
- updated_at: updated_at
|
||||||
|
- virtual_size: virtual_size
|
||||||
|
- visibility: visibility
|
||||||
|
- direct_url: direct_url
|
||||||
|
- locations: locations
|
||||||
|
|
||||||
|
The response may also include additional properties specified as key:value
|
||||||
|
pairs if such properties have been added to the image by the owner or an
|
||||||
|
administrator.
|
||||||
|
|
||||||
|
Response Example
|
||||||
|
----------------
|
||||||
|
|
||||||
|
.. literalinclude:: samples/image-show-response.json
|
||||||
|
:language: json
|
||||||
|
|
||||||
|
|
||||||
|
Show images
|
||||||
|
~~~~~~~~~~~
|
||||||
|
|
||||||
|
.. rest_method:: GET /v2/images
|
||||||
|
|
||||||
|
Lists public virtual machine (VM) images.
|
||||||
|
*(Since Image API v2.0)*
|
||||||
|
|
||||||
|
**Pagination**
|
||||||
|
|
||||||
|
Returns a subset of the larger collection of images and a link that you can use
|
||||||
|
to get the next set of images. You should always check for the presence of a
|
||||||
|
``next`` link and use it as the URI in a subsequent HTTP GET request. You
|
||||||
|
should follow this pattern until a ``next`` link is no longer provided.
|
||||||
|
|
||||||
|
The ``next`` link preserves any query parameters that you send in your initial
|
||||||
|
request. You can use the ``first`` link to jump back to the first page of the
|
||||||
|
collection. If you prefer to paginate through images manually, use the
|
||||||
|
``limit`` and ``marker`` parameters.
|
||||||
|
|
||||||
|
**Query Filters**
|
||||||
|
|
||||||
|
The list operation accepts query parameters to filter the response.
|
||||||
|
|
||||||
|
A client can provide direct comparison filters by using most image attributes,
|
||||||
|
such as ``name=Ubuntu``, ``visibility=public``, and so on.
|
||||||
|
|
||||||
|
To filter using image tags, use the filter ``tag`` (note the singular). To
|
||||||
|
filter on multiple tags, include each tag separately in the query. For
|
||||||
|
example, to find images with the tag **ready**, include ``tag=ready`` in your
|
||||||
|
query string. To find images tagged with **ready** and **approved**, include
|
||||||
|
``tag=ready&tag=approved`` in your query string. (Note that only images
|
||||||
|
containing *both* tags will be included in the response.)
|
||||||
|
|
||||||
|
A client cannot use any ``link`` in the json-schema, such as self, file, or
|
||||||
|
schema, to filter the response.
|
||||||
|
|
||||||
|
You can list VM images that have a status of ``active``, ``queued``, or
|
||||||
|
``saving``.
|
||||||
|
|
||||||
|
**The** ``in`` **Operator**
|
||||||
|
|
||||||
|
As a convenience, you may specify several values for any of the following
|
||||||
|
fields by using the ``in`` operator:
|
||||||
|
|
||||||
|
* container_format
|
||||||
|
* disk_format
|
||||||
|
* id
|
||||||
|
* name
|
||||||
|
* status
|
||||||
|
|
||||||
|
For most of these, usage is straight forward. For example, to list images
|
||||||
|
in queued or saving status, use:
|
||||||
|
|
||||||
|
``GET /v2/images?status=in:saving,queued``
|
||||||
|
|
||||||
|
To find images in a particular list of image IDs, use:
|
||||||
|
|
||||||
|
``GET /v2/images?id=in:3afb79c1-131a-4c38-a87c-bc4b801d14e6,2e011209-660f-44b5-baf2-2eb4babae53d``
|
||||||
|
|
||||||
|
Using the ``in`` operator with the ``name`` property of images can be a bit
|
||||||
|
trickier, depending upon how creatively you have named your images. The
|
||||||
|
general rule is that if an image name contains a comma (``,``), you must
|
||||||
|
enclose the entire name in quotation marks (``"``). As usual, you must URL
|
||||||
|
encode any characters that require it.
|
||||||
|
|
||||||
|
For example, to find images named ``glass, darkly`` or ``share me``, you would
|
||||||
|
use the following filter specification:
|
||||||
|
|
||||||
|
``GET v2/images?name=in:"glass,%20darkly",share%20me``
|
||||||
|
|
||||||
|
As with regular filtering by name, you must specify the complete name you are
|
||||||
|
looking for. Thus, for example, the query string ``name=in:glass,share`` will
|
||||||
|
only match images with the exact name ``glass`` or the exact name ``share``.
|
||||||
|
It will not find an image named ``glass, darkly`` or an image named ``share
|
||||||
|
me``.
|
||||||
|
|
||||||
|
**Size Comparison Filters**
|
||||||
|
|
||||||
|
You can use the ``size_min`` and ``size_max`` query parameters to filter images
|
||||||
|
that are greater than or less than the image size. The size, in bytes, is the
|
||||||
|
size of an image on disk.
|
||||||
|
|
||||||
|
For example, to filter the container to include only images that are from 1 to
|
||||||
|
4 MB, set the ``size_min`` query parameter to ``1048576`` and the ``size_max``
|
||||||
|
query parameter to ``4194304``.
|
||||||
|
|
||||||
|
.. _v2-comparison-ops:
|
||||||
|
|
||||||
|
**Time Comparison Filters**
|
||||||
|
|
||||||
|
You can use a *comparison operator* along with the ``created_at`` or
|
||||||
|
``updated_at`` fields to filter your results. Specify the operator first, a
|
||||||
|
colon (``:``) as a separator, and then the time in `ISO 8601 Format
|
||||||
|
<https://en.wikipedia.org/wiki/ISO_8601>`_. Available comparison operators
|
||||||
|
are:
|
||||||
|
|
||||||
|
.. list-table::
|
||||||
|
:header-rows: 1
|
||||||
|
|
||||||
|
* - Operator
|
||||||
|
- Description
|
||||||
|
* - ``gt``
|
||||||
|
- Return results more recent than the specified time.
|
||||||
|
* - ``gte``
|
||||||
|
- Return any results matching the specified time and also any more recent
|
||||||
|
results.
|
||||||
|
* - ``eq``
|
||||||
|
- Return any results matching the specified time exactly.
|
||||||
|
* - ``neq``
|
||||||
|
- Return any results that do not match the specified time.
|
||||||
|
* - ``lt``
|
||||||
|
- Return results older than the specified time.
|
||||||
|
* - ``lte``
|
||||||
|
- Return any results matching the specified time and also any older
|
||||||
|
results.
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
GET v2/images?created_at=gt:2016-04-18T21:38:54Z
|
||||||
|
|
||||||
|
**Sorting**
|
||||||
|
|
||||||
|
You can use query parameters to sort the results of this operation.
|
||||||
|
|
||||||
|
- ``sort_key``. Sorts by an image attribute. Sorts in the natural
|
||||||
|
sorting direction of the image attribute.
|
||||||
|
|
||||||
|
- ``sort_dir``. Sorts in a sort direction.
|
||||||
|
|
||||||
|
- ``sort``. Sorts by one or more sets of attribute and sort
|
||||||
|
direction combinations. If you omit the sort direction in a set,
|
||||||
|
the default is ``desc``.
|
||||||
|
|
||||||
|
To sort the response, use the ``sort_key`` and ``sort_dir`` query
|
||||||
|
parameters:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
GET /v2/images?sort_key=name&sort_dir=asc&sort_key=status&sort_dir=desc
|
||||||
|
|
||||||
|
Alternatively, specify the ``sort`` query parameter:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
GET /v2/images?sort=name:asc,status:desc
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
Although this call has been available since verison 2.0 of this API,
|
||||||
|
it has been enhanced from release to release. The filtering and
|
||||||
|
sorting functionality and syntax described above apply to the most
|
||||||
|
recent release (Newton). Not everything described above will be
|
||||||
|
available in prior releases.
|
||||||
|
|
||||||
|
Normal response codes: 200
|
||||||
|
|
||||||
|
Error response codes: 400, 401, 403
|
||||||
|
|
||||||
|
|
||||||
|
Request
|
||||||
|
-------
|
||||||
|
|
||||||
|
.. rest_parameters:: images-parameters.yaml
|
||||||
|
|
||||||
|
- limit: limit
|
||||||
|
- marker: marker
|
||||||
|
- name: name-in-query
|
||||||
|
- owner: owner-in-query
|
||||||
|
- status: status-in-query
|
||||||
|
- tag: tag-in-query
|
||||||
|
- visibility: visibility-in-query
|
||||||
|
- member_status: member_status-in-query
|
||||||
|
- size_max: size_max
|
||||||
|
- size_min: size_min
|
||||||
|
- created_at: created_at-in-query
|
||||||
|
- updated_at: updated_at-in-query
|
||||||
|
- sort_dir: sort_dir
|
||||||
|
- sort_key: sort_key
|
||||||
|
- sort: sort
|
||||||
|
|
||||||
|
|
||||||
|
Response Parameters
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
.. rest_parameters:: images-parameters.yaml
|
||||||
|
|
||||||
|
- images: images
|
||||||
|
- first: first
|
||||||
|
- next: next
|
||||||
|
- schema: schema-images
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Response Example
|
||||||
|
----------------
|
||||||
|
|
||||||
|
.. literalinclude:: samples/images-list-response.json
|
||||||
|
:language: json
|
||||||
|
|
||||||
|
|
||||||
|
.. _v2-image-update:
|
||||||
|
|
||||||
|
Update an image
|
||||||
|
~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
.. rest_method:: PATCH /v2/images/{image_id}
|
||||||
|
|
||||||
|
Updates an image.
|
||||||
|
*(Since Image API v2.0)*
|
||||||
|
|
||||||
|
Conceptually, you update an image record by patching the JSON representation of
|
||||||
|
the image, passing a request body conforming to one of the following media
|
||||||
|
types:
|
||||||
|
|
||||||
|
- ``application/openstack-images-v2.0-json-patch`` *(deprecated)*
|
||||||
|
- ``application/openstack-images-v2.1-json-patch`` *(since Image API v2.1)*
|
||||||
|
|
||||||
|
Attempting to make a PATCH call using some other media type will provoke a
|
||||||
|
response code of 415 (Unsupported media type).
|
||||||
|
|
||||||
|
The ``application/openstack-images-v2.1-json-patch`` media type provides a
|
||||||
|
useful and compatible subset of the functionality defined in JavaScript Object
|
||||||
|
Notation (JSON) Patch `RFC6902 <http://tools.ietf.org/html/rfc6902>`_, which
|
||||||
|
defines the ``application/json-patch+json`` media type.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
The ``application/openstack-images-v2.0-json-patch`` media type is based on
|
||||||
|
draft 4 of the standard. Its use is deprecated.
|
||||||
|
|
||||||
|
For information about the PATCH method and the available media types, see
|
||||||
|
`Image API v2 HTTP PATCH media types
|
||||||
|
<http://specs.openstack.org/openstack/glance-specs/specs/api/v2
|
||||||
|
/http-patch-image-api-v2.html>`_.
|
||||||
|
|
||||||
|
Attempting to modify some image properties will cause the entire request to
|
||||||
|
fail with a 403 (Forbidden) response code:
|
||||||
|
|
||||||
|
- An attempt to modify any of the "base" image properties that are managed by
|
||||||
|
the Image Service. These are the properties specified as read only in the
|
||||||
|
:ref:`Image Schema <image-schema>`.
|
||||||
|
|
||||||
|
- An attempt to create or modify image properties for which you do not have
|
||||||
|
permission to do so. This depends upon how property protections are
|
||||||
|
configured in the OpenStack cloud in which you are making the call. Consult
|
||||||
|
your cloud's documentation for details.
|
||||||
|
|
||||||
|
Normal response codes: 200
|
||||||
|
|
||||||
|
Error response codes: 400, 401, 403, 404, 413, 415
|
||||||
|
|
||||||
|
|
||||||
|
Request
|
||||||
|
-------
|
||||||
|
|
||||||
|
.. rest_parameters:: images-parameters.yaml
|
||||||
|
|
||||||
|
- Content-Type: Content-Type-patch
|
||||||
|
- image_id: image_id-in-path
|
||||||
|
|
||||||
|
The request body must conform to the
|
||||||
|
``application/openstack-images-v2.1-json-patch`` media type definition (see
|
||||||
|
above).
|
||||||
|
|
||||||
|
|
||||||
|
Request Example
|
||||||
|
---------------
|
||||||
|
|
||||||
|
.. literalinclude:: samples/image-update-request.json
|
||||||
|
:language: json
|
||||||
|
|
||||||
|
|
||||||
|
Response Parameters
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
.. rest_parameters:: images-parameters.yaml
|
||||||
|
|
||||||
|
- checksum: checksum
|
||||||
|
- container_format: container_format
|
||||||
|
- created_at: created_at
|
||||||
|
- disk_format: disk_format
|
||||||
|
- file: file
|
||||||
|
- id: id
|
||||||
|
- min_disk: min_disk
|
||||||
|
- min_ram: min_ram
|
||||||
|
- owner: owner
|
||||||
|
- name: name
|
||||||
|
- protected: protected
|
||||||
|
- schema: schema-image
|
||||||
|
- self: self
|
||||||
|
- size: size
|
||||||
|
- status: status
|
||||||
|
- tags: tags
|
||||||
|
- updated_at: updated_at
|
||||||
|
- visibility: visibility
|
||||||
|
- direct_url: direct_url
|
||||||
|
- locations: locations
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Response Example
|
||||||
|
----------------
|
||||||
|
|
||||||
|
.. literalinclude:: samples/image-update-response.json
|
||||||
|
:language: json
|
||||||
|
|
||||||
|
|
||||||
|
Delete an image
|
||||||
|
~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
.. rest_method:: DELETE /v2/images/{image_id}
|
||||||
|
|
||||||
|
(Since Image API v2.0) Deletes an image.
|
||||||
|
|
||||||
|
You cannot delete images with the ``protected`` attribute set to
|
||||||
|
``true`` (boolean).
|
||||||
|
|
||||||
|
Preconditions
|
||||||
|
|
||||||
|
- You can delete an image in any status except ``deleted``.
|
||||||
|
|
||||||
|
- The ``protected`` attribute of the image cannot be ``true``.
|
||||||
|
|
||||||
|
- You have permission to perform image deletion under the configured image
|
||||||
|
deletion policy.
|
||||||
|
|
||||||
|
Synchronous Postconditions
|
||||||
|
|
||||||
|
- The response is empty and returns the HTTP ``204`` response code.
|
||||||
|
|
||||||
|
- The API deletes the image from the images index.
|
||||||
|
|
||||||
|
- If the image has associated binary image data in the storage backend, the
|
||||||
|
OpenStack Image service deletes the data.
|
||||||
|
|
||||||
|
Normal response codes: 204
|
||||||
|
|
||||||
|
Error response codes: 400, 401, 403, 404, 409
|
||||||
|
|
||||||
|
|
||||||
|
Request
|
||||||
|
-------
|
||||||
|
|
||||||
|
.. rest_parameters:: images-parameters.yaml
|
||||||
|
|
||||||
|
- image_id: image_id-in-path
|
||||||
|
|
||||||
|
|
||||||
|
Deactivate image
|
||||||
|
~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
.. rest_method:: POST /v2/images/{image_id}/actions/deactivate
|
||||||
|
|
||||||
|
Deactivates an image.
|
||||||
|
*(Since Image API v2.3)*
|
||||||
|
|
||||||
|
By default, this operation is restricted to administrators only.
|
||||||
|
|
||||||
|
If you try to download a deactivated image, you will receive a 403 (Forbidden)
|
||||||
|
response code. Additionally, only administrative users can view image
|
||||||
|
locations for deactivated images.
|
||||||
|
|
||||||
|
The deactivate operation returns an error if the image status is
|
||||||
|
not ``active`` or ``deactivated``.
|
||||||
|
|
||||||
|
Preconditions
|
||||||
|
|
||||||
|
- The image must exist.
|
||||||
|
|
||||||
|
Normal response codes: 204
|
||||||
|
|
||||||
|
Error response codes: 400, 403, 404
|
||||||
|
|
||||||
|
|
||||||
|
Request
|
||||||
|
-------
|
||||||
|
|
||||||
|
.. rest_parameters:: images-parameters.yaml
|
||||||
|
|
||||||
|
- image_id: image_id-in-path
|
||||||
|
|
||||||
|
|
||||||
|
Reactivate image
|
||||||
|
~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
.. rest_method:: POST /v2/images/{image_id}/actions/reactivate
|
||||||
|
|
||||||
|
Reactivates an image.
|
||||||
|
*(Since Image API v2.3)*
|
||||||
|
|
||||||
|
By default, this operation is restricted to administrators only.
|
||||||
|
|
||||||
|
The reactivate operation returns an error if the image status is
|
||||||
|
not ``active`` or ``deactivated``.
|
||||||
|
|
||||||
|
Preconditions
|
||||||
|
|
||||||
|
- The image must exist.
|
||||||
|
|
||||||
|
Normal response codes: 204
|
||||||
|
|
||||||
|
Error response codes: 400, 403, 404
|
||||||
|
|
||||||
|
|
||||||
|
Request
|
||||||
|
-------
|
||||||
|
|
||||||
|
.. rest_parameters:: images-parameters.yaml
|
||||||
|
|
||||||
|
- image_id: image_id-in-path
|
587
api-ref/source/v2/images-parameters.yaml
Normal file
587
api-ref/source/v2/images-parameters.yaml
Normal file
@ -0,0 +1,587 @@
|
|||||||
|
# variables in header
|
||||||
|
Content-Length:
|
||||||
|
description: |
|
||||||
|
The length of the body in octets (8-bit bytes)
|
||||||
|
in: header
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
Content-Md5:
|
||||||
|
description: |
|
||||||
|
The MD5 checksum of the body.
|
||||||
|
in: header
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
Content-Range:
|
||||||
|
description: |
|
||||||
|
The content range of image data. For details, see
|
||||||
|
`Hypertext Transfer Protocol (HTTP/1.1): Range Requests
|
||||||
|
<http://tools.ietf.org/html/rfc7233>`_.
|
||||||
|
in: header
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
Content-Type-data:
|
||||||
|
description: |
|
||||||
|
The media type descriptor for the request body. Use
|
||||||
|
``application/octet-stream``
|
||||||
|
in: header
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
Content-Type-data-response:
|
||||||
|
description: |
|
||||||
|
The media type descriptor of the response body, namely
|
||||||
|
``application/octet-stream``
|
||||||
|
in: header
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
Content-Type-json:
|
||||||
|
description: |
|
||||||
|
The media type descriptor for the request body. Use
|
||||||
|
``application/json``.
|
||||||
|
in: header
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
Content-Type-patch:
|
||||||
|
description: |
|
||||||
|
The media type descriptor for the request body. Use
|
||||||
|
``application/openstack-images-v2.1-json-patch``. (You can also use
|
||||||
|
``application/openstack-images-v2.0-json-patch``, but keep in mind that
|
||||||
|
it's deprecated.)
|
||||||
|
in: header
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
Location:
|
||||||
|
description: |
|
||||||
|
The URL to access the image file from the
|
||||||
|
external store.
|
||||||
|
in: header
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
|
||||||
|
# variables in path
|
||||||
|
image_id-in-path:
|
||||||
|
description: |
|
||||||
|
The UUID of the image.
|
||||||
|
in: path
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
member_id-in-path:
|
||||||
|
description: |
|
||||||
|
The ID of the image member. An image member is usually the project (also
|
||||||
|
called the "tenant") with whom the image is shared.
|
||||||
|
in: path
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
tag-in-path:
|
||||||
|
description: |
|
||||||
|
The image tag. A tag is limited to 255 chars in length. You may wish
|
||||||
|
to use characters that can easily be written in a URL.
|
||||||
|
in: path
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
|
||||||
|
# variables in query
|
||||||
|
created_at-in-query:
|
||||||
|
description: |
|
||||||
|
Specify a *comparison filter* based on the date and time when the resource
|
||||||
|
was created. (See :ref:`Time Comparison Filters <v2-comparison-ops>`).
|
||||||
|
|
||||||
|
The date and time stamp format is `ISO 8601
|
||||||
|
<https://en.wikipedia.org/wiki/ISO_8601>`_:
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
CCYY-MM-DDThh:mm:ss±hh:mm
|
||||||
|
|
||||||
|
The ``±hh:mm`` value, if included, is the time zone as an offset
|
||||||
|
from UTC.
|
||||||
|
|
||||||
|
For example, ``2015-08-27T09:49:58-05:00``.
|
||||||
|
|
||||||
|
If you omit the time zone, the UTC time zone is assumed.
|
||||||
|
in: query
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
limit:
|
||||||
|
description: |
|
||||||
|
Requests a page size of items. Returns a number of items up to a limit
|
||||||
|
value. Use the ``limit`` parameter to make an initial limited request and
|
||||||
|
use the ID of the last-seen item from the response as the ``marker``
|
||||||
|
parameter value in a subsequent limited request.
|
||||||
|
in: query
|
||||||
|
required: false
|
||||||
|
type: integer
|
||||||
|
marker:
|
||||||
|
description: |
|
||||||
|
The ID of the last-seen item. Use the ``limit`` parameter to make an
|
||||||
|
initial limited request and use the ID of the last-seen item from the
|
||||||
|
response as the ``marker`` parameter value in a subsequent limited request.
|
||||||
|
in: query
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
member_status-in-query:
|
||||||
|
description: |
|
||||||
|
Filters the response by a member status. A valid value is ``accepted``,
|
||||||
|
``pending``, ``rejected``, or ``all``. Default is ``accepted``.
|
||||||
|
in: query
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
name-in-query:
|
||||||
|
description: |
|
||||||
|
Filters the response by a name, as a string. A valid value is the name of
|
||||||
|
an image.
|
||||||
|
in: query
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
owner-in-query:
|
||||||
|
description: |
|
||||||
|
Filters the response by a project (also called a "tenant") ID. Shows only
|
||||||
|
images that are shared with you by the specified owner.
|
||||||
|
in: query
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
size_max:
|
||||||
|
description: |
|
||||||
|
Filters the response by a maximum image size, in
|
||||||
|
bytes.
|
||||||
|
in: query
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
size_min:
|
||||||
|
description: |
|
||||||
|
Filters the response by a minimum image size, in
|
||||||
|
bytes.
|
||||||
|
in: query
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
sort:
|
||||||
|
description: |
|
||||||
|
Sorts the response by one or more attribute and sort direction
|
||||||
|
combinations. You can also set multiple sort keys and directions.
|
||||||
|
Default direction is ``desc``.
|
||||||
|
|
||||||
|
Use the comma (``,``) character to separate multiple values. For
|
||||||
|
example:
|
||||||
|
|
||||||
|
.. code-block:: json
|
||||||
|
|
||||||
|
GET /v2/images?sort=name:asc,status:desc
|
||||||
|
in: query
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
sort_dir:
|
||||||
|
description: |
|
||||||
|
Sorts the response by a set of one or more sort
|
||||||
|
direction and attribute (``sort_key``) combinations. A valid value
|
||||||
|
for the sort direction is ``asc`` (ascending) or ``desc``
|
||||||
|
(descending). If you omit the sort direction in a set, the default
|
||||||
|
is ``desc``.
|
||||||
|
in: query
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
sort_key:
|
||||||
|
description: |
|
||||||
|
Sorts the response by an attribute, such as
|
||||||
|
``name``, ``id``, or ``updated_at``. Default is ``created_at``.
|
||||||
|
The API uses the natural sorting direction of the ``sort_key``
|
||||||
|
image attribute.
|
||||||
|
in: query
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
status-in-query:
|
||||||
|
description: |
|
||||||
|
Filters the response by an image status.
|
||||||
|
in: query
|
||||||
|
required: false
|
||||||
|
type: integer
|
||||||
|
tag-in-query:
|
||||||
|
description: |
|
||||||
|
Filters the response by the specified tag value. May be repeated, but keep
|
||||||
|
in mind that you're making a conjunctive query, so only images containing
|
||||||
|
*all* the tags specified will appear in the response.
|
||||||
|
in: query
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
updated_at-in-query:
|
||||||
|
description: |
|
||||||
|
Specify a *comparison filter* based on the date and time when the resource
|
||||||
|
was most recently modified. (See :ref:`Time Comparison Filters
|
||||||
|
<v2-comparison-ops>`).
|
||||||
|
|
||||||
|
The date and time stamp format is `ISO 8601
|
||||||
|
<https://en.wikipedia.org/wiki/ISO_8601>`_:
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
CCYY-MM-DDThh:mm:ss±hh:mm
|
||||||
|
|
||||||
|
The ``±hh:mm`` value, if included, is the time zone as an offset
|
||||||
|
from UTC.
|
||||||
|
|
||||||
|
For example, ``2015-08-27T09:49:58-05:00``.
|
||||||
|
|
||||||
|
If you omit the time zone, the UTC time zone is assumed.
|
||||||
|
in: query
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
visibility-in-query:
|
||||||
|
description: |
|
||||||
|
Filters the response by an image visibility value. A valid value is
|
||||||
|
``public``, ``private``, or ``shared``. (Note that if you filter on
|
||||||
|
``shared``, the images included in the response will only be those where
|
||||||
|
your member status is ``accepted`` unless you explicitly include a
|
||||||
|
``member_status`` filter in the request.) If you omit this parameter, the
|
||||||
|
response shows ``public``, ``private``, and those ``shared`` images with a
|
||||||
|
member status of ``accepted``.
|
||||||
|
in: query
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
|
||||||
|
# variables in body
|
||||||
|
checksum:
|
||||||
|
description: |
|
||||||
|
Hash that is used over the image data. The Image
|
||||||
|
service uses this value for verification. The value might be
|
||||||
|
``null`` (JSON null data type).
|
||||||
|
in: body
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
container_format:
|
||||||
|
description: |
|
||||||
|
Format of the image container. A valid value is one of
|
||||||
|
``ami``, ``ari``, ``aki``, ``bare``, ``ovf``, ``ova``, or
|
||||||
|
``docker``. The value might be ``null`` (JSON null data type).
|
||||||
|
in: body
|
||||||
|
required: true
|
||||||
|
type: enum
|
||||||
|
container_format-in-request:
|
||||||
|
description: |
|
||||||
|
Format of the image container. A valid value is one of
|
||||||
|
``ami``, ``ari``, ``aki``, ``bare``, ``ovf``, ``ova``, or
|
||||||
|
``docker``.
|
||||||
|
in: body
|
||||||
|
required: false
|
||||||
|
type: enum
|
||||||
|
created_at:
|
||||||
|
description: |
|
||||||
|
The date and time when the resource was created.
|
||||||
|
|
||||||
|
The date and time stamp format is `ISO 8601
|
||||||
|
<https://en.wikipedia.org/wiki/ISO_8601>`_:
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
CCYY-MM-DDThh:mm:ss±hh:mm
|
||||||
|
|
||||||
|
For example, ``2015-08-27T09:49:58-05:00``.
|
||||||
|
|
||||||
|
The ``±hh:mm`` value, if included, is the time zone as an offset
|
||||||
|
from UTC.
|
||||||
|
in: body
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
direct_url:
|
||||||
|
description: |
|
||||||
|
The URL to access the image file kept in external store. *It is present
|
||||||
|
only if the* ``show_image_direct_url`` *option is* ``true`` *in the Image
|
||||||
|
service's configuration file.* **Because it presents a security risk, this
|
||||||
|
option is disabled by default.**
|
||||||
|
in: body
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
disk_format:
|
||||||
|
description: |
|
||||||
|
The format of the disk. A valid value is ``ami``, ``ari``, ``aki``,
|
||||||
|
``vhd``, ``vmdk``, ``raw``, ``qcow2``, ``vdi``, or ``iso``. The value
|
||||||
|
might be ``null`` (JSON null data type).
|
||||||
|
in: body
|
||||||
|
required: true
|
||||||
|
type: enum
|
||||||
|
disk_format-in-request:
|
||||||
|
description: |
|
||||||
|
The format of the disk. A valid value is ``ami``, ``ari``, ``aki``,
|
||||||
|
``vhd``, ``vmdk``, ``raw``, ``qcow2``, ``vdi``, or ``iso``.
|
||||||
|
in: body
|
||||||
|
required: false
|
||||||
|
type: enum
|
||||||
|
file:
|
||||||
|
description: |
|
||||||
|
The URL for the virtual machine image file.
|
||||||
|
in: body
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
first:
|
||||||
|
description: |
|
||||||
|
The URI for the first page of response.
|
||||||
|
in: body
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
id:
|
||||||
|
description: |
|
||||||
|
A unique, user-defined image UUID, in the format:
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnnn
|
||||||
|
|
||||||
|
Where **n** is a hexadecimal digit from 0 to f, or F.
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
b2173dd3-7ad6-4362-baa6-a68bce3565cb
|
||||||
|
|
||||||
|
If you omit this value, the API generates a UUID for the image.
|
||||||
|
in: body
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
id-in-request:
|
||||||
|
description: |
|
||||||
|
A unique, user-defined image UUID, in the format:
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnnn
|
||||||
|
|
||||||
|
Where **n** is a hexadecimal digit from 0 to f, or F.
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
b2173dd3-7ad6-4362-baa6-a68bce3565cb
|
||||||
|
|
||||||
|
If you omit this value, the API generates a UUID for the image. If you
|
||||||
|
specify a value that has already been assigned, the request fails with
|
||||||
|
a ``409`` response code.
|
||||||
|
in: body
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
image_id-in-body:
|
||||||
|
description: |
|
||||||
|
The UUID of the image.
|
||||||
|
in: body
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
images:
|
||||||
|
description: |
|
||||||
|
A list of *image* objects, as described by the :ref:`Images Schema
|
||||||
|
<images-schema>`.
|
||||||
|
in: body
|
||||||
|
required: true
|
||||||
|
type: array
|
||||||
|
locations:
|
||||||
|
description: |
|
||||||
|
A list of objects, each of which describes an image location. Each object
|
||||||
|
contains a ``url`` key, whose value is a URL specifying a location, and a
|
||||||
|
``metadata`` key, whose value is a dict of key:value pairs containing
|
||||||
|
information appropriate to the use of whatever external store is indicated
|
||||||
|
by the URL. *This list appears only if the* ``show_multiple_locations``
|
||||||
|
*option is set to* ``true`` *in the Image service's configuration file.*
|
||||||
|
**Because it presents a security risk, this option is disabled by
|
||||||
|
default.**
|
||||||
|
in: body
|
||||||
|
required: false
|
||||||
|
type: array
|
||||||
|
member_id:
|
||||||
|
description: |
|
||||||
|
The ID of the image member. An image member is usually a project (also
|
||||||
|
called the "tenant") with whom the image is shared.
|
||||||
|
in: body
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
member_status:
|
||||||
|
description: |
|
||||||
|
The status of this image member. Value is one of ``pending``,
|
||||||
|
``accepted``, ``rejected``.
|
||||||
|
in: body
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
members:
|
||||||
|
description: |
|
||||||
|
A list of *member* objects, as described by the :ref:`Image Members Schema
|
||||||
|
<image-members-schema>`. Each *member* object describes a member with whom
|
||||||
|
this image is being shared.
|
||||||
|
in: body
|
||||||
|
required: true
|
||||||
|
type: array
|
||||||
|
min_disk:
|
||||||
|
description: |
|
||||||
|
Amount of disk space in GB that is required to boot the image.
|
||||||
|
The value might be ``null`` (JSON null data type).
|
||||||
|
in: body
|
||||||
|
required: true
|
||||||
|
type: integer
|
||||||
|
min_disk-in-request:
|
||||||
|
description: |
|
||||||
|
Amount of disk space in GB that is required to boot the image.
|
||||||
|
in: body
|
||||||
|
required: false
|
||||||
|
type: integer
|
||||||
|
min_ram:
|
||||||
|
description: |
|
||||||
|
Amount of RAM in MB that is required to boot the image.
|
||||||
|
The value might be ``null`` (JSON null data type).
|
||||||
|
in: body
|
||||||
|
required: true
|
||||||
|
type: integer
|
||||||
|
min_ram-in-request:
|
||||||
|
description: |
|
||||||
|
Amount of RAM in MB that is required to boot the image.
|
||||||
|
in: body
|
||||||
|
required: false
|
||||||
|
type: integer
|
||||||
|
name:
|
||||||
|
description: |
|
||||||
|
The name of the image. Value might be ``null`` (JSON null data type).
|
||||||
|
in: body
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
name-in-request:
|
||||||
|
description: |
|
||||||
|
The name of the image.
|
||||||
|
in: body
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
next:
|
||||||
|
description: |
|
||||||
|
The URI for the next page of response. Will not be present on the last
|
||||||
|
page of the response.
|
||||||
|
in: body
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
owner:
|
||||||
|
description: |
|
||||||
|
An identifier for the owner of the image, usually the project (also
|
||||||
|
called the "tenant") ID.
|
||||||
|
The value might be ``null`` (JSON null data type).
|
||||||
|
in: body
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
protected:
|
||||||
|
description: |
|
||||||
|
A boolean value that must be ``false`` or the image cannot be deleted.
|
||||||
|
in: body
|
||||||
|
required: true
|
||||||
|
type: boolean
|
||||||
|
protected-in-request:
|
||||||
|
description: |
|
||||||
|
Image protection for deletion. Valid value is ``true`` or ``false``.
|
||||||
|
Default is ``false``.
|
||||||
|
in: body
|
||||||
|
required: false
|
||||||
|
type: boolean
|
||||||
|
schema-image:
|
||||||
|
description: |
|
||||||
|
The URL for the schema describing a virtual machine image.
|
||||||
|
in: body
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
schema-images:
|
||||||
|
description: |
|
||||||
|
The URL for the schema describing a list of images.
|
||||||
|
in: body
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
schema-member:
|
||||||
|
description: |
|
||||||
|
The URL for the schema describing an image member.
|
||||||
|
in: body
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
schema-members:
|
||||||
|
description: |
|
||||||
|
The URL for the schema describing an image member list.
|
||||||
|
in: body
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
self:
|
||||||
|
description: |
|
||||||
|
The URL for the virtual machine image.
|
||||||
|
in: body
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
size:
|
||||||
|
description: |
|
||||||
|
The size of the image data, in bytes. The value
|
||||||
|
might be ``null`` (JSON null data type).
|
||||||
|
in: body
|
||||||
|
required: true
|
||||||
|
type: integer
|
||||||
|
status:
|
||||||
|
description: |
|
||||||
|
The image status.
|
||||||
|
in: body
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
tags:
|
||||||
|
description: |
|
||||||
|
List of tags for this image, possibly an empty list.
|
||||||
|
in: body
|
||||||
|
required: true
|
||||||
|
type: array
|
||||||
|
tags-in-request:
|
||||||
|
description: |
|
||||||
|
List of tags for this image. Each tag is a string of at most 255 chars.
|
||||||
|
The maximum number of tags allowed on an image is set by the operator.
|
||||||
|
in: body
|
||||||
|
required: false
|
||||||
|
type: array
|
||||||
|
updated_at:
|
||||||
|
description: |
|
||||||
|
The date and time when the resource was updated.
|
||||||
|
|
||||||
|
The date and time stamp format is `ISO 8601
|
||||||
|
<https://en.wikipedia.org/wiki/ISO_8601>`_:
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
CCYY-MM-DDThh:mm:ss±hh:mm
|
||||||
|
|
||||||
|
For example, ``2015-08-27T09:49:58-05:00``.
|
||||||
|
|
||||||
|
The ``±hh:mm`` value, if included, is the time zone as an offset
|
||||||
|
from UTC. In the previous example, the offset value is ``-05:00``.
|
||||||
|
|
||||||
|
If the ``updated_at`` date and time stamp is not set, its value is
|
||||||
|
``null``.
|
||||||
|
in: body
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
url:
|
||||||
|
description: |
|
||||||
|
The URL to access the image file kept in external
|
||||||
|
store.
|
||||||
|
in: body
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
value:
|
||||||
|
description: |
|
||||||
|
Value of image property used in add or replace
|
||||||
|
operations expressed in JSON notation. For example, you must
|
||||||
|
enclose strings in quotation marks, and you do not enclose numeric
|
||||||
|
values in quotation marks.
|
||||||
|
in: body
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
virtual_size:
|
||||||
|
description: |
|
||||||
|
The virtual size of the image. The value might
|
||||||
|
be ``null`` (JSON null data type).
|
||||||
|
in: body
|
||||||
|
required: true
|
||||||
|
type: integer
|
||||||
|
visibility:
|
||||||
|
description: |
|
||||||
|
Image visibility, that is, the access permission for the image.
|
||||||
|
in: body
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
visibility-in-request:
|
||||||
|
description: |
|
||||||
|
Visibility for this image. Valid value is ``public`` or ``private``.
|
||||||
|
At most sites, only an administrator can make an image public.
|
||||||
|
Default is ``private``.
|
||||||
|
in: body
|
||||||
|
required: false
|
||||||
|
type: string
|
138
api-ref/source/v2/images-schemas.inc
Normal file
138
api-ref/source/v2/images-schemas.inc
Normal file
@ -0,0 +1,138 @@
|
|||||||
|
.. -*- rst -*-
|
||||||
|
|
||||||
|
.. note: You can get a 400 on a GET if you pass a request body
|
||||||
|
(see router.py)
|
||||||
|
|
||||||
|
Image Schemas
|
||||||
|
*************
|
||||||
|
|
||||||
|
Gets a JSON-schema document that represents the various entities talked
|
||||||
|
about by the Images v2 API.
|
||||||
|
|
||||||
|
.. _images-schema:
|
||||||
|
|
||||||
|
Show images schema
|
||||||
|
~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
.. rest_method:: GET /v2/schemas/images
|
||||||
|
|
||||||
|
*(Since Images v2.0)*
|
||||||
|
|
||||||
|
Shows a JSON schema document that represents an *images* entity.
|
||||||
|
|
||||||
|
An images entity is a container of image entities.
|
||||||
|
|
||||||
|
The following schema is solely an example. Consider only the
|
||||||
|
response to the API call as authoritative.
|
||||||
|
|
||||||
|
Normal response codes: 200
|
||||||
|
|
||||||
|
Error response codes: 400, 401
|
||||||
|
|
||||||
|
|
||||||
|
Request
|
||||||
|
-------
|
||||||
|
|
||||||
|
This operation has no request parameters and does not accept a request body.
|
||||||
|
|
||||||
|
|
||||||
|
Response Example
|
||||||
|
----------------
|
||||||
|
|
||||||
|
.. literalinclude:: samples/schemas-images-list-response.json
|
||||||
|
:language: json
|
||||||
|
|
||||||
|
.. _image-schema:
|
||||||
|
|
||||||
|
Show image schema
|
||||||
|
~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
.. rest_method:: GET /v2/schemas/image
|
||||||
|
|
||||||
|
*(Since Images v2.0)*
|
||||||
|
|
||||||
|
Shows a JSON schema document that represents an *image* entity.
|
||||||
|
|
||||||
|
The following schema is solely an example. Consider only the
|
||||||
|
response to the API call as authoritative.
|
||||||
|
|
||||||
|
Normal response codes: 200
|
||||||
|
|
||||||
|
Error response codes: 400, 401
|
||||||
|
|
||||||
|
|
||||||
|
Request
|
||||||
|
-------
|
||||||
|
|
||||||
|
This operation has no request parameters and does not accept a request body.
|
||||||
|
|
||||||
|
|
||||||
|
Response Example
|
||||||
|
----------------
|
||||||
|
|
||||||
|
.. literalinclude:: samples/schemas-image-show-response.json
|
||||||
|
:language: json
|
||||||
|
|
||||||
|
.. _image-members-schema:
|
||||||
|
|
||||||
|
Show image members schema
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
.. rest_method:: GET /v2/schemas/members
|
||||||
|
|
||||||
|
*(Since Images v2.1)*
|
||||||
|
|
||||||
|
Shows a JSON schema document that represents an *image members* entity.
|
||||||
|
|
||||||
|
An image members entity is a container of image member entities.
|
||||||
|
|
||||||
|
The following schema is solely an example. Consider only the
|
||||||
|
response to the API call as authoritative.
|
||||||
|
|
||||||
|
Normal response codes: 200
|
||||||
|
|
||||||
|
Error response codes: 400, 401
|
||||||
|
|
||||||
|
|
||||||
|
Request
|
||||||
|
-------
|
||||||
|
|
||||||
|
This operation has no request parameters and does not accept a request body.
|
||||||
|
|
||||||
|
|
||||||
|
Response Example
|
||||||
|
----------------
|
||||||
|
|
||||||
|
.. literalinclude:: samples/schemas-image-members-list-response.json
|
||||||
|
:language: json
|
||||||
|
|
||||||
|
.. _image-member-schema:
|
||||||
|
|
||||||
|
Show image member schema
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
.. rest_method:: GET /v2/schemas/member
|
||||||
|
|
||||||
|
*(Since Images v2.1)*
|
||||||
|
|
||||||
|
Shows a JSON schema document that represents an *image member* entity.
|
||||||
|
|
||||||
|
The following schema is solely an example. Consider only the
|
||||||
|
response to the API call as authoritative.
|
||||||
|
|
||||||
|
Normal response codes: 200
|
||||||
|
|
||||||
|
Error response codes: 400, 401
|
||||||
|
|
||||||
|
|
||||||
|
Request
|
||||||
|
-------
|
||||||
|
|
||||||
|
This operation has no request parameters and does not accept a request body.
|
||||||
|
|
||||||
|
|
||||||
|
Response Example
|
||||||
|
----------------
|
||||||
|
|
||||||
|
.. literalinclude:: samples/schemas-image-member-show-response.json
|
||||||
|
:language: json
|
360
api-ref/source/v2/images-sharing-v2.inc
Normal file
360
api-ref/source/v2/images-sharing-v2.inc
Normal file
@ -0,0 +1,360 @@
|
|||||||
|
.. -*- rst -*-
|
||||||
|
|
||||||
|
Sharing
|
||||||
|
*******
|
||||||
|
|
||||||
|
Images may be shared among projects by creating *members* on the image. The
|
||||||
|
following calls allow you to create, list, update, and delete image members.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
An image member is an identifier for a consumer with whom the image is
|
||||||
|
shared. In most OpenStack clouds, where the value of the ``owner`` property
|
||||||
|
of an image is a project ID, the appropriate identifier to use for the
|
||||||
|
``member_id`` is the consumer's project ID (also known as the "tenant ID").
|
||||||
|
In these clouds, image sharing is project-to-project, and all the individual
|
||||||
|
users in the consuming project have access to the image.
|
||||||
|
|
||||||
|
* Some deployments may choose instead to have the identifier of the user who
|
||||||
|
created the image as the value of the ``owner`` property. In such clouds,
|
||||||
|
the appropriate identifier to use for the ``member_id`` is the user ID of
|
||||||
|
the person with whom you want to share the image. In these clouds, image
|
||||||
|
sharing is user-to-user.
|
||||||
|
|
||||||
|
* Note that you, as an image owner, do not have a choice about what value to
|
||||||
|
use for the ``member_id``. If, like most OpenStack clouds, your cloud
|
||||||
|
uses the tenant ID for the image ``owner``, sharing will not work if you
|
||||||
|
use a user ID as the ``member_id`` of an image (and vice-versa).
|
||||||
|
|
||||||
|
* Please consult your cloud's local documentation for details.
|
||||||
|
|
||||||
|
When an image is shared, the member is given immediate access to the image.
|
||||||
|
In order to prevent spamming other users' image lists, a shared image does not
|
||||||
|
appear in a member's image list until the member "accepts" the image.
|
||||||
|
|
||||||
|
Only the image owner may create members. Only an image member may modify his
|
||||||
|
or her member status.
|
||||||
|
|
||||||
|
.. TODO(rosmaita): update the following reference when the "narrative" API
|
||||||
|
docs have a final resting place
|
||||||
|
|
||||||
|
For a conceptual overview of image sharing, including a suggested workflow,
|
||||||
|
please consult `Image API v2 Sharing`_.
|
||||||
|
|
||||||
|
.. _Image API v2 Sharing:
|
||||||
|
http://specs.openstack.org/openstack/glance-specs/specs/api/v2/sharing-image-api-v2.html
|
||||||
|
|
||||||
|
|
||||||
|
Create image member
|
||||||
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
.. rest_method:: POST /v2/images/{image_id}/members
|
||||||
|
|
||||||
|
Adds a tenant ID as an image member.
|
||||||
|
*(Since Image API v2.1)*
|
||||||
|
|
||||||
|
|
||||||
|
Preconditions
|
||||||
|
|
||||||
|
- The image must exist.
|
||||||
|
|
||||||
|
- The image cannot be a public image.
|
||||||
|
|
||||||
|
- You must be the owner of the image.
|
||||||
|
|
||||||
|
Synchronous Postconditions
|
||||||
|
|
||||||
|
- With correct permissions, you can see the member status of the
|
||||||
|
image member as ``pending`` through API calls.
|
||||||
|
|
||||||
|
Troubleshooting
|
||||||
|
|
||||||
|
- Even if you have correct permissions, if the ``visibility``
|
||||||
|
attribute is set to ``public``, the request returns the HTTP
|
||||||
|
``403`` response code. Ensure that you meet the preconditions and
|
||||||
|
run the request again. If the request fails again, review your
|
||||||
|
API request.
|
||||||
|
|
||||||
|
- If the member is already a member for the image, the service
|
||||||
|
returns the ``Conflict (409)`` response code. If you meant to
|
||||||
|
specify a different member, run the request again.
|
||||||
|
|
||||||
|
|
||||||
|
Normal response codes: 200
|
||||||
|
|
||||||
|
Error response codes: 400, 401, 403, 404, 409, 413
|
||||||
|
|
||||||
|
|
||||||
|
Request
|
||||||
|
-------
|
||||||
|
|
||||||
|
.. rest_parameters:: images-parameters.yaml
|
||||||
|
|
||||||
|
- image_id: image_id-in-path
|
||||||
|
- member: member_id
|
||||||
|
|
||||||
|
Request Example
|
||||||
|
---------------
|
||||||
|
|
||||||
|
.. literalinclude:: samples/image-member-create-request.json
|
||||||
|
:language: json
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Response Parameters
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
.. rest_parameters:: images-parameters.yaml
|
||||||
|
|
||||||
|
- created_at: created_at
|
||||||
|
- image_id: image_id-in-body
|
||||||
|
- member_id: member_id
|
||||||
|
- schema: schema-member
|
||||||
|
- status: member_status
|
||||||
|
- updated_at: updated_at
|
||||||
|
|
||||||
|
Response Example
|
||||||
|
----------------
|
||||||
|
|
||||||
|
.. literalinclude:: samples/image-member-create-response.json
|
||||||
|
:language: json
|
||||||
|
|
||||||
|
|
||||||
|
Show image member details
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
.. rest_method:: GET /v2/images/{image_id}/members/{member_id}
|
||||||
|
|
||||||
|
Shows image member details.
|
||||||
|
*(Since Image API v2.1)*
|
||||||
|
|
||||||
|
Response body is a single image member entity.
|
||||||
|
|
||||||
|
Preconditions
|
||||||
|
|
||||||
|
- The image must exist.
|
||||||
|
|
||||||
|
- You must be the owner or the member of the image who's referenced in the
|
||||||
|
call.
|
||||||
|
|
||||||
|
|
||||||
|
Normal response codes: 200
|
||||||
|
|
||||||
|
Error response codes: 400, 401, 404
|
||||||
|
|
||||||
|
|
||||||
|
Request
|
||||||
|
-------
|
||||||
|
|
||||||
|
.. rest_parameters:: images-parameters.yaml
|
||||||
|
|
||||||
|
- image_id: image_id-in-path
|
||||||
|
- member_id: member_id-in-path
|
||||||
|
|
||||||
|
|
||||||
|
Response Parameters
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
.. rest_parameters:: images-parameters.yaml
|
||||||
|
|
||||||
|
- created_at: created_at
|
||||||
|
- image_id: image_id-in-body
|
||||||
|
- member_id: member_id
|
||||||
|
- schema: schema-member
|
||||||
|
- status: member_status
|
||||||
|
- updated_at: updated_at
|
||||||
|
|
||||||
|
|
||||||
|
Response Example
|
||||||
|
----------------
|
||||||
|
|
||||||
|
.. literalinclude:: samples/image-member-details-response.json
|
||||||
|
:language: json
|
||||||
|
|
||||||
|
|
||||||
|
List image members
|
||||||
|
~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
.. rest_method:: GET /v2/images/{image_id}/members
|
||||||
|
|
||||||
|
Lists the tenants that share this image.
|
||||||
|
*(Since Image API v2.1)*
|
||||||
|
|
||||||
|
If the image owner makes this call, the complete member list is
|
||||||
|
returned.
|
||||||
|
|
||||||
|
If a user who is an image member makes this call, the member list
|
||||||
|
contains only information for that user.
|
||||||
|
|
||||||
|
If a user who is not an image member makes this call, the call
|
||||||
|
returns the HTTP ``404`` response code.
|
||||||
|
|
||||||
|
Preconditions
|
||||||
|
|
||||||
|
- The image must exist.
|
||||||
|
|
||||||
|
- You must be the owner or a member of the image.
|
||||||
|
|
||||||
|
|
||||||
|
Normal response codes: 200
|
||||||
|
|
||||||
|
Error response codes: 400, 401, 404
|
||||||
|
|
||||||
|
|
||||||
|
Request
|
||||||
|
-------
|
||||||
|
|
||||||
|
.. rest_parameters:: images-parameters.yaml
|
||||||
|
|
||||||
|
- image_id: image_id-in-path
|
||||||
|
|
||||||
|
|
||||||
|
Response Parameters
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
.. rest_parameters:: images-parameters.yaml
|
||||||
|
|
||||||
|
- members: members
|
||||||
|
- schema: schema-members
|
||||||
|
|
||||||
|
|
||||||
|
Response Example
|
||||||
|
----------------
|
||||||
|
|
||||||
|
.. literalinclude:: samples/image-members-list-response.json
|
||||||
|
:language: json
|
||||||
|
|
||||||
|
|
||||||
|
Update image member
|
||||||
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
.. rest_method:: PUT /v2/images/{image_id}/members/{member_id}
|
||||||
|
|
||||||
|
Sets the status for an image member.
|
||||||
|
*(Since Image API v2.1)*
|
||||||
|
|
||||||
|
This call allows an image member to change his or her *member status*.
|
||||||
|
|
||||||
|
When an image is shared with you, you have immediate access to the image. What
|
||||||
|
updating your member status on the image does for you is that it affects
|
||||||
|
whether the image will appear in your image list response.
|
||||||
|
|
||||||
|
- When an image is shared with you, your member_status is ``pending``. You
|
||||||
|
won't see the image unless you go looking for it, either by making a show
|
||||||
|
image detail request using the image's ID, or by making an image list call
|
||||||
|
specifically looking for a shared image in member status ``pending``. This
|
||||||
|
way, other users cannot "spam" your image list with images you may not want
|
||||||
|
to see.
|
||||||
|
|
||||||
|
- If you want to see a particular shared image in your image list, then you
|
||||||
|
must use this call to change your member status on the image to ``accepted``.
|
||||||
|
|
||||||
|
- The image owner can see what your member status is on an image, but the owner
|
||||||
|
*cannot* change the status. Only you (or an administrator) can do that.
|
||||||
|
|
||||||
|
- There are three member status values: ``pending``, ``accepted``, and
|
||||||
|
``rejected``. The ``pending`` and ``rejected`` statuses are functionally
|
||||||
|
identical. The difference is that ``pending`` indicates to the owner that
|
||||||
|
you haven't updated the image, so perhaps you aren't aware that it's been
|
||||||
|
shared with you. The ``rejected`` status indicates that you are aware that
|
||||||
|
the image exists and you specifically decided that you don't want to see it
|
||||||
|
in your image list response.
|
||||||
|
|
||||||
|
For a more detailed discussion of image sharing, please consult `Image API v2
|
||||||
|
Sharing`_.
|
||||||
|
|
||||||
|
Preconditions
|
||||||
|
|
||||||
|
- The image must exist.
|
||||||
|
|
||||||
|
- You must be the member of the image referenced in the call.
|
||||||
|
|
||||||
|
Synchronous Postconditions
|
||||||
|
|
||||||
|
- If you update the member status to ``accepted`` and have the
|
||||||
|
correct permissions, you see the image in list images responses.
|
||||||
|
|
||||||
|
- With correct permissions, you can make API calls to see the
|
||||||
|
updated member status of the image.
|
||||||
|
|
||||||
|
|
||||||
|
Normal response codes: 200
|
||||||
|
|
||||||
|
Error response codes: 400, 401, 404, 403
|
||||||
|
|
||||||
|
|
||||||
|
Request
|
||||||
|
-------
|
||||||
|
|
||||||
|
.. rest_parameters:: images-parameters.yaml
|
||||||
|
|
||||||
|
- image_id: image_id-in-path
|
||||||
|
- member_id: member_id-in-path
|
||||||
|
- status: member_status
|
||||||
|
|
||||||
|
Request Example
|
||||||
|
---------------
|
||||||
|
|
||||||
|
.. literalinclude:: samples/image-member-update-request.json
|
||||||
|
:language: json
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Response Parameters
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
.. rest_parameters:: images-parameters.yaml
|
||||||
|
|
||||||
|
- created_at: created_at
|
||||||
|
- image_id: image_id-in-body
|
||||||
|
- member_id: member_id
|
||||||
|
- schema: schema-member
|
||||||
|
- status: member_status
|
||||||
|
- updated_at: updated_at
|
||||||
|
|
||||||
|
|
||||||
|
Response Example
|
||||||
|
----------------
|
||||||
|
|
||||||
|
.. literalinclude:: samples/image-member-update-response.json
|
||||||
|
:language: json
|
||||||
|
|
||||||
|
|
||||||
|
Delete image member
|
||||||
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
.. rest_method:: DELETE /v2/images/{image_id}/members/{member_id}
|
||||||
|
|
||||||
|
Deletes a tenant ID from the member list of an image.
|
||||||
|
*(Since Image API v2.1)*
|
||||||
|
|
||||||
|
Preconditions
|
||||||
|
|
||||||
|
- The image must exist.
|
||||||
|
|
||||||
|
- You must be the owner of the image.
|
||||||
|
|
||||||
|
Synchronous Postconditions
|
||||||
|
|
||||||
|
- The API removes the member from the image members.
|
||||||
|
|
||||||
|
Troubleshooting
|
||||||
|
|
||||||
|
- Even if you have correct permissions, if you are not the owner of
|
||||||
|
the image or you specify an incorrect image ID or member ID, the
|
||||||
|
call returns the HTTP ``403`` or ``404`` response code. Ensure
|
||||||
|
that you meet the preconditions and run the request again. If the
|
||||||
|
request fails again, review your API request URI.
|
||||||
|
|
||||||
|
Normal response codes: 204
|
||||||
|
|
||||||
|
Error response codes: 400, 401, 403, 404
|
||||||
|
|
||||||
|
|
||||||
|
Request
|
||||||
|
-------
|
||||||
|
|
||||||
|
.. rest_parameters:: images-parameters.yaml
|
||||||
|
|
||||||
|
- image_id: image_id-in-path
|
||||||
|
- member_id: member_id-in-path
|
52
api-ref/source/v2/images-tags.inc
Normal file
52
api-ref/source/v2/images-tags.inc
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
.. -*- rst -*-
|
||||||
|
|
||||||
|
Image tags
|
||||||
|
**********
|
||||||
|
|
||||||
|
Adds and deletes image tags.
|
||||||
|
|
||||||
|
Image tags may also be modfied by the :ref:`v2-image-update` call.
|
||||||
|
|
||||||
|
|
||||||
|
Add image tag
|
||||||
|
~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
.. rest_method:: PUT /v2/images/{image_id}/tags/{tag}
|
||||||
|
|
||||||
|
Adds a tag to an image.
|
||||||
|
*(Since Image API v2.0)*
|
||||||
|
|
||||||
|
Normal response codes: 204
|
||||||
|
|
||||||
|
Error response codes: 400, 401, 403, 404, 413
|
||||||
|
|
||||||
|
|
||||||
|
Request
|
||||||
|
-------
|
||||||
|
|
||||||
|
.. rest_parameters:: images-parameters.yaml
|
||||||
|
|
||||||
|
- image_id: image_id-in-path
|
||||||
|
- tag: tag-in-path
|
||||||
|
|
||||||
|
|
||||||
|
Delete image tag
|
||||||
|
~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
.. rest_method:: DELETE /v2/images/{image_id}/tags/{tag}
|
||||||
|
|
||||||
|
Deletes a tag from an image.
|
||||||
|
*(Since Image API v2.0)*
|
||||||
|
|
||||||
|
Normal response codes: 204
|
||||||
|
|
||||||
|
Error response codes: 400, 401, 403, 404
|
||||||
|
|
||||||
|
|
||||||
|
Request
|
||||||
|
-------
|
||||||
|
|
||||||
|
.. rest_parameters:: images-parameters.yaml
|
||||||
|
|
||||||
|
- image_id: image_id-in-path
|
||||||
|
- tag: tag-in-path
|
@ -22,5 +22,10 @@ Image Service API v2 (CURRENT)
|
|||||||
|
|
||||||
.. rest_expand_all::
|
.. rest_expand_all::
|
||||||
|
|
||||||
|
.. include:: images-images-v2.inc
|
||||||
|
.. include:: images-sharing-v2.inc
|
||||||
|
.. include:: images-tags.inc
|
||||||
|
.. include:: images-schemas.inc
|
||||||
|
.. include:: images-data.inc
|
||||||
.. include:: tasks.inc
|
.. include:: tasks.inc
|
||||||
.. include:: tasks-schemas.inc
|
.. include:: tasks-schemas.inc
|
||||||
|
6
api-ref/source/v2/samples/image-create-request.json
Normal file
6
api-ref/source/v2/samples/image-create-request.json
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"container_format": "bare",
|
||||||
|
"disk_format": "raw",
|
||||||
|
"name": "Ubuntu",
|
||||||
|
"id": "b2173dd3-7ad6-4362-baa6-a68bce3565cb"
|
||||||
|
}
|
22
api-ref/source/v2/samples/image-create-response.json
Normal file
22
api-ref/source/v2/samples/image-create-response.json
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"status": "queued",
|
||||||
|
"name": "Ubuntu",
|
||||||
|
"tags": [],
|
||||||
|
"container_format": "bare",
|
||||||
|
"created_at": "2015-11-29T22:21:42Z",
|
||||||
|
"size": null,
|
||||||
|
"disk_format": "raw",
|
||||||
|
"updated_at": "2015-11-29T22:21:42Z",
|
||||||
|
"visibility": "private",
|
||||||
|
"locations": [],
|
||||||
|
"self": "/v2/images/b2173dd3-7ad6-4362-baa6-a68bce3565cb",
|
||||||
|
"min_disk": 0,
|
||||||
|
"protected": false,
|
||||||
|
"id": "b2173dd3-7ad6-4362-baa6-a68bce3565cb",
|
||||||
|
"file": "/v2/images/b2173dd3-7ad6-4362-baa6-a68bce3565cb/file",
|
||||||
|
"checksum": null,
|
||||||
|
"owner": "bab7d5c60cd041a0a36f7c4b6e1dd978",
|
||||||
|
"virtual_size": null,
|
||||||
|
"min_ram": 0,
|
||||||
|
"schema": "/v2/schemas/image"
|
||||||
|
}
|
@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"status": "deactivated",
|
||||||
|
"name": "cirros-0.3.2-x86_64-disk",
|
||||||
|
"tags": [],
|
||||||
|
"container_format": "bare",
|
||||||
|
"created_at": "2014-05-05T17:15:10Z",
|
||||||
|
"disk_format": "qcow2",
|
||||||
|
"updated_at": "2014-05-05T17:15:11Z",
|
||||||
|
"visibility": "public",
|
||||||
|
"self": "/v2/images/1bea47ed-f6a9-463b-b423-14b9cca9ad27",
|
||||||
|
"min_disk": 0,
|
||||||
|
"protected": false,
|
||||||
|
"id": "1bea47ed-f6a9-463b-b423-14b9cca9ad27",
|
||||||
|
"file": "/v2/images/1bea47ed-f6a9-463b-b423-14b9cca9ad27/file",
|
||||||
|
"checksum": "64d7c1cd2b6f60c92c14662941cb7913",
|
||||||
|
"owner": "5ef70662f8b34079a6eddb8da9d75fe8",
|
||||||
|
"size": 13167616,
|
||||||
|
"min_ram": 0,
|
||||||
|
"schema": "/v2/schemas/image",
|
||||||
|
"virtual_size": null
|
||||||
|
}
|
@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"member": "8989447062e04a818baf9e073fd04fa7"
|
||||||
|
}
|
@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"created_at": "2013-09-20T19:22:19Z",
|
||||||
|
"image_id": "a96be11e-8536-4910-92cb-de50aa19dfe6",
|
||||||
|
"member_id": "8989447062e04a818baf9e073fd04fa7",
|
||||||
|
"schema": "/v2/schemas/member",
|
||||||
|
"status": "pending",
|
||||||
|
"updated_at": "2013-09-20T19:25:31Z"
|
||||||
|
}
|
@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"status": "pending",
|
||||||
|
"created_at": "2013-11-26T07:21:21Z",
|
||||||
|
"updated_at": "2013-11-26T07:21:21Z",
|
||||||
|
"image_id": "0ae74cc5-5147-4239-9ce2-b0c580f7067e",
|
||||||
|
"member_id": "8989447062e04a818baf9e073fd04fa7",
|
||||||
|
"schema": "/v2/schemas/member"
|
||||||
|
}
|
@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"status": "accepted"
|
||||||
|
}
|
@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"created_at": "2013-09-20T19:22:19Z",
|
||||||
|
"image_id": "a96be11e-8536-4910-92cb-de50aa19dfe6",
|
||||||
|
"member_id": "8989447062e04a818baf9e073fd04fa7",
|
||||||
|
"schema": "/v2/schemas/member",
|
||||||
|
"status": "accepted",
|
||||||
|
"updated_at": "2013-09-20T20:15:31Z"
|
||||||
|
}
|
21
api-ref/source/v2/samples/image-members-list-response.json
Normal file
21
api-ref/source/v2/samples/image-members-list-response.json
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"members": [
|
||||||
|
{
|
||||||
|
"created_at": "2013-10-07T17:58:03Z",
|
||||||
|
"image_id": "dbc999e3-c52f-4200-bedd-3b18fe7f87fe",
|
||||||
|
"member_id": "123456789",
|
||||||
|
"schema": "/v2/schemas/member",
|
||||||
|
"status": "pending",
|
||||||
|
"updated_at": "2013-10-07T17:58:03Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"created_at": "2013-10-07T17:58:55Z",
|
||||||
|
"image_id": "dbc999e3-c52f-4200-bedd-3b18fe7f87fe",
|
||||||
|
"member_id": "987654321",
|
||||||
|
"schema": "/v2/schemas/member",
|
||||||
|
"status": "accepted",
|
||||||
|
"updated_at": "2013-10-08T12:08:55Z"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"schema": "/v2/schemas/members"
|
||||||
|
}
|
21
api-ref/source/v2/samples/image-show-response.json
Normal file
21
api-ref/source/v2/samples/image-show-response.json
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"status": "active",
|
||||||
|
"name": "cirros-0.3.2-x86_64-disk",
|
||||||
|
"tags": [],
|
||||||
|
"container_format": "bare",
|
||||||
|
"created_at": "2014-05-05T17:15:10Z",
|
||||||
|
"disk_format": "qcow2",
|
||||||
|
"updated_at": "2014-05-05T17:15:11Z",
|
||||||
|
"visibility": "public",
|
||||||
|
"self": "/v2/images/1bea47ed-f6a9-463b-b423-14b9cca9ad27",
|
||||||
|
"min_disk": 0,
|
||||||
|
"protected": false,
|
||||||
|
"id": "1bea47ed-f6a9-463b-b423-14b9cca9ad27",
|
||||||
|
"file": "/v2/images/1bea47ed-f6a9-463b-b423-14b9cca9ad27/file",
|
||||||
|
"checksum": "64d7c1cd2b6f60c92c14662941cb7913",
|
||||||
|
"owner": "5ef70662f8b34079a6eddb8da9d75fe8",
|
||||||
|
"size": 13167616,
|
||||||
|
"min_ram": 0,
|
||||||
|
"schema": "/v2/schemas/image",
|
||||||
|
"virtual_size": null
|
||||||
|
}
|
15
api-ref/source/v2/samples/image-update-request.json
Normal file
15
api-ref/source/v2/samples/image-update-request.json
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"op": "replace",
|
||||||
|
"path": "/name",
|
||||||
|
"value": "Fedora 17"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"op": "replace",
|
||||||
|
"path": "/tags",
|
||||||
|
"value": [
|
||||||
|
"fedora",
|
||||||
|
"beefy"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
23
api-ref/source/v2/samples/image-update-response.json
Normal file
23
api-ref/source/v2/samples/image-update-response.json
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
"id": "da3b75d9-3f4a-40e7-8a2c-bfab23927dea",
|
||||||
|
"name": "Fedora 17",
|
||||||
|
"status": "active",
|
||||||
|
"visibility": "public",
|
||||||
|
"size": 2254249,
|
||||||
|
"checksum": "2cec138d7dae2aa59038ef8c9aec2390",
|
||||||
|
"tags": [
|
||||||
|
"fedora",
|
||||||
|
"beefy"
|
||||||
|
],
|
||||||
|
"created_at": "2012-08-10T19:23:50Z",
|
||||||
|
"updated_at": "2012-08-12T11:11:33Z",
|
||||||
|
"self": "/v2/images/da3b75d9-3f4a-40e7-8a2c-bfab23927dea",
|
||||||
|
"file": "/v2/images/da3b75d9-3f4a-40e7-8a2c-bfab23927dea/file",
|
||||||
|
"schema": "/v2/schemas/image",
|
||||||
|
"owner": null,
|
||||||
|
"min_ram": null,
|
||||||
|
"min_disk": null,
|
||||||
|
"disk_format": null,
|
||||||
|
"virtual_size": null,
|
||||||
|
"container_format": null
|
||||||
|
}
|
48
api-ref/source/v2/samples/images-list-response.json
Normal file
48
api-ref/source/v2/samples/images-list-response.json
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
{
|
||||||
|
"images": [
|
||||||
|
{
|
||||||
|
"status": "active",
|
||||||
|
"name": "cirros-0.3.2-x86_64-disk",
|
||||||
|
"tags": [],
|
||||||
|
"container_format": "bare",
|
||||||
|
"created_at": "2014-11-07T17:07:06Z",
|
||||||
|
"disk_format": "qcow2",
|
||||||
|
"updated_at": "2014-11-07T17:19:09Z",
|
||||||
|
"visibility": "public",
|
||||||
|
"self": "/v2/images/1bea47ed-f6a9-463b-b423-14b9cca9ad27",
|
||||||
|
"min_disk": 0,
|
||||||
|
"protected": false,
|
||||||
|
"id": "1bea47ed-f6a9-463b-b423-14b9cca9ad27",
|
||||||
|
"file": "/v2/images/1bea47ed-f6a9-463b-b423-14b9cca9ad27/file",
|
||||||
|
"checksum": "64d7c1cd2b6f60c92c14662941cb7913",
|
||||||
|
"owner": "5ef70662f8b34079a6eddb8da9d75fe8",
|
||||||
|
"size": 13167616,
|
||||||
|
"min_ram": 0,
|
||||||
|
"schema": "/v2/schemas/image",
|
||||||
|
"virtual_size": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"status": "active",
|
||||||
|
"name": "F17-x86_64-cfntools",
|
||||||
|
"tags": [],
|
||||||
|
"container_format": "bare",
|
||||||
|
"created_at": "2014-10-30T08:23:39Z",
|
||||||
|
"disk_format": "qcow2",
|
||||||
|
"updated_at": "2014-11-03T16:40:10Z",
|
||||||
|
"visibility": "public",
|
||||||
|
"self": "/v2/images/781b3762-9469-4cec-b58d-3349e5de4e9c",
|
||||||
|
"min_disk": 0,
|
||||||
|
"protected": false,
|
||||||
|
"id": "781b3762-9469-4cec-b58d-3349e5de4e9c",
|
||||||
|
"file": "/v2/images/781b3762-9469-4cec-b58d-3349e5de4e9c/file",
|
||||||
|
"checksum": "afab0f79bac770d61d24b4d0560b5f70",
|
||||||
|
"owner": "5ef70662f8b34079a6eddb8da9d75fe8",
|
||||||
|
"size": 476704768,
|
||||||
|
"min_ram": 0,
|
||||||
|
"schema": "/v2/schemas/image",
|
||||||
|
"virtual_size": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"schema": "/v2/schemas/images",
|
||||||
|
"first": "/v2/images"
|
||||||
|
}
|
@ -0,0 +1,34 @@
|
|||||||
|
{
|
||||||
|
"name": "member",
|
||||||
|
"properties": {
|
||||||
|
"created_at": {
|
||||||
|
"description": "Date and time of image member creation",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"image_id": {
|
||||||
|
"description": "An identifier for the image",
|
||||||
|
"pattern": "^([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}$",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"member_id": {
|
||||||
|
"description": "An identifier for the image member (tenantId)",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"schema": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"status": {
|
||||||
|
"description": "The status of this image member",
|
||||||
|
"enum": [
|
||||||
|
"pending",
|
||||||
|
"accepted",
|
||||||
|
"rejected"
|
||||||
|
],
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"updated_at": {
|
||||||
|
"description": "Date and time of last modification of image member",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,51 @@
|
|||||||
|
{
|
||||||
|
"links": [
|
||||||
|
{
|
||||||
|
"href": "{schema}",
|
||||||
|
"rel": "describedby"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "members",
|
||||||
|
"properties": {
|
||||||
|
"members": {
|
||||||
|
"items": {
|
||||||
|
"name": "member",
|
||||||
|
"properties": {
|
||||||
|
"created_at": {
|
||||||
|
"description": "Date and time of image member creation",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"image_id": {
|
||||||
|
"description": "An identifier for the image",
|
||||||
|
"pattern": "^([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}$",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"member_id": {
|
||||||
|
"description": "An identifier for the image member (tenantId)",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"schema": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"status": {
|
||||||
|
"description": "The status of this image member",
|
||||||
|
"enum": [
|
||||||
|
"pending",
|
||||||
|
"accepted",
|
||||||
|
"rejected"
|
||||||
|
],
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"updated_at": {
|
||||||
|
"description": "Date and time of last modification of image member",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "array"
|
||||||
|
},
|
||||||
|
"schema": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
216
api-ref/source/v2/samples/schemas-image-show-response.json
Normal file
216
api-ref/source/v2/samples/schemas-image-show-response.json
Normal file
@ -0,0 +1,216 @@
|
|||||||
|
{
|
||||||
|
"additionalProperties": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"links": [
|
||||||
|
{
|
||||||
|
"href": "{self}",
|
||||||
|
"rel": "self"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"href": "{file}",
|
||||||
|
"rel": "enclosure"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"href": "{schema}",
|
||||||
|
"rel": "describedby"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "image",
|
||||||
|
"properties": {
|
||||||
|
"architecture": {
|
||||||
|
"description": "Operating system architecture as specified in http://docs.openstack.org/trunk/openstack-compute/admin/content/adding-images.html",
|
||||||
|
"is_base": false,
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"checksum": {
|
||||||
|
"description": "md5 hash of image contents. (READ-ONLY)",
|
||||||
|
"maxLength": 32,
|
||||||
|
"type": [
|
||||||
|
"null",
|
||||||
|
"string"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"container_format": {
|
||||||
|
"description": "Format of the container",
|
||||||
|
"enum": [
|
||||||
|
null,
|
||||||
|
"ami",
|
||||||
|
"ari",
|
||||||
|
"aki",
|
||||||
|
"bare",
|
||||||
|
"ovf",
|
||||||
|
"ova"
|
||||||
|
],
|
||||||
|
"type": [
|
||||||
|
"null",
|
||||||
|
"string"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"created_at": {
|
||||||
|
"description": "Date and time of image registration (READ-ONLY)",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"direct_url": {
|
||||||
|
"description": "URL to access the image file kept in external store (READ-ONLY)",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"disk_format": {
|
||||||
|
"description": "Format of the disk",
|
||||||
|
"enum": [
|
||||||
|
null,
|
||||||
|
"ami",
|
||||||
|
"ari",
|
||||||
|
"aki",
|
||||||
|
"vhd",
|
||||||
|
"vmdk",
|
||||||
|
"raw",
|
||||||
|
"qcow2",
|
||||||
|
"vdi",
|
||||||
|
"iso"
|
||||||
|
],
|
||||||
|
"type": [
|
||||||
|
"null",
|
||||||
|
"string"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"file": {
|
||||||
|
"description": "(READ-ONLY)",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"id": {
|
||||||
|
"description": "An identifier for the image",
|
||||||
|
"pattern": "^([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}$",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"instance_uuid": {
|
||||||
|
"description": "ID of instance used to create this image.",
|
||||||
|
"is_base": false,
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"kernel_id": {
|
||||||
|
"description": "ID of image stored in Glance that should be used as the kernel when booting an AMI-style image.",
|
||||||
|
"is_base": false,
|
||||||
|
"pattern": "^([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}$",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"locations": {
|
||||||
|
"description": "A set of URLs to access the image file kept in external store",
|
||||||
|
"items": {
|
||||||
|
"properties": {
|
||||||
|
"metadata": {
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
"url": {
|
||||||
|
"maxLength": 255,
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"url",
|
||||||
|
"metadata"
|
||||||
|
],
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
"type": "array"
|
||||||
|
},
|
||||||
|
"min_disk": {
|
||||||
|
"description": "Amount of disk space (in GB) required to boot image.",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"min_ram": {
|
||||||
|
"description": "Amount of ram (in MB) required to boot image.",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"name": {
|
||||||
|
"description": "Descriptive name for the image",
|
||||||
|
"maxLength": 255,
|
||||||
|
"type": [
|
||||||
|
"null",
|
||||||
|
"string"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"os_distro": {
|
||||||
|
"description": "Common name of operating system distribution as specified in http://docs.openstack.org/trunk/openstack-compute/admin/content/adding-images.html",
|
||||||
|
"is_base": false,
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"os_version": {
|
||||||
|
"description": "Operating system version as specified by the distributor",
|
||||||
|
"is_base": false,
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"owner": {
|
||||||
|
"description": "Owner of the image",
|
||||||
|
"maxLength": 255,
|
||||||
|
"type": [
|
||||||
|
"null",
|
||||||
|
"string"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"protected": {
|
||||||
|
"description": "If true, image will not be deletable.",
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"ramdisk_id": {
|
||||||
|
"description": "ID of image stored in Glance that should be used as the ramdisk when booting an AMI-style image.",
|
||||||
|
"is_base": false,
|
||||||
|
"pattern": "^([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}$",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"schema": {
|
||||||
|
"description": "(READ-ONLY)",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"self": {
|
||||||
|
"description": "(READ-ONLY)",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"size": {
|
||||||
|
"description": "Size of image file in bytes (READ-ONLY)",
|
||||||
|
"type": [
|
||||||
|
"null",
|
||||||
|
"integer"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"status": {
|
||||||
|
"description": "Status of the image (READ-ONLY)",
|
||||||
|
"enum": [
|
||||||
|
"queued",
|
||||||
|
"saving",
|
||||||
|
"active",
|
||||||
|
"killed",
|
||||||
|
"deleted",
|
||||||
|
"pending_delete"
|
||||||
|
],
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"tags": {
|
||||||
|
"description": "List of strings related to the image",
|
||||||
|
"items": {
|
||||||
|
"maxLength": 255,
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"type": "array"
|
||||||
|
},
|
||||||
|
"updated_at": {
|
||||||
|
"description": "Date and time of the last image modification (READ-ONLY)",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"virtual_size": {
|
||||||
|
"description": "Virtual size of image in bytes (READ-ONLY)",
|
||||||
|
"type": [
|
||||||
|
"null",
|
||||||
|
"integer"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"visibility": {
|
||||||
|
"description": "Scope of image accessibility",
|
||||||
|
"enum": [
|
||||||
|
"public",
|
||||||
|
"private"
|
||||||
|
],
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
247
api-ref/source/v2/samples/schemas-images-list-response.json
Normal file
247
api-ref/source/v2/samples/schemas-images-list-response.json
Normal file
@ -0,0 +1,247 @@
|
|||||||
|
{
|
||||||
|
"links": [
|
||||||
|
{
|
||||||
|
"href": "{first}",
|
||||||
|
"rel": "first"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"href": "{next}",
|
||||||
|
"rel": "next"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"href": "{schema}",
|
||||||
|
"rel": "describedby"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "images",
|
||||||
|
"properties": {
|
||||||
|
"first": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"images": {
|
||||||
|
"items": {
|
||||||
|
"additionalProperties": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"links": [
|
||||||
|
{
|
||||||
|
"href": "{self}",
|
||||||
|
"rel": "self"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"href": "{file}",
|
||||||
|
"rel": "enclosure"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"href": "{schema}",
|
||||||
|
"rel": "describedby"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "image",
|
||||||
|
"properties": {
|
||||||
|
"architecture": {
|
||||||
|
"description": "Operating system architecture as specified in http://docs.openstack.org/trunk/openstack-compute/admin/content/adding-images.html",
|
||||||
|
"is_base": false,
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"checksum": {
|
||||||
|
"description": "md5 hash of image contents. (READ-ONLY)",
|
||||||
|
"maxLength": 32,
|
||||||
|
"type": [
|
||||||
|
"null",
|
||||||
|
"string"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"container_format": {
|
||||||
|
"description": "Format of the container",
|
||||||
|
"enum": [
|
||||||
|
null,
|
||||||
|
"ami",
|
||||||
|
"ari",
|
||||||
|
"aki",
|
||||||
|
"bare",
|
||||||
|
"ovf",
|
||||||
|
"ova"
|
||||||
|
],
|
||||||
|
"type": [
|
||||||
|
"null",
|
||||||
|
"string"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"created_at": {
|
||||||
|
"description": "Date and time of image registration (READ-ONLY)",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"direct_url": {
|
||||||
|
"description": "URL to access the image file kept in external store (READ-ONLY)",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"disk_format": {
|
||||||
|
"description": "Format of the disk",
|
||||||
|
"enum": [
|
||||||
|
null,
|
||||||
|
"ami",
|
||||||
|
"ari",
|
||||||
|
"aki",
|
||||||
|
"vhd",
|
||||||
|
"vmdk",
|
||||||
|
"raw",
|
||||||
|
"qcow2",
|
||||||
|
"vdi",
|
||||||
|
"iso"
|
||||||
|
],
|
||||||
|
"type": [
|
||||||
|
"null",
|
||||||
|
"string"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"file": {
|
||||||
|
"description": "(READ-ONLY)",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"id": {
|
||||||
|
"description": "An identifier for the image",
|
||||||
|
"pattern": "^([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}$",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"instance_uuid": {
|
||||||
|
"description": "ID of instance used to create this image.",
|
||||||
|
"is_base": false,
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"kernel_id": {
|
||||||
|
"description": "ID of image stored in Glance that should be used as the kernel when booting an AMI-style image.",
|
||||||
|
"is_base": false,
|
||||||
|
"pattern": "^([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}$",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"locations": {
|
||||||
|
"description": "A set of URLs to access the image file kept in external store",
|
||||||
|
"items": {
|
||||||
|
"properties": {
|
||||||
|
"metadata": {
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
"url": {
|
||||||
|
"maxLength": 255,
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"url",
|
||||||
|
"metadata"
|
||||||
|
],
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
"type": "array"
|
||||||
|
},
|
||||||
|
"min_disk": {
|
||||||
|
"description": "Amount of disk space (in GB) required to boot image.",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"min_ram": {
|
||||||
|
"description": "Amount of ram (in MB) required to boot image.",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"name": {
|
||||||
|
"description": "Descriptive name for the image",
|
||||||
|
"maxLength": 255,
|
||||||
|
"type": [
|
||||||
|
"null",
|
||||||
|
"string"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"os_distro": {
|
||||||
|
"description": "Common name of operating system distribution as specified in http://docs.openstack.org/trunk/openstack-compute/admin/content/adding-images.html",
|
||||||
|
"is_base": false,
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"os_version": {
|
||||||
|
"description": "Operating system version as specified by the distributor",
|
||||||
|
"is_base": false,
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"owner": {
|
||||||
|
"description": "Owner of the image",
|
||||||
|
"maxLength": 255,
|
||||||
|
"type": [
|
||||||
|
"null",
|
||||||
|
"string"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"protected": {
|
||||||
|
"description": "If true, image will not be deletable.",
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"ramdisk_id": {
|
||||||
|
"description": "ID of image stored in Glance that should be used as the ramdisk when booting an AMI-style image.",
|
||||||
|
"is_base": false,
|
||||||
|
"pattern": "^([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}$",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"schema": {
|
||||||
|
"description": "(READ-ONLY)",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"self": {
|
||||||
|
"description": "(READ-ONLY)",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"size": {
|
||||||
|
"description": "Size of image file in bytes (READ-ONLY)",
|
||||||
|
"type": [
|
||||||
|
"null",
|
||||||
|
"integer"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"status": {
|
||||||
|
"description": "Status of the image (READ-ONLY)",
|
||||||
|
"enum": [
|
||||||
|
"queued",
|
||||||
|
"saving",
|
||||||
|
"active",
|
||||||
|
"killed",
|
||||||
|
"deleted",
|
||||||
|
"pending_delete"
|
||||||
|
],
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"tags": {
|
||||||
|
"description": "List of strings related to the image",
|
||||||
|
"items": {
|
||||||
|
"maxLength": 255,
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"type": "array"
|
||||||
|
},
|
||||||
|
"updated_at": {
|
||||||
|
"description": "Date and time of the last image modification (READ-ONLY)",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"virtual_size": {
|
||||||
|
"description": "Virtual size of image in bytes (READ-ONLY)",
|
||||||
|
"type": [
|
||||||
|
"null",
|
||||||
|
"integer"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"visibility": {
|
||||||
|
"description": "Scope of image accessibility",
|
||||||
|
"enum": [
|
||||||
|
"public",
|
||||||
|
"private"
|
||||||
|
],
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "array"
|
||||||
|
},
|
||||||
|
"next": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"schema": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user