glance/api-ref/source/v1/images-sharing-v1.inc

151 lines
3.5 KiB
ReStructuredText

.. -*- rst -*-
Sharing
*******
Image sharing provides a means for one tenant (the "producer") to make a
private image available to other tenants (the "consumers"). This ability
can unfortunately be misused to spam tenants' image lists, so these calls
may not be exposed in some deployments. (The Images v2 API has a more
sophisticated sharing scheme that contains an anti-spam provision.)
Add member to image
~~~~~~~~~~~~~~~~~~~
.. rest_method:: PUT /v1/images/{image_id}/members/{member_id}
Adds the tenant whose tenant ID is ``member_id`` as a member of the
image denoted by ``image_id``.
By default, an image member cannot further share the image with other
tenants. This behavior can be overridden by supplying a request body
with the call that specifies ``can_share`` as ``true``.
Thus:
- If you omit the request body, this call adds the specified tenant as a
member of the image with the ``can_share`` attribute set to ``false``.
- If you include a request body, the ``can_share`` attribute will be set
to the appropriate boolean value you have supplied in the request body.
- If the specified tenant is already a member, and there is no request
body, the membership (including the ``can_share`` attribute) remains
unmodified.
- If the specified tenant is already a member and the request includes
a body, the ``can_share`` attribute of the tenant will be set to whatever
value is specified in the request body.
Normal response codes: 204
Error response codes: 404
Request
-------
.. rest_parameters:: parameters.yaml
- image_id: image_id-in-path
- member_id: member_id-in-path
- can_share: can_share
- member_id: member_id
Request Example
---------------
.. literalinclude:: samples/image-member-add-request.json
:language: json
Replace membership list for an image
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. rest_method:: PUT /v1/images/{image_id}/members
Replaces the membership list for an image so that the tenants whose
tenant IDs are listed in the member objects comprising the request body
become all and only the members of the image denoted by ``image_id``.
If the ``can_share`` attribute is omitted for in any member object:
- If the member already exists on the image, that member's ``can_share``
setting remains unchanged.
- If the member did not already exist on the image, that member's
``can_share`` attribute is set to ``false``.
Normal response codes: 204
Error response codes: 404
Request
-------
.. rest_parameters:: parameters.yaml
- image_id: image_id-in-path
- memberships: memberships
Request Example
---------------
.. literalinclude:: samples/image-members-add-request.json
:language: json
Remove member
~~~~~~~~~~~~~
.. rest_method:: DELETE /v1/images/{image_id}/members/{member_id}
Removes a member from an image.
Normal response codes: 204
Error response codes: 404
Request
-------
.. rest_parameters:: parameters.yaml
- image_id: image_id-in-path
- member_id: member_id-in-path
List shared images
~~~~~~~~~~~~~~~~~~
.. rest_method:: GET /v1/shared-images/{owner_id}
Lists the VM images that an owner shares. The ``owner_id`` is the tenant ID
of the image owner.
Normal response codes: 200
Error response codes: 404
Request
-------
.. rest_parameters:: parameters.yaml
- owner_id: owner_id-in-path
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- shared_images: shared_images
Response Example
----------------
.. literalinclude:: samples/shared-images-list-response.json
:language: json