manila/api-ref/source/shares.inc
Clinton Knight d4a379d083 Implement share revert to snapshot
This commit adds the ability for Manila to revert a
share to the latest available snapshot.

The feature is implemented in the LVM driver, for
testing purposes.

APIImpact
DocImpact
Co-Authored-By: Ben Swartzlander <ben@swartzlander.org>
Co-Authored-By: Andrew Kerr <andrew.kerr@netapp.com>
Implements: blueprint manila-share-revert-to-snapshot
Change-Id: Id497e13070e0003db2db951526a52de6c2182cca
2017-01-17 15:06:01 -05:00

514 lines
15 KiB
ReStructuredText

.. -*- rst -*-
======
Shares
======
A share is a remote, mountable file system. You can mount a share
to and access a share from several hosts by several users at a
time.
You can create a share and associate it with a network, list
shares, and show information for, update, and delete a share.
To create a share, specify one of these supported protocols:
- ``NFS``. Network File System (NFS).
- ``CIFS``. Common Internet File System (CIFS).
- ``GLUSTERFS``. Gluster file system (GlusterFS).
- ``HDFS``. Hadoop Distributed File System (HDFS).
- ``CEPHFS``. Ceph File System (CephFS).
You can also create snapshots of shares. To create a snapshot, you
specify the ID of the share that you want to snapshot.
A share has one of these status values:
**Share statuses**
+----------------------------------------+--------------------------------------------------------+
| Status | Description |
+----------------------------------------+--------------------------------------------------------+
| ``creating`` | The share is being created. |
+----------------------------------------+--------------------------------------------------------+
| ``deleting`` | The share is being deleted. |
+----------------------------------------+--------------------------------------------------------+
| ``error`` | An error occurred during share creation. |
+----------------------------------------+--------------------------------------------------------+
| ``error_deleting`` | An error occurred during share deletion. |
+----------------------------------------+--------------------------------------------------------+
| ``available`` | The share is ready to use. |
+----------------------------------------+--------------------------------------------------------+
| ``manage_starting`` | Share manage started. |
+----------------------------------------+--------------------------------------------------------+
| ``manage_error`` | Share manage failed. |
+----------------------------------------+--------------------------------------------------------+
| ``unmanage_starting`` | Share unmanage started. |
+----------------------------------------+--------------------------------------------------------+
| ``unmanage_error`` | Share cannot be unmanaged. |
+----------------------------------------+--------------------------------------------------------+
| ``unmanaged`` | Share was unmanaged. |
+----------------------------------------+--------------------------------------------------------+
| ``extending`` | The extend, or increase, share size request was issued |
| | successfully. |
+----------------------------------------+--------------------------------------------------------+
| ``extending_error`` | Extend share failed. |
+----------------------------------------+--------------------------------------------------------+
| ``shrinking`` | Share is being shrunk. |
+----------------------------------------+--------------------------------------------------------+
| ``shrinking_error`` | Failed to update quota on share shrinking. |
+----------------------------------------+--------------------------------------------------------+
| ``shrinking_possible_data_loss_error`` | Shrink share failed due to possible data loss. |
+----------------------------------------+--------------------------------------------------------+
| ``reverting`` | Share is being reverted to a snapshot. |
+----------------------------------------+--------------------------------------------------------+
| ``reverting_error`` | Share revert to snapshot failed. |
+----------------------------------------+--------------------------------------------------------+
List shares
===========
.. rest_method:: GET /v2/{tenant_id}/shares
Lists all shares.
Normal response codes: 200
Error response codes: badRequest(400), unauthorized(401), forbidden(403)
Request
-------
.. rest_parameters:: parameters.yaml
- tenant_id: tenant_id_1
- all_tenants: all_tenants
- name: name_5
- status: status_6
- share_server_id: share_server_id
- metadata: metadata
- extra_specs: extra_specs
- share_type_id: share_type_id
- limit: limit
- offset: offset
- sort_key: sort_key
- sort_dir: sort_dir
- snapshot_id: snapshot_id_query
- host: host_1
- share_network_id: share_network_id
- project_id: project_id_6
- is_public: is_public
- consistency_group_id: consistency_group_id_6
Response parameters
-------------------
.. rest_parameters:: parameters.yaml
- id: id_4
- links: links
- name: name
Response example
----------------
.. literalinclude:: samples/shares-list-response.json
:language: javascript
List shares with details
========================
.. rest_method:: GET /v2/{tenant_id}/shares/detail
Lists all shares, with details.
Normal response codes: 202
Error response codes: badRequest(400), unauthorized(401), forbidden(403),
itemNotFound(404), conflict(409)
Request
-------
.. rest_parameters:: parameters.yaml
- tenant_id: tenant_id_1
- all_tenants: all_tenants
- name: name_5
- status: status_6
- share_server_id: share_server_id
- metadata: metadata
- extra_specs: extra_specs
- share_type_id: share_type_id
- limit: limit
- offset: offset
- sort_key: sort_key
- sort_dir: sort_dir
- snapshot_id: snapshot_id_query
- host: host_1
- share_network_id: share_network_id
- project_id: project_id_6
- is_public: is_public
- consistency_group_id: consistency_group_id_6
Response parameters
-------------------
.. rest_parameters:: parameters.yaml
- share_type_name: share_type_name
- links: links
- availability_zone: availability_zone
- share_network_id: share_network_id
- export_locations: export_locations
- share_server_id: share_server_id
- snapshot_id: snapshot_id_share_response
- id: id_4
- size: size_2
- share_type: share_type_1
- export_location: export_location
- consistency_group_id: consistency_group_id_3
- project_id: project_id_4
- metadata: metadata
- status: status
- description: description_5
- host: host_1
- access_rules_status: access_rules_status
- is_public: is_public
- task_state: task_state
- snapshot_support: snapshot_support
- name: name_5
- has_replicas: has_replicas
- replication_type: replication_type
- created_at: created_at_4
- share_proto: share_proto
- volume_type: volume_type
- source_cgsnapshot_member_id: source_cgsnapshot_member_id
Response example
----------------
.. literalinclude:: samples/shares-list-detailed-response.json
:language: javascript
Show share details
==================
.. rest_method:: GET /v2/{tenant_id}/shares/{share_id}
Shows details for a share.
Normal response codes: 200
Error response codes: badRequest(400), unauthorized(401), forbidden(403),
itemNotFound(404)
Request
-------
.. rest_parameters:: parameters.yaml
- share_id: share_id_4
- tenant_id: tenant_id_1
Response parameters
-------------------
.. rest_parameters:: parameters.yaml
- share_type_name: share_type_name
- links: links
- availability_zone: availability_zone_1
- share_network_id: share_network_id
- export_locations: export_locations
- share_server_id: share_server_id
- snapshot_id: snapshot_id_share_response
- id: id_4
- size: size_2
- share_type: share_type_1
- export_location: export_location
- consistency_group_id: consistency_group_id_6
- project_id: project_id_4
- metadata: metadata
- status: status_16
- description: description_5
- host: host_9
- access_rules_status: access_rules_status
- is_public: is_public
- task_state: task_state
- snapshot_support: snapshot_support
- name: name_5
- has_replicas: has_replicas
- replication_type: replication_type
- created_at: created_at_4
- share_proto: share_proto
- volume_type: volume_type
- source_cgsnapshot_member_id: source_cgsnapshot_member_id
Response example
----------------
.. literalinclude:: samples/share-show-response.json
:language: javascript
Create share
============
.. rest_method:: POST /v2/{tenant_id}/shares
Creates a share.
Normal response codes: 200
Error response codes: badRequest(400), unauthorized(401), forbidden(403),
itemNotFound(404), conflict(409), unprocessableEntity(422)
Request
-------
.. rest_parameters:: parameters.yaml
- tenant_id: tenant_id_1
- share_proto: share_proto
- size: size
- name: name_5
- description: description_5
- display_name: display_name
- display_description: display_description
- share_type: share_type
- volume_type: volume_type
- snapshot_id: snapshot_id_request
- is_public: is_public
- metadata: metadata
- share_network_id: share_network_id_2
- consistency_group_id: consistency_group_id_1
- availability_zone: availability_zone
Request example
---------------
.. literalinclude:: samples/share-create-request.json
:language: javascript
Response parameters
-------------------
.. rest_parameters:: parameters.yaml
- id: id_4
- status: status_3
- links: links
- project_id: project_id_6
- share_proto: share_proto
- size: size
- name: name_5
- description: description_5
- display_name: display_name
- display_description: display_description
- share_type: share_type_1
- share_type_name: share_type_name
- has_replicas: has_replicas
- replication_type: replication_type
- volume_type: volume_type
- snapshot_id: snapshot_id_share_response
- is_public: is_public
- metadata: metadata
- share_network_id: share_network_id
- availability_zone: availability_zone_1
- export_location: export_location
- export_locations: export_locations
- host: host_1
- task_state: task_state
- share_server_id: share_server_id
- consistency_group_id: consistency_group_id_6
- snapshot_support: snapshot_support
- source_cgsnapshot_member_id: source_cgsnapshot_member_id
- created_at: created_at_4
Response example
----------------
.. literalinclude:: samples/share-create-response.json
:language: javascript
Manage share
============
.. rest_method:: GET /v2/{tenant_id}/shares/manage
Configures Shared File Systems to manage a share.
This API is available for API versions later than or equal to 2.7
Normal response codes: 200
Error response codes: badRequest(400), unauthorized(401), forbidden(403),
itemNotFound(404), conflict(409), unprocessableEntity(422)
Request
-------
.. rest_parameters:: parameters.yaml
- tenant_id: tenant_id_1
- share: share
- protocol: protocol
- name: name_5
- share_type: share_type_2
- driver_options: driver_options
- export_path: export_path
- service_host: service_host
- is_public: is_public
- description: description_5
Request example
---------------
.. literalinclude:: samples/share-manage-request.json
:language: javascript
Response parameters
-------------------
.. rest_parameters:: parameters.yaml
- share: share
- links: links
- availability_zone: availability_zone_1
- share_network_id: share_network_id
- export_locations: export_locations
- share_server_id: share_server_id
- snapshot_id: snapshot_id_share_response
- id: id_4
- size: size_2
- share_type: share_type_1
- share_type_name: share_type_name
- has_replicas: has_replicas
- replication_type: replication_type
- export_location: export_location
- consistency_group_id: consistency_group_id_6
- project_id: project_id_4
- metadata: metadata
- status: status_8
- description: description_5
- host: host_9
- is_public: is_public
- snapshot_support: snapshot_support
- name: name_5
- created_at: created_at_4
- share_proto: share_proto
- volume_type: volume_type
- source_cgsnapshot_member_id: source_cgsnapshot_member_id
Response example
----------------
.. literalinclude:: samples/share-manage-response.json
:language: javascript
Update share
============
.. rest_method:: PUT /v2/{tenant_id}/shares/{share_id}
Updates a share.
You can update these attributes:
- ``display_name``, which also changes the ``name`` of the share.
- ``display_description``, which also changes the ``description`` of
the share.
- ``is_public``. Changes the level of visibility.
If you try to update other attributes, they retain their previous
values.
Normal response codes: 200
Error response codes: badRequest(400), unauthorized(401), forbidden(403),
itemNotFound(404), unprocessableEntity(422)
Request
-------
.. rest_parameters:: parameters.yaml
- is_public: is_public
- display_name: display_name_3
- display_description: display_description_3
- share_id: share_id_4
- tenant_id: tenant_id_1
Request example
---------------
.. literalinclude:: samples/share-update-request.json
:language: javascript
Response parameters
-------------------
.. rest_parameters:: parameters.yaml
- share_type_name: share_type_name
- links: links
- availability_zone: availability_zone_1
- share_network_id: share_network_id
- export_locations: export_locations
- share_server_id: share_server_id
- snapshot_id: snapshot_id_share_response
- id: id_4
- size: size_2
- share_type: share_type_1
- export_location: export_location
- consistency_group_id: consistency_group_id_6
- project_id: project_id_4
- metadata: metadata
- status: status_16
- description: description_5
- host: host_9
- access_rules_status: access_rules_status
- is_public: is_public
- task_state: task_state
- snapshot_support: snapshot_support
- name: name_5
- has_replicas: has_replicas
- replication_type: replication_type
- created_at: created_at_4
- share_proto: share_proto
- volume_type: volume_type
- source_cgsnapshot_member_id: source_cgsnapshot_member_id
Response example
----------------
.. literalinclude:: samples/share-update-response.json
:language: javascript
Delete share
============
.. rest_method:: DELETE /v2/{tenant_id}/shares/{share_id}
Deletes a share.
Normal response codes: 202
Error response codes: badRequest(400), unauthorized(401), forbidden(403),
itemNotFound(404), conflict(409)
Request
-------
.. rest_parameters:: parameters.yaml
- share_id: share_id
- tenant_id: tenant_id_1
- consistency_group_id: consistency_group_id_3