diff --git a/.gitignore b/.gitignore index 88931aeed0..c5deeffcf3 100644 --- a/.gitignore +++ b/.gitignore @@ -34,6 +34,7 @@ tags # Files created by Sphinx build doc/build .autogenerated +api-ref/build # Files created by releasenotes build releasenotes/build diff --git a/api-ref/source/availability-zones.inc b/api-ref/source/availability-zones.inc new file mode 100644 index 0000000000..e229fc75f9 --- /dev/null +++ b/api-ref/source/availability-zones.inc @@ -0,0 +1,48 @@ +.. -*- rst -*- + +================== +Availability zones +================== + +Describes availability zones that the Shared File Systems service is +configured with. + +.. important:: + + For API versions 2.6 and prior, replace ``availability-zones`` in the URLs + with ``os-availability-zone``. + + +List availability zones +======================= + +.. rest_method:: GET /v2/{tenant_id}/availability-zones + +Lists all availability zones. + +Normal response codes: 200 +Error response codes: badRequest(400), unauthorized(401), forbidden(403) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + +Response parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - availability_zones: availability_zones + - id: id_9 + - name: name_6 + - created_at: created_at_7 + - updated_at: updated_at_4 + +Response example +---------------- + +.. literalinclude:: samples/availability-zones-list-response.json + :language: javascript diff --git a/api-ref/source/conf.py b/api-ref/source/conf.py new file mode 100644 index 0000000000..c68d4cd0bf --- /dev/null +++ b/api-ref/source/conf.py @@ -0,0 +1,313 @@ +# -*- coding: utf-8 -*- +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +# manila documentation build configuration file, created by +# sphinx-quickstart on Sat May 7 13:35:27 2016. +# +# This file is execfile()d with the current directory set to its +# containing dir. +# +# Note that not all possible configuration values are present in this +# autogenerated file. +# +# All configuration values have a default; values that are commented out +# serve to show the default. + +import os +import subprocess +import sys +import warnings + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +sys.path.insert(0, os.path.abspath('../../')) +sys.path.insert(0, os.path.abspath('../')) +sys.path.insert(0, os.path.abspath('./')) + +# -- General configuration ------------------------------------------------ + +# If your documentation needs a minimal Sphinx version, state it here. +# needs_sphinx = '1.0' + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ + 'os_api_ref', + 'oslosphinx', +] + +# Add any paths that contain templates here, relative to this directory. +# templates_path = ['_templates'] + +# The suffix(es) of source filenames. +# You can specify multiple suffix as a list of string: +# source_suffix = ['.rst', '.md'] +source_suffix = '.rst' + +# The encoding of source files. +# source_encoding = 'utf-8-sig' + +# The master toctree document. +master_doc = 'index' + +# General information about the project. +project = u'Shared File Systems API Reference' +copyright = u'2010-present, OpenStack Foundation' + +# The version info for the project you're documenting, acts as replacement for +# |version| and |release|, also used in various other places throughout the +# built documents. +# +from manila.version import version_info +# The full version, including alpha/beta/rc tags. +release = version_info.release_string() +# The short X.Y version. +version = version_info.version_string() + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +# +# This is also used if you do content translation via gettext catalogs. +# Usually you set "language" from the command line for these cases. +# language = None + +# There are two options for replacing |today|: either, you set today to some +# non-false value, then it is used: +# today = '' +# Else, today_fmt is used as the format for a strftime call. +# today_fmt = '%B %d, %Y' + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This patterns also effect to html_static_path and html_extra_path +exclude_patterns = [] + +# The reST default role (used for this markup: `text`) to use for all +# documents. +# default_role = None + +# If true, '()' will be appended to :func: etc. cross-reference text. +# add_function_parentheses = True + +# If true, the current module name will be prepended to all description +# unit titles (such as .. function::). +add_module_names = False + +# If true, sectionauthor and moduleauthor directives will be shown in the +# output. They are ignored by default. +show_authors = False + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = 'sphinx' + +# A list of ignored prefixes for module index sorting. +# modindex_common_prefix = [] + +# If true, keep warnings as "system message" paragraphs in the built documents. +# keep_warnings = False + +# If true, `todo` and `todoList` produce output, else they produce nothing. +todo_include_todos = False + + +# -- Options for HTML output ---------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +# html_theme = 'alabaster' + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +# html_theme_options = {} + +# Add any paths that contain custom themes here, relative to this directory. +# html_theme_path = [] + +# The name for this set of Sphinx documents. +# " v documentation" by default. +# html_title = u'Shared File Systems API Reference v2' + +# A shorter title for the navigation bar. Default is the same as html_title. +# html_short_title = None + +# The name of an image file (relative to this directory) to place at the top +# of the sidebar. +# html_logo = None + +# The name of an image file (relative to this directory) to use as a favicon of +# the docs. This file should be a Windows icon file (.ico) being 16x16 or +# 32x32 pixels large. +# html_favicon = None + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +# html_static_path = ['_static'] + +# Add any extra paths that contain custom files (such as robots.txt or +# .htaccess) here, relative to this directory. These files are copied +# directly to the root of the documentation. +# html_extra_path = [] + +# If not None, a 'Last updated on:' timestamp is inserted at every page +# bottom, using the given strftime format. +# The empty string is equivalent to '%b %d, %Y'. +git_cmd = ["git", "log", "--pretty=format:'%ad, commit %h'", "--date=local", + "-n1"] +try: + html_last_updated_fmt = subprocess.Popen( + git_cmd, stdout=subprocess.PIPE).communicate()[0] +except Exception: + warnings.warn('Cannot get last updated time from git repository. ' + 'Not setting "html_last_updated_fmt".') + +# If true, SmartyPants will be used to convert quotes and dashes to +# typographically correct entities. +# html_use_smartypants = True + +# Custom sidebar templates, maps document names to template names. +# html_sidebars = {} + +# Additional templates that should be rendered to pages, maps page names to +# template names. +# html_additional_pages = {} + +# If false, no module index is generated. +# html_domain_indices = True + +# If false, no index is generated. +# html_use_index = True + +# If true, the index is split into individual pages for each letter. +# html_split_index = False + +# If true, links to the reST sources are added to the pages. +# html_show_sourcelink = True + +# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. +# html_show_sphinx = True + +# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. +# html_show_copyright = True + +# If true, an OpenSearch description file will be output, and all pages will +# contain a tag referring to it. The value of this option must be the +# base URL from which the finished HTML is served. +# html_use_opensearch = '' + +# This is the file name suffix for HTML files (e.g. ".xhtml"). +# html_file_suffix = None + +# Language to be used for generating the HTML full-text search index. +# Sphinx supports the following languages: +# 'da', 'de', 'en', 'es', 'fi', 'fr', 'hu', 'it', 'ja' +# 'nl', 'no', 'pt', 'ro', 'ru', 'sv', 'tr', 'zh' +# html_search_language = 'en' + +# A dictionary with options for the search language support, empty by default. +# 'ja' uses this config value. +# 'zh' user can custom change `jieba` dictionary path. +# html_search_options = {'type': 'default'} + +# The name of a javascript file (relative to the configuration directory) that +# implements a search results scorer. If empty, the default will be used. +# html_search_scorer = 'scorer.js' + +# Output file base name for HTML help builder. +htmlhelp_basename = 'maniladoc' + +# -- Options for LaTeX output --------------------------------------------- + +latex_elements = { + # The paper size ('letterpaper' or 'a4paper'). + # 'papersize': 'letterpaper', + + # The font size ('10pt', '11pt' or '12pt'). + # 'pointsize': '10pt', + + # Additional stuff for the LaTeX preamble. + # 'preamble': '', + + # Latex figure (float) alignment + # 'figure_align': 'htbp', +} + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, +# author, documentclass [howto, manual, or own class]). +latex_documents = [ + (master_doc, 'manila.tex', + u'OpenStack Shared File Systems API Documentation', + u'OpenStack Foundation', 'manual'), +] + +# The name of an image file (relative to this directory) to place at the top of +# the title page. +# latex_logo = None + +# For "manual" documents, if this is true, then toplevel headings are parts, +# not chapters. +# latex_use_parts = False + +# If true, show page references after internal links. +# latex_show_pagerefs = False + +# If true, show URL addresses after external links. +# latex_show_urls = False + +# Documents to append as an appendix to all manuals. +# latex_appendices = [] + +# If false, no module index is generated. +# latex_domain_indices = True + + +# -- Options for manual page output --------------------------------------- + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [ + (master_doc, 'manila', u'OpenStack Shared File Systems API Documentation', + u'Openstack Foundation', 1) +] + +# If true, show URL addresses after external links. +# man_show_urls = False + + +# -- Options for Texinfo output ------------------------------------------- + +# Grouping the document tree into Texinfo files. List of tuples +# (source start file, target name, title, author, +# dir menu entry, description, category) +texinfo_documents = [ + (master_doc, 'Manila', u'OpenStack Shared File Systems API Documentation', + u'OpenStack Foundation', 'Manila', 'OpenStack Shared File Systems', + 'Miscellaneous'), +] + +# Documents to append as an appendix to all manuals. +# texinfo_appendices = [] + +# If false, no module index is generated. +# texinfo_domain_indices = True + +# How to display URL addresses: 'footnote', 'no', or 'inline'. +# texinfo_show_urls = 'footnote' + +# If true, do not generate a @detailmenu in the "Top" node's menu. +# texinfo_no_detailmenu = False diff --git a/api-ref/source/consistency-group-snapshots.inc b/api-ref/source/consistency-group-snapshots.inc new file mode 100644 index 0000000000..adf759c3e7 --- /dev/null +++ b/api-ref/source/consistency-group-snapshots.inc @@ -0,0 +1,398 @@ +.. -*- rst -*- + +============================================ +Consistency group snapshots (since API v2.4) +============================================ + +You can create snapshots of consistency groups. To create a +snapshot, you specify the ID of the consistency group that you want +to snapshot. After you create a consistency group snapshot, you can +create a consistency group from it. + +A consistency group snapshot can have member shares. To add a +member share, include the ``consistency_group_id`` parameter in the +create share request. This ID must match the ID of the consistency +group from which the consistency group snapshot was created. Then, +when you use consistency group snapshots to restore data, you can +easily determine which shares belong to a consistency group. + +As an administrator, you can also reset the state of a consistency +group snapshot and ``force-delete`` a consistency group snapshot in any +state. Use the ``policy.json`` file to grant permissions for these +actions to other roles. + +.. note:: + + Consistency group snapshot APIs are part of an ``experimental`` feature + introduced in version 2.4. The APIs may change or be removed in further + versions of the Shared File Systems API. All experimental APIs + require the ``X-OpenStack-Manila-API-Experimental: True`` header to be + sent in the requests. + + +List consistency group snapshots +================================ + +.. rest_method:: GET /v2/{tenant_id}/cgsnapshots + +Lists all consistency group snapshots. + + +Normal response codes: 200 +Error response codes: badRequest(400), unauthorized(401), forbidden(403) + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id_1 + - limit: limit_2 + - offset: offset_2 + - all_tenants: all_tenants_2 + + +Response parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - cgsnapshots: cgsnapshots + - cgsnapshot: cgsnapshot + - id: id_1 + - name: name_8 + - cgsnapshot_links: cgsnapshot_links + + +Response example +---------------- + +.. literalinclude:: samples/consistency-group-snapshot-list-response.json + :language: javascript + + +List consistency group snapshots with details +============================================= + +.. rest_method:: GET /v2/{tenant_id}/cgsnapshots/detail + +Lists all consistency group snapshots with details. + + +Normal response codes: 200 +Error response codes: badRequest(400), unauthorized(401), forbidden(403) + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id_1 + - limit: limit_2 + - offset: offset_2 + - all_tenants: all_tenants_2 + + +Response parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - cgsnapshots: cgsnapshots + - cgsnapshot: cgsnapshot + - id: id_1 + - status: status + - links: links + - project_id: project_id_1 + - consistency_group_id: consistency_group_id_4 + - name: name_8 + - description: description_7 + - created_at: created_at_1 + - cgsnapshot_links: cgsnapshot_links + + +Response example +---------------- + +.. literalinclude:: samples/consistency-group-snapshot-list-detail-response.json + :language: javascript + + +Show consistency group snapshot details +======================================= + +.. rest_method:: GET /v2/{tenant_id}/cgsnapshots/{cgsnapshot_id} + +Shows details for a consistency group snapshot. + +Normal response codes: 200 +Error response codes: badRequest(400), unauthorized(401), forbidden(403), +itemNotFound(404) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id_1 + - cgsnapshot_id: cgsnapshot_id + +Response parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - cgsnapshot: cgsnapshot + - id: id_1 + - status: status + - links: links + - project_id: project_id_1 + - consistency_group_id: consistency_group_id_4 + - name: name_8 + - description: description_7 + - created_at: created_at_1 + - cgsnapshot_links: cgsnapshot_links + +Response example +---------------- + +.. literalinclude:: samples/consistency-group-snapshot-show-response.json + :language: javascript + + +List consistency group snapshot members +======================================= + +.. rest_method:: GET /v2/{tenant_id}/cgsnapshots/{cgsnapshot_id}/members + +Shows information about a consistency group snapshot member. + +Normal response codes: 200 +Error response codes: badRequest(400), unauthorized(401), forbidden(403) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id_1 + - cgsnapshot_id: cgsnapshot_id_1 + - limit: limit_3 + - offset: offset_3 + +Response parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - cgsnapshot_members: cgsnapshot_members + - id: id_10 + - share_id: share_id_1 + - share_type_id: share_type_id_1 + - created_at: created_at_8 + - cgsnapshot_id: cgsnapshot_id_1 + - share_protocol: share_protocol + - project_id: project_id_5 + - size: size_1 + - cgsnapshot_members_links: cgsnapshot_members_links + +Response example +---------------- + +.. literalinclude:: samples/consistency-group-member-list-response.json + :language: javascript + + +Create consistency group snapshot +================================= + +.. rest_method:: POST /v2/{tenant_id}/cgsnapshots + +Creates a consistency group snapshot. + +You can create a consistency group snapshot for a consistency group +in ``available`` state only. + +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 + - consistency_group_id: consistency_group_id + - name: name_1 + - description: description_1 + +Request example +--------------- + +.. literalinclude:: samples/consistency-group-snapshot-create-request.json + :language: javascript + +Response parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - cgsnapshot: cgsnapshot + - id: id_1 + - status: status + - links: links + - project_id: project_id_1 + - consistency_group_id: consistency_group_id_4 + - name: name_8 + - description: description_7 + - created_at: created_at_1 + - cgsnapshot_links: cgsnapshot_links + +Response example +---------------- + +.. literalinclude:: samples/consistency-group-snapshot-create-response.json + :language: javascript + +Reset consistency group snapshot state +====================================== + +.. rest_method:: POST /v2/{tenant_id}/cgsnapshots/{cgsnapshot_id}/action + +Administrator only. Explicitly updates the state of a consistency group +snapshot. + +Administrators can use the ``policy.json`` file to permit other +roles to complete this action. + +Normal response codes: 202 +Error response codes: badRequest(400), unauthorized(401), forbidden(403), +itemNotFound(404) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id_1 + - cgsnapshot_id: cgsnapshot_id + - reset_status: reset_status + - os-reset_status: os-reset_status + - status: status + +Request example +--------------- + +.. literalinclude:: samples/consistency-group-snapshot-reset_status-request.json + :language: javascript + + +Force-delete consistency group snapshot +======================================= + +.. rest_method:: POST /v2/{tenant_id}/cgsnapshots/{cgsnapshot_id}/action + +Administrator only. Force-deletes a consistency group snapshot. + +Use the ``policy.json`` file to grant permissions for this action +to other roles. + +Normal response codes: 202 +Error response codes: badRequest(400), unauthorized(401), forbidden(403), +itemNotFound(404) + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id_1 + - cgsnapshot_id: cgsnapshot_id_1 + - force_delete: force_delete + +Request example +--------------- + +.. literalinclude:: samples/consistency-group-snapshot-force_delete-request.json + :language: javascript + + +Update consistency group snapshot +================================= + +.. rest_method:: PUT /v2/{tenant_id}/cgsnapshots/{cgsnapshot_id} + +Updates a consistency group snapshot. + +You can update only these attributes: + +- ``name``, which changes the consistency group snapshot name. + +- ``description``, which changes the consistency group snapshot + description. + +Normal response codes: 200 +Error response codes: badRequest(400), unauthorized(401), forbidden(403), +itemNotFound(404) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id_1 + - cgsnapshot_id: cgsnapshot_id_1 + - name: name_1 + - description: description_1 + +Request example +--------------- + +.. literalinclude:: samples/consistency-group-snapshot-update-request.json + :language: javascript + +Response parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - cgsnapshot: cgsnapshot + - id: id_1 + - status: status + - links: links + - project_id: project_id_1 + - consistency_group_id: consistency_group_id_4 + - name: name_8 + - description: description_7 + - created_at: created_at_1 + - cgsnapshot_links: cgsnapshot_links + +Response example +---------------- + +.. literalinclude:: samples/consistency-group-snapshot-update-response.json + :language: javascript + + +Delete consistency group snapshot +================================= + +.. rest_method:: DELETE /v2/{tenant_id}/cgsnapshots/{cgsnapshot_id} + +Deletes a consistency group snapshot. + +Normal response codes: 202 +Error response codes: badRequest(400), unauthorized(401), forbidden(403), +itemNotFound(404) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id_1 + - cgsnapshot_id: cgsnapshot_id_1 diff --git a/api-ref/source/consistency-groups.inc b/api-ref/source/consistency-groups.inc new file mode 100644 index 0000000000..000756590d --- /dev/null +++ b/api-ref/source/consistency-groups.inc @@ -0,0 +1,355 @@ +.. -*- rst -*- + +=================================== +Consistency groups (since API v2.4) +=================================== + +Consistency groups enable you to create snapshots at the exact same +point in time from multiple file system shares. For example, a +database might place its tables, logs, and configuration on +separate shares. To restore this database from a previous point in +time, it makes sense to restore the logs, tables, and configuration +together from the exact same point in time. + +As an administrator, you can also reset the state of a consistency +group and force-delete a consistency group in any state. Use the +``policy.json`` file to grant permissions for these actions to +other roles. + +.. note:: + + Consistency groups APIs are part of an ``experimental`` feature introduced + in version 2.4. The APIs may change or be removed in further versions + of the Shared File Systems API. All experimental APIs require the + ``X-OpenStack-Manila-API-Experimental: True`` header to be sent in the + requests. + + +List consistency groups +======================= + +.. rest_method:: GET /v2/{tenant_id}/consistency-groups + +Lists all consistency groups. + +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_1 + - limit: limit_1 + - offset: offset_1 + +Response parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - consistency_groups: consistency_groups + - consistency_group: consistency_group + - id: id_2 + - name: name_7 + - link: link + +Response example +---------------- + +.. literalinclude:: samples/consistency-group-list-response.json + :language: javascript + + +List consistency groups with details +==================================== + +.. rest_method:: GET /v2/{tenant_id}/consistency-groups/detail + +Lists all consistency groups with details. + +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_1 + - limit: limit_1 + - offset: offset_1 + +Response parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - consistency_groups: consistency_groups + - consistency_group: consistency_group + - id: id_2 + - status: status + - links: link + - name: name_7 + - description: description_6 + - source_cgsnapshot_id: source_cgsnapshot_id + - created_at: created_at_1 + - share_network_id: share_network_id + - host: host + - project_id: project_id_2 + - share_server_id: share_server_id + - share_types: share_types_1 + +Response example +---------------- + +.. literalinclude:: samples/consistency-group-list-detail-response.json + :language: javascript + + +Show consistency group details +============================== + +.. rest_method:: GET /v2/{tenant_id}/consistency-groups/{consistency_group_id} + +Shows details for a consistency group. + +Normal response codes: 200 +Error response codes: badRequest(400), unauthorized(401), forbidden(403), +itemNotFound(404) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id_1 + - consistency_group_id: consistency_group_id_7 + +Response parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - consistency_group: consistency_group + - id: id_2 + - status: status + - links: link + - name: name_7 + - description: description_6 + - source_cgsnapshot_id: source_cgsnapshot_id + - created_at: created_at_1 + - share_network_id: share_network_id + - host: host + - project_id: project_id_2 + - share_server_id: share_server_id + - share_types: share_types_1 + +Response example +---------------- + +.. literalinclude:: samples/consistency-group-show-response.json + :language: javascript + + +Create consistency group +======================== + +.. rest_method:: POST /v2/{tenant_id}/consistency-groups + +Creates a consistency group. + + +Normal response codes: 202 +Error response codes: badRequest(400), unauthorized(401), forbidden(403), +conflict(409) + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id_1 + - share_types: share_types + - name: name_2 + - description: description_2 + - share_network_id: share_network_id_1 + - source_cgsnapshot_id: source_cgsnapshot_id + +Request example +--------------- + +.. literalinclude:: samples/consistency-group-create-request.json + :language: javascript + + +Response parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - consistency_group: consistency_group + - id: id_2 + - status: status + - links: link + - name: name_7 + - description: description_6 + - source_cgsnapshot_id: source_cgsnapshot_id + - created_at: created_at_1 + - share_network_id: share_network_id + - host: host + - project_id: project_id_2 + - share_server_id: share_server_id + - share_types: share_types_1 + + +Response example +---------------- + +.. literalinclude:: samples/consistency-group-create-response.json + :language: javascript + + +Update consistency group +======================== + +.. rest_method:: PUT /v2/{tenant_id}/consistency-groups/{consistency_group_id} + +Updates a consistency group. + +You can update only these attributes: + +- ``name``, which changes the consistency group name. + +- ``description``, which changes the consistency group description. + +Normal response codes: 200 +Error response codes: badRequest(400), unauthorized(401), forbidden(403), +itemNotFound(404) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id_1 + - consistency_group_id: consistency_group_id_7 + - name: name_2 + - description: description_2 + +Request example +--------------- + +.. literalinclude:: samples/consistency-group-update-request.json + :language: javascript + +Response parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - consistency_group: consistency_group + - id: id_2 + - status: status + - links: link + - name: name_7 + - description: description_6 + - source_cgsnapshot_id: source_cgsnapshot_id + - created_at: created_at_1 + - share_network_id: share_network_id + - host: host + - project_id: project_id_2 + - share_server_id: share_server_id + - share_types: share_types_1 + +Response example +---------------- + +.. literalinclude:: samples/consistency-group-update-response.json + :language: javascript + + +Reset consistency group state +============================= + +.. rest_method:: POST /v2/{tenant_id}/consistency-groups/{consistency_group_id}/action + +Administrator only. Explicitly updates the state of a consistency group. + +Use the ``policy.json`` file to grant permissions for this action +to other roles. + +Normal response codes: 202 +Error response codes: badRequest(400), unauthorized(401), forbidden(403), +itemNotFound(404) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id_1 + - consistency_group_id: consistency_group_id_7 + - reset_status: reset_status + - os-reset_status: os-reset_status + - status: status + +Request example +--------------- + +.. literalinclude:: samples/consistency-group-reset_status-request.json + :language: javascript + + +Force-delete consistency group +============================== + +.. rest_method:: POST /v2/{tenant_id}/consistency-groups/{consistency_group_id}/action + +Administrator only. Force-deletes a consistency group. + +Use the ``policy.json`` file to grant permissions for this action +to other roles. + +Normal response codes: 202 +Error response codes: badRequest(400), unauthorized(401), forbidden(403), +itemNotFound(404) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id_1 + - consistency_group_id: consistency_group_id_7 + - os-force_delete: os-force_delete + - force_delete: force_delete + +Request example +--------------- + +.. literalinclude:: samples/consistency-group-force_delete-request.json + :language: javascript + +Delete consistency group +======================== + +.. rest_method:: DELETE /v2/{tenant_id}/consistency-groups/{consistency_group_id} + +Deletes a consistency group. + +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 + - consistency_group_id: consistency_group_id_7 diff --git a/api-ref/source/extensions.inc b/api-ref/source/extensions.inc new file mode 100644 index 0000000000..b642b7ca29 --- /dev/null +++ b/api-ref/source/extensions.inc @@ -0,0 +1,42 @@ +.. -*- rst -*- + +============== +API extensions +============== + +Lists available Shared File Systems API extensions. + + +List extensions +=============== + +.. rest_method:: GET /v2/{tenant_id}/extensions + +Lists all extensions. + +Normal response codes: 200 +Error response codes: badRequest(400), unauthorized(401), forbidden(403) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id_1 + +Response parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - name: name_10 + - links: links_2 + - description: description_8 + - alias: alias + - updated: updated + +Response example +---------------- + +.. literalinclude:: samples/extensions-list-response.json + :language: javascript diff --git a/api-ref/source/index.rst b/api-ref/source/index.rst new file mode 100644 index 0000000000..393bb31f57 --- /dev/null +++ b/api-ref/source/index.rst @@ -0,0 +1,37 @@ +:tocdepth: 2 + +======================= +Shared File Systems API +======================= + +.. rest_expand_all:: + +.. include:: versions.inc +.. include:: extensions.inc +.. include:: limits.inc +.. include:: shares.inc +.. include:: share-export-locations.inc +.. include:: share-metadata.inc +.. include:: share-actions.inc +.. include:: snapshots.inc +.. include:: share-networks.inc +.. include:: security-services.inc +.. include:: share-servers.inc +.. include:: share-instances.inc +.. include:: share-instance-export-locations.inc +.. include:: share-types.inc +.. include:: scheduler-stats.inc +.. include:: services.inc +.. include:: availability-zones.inc +.. include:: os-share-manage.inc +.. include:: quota-sets.inc + +====================================== +Shared File Systems API (EXPERIMENTAL) +====================================== + +.. rest_expand_all:: + +.. include:: share-migration.inc +.. include:: consistency-groups.inc +.. include:: consistency-group-snapshots.inc diff --git a/api-ref/source/limits.inc b/api-ref/source/limits.inc new file mode 100644 index 0000000000..7c9e4c251b --- /dev/null +++ b/api-ref/source/limits.inc @@ -0,0 +1,77 @@ +.. -*- rst -*- + +====== +Limits +====== + +Limits are the resource limitations that are allowed for each +tenant (project). An administrator can configure limits in the +``manila.conf`` file. + +Users can query their rate and absolute limits. The absolute limits +contain information about: + +- Total maximum share memory, in GBs. + +- Number of share-networks. + +- Number of share-snapshots. + +- Number of shares. + +- Shares and total used memory, in GBs. + +- Snapshots and total used memory, in GBs. + +Rate limits control the frequency at which users can issue specific +API requests. Administrators use rate limiting to configure limits +on the type and number of API calls that can be made in a specific +time interval. For example, a rate limit can control the number of +GET requests that can be processed during a one-minute period. + + +List share limits +================= + +.. rest_method:: GET /v2/{tenant_id}/limits + +Lists share limits. + +Normal response codes: 200 +Error response codes: badRequest(400), unauthorized(401), forbidden(403) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id_1 + +Response parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - maxTotalShareGigabytes: maxTotalShareGigabytes + - maxTotalSnapshotGigabytes: maxTotalSnapshotGigabytes + - maxTotalShares: maxTotalShares + - maxTotalShareSnapshots: maxTotalShareSnapshots + - maxTotalShareNetworks: maxTotalShareNetworks + - totalSharesUsed: totalSharesUsed + - totalShareSnapshotsUsed: totalShareSnapshotsUsed + - totalShareNetworksUsed: totalShareNetworksUsed + - totalShareGigabytesUsed: totalShareGigabytesUsed + - totalSnapshotGigabytesUsed: totalSnapshotGigabytesUsed + - uri: uri + - regex: regex + - value: value + - verb: verb + - remaining: remaining + - unit: unit + - next-available: next-available + +Response example +---------------- + +.. literalinclude:: samples/limits-response.json + :language: javascript diff --git a/api-ref/source/os-share-manage.inc b/api-ref/source/os-share-manage.inc new file mode 100644 index 0000000000..e8f3d1270b --- /dev/null +++ b/api-ref/source/os-share-manage.inc @@ -0,0 +1,126 @@ +.. -*- rst -*- + +========================== +Manage and unmanage shares +========================== + +Configures Shared File Systems to manage or unmanage a share. + + +Manage share +============ + +.. rest_method:: POST /v2/{tenant_id}/os-share-manage + +**Minimum Supported API Version**: 1.0, 2.0 +**Last supported API Version**: 2.6 + +Use this API to bring a share under the management of the Shared File +Systems service. + +Administrator only. Use the ``policy.json`` file to grant permissions for this +action to other roles. + +This API was removed in API version 2.7; please see share actions for the +new version of the API to utilize this feature. + +Normal response codes: 200 +Error response codes: badRequest(400), unauthorized(401), forbidden(403), +itemNotFound(404), conflict(409) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id_1 + - share: share + - protocol: protocol + - name: name_5 + - display_name: display_name + - share_type: share_type_2 + - driver_options: driver_options + - export_path: export_path + - service_host: service_host + - is_public: is_public + - description: description_5 + - display_description: display_description + +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_3 + - 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_5 + - project_id: project_id_8 + - metadata: metadata + - status: status_8 + - description: description_5 + - host: host_7 + - 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 + + +Unmanage share +============== + +.. rest_method:: POST /v2/{tenant_id}/os-share-unmanage/{share_id}/unmanage + +**Minimum Supported API Version**: 1.0, 2.0 +**Last supported API Version**: 2.6 + +Use this API to remove a share from the management of the Shared File +Systems service. + +Administrator only. Use the ``policy.json`` file to grant permissions for this +action to other roles. + +Share unmanage operation is not supported for shares that are created on top +of share servers (created with share networks). You should remove any +snapshots and share replicas before attempting to unmanage a share. + +This API was removed in API version 2.7; please see share actions for the +new version of the API to utilize this feature. + +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 + - share_id: share_id diff --git a/api-ref/source/parameters.yaml b/api-ref/source/parameters.yaml new file mode 100644 index 0000000000..f4d03b42a5 --- /dev/null +++ b/api-ref/source/parameters.yaml @@ -0,0 +1,2936 @@ +# variables in header +#{} + +# variables in path +api_version: + in: path + required: true + type: string + description: > + The API version as returned in the links from the ``GET /`` call. +cgsnapshot_id: + description: | + The UUID of the consistency group snapshot. + in: path + required: false + type: string +cgsnapshot_id_1: + description: | + The UUID of the consistency group snapshot. + in: path + required: true + type: string +consistency_group_id_2: + description: | + The UUID of the consistency group. + in: path + required: false + type: string +consistency_group_id_7: + description: | + The UUID of the consistency group. + in: path + required: true + type: string +export_location_id: + description: | + The UUID of the export location. + in: path + required: false + type: string +security_service_id_1: + description: | + The UUID of the security service. + in: path + required: false + type: string +share_id: + description: | + The UUID of the share. + in: path + required: true + type: string +share_id_3: + description: | + The ID of the share. + in: path + required: false + type: string +share_instance_id: + description: | + The UUID of the share instance. + in: path + required: true + type: string +share_network_id: + description: | + The UUID of the share network. + in: path + required: true + type: string +share_server_id_1: + description: | + The UUID of the share server. + in: path + required: true + type: string +share_type_id: + description: | + The UUID of the share type. + in: path + required: true + type: string +snapshot_id_1: + description: | + The UUID of the snapshot. + in: path + required: true + type: string +tenant_id: + description: | + The UUID for the tenant for which you want to + show, update, or delete quotas. This ID is different from the + first tenant ID that you specify in the URI: That ID is for the + administrative tenant. + in: path + required: true + type: string +tenant_id_1: + description: | + The tenant ID in a multi-tenancy cloud. + in: path + required: true + type: string + +# variables in query +all_tenants: + description: | + (Admin only). Defines whether to list shares for + all tenants. Set to ``1`` to list shares for all tenants. Set to + ``0`` to list shares only for the current tenant. + in: query + required: false + type: boolean +all_tenants_1: + description: | + (Admin only). Defines whether to list consistency groups for + all tenants. Set to ``1`` to list consistency groups for all + tenants. Set to ``0`` to list consistency groups only for the + current tenant. + in: query + required: false + type: boolean +all_tenants_2: + description: | + (Admin only). Defines whether to list consistency group snapshots + for all tenants. Set to ``1`` to list consistency groups for all + tenants. Set to ``0`` to list consistency groups only for the + current tenant. + in: query + required: false + type: boolean +backend_1: + description: | + The name of the back end. + in: query + required: false + type: string +binary_3: + description: | + The service binary name. Default is the base name + of the executable. + in: query + required: false + type: string +capabilities_1: + description: | + The capabilities for the storage back end. + in: query + required: false + type: string +consistency_group_id_3: + description: | + (Since API v2.4) The UUID of the consistency + group where the share was created. You can omit this parameter if + the share was created without a consistency group. + in: query + required: false + type: string +consistency_group_id_5: + description: | + (Since API v2.4) The UUID of the consistency + group where the share was created. + in: query + required: false + type: string +extra_specs_1: + description: | + The extra specifications as a set of one or more + key-value pairs. In each pair, the key is the name of the extra + specification and the value is the share type that was used to + create the share. + in: query + required: false + type: string +host_11: + description: | + The host name for the back end. + in: query + required: false + type: string +host_12: + description: | + The host name. + in: query + required: false + type: string +host_7: + description: | + The share host name. + in: query + required: false + type: string +limit: + description: | + The maximum number of shares to return. + in: query + required: false + type: integer +limit_1: + description: | + The maximum number of consistency groups to return. + in: query + required: false + type: integer +limit_2: + description: | + The maximum number of consistency groups snapshots + to return. + in: query + required: false + type: integer +limit_3: + description: | + The maximum number of consistency groups snapshot + members to return. + in: query + required: false + type: integer +media_types: + description: | + Media types supported by the API. + in: query + required: false + type: object +metadata_1: + description: | + One or more metadata key-value pairs, as a + dictionary of strings. + in: query + required: false + type: object +name_13: + description: | + The share name. + in: query + required: false + type: string +offset: + description: | + The offset to define start point of share + listing. + in: query + required: false + type: integer +offset_1: + description: | + The offset to define start point of consistency + group listing. + in: query + required: false + type: integer +offset_2: + description: | + The offset to define start point of consistency + group snapshot listing. + in: query + required: false + type: integer +offset_3: + description: | + The offset to define start point of consistency + group snapshot member listing. + in: query + required: false + type: integer +pool_1: + description: | + The pool name for the back end. + in: query + required: false + type: string +project_id_6: + description: | + The UUID of the project in which the share was + created. Useful with ``all_tenants`` parameter. + in: query + required: false + type: string +share_network_id_5: + description: | + The UUID of the share network. + in: query + required: false + type: string +share_server_id_2: + description: | + The UUID of the share server. + in: query + required: false + type: string +share_type_id_2: + description: | + (Since API v2.6) The UUID of the share type. + in: query + required: false + type: string +snapshot_id_2: + description: | + The UUID of the snapshot that was used to create + the share. + in: query + required: false + type: string +sort_dir: + description: | + The direction to sort a list of shares. A valid + value is ``asc``, or ``desc``. + in: query + required: false + type: string +sort_key: + description: | + The key to sort a list of shares. A valid value + is ``id``, ``status``, ``size``, ``host``, ``share_proto``, + ``export_location``, ``availability_zone``, ``user_id``, + ``project_id``, ``created_at``, ``updated_at``, ``display_name``, + ``name``, ``share_type_id``, ``share_type``, ``share_network_id``, + ``share_network``, ``snapshot_id``, or ``snapshot``. + in: query + required: false + type: string +state_2: + description: | + The current state of the service. A valid value + is ``up`` or ``down``. + in: query + required: false + type: string +status_17: + description: | + The service status, which is ``enabled`` or + ``disabled``. + in: query + required: false + type: string +status_6: + description: | + Filters by a share status. A valid value is + ``creating``, ``error``, ``available``, ``deleting``, + ``error_deleting``, ``manage_starting``, ``manage_error``, + ``unmanage_starting``, ``unmanage_error``, ``unmanaged``, + ``extending``, ``extending_error``, ``shrinking``, + ``shrinking_error``, or ``shrinking_possible_data_loss_error``. + in: query + required: false + type: string +user_id_1: + description: | + The UUID of the user. If you specify this query parameter, + you update the quotas for this user in the tenant. + If you omit this parameter, you update the quotas for the project. + in: query + required: false + type: string +zone_1: + description: | + The availability zone. + in: query + required: false + type: string + +# variables in body +access: + description: | + The ``access`` object. + in: body + required: true + type: object +access_id: + description: | + The UUID of the access rule to which access is + granted. + in: body + required: true + type: string +access_level: + description: | + The access level to the share. To grant or deny + access to a share, you specify one of the following share access + levels: - ``rw``. Read and write (RW) access. - ``ro``. Read- + only (RO) access. + in: body + required: true + type: string +access_level_1: + description: | + The share access level. A valid value is either: + - ``rw``. Read and write (RW) access. - ``ro``. Read-only (RO) + access. + in: body + required: true + type: string +access_level_2: + description: | + The share access level. + in: body + required: true + type: string +access_list: + description: | + The object of the access rule. To list access + rules, set this value to ``null``. + in: body + required: true + type: string +access_rules_status: + description: | + (Since API v2.10) The share instance access rules + status. Valid value are ``active``, ``error``, and + ``out_of_sync``. + in: body + required: true + type: string +access_rules_status_1: + description: | + (Since API v2.10) The share access rules status. + Valid values are ``active``, ``error``, and ``out_of_sync``. + in: body + required: true + type: string +access_to: + description: | + The value that defines the access. The back end + grants or denies the access to it. A valid value is one of these + values: - ``ip``. Authenticates an instance through its IP + address. A valid format is ``XX.XX.XX.XX`` or + ``XX.XX.XX.XX/XX``. For example ``0.0.0.0/0``. - ``cert``. + Authenticates an instance through a TLS certificate. Specify the + TLS identity as the IDENTKEY. A valid value is any string up to + 64 characters long in the common name (CN) of the certificate. + The meaning of a string depends on its interpretation. - + ``user``. Authenticates by a user or group name. A valid value is + an alphanumeric string that can contain some special characters + and is from 4 to 32 characters long. + in: body + required: true + type: string +access_to_1: + description: | + The access that the back end grants or denies. A + valid value for the share access rule type is one of these values: + - ``ip``. Authenticates an instance through its IP address. A + valid format is ``XX.XX.XX.XX`` or ``XX.XX.XX.XX/XX``. For + example ``0.0.0.0/0``. - ``cert``. Authenticates an instance + through a TLS certificate. Specify the TLS identity as the + IDENTKEY. A valid value is any string up to 64 characters long + in the common name (CN) of the certificate. The meaning of a + string depends on its interpretation. - ``user``. Authenticates + by a user or group name. A valid value is an alphanumeric string + that can contain some special characters and is from 4 to 32 + characters long. + in: body + required: true + type: string +access_type: + description: | + The access rule type. A valid value for the + share access rule type is one of the following values: - ``ip``. + Authenticates an instance through its IP address. A valid format + is ``XX.XX.XX.XX`` or ``XX.XX.XX.XX/XX``. For example + ``0.0.0.0/0``. - ``cert``. Authenticates an instance through a + TLS certificate. Specify the TLS identity as the IDENTKEY. A + valid value is any string up to 64 characters long in the common + name (CN) of the certificate. The meaning of a string depends on + its interpretation. - ``user``. Authenticates by a user or + group name. A valid value is an alphanumeric string that can + contain some special characters and is from 4 to 32 characters + long. + in: body + required: true + type: string +access_type_1: + description: | + The access type of an access rule. + in: body + required: true + type: string +access_type_2: + description: | + The rule access type. + in: body + required: true + type: string +alias: + description: | + The alias for the extension. For example, + "FOXNSOX," "os- availability-zone," "os-extended-quotas," "os- + share-unmanage," or "os-used-limits." + in: body + required: true + type: string +allow_access: + description: | + The object of grant access. + in: body + required: true + type: object +availability_zone: + description: | + (Since API v2.1) The availability zone. + in: body + required: false + type: string +availability_zone_1: + description: | + The availability zone. + in: body + required: true + type: string +availability_zones: + description: | + Top level response body element. + in: body + required: true + type: string +backend: + description: | + The name of the back end. + in: body + required: true + type: string +backend_details: + description: | + The back-end details for a server. Each back end + can store any key- value information that it requires. For + example, the generic back- end driver might store the router ID. + in: body + required: true + type: string +backend_details_1: + description: | + The back-end details for a server. Each back end + can store any key- value information that it requires. For + example, the generic back- end driver might store the router ID. + in: body + required: true + type: object +binary: + description: | + The name of the service binary that you want to + disable. Typically, this name is the base name of the executable. + in: body + required: true + type: string +binary: + description: | + The name of the service binary that you want to + disable. Typically, this name is the base name of the executable. + in: body + required: true + type: string +binary_1: + description: | + The name of the service binary that you want to + enable. Typically, this name is the base name of the executable. + in: body + required: true + type: string +binary_2: + description: | + The service binary name. Default is the base name + of the executable. + in: body + required: true + type: string +binary_4: + description: | + The name of the disabled service binary. + Typically, this name is the base name of the executable. + in: body + required: true + type: string +binary_5: + description: | + The name of the enabled service binary. + Typically, this name is the base name of the executable. + in: body + required: true + type: string +capabilities: + description: | + The capabilities for the storage back end. + in: body + required: true + type: object +cgsnapshot: + description: | + The ``cgsnapshot`` object + in: body + required: true + type: object +cgsnapshot_links: + description: | + The consistency share snapshot links. + in: body + required: false + type: array +cgsnapshot_members: + description: | + The ``cgsnapshot_members`` object + in: body + required: true + type: array +cgsnapshot_members_links: + description: | + The consistency share snapshot member links. + in: body + required: true + type: array +cgsnapshots: + description: | + The ``cgsnapshots`` object + in: body + required: true + type: array +cidr: + description: | + The CIDR. + in: body + required: true + type: string +cidr_1: + description: | + The IP block from which to allocate the network, + in CIDR notation. For example, ``172.16.0.0/24`` or + ``2001:DB8::/64``. This parameter is automatically set to a value + determined by the network provider. + in: body + required: true + type: string +consistency_group: + description: | + The ``consistency_group`` object. + in: body + required: true + type: array +consistency_group_id: + description: | + The ID of the consistency group from which to + create a snapshot. + in: body + required: true + type: string +consistency_group_id_1: + description: | + (Since API v2.4) The UUID of the available + consistency group in which the share will be created. The + consistency group must support the ``share_type`` and + ``share_network_id``. For details, see `Consistency groups `_. + in: body + required: false + type: string +consistency_group_id_4: + description: | + The ID of the consistency group from which the + snapshot was created. + in: body + required: true + type: string +consistency_group_id_6: + description: | + (Since API v2.4) The UUID of the consistency + group where the share was created. + in: body + required: true + type: string +consistency_group_support: + description: | + (Since API v2.4) The consistency group support. + A valid value is: - ``pool`` or ``host``. Consistency groups are + supported. Specifies the level of consistency groups support. - + ``false``. Consistency groups are not supported. + in: body + required: true + type: string +consistency_groups: + description: | + The ``consistency_groups`` object. + in: body + required: true + type: array +created_at: + description: | + The date and time stamp when the share network was created. + + The date and time stamp format is `ISO 8601 + `_: + + :: + + CCYY-MM-DDThh:mm:ss±hh:mm + + The ``±hh:mm`` value, if included, returns the time zone as an + offset from UTC. + + For example, ``2015-08-27T09:49:58-05:00``. + in: body + required: true + type: string +created_at_1: + description: | + The date and time stamp when the consistency + group snapshot was created. + in: body + required: true + type: string +created_at_10: + description: | + The date and time stamp when the snapshot was created. + + The date and time stamp format is `ISO 8601 + `_: + + :: + + CCYY-MM-DDThh:mm:ss±hh:mm + + The ``±hh:mm`` value, if included, returns the time zone as an + offset from UTC. + + For example, ``2015-08-27T09:49:58-05:00``. + in: body + required: true + type: string +created_at_11: + description: | + The date and time stamp when the share server was created. + + The date and time stamp format is `ISO 8601 + `_: + + :: + + CCYY-MM-DDThh:mm:ss±hh:mm + + The ``±hh:mm`` value, if included, returns the time zone as an + offset from UTC. + + For example, ``2015-08-27T09:49:58-05:00``. + in: body + required: true + type: string +created_at_2: + description: | + The date and time stamp when the consistency + group was created. + in: body + required: true + type: string +created_at_3: + description: | + The date and time stamp when the security service was created. + + The date and time stamp format is `ISO 8601 + `_: + + :: + + CCYY-MM-DDThh:mm:ss±hh:mm + + The ``±hh:mm`` value, if included, returns the time zone as an + offset from UTC. + + For example, ``2015-08-27T09:49:58-05:00``. + in: body + required: true + type: string +created_at_4: + description: | + The date and time stamp when the share was created. + + The date and time stamp format is `ISO 8601 + `_: + + :: + + CCYY-MM-DDThh:mm:ss±hh:mm + + The ``±hh:mm`` value, if included, returns the time zone as an + offset from UTC. + + For example, ``2015-08-27T09:49:58-05:00``. + in: body + required: true + type: string +created_at_5: + description: | + The date and time stamp when the share instance export location was + created. + + The date and time stamp format is `ISO 8601 + `_: + + :: + + CCYY-MM-DDThh:mm:ss±hh:mm + + The ``±hh:mm`` value, if included, returns the time zone as an + offset from UTC. + + For example, ``2016-12-31T13:14:15-05:00``. + in: body + required: true + type: string +created_at_6: + description: | + The date and time stamp when the access rule was created. + + The date and time stamp format is `ISO 8601 + `_: + + :: + + CCYY-MM-DDThh:mm:ss±hh:mm + + The ``±hh:mm`` value, if included, returns the time zone as an + offset from UTC. + + For example, ``2015-08-27T09:49:58-05:00``. + in: body + required: true + type: string +created_at_7: + description: | + The date and time stamp when the availability zone was created. + + The date and time stamp format is `ISO 8601 + `_: + + :: + + CCYY-MM-DDThh:mm:ss±hh:mm + + The ``±hh:mm`` value, if included, returns the time zone as an + offset from UTC. + + For example, ``2015-08-27T09:49:58-05:00``. + in: body + required: true + type: string +created_at_8: + description: | + The date and time stamp when the member was + created. + in: body + required: true + type: string +created_at_9: + description: | + The date and time stamp when the share instance was created. + + The date and time stamp format is `ISO 8601 + `_: + + :: + + CCYY-MM-DDThh:mm:ss±hh:mm + + The ``±hh:mm`` value, if included, returns the time zone as an + offset from UTC. + + For example, ``2015-08-27T09:49:58-05:00``. + in: body + required: true + type: string +deny_access: + description: | + The ``deny_access`` object. + in: body + required: true + type: object +description: + description: | + The share network description. + in: body + required: true + type: string +description_1: + description: | + The consistency group snapshot description. + in: body + required: false + type: string +description_10: + description: | + The snapshot description. + in: body + required: false + type: string +description_11: + description: | + The snapshot description. + in: body + required: true + type: string +description_12: + description: | + The security service description. If you specify + this value, the description is updated. + in: body + required: false + type: string +description_2: + description: | + The consistency group description. + in: body + required: false + type: string +description_3: + description: | + The security service description. + in: body + required: false + type: string +description_4: + description: | + The share network description. + in: body + required: false + type: string +description_5: + description: | + The share description. + in: body + required: false + type: string +description_6: + description: | + The consistency group description. + in: body + required: true + type: string +description_7: + description: | + The consistency group snapshot description. + in: body + required: true + type: string +description_8: + description: | + The extension description. + in: body + required: true + type: string +description_9: + description: | + The security service description. + in: body + required: true + type: string +disabled: + description: | + Indicates whether the service is disabled. + in: body + required: true + type: boolean +display_description: + description: | + The share description. The Shared File Systems + API supports the use of both ``description`` and + ``display_description`` parameters, which are inherited attributes + from the Block Storage API. + in: body + required: false + type: string +display_description_1: + description: | + The snapshot description. The shared file + systems API supports the use of both ``name`` and ``display_name`` + attributes, which are inherited attributes from the block storage + API. + in: body + required: false + type: string +display_description_2: + description: | + The snapshot description. If you specify this + attribute, the snapshot ``description`` is updated. + in: body + required: false + type: string +display_description_3: + description: | + The share description. If you specify this + parameter, the share description is updated. + in: body + required: false + type: string +display_name: + description: | + The share name. The Shared File Systems API + supports the use of both ``name`` and ``display_name`` attributes, + which are inherited attributes from the Block Storage API. + in: body + required: false + type: string +display_name_1: + description: | + The snapshot name. The Shared File Systems API + supports the use of both ``name`` and ``display_name`` attributes, + which are inherited attributes from the Block Storage API. + in: body + required: false + type: string +display_name_2: + description: | + The snapshot name. The shared file systems API + supports the use of both ``name`` and ``display_name`` attributes, + which are inherited attributes from the Block Storage API. + in: body + required: false + type: string +display_name_3: + description: | + The snapshot name. If you specify this attribute, + the snapshot ``name`` is updated. + in: body + required: false + type: string +display_name_4: + description: | + The share name. If you specify this parameter, + the share name is updated. + in: body + required: false + type: string +dns_ip: + description: | + The DNS IP address that is used inside the tenant + network. + in: body + required: false + type: string +dns_ip_1: + description: | + The DNS IP address that is used inside the tenant + network. + in: body + required: true + type: string +domain: + description: | + The security service domain. + in: body + required: false + type: string +domain_1: + description: | + The security service domain. + in: body + required: true + type: string +driver_handles_share_servers: + description: | + An extra specification that defines the driver + mode for share server, or storage, life cycle management. The + Shared File Systems service creates a share server for the export + of shares. This value is ``true`` when the share driver manages, + or handles, the share server life cycle. This value is ``false`` + when an administrator rather than a share driver manages the + storage life cycle. + in: body + required: true + type: boolean +driver_handles_share_servers_1: + description: | + An extra specification that defines the driver + mode for share server, or storage, life cycle management. The + Shared File Systems service creates a share server for the export + of shares. Set to ``true`` when the share driver manages, or + handles, the share server life cycle. Set to ``false`` when an + administrator rather than a share driver manages the storage life + cycle. + in: body + required: true + type: boolean +driver_options: + description: | + A set of one or more key and value pairs, as a + dictionary of strings, that describe driver options. + in: body + required: false + type: object +driver_options_1: + description: | + A set of one or more key and value pairs, as a + dictionary of strings, that describe driver options. Details for + driver options should be taken from `appropriate share driver + documentation `_. + in: body + required: false + type: object +driver_version: + description: | + The driver version. + in: body + required: true + type: string +export_location: + description: | + (Only for API v1.0-2.8) The export location. For + newer API versions it is available in separate APIs. See + sections `Share export locations <#share-share-export-locations>`_ + and `Share instance export locations <#share-share-instance- + export- locations>`_. + in: body + required: false + type: string +export_locations: + description: | + (Only for API v1.0-2.8) A list of export + locations. For example, when a share server has more than one + network interface, it can have multiple export locations. For + newer API versions it is available in separate APIs. See + sections `Share export locations <#share-share-export-locations>`_ + and `Share instance export locations <#share-share-instance- + export- locations>`_. + in: body + required: false + type: array +export_path: + description: | + The share export path in the format appropriate + for the protocol: - NFS protocol. ``10.0.0.1:/foo_path``. For + example, ``10.254.0.5:/shares/share-42033c24-0261-424f-abda- + 4fef2f6dbfd5``. - CIFS protocol. + ``\\10.0.0.1\foo_name_of_cifs_share``. + in: body + required: true + type: string +extend: + description: | + The ``extend`` object. + in: body + required: true + type: object +extra-spec-key: + description: | + The extra specification key + in: body + required: true + type: string +extra_specs: + description: | + The extra specifications for the share type. + in: body + required: true + type: object +extra_specs_2: + description: | + Extra specifications for the share type. + in: body + required: true + type: object +force: + description: | + Indicates whether to permit or deny the force- + update of a quota that is already used and the requested value + exceeds the configured quota. Set to ``True`` to permit the + force-update of the quota. Set to ``False`` to deny the force- + update of the quota. + in: body + required: false + type: boolean +force_1: + description: | + Indicates whether snapshot creation is enabled + when a share is busy. Set to ``true`` to force snapshot creation + when the share is busy. Set to ``false`` to deny snapshot + creation when the share is busy. Default is ``false``. + in: body + required: false + type: boolean +force_delete: + description: | + To force-delete a consistency group snapshot, set + this value to ``null``. + in: body + required: true + type: string +force_delete_1: + description: | + To force-delete a consistency group, set this + value to ``null``. + in: body + required: true + type: string +force_delete_2: + description: | + To force-delete a share instance, set this value + to ``null``. The force-delete action, unlike the delete action, + ignores the share instance status. + in: body + required: true + type: string +force_delete_3: + description: | + To force-delete a share, set this value to + ``null``. The force- delete action, unlike the delete action, + ignores the share status. + in: body + required: true + type: string +force_delete_4: + description: | + To force-delete a snapshot, set this value to + ``null``. The force- delete action, unlike the delete action, + ignores the snapshot status. + in: body + required: true + type: string +force_host_copy: + description: | + Enables or disables generic host-based forced + migrations, which bypasses driver optimizations. Default value is + ``false``. + in: body + required: true + type: boolean +free_capacity_gb: + description: | + The amount of free capacity for the back end, in + GBs. A valid value is a string, such as ``unknown``, or an + integer. + in: body + required: true + type: string +gigabytes: + description: | + The number of gigabytes allowed for each tenant. + in: body + required: true + type: integer +gigabytes_1: + description: | + The number of gigabytes for the tenant. + in: body + required: false + type: integer +has_replicas: + description: | + (Since API v2.11) Indicates whether a share has + replicas or not. + in: body + required: true + type: boolean +host: + description: | + The consistency group host name. + in: body + required: true + type: string +host_1: + description: | + The share host name. + in: body + required: true + type: string +host_10: + description: | + The host pool of the destination back end, in + this format: ``host@backend#POOL``. - ``host``. The host name for + the destination back end. - ``backend``. The name of the + destination back end. - ``POOL``. The pool name for the + destination back end. + in: body + required: true + type: string +host_13: + description: | + The host name of the disabled service. + in: body + required: true + type: string +host_14: + description: | + The host name of the enabled service. + enable. + in: body + required: true + type: string +host_2: + description: | + The host name of the service that you want to + disable. + in: body + required: true + type: string +host_3: + description: | + The host name of the service that you want to + enable. + in: body + required: true + type: string +host_4: + description: | + The host name for the back end. + in: body + required: true + type: string +host_5: + description: | + The host name. + in: body + required: true + type: string +host_6: + description: | + The share instance host name. + in: body + required: true + type: string +host_8: + description: | + The share server host name or IP address. + in: body + required: true + type: string +host_9: + description: | + The share host name. + in: body + required: false + type: string +id: + description: | + The share network ID. + in: body + required: true + type: string +id_1: + description: | + The consistency group snapshot ID. + in: body + required: true + type: string +id_10: + description: | + The consistency group snapshot member ID. + in: body + required: true + type: string +id_11: + description: | + The UUID of the share type. + in: body + required: true + type: string +id_12: + description: | + The service ID. + in: body + required: true + type: integer +id_13: + description: | + The share instance ID. + in: body + required: true + type: string +id_14: + description: | + The share server ID. + in: body + required: true + type: string +id_15: + description: | + The UUID of the tenant for which you manage + quotas. + in: body + required: true + type: string +id_16: + description: | + The UUID of the snapshot. + in: body + required: true + type: string +id_2: + description: | + The consistency group ID. + in: body + required: true + type: string +id_3: + description: | + The security service ID. + in: body + required: true + type: string +id_4: + description: | + The UUID of the share. + in: body + required: true + type: string +id_5: + description: | + The share instance export location UUID. + in: body + required: true + type: string +id_6: + description: | + The UUID of the export location that belongs to + share instance. + in: body + required: true + type: string +id_7: + description: | + The access rule ID. + in: body + required: true + type: string +id_8: + description: | + The UUID of the access rule. + in: body + required: true + type: string +id_9: + description: | + The availability zone ID. + in: body + required: true + type: string +ip_version: + description: | + The IP version of the network. A valid value is + ``4`` or ``6``. + in: body + required: true + type: integer +ip_version_1: + description: | + The IP version of the network. A valid value is + ``4`` or ``6``. This parameter is automatically set to a value + determined by the network provider. + in: body + required: true + type: integer +is_admin_only: + description: | + Defines purpose of an export location. If set to + ``true``, then it is expected to be used for service needs and by + admin only. If it is set to ``false``, then this export location + should be used by end users. + in: body + required: true + type: boolean +is_public: + description: | + (Since API v2.8) The level of visibility for the + share. Set to ``true`` to make share public. Set to ``false`` to + make it private. Default value is ``false``. + in: body + required: false + type: boolean +link: + description: | + The share links. + in: body + required: true + type: array +link_1: + description: | + The share links + in: body + required: true + type: array +links: + description: | + The share links + in: body + required: true + type: array +links_1: + description: | + The share links. + in: body + required: true + type: array +links_2: + description: | + The extension links. + in: body + required: true + type: array +maxTotalShareGigabytes: + description: | + The total maximum number of share gigabytes that + are allowed in a project. You cannot request a share that exceeds + the allowed gigabytes quota. + in: body + required: true + type: integer +maxTotalShareNetworks: + description: | + The total maximum number of share-networks that + are allowed in a project. + in: body + required: true + type: integer +maxTotalShares: + description: | + The total maximum number of shares that are + allowed in a project. + in: body + required: true + type: integer +maxTotalShareSnapshots: + description: | + The total maximum number of share snapshots that + are allowed in a project. + in: body + required: true + type: integer +maxTotalSnapshotGigabytes: + description: | + The total maximum number of snapshot gigabytes + that are allowed in a project. + in: body + required: true + type: integer +metadata: + description: | + One or more metadata key and value pairs as a + dictionary of strings. + in: body + required: false + type: object +metadata_2: + description: | + One or more metadata key-value pairs, as a + dictionary of strings. For example, ``"project": "my_test", "aim": + "testing"``. The share server does not respect case-sensitive key + names. For example, ``"key": "v1"`` and ``"KEY": "V1"`` are + equivalent. If you specify both key-value pairs, the server sets + and returns only the ``"KEY": "V1"`` key-value pair. + in: body + required: true + type: object +metadata_3: + description: | + One or more metadata key and value pairs as a + dictionary of strings. + in: body + required: true + type: object +migrate-start: + description: | + The ``migrate-start`` object. + in: body + required: true + type: object +migrate_share: + description: | + The ``migrate_share`` object. + in: body + required: true + type: object +migration_complete: + description: | + The ``migration_complate`` object. + in: body + required: true + type: object +name: + description: | + The share network name. + in: body + required: true + type: string +name_1: + description: | + The consistency group snapshot name. + in: body + required: false + type: string +name_10: + description: | + The name of the extension. For example, "Fox In + Socks." + in: body + required: true + type: string +name_11: + description: | + The name of the back end in this format: + ``host@backend#POOL``. - ``host``. The host name for the back + end. - ``backend``. The name of the back end. - ``POOL``. The + pool name for the back end. + in: body + required: true + type: string +name_12: + description: | + The security service name. + in: body + required: true + type: string +name_14: + description: | + The snapshot name. + in: body + required: false + type: string +name_15: + description: | + The snapshot name. + in: body + required: true + type: string +name_16: + description: | + The security service name. If you specify this + value, the name is updated. + in: body + required: false + type: string +name_2: + description: | + The consistency group name. + in: body + required: false + type: string +name_3: + description: | + The security service name. + in: body + required: false + type: string +name_4: + description: | + The share network name. + in: body + required: false + type: string +name_5: + description: | + The share name. + in: body + required: false + type: string +name_6: + description: | + The name of the availability zone. + in: body + required: true + type: string +name_7: + description: | + The consistency group name. + in: body + required: true + type: string +name_8: + description: | + The consistency group snapshot name. + in: body + required: true + type: string +name_9: + description: | + The share type name. + in: body + required: true + type: string +network_type: + description: | + The network type. A valid value is ``VLAN``, + ``VXLAN``, ``GRE``, or ``flat``. + in: body + required: true + type: string +network_type_1: + description: | + The network type. A valid value is ``VLAN``, + ``VXLAN``, ``GRE``, or ``flat``. This parameter is automatically + set to a value determined by the network provider. + in: body + required: true + type: string +neutron_net_id: + description: | + The neutron network ID. + in: body + required: true + type: string +neutron_net_id_1: + description: | + The UUID of the neutron network to set up for + share servers. You can set up either a neutron network and subnet + or a nova network. + in: body + required: false + type: string +neutron_subnet_id: + description: | + The neutron subnet ID. + in: body + required: true + type: string +neutron_subnet_id_1: + description: | + The UUID of the neutron subnet to set up for + share servers. This subnet must be part of the neutron network. + You can set up either a neutron network and subnet or a nova + network. + in: body + required: false + type: string +new_size: + description: | + New size of the share, in GBs. + in: body + required: true + type: integer +next-available: + description: | + The date and time stamp when next issues are available. + + The date and time stamp format is `ISO 8601 + `_: + + :: + + CCYY-MM-DDThh:mm:ss±hh:mm + + The ``±hh:mm`` value, if included, returns the time zone as an + offset from UTC. + + For example, ``2015-08-27T09:49:58-05:00``. + in: body + required: false + type: string +notify: + description: | + Enables or disables notification of data copying completed + in: body + required: true + type: string +nova_net_id: + description: | + The nova network ID. + in: body + required: true + type: string +nova_net_id_1: + description: | + The UUID of the nova network to set up for share + servers. You can set up either a neutron network and subnet or a + nova network. + in: body + required: false + type: string +os-force_delete: + description: | + The ``force_delete`` object. + in: body + required: true + type: object +os-migrate_share: + description: | + The ``migrate_share`` object. + in: body + required: true + type: object +os-reset_status: + description: | + The ``reset_status`` object. + in: body + required: true + type: object +os-share-type-access:is_public: + description: | + Indicates whether a share type is publicly + accessible. Default is ``true``, or publicly accessible. + in: body + required: false + type: boolean +password: + description: | + The user password, if you specify a ``user``. + in: body + required: false + type: string +password_1: + description: | + The user password, if you specify a ``user``. + in: body + required: true + type: string +path: + description: | + The export location path that should be used for + mount operation. + in: body + required: true + type: string +pool: + description: | + The pool name for the back end. + in: body + required: true + type: string +pools: + description: | + The pools for the back end. This value is either + ``null`` or a string value that indicates the capabilities for + each pool. For example, ``pool_name``, ``total_capacity_gb``, + ``qos``, and so on. + in: body + required: true + type: string +preferred: + description: | + (Since API v2.14) Drivers may use this field to + identify which export locations are most efficient and should be + used preferentially by clients. By default it is set to ``false`` + value. + in: body + required: true + type: boolean +project: + description: | + The UUID of the project to which access to the + share type is granted. + in: body + required: true + type: string +project_1: + description: | + The UUID of the project for which access to the + share type is denied. + in: body + required: true + type: string +project_id: + description: | + The UUID of the project where the share network + was created. + in: body + required: true + type: string +project_id_1: + description: | + The ID of the project in which the consistency + group snapshot was created. + in: body + required: true + type: string +project_id_2: + description: | + The ID of the project in which the consistency + group was created. + in: body + required: true + type: string +project_id_3: + description: | + The UUID of the project where the security + service was created. + in: body + required: true + type: string +project_id_4: + description: | + The UUID of the project in which the share was + created. + in: body + required: true + type: string +project_id_5: + description: | + The ID of the project in which the consistency + group snapshot member was created. + in: body + required: true + type: string +project_id_7: + description: | + The project ID. + in: body + required: true + type: string +project_id_8: + description: | + The UUID of the project where the share was + created. + in: body + required: true + type: string +project_id_9: + description: | + The UUID of the project for which access to the + share type is granted. + in: body + required: true + type: string +protocol: + description: | + The Shared File Systems protocol of the share to + manage. A valid value is ``NFS``, ``CIFS``, ``GlusterFS``, or + ``HDFS``. + in: body + required: true + type: string +provider_location: + description: | + (Since API v2.12) Provider location of the + snapshot on the backend. + in: body + required: true + type: string +provider_location_1: + description: | + Provider location of the snapshot on the backend. + in: body + required: true + type: string +qos: + description: | + The quality of service (QoS) support. + in: body + required: true + type: boolean +quota_set: + description: | + The ``quota_set`` object. + in: body + required: true + type: object +regex: + description: | + An API regular expression. For example, + ``^/shares`` for the ``/shares`` API URI or ``.*`` for any URI. + in: body + required: false + type: string +remaining: + description: | + The remaining number of allowed requests. + in: body + required: false + type: integer +replica_state: + description: | + (Since API v2.11) The share replica state. Has + set value only when replication is used. List of possible values: + ``active``, ``in_sync``, ``out_of_sync``, and ``error``. + in: body + required: true + type: string +replication_type: + description: | + (Since API v2.11) The share replication type. + in: body + required: false + type: string +required_extra_specs: + description: | + The required extra specifications for the share + type. + in: body + required: true + type: object +reserved_percentage: + description: | + The percentage of the total capacity that is + reserved for the internal use by the back end. + in: body + required: true + type: integer +reset_status: + description: | + The ``reset_status`` object. + in: body + required: true + type: object +security_service_id: + description: | + The UUID of the security service to add to the + share network. For details, see the security service section. + in: body + required: true + type: string +security_service_id_2: + description: | + The UUID of the security service to remove from + the share network. For details, see the security service section. + in: body + required: true + type: string +segmentation_id: + description: | + The segmentation ID. + in: body + required: true + type: integer +segmentation_id_1: + description: | + The segmentation ID. This parameter is + automatically set to a value determined by the network provider. + For VLAN, this value is an integer from 1 to 4094. For VXLAN, + this value is an integer from 1 to 16777215. For GRE, this value + is an integer from 1 to 4294967295. + in: body + required: true + type: integer +server: + description: | + The security service host name or IP address. + in: body + required: false + type: string +server_1: + description: | + The security service host name or IP address. + in: body + required: true + type: string +server_pools_mapping: + description: | + The mapping between servers and pools. + in: body + required: true + type: object +service_host: + description: | + The manage-share service host in this format: + ``host@backend#POOL``. - ``host``. The host name for the back + end. - ``backend``. The name of the back end. - ``POOL``. The + pool name for the back end. + in: body + required: true + type: string +services: + description: | + Top element in the response body. + in: body + required: true + type: string +share: + description: | + A ``share`` object. + in: body + required: true + type: object +share_backend_name: + description: | + The name of the share back end. + in: body + required: true + type: string +share_id_1: + description: | + The ID of the share that is a consistency group + snapshot member. + in: body + required: true + type: string +share_id_2: + description: | + The UUID of the share from which the share + instance was created. + in: body + required: true + type: string +share_id_4: + description: | + The UUID of the share from which to create a + snapshot. + in: body + required: true + type: string +share_id_5: + description: | + The UUID of the source share that was used to + create the snapshot. + in: body + required: true + type: string +share_id_6: + description: | + The UUID of the share that has snapshot which + should be managed. + in: body + required: true + type: string +share_id_7: + description: | + The UUID of the share to which you are granted + or denied access. + in: body + required: true + type: string +share_instance_id_1: + description: | + The UUID of the share instance that owns this + export location. + in: body + required: true + type: string +share_network_id_1: + description: | + The ID of a share network. Note that when using + a share type with the ``driver_handles_share_servers`` extra spec + as ``False``, you should not provide a ``share_network_id``. + in: body + required: false + type: string +share_network_id_2: + description: | + The UUID of a share network where the share + server exists or will be created. If ``share_network_id`` is + ``None`` and you provide a ``snapshot_id``, the + ``share_network_id`` value from the snapshot is used. + in: body + required: false + type: string +share_network_id_3: + description: | + The ID of a share network. + in: body + required: true + type: string +share_network_id_4: + description: | + The share network ID. + in: body + required: true + type: string +share_network_id_6: + description: | + The UUID of a share network that is associated + with the share server. + in: body + required: true + type: string +share_network_id_7: + description: | + The UUID of the share network. + in: body + required: false + type: string +share_network_name: + description: | + The name of a share network that is associated + with the share server. + in: body + required: true + type: string +share_networks: + description: | + The number of share networks allowed for each + tenant. + in: body + required: true + type: integer +share_networks_1: + description: | + The number of share networks for the tenant. + in: body + required: false + type: integer +share_proto: + description: | + The Shared File Systems protocol. A valid value + is ``NFS``, ``CIFS``, ``GlusterFS``, ``HDFS``, or ``CephFS``. + ``CephFS`` supported starting with API v2.13 + in: body + required: true + type: string +share_proto_1: + description: | + The file system protocol of a share snapshot. A + valid value is ``NFS``, ``CIFS``, ``GlusterFS``, ``HDFS``, or + ``CephFS``. ``CephFS`` supported starting with API v2.13 + in: body + required: true + type: string +share_proto_2: + description: | + The file system protocol of a share snapshot. A + valid value is ``NFS``, ``CIFS``, ``GlusterFS``, ``HDFS``, or + ``CephFS``. ``CephFS`` supported starting with API v2.13. + in: body + required: true + type: string +share_protocol: + description: | + The file system protocol of the member, which is + ``NFS``, ``CIFS``, ``GlusterFS``, ``HDFS`` or ``CEPHFS``. + in: body + required: true + type: string +share_server_id: + description: | + The UUID of the share server. + in: body + required: true + type: string +share_size: + description: | + The share snapshot size, in GBs. + in: body + required: true + type: integer +share_size_1: + description: | + The size of a source share, in GBs. + in: body + required: true + type: integer +share_type: + description: | + The share type name. If you omit this parameter, + the default share type is used. To view the default share type set + by the administrator, issue a list default share types request. + You cannot specify both the ``share_type`` and ``volume_type`` + parameters. + in: body + required: false + type: string +share_type_1: + description: | + (Since API v2.6) The UUID of the share type. In + minor versions, this parameter is a share type name, as a string. + in: body + required: true + type: string +share_type_2: + description: | + The share type name. + in: body + required: false + type: string +share_type_id_1: + description: | + The share type ID of the member. + in: body + required: true + type: string +share_type_name: + description: | + (Since API v2.6) The share type name. Minor + versions support only the ``share_type`` parameter where the share + type name is expected. + in: body + required: true + type: string +share_types: + description: | + A list of one or more share type IDs. + in: body + required: false + type: array +share_types_1: + description: | + A list of share type IDs. + in: body + required: true + type: array +shares: + description: | + The number of shares allowed for each tenant. + in: body + required: true + type: integer +shares_1: + description: | + The number of shares for the tenant. + in: body + required: false + type: integer +shrink: + description: | + The ``shrink`` object. + in: body + required: true + type: object +size: + description: | + The share size, in GBs. The requested share size + cannot be greater than the allowed GB quota. To view the allowed + quota, issue a get limits request. + in: body + required: true + type: integer +size_1: + description: | + The member size, in GBs. + in: body + required: true + type: integer +size_2: + description: | + The share size, in GBs. + in: body + required: true + type: integer +size_3: + description: | + The snapshot size, in GBs. + in: body + required: true + type: integer +snapshot_gigabytes: + description: | + The number of gigabytes for the snapshots allowed + for each tenant. + in: body + required: true + type: integer +snapshot_gigabytes_1: + description: | + The number of gigabytes for the snapshots for the + tenant. + in: body + required: false + type: integer +snapshot_id: + description: | + The UUID of the snapshot from which to create the + share. + in: body + required: false + type: string +snapshot_id_3: + description: | + The UUID of the snapshot. + in: body + required: false + type: string +snapshot_support: + description: | + (Since API v2.2) An extra specification that + filters back ends by whether they do or do not support share + snapshots. + in: body + required: true + type: boolean +snapshot_support_1: + description: | + An extra specification that filters back ends by + whether they do or do not support share snapshots. + in: body + required: false + type: boolean +snapshot_support_2: + description: | + The specification that filters back ends by + whether they do or do not support share snapshots. + in: body + required: true + type: boolean +snapshot_support_3: + description: | + An extra specification that filters back ends by + whether they do or do not support share snapshots. Set to + ``true`` to show back ends that support share snapshots. Set to + ``false`` to show back ends that do not support share snapshots. + Default is ``true``. + in: body + required: false + type: boolean +snapshots: + description: | + The number of snapshots allowed for each tenant. + in: body + required: true + type: integer +snapshots_1: + description: | + The number of snapshots for the tenant. + in: body + required: false + type: integer +source_cgsnapshot_id: + description: | + The ID of the consistency group snapshot from + which to create the consistency group. + in: body + required: false + type: string +source_cgsnapshot_id_1: + description: | + The consistency group snapshot ID. A valid value + is ``null`` or the ID of the consistency group snapshot, if the + consistency group was created from a snapshot. + in: body + required: true + type: string +source_cgsnapshot_member_id: + description: | + (Since API v2.4) If the share was created with + ``consistency_group_id`` attribute, the snapshot member ID. The + corresponding consistency group must be created from a snapshot + with the current share as a member. Consistency groups and + snapshots are the part of the Shared File Systems experimental + API. For details, see `Consistency groups `_ and `Consistency group snapshots `_. + in: body + required: true + type: string +state: + description: | + The access rule state. A valid value is + ``active`` or ``error``. + in: body + required: true + type: string +state_1: + description: | + The current state of the service. A valid value + is ``up`` or ``down``. + in: body + required: true + type: string +status: + description: | + The consistency group snapshot status, which is + ``available``, ``creating``, ``error``, ``deleting``, or + ``error_deleting``. + in: body + required: true + type: string +status_1: + description: | + The consistency group status. A valid value is + ``creating``, ``available``, ``error``, ``deleting``, or + ``error_deleting``. + in: body + required: true + type: string +status_10: + description: | + The consistency group status. A valid value is + ``creating``, ``error``, ``available``, ``deleting``, or + ``error_deleting``. + in: body + required: true + type: string +status_11: + description: | + The share status, which is ``creating``, + ``error``, ``available``, ``deleting``, or ``error_deleting``. + in: body + required: true + type: string +status_12: + description: | + The snapshot status, which is ``available``, + ``error``, ``creating``, ``deleting``, or ``error_deleting``. + in: body + required: false + type: string +status_13: + description: | + The snapshot status, which is ``available``, + ``error``, ``creating``, ``deleting``, or ``error_deleting``. + in: body + required: true + type: string +status_14: + description: | + The snapshot status, which is + ``manage_starting``, ``manage_error``, ``unmanage_starting``, or + ``unmanage_error``. + in: body + required: true + type: string +status_15: + description: | + The share server status, which is is ``active``, + ``error``, ``creating``, or ``deleting``. + in: body + required: true + type: string +status_16: + description: | + The share status, which is ``creating``, + ``error``, ``available``, ``deleting``, ``error_deleting``, + ``manage_starting``, ``manage_error``, ``unmanage_starting``, + ``unmanage_error``, ``unmanaged``, ``extending``, + ``extending_error``, ``shrinking``, ``shrinking_error``, or + ``shrinking_possible_data_loss_error``. + in: body + required: true + type: string +status_2: + description: | + The security service status. + in: body + required: true + type: string +status_3: + description: | + The share status. A valid value is: - + ``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. + in: body + required: true + type: string +status_4: + description: | + The service status, which is ``enabled`` or + ``disabled``. + in: body + required: true + type: string +status_5: + description: | + The share instance status. A valid value is + ``available``, ``error``, ``creating``, ``deleting``, and + ``error_deleting``. + in: body + required: true + type: string +status_7: + description: | + The share server status, which is ``active``, + ``error``, ``creating``, or ``deleting``. + in: body + required: true + type: string +status_8: + description: | + The share status, which is ``available``, + ``manage_starting``, or ``manage_error``. + in: body + required: true + type: string +status_9: + description: | + The consistency group snapshot status. A valid + value is ``creating``, ``error``, ``available``, ``deleting``, or + ``error_deleting``. + in: body + required: true + type: string +storage_protocol: + description: | + The storage protocol for the back end. For + example, ``NFS_CIFS``, ``glusterfs``, ``HDFS``, and so on. + in: body + required: true + type: string +task_state: + description: | + (Since API v2.5) For the share migration, the + migration task state. A valid value is ``null``, + ``migration_starting``, ``migration_error``, + ``migration_success``, ``migration_completing``, or ``migrating``. + The ``task_state`` is ``null`` unless the share is migrated from + one back-end to another. For details, see ``os-migrate_share`` + extension request. + in: body + required: true + type: string +timestamp: + description: | + The date and time stamp when the API request was issued. + + The date and time stamp format is `ISO 8601 + `_: + + :: + + CCYY-MM-DDThh:mm:ss±hh:mm + + The ``±hh:mm`` value, if included, returns the time zone as an + offset from UTC. + + For example, ``2015-08-27T09:49:58-05:00``. + in: body + required: true + type: string +total_capacity_gb: + description: | + The total capacity for the back end, in GBs. A + valid value is a string, such as ``unknown``, or an integer. + in: body + required: true + type: string +totalShareGigabytesUsed: + description: | + The total number of gigabytes used in a project + by shares. + in: body + required: true + type: integer +totalShareNetworksUsed: + description: | + The total number of created share-networks in a + project. + in: body + required: true + type: integer +totalShareSnapshotsUsed: + description: | + The total number of created share snapshots in a + project. + in: body + required: true + type: integer +totalSharesUsed: + description: | + The total number of created shares in a project. + in: body + required: true + type: integer +totalSnapshotGigabytesUsed: + description: | + The total number of gigabytes used in a project + by snapshots. + in: body + required: true + type: integer +type: + description: | + The security service type. A valid value is + ``ldap``, ``kerberos``, or ``active_directory``. + in: body + required: true + type: string +type_1: + description: | + The security service type. A valid value is + ``ldap``, ``kerberos``, or ``active_directory``. + in: body + required: false + type: string +unit: + description: | + The time interval during which a number of API + requests are allowed. A valid value is ``SECOND``, ``MINUTE``, + ``HOUR``, or ``DAY``. Used in conjunction with the ``value`` + parameter, expressed as ``value`` per ``unit``. For example, 120 + requests are allowed per minute. + in: body + required: false + type: string +unmanage: + description: | + To unmanage a share snapshot, set this value to + ``null``. + in: body + required: true + type: string +unmanage_1: + description: | + To unmanage a share, set this value to ``null``. + in: body + required: true + type: string +updated: + description: | + The date and time stamp when the extension was last updated. + + The date and time stamp format is `ISO 8601 + `_: + + :: + + CCYY-MM-DDThh:mm:ss±hh:mm + + The ``±hh:mm`` value, if included, returns the time zone as an + offset from UTC. + + For example, ``2015-08-27T09:49:58-05:00``. + in: body + required: true + type: string +updated_at: + description: | + The date and time stamp when the share network was updated. + + The date and time stamp format is `ISO 8601 + `_: + + :: + + CCYY-MM-DDThh:mm:ss±hh:mm + + The ``±hh:mm`` value, if included, returns the time zone as an + offset from UTC. + + For example, ``2015-08-27T09:49:58-05:00``. + in: body + required: true + type: string +updated_at_1: + description: | + The date and time stamp when the security service was updated. + + The date and time stamp format is `ISO 8601 + `_: + + :: + + CCYY-MM-DDThh:mm:ss±hh:mm + + The ``±hh:mm`` value, if included, returns the time zone as an + offset from UTC. + + For example, ``2015-08-27T09:49:58-05:00``. + in: body + required: true + type: string +updated_at_2: + description: | + The date and time stamp when the share instance export location was + updated. + + The date and time stamp format is `ISO 8601 + `_: + + :: + + CCYY-MM-DDThh:mm:ss±hh:mm + + The ``±hh:mm`` value, if included, returns the time zone as an + offset from UTC. + + For example, ``2016-12-31T13:14:15-05:00``. + in: body + required: true + type: string +updated_at_3: + description: | + The date and time stamp when the access rule was updated. + + The date and time stamp format is `ISO 8601 + `_: + + :: + + CCYY-MM-DDThh:mm:ss±hh:mm + + The ``±hh:mm`` value, if included, returns the time zone as an + offset from UTC. + + For example, ``2015-08-27T09:49:58-05:00``. + + If the access rule was never updated, this value is ``null``. + in: body + required: true + type: string +updated_at_4: + description: | + The date and time stamp when the availability zone was updated. + + The date and time stamp format is `ISO 8601 + `_: + + :: + + CCYY-MM-DDThh:mm:ss±hh:mm + + The ``±hh:mm`` value, if included, returns the time zone as an + offset from UTC. + + For example, ``2015-08-27T09:49:58-05:00``. + in: body + required: true + type: string +updated_at_5: + description: | + The date and time stamp when the service was updated. + + The date and time stamp format is `ISO 8601 + `_: + + :: + + CCYY-MM-DDThh:mm:ss±hh:mm + + The ``±hh:mm`` value, if included, returns the time zone as an + offset from UTC. + + For example, ``2015-08-27T09:49:58-05:00``. + in: body + required: true + type: string +updated_at_6: + description: | + The date and time stamp when the share server was updated. + + The date and time stamp format is `ISO 8601 + `_: + + :: + + CCYY-MM-DDThh:mm:ss±hh:mm + + The ``±hh:mm`` value, if included, returns the time zone as an + offset from UTC. + + For example, ``2015-08-27T09:49:58-05:00``. + in: body + required: true + type: string +uri: + description: | + A human-readable URI of a rate limit. + format: uri + in: body + required: false + type: string +user: + description: | + The security service user or group name that is + used by the tenant. + in: body + required: false + type: string +user_1: + description: | + The security service user or group name that is + used by the tenant. + in: body + required: true + type: string +user_id: + description: | + ID of the user that is part of a given tenant. + in: body + required: false + type: string +value: + description: | + The number of API requests that are allowed + during a time interval. Used in conjunction with the ``unit`` + parameter, expressed as ``value`` per ``unit``. For example, 120 + requests are allowed per minute. + in: body + required: false + type: integer +vendor_name: + description: | + The name of the vendor for the back end. + in: body + required: true + type: string +verb: + description: | + The HTTP method for the API request. For example, + ``GET``, ``POST``, ``DELETE``, and so on. + in: body + required: false + type: string +version: + description: | + The version. + in: body + required: true + type: string +version_id: + type: string + in: body + required: true + description: > + A common name for the version in question. Informative only, it + has no real semantic meaning. +version_max: + type: string + in: body + required: true + description: > + If this version of the API supports microversions, the maximum + microversion that is supported. This will be the empty string if + microversions are not supported. +version_min: + type: string + in: body + required: true + description: > + If this version of the API supports microversions, the minimum + microversion that is supported. This will be the empty string if + microversions are not supported. +version_status: + type: string + in: body + required: true + description: | + The status of this API version. This can be one of: + + - ``CURRENT``: this is the preferred version of the API to use + - ``SUPPORTED``: this is an older, but still supported version of the API + - ``DEPRECATED``: a deprecated version of the API that is slated for removal +versions: + type: array + in: body + required: true + description: > + A list of version objects that describe the API versions available. +volume_type: + description: | + The volume type. The use of the ``volume_type`` + object is deprecated but supported. It is recommended that you use + the ``share_type`` object when you create a share type. When you + issue a create a share type request, you can submit a request body + with either a ``share_type`` or ``volume_type`` object. No matter + which object type you include in the request, the API creates both + a ``volume_type`` object and a ``share_type`` object. Both objects + have the same ID. When you issue a list share types request, the + response shows both ``share_types`` and ``volume_types`` objects. + in: body + required: false + type: string +zone: + description: | + The availability zone. + in: body + required: true + type: string + diff --git a/api-ref/source/quota-sets.inc b/api-ref/source/quota-sets.inc new file mode 100644 index 0000000000..39b9bfb29e --- /dev/null +++ b/api-ref/source/quota-sets.inc @@ -0,0 +1,173 @@ +.. -*- rst -*- + +========== +Quota sets +========== + +Provides quotas management support. + +.. important:: + + For API versions 2.6 and prior, replace ``quota-sets`` in the URLs with + ``os-quota-sets``. + + +Show default quotas +=================== + +.. rest_method:: GET /v2/{tenant_id}/quota-sets/{tenant_id}/defaults + +Shows default quotas for a tenant. + +Normal response codes: 200 +Error response codes: badRequest(400), unauthorized(401), forbidden(403) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id_1 + - tenant_id: tenant_id + +Response parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - quota_set: quota_set + - id: id_15 + - gigabytes: gigabytes + - snapshots: snapshots + - shares: shares + - snapshot_gigabytes: snapshot_gigabytes + - share_networks: share_networks + +Response example +---------------- + +.. literalinclude:: samples/quota-show-response.json + :language: javascript + + +Show quotas +=========== + +.. rest_method:: GET /v2/{tenant_id}/quota-sets/{tenant_id}?user_id={user_id} + +Shows quotas for a tenant. + +If you specify the optional ``user_id`` query parameter, you get +the quotas for this user in the tenant. If you omit this parameter, +you get the quotas for the project. + +Normal response codes: 200 +Error response codes: badRequest(400), unauthorized(401), forbidden(403) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id_1 + - tenant_id: tenant_id + - user_id: user_id_1 + +Response parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - quota_set: quota_set + - id: id_15 + - gigabytes: gigabytes + - snapshots: snapshots + - shares: shares + - snapshot_gigabytes: snapshot_gigabytes + - share_networks: share_networks + +Response example +---------------- + +.. literalinclude:: samples/quota-show-response.json + :language: javascript + + +Update quotas +============= + +.. rest_method:: PUT /v2/{tenant_id}/quota-sets/{tenant_id}?user_id={user_id} + +Updates quotas for a tenant. + +If you specify the optional ``user_id`` query parameter, you update +the quotas for this user in the tenant. If you omit this parameter, +you update the quotas for the project. + +Normal response codes: 200 +Error response codes: badRequest(400), unauthorized(401), forbidden(403) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id_1 + - tenant_id: tenant_id + - user_id: user_id_1 + - quota_set: quota_set + - force: force + - gigabytes: gigabytes_1 + - snapshots: snapshots_1 + - snapshot_gigabytes: snapshot_gigabytes_1 + - shares: shares_1 + - share_networks: share_networks_1 + +Request example +--------------- + +.. literalinclude:: samples/quota-update-request.json + :language: javascript + +Response parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - quota_set: quota_set + - id: id_15 + - gigabytes: gigabytes + - snapshots: snapshots + - shares: shares + - snapshot_gigabytes: snapshot_gigabytes + - share_networks: share_networks + +Response example +---------------- + +.. literalinclude:: samples/quota-update-response.json + :language: javascript + + +Delete quotas +============= + +.. rest_method:: DELETE /v2/{tenant_id}/quota-sets/{tenant_id}?user_id={user_id} + +Deletes quotas for a tenant. The quota reverts to the default quota. + +If you specify the optional ``user_id`` query parameter, you delete +the quotas for this user in the tenant. If you omit this parameter, +you delete the quotas for the project. + +Error response codes: 202 +Error response codes: badRequest(400), unauthorized(401), forbidden(403) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id_1 + - tenant_id: tenant_id + - user_id: user_id_1 diff --git a/api-ref/source/samples/availability-zones-list-response.json b/api-ref/source/samples/availability-zones-list-response.json new file mode 100644 index 0000000000..7fba3291e8 --- /dev/null +++ b/api-ref/source/samples/availability-zones-list-response.json @@ -0,0 +1,10 @@ +{ + "availability_zones": [ + { + "name": "nova", + "created_at": "2015-09-18T09:50:55.000000", + "updated_at": null, + "id": "388c983d-258e-4a0e-b1ba-10da37d766db" + } + ] +} diff --git a/api-ref/source/samples/consistency-group-create-request.json b/api-ref/source/samples/consistency-group-create-request.json new file mode 100644 index 0000000000..df1682392a --- /dev/null +++ b/api-ref/source/samples/consistency-group-create-request.json @@ -0,0 +1,10 @@ +{ + "consistency_group": { + "share_types": [ + "d2ad4f9d-cae3-4660-b0b6-58c06b385203" + ], + "name": "my-cg1", + "share_network_id": "d8ae6799-2567-4a89-aafb-fa4424350d2b", + "description": "my first consistency group" + } +} \ No newline at end of file diff --git a/api-ref/source/samples/consistency-group-create-response.json b/api-ref/source/samples/consistency-group-create-response.json new file mode 100644 index 0000000000..11cead33be --- /dev/null +++ b/api-ref/source/samples/consistency-group-create-response.json @@ -0,0 +1,26 @@ +{ + "consistency_group": { + "status": "creating", + "description": "my first consistency group", + "links": [ + { + "href": "http://172.18.198.54:8786/v2/16e1ab15c35a457e9c2b2aa189f544e1/consistency_groups/6f519a48-3183-46cf-a32f-41815f813986", + "rel": "self" + }, + { + "href": "http://172.18.198.54:8786/16e1ab15c35a457e9c2b2aa189f544e1/consistency_groups/6f519a48-3183-46cf-a32f-41815f813986", + "rel": "bookmark" + } + ], + "source_cgsnapshot_id": null, + "created_at": "2015-09-16T09:28:52.880949", + "share_network_id": "d8ae6799-2567-4a89-aafb-fa4424350d2b", + "host": null, + "project_id": "16e1ab15c35a457e9c2b2aa189f544e1", + "share_types": [ + "d2ad4f9d-cae3-4660-b0b6-58c06b385203" + ], + "id": "6f519a48-3183-46cf-a32f-41815f813986", + "name": "my-cg1" + } +} \ No newline at end of file diff --git a/api-ref/source/samples/consistency-group-force_delete-request.json b/api-ref/source/samples/consistency-group-force_delete-request.json new file mode 100644 index 0000000000..e1a585a698 --- /dev/null +++ b/api-ref/source/samples/consistency-group-force_delete-request.json @@ -0,0 +1,3 @@ +{ + "force_delete": null +} \ No newline at end of file diff --git a/api-ref/source/samples/consistency-group-list-detail-response.json b/api-ref/source/samples/consistency-group-list-detail-response.json new file mode 100644 index 0000000000..b65b2a40a8 --- /dev/null +++ b/api-ref/source/samples/consistency-group-list-detail-response.json @@ -0,0 +1,32 @@ +{ + "consistency_groups": [ + { + "id": "6f519a48-3183-46cf-a32f-41815f813986", + "links": [ + { + "href": "http://172.18.198.54:8786/v2/16e1ab15c35a457e9c2b2aa189f544e1/consistency_groups/6f519a48-3183-46cf-a32f-41815f813986", + "rel": "self" + }, + { + "href": "http://172.18.198.54:8786/16e1ab15c35a457e9c2b2aa189f544e1/consistency_groups/6f519a48-3183-46cf-a32f-41815f813986", + "rel": "bookmark" + } + ], + "name": "my-cg1" + }, + { + "id": "aed36625-a6d7-4681-ba59-c7ba3d18c148", + "links": [ + { + "href": "http://172.18.198.54:8786/v2/16e1ab15c35a457e9c2b2aa189f544e1/consistency_groups/aed36625-a6d7-4681-ba59-c7ba3d18c148", + "rel": "self" + }, + { + "href": "http://172.18.198.54:8786/16e1ab15c35a457e9c2b2aa189f544e1/consistency_groups/aed36625-a6d7-4681-ba59-c7ba3d18c148", + "rel": "bookmark" + } + ], + "name": "my-cg2" + } + ] +} \ No newline at end of file diff --git a/api-ref/source/samples/consistency-group-list-response.json b/api-ref/source/samples/consistency-group-list-response.json new file mode 100644 index 0000000000..b65b2a40a8 --- /dev/null +++ b/api-ref/source/samples/consistency-group-list-response.json @@ -0,0 +1,32 @@ +{ + "consistency_groups": [ + { + "id": "6f519a48-3183-46cf-a32f-41815f813986", + "links": [ + { + "href": "http://172.18.198.54:8786/v2/16e1ab15c35a457e9c2b2aa189f544e1/consistency_groups/6f519a48-3183-46cf-a32f-41815f813986", + "rel": "self" + }, + { + "href": "http://172.18.198.54:8786/16e1ab15c35a457e9c2b2aa189f544e1/consistency_groups/6f519a48-3183-46cf-a32f-41815f813986", + "rel": "bookmark" + } + ], + "name": "my-cg1" + }, + { + "id": "aed36625-a6d7-4681-ba59-c7ba3d18c148", + "links": [ + { + "href": "http://172.18.198.54:8786/v2/16e1ab15c35a457e9c2b2aa189f544e1/consistency_groups/aed36625-a6d7-4681-ba59-c7ba3d18c148", + "rel": "self" + }, + { + "href": "http://172.18.198.54:8786/16e1ab15c35a457e9c2b2aa189f544e1/consistency_groups/aed36625-a6d7-4681-ba59-c7ba3d18c148", + "rel": "bookmark" + } + ], + "name": "my-cg2" + } + ] +} \ No newline at end of file diff --git a/api-ref/source/samples/consistency-group-member-list-response.json b/api-ref/source/samples/consistency-group-member-list-response.json new file mode 100644 index 0000000000..5671465493 --- /dev/null +++ b/api-ref/source/samples/consistency-group-member-list-response.json @@ -0,0 +1,24 @@ +{ + "cgsnapshot_members": [ + { + "share_type_id": "be27425c-f807-4500-a056-d00721db45cf", + "share_id": "609e4924-f062-45e0-928d-7b739348c4d6", + "created_at": "2015-09-16T17:34:15.000000", + "cgsnapshot_id": "b44c894d-4bec-47aa-b389-cc8c6f0044a5", + "share_protocol": "NFS", + "project_id": "16e1ab15c35a457e9c2b2aa189f544e1", + "id": "84098fde-40ec-4c96-a908-bc532c52b3af", + "size": 1 + }, + { + "share_type_id": "be27425c-f807-4500-a056-d00721db45cf", + "share_id": "c4a2ced4-2c9f-4ae1-adaa-6171833e64df", + "created_at": "2015-09-16T17:34:15.000000", + "cgsnapshot_id": "b44c894d-4bec-47aa-b389-cc8c6f0044a5", + "share_protocol": "NFS", + "project_id": "16e1ab15c35a457e9c2b2aa189f544e1", + "id": "db492d38-dd3a-4d6b-a3b6-e65377990892", + "size": 1 + } + ] +} \ No newline at end of file diff --git a/api-ref/source/samples/consistency-group-reset_status-request.json b/api-ref/source/samples/consistency-group-reset_status-request.json new file mode 100644 index 0000000000..4134830878 --- /dev/null +++ b/api-ref/source/samples/consistency-group-reset_status-request.json @@ -0,0 +1,5 @@ +{ + "reset_status": { + "status": "available" + } +} \ No newline at end of file diff --git a/api-ref/source/samples/consistency-group-show-response.json b/api-ref/source/samples/consistency-group-show-response.json new file mode 100644 index 0000000000..83616a4289 --- /dev/null +++ b/api-ref/source/samples/consistency-group-show-response.json @@ -0,0 +1,27 @@ +{ + "consistency_group": { + "status": "available", + "description": "My first CG.", + "links": [ + { + "href": "http://172.18.198.54:8786/v2/16e1ab15c35a457e9c2b2aa189f544e1/consistency_groups/9397c191-8427-4661-a2e8-b23820dc01d4", + "rel": "self" + }, + { + "href": "http://172.18.198.54:8786/16e1ab15c35a457e9c2b2aa189f544e1/consistency_groups/9397c191-8427-4661-a2e8-b23820dc01d4", + "rel": "bookmark" + } + ], + "source_cgsnapshot_id": null, + "created_at": "2015-09-16T16:50:31.000000", + "share_network_id": "f9b2e754-ac01-4466-86e1-5c569424754e", + "share_server_id": null, + "host": "manila2@generic1#GENERIC1", + "project_id": "16e1ab15c35a457e9c2b2aa189f544e1", + "share_types": [ + "be27425c-f807-4500-a056-d00721db45cf" + ], + "id": "9397c191-8427-4661-a2e8-b23820dc01d4", + "name": "cg1" + } +} \ No newline at end of file diff --git a/api-ref/source/samples/consistency-group-snapshot-create-request.json b/api-ref/source/samples/consistency-group-snapshot-create-request.json new file mode 100644 index 0000000000..b74c714a98 --- /dev/null +++ b/api-ref/source/samples/consistency-group-snapshot-create-request.json @@ -0,0 +1,7 @@ +{ + "cgsnapshot": { + "consistency_group_id": "9397c191-8427-4661-a2e8-b23820dc01d4", + "name": "snapshot_cg1", + "description": "Snapshot of cg1" + } +} \ No newline at end of file diff --git a/api-ref/source/samples/consistency-group-snapshot-create-response.json b/api-ref/source/samples/consistency-group-snapshot-create-response.json new file mode 100644 index 0000000000..d2f0b94429 --- /dev/null +++ b/api-ref/source/samples/consistency-group-snapshot-create-response.json @@ -0,0 +1,21 @@ +{ + "cgsnapshot": { + "status": "creating", + "name": "snapshot_cg1", + "links": [ + { + "href": "http://172.18.198.54:8786/v2/16e1ab15c35a457e9c2b2aa189f544e1/cgsnapshot/b44c894d-4bec-47aa-b389-cc8c6f0044a5", + "rel": "self" + }, + { + "href": "http://172.18.198.54:8786/16e1ab15c35a457e9c2b2aa189f544e1/cgsnapshot/b44c894d-4bec-47aa-b389-cc8c6f0044a5", + "rel": "bookmark" + } + ], + "created_at": "2015-09-16T17:34:06.031997", + "consistency_group_id": "9397c191-8427-4661-a2e8-b23820dc01d4", + "project_id": "16e1ab15c35a457e9c2b2aa189f544e1", + "id": "b44c894d-4bec-47aa-b389-cc8c6f0044a5", + "description": "Snapshot of cg1" + } +} \ No newline at end of file diff --git a/api-ref/source/samples/consistency-group-snapshot-force_delete-request.json b/api-ref/source/samples/consistency-group-snapshot-force_delete-request.json new file mode 100644 index 0000000000..e1a585a698 --- /dev/null +++ b/api-ref/source/samples/consistency-group-snapshot-force_delete-request.json @@ -0,0 +1,3 @@ +{ + "force_delete": null +} \ No newline at end of file diff --git a/api-ref/source/samples/consistency-group-snapshot-list-detail-response.json b/api-ref/source/samples/consistency-group-snapshot-list-detail-response.json new file mode 100644 index 0000000000..8be3f45215 --- /dev/null +++ b/api-ref/source/samples/consistency-group-snapshot-list-detail-response.json @@ -0,0 +1,42 @@ +{ + "cgsnapshots": [ + { + "status": "available", + "name": "snapshot_CG2", + "links": [ + { + "href": "http://172.18.198.54:8786/v2/16e1ab15c35a457e9c2b2aa189f544e1/cgsnapshot/7e5c3ca7-d54b-438d-9a9c-c65ece6bc6c6", + "rel": "self" + }, + { + "href": "http://172.18.198.54:8786/16e1ab15c35a457e9c2b2aa189f544e1/cgsnapshot/7e5c3ca7-d54b-438d-9a9c-c65ece6bc6c6", + "rel": "bookmark" + } + ], + "created_at": "2015-09-16T17:37:40.000000", + "consistency_group_id": "2d5c2600-ae67-4dff-b13c-a1c20b335e8e", + "project_id": "16e1ab15c35a457e9c2b2aa189f544e1", + "id": "7e5c3ca7-d54b-438d-9a9c-c65ece6bc6c6", + "description": "Snapshot of CG2" + }, + { + "status": "available", + "name": "snapshot_cg1", + "links": [ + { + "href": "http://172.18.198.54:8786/v2/16e1ab15c35a457e9c2b2aa189f544e1/cgsnapshot/b44c894d-4bec-47aa-b389-cc8c6f0044a5", + "rel": "self" + }, + { + "href": "http://172.18.198.54:8786/16e1ab15c35a457e9c2b2aa189f544e1/cgsnapshot/b44c894d-4bec-47aa-b389-cc8c6f0044a5", + "rel": "bookmark" + } + ], + "created_at": "2015-09-16T17:34:15.000000", + "consistency_group_id": "9397c191-8427-4661-a2e8-b23820dc01d4", + "project_id": "16e1ab15c35a457e9c2b2aa189f544e1", + "id": "b44c894d-4bec-47aa-b389-cc8c6f0044a5", + "description": "Snapshot of cg1" + } + ] +} \ No newline at end of file diff --git a/api-ref/source/samples/consistency-group-snapshot-list-response.json b/api-ref/source/samples/consistency-group-snapshot-list-response.json new file mode 100644 index 0000000000..c884f56e87 --- /dev/null +++ b/api-ref/source/samples/consistency-group-snapshot-list-response.json @@ -0,0 +1,32 @@ +{ + "cgsnapshots": [ + { + "id": "7e5c3ca7-d54b-438d-9a9c-c65ece6bc6c6", + "links": [ + { + "href": "http://172.18.198.54:8786/v2/16e1ab15c35a457e9c2b2aa189f544e1/cgsnapshot/7e5c3ca7-d54b-438d-9a9c-c65ece6bc6c6", + "rel": "self" + }, + { + "href": "http://172.18.198.54:8786/16e1ab15c35a457e9c2b2aa189f544e1/cgsnapshot/7e5c3ca7-d54b-438d-9a9c-c65ece6bc6c6", + "rel": "bookmark" + } + ], + "name": "snapshot_CG2" + }, + { + "id": "b44c894d-4bec-47aa-b389-cc8c6f0044a5", + "links": [ + { + "href": "http://172.18.198.54:8786/v2/16e1ab15c35a457e9c2b2aa189f544e1/cgsnapshot/b44c894d-4bec-47aa-b389-cc8c6f0044a5", + "rel": "self" + }, + { + "href": "http://172.18.198.54:8786/16e1ab15c35a457e9c2b2aa189f544e1/cgsnapshot/b44c894d-4bec-47aa-b389-cc8c6f0044a5", + "rel": "bookmark" + } + ], + "name": "snapshot_cg1" + } + ] +} \ No newline at end of file diff --git a/api-ref/source/samples/consistency-group-snapshot-reset_status-request.json b/api-ref/source/samples/consistency-group-snapshot-reset_status-request.json new file mode 100644 index 0000000000..ff4edc6012 --- /dev/null +++ b/api-ref/source/samples/consistency-group-snapshot-reset_status-request.json @@ -0,0 +1,5 @@ +{ + "reset_status": { + "status": "error" + } +} \ No newline at end of file diff --git a/api-ref/source/samples/consistency-group-snapshot-show-response.json b/api-ref/source/samples/consistency-group-snapshot-show-response.json new file mode 100644 index 0000000000..8c9d69e1a0 --- /dev/null +++ b/api-ref/source/samples/consistency-group-snapshot-show-response.json @@ -0,0 +1,21 @@ +{ + "cgsnapshot": { + "status": "available", + "name": "snapshot_cg1", + "links": [ + { + "href": "http://172.18.198.54:8786/v2/16e1ab15c35a457e9c2b2aa189f544e1/cgsnapshot/b44c894d-4bec-47aa-b389-cc8c6f0044a5", + "rel": "self" + }, + { + "href": "http://172.18.198.54:8786/16e1ab15c35a457e9c2b2aa189f544e1/cgsnapshot/b44c894d-4bec-47aa-b389-cc8c6f0044a5", + "rel": "bookmark" + } + ], + "created_at": "2015-09-16T17:34:15.000000", + "consistency_group_id": "9397c191-8427-4661-a2e8-b23820dc01d4", + "project_id": "16e1ab15c35a457e9c2b2aa189f544e1", + "id": "b44c894d-4bec-47aa-b389-cc8c6f0044a5", + "description": "Snapshot of cg1" + } +} \ No newline at end of file diff --git a/api-ref/source/samples/consistency-group-snapshot-update-request.json b/api-ref/source/samples/consistency-group-snapshot-update-request.json new file mode 100644 index 0000000000..e9ed9e1647 --- /dev/null +++ b/api-ref/source/samples/consistency-group-snapshot-update-request.json @@ -0,0 +1,5 @@ +{ + "cgsnapshot": { + "description": "Changed description: there is a snapshot of CG2" + } +} \ No newline at end of file diff --git a/api-ref/source/samples/consistency-group-snapshot-update-response.json b/api-ref/source/samples/consistency-group-snapshot-update-response.json new file mode 100644 index 0000000000..97e8a6f323 --- /dev/null +++ b/api-ref/source/samples/consistency-group-snapshot-update-response.json @@ -0,0 +1,21 @@ +{ + "cgsnapshot": { + "status": "available", + "name": "snapshot_CG2", + "links": [ + { + "href": "http://172.18.198.54:8786/v2/16e1ab15c35a457e9c2b2aa189f544e1/cgsnapshot/7e5c3ca7-d54b-438d-9a9c-c65ece6bc6c6", + "rel": "self" + }, + { + "href": "http://172.18.198.54:8786/16e1ab15c35a457e9c2b2aa189f544e1/cgsnapshot/7e5c3ca7-d54b-438d-9a9c-c65ece6bc6c6", + "rel": "bookmark" + } + ], + "created_at": "2015-09-16T17:37:40.000000", + "consistency_group_id": "2d5c2600-ae67-4dff-b13c-a1c20b335e8e", + "project_id": "16e1ab15c35a457e9c2b2aa189f544e1", + "id": "7e5c3ca7-d54b-438d-9a9c-c65ece6bc6c6", + "description": "Changed description: there is a snapshot of CG2" + } +} \ No newline at end of file diff --git a/api-ref/source/samples/consistency-group-update-request.json b/api-ref/source/samples/consistency-group-update-request.json new file mode 100644 index 0000000000..3561ceef10 --- /dev/null +++ b/api-ref/source/samples/consistency-group-update-request.json @@ -0,0 +1,5 @@ +{ + "consistency_group": { + "description": "Edited description" + } +} \ No newline at end of file diff --git a/api-ref/source/samples/consistency-group-update-response.json b/api-ref/source/samples/consistency-group-update-response.json new file mode 100644 index 0000000000..0812c788b0 --- /dev/null +++ b/api-ref/source/samples/consistency-group-update-response.json @@ -0,0 +1,26 @@ +{ + "consistency_group": { + "status": "error", + "description": "Edited description", + "links": [ + { + "href": "http://172.18.198.54:8786/v2/16e1ab15c35a457e9c2b2aa189f544e1/consistency_groups/aed36625-a6d7-4681-ba59-c7ba3d18c148", + "rel": "self" + }, + { + "href": "http://172.18.198.54:8786/16e1ab15c35a457e9c2b2aa189f544e1/consistency_groups/aed36625-a6d7-4681-ba59-c7ba3d18c148", + "rel": "bookmark" + } + ], + "source_cgsnapshot_id": null, + "created_at": "2015-09-16T09:31:15.000000", + "share_network_id": "713df749-aac0-4a54-af52-10f6c991e80c", + "host": null, + "project_id": "16e1ab15c35a457e9c2b2aa189f544e1", + "share_types": [ + "be27425c-f807-4500-a056-d00721db45cf" + ], + "id": "aed36625-a6d7-4681-ba59-c7ba3d18c148", + "name": "my-cg2" + } +} \ No newline at end of file diff --git a/api-ref/source/samples/export-location-list-response.json b/api-ref/source/samples/export-location-list-response.json new file mode 100644 index 0000000000..a1cdbb6061 --- /dev/null +++ b/api-ref/source/samples/export-location-list-response.json @@ -0,0 +1,18 @@ +{ + "export_locations": [ + { + "path": "10.254.0.3:/shares/share-e1c2d35e-fe67-4028-ad7a-45f668732b1d", + "share_instance_id": "e1c2d35e-fe67-4028-ad7a-45f668732b1d", + "is_admin_only": false, + "id": "b6bd76ce-12a2-42a9-a30a-8a43b503867d", + "preferred": false + }, + { + "path": "10.0.0.3:/shares/share-e1c2d35e-fe67-4028-ad7a-45f668732b1d", + "share_instance_id": "e1c2d35e-fe67-4028-ad7a-45f668732b1d", + "is_admin_only": true, + "id": "6921e862-88bc-49a5-a2df-efeed9acd583", + "preferred": false + } + ] +} diff --git a/api-ref/source/samples/export-location-show-response.json b/api-ref/source/samples/export-location-show-response.json new file mode 100644 index 0000000000..85fec0d49d --- /dev/null +++ b/api-ref/source/samples/export-location-show-response.json @@ -0,0 +1,11 @@ +{ + "export_location": { + "created_at": "2016-03-24T14:20:47.000000", + "updated_at": "2016-03-24T14:20:47.000000", + "preferred": false, + "is_admin_only": true, + "share_instance_id": "e1c2d35e-fe67-4028-ad7a-45f668732b1d", + "path": "10.0.0.3:/shares/share-e1c2d35e-fe67-4028-ad7a-45f668732b1d", + "id": "6921e862-88bc-49a5-a2df-efeed9acd583" + } +} diff --git a/api-ref/source/samples/extensions-list-response.json b/api-ref/source/samples/extensions-list-response.json new file mode 100644 index 0000000000..ff88d90c86 --- /dev/null +++ b/api-ref/source/samples/extensions-list-response.json @@ -0,0 +1,102 @@ +{ + "extensions": [ + { + "alias": "os-extended-quotas", + "updated": "2013-06-09T00:00:00+00:00", + "name": "ExtendedQuotas", + "links": [], + "description": "Extend quotas. Adds ability for admins to delete quota and optionally force the update Quota command." + }, + { + "alias": "os-quota-sets", + "updated": "2011-08-08T00:00:00+00:00", + "name": "Quotas", + "links": [], + "description": "Quotas management support." + }, + { + "alias": "os-quota-class-sets", + "updated": "2012-03-12T00:00:00+00:00", + "name": "QuotaClasses", + "links": [], + "description": "Quota classes management support." + }, + { + "alias": "os-share-unmanage", + "updated": "2015-02-17T00:00:00+00:00", + "name": "ShareUnmanage", + "links": [], + "description": "Enable share unmanage operation." + }, + { + "alias": "os-types-manage", + "updated": "2011-08-24T00:00:00+00:00", + "name": "TypesManage", + "links": [], + "description": "Types manage support." + }, + { + "alias": "share-actions", + "updated": "2012-08-14T00:00:00+00:00", + "name": "ShareActions", + "links": [], + "description": "Enable share actions." + }, + { + "alias": "os-availability-zone", + "updated": "2015-07-28T00:00:00+00:00", + "name": "AvailabilityZones", + "links": [], + "description": "Describe Availability Zones." + }, + { + "alias": "os-user-quotas", + "updated": "2013-07-18T00:00:00+00:00", + "name": "UserQuotas", + "links": [], + "description": "Project user quota support." + }, + { + "alias": "os-share-type-access", + "updated": "2015-03-02T00:00:00Z", + "name": "ShareTypeAccess", + "links": [], + "description": "share type access support." + }, + { + "alias": "os-types-extra-specs", + "updated": "2011-08-24T00:00:00+00:00", + "name": "TypesExtraSpecs", + "links": [], + "description": "Type extra specs support." + }, + { + "alias": "os-admin-actions", + "updated": "2015-08-03T00:00:00+00:00", + "name": "AdminActions", + "links": [], + "description": "Enable admin actions." + }, + { + "alias": "os-used-limits", + "updated": "2014-03-27T00:00:00+00:00", + "name": "UsedLimits", + "links": [], + "description": "Provide data on limited resources that are being used." + }, + { + "alias": "os-services", + "updated": "2012-10-28T00:00:00-00:00", + "name": "Services", + "links": [], + "description": "Services support." + }, + { + "alias": "os-share-manage", + "updated": "2015-02-17T00:00:00+00:00", + "name": "ShareManage", + "links": [], + "description": "Allows existing share to be 'managed' by Manila." + } + ] +} diff --git a/api-ref/source/samples/limits-response.json b/api-ref/source/samples/limits-response.json new file mode 100644 index 0000000000..d9b0619b4a --- /dev/null +++ b/api-ref/source/samples/limits-response.json @@ -0,0 +1,17 @@ +{ + "limits": { + "rate": [], + "absolute": { + "totalShareNetworksUsed": 0, + "maxTotalShareGigabytes": 1000, + "maxTotalShareNetworks": 10, + "totalSharesUsed": 0, + "totalShareGigabytesUsed": 0, + "totalShareSnapshotsUsed": 0, + "maxTotalShares": 50, + "totalSnapshotGigabytesUsed": 0, + "maxTotalSnapshotGigabytes": 1000, + "maxTotalShareSnapshots": 50 + } + } +} diff --git a/api-ref/source/samples/pools-list-detailed-response.json b/api-ref/source/samples/pools-list-detailed-response.json new file mode 100644 index 0000000000..e83f6b80c0 --- /dev/null +++ b/api-ref/source/samples/pools-list-detailed-response.json @@ -0,0 +1,27 @@ +{ + "pools": [ + { + "host": "LONDON", + "capabilities": { + "qos": false, + "driver_version": "1.0", + "snapshot_support": true, + "timestamp": "2016-07-05T22:40:32.632330", + "share_backend_name": "GENERIC1", + "total_capacity_gb": "unknown", + "driver_handles_share_servers": true, + "consistency_group_support": "pool", + "server_pools_mapping": {}, + "pools": null, + "vendor_name": "Open Source", + "reserved_percentage": 0, + "free_capacity_gb": "unknown", + "storage_protocol": "NFS_CIFS", + "replication_domain": null + }, + "name": "openstack3@generic1#GENERIC1", + "pool": "GENERIC1", + "backend": "generic1" + } + ] +} \ No newline at end of file diff --git a/api-ref/source/samples/pools-list-response.json b/api-ref/source/samples/pools-list-response.json new file mode 100644 index 0000000000..d04fea2330 --- /dev/null +++ b/api-ref/source/samples/pools-list-response.json @@ -0,0 +1,22 @@ +{ + "pools": [ + { + "host": "manila2", + "name": "manila2@generic1#GENERIC1", + "pool": "GENERIC1", + "backend": "generic1" + }, + { + "host": "manila2", + "name": "manila2@unmanage1#UNMANAGE1", + "pool": "UNMANAGE1", + "backend": "unmanage1" + }, + { + "host": "manila2", + "name": "manila2@ams_backend#AMS_BACKEND", + "pool": "AMS_BACKEND", + "backend": "ams_backend" + } + ] +} diff --git a/api-ref/source/samples/quota-show-response.json b/api-ref/source/samples/quota-show-response.json new file mode 100644 index 0000000000..7f9f7bae32 --- /dev/null +++ b/api-ref/source/samples/quota-show-response.json @@ -0,0 +1,10 @@ +{ + "quota_set": { + "gigabytes": 1000, + "shares": 50, + "snapshot_gigabytes": 1000, + "snapshots": 50, + "id": "16e1ab15c35a457e9c2b2aa189f544e1", + "share_networks": 10 + } +} diff --git a/api-ref/source/samples/quota-update-request.json b/api-ref/source/samples/quota-update-request.json new file mode 100644 index 0000000000..1842231767 --- /dev/null +++ b/api-ref/source/samples/quota-update-request.json @@ -0,0 +1,7 @@ +{ + "quota_set": { + "snapshot_gigabytes": 999, + "snapshots": 49, + "share_networks": 9 + } +} diff --git a/api-ref/source/samples/quota-update-response.json b/api-ref/source/samples/quota-update-response.json new file mode 100644 index 0000000000..bec39dfb6c --- /dev/null +++ b/api-ref/source/samples/quota-update-response.json @@ -0,0 +1,9 @@ +{ + "quota_set": { + "gigabytes": 1000, + "snapshot_gigabytes": 999, + "shares": 50, + "snapshots": 49, + "share_networks": 9 + } +} diff --git a/api-ref/source/samples/security-service-create-request.json b/api-ref/source/samples/security-service-create-request.json new file mode 100644 index 0000000000..a12779af82 --- /dev/null +++ b/api-ref/source/samples/security-service-create-request.json @@ -0,0 +1,10 @@ +{ + "security_service": { + "description": "Creating my first Security Service", + "dns_ip": "10.0.0.0/24", + "user": "demo", + "password": "***", + "type": "kerberos", + "name": "SecServ1" + } +} diff --git a/api-ref/source/samples/security-service-create-response.json b/api-ref/source/samples/security-service-create-response.json new file mode 100644 index 0000000000..e6c9f2197c --- /dev/null +++ b/api-ref/source/samples/security-service-create-response.json @@ -0,0 +1,17 @@ +{ + "security_service": { + "status": "new", + "domain": null, + "project_id": "16e1ab15c35a457e9c2b2aa189f544e1", + "name": "SecServ1", + "created_at": "2015-09-07T12:19:10.695211", + "updated_at": null, + "server": null, + "dns_ip": "10.0.0.0/24", + "user": "demo", + "password": "supersecret", + "type": "kerberos", + "id": "3c829734-0679-4c17-9637-801da48c0d5f", + "description": "Creating my first Security Service" + } +} diff --git a/api-ref/source/samples/security-service-show-response.json b/api-ref/source/samples/security-service-show-response.json new file mode 100644 index 0000000000..6391b0d75b --- /dev/null +++ b/api-ref/source/samples/security-service-show-response.json @@ -0,0 +1,17 @@ +{ + "security_service": { + "status": "new", + "domain": null, + "project_id": "16e1ab15c35a457e9c2b2aa189f544e1", + "name": "SecServ1", + "created_at": "2015-09-07T12:19:10.000000", + "updated_at": null, + "server": null, + "dns_ip": "10.0.0.0/24", + "user": "demo", + "password": "supersecret", + "type": "kerberos", + "id": "3c829734-0679-4c17-9637-801da48c0d5f", + "description": "Creating my first Security Service" + } +} diff --git a/api-ref/source/samples/security-service-update-request.json b/api-ref/source/samples/security-service-update-request.json new file mode 100644 index 0000000000..4bf480308b --- /dev/null +++ b/api-ref/source/samples/security-service-update-request.json @@ -0,0 +1,8 @@ +{ + "security_service": { + "domain": "my_domain", + "password": "***", + "user": "new_user", + "description": "Adding a description" + } +} diff --git a/api-ref/source/samples/security-service-update-response.json b/api-ref/source/samples/security-service-update-response.json new file mode 100644 index 0000000000..7647800e96 --- /dev/null +++ b/api-ref/source/samples/security-service-update-response.json @@ -0,0 +1,17 @@ +{ + "security_service": { + "status": "new", + "domain": "my_domain", + "project_id": "16e1ab15c35a457e9c2b2aa189f544e1", + "name": "SecServ1", + "created_at": "2015-09-07T12:19:10.000000", + "updated_at": "2015-09-07T12:47:21.858737", + "server": null, + "dns_ip": "10.0.0.0/24", + "user": "new_user", + "password": "pass", + "type": "kerberos", + "id": "3c829734-0679-4c17-9637-801da48c0d5f", + "description": "Adding a description" + } +} diff --git a/api-ref/source/samples/security-services-list-detailed-response.json b/api-ref/source/samples/security-services-list-detailed-response.json new file mode 100644 index 0000000000..a593bea0f6 --- /dev/null +++ b/api-ref/source/samples/security-services-list-detailed-response.json @@ -0,0 +1,36 @@ +{ + "security_services": [ + { + "status": "new", + "domain": null, + "project_id": "16e1ab15c35a457e9c2b2aa189f544e1", + "name": "SecServ1", + "created_at": "2015-09-07T12:19:10.000000", + "description": "Creating my first Security Service", + "updated_at": null, + "server": null, + "dns_ip": "10.0.0.0/24", + "user": "demo", + "password": "supersecret", + "type": "kerberos", + "id": "3c829734-0679-4c17-9637-801da48c0d5f", + "share_networks": [] + }, + { + "status": "new", + "domain": null, + "project_id": "16e1ab15c35a457e9c2b2aa189f544e1", + "name": "SecServ2", + "created_at": "2015-09-07T12:25:03.000000", + "description": "Creating my second Security Service", + "updated_at": null, + "server": null, + "dns_ip": "10.0.0.0/24", + "user": null, + "password": null, + "type": "ldap", + "id": "5a1d3a12-34a7-4087-8983-50e9ed03509a", + "share_networks": [] + } + ] +} diff --git a/api-ref/source/samples/security-services-list-for-share-network-response.json b/api-ref/source/samples/security-services-list-for-share-network-response.json new file mode 100644 index 0000000000..8abfabd804 --- /dev/null +++ b/api-ref/source/samples/security-services-list-for-share-network-response.json @@ -0,0 +1,40 @@ +{ + "security_services": [ + { + "status": "new", + "domain": null, + "project_id": "16e1ab15c35a457e9c2b2aa189f544e1", + "name": "SecServ1", + "created_at": "2015-09-07T12:19:10.000000", + "description": "Creating my first Security Service", + "updated_at": null, + "server": null, + "dns_ip": "10.0.0.0/24", + "user": "demo", + "password": "supersecret", + "type": "kerberos", + "id": "3c829734-0679-4c17-9637-801da48c0d5f", + "share_networks": [ + "d8ae6799-2567-4a89-aafb-fa4424350d2b" + ] + }, + { + "status": "new", + "domain": null, + "project_id": "16e1ab15c35a457e9c2b2aa189f544e1", + "name": "SecServ2", + "created_at": "2015-09-07T12:25:03.000000", + "description": "Creating my second Security Service", + "updated_at": null, + "server": null, + "dns_ip": "10.0.0.0/24", + "user": null, + "password": null, + "type": "ldap", + "id": "5a1d3a12-34a7-4087-8983-50e9ed03509a", + "share_networks": [ + "d8ae6799-2567-4a89-aafb-fa4424350d2b" + ] + } + ] +} diff --git a/api-ref/source/samples/security-services-list-response.json b/api-ref/source/samples/security-services-list-response.json new file mode 100644 index 0000000000..9dfedf1060 --- /dev/null +++ b/api-ref/source/samples/security-services-list-response.json @@ -0,0 +1,16 @@ +{ + "security_services": [ + { + "status": "new", + "type": "kerberos", + "id": "3c829734-0679-4c17-9637-801da48c0d5f", + "name": "SecServ1" + }, + { + "status": "new", + "type": "ldap", + "id": "5a1d3a12-34a7-4087-8983-50e9ed03509a", + "name": "SecServ2" + } + ] +} diff --git a/api-ref/source/samples/service-disable-request.json b/api-ref/source/samples/service-disable-request.json new file mode 100644 index 0000000000..5d593a4954 --- /dev/null +++ b/api-ref/source/samples/service-disable-request.json @@ -0,0 +1,4 @@ +{ + "binary": "manila-share", + "host": "openstackhost@generic#pool_0" +} diff --git a/api-ref/source/samples/service-disable-response.json b/api-ref/source/samples/service-disable-response.json new file mode 100644 index 0000000000..22ed08284d --- /dev/null +++ b/api-ref/source/samples/service-disable-response.json @@ -0,0 +1,5 @@ +{ + "disabled": true, + "binary": "manila-share", + "host": "openstackhost@generic#pool_0" +} diff --git a/api-ref/source/samples/service-enable-request.json b/api-ref/source/samples/service-enable-request.json new file mode 100644 index 0000000000..5d593a4954 --- /dev/null +++ b/api-ref/source/samples/service-enable-request.json @@ -0,0 +1,4 @@ +{ + "binary": "manila-share", + "host": "openstackhost@generic#pool_0" +} diff --git a/api-ref/source/samples/service-enable-response.json b/api-ref/source/samples/service-enable-response.json new file mode 100644 index 0000000000..6e478247dc --- /dev/null +++ b/api-ref/source/samples/service-enable-response.json @@ -0,0 +1,5 @@ +{ + "disabled": false, + "binary": "manila-share", + "host": "openstackhost@generic#pool_0" +} diff --git a/api-ref/source/samples/services-list-response.json b/api-ref/source/samples/services-list-response.json new file mode 100644 index 0000000000..7ebb3e1fbe --- /dev/null +++ b/api-ref/source/samples/services-list-response.json @@ -0,0 +1,22 @@ +{ + "services": [ + { + "status": "enabled", + "binary": "manila-share", + "zone": "nova", + "host": "manila2@generic1", + "updated_at": "2015-09-07T13:03:57.000000", + "state": "up", + "id": 1 + }, + { + "status": "enabled", + "binary": "manila-scheduler", + "zone": "nova", + "host": "manila2", + "updated_at": "2015-09-07T13:03:57.000000", + "state": "up", + "id": 2 + } + ] +} diff --git a/api-ref/source/samples/services-list-with-filters-response.json b/api-ref/source/samples/services-list-with-filters-response.json new file mode 100644 index 0000000000..ae25d76adc --- /dev/null +++ b/api-ref/source/samples/services-list-with-filters-response.json @@ -0,0 +1,13 @@ +{ + "services": [ + { + "status": "enabled", + "binary": "manila-share", + "zone": "nova", + "host": "manila2@generic1", + "updated_at": "2015-09-07T13:14:27.000000", + "state": "up", + "id": 1 + } + ] +} diff --git a/api-ref/source/samples/share-actions-extend-request.json b/api-ref/source/samples/share-actions-extend-request.json new file mode 100644 index 0000000000..0da9b36246 --- /dev/null +++ b/api-ref/source/samples/share-actions-extend-request.json @@ -0,0 +1,5 @@ +{ + "extend": { + "new_size": 2 + } +} diff --git a/api-ref/source/samples/share-actions-force-delete-request.json b/api-ref/source/samples/share-actions-force-delete-request.json new file mode 100644 index 0000000000..efe8678808 --- /dev/null +++ b/api-ref/source/samples/share-actions-force-delete-request.json @@ -0,0 +1,3 @@ +{ + "force_delete": null +} diff --git a/api-ref/source/samples/share-actions-grant-access-request.json b/api-ref/source/samples/share-actions-grant-access-request.json new file mode 100644 index 0000000000..6a8d5d66dd --- /dev/null +++ b/api-ref/source/samples/share-actions-grant-access-request.json @@ -0,0 +1,7 @@ +{ + "allow_access": { + "access_level": "rw", + "access_type": "ip", + "access_to": "0.0.0.0/0" + } +} diff --git a/api-ref/source/samples/share-actions-grant-access-response.json b/api-ref/source/samples/share-actions-grant-access-response.json new file mode 100644 index 0000000000..823ee6612b --- /dev/null +++ b/api-ref/source/samples/share-actions-grant-access-response.json @@ -0,0 +1,11 @@ +{ + "access": { + "share_id": "406ea93b-32e9-4907-a117-148b3945749f", + "created_at": "2015-09-07T09:14:48.000000", + "updated_at": null, + "access_type": "ip", + "access_to": "0.0.0.0/0", + "access_level": "rw", + "id": "a25b2df3-90bd-4add-afa6-5f0dbbd50452" + } +} diff --git a/api-ref/source/samples/share-actions-list-access-rules-request.json b/api-ref/source/samples/share-actions-list-access-rules-request.json new file mode 100644 index 0000000000..cfced8ffed --- /dev/null +++ b/api-ref/source/samples/share-actions-list-access-rules-request.json @@ -0,0 +1,3 @@ +{ + "access_list": null +} diff --git a/api-ref/source/samples/share-actions-list-access-rules-response.json b/api-ref/source/samples/share-actions-list-access-rules-response.json new file mode 100644 index 0000000000..af015fc3c8 --- /dev/null +++ b/api-ref/source/samples/share-actions-list-access-rules-response.json @@ -0,0 +1,18 @@ +{ + "access_list": [ + { + "access_level": "rw", + "state": "error", + "id": "507bf114-36f2-4f56-8cf4-857985ca87c1", + "access_type": "cert", + "access_to": "example.com" + }, + { + "access_level": "rw", + "state": "active", + "id": "a25b2df3-90bd-4add-afa6-5f0dbbd50452", + "access_type": "ip", + "access_to": "0.0.0.0/0" + } + ] +} diff --git a/api-ref/source/samples/share-actions-reset-state-request.json b/api-ref/source/samples/share-actions-reset-state-request.json new file mode 100644 index 0000000000..e5f70b3722 --- /dev/null +++ b/api-ref/source/samples/share-actions-reset-state-request.json @@ -0,0 +1,5 @@ +{ + "reset_status": { + "status": "error" + } +} diff --git a/api-ref/source/samples/share-actions-revoke-access-request.json b/api-ref/source/samples/share-actions-revoke-access-request.json new file mode 100644 index 0000000000..ca87e51ea0 --- /dev/null +++ b/api-ref/source/samples/share-actions-revoke-access-request.json @@ -0,0 +1,5 @@ +{ + "deny_access": { + "access_id": "a25b2df3-90bd-4add-afa6-5f0dbbd50452" + } +} diff --git a/api-ref/source/samples/share-actions-shrink-request.json b/api-ref/source/samples/share-actions-shrink-request.json new file mode 100644 index 0000000000..ffd082dc75 --- /dev/null +++ b/api-ref/source/samples/share-actions-shrink-request.json @@ -0,0 +1,5 @@ +{ + "shrink": { + "new_size": 1 + } +} diff --git a/api-ref/source/samples/share-actions-unmanage-request.json b/api-ref/source/samples/share-actions-unmanage-request.json new file mode 100644 index 0000000000..2ade77f2bd --- /dev/null +++ b/api-ref/source/samples/share-actions-unmanage-request.json @@ -0,0 +1,3 @@ +{ + "unmanage": null +} diff --git a/api-ref/source/samples/share-create-request.json b/api-ref/source/samples/share-create-request.json new file mode 100644 index 0000000000..c1f55ffbc6 --- /dev/null +++ b/api-ref/source/samples/share-create-request.json @@ -0,0 +1,17 @@ +{ + "share": { + "description": "My custom share London", + "share_type": null, + "share_proto": "nfs", + "share_network_id": "713df749-aac0-4a54-af52-10f6c991e80c", + "name": "share_London", + "consistency_group_id": "9397c191-8427-4661-a2e8-b23820dc01d4", + "snapshot_id": null, + "is_public": true, + "size": 1, + "metadata": { + "project": "my_app", + "aim": "doc" + } + } +} diff --git a/api-ref/source/samples/share-create-response.json b/api-ref/source/samples/share-create-response.json new file mode 100644 index 0000000000..96d56b310f --- /dev/null +++ b/api-ref/source/samples/share-create-response.json @@ -0,0 +1,44 @@ +{ + "share": { + "status": null, + "share_server_id": null, + "project_id": "16e1ab15c35a457e9c2b2aa189f544e1", + "name": "share_London", + "share_type": "25747776-08e5-494f-ab40-a64b9d20d8f7", + "share_type_name": "default", + "availability_zone": null, + "created_at": "2015-09-18T10:25:24.533287", + "export_location": null, + "links": [ + { + "href": "http://172.18.198.54:8786/v1/16e1ab15c35a457e9c2b2aa189f544e1/shares/011d21e2-fbc3-4e4a-9993-9ea223f73264", + "rel": "self" + }, + { + "href": "http://172.18.198.54:8786/16e1ab15c35a457e9c2b2aa189f544e1/shares/011d21e2-fbc3-4e4a-9993-9ea223f73264", + "rel": "bookmark" + } + ], + "share_network_id": null, + "export_locations": [], + "share_proto": "NFS", + "host": null, + "access_rules_status": "active", + "has_replicas": false, + "replication_type": null, + "task_state": null, + "snapshot_support": true, + "consistency_group_id": "9397c191-8427-4661-a2e8-b23820dc01d4", + "source_cgsnapshot_member_id": null, + "volume_type": "default", + "snapshot_id": null, + "is_public": true, + "metadata": { + "project": "my_app", + "aim": "doc" + }, + "id": "011d21e2-fbc3-4e4a-9993-9ea223f73264", + "size": 1, + "description": "My custom share London" + } +} diff --git a/api-ref/source/samples/share-instance-actions-force-delete-request.json b/api-ref/source/samples/share-instance-actions-force-delete-request.json new file mode 100644 index 0000000000..efe8678808 --- /dev/null +++ b/api-ref/source/samples/share-instance-actions-force-delete-request.json @@ -0,0 +1,3 @@ +{ + "force_delete": null +} diff --git a/api-ref/source/samples/share-instance-actions-reset-state-request.json b/api-ref/source/samples/share-instance-actions-reset-state-request.json new file mode 100644 index 0000000000..f602ff8da0 --- /dev/null +++ b/api-ref/source/samples/share-instance-actions-reset-state-request.json @@ -0,0 +1,5 @@ +{ + "reset_status": { + "status": "available" + } +} diff --git a/api-ref/source/samples/share-instances-list-response.json b/api-ref/source/samples/share-instances-list-response.json new file mode 100644 index 0000000000..09cc2873c7 --- /dev/null +++ b/api-ref/source/samples/share-instances-list-response.json @@ -0,0 +1,34 @@ +{ + "share_instances": [ + { + "status": "error", + "share_id": "406ea93b-32e9-4907-a117-148b3945749f", + "availability_zone": "nova", + "replica_state": null, + "created_at": "2015-09-07T08:41:20.000000", + "export_location": "10.254.0.3:/shares/share-081f7030-c54f-42f5-98ee-93a37393e0f2", + "share_network_id": "713df749-aac0-4a54-af52-10f6c991e80c", + "export_locations": [ + "10.254.0.3:/shares/share-081f7030-c54f-42f5-98ee-93a37393e0f2" + ], + "share_server_id": "ba11930a-bf1a-4aa7-bae4-a8dfbaa3cc73", + "host": "manila2@generic1#GENERIC1", + "id": "081f7030-c54f-42f5-98ee-93a37393e0f2" + }, + { + "status": "available", + "share_id": "d94a8548-2079-4be0-b21c-0a887acd31ca", + "availability_zone": "nova", + "replica_state": null, + "created_at": "2015-09-07T08:51:34.000000", + "export_location": "10.254.0.3:/shares/share-75559a8b-c90c-42a7-bda2-edbe86acfb7b", + "share_network_id": "713df749-aac0-4a54-af52-10f6c991e80c", + "export_locations": [ + "10.254.0.3:/shares/share-75559a8b-c90c-42a7-bda2-edbe86acfb7b" + ], + "share_server_id": "ba11930a-bf1a-4aa7-bae4-a8dfbaa3cc73", + "host": "manila2@generic1#GENERIC1", + "id": "75559a8b-c90c-42a7-bda2-edbe86acfb7b" + } + ] +} diff --git a/api-ref/source/samples/share-manage-request.json b/api-ref/source/samples/share-manage-request.json new file mode 100644 index 0000000000..291c34469e --- /dev/null +++ b/api-ref/source/samples/share-manage-request.json @@ -0,0 +1,15 @@ +{ + "share": { + "protocol": "nfs", + "name": "accounting_p8787", + "share_type": "gold", + "driver_options": { + "opt1": "opt1", + "opt2": "opt2" + }, + "export_path": "192.162.10.6:/shares/share-accounting_p8787", + "service_host": "manila2@openstackstor01#accountingpool", + "is_public": true, + "description": "Common storage for spreadsheets and presentations. Please contact John Accessman to be added to the users of this drive." + } +} diff --git a/api-ref/source/samples/share-manage-response.json b/api-ref/source/samples/share-manage-response.json new file mode 100644 index 0000000000..45ebd40b7b --- /dev/null +++ b/api-ref/source/samples/share-manage-response.json @@ -0,0 +1,40 @@ +{ + "share": { + "links": [ + { + "href": "http://172.18.198.54:8786/v2/16e1ab15c35a457e9c2b2aa189f544e1/shares/00137b40-ca06-4ae8-83a3-2c5989eebcce", + "rel": "self" + }, + { + "href": "http://172.18.198.54:8786/16e1ab15c35a457e9c2b2aa189f544e1/shares/00137b40-ca06-4ae8-83a3-2c5989eebcce", + "rel": "bookmark" + } + ], + "availability_zone": null, + "share_network_id": null, + "export_locations": [], + "share_server_id": null, + "snapshot_id": null, + "id": "00137b40-ca06-4ae8-83a3-2c5989eebcce", + "size": null, + "share_type": "14747856-08e5-494f-ab40-a64b9d20d8f7", + "share_type_name": "d", + "export_location": "10.254.0.5:/shares/share-42033c24-0261-424f-abda-4fef2f6dbfd5", + "consistency_group_id": null, + "project_id": "16e1ab15c35a457e9c2b2aa189f544e1", + "metadata": {}, + "status": "manage_starting", + "description": "Lets manage share.", + "host": "manila2@unmanage1#UNMANAGE1", + "access_rules_status": "active", + "has_replicas": false, + "replication_type": null, + "is_public": false, + "snapshot_support": true, + "name": "share_texas1", + "created_at": "2015-09-17T16:21:12.000000", + "share_proto": "NFS", + "volume_type": "d", + "source_cgsnapshot_member_id": null + } +} diff --git a/api-ref/source/samples/share-network-add-security-service-request.json b/api-ref/source/samples/share-network-add-security-service-request.json new file mode 100644 index 0000000000..927c581eb3 --- /dev/null +++ b/api-ref/source/samples/share-network-add-security-service-request.json @@ -0,0 +1,5 @@ +{ + "add_security_service": { + "security_service_id": "3c829734-0679-4c17-9637-801da48c0d5f" + } +} diff --git a/api-ref/source/samples/share-network-add-security-service-response.json b/api-ref/source/samples/share-network-add-security-service-response.json new file mode 100644 index 0000000000..32c13657a3 --- /dev/null +++ b/api-ref/source/samples/share-network-add-security-service-response.json @@ -0,0 +1,17 @@ +{ + "share_network": { + "name": "net2", + "segmentation_id": null, + "created_at": "2015-09-07T12:31:12.000000", + "neutron_subnet_id": null, + "updated_at": null, + "id": "d8ae6799-2567-4a89-aafb-fa4424350d2b", + "neutron_net_id": null, + "ip_version": null, + "nova_net_id": "998b42ee-2cee-4d36-8b95-67b5ca1f2109", + "cidr": null, + "project_id": "16e1ab15c35a457e9c2b2aa189f544e1", + "network_type": null, + "description": null + } +} diff --git a/api-ref/source/samples/share-network-create-request.json b/api-ref/source/samples/share-network-create-request.json new file mode 100644 index 0000000000..3f4ac2e4d3 --- /dev/null +++ b/api-ref/source/samples/share-network-create-request.json @@ -0,0 +1,8 @@ +{ + "share_network": { + "neutron_net_id": "998b42ee-2cee-4d36-8b95-67b5ca1f2109", + "neutron_subnet_id": "53482b62-2c84-4a53-b6ab-30d9d9800d06", + "name": "my_network", + "description": "This is my share network" + } +} diff --git a/api-ref/source/samples/share-network-create-response.json b/api-ref/source/samples/share-network-create-response.json new file mode 100644 index 0000000000..81bdabcf58 --- /dev/null +++ b/api-ref/source/samples/share-network-create-response.json @@ -0,0 +1,17 @@ +{ + "share_network": { + "name": "my_network", + "segmentation_id": null, + "created_at": "2015-09-07T14:37:00.583656", + "neutron_subnet_id": "53482b62-2c84-4a53-b6ab-30d9d9800d06", + "updated_at": null, + "id": "77eb3421-4549-4789-ac39-0d5185d68c29", + "neutron_net_id": "998b42ee-2cee-4d36-8b95-67b5ca1f2109", + "ip_version": null, + "nova_net_id": null, + "cidr": null, + "project_id": "e10a683c20da41248cfd5e1ab3d88c62", + "network_type": null, + "description": "This is my share network" + } +} diff --git a/api-ref/source/samples/share-network-remove-security-service-request.json b/api-ref/source/samples/share-network-remove-security-service-request.json new file mode 100644 index 0000000000..221831015f --- /dev/null +++ b/api-ref/source/samples/share-network-remove-security-service-request.json @@ -0,0 +1,5 @@ +{ + "remove_security_service": { + "security_service_id": "3c829734-0679-4c17-9637-801da48c0d5f" + } +} diff --git a/api-ref/source/samples/share-network-remove-security-service-response.json b/api-ref/source/samples/share-network-remove-security-service-response.json new file mode 100644 index 0000000000..32c13657a3 --- /dev/null +++ b/api-ref/source/samples/share-network-remove-security-service-response.json @@ -0,0 +1,17 @@ +{ + "share_network": { + "name": "net2", + "segmentation_id": null, + "created_at": "2015-09-07T12:31:12.000000", + "neutron_subnet_id": null, + "updated_at": null, + "id": "d8ae6799-2567-4a89-aafb-fa4424350d2b", + "neutron_net_id": null, + "ip_version": null, + "nova_net_id": "998b42ee-2cee-4d36-8b95-67b5ca1f2109", + "cidr": null, + "project_id": "16e1ab15c35a457e9c2b2aa189f544e1", + "network_type": null, + "description": null + } +} diff --git a/api-ref/source/samples/share-network-show-response.json b/api-ref/source/samples/share-network-show-response.json new file mode 100644 index 0000000000..5a94c78f75 --- /dev/null +++ b/api-ref/source/samples/share-network-show-response.json @@ -0,0 +1,17 @@ +{ + "share_network": { + "name": "net_my1", + "segmentation_id": null, + "created_at": "2015-09-04T14:56:45.000000", + "neutron_subnet_id": "53482b62-2c84-4a53-b6ab-30d9d9800d06", + "updated_at": null, + "id": "7f950b52-6141-4a08-bbb5-bb7ffa3ea5fd", + "neutron_net_id": "998b42ee-2cee-4d36-8b95-67b5ca1f2109", + "ip_version": null, + "nova_net_id": null, + "cidr": null, + "project_id": "16e1ab15c35a457e9c2b2aa189f544e1", + "network_type": null, + "description": "descr" + } +} diff --git a/api-ref/source/samples/share-network-update-request.json b/api-ref/source/samples/share-network-update-request.json new file mode 100644 index 0000000000..a2b932f72a --- /dev/null +++ b/api-ref/source/samples/share-network-update-request.json @@ -0,0 +1,5 @@ +{ + "share_network": { + "description": "i'm adding a description" + } +} diff --git a/api-ref/source/samples/share-network-update-response.json b/api-ref/source/samples/share-network-update-response.json new file mode 100644 index 0000000000..c606f62d8a --- /dev/null +++ b/api-ref/source/samples/share-network-update-response.json @@ -0,0 +1,17 @@ +{ + "share_network": { + "name": "net_my", + "segmentation_id": null, + "created_at": "2015-09-04T14:54:25.000000", + "neutron_subnet_id": "53482b62-2c84-4a53-b6ab-30d9d9800d06", + "updated_at": "2015-09-07T08:02:53.512184", + "id": "713df749-aac0-4a54-af52-10f6c991e80c", + "neutron_net_id": "998b42ee-2cee-4d36-8b95-67b5ca1f2109", + "ip_version": "4", + "nova_net_id": null, + "cidr": null, + "project_id": "16e1ab15c35a457e9c2b2aa189f544e1", + "network_type": null, + "description": "i'm adding a description" + } +} diff --git a/api-ref/source/samples/share-networks-list-detailed-response.json b/api-ref/source/samples/share-networks-list-detailed-response.json new file mode 100644 index 0000000000..a36cebe89e --- /dev/null +++ b/api-ref/source/samples/share-networks-list-detailed-response.json @@ -0,0 +1,49 @@ +{ + "share_networks": [ + { + "name": "net_my1", + "segmentation_id": null, + "created_at": "2015-09-04T14:57:13.000000", + "neutron_subnet_id": "53482b62-2c84-4a53-b6ab-30d9d9800d06", + "updated_at": null, + "id": "32763294-e3d4-456a-998d-60047677c2fb", + "neutron_net_id": "998b42ee-2cee-4d36-8b95-67b5ca1f2109", + "ip_version": null, + "nova_net_id": null, + "cidr": null, + "project_id": "16e1ab15c35a457e9c2b2aa189f544e1", + "network_type": null, + "description": "descr" + }, + { + "name": "net_my", + "segmentation_id": null, + "created_at": "2015-09-04T14:54:25.000000", + "neutron_subnet_id": "53482b62-2c84-4a53-b6ab-30d9d9800d06", + "updated_at": null, + "id": "713df749-aac0-4a54-af52-10f6c991e80c", + "neutron_net_id": "998b42ee-2cee-4d36-8b95-67b5ca1f2109", + "ip_version": null, + "nova_net_id": null, + "cidr": null, + "project_id": "16e1ab15c35a457e9c2b2aa189f544e1", + "network_type": null, + "description": "desecr" + }, + { + "name": null, + "segmentation_id": null, + "created_at": "2015-09-04T14:51:41.000000", + "neutron_subnet_id": null, + "updated_at": null, + "id": "fa158a3d-6d9f-4187-9ca5-abbb82646eb2", + "neutron_net_id": null, + "ip_version": null, + "nova_net_id": null, + "cidr": null, + "project_id": "16e1ab15c35a457e9c2b2aa189f544e1", + "network_type": null, + "description": null + } + ] +} diff --git a/api-ref/source/samples/share-networks-list-response.json b/api-ref/source/samples/share-networks-list-response.json new file mode 100644 index 0000000000..dc3ba346c3 --- /dev/null +++ b/api-ref/source/samples/share-networks-list-response.json @@ -0,0 +1,16 @@ +{ + "share_networks": [ + { + "id": "32763294-e3d4-456a-998d-60047677c2fb", + "name": "net_my1" + }, + { + "id": "713df749-aac0-4a54-af52-10f6c991e80c", + "name": "net_my" + }, + { + "id": "fa158a3d-6d9f-4187-9ca5-abbb82646eb2", + "name": null + } + ] +} diff --git a/api-ref/source/samples/share-server-show-details-response.json b/api-ref/source/samples/share-server-show-details-response.json new file mode 100644 index 0000000000..d4cc68f511 --- /dev/null +++ b/api-ref/source/samples/share-server-show-details-response.json @@ -0,0 +1,12 @@ +{ + "details": { + "username": "manila", + "router_id": "4b62ce91-56c5-45c1-b0ef-8cbbe5dd34f4", + "pk_path": "/opt/stack/.ssh/id_rsa", + "subnet_id": "16e99ad6-5191-461c-9f34-ac84a39c3adb", + "ip": "10.254.0.3", + "instance_id": "75f2f282-af65-49ba-a7b1-525705b1bf1a", + "public_address": "10.254.0.3", + "service_port_id": "8ff21760-961e-4b83-a032-03fd559bb1d3" + } +} diff --git a/api-ref/source/samples/share-server-show-response.json b/api-ref/source/samples/share-server-show-response.json new file mode 100644 index 0000000000..4081089ff1 --- /dev/null +++ b/api-ref/source/samples/share-server-show-response.json @@ -0,0 +1,22 @@ +{ + "share_server": { + "status": "active", + "backend_details": { + "username": "manila", + "router_id": "4b62ce91-56c5-45c1-b0ef-8cbbe5dd34f4", + "pk_path": "/opt/stack/.ssh/id_rsa", + "subnet_id": "16e99ad6-5191-461c-9f34-ac84a39c3adb", + "ip": "10.254.0.3", + "instance_id": "75f2f282-af65-49ba-a7b1-525705b1bf1a", + "public_address": "10.254.0.3", + "service_port_id": "8ff21760-961e-4b83-a032-03fd559bb1d3" + }, + "created_at": "2015-09-07T08:37:19.000000", + "updated_at": "2015-09-07T08:52:15.000000", + "share_network_name": "net_my", + "host": "manila2@generic1", + "share_network_id": "713df749-aac0-4a54-af52-10f6c991e80c", + "project_id": "16e1ab15c35a457e9c2b2aa189f544e1", + "id": "ba11930a-bf1a-4aa7-bae4-a8dfbaa3cc73" + } +} diff --git a/api-ref/source/samples/share-servers-list-response.json b/api-ref/source/samples/share-servers-list-response.json new file mode 100644 index 0000000000..4f4edbaf55 --- /dev/null +++ b/api-ref/source/samples/share-servers-list-response.json @@ -0,0 +1,13 @@ +{ + "share_servers": [ + { + "status": "active", + "updated_at": "2015-09-07T08:52:15.000000", + "share_network_id": "713df749-aac0-4a54-af52-10f6c991e80c", + "host": "manila2@generic1", + "share_network_name": "net_my", + "project_id": "16e1ab15c35a457e9c2b2aa189f544e1", + "id": "ba11930a-bf1a-4aa7-bae4-a8dfbaa3cc73" + } + ] +} diff --git a/api-ref/source/samples/share-set-metadata-request.json b/api-ref/source/samples/share-set-metadata-request.json new file mode 100644 index 0000000000..282342e6d5 --- /dev/null +++ b/api-ref/source/samples/share-set-metadata-request.json @@ -0,0 +1,5 @@ +{ + "metadata": { + "key1": "value1" + } +} diff --git a/api-ref/source/samples/share-set-metadata-response.json b/api-ref/source/samples/share-set-metadata-response.json new file mode 100644 index 0000000000..5bdb58d3bd --- /dev/null +++ b/api-ref/source/samples/share-set-metadata-response.json @@ -0,0 +1,9 @@ +{ + "metadata": { + "aim": "changed_doc", + "project": "my_app", + "key1": "value1", + "new_metadata_key": "new_information", + "key": "value" + } +} diff --git a/api-ref/source/samples/share-show-instance-response.json b/api-ref/source/samples/share-show-instance-response.json new file mode 100644 index 0000000000..0dd4b6df85 --- /dev/null +++ b/api-ref/source/samples/share-show-instance-response.json @@ -0,0 +1,18 @@ +{ + "share_instance": { + "status": "available", + "share_id": "d94a8548-2079-4be0-b21c-0a887acd31ca", + "availability_zone": "nova", + "replica_state": null, + "created_at": "2015-09-07T08:51:34.000000", + "export_location": "10.254.0.3:/shares/share-75559a8b-c90c-42a7-bda2-edbe86acfb7b", + "share_network_id": "713df749-aac0-4a54-af52-10f6c991e80c", + "export_locations": [ + "10.254.0.3:/shares/share-75559a8b-c90c-42a7-bda2-edbe86acfb7b" + ], + "share_server_id": "ba11930a-bf1a-4aa7-bae4-a8dfbaa3cc73", + "host": "manila2@generic1#GENERIC1", + "access_rules_status": "active", + "id": "75559a8b-c90c-42a7-bda2-edbe86acfb7b" + } +} diff --git a/api-ref/source/samples/share-show-metadata-response.json b/api-ref/source/samples/share-show-metadata-response.json new file mode 100644 index 0000000000..f9793457de --- /dev/null +++ b/api-ref/source/samples/share-show-metadata-response.json @@ -0,0 +1,6 @@ +{ + "metadata": { + "project": "my_app", + "aim": "doc" + } +} diff --git a/api-ref/source/samples/share-show-response.json b/api-ref/source/samples/share-show-response.json new file mode 100644 index 0000000000..4aedc8a015 --- /dev/null +++ b/api-ref/source/samples/share-show-response.json @@ -0,0 +1,44 @@ +{ + "share": { + "links": [ + { + "href": "http://172.18.198.54:8786/v2/16e1ab15c35a457e9c2b2aa189f544e1/shares/011d21e2-fbc3-4e4a-9993-9ea223f73264", + "rel": "self" + }, + { + "href": "http://172.18.198.54:8786/16e1ab15c35a457e9c2b2aa189f544e1/shares/011d21e2-fbc3-4e4a-9993-9ea223f73264", + "rel": "bookmark" + } + ], + "availability_zone": "nova", + "share_network_id": "713df749-aac0-4a54-af52-10f6c991e80c", + "export_locations": [], + "share_server_id": "e268f4aa-d571-43dd-9ab3-f49ad06ffaef", + "snapshot_id": null, + "id": "011d21e2-fbc3-4e4a-9993-9ea223f73264", + "size": 1, + "share_type": "25747776-08e5-494f-ab40-a64b9d20d8f7", + "share_type_name": "default", + "export_location": null, + "consistency_group_id": "9397c191-8427-4661-a2e8-b23820dc01d4", + "project_id": "16e1ab15c35a457e9c2b2aa189f544e1", + "metadata": { + "project": "my_app", + "aim": "doc" + }, + "status": "available", + "description": "My custom share London", + "host": "manila2@generic1#GENERIC1", + "access_rules_status": "active", + "has_replicas": false, + "replication_type": null, + "task_state": null, + "is_public": true, + "snapshot_support": true, + "name": "share_London", + "created_at": "2015-09-18T10:25:24.000000", + "share_proto": "NFS", + "volume_type": "default", + "source_cgsnapshot_member_id": null + } +} diff --git a/api-ref/source/samples/share-type-create-request.json b/api-ref/source/samples/share-type-create-request.json new file mode 100644 index 0000000000..de6af3a618 --- /dev/null +++ b/api-ref/source/samples/share-type-create-request.json @@ -0,0 +1,10 @@ +{ + "volume_type": { + "os-share-type-access:is_public": true, + "extra_specs": { + "driver_handles_share_servers": true, + "snapshot_support": true + }, + "name": "my_new_volume_type" + } +} diff --git a/api-ref/source/samples/share-type-create-response.json b/api-ref/source/samples/share-type-create-response.json new file mode 100644 index 0000000000..12e0911042 --- /dev/null +++ b/api-ref/source/samples/share-type-create-response.json @@ -0,0 +1,26 @@ +{ + "volume_type": { + "os-share-type-access:is_public": true, + "required_extra_specs": { + "driver_handles_share_servers": true + }, + "extra_specs": { + "snapshot_support": "True", + "driver_handles_share_servers": "True" + }, + "name": "my_new_volume_type", + "id": "1d600d02-26a7-4b23-af3d-7d51860fe858" + }, + "share_type": { + "os-share-type-access:is_public": true, + "required_extra_specs": { + "driver_handles_share_servers": true + }, + "extra_specs": { + "snapshot_support": "True", + "driver_handles_share_servers": "True" + }, + "name": "my_new_volume_type", + "id": "1d600d02-26a7-4b23-af3d-7d51860fe858" + } +} diff --git a/api-ref/source/samples/share-type-grant-access-request.json b/api-ref/source/samples/share-type-grant-access-request.json new file mode 100644 index 0000000000..952cf49632 --- /dev/null +++ b/api-ref/source/samples/share-type-grant-access-request.json @@ -0,0 +1,5 @@ +{ + "addProjectAccess": { + "project": "e1284adea3ee4d2482af5ed214f3ad90" + } +} diff --git a/api-ref/source/samples/share-type-revoke-access-request.json b/api-ref/source/samples/share-type-revoke-access-request.json new file mode 100644 index 0000000000..bdc492dd4f --- /dev/null +++ b/api-ref/source/samples/share-type-revoke-access-request.json @@ -0,0 +1,5 @@ +{ + "removeProjectAccess": { + "project": "818a3f48dcd644909b3fa2e45a399a27" + } +} diff --git a/api-ref/source/samples/share-type-set-request.json b/api-ref/source/samples/share-type-set-request.json new file mode 100644 index 0000000000..0c3330e03b --- /dev/null +++ b/api-ref/source/samples/share-type-set-request.json @@ -0,0 +1,5 @@ +{ + "extra_specs": { + "my_key": "my_value" + } +} diff --git a/api-ref/source/samples/share-type-set-response.json b/api-ref/source/samples/share-type-set-response.json new file mode 100644 index 0000000000..0c3330e03b --- /dev/null +++ b/api-ref/source/samples/share-type-set-response.json @@ -0,0 +1,5 @@ +{ + "extra_specs": { + "my_key": "my_value" + } +} diff --git a/api-ref/source/samples/share-types-default-list-response.json b/api-ref/source/samples/share-types-default-list-response.json new file mode 100644 index 0000000000..bd3060ead2 --- /dev/null +++ b/api-ref/source/samples/share-types-default-list-response.json @@ -0,0 +1,20 @@ +{ + "volume_type": { + "required_extra_specs": null, + "extra_specs": { + "snapshot_support": "True", + "driver_handles_share_servers": "True" + }, + "name": "default", + "id": "be27425c-f807-4500-a056-d00721db45cf" + }, + "share_type": { + "required_extra_specs": null, + "extra_specs": { + "snapshot_support": "True", + "driver_handles_share_servers": "True" + }, + "name": "default", + "id": "be27425c-f807-4500-a056-d00721db45cf" + } +} diff --git a/api-ref/source/samples/share-types-extra-specs-list-response.json b/api-ref/source/samples/share-types-extra-specs-list-response.json new file mode 100644 index 0000000000..9752fe43ea --- /dev/null +++ b/api-ref/source/samples/share-types-extra-specs-list-response.json @@ -0,0 +1,6 @@ +{ + "extra_specs": { + "snapshot_support": "True", + "driver_handles_share_servers": "True" + } +} diff --git a/api-ref/source/samples/share-types-list-access-response.json b/api-ref/source/samples/share-types-list-access-response.json new file mode 100644 index 0000000000..d4e5bf42cb --- /dev/null +++ b/api-ref/source/samples/share-types-list-access-response.json @@ -0,0 +1,12 @@ +{ + "share_type_access": [ + { + "share_type_id": "1732f284-401d-41d9-a494-425451e8b4b8", + "project_id": "818a3f48dcd644909b3fa2e45a399a27" + }, + { + "share_type_id": "1732f284-401d-41d9-a494-425451e8b4b8", + "project_id": "e1284adea3ee4d2482af5ed214f3ad90" + } + ] +} diff --git a/api-ref/source/samples/share-types-list-response.json b/api-ref/source/samples/share-types-list-response.json new file mode 100644 index 0000000000..412e893daa --- /dev/null +++ b/api-ref/source/samples/share-types-list-response.json @@ -0,0 +1,54 @@ +{ + "volume_types": [ + { + "os-share-type-access:is_public": true, + "required_extra_specs": { + "driver_handles_share_servers": "True" + }, + "extra_specs": { + "snapshot_support": "True", + "driver_handles_share_servers": "True" + }, + "name": "default", + "id": "be27425c-f807-4500-a056-d00721db45cf" + }, + { + "os-share-type-access:is_public": true, + "required_extra_specs": { + "driver_handles_share_servers": "false" + }, + "extra_specs": { + "snapshot_support": "True", + "driver_handles_share_servers": "false" + }, + "name": "d", + "id": "f015bebe-c38b-4c49-8832-00143b10253b" + } + ], + "share_types": [ + { + "os-share-type-access:is_public": true, + "required_extra_specs": { + "driver_handles_share_servers": "True" + }, + "extra_specs": { + "snapshot_support": "True", + "driver_handles_share_servers": "True" + }, + "name": "default", + "id": "be27425c-f807-4500-a056-d00721db45cf" + }, + { + "os-share-type-access:is_public": true, + "required_extra_specs": { + "driver_handles_share_servers": "false" + }, + "extra_specs": { + "snapshot_support": "True", + "driver_handles_share_servers": "false" + }, + "name": "d", + "id": "f015bebe-c38b-4c49-8832-00143b10253b" + } + ] +} diff --git a/api-ref/source/samples/share-update-metadata-request.json b/api-ref/source/samples/share-update-metadata-request.json new file mode 100644 index 0000000000..d4559547f4 --- /dev/null +++ b/api-ref/source/samples/share-update-metadata-request.json @@ -0,0 +1,7 @@ +{ + "metadata": { + "aim": "changed_doc", + "project": "my_app", + "new_metadata_key": "new_information" + } +} diff --git a/api-ref/source/samples/share-update-metadata-response.json b/api-ref/source/samples/share-update-metadata-response.json new file mode 100644 index 0000000000..d4559547f4 --- /dev/null +++ b/api-ref/source/samples/share-update-metadata-response.json @@ -0,0 +1,7 @@ +{ + "metadata": { + "aim": "changed_doc", + "project": "my_app", + "new_metadata_key": "new_information" + } +} diff --git a/api-ref/source/samples/share-update-request.json b/api-ref/source/samples/share-update-request.json new file mode 100644 index 0000000000..37fcf6a275 --- /dev/null +++ b/api-ref/source/samples/share-update-request.json @@ -0,0 +1,6 @@ +{ + "share": { + "is_public": true, + "display_description": "Changing the share description." + } +} diff --git a/api-ref/source/samples/share-update-response.json b/api-ref/source/samples/share-update-response.json new file mode 100644 index 0000000000..d7e1a77818 --- /dev/null +++ b/api-ref/source/samples/share-update-response.json @@ -0,0 +1,41 @@ +{ + "share": { + "links": [ + { + "href": "http://172.18.198.54:8786/v2/16e1ab15c35a457e9c2b2aa189f544e1/shares/011d21e2-fbc3-4e4a-9993-9ea223f73264", + "rel": "self" + }, + { + "href": "http://172.18.198.54:8786/16e1ab15c35a457e9c2b2aa189f544e1/shares/011d21e2-fbc3-4e4a-9993-9ea223f73264", + "rel": "bookmark" + } + ], + "availability_zone": "nova", + "share_network_id": "713df749-aac0-4a54-af52-10f6c991e80c", + "export_locations": [], + "share_server_id": "e268f4aa-d571-43dd-9ab3-f49ad06ffaef", + "snapshot_id": null, + "id": "011d21e2-fbc3-4e4a-9993-9ea223f73264", + "size": 1, + "share_type": "25747776-08e5-494f-ab40-a64b9d20d8f7", + "share_type_name": "default", + "export_location": null, + "consistency_group_id": "9397c191-8427-4661-a2e8-b23820dc01d4", + "project_id": "16e1ab15c35a457e9c2b2aa189f544e1", + "metadata": { + "project": "my_app", + "aim": "doc" + }, + "status": "error", + "description": "Changing the share description.", + "host": "manila2@generic1#GENERIC1", + "task_state": null, + "is_public": true, + "snapshot_support": true, + "name": "share_London", + "created_at": "2015-09-18T10:25:24.000000", + "share_proto": "NFS", + "volume_type": "default", + "source_cgsnapshot_member_id": null + } +} diff --git a/api-ref/source/samples/shares-list-detailed-response.json b/api-ref/source/samples/shares-list-detailed-response.json new file mode 100644 index 0000000000..a143d5e74e --- /dev/null +++ b/api-ref/source/samples/shares-list-detailed-response.json @@ -0,0 +1,84 @@ +{ + "shares": [ + { + "links": [ + { + "href": "http://172.18.198.54:8786/v2/16e1ab15c35a457e9c2b2aa189f544e1/shares/f45cc5b2-d1bb-4a3e-ba5b-5c4125613adc", + "rel": "self" + }, + { + "href": "http://172.18.198.54:8786/16e1ab15c35a457e9c2b2aa189f544e1/shares/f45cc5b2-d1bb-4a3e-ba5b-5c4125613adc", + "rel": "bookmark" + } + ], + "availability_zone": "nova", + "share_network_id": "f9b2e754-ac01-4466-86e1-5c569424754e", + "export_locations": [], + "share_server_id": "87d8943a-f5da-47a4-b2f2-ddfa6794aa82", + "snapshot_id": null, + "id": "f45cc5b2-d1bb-4a3e-ba5b-5c4125613adc", + "size": 1, + "share_type": "25747776-08e5-494f-ab40-a64b9d20d8f7", + "share_type_name": "default", + "export_location": null, + "consistency_group_id": "9397c191-8427-4661-a2e8-b23820dc01d4", + "project_id": "16e1ab15c35a457e9c2b2aa189f544e1", + "metadata": {}, + "status": "error", + "access_rules_status": "active", + "description": "There is a share description.", + "host": "manila2@generic1#GENERIC1", + "task_state": null, + "is_public": true, + "snapshot_support": true, + "name": "my_share4", + "has_replicas": false, + "replication_type": null, + "created_at": "2015-09-16T18:19:50.000000", + "share_proto": "NFS", + "volume_type": "default", + "source_cgsnapshot_member_id": null + }, + { + "links": [ + { + "href": "http://172.18.198.54:8786/v2/16e1ab15c35a457e9c2b2aa189f544e1/shares/c4a2ced4-2c9f-4ae1-adaa-6171833e64df", + "rel": "self" + }, + { + "href": "http://172.18.198.54:8786/16e1ab15c35a457e9c2b2aa189f544e1/shares/c4a2ced4-2c9f-4ae1-adaa-6171833e64df", + "rel": "bookmark" + } + ], + "availability_zone": "nova", + "share_network_id": "f9b2e754-ac01-4466-86e1-5c569424754e", + "export_locations": [ + "10.254.0.5:/shares/share-50ad5e7b-f6f1-4b78-a651-0812cef2bb67" + ], + "share_server_id": "87d8943a-f5da-47a4-b2f2-ddfa6794aa82", + "snapshot_id": null, + "id": "c4a2ced4-2c9f-4ae1-adaa-6171833e64df", + "size": 1, + "share_type": "25747776-08e5-494f-ab40-a64b9d20d8f7", + "share_type_name": "default", + "export_location": "10.254.0.5:/shares/share-50ad5e7b-f6f1-4b78-a651-0812cef2bb67", + "consistency_group_id": "9397c191-8427-4661-a2e8-b23820dc01d4", + "project_id": "16e1ab15c35a457e9c2b2aa189f544e1", + "metadata": {}, + "status": "available", + "access_rules_status": "active", + "description": "Changed description.", + "host": "manila2@generic1#GENERIC1", + "task_state": null, + "is_public": true, + "snapshot_support": true, + "name": "my_share4", + "has_replicas": false, + "replication_type": null, + "created_at": "2015-09-16T17:26:28.000000", + "share_proto": "NFS", + "volume_type": "default", + "source_cgsnapshot_member_id": null + } + ] +} diff --git a/api-ref/source/samples/shares-list-response.json b/api-ref/source/samples/shares-list-response.json new file mode 100644 index 0000000000..3e148d5248 --- /dev/null +++ b/api-ref/source/samples/shares-list-response.json @@ -0,0 +1,32 @@ +{ + "shares": [ + { + "id": "d94a8548-2079-4be0-b21c-0a887acd31ca", + "links": [ + { + "href": "http://172.18.198.54:8786/v1/16e1ab15c35a457e9c2b2aa189f544e1/shares/d94a8548-2079-4be0-b21c-0a887acd31ca", + "rel": "self" + }, + { + "href": "http://172.18.198.54:8786/16e1ab15c35a457e9c2b2aa189f544e1/shares/d94a8548-2079-4be0-b21c-0a887acd31ca", + "rel": "bookmark" + } + ], + "name": "My_share" + }, + { + "id": "406ea93b-32e9-4907-a117-148b3945749f", + "links": [ + { + "href": "http://172.18.198.54:8786/v1/16e1ab15c35a457e9c2b2aa189f544e1/shares/406ea93b-32e9-4907-a117-148b3945749f", + "rel": "self" + }, + { + "href": "http://172.18.198.54:8786/16e1ab15c35a457e9c2b2aa189f544e1/shares/406ea93b-32e9-4907-a117-148b3945749f", + "rel": "bookmark" + } + ], + "name": "Share1" + } + ] +} diff --git a/api-ref/source/samples/snapshot-actions-force-delete-request.json b/api-ref/source/samples/snapshot-actions-force-delete-request.json new file mode 100644 index 0000000000..efe8678808 --- /dev/null +++ b/api-ref/source/samples/snapshot-actions-force-delete-request.json @@ -0,0 +1,3 @@ +{ + "force_delete": null +} diff --git a/api-ref/source/samples/snapshot-actions-reset-state-request.json b/api-ref/source/samples/snapshot-actions-reset-state-request.json new file mode 100644 index 0000000000..e5f70b3722 --- /dev/null +++ b/api-ref/source/samples/snapshot-actions-reset-state-request.json @@ -0,0 +1,5 @@ +{ + "reset_status": { + "status": "error" + } +} diff --git a/api-ref/source/samples/snapshot-actions-unmanage-request.json b/api-ref/source/samples/snapshot-actions-unmanage-request.json new file mode 100644 index 0000000000..2ade77f2bd --- /dev/null +++ b/api-ref/source/samples/snapshot-actions-unmanage-request.json @@ -0,0 +1,3 @@ +{ + "unmanage": null +} diff --git a/api-ref/source/samples/snapshot-create-request.json b/api-ref/source/samples/snapshot-create-request.json new file mode 100644 index 0000000000..0540431cda --- /dev/null +++ b/api-ref/source/samples/snapshot-create-request.json @@ -0,0 +1,8 @@ +{ + "snapshot": { + "share_id": "406ea93b-32e9-4907-a117-148b3945749f", + "force": "True", + "name": "snapshot_share1", + "description": "Here is a snapshot of share Share1" + } +} diff --git a/api-ref/source/samples/snapshot-create-response.json b/api-ref/source/samples/snapshot-create-response.json new file mode 100644 index 0000000000..1723e3e233 --- /dev/null +++ b/api-ref/source/samples/snapshot-create-response.json @@ -0,0 +1,23 @@ +{ + "snapshot": { + "status": "creating", + "share_id": "406ea93b-32e9-4907-a117-148b3945749f", + "name": "snapshot_share1", + "links": [ + { + "href": "http://172.18.198.54:8786/v1/16e1ab15c35a457e9c2b2aa189f544e1/snapshots/6d221c1d-0200-461e-8d20-24b4776b9ddb", + "rel": "self" + }, + { + "href": "http://172.18.198.54:8786/16e1ab15c35a457e9c2b2aa189f544e1/snapshots/6d221c1d-0200-461e-8d20-24b4776b9ddb", + "rel": "bookmark" + } + ], + "created_at": "2015-09-07T11:50:39.756808", + "description": "Here is a snapshot of share Share1", + "share_proto": "NFS", + "share_size": 1, + "id": "6d221c1d-0200-461e-8d20-24b4776b9ddb", + "size": 1 + } +} diff --git a/api-ref/source/samples/snapshot-manage-request.json b/api-ref/source/samples/snapshot-manage-request.json new file mode 100644 index 0000000000..f1b9847f26 --- /dev/null +++ b/api-ref/source/samples/snapshot-manage-request.json @@ -0,0 +1,12 @@ +{ + "snapshot": { + "share_id": "dd6c5d35-9db1-4662-a7ae-8b52f880aeba", + "provider_location": "4045fee5-4e0e-408e-97f3-15e25239dbc9", + "name": "managed_snapshot", + "description": "description_of_managed_snapshot", + "driver_options": { + "opt1": "opt1", + "opt2": "opt2" + } + } +} diff --git a/api-ref/source/samples/snapshot-manage-response.json b/api-ref/source/samples/snapshot-manage-response.json new file mode 100644 index 0000000000..9978b10f82 --- /dev/null +++ b/api-ref/source/samples/snapshot-manage-response.json @@ -0,0 +1,24 @@ +{ + "snapshot": { + "id": "22de7000-3a32-4fe1-bd0c-38d03f93dec3", + "share_id": "dd6c5d35-9db1-4662-a7ae-8b52f880aeba", + "share_size": 1, + "created_at": "2016-04-01T15:16:17.000000", + "status": "manage_starting", + "name": "managed_snapshot", + "description": "description_of_managed_snapshot", + "size": 1, + "share_proto": "NFS", + "links": [ + { + "href": "http://127.0.0.1:8786/v2/907004508ef4447397ce6741a8f037c1/snapshots/22de7000-3a32-4fe1-bd0c-38d03f93dec3", + "rel": "self" + }, + { + "href": "http://127.0.0.1:8786/907004508ef4447397ce6741a8f037c1/snapshots/22de7000-3a32-4fe1-bd0c-38d03f93dec3", + "rel": "bookmark" + } + ], + "provider_location": "4045fee5-4e0e-408e-97f3-15e25239dbc9" + } +} diff --git a/api-ref/source/samples/snapshot-show-response.json b/api-ref/source/samples/snapshot-show-response.json new file mode 100644 index 0000000000..d5d9f92a15 --- /dev/null +++ b/api-ref/source/samples/snapshot-show-response.json @@ -0,0 +1,23 @@ +{ + "snapshot": { + "status": "available", + "share_id": "406ea93b-32e9-4907-a117-148b3945749f", + "name": "snapshot_share1", + "links": [ + { + "href": "http://172.18.198.54:8786/v1/16e1ab15c35a457e9c2b2aa189f544e1/snapshots/6d221c1d-0200-461e-8d20-24b4776b9ddb", + "rel": "self" + }, + { + "href": "http://172.18.198.54:8786/16e1ab15c35a457e9c2b2aa189f544e1/snapshots/6d221c1d-0200-461e-8d20-24b4776b9ddb", + "rel": "bookmark" + } + ], + "created_at": "2015-09-07T11:50:39.000000", + "description": "Here is a snapshot of share Share1", + "share_proto": "NFS", + "share_size": 1, + "id": "6d221c1d-0200-461e-8d20-24b4776b9ddb", + "size": 1 + } +} diff --git a/api-ref/source/samples/snapshot-update-request.json b/api-ref/source/samples/snapshot-update-request.json new file mode 100644 index 0000000000..261549cbcc --- /dev/null +++ b/api-ref/source/samples/snapshot-update-request.json @@ -0,0 +1,6 @@ +{ + "snapshot": { + "display_name": "snapshot_Share1", + "display_description": "I am changing a description also. Here is a snapshot of share Share1" + } +} diff --git a/api-ref/source/samples/snapshot-update-response.json b/api-ref/source/samples/snapshot-update-response.json new file mode 100644 index 0000000000..a888c9ccca --- /dev/null +++ b/api-ref/source/samples/snapshot-update-response.json @@ -0,0 +1,23 @@ +{ + "snapshot": { + "status": "available", + "share_id": "406ea93b-32e9-4907-a117-148b3945749f", + "name": "snapshot_Share1", + "links": [ + { + "href": "http://172.18.198.54:8786/v1/16e1ab15c35a457e9c2b2aa189f544e1/snapshots/6d221c1d-0200-461e-8d20-24b4776b9ddb", + "rel": "self" + }, + { + "href": "http://172.18.198.54:8786/16e1ab15c35a457e9c2b2aa189f544e1/snapshots/6d221c1d-0200-461e-8d20-24b4776b9ddb", + "rel": "bookmark" + } + ], + "created_at": "2015-09-07T11:50:39.000000", + "description": "I am changing a description also. Here is a snapshot of share Share1", + "share_proto": "NFS", + "share_size": 1, + "id": "6d221c1d-0200-461e-8d20-24b4776b9ddb", + "size": 1 + } +} diff --git a/api-ref/source/samples/snapshots-list-detailed-response.json b/api-ref/source/samples/snapshots-list-detailed-response.json new file mode 100644 index 0000000000..b1360c0f57 --- /dev/null +++ b/api-ref/source/samples/snapshots-list-detailed-response.json @@ -0,0 +1,46 @@ +{ + "snapshots": [ + { + "status": "creating", + "share_id": "d94a8548-2079-4be0-b21c-0a887acd31ca", + "name": "snapshot_My_share", + "links": [ + { + "href": "http://172.18.198.54:8786/v1/16e1ab15c35a457e9c2b2aa189f544e1/snapshots/086a1aa6-c425-4ecd-9612-391a3b1b9375", + "rel": "self" + }, + { + "href": "http://172.18.198.54:8786/16e1ab15c35a457e9c2b2aa189f544e1/snapshots/086a1aa6-c425-4ecd-9612-391a3b1b9375", + "rel": "bookmark" + } + ], + "created_at": "2015-09-07T11:55:09.000000", + "description": "Here is a snapshot of share My_share", + "share_proto": "NFS", + "share_size": 1, + "id": "086a1aa6-c425-4ecd-9612-391a3b1b9375", + "size": 1 + }, + { + "status": "available", + "share_id": "406ea93b-32e9-4907-a117-148b3945749f", + "name": "snapshot_share1", + "links": [ + { + "href": "http://172.18.198.54:8786/v1/16e1ab15c35a457e9c2b2aa189f544e1/snapshots/6d221c1d-0200-461e-8d20-24b4776b9ddb", + "rel": "self" + }, + { + "href": "http://172.18.198.54:8786/16e1ab15c35a457e9c2b2aa189f544e1/snapshots/6d221c1d-0200-461e-8d20-24b4776b9ddb", + "rel": "bookmark" + } + ], + "created_at": "2015-09-07T11:50:39.000000", + "description": "Here is a snapshot of share Share1", + "share_proto": "NFS", + "share_size": 1, + "id": "6d221c1d-0200-461e-8d20-24b4776b9ddb", + "size": 1 + } + ] +} diff --git a/api-ref/source/samples/snapshots-list-response.json b/api-ref/source/samples/snapshots-list-response.json new file mode 100644 index 0000000000..c8a0e18565 --- /dev/null +++ b/api-ref/source/samples/snapshots-list-response.json @@ -0,0 +1,32 @@ +{ + "snapshots": [ + { + "id": "086a1aa6-c425-4ecd-9612-391a3b1b9375", + "links": [ + { + "href": "http://172.18.198.54:8786/v1/16e1ab15c35a457e9c2b2aa189f544e1/snapshots/086a1aa6-c425-4ecd-9612-391a3b1b9375", + "rel": "self" + }, + { + "href": "http://172.18.198.54:8786/16e1ab15c35a457e9c2b2aa189f544e1/snapshots/086a1aa6-c425-4ecd-9612-391a3b1b9375", + "rel": "bookmark" + } + ], + "name": "snapshot_My_share" + }, + { + "id": "6d221c1d-0200-461e-8d20-24b4776b9ddb", + "links": [ + { + "href": "http://172.18.198.54:8786/v1/16e1ab15c35a457e9c2b2aa189f544e1/snapshots/6d221c1d-0200-461e-8d20-24b4776b9ddb", + "rel": "self" + }, + { + "href": "http://172.18.198.54:8786/16e1ab15c35a457e9c2b2aa189f544e1/snapshots/6d221c1d-0200-461e-8d20-24b4776b9ddb", + "rel": "bookmark" + } + ], + "name": "snapshot_share1" + } + ] +} diff --git a/api-ref/source/samples/versions-get-version-response.json b/api-ref/source/samples/versions-get-version-response.json new file mode 100644 index 0000000000..8ee927da72 --- /dev/null +++ b/api-ref/source/samples/versions-get-version-response.json @@ -0,0 +1,28 @@ +{ + "versions": [ + { + "status": "CURRENT", + "updated": "2015-08-27T11:33:21Z", + "links": [ + { + "href": "http://docs.openstack.org/", + "type": "text/html", + "rel": "describedby" + }, + { + "href": "http://172.18.198.54:8786/v2/", + "rel": "self" + } + ], + "min_version": "2.0", + "version": "2.15", + "media-types": [ + { + "base": "application/json", + "type": "application/vnd.openstack.share+json;version=1" + } + ], + "id": "v2.0" + } + ] +} diff --git a/api-ref/source/samples/versions-index-response.json b/api-ref/source/samples/versions-index-response.json new file mode 100644 index 0000000000..33c483fe63 --- /dev/null +++ b/api-ref/source/samples/versions-index-response.json @@ -0,0 +1,52 @@ +{ + "versions": [ + { + "status": "SUPPORTED", + "updated": "2015-08-27T11:33:21Z", + "links": [ + { + "href": "http://docs.openstack.org/", + "type": "text/html", + "rel": "describedby" + }, + { + "href": "http://172.18.198.54:8786/v1/", + "rel": "self" + } + ], + "min_version": "", + "version": "", + "media-types": [ + { + "base": "application/json", + "type": "application/vnd.openstack.share+json;version=1" + } + ], + "id": "v1.0" + }, + { + "status": "CURRENT", + "updated": "2015-08-27T11:33:21Z", + "links": [ + { + "href": "http://docs.openstack.org/", + "type": "text/html", + "rel": "describedby" + }, + { + "href": "http://172.18.198.54:8786/v2/", + "rel": "self" + } + ], + "min_version": "2.0", + "version": "2.15", + "media-types": [ + { + "base": "application/json", + "type": "application/vnd.openstack.share+json;version=1" + } + ], + "id": "v2.0" + } + ] +} diff --git a/api-ref/source/scheduler-stats.inc b/api-ref/source/scheduler-stats.inc new file mode 100644 index 0000000000..b2ec0e9a96 --- /dev/null +++ b/api-ref/source/scheduler-stats.inc @@ -0,0 +1,102 @@ +.. -*- rst -*- + +=============================== +Scheduler Stats - Storage Pools +=============================== + +An administrator can list all back-end storage pools that are known +to the scheduler service. + + +List back-end storage pools +=========================== + +.. rest_method:: GET /v2/{tenant_id}/scheduler-stats/pools?pool={pool_name}&host={host_name}&backend={backend_name}&capabilities={capabilities} + +Lists all back-end storage pools. If search options are provided, the pool +list that is returned is filtered with these options. + +Normal response codes: 200 +Error response codes: badRequest(400), unauthorized(401), forbidden(403) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id_1 + - pool: pool_1 + - host: host_9 + - backend: backend_1 + - capabilities: capabilities_1 + +Response parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - backend: backend + - host: host_4 + - pool: pool + - name: name_11 + +Response example +---------------- + +.. literalinclude:: samples/pools-list-response.json + :language: javascript + + +List back-end storage pools with details +======================================== + +.. rest_method:: GET /v2/{tenant_id}/scheduler-stats/pools/detail?pool={pool_name}&host={host_name}&backend={backend_name}&capabilities={capabilities} + +Lists all back-end storage pools with details. If search options are provided, +the pool list that is returned is filtered with these options. + +Normal response codes: 200 +Error response codes: badRequest(400), unauthorized(401), forbidden(403) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id_1 + - pool: pool_1 + - host: host_9 + - backend: backend_1 + - capabilities: capabilities_1 + +Response parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - backend: backend + - host: host_4 + - pool: pool + - name: name_11 + - capabilities: capabilities_1 + - qos: qos + - consistency_group_support: consistency_group_support + - timestamp: timestamp + - share_backend_name: share_backend_name + - server_pools_mapping: server_pools_mapping + - driver_handles_share_servers: driver_handles_share_servers + - driver_version: driver_version + - total_capacity_gb: total_capacity_gb + - free_capacity_gb: free_capacity_gb + - reserved_percentage: reserved_percentage + - pools: pools + - vendor_name: vendor_name + - snapshot_support: snapshot_support_2 + - replication_type: replication_type + - storage_protocol: storage_protocol + +Response example +---------------- + +.. literalinclude:: samples/pools-list-detailed-response.json + :language: javascript diff --git a/api-ref/source/security-services.inc b/api-ref/source/security-services.inc new file mode 100644 index 0000000000..9fc93ae6bf --- /dev/null +++ b/api-ref/source/security-services.inc @@ -0,0 +1,296 @@ +.. -*- rst -*- + +================= +Security services +================= + +You can create, update, view, and delete a security service. A +security service stores configuration information for clients for +authentication and authorization (AuthN/AuthZ). For example, a +share server will be the client for an existing service such as +LDAP, Kerberos, or Microsoft Active Directory. + +You can associate a share with from one to three security service +types: + +- ``ldap``. LDAP. + +- ``kerberos``. Kerberos. + +- ``active_directory``. Microsoft Active Directory. + +You can configure a security service with these options: + +- A DNS IP address. + +- An IP address or host name. + +- A domain. + +- A user or group name. + +- The password for the user, if you specify a user name. + + +List security services +====================== + +.. rest_method:: GET /v2/{tenant_id}/security-services + +Lists all security services. + +Normal response codes: 200 +Error response codes: badRequest(400), unauthorized(401), forbidden(403) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id_1 + +Response parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status_2 + - type: type + - id: id_3 + - name: name_12 + +Response example +---------------- + +.. literalinclude:: samples/security-services-list-response.json + :language: javascript + + +List security services with details +=================================== + +.. rest_method:: GET /v2/{tenant_id}/security-services/detail + +Lists all security services with details. + +Normal response codes: 200 +Error response codes: badRequest(400), unauthorized(401), forbidden(403) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id_1 + +Response parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status_2 + - id: id_3 + - project_id: project_id_3 + - type: type + - name: name_12 + - description: description_12 + - dns_ip: dns_ip + - user: user + - password: password + - domain: domain + - server: server + - updated_at: created_at_3 + - created_at: created_at_1 + +Response example +---------------- + +.. literalinclude:: samples/security-services-list-detailed-response.json + :language: javascript + + +Show security service details +============================= + +.. rest_method:: GET /v2/{tenant_id}/security-services/{security_service_id} + +Shows details for a security service. + +Normal response codes: 200 +Error response codes: badRequest(400), unauthorized(401), forbidden(403), +itemNotFound(404) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id_1 + - security_service_id: security_service_id_1 + +Response parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status_2 + - id: id_3 + - project_id: project_id_3 + - type: type + - name: name_12 + - description: description_12 + - dns_ip: dns_ip + - user: user + - password: password + - domain: domain + - server: server + - updated_at: created_at_3 + - created_at: created_at_1 + +Response example +---------------- + +.. literalinclude:: samples/security-service-show-response.json + :language: javascript + + +Create security service +======================= + +.. rest_method:: POST /v2/{tenant_id}/security-services + +Creates a security service. + +Normal response codes: 200 +Error response codes: badRequest(400), unauthorized(401), forbidden(403), +unprocessableEntity(422) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id_1 + - type: type + - name: name_12 + - description: description_12 + - dns_ip: dns_ip + - user: user + - password: password + - domain: domain + - server: server + +Request example +--------------- + +.. literalinclude:: samples/security-service-create-request.json + :language: javascript + +Response parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status_2 + - id: id_3 + - project_id: project_id_3 + - type: type + - name: name_12 + - description: description_12 + - dns_ip: dns_ip + - user: user + - password: password + - domain: domain + - server: server + - updated_at: created_at_3 + - created_at: created_at_1 + +Response example +---------------- + +.. literalinclude:: samples/security-service-create-response.json + :language: javascript + + +Update security service +======================= + +.. rest_method:: PUT /v2/{tenant_id}/security-services/{security_service_id} + +Updates a security service. + +If the security service is in ``active`` state, you can update only +the ``name`` and ``description`` attributes. A security service in +``active`` state is attached to a share network with an associated +share server. + +Normal response codes: 200 +Error response codes: badRequest(400), unauthorized(401), forbidden(403), +itemNotFound(404), unprocessableEntity(422) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id_1 + - security_service_id: security_service_id_1 + - type: type + - name: name_12 + - description: description_12 + - dns_ip: dns_ip + - user: user + - password: password + - domain: domain + - server: server + +Request example +--------------- + +.. literalinclude:: samples/security-service-update-request.json + :language: javascript + +Response parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status_2 + - id: id_3 + - project_id: project_id_3 + - type: type + - name: name_12 + - description: description_12 + - dns_ip: dns_ip + - user: user + - password: password + - domain: domain + - server: server + - updated_at: created_at_3 + - created_at: created_at_1 + +Response example +---------------- + +.. literalinclude:: samples/security-service-update-response.json + :language: javascript + + +Delete security service +======================= + +.. rest_method:: DELETE /v2/{tenant_id}/security-services/{security_service_id} + +Deletes a security service. + +Normal response codes: 202 +Error response codes: badRequest(400), unauthorized(401), forbidden(403), +itemNotFound(404) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id_1 + - security_service_id: security_service_id_1 diff --git a/api-ref/source/services.inc b/api-ref/source/services.inc new file mode 100644 index 0000000000..d8b56dd933 --- /dev/null +++ b/api-ref/source/services.inc @@ -0,0 +1,140 @@ +.. -*- rst -*- + +======== +Services +======== + +These APIs help in interacting with the Shared File Systems services, +``manila-scheduler``, ``manila-share`` and ``manila-data``. + +.. important:: + + For API versions 2.6 and prior, replace ``services``` in the URLs + with ``os-services``. + + +List services +============= + +.. rest_method:: GET /v2/{tenant_id}/services?host={host}&binary={binary}&zone={zone}&state={state}&status={status} + +Lists all services optionally filtered with the specified search options. + +Normal response codes: 200 +Error response codes: badRequest(400), unauthorized(401), forbidden(403) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id_1 + - host: host_12 + - binary: binary_3 + - zone: zone_1 + - state: state_2 + - status: status_17 + +Response parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - services: services + - id: id_12 + - status: status_4 + - binary: binary_2 + - zone: zone + - host: host_5 + - state: state_1 + - updated_at: updated_at_5 + +Response example +---------------- + +.. literalinclude:: samples/services-list-response.json + :language: javascript + + +Enable service +============== + +.. rest_method:: PUT /v2/{tenant_id}/services/enable + +Enables a service. + +Normal response codes: 200 +Error response codes: badRequest(400), unauthorized(401), forbidden(403), +itemNotFound(404) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id_1 + - binary: binary_1 + - host: host_3 + +Request example +--------------- + +.. literalinclude:: samples/service-enable-request.json + :language: javascript + +Response parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - host: host_14 + - binary: binary_5 + - disabled: disabled + +Response example +---------------- + +.. literalinclude:: samples/service-enable-response.json + :language: javascript + + +Disable service +=============== + +.. rest_method:: PUT /v2/{tenant_id}/services/disable + +Disables a service. + +Normal response codes: 200 +Error response codes: badRequest(400), unauthorized(401), forbidden(403), +itemNotFound(404) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id_1 + - binary: binary + - host: host_2 + +Request example +--------------- + +.. literalinclude:: samples/service-disable-request.json + :language: javascript + +Response parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - host: host_13 + - binary: binary_4 + - disabled: disabled + +Response example +---------------- + +.. literalinclude:: samples/service-disable-response.json + :language: javascript diff --git a/api-ref/source/share-actions.inc b/api-ref/source/share-actions.inc new file mode 100644 index 0000000000..60b2ea64fc --- /dev/null +++ b/api-ref/source/share-actions.inc @@ -0,0 +1,326 @@ +.. -*- rst -*- + +============= +Share actions +============= + +Grants or revokes share access, lists the permissions for a share, +and explicitly updates the state of a share. + +To grant or revoke share access, specify one of these supported +share access levels: + +- ``rw``. Read and write (RW) access. + +- ``ro``. Read-only (RO) access. + +You must also specify one of these supported authentication +methods: + +- ``ip``. Authenticates an instance through its IP address. A valid + format is ``XX.XX.XX.XX`` or ``XX.XX.XX.XX/XX``. For example + ``0.0.0.0/0``. + +- ``cert``. Authenticates an instance through a TLS certificate. + Specify the TLS identity as the IDENTKEY. A valid value is any + string up to 64 characters long in the common name (CN) of the + certificate. The meaning of a string depends on its + interpretation. + +- ``user``. Authenticates by a user or group name. A valid value is + an alphanumeric string that can contain some special characters + and is from 4 to 32 characters long. + +To verify that the access rules (ACL) were configured correctly for +a share, you list permissions for a share. + +As administrator, you can reset the state of a share and force- +delete a share in any state. Use the ``policy.json`` file to grant +permissions for this action to other roles. + +You can set the state of a share to one of these supported states: + +- ``available`` + +- ``error`` + +- ``creating`` + +- ``deleting`` + +- ``error_deleting`` + +If API version 1.0-2.6 is used then all share actions, defined +below, should include prefix ``os-`` in top element of request +JSON's body. + +For example: {"access_list": null} is valid for v2.7+. And {"os- +access_list": null} is valid for v1.0-2.6 + + +Grant access +============ + +.. rest_method:: POST /v2/{tenant_id}/shares/{share_id}/action + +Grants access to a share. + +Normal response codes: 202 +Error response codes: badRequest(400), unauthorized(401), forbidden(403), +itemNotFound(404) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - allow_access: allow_access + - access_level: access_level + - access_type: access_type + - access_to: access_to + - share_id: share_id + - tenant_id: tenant_id_1 + +Request example +--------------- + +.. literalinclude:: samples/share-actions-grant-access-request.json + :language: javascript + +Response parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - share_id: share_id_7 + - created_at: created_at_6 + - updated_at: updated_at_3 + - access_type: access_type_2 + - access_to: access_to_1 + - access: access + - access_level: access_level_2 + - id: id_7 + +Response example +---------------- + +.. literalinclude:: samples/share-actions-grant-access-response.json + :language: javascript + + +Revoke access +============= + +.. rest_method:: POST /v2/{tenant_id}/shares/{share_id}/action + +Revokes access from a share. + +Normal response codes: 202 +Error response codes: badRequest(400), unauthorized(401), forbidden(403), +itemNotFound(404) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - deny_access: deny_access + - access_id: access_id + - share_id: share_id + - tenant_id: tenant_id_1 + +Request example +--------------- + +.. literalinclude:: samples/share-actions-revoke-access-request.json + :language: javascript + + +List access rules +================= + +.. rest_method:: POST /v2/{tenant_id}/shares/{share_id}/action + +Lists access rules for a share. + +Normal response codes: 200 +Error response codes: badRequest(400), unauthorized(401), forbidden(403), +itemNotFound(404) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - access_list: access_list + - share_id: share_id + - tenant_id: tenant_id_1 + +Request example +--------------- + +.. literalinclude:: samples/share-actions-list-access-rules-request.json + :language: javascript + + +Response parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - access_type: access_type_1 + - access_to: access_to_1 + - access_level: access_level + - state: state + - access_list: access_list + - id: id_8 + +Response example +---------------- + +.. literalinclude:: samples/share-actions-list-access-rules-response.json + :language: javascript + + +Reset share state +================= + +.. rest_method:: POST /v2/{tenant_id}/shares/{share_id}/action + +Administrator only. Explicitly updates the state of a share. + +Use the ``policy.json`` file to grant permissions for this action +to other roles. + +Normal response codes: 202 +Error response codes: badRequest(400), unauthorized(401), forbidden(403), +itemNotFound(404) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - reset_status: reset_status + - status: status_11 + - share_id: share_id + - tenant_id: tenant_id_1 + +Request example +--------------- + +.. literalinclude:: samples/share-actions-reset-state-request.json + :language: javascript + + +Force-delete share +================== + +.. rest_method:: POST /v2/{tenant_id}/shares/{share_id}/action + +Administrator only. Force-deletes a share in any state. + +Use the ``policy.json`` file to grant permissions for this action +to other roles. + +Normal response codes: 202 +Error response codes: badRequest(400), unauthorized(401), forbidden(403), +itemNotFound(404) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - force_delete: force_delete + - share_id: share_id + - tenant_id: tenant_id_1 + +Request example +--------------- + +.. literalinclude:: samples/share-actions-force-delete-request.json + :language: javascript + + +Extend share +============ + +.. rest_method:: POST /v2/{tenant_id}/shares/{share_id}/action + +Increases the size of a share. + +Normal response codes: 202 +Error response codes: badRequest(400), unauthorized(401), forbidden(403), +itemNotFound(404) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - extend: extend + - new_size: new_size + - share_id: share_id + - tenant_id: tenant_id_1 + +Request example +--------------- + +.. literalinclude:: samples/share-actions-extend-request.json + :language: javascript + + +Shrink share +============ + +.. rest_method:: POST /v2/{tenant_id}/shares/{share_id}/action + +Shrinks the size of a share. + +Normal response codes: 202 +Error response codes: badRequest(400), unauthorized(401), forbidden(403), +itemNotFound(404) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - shrink: shrink + - new_size: new_size + - share_id: share_id + - tenant_id: tenant_id_1 + +Request example +--------------- + +.. literalinclude:: samples/share-actions-shrink-request.json + :language: javascript + + +Unmanage share +============== + +.. rest_method:: POST /v2/{tenant_id}/shares/{share_id}/action + +This API is available in versions later than or equal to 2.7 + +Normal response codes: 202 +Error response codes: badRequest(400), unauthorized(401), forbidden(403), +itemNotFound(404), conflict(409) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - unmanage: unmanage + - share_id: share_id + - tenant_id: tenant_id_1 + +Request example +--------------- + +.. literalinclude:: samples/share-actions-unmanage-request.json + :language: javascript diff --git a/api-ref/source/share-export-locations.inc b/api-ref/source/share-export-locations.inc new file mode 100644 index 0000000000..5693396fd9 --- /dev/null +++ b/api-ref/source/share-export-locations.inc @@ -0,0 +1,87 @@ +.. -*- rst -*- + +======================================= +Share export locations (since API v2.9) +======================================= + +Set of APIs used for viewing export locations of shares. + +By default, these APIs are admin-only. Use the ``policy.json`` file +to grant permissions for these actions to other roles. + + +List export locations +===================== + +.. rest_method:: GET /v2/{tenant_id}/shares/{share_id}/export_locations + +Lists all export locations 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 + - tenant_id: tenant_id_1 + +Response parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - id: id_5 + - share_instance_id: share_instance_id_1 + - path: path + - is_admin_only: is_admin_only + - preferred: preferred + +Response example +---------------- + +.. literalinclude:: samples/export-location-list-response.json + :language: javascript + + +Show single export location +=========================== + +.. rest_method:: GET /v2/{tenant_id}/shares/{share_id}/export_locations/​{export_location_id}​ + +Show details of an export location belonging to 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 + - tenant_id: tenant_id_1 + - export_location_id: export_location_id + +Response parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - id: id_5 + - share_instance_id: share_instance_id_1 + - path: path + - is_admin_only: is_admin_only + - preferred: preferred + - created_at: created_at_5 + - updated_at: updated_at_2 + +Response example +---------------- + +.. literalinclude:: samples/export-location-show-response.json + :language: javascript diff --git a/api-ref/source/share-instance-export-locations.inc b/api-ref/source/share-instance-export-locations.inc new file mode 100644 index 0000000000..0dda12d0ab --- /dev/null +++ b/api-ref/source/share-instance-export-locations.inc @@ -0,0 +1,88 @@ +.. -*- rst -*- + +================================================ +Share instance export locations (since API v2.9) +================================================ + +Set of APIs used to view export locations of share instances. + +By default, these APIs are admin-only. Use the ``policy.json`` file +to grant permissions for these actions to other roles. + +Lists all export locations for a share instance. + +Show details of an export location belonging to a share instance. + + +List export locations +===================== + +.. rest_method:: GET /v2/{tenant_id}/share_instances/{share_instance_id}/export_locations + +Normal response codes: 200 +Error response codes: badRequest(400), unauthorized(401), forbidden(403), +itemNotFound(404) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id_1 + - share_instance_id: share_instance_id + +Response parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - id: id_5 + - share_instance_id: share_instance_id_1 + - path: path + - is_admin_only: is_admin_only + - preferred: preferred + +Response example +---------------- + +.. literalinclude:: samples/export-location-list-response.json + :language: javascript + + +Show single export location +=========================== + +.. rest_method:: GET /v2/{tenant_id}/share_instances/{share_instance_id}/export_locations/{export_location_id} + + +Normal response codes: 200 +Error response codes: badRequest(400), unauthorized(401), forbidden(403), +itemNotFound(404) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id_1 + - share_instance_id: share_instance_id + - export_location_id: export_location_id + +Response parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - id: id_5 + - share_instance_id: share_instance_id_1 + - path: path + - is_admin_only: is_admin_only + - preferred: preferred + - created_at: created_at_5 + - updated_at: updated_at_2 + +Response example +---------------- + +.. literalinclude:: samples/export-location-show-response.json + :language: javascript diff --git a/api-ref/source/share-instances.inc b/api-ref/source/share-instances.inc new file mode 100644 index 0000000000..f9fd4a15f7 --- /dev/null +++ b/api-ref/source/share-instances.inc @@ -0,0 +1,157 @@ +.. -*- rst -*- + +================================ +Share instances (since API v2.3) +================================ + +Administrators can list, show information for, explicitly set the +state of, and force-delete share instances. Use the ``policy.json`` +file to grant permissions for these actions to other roles. + + +List share instances +==================== + +.. rest_method:: GET /v2/{tenant_id}/share_instances + +Lists all share instances. + +Normal response codes: 200 +Error response codes: badRequest(400), unauthorized(401), forbidden(403) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id_1 + +Response parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status_5 + - access_rules_status: access_rules_status + - share_id: share_id_2 + - availability_zone: availability_zone_1 + - created_at: created_at_5 + - replica_state: replica_state + - export_location: export_location + - export_locations: export_locations + - share_network_id: share_network_id_4 + - share_server_id: share_server_id + - host: host_6 + - id: id_13 + +Response example +---------------- + +.. literalinclude:: samples/share-instances-list-response.json + :language: javascript + + +Show share instance details +=========================== + +.. rest_method:: GET /v2/{tenant_id}/share_instances/{share_instance_id} + +Shows details for a share instance. + +Normal response codes: 200 +Error response codes: badRequest(400), unauthorized(401), forbidden(403), +itemNotFound(404) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id_1 + - share_instance_id: share_instance_id + +Response parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status_5 + - access_rules_status: access_rules_status + - share_id: share_id_2 + - availability_zone: availability_zone_1 + - created_at: created_at_5 + - replica_state: replica_state + - export_location: export_location + - export_locations: export_locations + - share_network_id: share_network_id_4 + - share_server_id: share_server_id + - host: host_6 + - id: id_13 + +Response example +---------------- + +.. literalinclude:: samples/share-show-instance-response.json + :language: javascript + + +Reset share instance state +========================== + +.. rest_method:: POST /v2/{tenant_id}/share_instances/{share_instance_id}/action + +Administrator only. Explicitly updates the state of a share instance. + +Use the ``policy.json`` file to grant permissions for this action +to other roles. + +Normal response codes: 202 +Error response codes: badRequest(400), unauthorized(401), forbidden(403), +itemNotFound(404) + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id_1 + - share_instance_id: share_instance_id + - status: status_5 + +Request example +--------------- + +.. literalinclude:: samples/share-instance-actions-reset-state-request.json + :language: javascript + + +Force-delete share instance +=========================== + +.. rest_method:: POST /v2/{tenant_id}/share_instances/{share_instance_id}/action + +Administrator only. Force-deletes a share instance. + +Use the ``policy.json`` file to grant permissions for this action +to other roles. + +Normal response codes: 202 +Error response codes: badRequest(400), unauthorized(401), forbidden(403), +itemNotFound(404) + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id_1 + - share_instance_id: share_instance_id + - force_delete: force_delete_2 + +Request example +--------------- + +.. literalinclude:: samples/share-instance-actions-force-delete-request.json + :language: javascript diff --git a/api-ref/source/share-metadata.inc b/api-ref/source/share-metadata.inc new file mode 100644 index 0000000000..0d36732f9f --- /dev/null +++ b/api-ref/source/share-metadata.inc @@ -0,0 +1,144 @@ +.. -*- rst -*- + +============== +Share metadata +============== + +Shows, sets, updates, and unsets share metadata. + + +Show share metadata +=================== + +.. rest_method:: GET /v2/{tenant_id}/shares/{share_id}/metadata + +Shows the metadata 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 + - tenant_id: tenant_id_1 + +Response parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - metadata: metadata_3 + +Response example +---------------- + +.. literalinclude:: samples/share-show-metadata-response.json + :language: javascript + + +Set share metadata +================== + +.. rest_method:: POST /v2/{tenant_id}/shares/{share_id}/metadata + +Sets the metadata on a share. + +Normal response codes: 200 +Error response codes: badRequest(400), unauthorized(401), forbidden(403), +itemNotFound(404), conflict(409) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - metadata: metadata_2 + - share_id: share_id + - tenant_id: tenant_id_1 + +Request example +--------------- + +.. literalinclude:: samples/share-set-metadata-request.json + :language: javascript + +Response parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - metadata: metadata + +Response example +---------------- + +.. literalinclude:: samples/share-set-metadata-response.json + :language: javascript + + +Update share metadata +===================== + +.. rest_method:: PUT /v2/{tenant_id}/shares/{share_id}/metadata + +Updates the metadata for a share. + + +Normal response codes: 200 +Error response codes: badRequest(400), unauthorized(401), forbidden(403), +itemNotFound(404) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - metadata: metadata_2 + - share_id: share_id + - tenant_id: tenant_id_1 + +Request example +--------------- + +.. literalinclude:: samples/share-update-metadata-request.json + :language: javascript + +Response parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - metadata: metadata_3 + +Response example +---------------- + +.. literalinclude:: samples/share-update-metadata-response.json + :language: javascript + + +Unset share metadata +==================== + +.. rest_method:: DELETE /v2/{tenant_id}/shares/{share_id}/metadata/{key} + +Un-sets the metadata on a share. + +To unset a metadata key value, specify only the key name in the +URI. + +Normal response codes: 202 +Error response codes: badRequest(400), unauthorized(401), forbidden(403), +itemNotFound(404) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - share_id: share_id + - tenant_id: tenant_id_1 diff --git a/api-ref/source/share-migration.inc b/api-ref/source/share-migration.inc new file mode 100644 index 0000000000..f4ba525591 --- /dev/null +++ b/api-ref/source/share-migration.inc @@ -0,0 +1,103 @@ +.. -*- rst -*- + +=============== +Share Migration +=============== +As an administrator, you can migrate a share with its data from one +location to another in a manner that is transparent to users and workloads. + +Possible use cases for data migration include: + + - Bring down a physical storage device for maintenance without disrupting + workloads. + - Modify the properties of a share. + - Free up space in a thinly-provisioned back end. + +.. note:: + + Share Migration APIs are part an the ``experimental`` feature + introduced in version 2.5. The APIs may change or be removed in further + versions of the Shared File Systems API. The changes are + documented within each API below. All experimental APIs require the + ``X-OpenStack-Manila-API-Experimental: True`` header to be + sent in the requests. + + +Migrate share (versions 2.5 to 2.14) +========================================= + +.. rest_method:: POST /v2/{tenant_id}/shares/{share_id}/action + +Migrates a share from one back end to another. + +You can migrate a share from one back end to another but both back +ends must set the ``driver_handles_share_servers`` parameter to +``False``. If a share driver handles one of the back ends, this +action is not supported. You can configure a back end in the +``manila.conf`` file. + +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 + - share_id: share_id + - os-migrate_share: os-migrate_share + - migrate_share: migrate_share + - host: host_10 + - force_host_copy: force_host_copy + + +Start Migration (Since version 2.15) +==================================== + +.. rest_method:: POST /v2/{tenant_id}/shares/{share_id}/action + +Initiates share migration. This API will initiate the share data copy to the +new host. The copy operation is non-disruptive. + +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 + - share_id: share_id + - migrate-start: migrate-start + - host: host_10 + - notify: notify + - force_host_copy: force_host_copy + + +Complete Migration (Since version 2.15) +======================================= + +.. rest_method:: POST /v2/{tenant_id}/shares/{share_id}/action + +Completes share migration. This API will initiate the switch-over from the +source to destination share. This operation is disruptive. + +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 + - share_id: share_id + - migration_complete: migration_complete + - host: host_10 + - notify: notify + - force_host_copy: force_host_copy diff --git a/api-ref/source/share-networks.inc b/api-ref/source/share-networks.inc new file mode 100644 index 0000000000..99fa266dcc --- /dev/null +++ b/api-ref/source/share-networks.inc @@ -0,0 +1,398 @@ +.. -*- rst -*- + +============== +Share networks +============== + +A share network stores network information that share servers can +use where shares are hosted. You can associate a share with a +single share network. When you create a share, you can optionally +specify the ID of a share network through which instances can +access the share. + +You can create, update, view, and delete a share network. + +When you create a share network, you can specify only one type of +network: + +- Neutron network. Specify a network ID and subnet ID. + +- Nova network. Specify a network ID. + +For more information about supported plug-ins for share networks, +see `Manila Network Plugins `_. + +A share network has these attributes: + +- The IP block in Classless Inter-Domain Routing (CIDR) notation + from which to allocate the network. + +- The IP version of the network. + +- The network type, which is ``vlan``, ``vxlan``, ``gre``, or + ``flat``. + +- If the network uses segmentation, a segmentation identifier. For + example, VLAN, VXLAN, and GRE networks use segmentation. + + +List share networks +=================== + +.. rest_method:: GET /v2/{tenant_id}/share-networks + +Lists all share networks. + + +Normal response codes: 200 +Error response codes: badRequest(400), unauthorized(401), forbidden(403) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id_1 + +Response parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - id: id + - name: name + +Response example +---------------- + +.. literalinclude:: samples/share-networks-list-response.json + :language: javascript + + +List share networks with details +================================ + +.. rest_method:: GET /v2/{tenant_id}/share-networks/detail + +Lists all share networks with details. + + +Normal response codes: 200 +Error response codes: badRequest(400), unauthorized(401), forbidden(403) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id_1 + +Response parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - id: id + - project_id: project_id + - neutron_net_id: neutron_net_id + - neutron_subnet_id: neutron_subnet_id + - nova_net_id: nova_net_id + - network_type: network_type + - segmentation_id: segmentation_id + - cidr: cidr + - ip_version: ip_version + - name: name + - description: description + - created_at: created_at + - updated_at: updated_at + +Response example +---------------- + +.. literalinclude:: samples/share-networks-list-detailed-response.json + :language: javascript + + +Show share network details +========================== + +.. rest_method:: GET /v2/{tenant_id}/share-networks/{share_network_id} + +Shows details for a share network. + +Normal response codes: 200 +Error response codes: badRequest(400), unauthorized(401), forbidden(403), +itemNotFound(404) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id_1 + - share_network_id: share_network_id + +Response parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - id: id + - project_id: project_id + - neutron_net_id: neutron_net_id + - neutron_subnet_id: neutron_subnet_id + - nova_net_id: nova_net_id + - network_type: network_type + - segmentation_id: segmentation_id + - cidr: cidr + - ip_version: ip_version + - name: name + - description: description + - created_at: created_at + - updated_at: updated_at + +Response example +---------------- + +.. literalinclude:: samples/share-network-show-response.json + :language: javascript + + +Create share network +==================== + +.. rest_method:: POST /v2/{tenant_id}/share-networks + +Creates a share network. + + +Normal response codes: 202 +Error response codes: badRequest(400), unauthorized(401), forbidden(403), +entityTooLarge(413), unprocessableEntity(422) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id_1 + - neutron_net_id: neutron_net_id_1 + - neutron_subnet_id: neutron_subnet_id_1 + - nova_net_id: nova_net_id_1 + - name: name + - description: description + +Request example +--------------- + +.. literalinclude:: samples/share-network-create-request.json + :language: javascript + +Response parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - id: id + - project_id: project_id + - neutron_net_id: neutron_net_id + - neutron_subnet_id: neutron_subnet_id + - nova_net_id: nova_net_id + - network_type: network_type_1 + - segmentation_id: segmentation_id_1 + - cidr: cidr_1 + - ip_version: ip_version_1 + - name: name + - description: description + - created_at: created_at + - updated_at: updated_at + +Response example +---------------- + +.. literalinclude:: samples/share-network-create-response.json + :language: javascript + + +Add security service to share network +===================================== + +.. rest_method:: POST /v2/{tenant_id}/share-networks/{share_network_id}/action + +Adds a security service to a share network. + +Normal response codes: 200 +Error response codes: badRequest(400), unauthorized(401), forbidden(403), +itemNotFound(404), conflict(409) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - share_network_id: share_network_id + - security_service_id: security_service_id + +Request example +--------------- + +.. literalinclude:: samples/share-network-add-security-service-request.json + :language: javascript + + +Response parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - id: id + - project_id: project_id + - neutron_net_id: neutron_net_id + - neutron_subnet_id: neutron_subnet_id + - nova_net_id: nova_net_id + - network_type: network_type + - segmentation_id: segmentation_id + - cidr: cidr + - ip_version: ip_version + - name: name + - description: description + - created_at: created_at + - updated_at: updated_at + +Response example +---------------- + +.. literalinclude:: samples/share-network-add-security-service-response.json + :language: javascript + + +Remove security service from share network +========================================== + +.. rest_method:: POST /v2/{tenant_id}/share-networks/{share_network_id}/action + +Removes a security service from a share network. + + +Normal response codes: 200 +Error response codes: badRequest(400), unauthorized(401), forbidden(403), +itemNotFound(404) + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id_1 + - share_network_id: share_network_id + - security_service_id: security_service_id_2 + +Request example +--------------- + +.. literalinclude:: samples/share-network-remove-security-service-request.json + :language: javascript + +Response parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - id: id + - project_id: project_id + - neutron_net_id: neutron_net_id + - neutron_subnet_id: neutron_subnet_id + - nova_net_id: nova_net_id + - network_type: network_type + - segmentation_id: segmentation_id + - cidr: cidr + - ip_version: ip_version + - name: name + - description: description + - created_at: created_at + - updated_at: updated_at + +Response example +---------------- + +.. literalinclude:: samples/share-network-remove-security-service-response.json + :language: javascript + + +Update share network +==================== + +.. rest_method:: PUT /v2/{tenant_id}/share-networks/{share_network_id} + +Updates a share network. + +Note that if the share network is used by any share server, you can +update only the ``name`` and ``description`` attributes. + +Normal response codes: 200 +Error response codes: badRequest(400), unauthorized(401), forbidden(403), +itemNotFound(404), unprocessableEntity(422) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id_1 + - share_network_id: share_network_id + - name: name + - description: description + +Request example +--------------- + +.. literalinclude:: samples/share-network-update-request.json + :language: javascript + +Response parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - id: id + - project_id: project_id + - neutron_net_id: neutron_net_id + - neutron_subnet_id: neutron_subnet_id + - nova_net_id: nova_net_id + - network_type: network_type + - segmentation_id: segmentation_id + - cidr: cidr + - ip_version: ip_version + - name: name + - description: description + - created_at: created_at + - updated_at: updated_at + +Response example +---------------- + +.. literalinclude:: samples/share-network-update-response.json + :language: javascript + + +Delete share network +==================== + +.. rest_method:: DELETE /v2/{tenant_id}/share-networks/{share_network_id} + +Deletes a share network. + +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 + - share_network_id: share_network_id diff --git a/api-ref/source/share-servers.inc b/api-ref/source/share-servers.inc new file mode 100644 index 0000000000..6a65a9cde0 --- /dev/null +++ b/api-ref/source/share-servers.inc @@ -0,0 +1,141 @@ +.. -*- rst -*- + +============= +Share servers +============= + +A share server is created by multi-tenant back-end drivers where +shares are hosted. For example, with the ``generic`` driver, shares +are hosted on Compute VMs. + +Administrators can perform read and delete actions for share +servers. An administrator can delete an active share server only if +it contains no dependent shares. If an administrator deletes the +share server, the Shared File Systems service creates a share +server in response to a subsequent create share request. + +An administrator can use the ``policy.json`` file to grant +permissions for share server actions to other roles. + +The status of a share server indicates its current state. After you +successfully set up a share server, its status is ``active``. If +errors occur during set up such as when server data is not valid, +its status is ``error``. + +The possible share servers statuses are: + +**Share server statuses** + ++--------------+------------------------------------------------------------------+ +| Status | Description | ++--------------+------------------------------------------------------------------+ +| ``active`` | Share server was successfully set up. | ++--------------+------------------------------------------------------------------+ +| ``error`` | The set up or deletion of the share server failed. | ++--------------+------------------------------------------------------------------+ +| ``deleting`` | The share server has no dependent shares and is being deleted. | ++--------------+------------------------------------------------------------------+ +| ``creating`` | The share server is being created on the back end with data from | +| | the database. | ++--------------+------------------------------------------------------------------+ + + +List share servers +================== + +.. rest_method:: GET /v2/{tenant_id}/share-servers + +Lists all share servers. + +Normal response codes: 200 +Error response codes: badRequest(400), unauthorized(401), forbidden(403) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id_1 + +Response parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - id: id_14 + - project_id: project_id_7 + - status: status_15 + - share_network_id: share_network_id + - share_network_name: share_network_name + - host: host_8 + - updated_at: updated_at_6 + +Response example +---------------- + +.. literalinclude:: samples/share-servers-list-response.json + :language: javascript + + +Show share server details +========================= + +.. rest_method:: GET /v2/{tenant_id}/share-servers/{share_server_id}/detail + +Shows details for a share server. + +Normal response codes: 200 +Error response codes: badRequest(400), unauthorized(401), forbidden(403), +itemNotFound(404) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id_1 + - share_server_id: share_server_id + +Response parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - id: id_14 + - project_id: project_id_7 + - status: status_15 + - backend_details: backend_details + - share_network_id: share_network_id_6 + - share_network_name: share_network_name + - host: host_8 + - created_at: created_at_11 + - updated_at: updated_at_6 + +Response example +---------------- + +.. literalinclude:: samples/share-server-show-details-response.json + :language: javascript + + +Delete share server +=================== + +.. rest_method:: DELETE /v2/{tenant_id}/share-servers/{share_server_id} + +Deletes a share server. + +An administrator can delete an active share server only if it +contains no dependent shares. + +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 + - share_server_id: share_server_id diff --git a/api-ref/source/share-types.inc b/api-ref/source/share-types.inc new file mode 100644 index 0000000000..24ed9fde76 --- /dev/null +++ b/api-ref/source/share-types.inc @@ -0,0 +1,423 @@ +.. -*- rst -*- + +=========== +Share types +=========== + +A share type enables you to filter or choose back ends before you +create a share. A share type behaves in the same way as a Block +Storage volume type behaves. + +You set a share type to private or public and manage the access to +the private share types. + +When you issue a create a share type request, you can submit a +request body with either a ``share_type`` or ``volume_type`` +object. + +.. important:: + + The use of the ``volume_type`` object is deprecated but supported. It is + recommended that you use the ``share_type`` object when you create a + share type. + +No matter which object type you include in the request, the API +creates both a ``volume_type`` object and a ``share_type`` object. +Both objects have the same ID. When you issue a list share types +request, the response shows both ``share_type`` and ``volume_type`` objects. + +You can set share types as either public or private. By default a +share type is created as publicly accessible. Set +``share_type_access:is_public`` (``os-share-type-access:is_public`` +for API versions 1.0-2.6) to ``False`` to make the share type +private. + +You can manage the access to the private share types for the +different projects. You can add access, remove access, and get +information about access for a private share type. + +Administrators can create share types with these extra +specifications that are used to filter back ends: + +- ``driver_handles_share_servers``. Required. Defines the driver + mode for share server, or storage, life cycle management. The + Shared File Systems service creates a share server for the export + of shares. + + Set to ``True`` when the share driver manages or handles the + share server life cycle. + + Set to ``False`` when an administrator rather than a share driver + manages the share server life cycle. + +- ``snapshot_support``. Filters back ends by whether they do or do + not support share snapshots. + + Set to ``True`` to find back ends that support share snapshots. + + Set to ``False`` to find back ends that do not support share + snapshots. + +Administrators can also set additional extra specifications for a +share type for the following purposes: + +- Filter back ends. Specify these unqualified extra specifications + in this format: ``extra_spec=value``. For example, + ``netapp_raid_type=raid4``. + +- Set data for the driver. Except for the special ``capabilities`` + prefix, you specify these qualified extra specifications with its + prefix followed by a colon: ``vendor:extra_spec=value``. For + example, ``netapp:thin_provisioned=true``. + +The scheduler uses the special ``capabilities`` prefix for +filtering. The scheduler can only create a share on a back end that +reports capabilities that match the un-scoped extra-spec keys for +the share type. For details, see `Capabilities and Extra-Specs `_. + +Each driver implementation determines which extra specification +keys it uses. For details, see the documentation for the driver. + +An administrator can use the ``policy.json`` file to grant +permissions for share type creation with extra specifications to +other roles. + + +List share types +================ + +.. rest_method:: GET /v2/{tenant_id}/types + +Lists all share types. + +Normal response codes: 200 + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id_1 + +Response parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - id: id_11 + - required_extra_specs: required_extra_specs + - extra_specs: extra_specs + - driver_handles_share_servers: driver_handles_share_servers + - snapshot_support: snapshot_support_1 + - os-share-type-access:is_public: os-share-type-access:is_public + - name: name_9 + +Response example +---------------- + +.. literalinclude:: samples/share-types-list-response.json + :language: javascript + + +List default share types +======================== + +.. rest_method:: GET /v2/{tenant_id}/types/default + +Lists default share types. + +Normal response codes: 200 +Error response codes: badRequest(400), unauthorized(401), forbidden(403), +itemNotFound(404) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id_1 + +Response parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - id: id_11 + - required_extra_specs: required_extra_specs + - extra_specs: extra_specs + - driver_handles_share_servers: driver_handles_share_servers + - snapshot_support: snapshot_support_1 + - os-share-type-access:is_public: os-share-type-access:is_public + - name: name_9 + +Response example +---------------- + +.. literalinclude:: samples/share-types-default-list-response.json + :language: javascript + + +List extra specs +================ + +.. rest_method:: GET /v2/{tenant_id}/types/{share_type_id}/extra_specs + +Lists the extra specifications for a share type. + +Normal response codes: 200 +Error response codes: badRequest(400), unauthorized(401), forbidden(403), +itemNotFound(404) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id_1 + - share_type_id: share_type_id + +Response parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - extra_specs: extra_specs + - driver_handles_share_servers: driver_handles_share_servers + - snapshot_support: snapshot_support_1 + +Response example +---------------- + +.. literalinclude:: samples/share-types-extra-specs-list-response.json + :language: javascript + + +Create share type +================= + +.. rest_method:: POST /v2/{tenant_id}/types + +Creates a share type. + +Normal response codes: 200 +Error response codes: badRequest(400), unauthorized(401), forbidden(403), +itemNotFound(404), conflict(409) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id_1 + - extra_specs: extra_specs + - driver_handles_share_servers: driver_handles_share_servers + - snapshot_support: snapshot_support_1 + - os-share-type-access:is_public: os-share-type-access:is_public + - name: name_9 + +Request example +--------------- + +.. literalinclude:: samples/share-type-create-request.json + :language: javascript + +Response parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - id: id_11 + - required_extra_specs: required_extra_specs + - extra_specs: extra_specs + - driver_handles_share_servers: driver_handles_share_servers + - snapshot_support: snapshot_support_1 + - os-share-type-access:is_public: os-share-type-access:is_public + - name: name_9 + +Response example +---------------- + +.. literalinclude:: samples/share-type-create-response.json + :language: javascript + + +Show share type access details +============================== + +.. rest_method:: GET /v2/{tenant_id}/types/{share_type_id}/share_type_access + +Shows access details for a share type. + +You can view access details for private share types only. + +Normal response codes: 200 +Error response codes: badRequest(400), unauthorized(401), forbidden(403), +itemNotFound(404) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id_1 + - share_type_id: share_type_id + +Response parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - share_type_id: share_type_id_1 + - project_id: project_id_9 + +Response example +---------------- + +.. literalinclude:: samples/share-types-list-access-response.json + :language: javascript + + +Set extra spec for share type +============================= + +.. rest_method:: POST /v2/{tenant_id}/types/{share_type_id}/extra_specs + +Sets an extra specification for the share type. + +Each driver implementation determines which extra specification +keys it uses. For details, see `Capabilities and Extra-Specs `_ and documentation for your driver. + +Normal response codes: 200 +Error response codes: badRequest(400), unauthorized(401), forbidden(403), +itemNotFound(404), conflict(409) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id_1 + - share_type_id: share_type_id + - extra_specs: extra_specs + +Request example +--------------- + +.. literalinclude:: samples/share-type-set-request.json + :language: javascript + +Response parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - extra_specs: extra_specs + +Response example +---------------- + +.. literalinclude:: samples/share-type-set-response.json + :language: javascript + + +Unset an extra spec +=================== + +.. rest_method:: DELETE /v2/{tenant_id}/types/{share_type_id}/extra_specs/{key} + +Unsets an extra specification for the share type. + +Normal response codes: 202 +Error response codes: badRequest(400), unauthorized(401), forbidden(403), +itemNotFound(404) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id_1 + - share_type_id: share_type_id + - extra-spec-key: extra-spec-key + + +Add share type access +===================== + +.. rest_method:: POST /v2/{tenant_id}/types/{share_type_id}/action + +Adds share type access for a project. + +You can add access to private share types only. + +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 + - share_type_id: share_type_id + - project: project + +Request example +--------------- + +.. literalinclude:: samples/share-type-grant-access-request.json + :language: javascript + + +Remove share type access +======================== + +.. rest_method:: POST /v2/{tenant_id}/types/{share_type_id}/action + +Removes share type access from a project. + +You can remove access from private share types only. + +Normal response codes: 202 +Error response codes: badRequest(400), unauthorized(401), forbidden(403), +itemNotFound(404) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id_1 + - share_type_id: share_type_id + - project: project + +Request example +--------------- + +.. literalinclude:: samples/share-type-revoke-access-request.json + :language: javascript + + +Delete share type +================= + +.. rest_method:: DELETE /v2/{tenant_id}/types/{share_type_id} + +Deletes a share type. + +Normal response codes: 202 +Error response codes: badRequest(400), unauthorized(401), forbidden(403), +itemNotFound(404) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id_1 + - share_type_id: share_type_id diff --git a/api-ref/source/shares.inc b/api-ref/source/shares.inc new file mode 100644 index 0000000000..ad7830e006 --- /dev/null +++ b/api-ref/source/shares.inc @@ -0,0 +1,509 @@ +.. -*- 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. | ++----------------------------------------+--------------------------------------------------------+ + + +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_2 + - 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_2 + - 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_3 + - 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_3 + - 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 + - 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 + - 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_3 + - 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_3 + - 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 diff --git a/api-ref/source/snapshots.inc b/api-ref/source/snapshots.inc new file mode 100644 index 0000000000..7cfbe389a2 --- /dev/null +++ b/api-ref/source/snapshots.inc @@ -0,0 +1,424 @@ +.. -*- rst -*- + +=============== +Share snapshots +=============== + +Use the shared file service to make snapshots of shares. A share +snapshot is a point-in-time, read-only copy of the data that is +contained in a share. You can create, manage, update, and delete +share snapshots. After you create or manage a share snapshot, you +can create a share from it. + +You can update a share snapshot to rename it, change its +description, or update its state to one of these supported states: + +- ``available`` + +- ``error`` + +- ``creating`` + +- ``deleting`` + +- ``error_deleting`` + +- ``manage_starting`` + +- ``manage_error`` + +- ``unmanage_starting`` + +- ``unmanage_error`` + +As administrator, you can also reset the state of a snapshot and +force-delete a share snapshot in any state. Use the ``policy.json`` +file to grant permissions for these actions to other roles. + + +List share snapshots +==================== + +.. rest_method:: GET /v2/{tenant_id}/snapshots + +Lists all share snapshots. + +Normal response codes: 200 +Error response codes: badRequest(400), unauthorized(401) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id_1 + +Response parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - id: id_16 + - name: name_15 + +Response example +---------------- + +.. literalinclude:: samples/snapshots-list-response.json + :language: javascript + + +List share snapshots with details +================================= + +.. rest_method:: GET /v2/{tenant_id}/snapshots/detail + +Lists all share snapshots with details. + +Normal response codes: 200 +Error response codes: badRequest(400), unauthorized(401) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id_1 + +Response parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - id: id_16 + - status: status_13 + - share_id: share_id_5 + - name: name_15 + - description: description_11 + - created_at: created_at_10 + - share_proto: share_proto_2 + - share_size: share_size + - size: size_3 + +Response example +---------------- + +.. literalinclude:: samples/snapshots-list-detailed-response.json + :language: javascript + + +Show share snapshot details +=========================== + +.. rest_method:: GET /v2/{tenant_id}/snapshots/{snapshot_id} + +Shows details for a share snapshot. + +Normal response codes: 200 +Error response codes: badRequest(400), unauthorized(401), itemNotFound(404) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id_1 + - snapshot_id: snapshot_id_1 + +Response parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - id: id_16 + - status: status_13 + - share_id: share_id_5 + - name: name_15 + - description: description_11 + - created_at: created_at_10 + - share_proto: share_proto_2 + - share_size: share_size + - size: size_3 + +Response example +---------------- + +.. literalinclude:: samples/snapshot-show-response.json + :language: javascript + + +Create share snapshot +===================== + +.. rest_method:: POST /v2/{tenant_id}/snapshots + +Creates a snapshot from a share. + + +Normal response codes: 200 +Error response codes: badRequest(400), unauthorized(401), forbidden(403), +itemNotFound(404), unprocessableEntity(422) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id_1 + - share_id: share_id_4 + - force: force + - name: name_14 + - display_name: display_name_1 + - description: description_10 + - display_description: display_description_1 + +Request example +--------------- + +.. literalinclude:: samples/snapshot-create-request.json + :language: javascript + +Response parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - id: id_16 + - share_id: share_id_5 + - status: status_13 + - name: name_15 + - description: description_11 + - created_at: created_at_10 + - share_proto: share_proto + - share_size: share_size + - provider_location: provider_location_1 + - size: size_3 + +Response example +---------------- + +.. literalinclude:: samples/snapshot-create-response.json + :language: javascript + + +Manage share snapshot +===================== + +.. rest_method:: POST /v2/{tenant_id}/snapshots/manage + +(Since API v2.12) Configures Shared File Systems to manage a share snapshot. + +Normal response codes: 200 +Error response codes: badRequest(400), unauthorized(401), forbidden(403), +itemNotFound(404), conflict(409) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id_1 + - share_id: share_id_6 + - provider_location: provider_location + - name: name + - display_name: display_name_1 + - description: description + - display_description: display_description_1 + - driver_options: driver_options + +Request example +--------------- + +.. literalinclude:: samples/snapshot-manage-request.json + :language: javascript + +Response parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - id: id_16 + - share_id: share_id_5 + - status: status_14 + - name: name_15 + - description: description_11 + - created_at: created_at_10 + - share_proto: share_proto + - share_size: share_size + - provider_location: provider_location_1 + - size: size_3 + +Response example +---------------- + +.. literalinclude:: samples/snapshot-manage-response.json + :language: javascript + + +Unmanage share snapshot +======================= + +.. rest_method:: POST /v2/{tenant_id}/snapshots/{snapshot_id}/action + +(Since API v2.12) Configures Shared File Systems to stop managing a share snapshot. + +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 + - snapshot_id: snapshot_id_1 + - unmanage: unmanage + +Request example +--------------- + +.. literalinclude:: samples/snapshot-actions-unmanage-request.json + :language: javascript + + +Reset share snapshot state +========================== + +.. rest_method:: POST /v2/{tenant_id}/snapshots/{snapshot_id}/action + +Administrator only. Explicitly updates the state of a share snapshot. + +Use the ``policy.json`` file to grant permissions for this action +to other roles. + +Normal response codes: 202 +Error response codes: badRequest(400), unauthorized(401), forbidden(403), +itemNotFound(404) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id_1 + - snapshot_id: snapshot_id_1 + - status: status_12 + +Request example +--------------- + +.. literalinclude:: samples/snapshot-actions-reset-state-request.json + :language: javascript + + +Force-delete share snapshot +=========================== + +.. rest_method:: POST /v2/{tenant_id}/snapshots/{snapshot_id}/action + +Administrator only. Force-deletes a share snapshot in any state. + +Use the ``policy.json`` file to grant permissions for this action +to other roles. + +Normal response codes: 202 +Error response codes: badRequest(400), unauthorized(401), forbidden(403), +itemNotFound(404) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id_1 + - snapshot_id: snapshot_id_1 + - force_delete: force_delete_4 + +Request example +--------------- + +.. literalinclude:: samples/snapshot-actions-force-delete-request.json + :language: javascript + + +Update share snapshot +===================== + +.. rest_method:: PUT /v2/{tenant_id}/snapshots/{snapshot_id} + +Updates a share snapshot. + +You can update these attributes: + +- ``display_name``, which also changes the ``name`` of the share + snapshot. + +- ``display_description``, which also changes the ``description`` of + the share snapshot. + +- ``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 + + - tenant_id: tenant_id_1 + - snapshot_id: snapshot_id_1 + - display_name: display_name_3 + - display_description: display_description_2 + +Request example +--------------- + +.. literalinclude:: samples/snapshot-update-request.json + :language: javascript + +Response parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - id: id_16 + - status: status_13 + - share_id: share_id_5 + - name: name_15 + - description: description_11 + - created_at: created_at_10 + - share_proto: share_proto_2 + - share_size: share_size + - size: size_3 + +Response example +---------------- + +.. literalinclude:: samples/snapshot-update-response.json + :language: javascript + + +Delete share snapshot +===================== + +.. rest_method:: DELETE /v2/{tenant_id}/snapshots/{snapshot_id} + +Deletes a share snapshot. + +Normal response codes: 202 +Error response codes: badRequest(400), unauthorized(401), forbidden(403), +itemNotFound(404) + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id_1 + - snapshot_id: snapshot_id_1 diff --git a/api-ref/source/versions.inc b/api-ref/source/versions.inc new file mode 100644 index 0000000000..a4850774d6 --- /dev/null +++ b/api-ref/source/versions.inc @@ -0,0 +1,111 @@ +.. -*- rst -*- + +============ +API versions +============ + +Lists information for all Shared File Systems API versions. + + +Concepts +======== + +In order to bring new features to users over time, the Shared File Systems API +supports versioning. There are two kinds of versions in the Shared File +Systems API: + +- ''major versions'', which have dedicated URLs +- ''microversions'', which can be requested through the use of the + ``X-OpenStack-Manila-API-Version`` header + +Read more about microversion guidelines that the service adheres to `here +`_ + + +List All Major Versions +======================= + +.. rest_method:: GET / + +This fetches all the information about all known major API versions in +the deployment. Links to more specific information will be provided +for each API version, as well as information about supported min and +max microversions. + +Normal Response Codes: 300 + +Response +-------- + +.. rest_parameters:: parameters.yaml + + - versions: versions + - id: version_id + - status: version_status + - links: links + - media-types: media_types + - version: version_max + - min_version: version_min + +.. note:: + + The ``updated`` and ``media-types`` parameters in the response are + vestigial and provide no useful information. They will probably be + deprecated and removed in the future. + +Response Example +---------------- + +This demonstrates the expected response from a bleeding edge server +that supports up to the current microversion. When querying OpenStack +environments you will typically find the current microversion on the +v2.1 API is lower than listed below. + +.. literalinclude:: samples/versions-index-response.json + :language: javascript + + +Show Details of Specific API Version +==================================== + +.. rest_method:: GET /{api_version} + +This gets the details of a specific API at it's root. Nearly all this +information exists at the API root, so this is mostly a redundant +operation. + +Normal Response Codes: 200 + +Request +------- + +.. rest_parameters:: parameters.yaml + + - api_version: api_version + +Response +-------- + +.. rest_parameters:: parameters.yaml + + - version: version + - id: version_id + - status: version_status + - links: links + - version: version_max + - min_version: version_min + - media-types: media_types + +.. note:: + + The ``updated`` and ``media-types`` parameters in the response are + vestigial and provide no useful information. They will probably be + deprecated and removed in the future. + +Response Example +---------------- + +This is an example of a ``GET /v2`` on a relatively current server. + +.. literalinclude:: samples/versions-get-version-response.json + :language: javascript diff --git a/test-requirements.txt b/test-requirements.txt index 011b7d01e7..2c29645118 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -24,6 +24,7 @@ psycopg2>=2.5 # LGPL/ZPL python-subunit>=0.0.18 # Apache-2.0/BSD requests-mock>=1.0 # Apache-2.0 sphinx!=1.3b1,<1.3,>=1.2.1 # BSD +os-api-ref>=0.1.0 # Apache-2.0 os-testr>=0.7.0 # Apache-2.0 testrepository>=0.0.18 # Apache-2.0/BSD testresources>=0.2.4 # Apache-2.0/BSD diff --git a/tox.ini b/tox.ini index 4404e1befe..a57ad4cec3 100644 --- a/tox.ini +++ b/tox.ini @@ -86,6 +86,14 @@ deps = -r{toxinidir}/requirements.txt pylint==0.26.0 commands = python tools/lintstack.py check +[testenv:api-ref] +# This environment is called from CI scripts to test and publish +# the API Ref to developer.openstack.org. +whitelist_externals = rm +commands = + rm -rf api-ref/build + sphinx-build -W -b html -d api-ref/build/doctrees api-ref/source api-ref/build/html + [testenv:dbrevision] deps = -r{toxinidir}/requirements.txt commands = alembic -c manila/db/migrations/alembic.ini revision -m ""{posargs} @@ -94,7 +102,7 @@ commands = alembic -c manila/db/migrations/alembic.ini revision -m ""{posargs} # Following checks are ignored on purpose: ignore = builtins = _ -exclude = .git,.tox,.testrepository,.venv,build,cover,dist,doc,*egg +exclude = .git,.tox,.testrepository,.venv,build,cover,dist,doc,*egg,api-ref/build [hacking] import_exceptions =