diff --git a/api-ref/source/baremetal/v1/baremetal-api-v1-chassis.inc b/api-ref/source/baremetal/v1/baremetal-api-v1-chassis.inc new file mode 100644 index 000000000..f37b5859f --- /dev/null +++ b/api-ref/source/baremetal/v1/baremetal-api-v1-chassis.inc @@ -0,0 +1,305 @@ +.. -*- rst -*- + +================= +Chassis (chassis) +================= + +Chassis operations. + + +List chassis with details +========================= + +.. rest_method:: GET /v1/chassis/detail + +Lists all chassis with details. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - limit: limit + - marker: marker + - sort_dir: sort_dir + - sort_key: sort_key + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - uuid: uuid + - chassis: chassis + - description: description + - extra: extra + + + +Response Example +---------------- + +.. literalinclude:: samples/chassis-list-details-response.json + :language: javascript + + + + + + + + + + + +Show chassis details +==================== + +.. rest_method:: GET /v1/chassis/{chassis_id} + +Shows details for a chassis. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - fields: fields + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - uuid: uuid + - chassis: chassis + - description: description + - extra: extra + + + +Response Example +---------------- + +.. literalinclude:: samples/chassis-show-response.json + :language: javascript + + + + + + + + + + + +Update chassis +============== + +.. rest_method:: PATCH /v1/chassis/{chassis_id} + +Updates a chassis. + + +Normal response codes: 200 +Error response codes:413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - chassis: chassis + - description: description + - extra: extra + +Request Example +--------------- + +.. literalinclude:: samples/chassis-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - links: links + - extra: extra + - created_at: created_at + - updated_at: updated_at + - chassis: chassis + - nodes: nodes + - uuid: uuid + + + +Response Example +---------------- + +.. literalinclude:: samples/chassis-show-response.json + :language: javascript + + + + + + + + + + + + + +Delete chassis +============== + +.. rest_method:: DELETE /v1/chassis/{chassis_id} + +Deletes a chassis. + +Error response codes:204,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + + + + + + + + + + + + +Create chassis +============== + +.. rest_method:: POST /v1/chassis + +Creates a chassis. + +Error response codes:201,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - chassis: chassis + - description: description + - extra: extra + +Request Example +--------------- + +.. literalinclude:: samples/chassis-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - links: links + - extra: extra + - created_at: created_at + - updated_at: updated_at + - nodes: nodes + - uuid: uuid + + + + + + + + + + + + + + +List chassis +============ + +.. rest_method:: GET /v1/chassis + +Lists all chassis. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - limit: limit + - marker: marker + - sort_dir: sort_dir + - sort_key: sort_key + - fields: fields + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - uuid: uuid + - chassis: chassis + - description: description + - extra: extra + + + +Response Example +---------------- + +.. literalinclude:: samples/chassis-list-response.json + :language: javascript + + + + + + + + + + diff --git a/api-ref/source/baremetal/v1/baremetal-api-v1-drivers.inc b/api-ref/source/baremetal/v1/baremetal-api-v1-drivers.inc new file mode 100644 index 000000000..ff79d0af7 --- /dev/null +++ b/api-ref/source/baremetal/v1/baremetal-api-v1-drivers.inc @@ -0,0 +1,244 @@ +.. -*- rst -*- + +================= +Drivers (drivers) +================= + + + + +Show driver details +=================== + +.. rest_method:: GET /v1/drivers/{driver_name} + +Shows details for a driver. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - driver_name: driver_name + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - hosts: hosts + - name: name + + + +Response Example +---------------- + +.. literalinclude:: samples/driver-get-response.json + :language: javascript + + + + + + + + + + + +Show driver properties +====================== + +.. rest_method:: GET /v1/drivers/{driver_name}/properties + +Shows properties for a driver. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - driver_name: driver_name + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - hosts: hosts + - name: name + - links: links + - properties: properties + + + +Response Example +---------------- + +.. literalinclude:: samples/driver-get-response.json + :language: javascript + + + + + + + + + + + +List drivers +============ + +.. rest_method:: GET /v1/drivers + +Lists all drivers. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - drivers: drivers + - hosts: hosts + - name: name + + + +Response Example +---------------- + +.. literalinclude:: samples/drivers-list-response.json + :language: javascript + + + + + + + + + + + +Show driver logical disk properties +=================================== + +.. rest_method:: GET /v1/drivers/{driver_name}/raid/logical_disk_properties + +Shows logical disk properties for a driver. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - driver_name: driver_name + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - hosts: hosts + - name: name + - links: links + - properties: properties + + + +Response Example +---------------- + +.. literalinclude:: samples/driver-get-response.json + :language: javascript + + + + + + + + + + + +Show driver vendor methods +========================== + +.. rest_method:: GET /v1/drivers/{driver_name}/vendor_passthru/methods + +Shows vendor methods for a driver. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - driver_name: driver_name + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - hosts: hosts + - name: name + - links: links + - properties: properties + + + +Response Example +---------------- + +.. literalinclude:: samples/driver-get-response.json + :language: javascript + + + + + + + + + + diff --git a/api-ref/source/baremetal/v1/baremetal-api-v1-nodes.inc b/api-ref/source/baremetal/v1/baremetal-api-v1-nodes.inc new file mode 100644 index 000000000..ae291eeb4 --- /dev/null +++ b/api-ref/source/baremetal/v1/baremetal-api-v1-nodes.inc @@ -0,0 +1,222 @@ +.. -*- rst -*- + +============= +Nodes (nodes) +============= + + + + +Show node details +================= + +.. rest_method:: GET /v1/nodes/{node_id} + +Shows details for a node. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - node_id: node_id + - fields: fields + + + + +Response Example +---------------- + +.. literalinclude:: samples/node-show-response.json + :language: javascript + + + + + + + + + + + +Update node +=========== + +.. rest_method:: PATCH /v1/nodes/{node_id} + +Updates a node. + + +Normal response codes: 200 +Error response codes:413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - node_id: node_id + + + + +Response Example +---------------- + +.. literalinclude:: + :language: javascript + + + + + + + + + + + + + +Delete node +=========== + +.. rest_method:: DELETE /v1/nodes/{node_id} + +Deletes a node. + +Error response codes:204,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - node_id: node_id + + + + + + + + + + + + + + + +List nodes with details +======================= + +.. rest_method:: GET /v1/nodes/detail + +Lists all nodes with details. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + +Response Example +---------------- + +.. literalinclude:: samples/nodes-list-details-response.json + :language: javascript + + + + + + + + + + + +Create node +=========== + +.. rest_method:: POST /v1/nodes + +Creates a node. + +Error response codes:201,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + + + + + + + + + + + + +List nodes +========== + +.. rest_method:: GET /v1/nodes + +Lists all nodes. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + +Response Example +---------------- + +.. literalinclude:: samples/nodes-list-response.json + :language: javascript + + + + + + + + + + diff --git a/api-ref/source/baremetal/v1/baremetal-api-v1-ports.inc b/api-ref/source/baremetal/v1/baremetal-api-v1-ports.inc new file mode 100644 index 000000000..93cbe0fe7 --- /dev/null +++ b/api-ref/source/baremetal/v1/baremetal-api-v1-ports.inc @@ -0,0 +1,222 @@ +.. -*- rst -*- + +============= +Ports (ports) +============= + + + + +Show port details +================= + +.. rest_method:: GET /v1/ports/{port_id} + +Shows details for a port. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - port_id: port_id + - fields: fields + + + + +Response Example +---------------- + +.. literalinclude:: + :language: javascript + + + + + + + + + + + +Update port +=========== + +.. rest_method:: PATCH /v1/ports/{port_id} + +Updates a port. + + +Normal response codes: 200 +Error response codes:413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - port_id: port_id + + + + +Response Example +---------------- + +.. literalinclude:: + :language: javascript + + + + + + + + + + + + + +Delete port +=========== + +.. rest_method:: DELETE /v1/ports/{port_id} + +Deletes a port. + +Error response codes:204,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - port_id: port_id + + + + + + + + + + + + + + + +List ports with details +======================= + +.. rest_method:: GET /v1/ports/detail + +Lists all ports with details. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + +Response Example +---------------- + +.. literalinclude:: + :language: javascript + + + + + + + + + + + +Create port +=========== + +.. rest_method:: POST /v1/ports + +Creates a port. + +Error response codes:201,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + + + + + + + + + + + + +List ports +========== + +.. rest_method:: GET /v1/ports + +Lists all ports. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + +Response Example +---------------- + +.. literalinclude:: + :language: javascript + + + + + + + + + + diff --git a/api-ref/source/baremetal/v1/parameters.yaml b/api-ref/source/baremetal/v1/parameters.yaml new file mode 100644 index 000000000..821334fc2 --- /dev/null +++ b/api-ref/source/baremetal/v1/parameters.yaml @@ -0,0 +1,209 @@ +# variables in header +{} + +# variables in path +driver_name: + description: | + The name of the driver. + in: path + required: false + type: string +node_id: + description: | + The UUID of the node. + in: path + required: false + type: string +port_id: + description: | + The UUID of the port. + in: path + required: false + type: string + +# variables in query +fields: + description: | + One or more chassis fields to be returned in the response. + + For example, the following request returns only the ``description`` + field for each chassis: + + :: + + GET /v1/chassis?fields=description + in: query + required: false + type: array +limit: + description: | + Requests a page size of items. Returns a number + of items up to a limit value. Use the ``limit`` parameter to make + an initial limited request and use the ID of the last-seen item + from the response as the ``marker`` parameter value in a + subsequent limited request. + in: query + required: false + type: integer +marker: + description: | + The ID of the last-seen item. Use the ``limit`` + parameter to make an initial limited request and use the ID of the + last-seen item from the response as the ``marker`` parameter value + in a subsequent limited request. + in: query + required: false + type: string +sort_dir: + description: | + Sorts the response by the requested sort + direction. A valid value is ``asc`` (ascending) or ``desc`` + (descending). Default is ``asc``. You can specify multiple pairs + of sort key and sort direction query parameters. If you omit the + sort direction in a pair, the API uses the natural sorting + direction of the server attribute that is provided as the + ``sort_key``. + in: query + required: false + type: string +sort_key: + description: | + Sorts the response by the this attribute value. + Default is ``id``. You can specify multiple pairs of sort key and + sort direction query parameters. If you omit the sort direction in + a pair, the API uses the natural sorting direction of the server + attribute that is provided as the ``sort_key``. + in: query + required: false + type: string + +# variables in body +chassis: + description: | + A ``chassis`` object. + in: body + required: true + type: array +chassis_1: + description: | + A list of chassis objects. + in: body + required: true + type: array +created_at: + description: | + The date and time when the resource was created. + + The date and time stamp format is `ISO 8601 + `_: + + :: + + CCYY-MM-DDThh:mm:ss±hh:mm + + For example, ``2015-08-27T09:49:58-05:00``. + + The ``±hh:mm`` value, if included, is the time zone as an offset + from UTC. + in: body + required: true + type: string +description: + description: | + A description for the chassis. + in: body + required: false + type: string +description_1: + description: | + A description for the chassis. + in: body + required: true + type: string +drivers: + description: | + A list of ``drivers`` objects. + in: body + required: true + type: array +extra: + description: | + A set of one or more arbitrary metadata key and + value pairs for the chassis. + in: body + required: false + type: object +extra_1: + description: | + A set of zero or more arbitrary metadata key and + value pairs for the chassis. + in: body + required: true + type: object +hosts: + description: | + A list of active hosts that support this driver. + in: body + required: true + type: array +links: + description: | + A list that contains a self link and associated + chassis links. + in: body + required: true + type: array +links_1: + description: | + A list of relative links. Includes the self and + bookmark links. + in: body + required: true + type: array +name: + description: | + The name of the driver. + in: body + required: true + type: string +nodes: + description: | + Links to the collection of nodes contained in + this chassis. + in: body + required: true + type: array +properties: + description: | + A list of links to driver properties. + in: body + required: true + type: array +updated_at: + description: | + The date and time when the resource was updated. + + The date and time stamp format is `ISO 8601 + `_: + + :: + + CCYY-MM-DDThh:mm:ss±hh:mm + + For example, ``2015-08-27T09:49:58-05:00``. + + The ``±hh:mm`` value, if included, is the time zone as an offset + from UTC. In the previous example, the offset value is ``-05:00``. + + If the ``updated_at`` date and time stamp is not set, its value is + ``null``. + in: body + required: true + type: string +uuid: + description: | + The UUID for the chassis. + in: body + required: true + type: string + diff --git a/api-ref/source/baremetal/v1/samples/chassis-create-request.json b/api-ref/source/baremetal/v1/samples/chassis-create-request.json new file mode 100644 index 000000000..56a95334d --- /dev/null +++ b/api-ref/source/baremetal/v1/samples/chassis-create-request.json @@ -0,0 +1,7 @@ +{ + "chassis": [ + { + "description": "Sample chassis" + } + ] +} diff --git a/api-ref/source/baremetal/v1/samples/chassis-list-details-response.json b/api-ref/source/baremetal/v1/samples/chassis-list-details-response.json new file mode 100644 index 000000000..034166cf5 --- /dev/null +++ b/api-ref/source/baremetal/v1/samples/chassis-list-details-response.json @@ -0,0 +1,18 @@ +{ + "chassis": [ + { + "description": "Sample chassis", + "links": [ + { + "href": "http://localhost:6385/v1/chassis/eaaca217-e7d8-47b4-bb41-3f99f20eed89", + "rel": "self" + }, + { + "href": "http://localhost:6385/chassis/eaaca217-e7d8-47b4-bb41-3f99f20eed89", + "rel": "bookmark" + } + ], + "uuid": "eaaca217-e7d8-47b4-bb41-3f99f20eed89" + } + ] +} diff --git a/api-ref/source/baremetal/v1/samples/chassis-list-response.json b/api-ref/source/baremetal/v1/samples/chassis-list-response.json new file mode 100644 index 000000000..034166cf5 --- /dev/null +++ b/api-ref/source/baremetal/v1/samples/chassis-list-response.json @@ -0,0 +1,18 @@ +{ + "chassis": [ + { + "description": "Sample chassis", + "links": [ + { + "href": "http://localhost:6385/v1/chassis/eaaca217-e7d8-47b4-bb41-3f99f20eed89", + "rel": "self" + }, + { + "href": "http://localhost:6385/chassis/eaaca217-e7d8-47b4-bb41-3f99f20eed89", + "rel": "bookmark" + } + ], + "uuid": "eaaca217-e7d8-47b4-bb41-3f99f20eed89" + } + ] +} diff --git a/api-ref/source/baremetal/v1/samples/chassis-show-response.json b/api-ref/source/baremetal/v1/samples/chassis-show-response.json new file mode 100644 index 000000000..124fff077 --- /dev/null +++ b/api-ref/source/baremetal/v1/samples/chassis-show-response.json @@ -0,0 +1,27 @@ +{ + "created_at": "2000-01-01T12:00:00", + "description": "Sample chassis", + "extra": {}, + "links": [ + { + "href": "http://localhost:6385/v1/chassis/eaaca217-e7d8-47b4-bb41-3f99f20eed89", + "rel": "self" + }, + { + "href": "http://localhost:6385/chassis/eaaca217-e7d8-47b4-bb41-3f99f20eed89", + "rel": "bookmark" + } + ], + "nodes": [ + { + "href": "http://localhost:6385/v1/chassis/eaaca217-e7d8-47b4-bb41-3f99f20eed89/nodes", + "rel": "self" + }, + { + "href": "http://localhost:6385/chassis/eaaca217-e7d8-47b4-bb41-3f99f20eed89/nodes", + "rel": "bookmark" + } + ], + "updated_at": "2000-01-01T12:00:00", + "uuid": "eaaca217-e7d8-47b4-bb41-3f99f20eed89" +} diff --git a/api-ref/source/baremetal/v1/samples/chassis-update-request.json b/api-ref/source/baremetal/v1/samples/chassis-update-request.json new file mode 100644 index 000000000..56a95334d --- /dev/null +++ b/api-ref/source/baremetal/v1/samples/chassis-update-request.json @@ -0,0 +1,7 @@ +{ + "chassis": [ + { + "description": "Sample chassis" + } + ] +} diff --git a/api-ref/source/baremetal/v1/samples/driver-get-response.json b/api-ref/source/baremetal/v1/samples/driver-get-response.json new file mode 100644 index 000000000..d1053fb87 --- /dev/null +++ b/api-ref/source/baremetal/v1/samples/driver-get-response.json @@ -0,0 +1,6 @@ +{ + "hosts": [ + "fake-host" + ], + "name": "sample-driver" +} diff --git a/api-ref/source/baremetal/v1/samples/drivers-list-response.json b/api-ref/source/baremetal/v1/samples/drivers-list-response.json new file mode 100644 index 000000000..db387dc76 --- /dev/null +++ b/api-ref/source/baremetal/v1/samples/drivers-list-response.json @@ -0,0 +1,10 @@ +{ + "drivers": [ + { + "hosts": [ + "fake-host" + ], + "name": "sample-driver" + } + ] +} diff --git a/api-ref/source/baremetal/v1/samples/node-show-response.json b/api-ref/source/baremetal/v1/samples/node-show-response.json new file mode 100644 index 000000000..34cc5f7de --- /dev/null +++ b/api-ref/source/baremetal/v1/samples/node-show-response.json @@ -0,0 +1,63 @@ +{ + "chassis_uuid": "edcad704-b2da-41d5-96d9-afd580ecfa12", + "clean_step": {}, + "console_enabled": false, + "created_at": "2000-01-01T12:00:00", + "driver": "fake", + "driver_info": {}, + "driver_internal_info": {}, + "extra": {}, + "inspection_finished_at": null, + "inspection_started_at": "2000-01-01T12:00:00", + "instance_info": {}, + "instance_uuid": "dcf1fbc5-93fc-4596-9395-b80572f6267b", + "last_error": null, + "links": [ + { + "href": "http://localhost:6385/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", + "rel": "self" + }, + { + "href": "http://localhost:6385/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", + "rel": "bookmark" + } + ], + "maintenance": false, + "maintenance_reason": null, + "name": "database16-dc02", + "ports": [ + { + "href": "http://localhost:6385/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", + "rel": "self" + }, + { + "href": "http://localhost:6385/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", + "rel": "bookmark" + } + ], + "power_state": "power on", + "properties": { + "cpus": "1", + "local_gb": "10", + "memory_mb": "1024" + }, + "provision_state": "active", + "provision_updated_at": "2000-01-01T12:00:00", + "raid_config": null, + "reservation": null, + "states": [ + { + "href": "http://localhost:6385/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", + "rel": "self" + }, + { + "href": "http://localhost:6385/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", + "rel": "bookmark" + } + ], + "target_power_state": null, + "target_provision_state": null, + "target_raid_config": null, + "updated_at": "2000-01-01T12:00:00", + "uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123" +} diff --git a/api-ref/source/baremetal/v1/samples/node-states-show-response.json b/api-ref/source/baremetal/v1/samples/node-states-show-response.json new file mode 100644 index 000000000..fd9a40da5 --- /dev/null +++ b/api-ref/source/baremetal/v1/samples/node-states-show-response.json @@ -0,0 +1,11 @@ +{ + "console_enabled": false, + "last_error": null, + "power_state": "power on", + "provision_state": null, + "provision_updated_at": null, + "raid_config": null, + "target_power_state": "power on", + "target_provision_state": "active", + "target_raid_config": null +} diff --git a/api-ref/source/baremetal/v1/samples/nodes-list-details-response.json b/api-ref/source/baremetal/v1/samples/nodes-list-details-response.json new file mode 100644 index 000000000..17487fd3c --- /dev/null +++ b/api-ref/source/baremetal/v1/samples/nodes-list-details-response.json @@ -0,0 +1,64 @@ +{ + "nodes": [ + { + "chassis_uuid": "633f9f21-5bd5-4166-b811-1eb01490c4ab", + "clean_step": {}, + "console_enabled": false, + "created_at": "2016-04-23T10:52:43+00:00", + "driver": "pxe_ssh", + "driver_info": { + "deploy_kernel": "aadebece-ce44-4cf6-a9e8-545f0e8ac9f3", + "deploy_ramdisk": "cfe6f9ce-b2e6-4a7a-9246-0cc7eeb89a71", + "ssh_address": "localhost", + "ssh_key_filename": "/opt/stack/data/ironic/ssh_keys/ironic_key", + "ssh_port": 22, + "ssh_username": "ubuntu", + "ssh_virt_type": "virsh" + }, + "driver_internal_info": {}, + "extra": {}, + "inspection_finished_at": null, + "inspection_started_at": null, + "instance_info": {}, + "instance_uuid": null, + "last_error": null, + "links": [ + { + "href": "http://localhost:6385/v1/nodes/277c9fe9-a385-4e45-9399-660f3287e48c", + "rel": "self" + }, + { + "href": "http://localhost:6385/nodes/277c9fe9-a385-4e45-9399-660f3287e48c", + "rel": "bookmark" + } + ], + "maintenance": false, + "maintenance_reason": null, + "name": "node-0", + "ports": [ + { + "href": "http://localhost:6385/v1/nodes/277c9fe9-a385-4e45-9399-660f3287e48c/ports", + "rel": "self" + }, + { + "href": "http://localhost:6385/nodes/277c9fe9-a385-4e45-9399-660f3287e48c/ports", + "rel": "bookmark" + } + ], + "power_state": "power off", + "properties": { + "cpu_arch": "x86_64", + "cpus": 1, + "local_gb": 10, + "memory_mb": 1024 + }, + "provision_state": "available", + "provision_updated_at": null, + "reservation": null, + "target_power_state": null, + "target_provision_state": null, + "updated_at": "2016-04-23T10:53:37+00:00", + "uuid": "277c9fe9-a385-4e45-9399-660f3287e48c" + } + ] +} diff --git a/api-ref/source/baremetal/v1/samples/nodes-list-response.json b/api-ref/source/baremetal/v1/samples/nodes-list-response.json new file mode 100644 index 000000000..8acb80205 --- /dev/null +++ b/api-ref/source/baremetal/v1/samples/nodes-list-response.json @@ -0,0 +1,22 @@ +{ + "nodes": [ + { + "instance_uuid": "dcf1fbc5-93fc-4596-9395-b80572f6267b", + "links": [ + { + "href": "http://localhost:6385/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", + "rel": "self" + }, + { + "href": "http://localhost:6385/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", + "rel": "bookmark" + } + ], + "maintenance": false, + "name": "database16-dc02", + "power_state": "power on", + "provision_state": "active", + "uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123" + } + ] +} diff --git a/api-ref/source/blockstorage/v1/os-quota-sets-v1.inc b/api-ref/source/blockstorage/v1/os-quota-sets-v1.inc new file mode 100644 index 000000000..5a51a3f66 --- /dev/null +++ b/api-ref/source/blockstorage/v1/os-quota-sets-v1.inc @@ -0,0 +1,438 @@ +.. -*- rst -*- + +==================================== +Quota sets extension (os-quota-sets) +==================================== + +Administrators only, depending on policy settings. + +Shows, updates, and deletes quotas for a tenant. + + +Show quota details for user +=========================== + +.. rest_method:: GET /v1/{tenant_id}/os-quota-sets/{tenant_id}/detail/{user_id} + +Shows details for quotas for a tenant and user. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - user_id: user_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - injected_file_content_bytes: injected_file_content_bytes + - metadata_items: metadata_items + - reserved: reserved + - in_use: in_use + - ram: ram + - floating_ips: floating_ips + - key_pairs: key_pairs + - injected_file_path_bytes: injected_file_path_bytes + - instances: instances + - limit: limit + - security_group_rules: security_group_rules + - injected_files: injected_files + - quota_set: quota_set + - cores: cores + - fixed_ips: fixed_ips + - id: id + - security_groups: security_groups + + + +Response Example +---------------- + +.. literalinclude:: ../samples/os-user-quotas/user-quotas-show-detail-response.json + :language: javascript + + + + +Show default quotas +=================== + +.. rest_method:: GET /v1/{tenant_id}/os-quota-sets/defaults + +Shows default quotas for a tenant. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - injected_file_content_bytes: injected_file_content_bytes + - metadata_items: metadata_items + - reserved: reserved + - in_use: in_use + - ram: ram + - floating_ips: floating_ips + - key_pairs: key_pairs + - injected_file_path_bytes: injected_file_path_bytes + - instances: instances + - security_group_rules: security_group_rules + - injected_files: injected_files + - quota_set: quota_set + - cores: cores + - fixed_ips: fixed_ips + - id: id + - security_groups: security_groups + + + +Response Example +---------------- + +.. literalinclude:: ../samples/os-quota-sets/quotas-defaults-show-response.json + :language: javascript + + + + +Show quotas +=========== + +.. rest_method:: GET /v1/{tenant_id}/os-quota-sets/{tenant_id} + +Shows quotas for a tenant. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - usage: usage + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - injected_file_content_bytes: injected_file_content_bytes + - metadata_items: metadata_items + - reserved: reserved + - in_use: in_use + - ram: ram + - floating_ips: floating_ips + - key_pairs: key_pairs + - injected_file_path_bytes: injected_file_path_bytes + - instances: instances + - security_group_rules: security_group_rules + - injected_files: injected_files + - quota_set: quota_set + - cores: cores + - fixed_ips: fixed_ips + - id: id + - security_groups: security_groups + + + +Response Example +---------------- + +.. literalinclude:: ../samples/os-quota-sets/quotas-show-response.json + :language: javascript + + + + +Update quotas +============= + +.. rest_method:: PUT /v1/{tenant_id}/os-quota-sets/{tenant_id} + +Updates quotas for a tenant. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - injected_file_content_bytes: injected_file_content_bytes + - metadata_items: metadata_items + - ram: ram + - floating_ips: floating_ips + - key_pairs: key_pairs + - id: id + - instances: instances + - security_group_rules: security_group_rules + - injected_files: injected_files + - quota_set: quota_set + - cores: cores + - fixed_ips: fixed_ips + - injected_file_path_bytes: injected_file_path_bytes + - security_groups: security_groups + - tenant_id: tenant_id + +Request Example +--------------- + +.. literalinclude:: ../samples/os-quota-sets/quotas-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - injected_file_content_bytes: injected_file_content_bytes + - metadata_items: metadata_items + - reserved: reserved + - in_use: in_use + - ram: ram + - floating_ips: floating_ips + - key_pairs: key_pairs + - injected_file_path_bytes: injected_file_path_bytes + - instances: instances + - security_group_rules: security_group_rules + - injected_files: injected_files + - quota_set: quota_set + - cores: cores + - fixed_ips: fixed_ips + - id: id + - security_groups: security_groups + + + +Response Example +---------------- + +.. literalinclude:: ../samples/os-quota-sets/quotas-update-response.json + :language: javascript + + + + +Delete quotas +============= + +.. rest_method:: DELETE /v1/{tenant_id}/os-quota-sets/{tenant_id} + +Deletes quotas for a tenant so the quotas revert to default values. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + + + + +Response Example +---------------- + +.. literalinclude:: + :language: javascript + + + + +Show quotas for user +==================== + +.. rest_method:: GET /v1/{tenant_id}/os-quota-sets/{tenant_id}/{user_id} + +Enables an admin user to show quotas for a tenant and user. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - user_id: user_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - injected_file_content_bytes: injected_file_content_bytes + - metadata_items: metadata_items + - reserved: reserved + - in_use: in_use + - ram: ram + - floating_ips: floating_ips + - key_pairs: key_pairs + - injected_file_path_bytes: injected_file_path_bytes + - instances: instances + - security_group_rules: security_group_rules + - injected_files: injected_files + - quota_set: quota_set + - cores: cores + - fixed_ips: fixed_ips + - id: id + - security_groups: security_groups + + + +Response Example +---------------- + +.. literalinclude:: ../samples/os-user-quotas/user-quotas-show-response.json + :language: javascript + + + + +Update quotas for user +====================== + +.. rest_method:: POST /v1/{tenant_id}/os-quota-sets/{tenant_id}/{user_id} + +Updates quotas for a tenant and user. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - injected_file_content_bytes: injected_file_content_bytes + - metadata_items: metadata_items + - ram: ram + - floating_ips: floating_ips + - key_pairs: key_pairs + - id: id + - instances: instances + - security_group_rules: security_group_rules + - injected_files: injected_files + - quota_set: quota_set + - cores: cores + - fixed_ips: fixed_ips + - injected_file_path_bytes: injected_file_path_bytes + - security_groups: security_groups + - tenant_id: tenant_id + - user_id: user_id + +Request Example +--------------- + +.. literalinclude:: ../samples/os-user-quotas/user-quotas-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - injected_file_content_bytes: injected_file_content_bytes + - metadata_items: metadata_items + - reserved: reserved + - in_use: in_use + - ram: ram + - floating_ips: floating_ips + - key_pairs: key_pairs + - injected_file_path_bytes: injected_file_path_bytes + - instances: instances + - security_group_rules: security_group_rules + - injected_files: injected_files + - quota_set: quota_set + - cores: cores + - fixed_ips: fixed_ips + - id: id + - security_groups: security_groups + + + +Response Example +---------------- + +.. literalinclude:: ../samples/os-user-quotas/user-quotas-update-response.json + :language: javascript + + + + +Delete quotas for user +====================== + +.. rest_method:: DELETE /v1/{tenant_id}/os-quota-sets/{tenant_id}/{user_id} + +Deletes quotas for a user so that the quotas revert to default values. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - user_id: user_id + + + + +Response Example +---------------- + +.. literalinclude:: + :language: javascript + + + diff --git a/api-ref/source/blockstorage/v1/parameters.yaml b/api-ref/source/blockstorage/v1/parameters.yaml new file mode 100644 index 000000000..ce9b46888 --- /dev/null +++ b/api-ref/source/blockstorage/v1/parameters.yaml @@ -0,0 +1,638 @@ +# variables in header +{} + +# variables in path +snapshot_id_1: + description: | + The UUID of the snapshot. + in: path + required: false + type: string +tenant_id: + description: | + The UUID of the tenant in a multi-tenancy cloud. + in: path + required: false + type: string +user_id: + description: | + The user ID. Specify in the URI as + ``user_id={user_id}``. + in: path + required: false + type: string +volume_id: + description: | + The UUID of the volume. + in: path + required: false + type: string +volume_type_id: + description: | + The UUID for an existing volume type. + in: path + required: false + type: string + +# variables in query +usage: + description: | + Set to ``usage=true`` to show quota usage. + Default is ``false``. + in: query + required: false + type: boolean + +# variables in body +attachments: + description: | + Instance attachment information. If this volume + is attached to a server instance, the attachments list includes + the UUID of the attached server, an attachment UUID, the name of + the attached host, if any, the volume UUID, the device, and the + device UUID. Otherwise, this list is empty. + in: body + required: true + type: array +availability_zone: + description: | + The availability zone. + in: body + required: false + type: string +availability_zone_1: + description: | + The availability zone. + in: body + required: true + type: string +bootable: + description: | + Enables or disables the bootable attribute. You + can boot an instance from a bootable volume. + in: body + required: true + type: boolean +consistencygroup_id: + description: | + The UUID of the consistency group. + in: body + required: false + type: string +consistencygroup_id_1: + description: | + The UUID of the consistency group. + in: body + required: true + type: string +cores: + description: | + The number of instance cores that are allowed for + each tenant. + in: body + required: true + type: integer +cores_1: + description: | + A ``cores`` object. + in: body + required: true + type: string +cores_2: + description: | + The number of instance cores that are allowed for + each tenant. + in: body + required: false + type: integer +created_at: + description: | + The date and time when the resource was created. + + The date and time stamp format is `ISO 8601 + `_: + + :: + + CCYY-MM-DDThh:mm:ss±hh:mm + + For example, ``2015-08-27T09:49:58-05:00``. + + The ``±hh:mm`` value, if included, is the time zone as an offset + from UTC. + in: body + required: true + type: string +description: + description: | + The volume description. + in: body + required: false + type: string +description_1: + description: | + The volume description. + in: body + required: true + type: string +encrypted: + description: | + If true, this volume is encrypted. + in: body + required: true + type: boolean +extra_specs: + description: | + A set of key and value pairs that contains the + specifications for a volume type. + in: body + required: true + type: object +fixed_ips: + description: | + The number of fixed IP addresses that are allowed + for each tenant. Must be equal to or greater than the number of + allowed instances. + in: body + required: true + type: integer +fixed_ips_1: + description: | + A ``fixed_ips`` object. + in: body + required: true + type: string +fixed_ips_2: + description: | + The number of fixed IP addresses that are allowed + for each tenant. Must be equal to or greater than the number of + allowed instances. + in: body + required: false + type: integer +floating_ips: + description: | + The number of floating IP addresses that are + allowed for each tenant. + in: body + required: true + type: integer +floating_ips_1: + description: | + A ``floating_ips`` object. + in: body + required: true + type: string +floating_ips_2: + description: | + The number of floating IP addresses that are + allowed for each tenant. + in: body + required: false + type: integer +id: + description: | + The UUID of the volume. + in: body + required: true + type: string +id_1: + description: | + The ID for the quota set. + in: body + required: true + type: integer +id_2: + description: | + The ID for the quota set. + in: body + required: true + type: string +id_3: + description: | + The ID for the quota set. + in: body + required: false + type: integer +imageRef: + description: | + The UUID of the image from which you want to + create the volume. Required to create a bootable volume. + in: body + required: false + type: string +in_use: + description: | + The in use data size. Visible only if you set the + ``usage=true`` query parameter. + in: body + required: false + type: string +in_use_1: + description: | + The number of items in use. + in: body + required: true + type: integer +injected_file_content_bytes: + description: | + The number of bytes of content that are allowed + for each injected file. + in: body + required: true + type: integer +injected_file_content_bytes_1: + description: | + An ``injected_file_content_bytes`` object. + in: body + required: true + type: string +injected_file_content_bytes_2: + description: | + The number of bytes of content that are allowed + for each injected file. + in: body + required: false + type: integer +injected_file_path_bytes: + description: | + The number of bytes that are allowed for each + injected file path. + in: body + required: true + type: integer +injected_file_path_bytes_1: + description: | + An ``injected_file_path_bytes`` object. + in: body + required: true + type: string +injected_file_path_bytes_2: + description: | + The number of bytes that are allowed for each + injected file path. + in: body + required: false + type: integer +injected_files: + description: | + The number of injected files that are allowed for + each tenant. + in: body + required: true + type: integer +injected_files_1: + description: | + An ``injected_files`` object. + in: body + required: true + type: string +injected_files_2: + description: | + The number of injected files that are allowed for + each tenant. + in: body + required: false + type: integer +instances: + description: | + The number of instances that are allowed for each + tenant. + in: body + required: true + type: integer +instances_1: + description: | + An ``instances`` object. + in: body + required: true + type: string +instances_2: + description: | + The number of instances that are allowed for each + tenant. + in: body + required: false + type: integer +key_pairs: + description: | + The number of key pairs that are allowed for each + user. + in: body + required: true + type: integer +key_pairs_1: + description: | + A ``key_pairs`` object. + in: body + required: true + type: string +key_pairs_2: + description: | + The number of key pairs that are allowed for each + user. + in: body + required: false + type: integer +limit: + description: | + The number of items permitted for this tenant. + in: body + required: true + type: integer +links: + description: | + The volume links. + in: body + required: true + type: array +metadata: + description: | + One or more metadata key and value pairs that are + associated with the volume. + in: body + required: false + type: object +metadata_1: + description: | + One or more metadata key and value pairs that are + associated with the volume. + in: body + required: true + type: object +metadata_2: + description: | + One or more metadata key and value pairs for the + snapshot. + in: body + required: false + type: object +metadata_items: + description: | + The number of metadata items that are allowed for + each instance. + in: body + required: true + type: integer +metadata_items_1: + description: | + A ``metadata_items`` object. + in: body + required: true + type: string +metadata_items_2: + description: | + The number of metadata items that are allowed for + each instance. + in: body + required: false + type: integer +migration_status: + description: | + The volume migration status. + in: body + required: true + type: string +multiattach: + description: | + To enable this volume to attach to more than one + server, set this value to ``true``. Default is ``false``. + in: body + required: false + type: boolean +multiattach_1: + description: | + If true, this volume can attach to more than one + instance. + in: body + required: true + type: boolean +name: + description: | + The name of the volume type. + in: body + required: true + type: string +name_1: + description: | + The volume name. + in: body + required: false + type: string +name_2: + description: | + The volume name. + in: body + required: true + type: string +quota_set: + description: | + A ``quota_set`` object. + in: body + required: true + type: object +quota_set_1: + description: | + A ``quota_set`` object. + in: body + required: true + type: string +ram: + description: | + The amount of instance RAM in megabytes that are + allowed for each tenant. + in: body + required: true + type: integer +ram_1: + description: | + A ``ram`` object. + in: body + required: true + type: string +ram_2: + description: | + The amount of instance RAM in megabytes that are + allowed for each tenant. + in: body + required: false + type: integer +replication_status: + description: | + The volume replication status. + in: body + required: true + type: string +reserved: + description: | + Reserved volume size. Visible only if you set the + ``usage=true`` query parameter. + in: body + required: false + type: integer +reserved_1: + description: | + The number of reserved items. + in: body + required: true + type: integer +scheduler_hints: + description: | + The dictionary of data to send to the scheduler. + in: body + required: false + type: object +security_group_rules: + description: | + The number of rules that are allowed for each + security group. + in: body + required: false + type: integer +security_group_rules_1: + description: | + A ``security_group_rules`` object. + in: body + required: true + type: string +security_groups: + description: | + The number of security groups that are allowed + for each tenant. + in: body + required: true + type: integer +security_groups_1: + description: | + A ``security_groups`` object. + in: body + required: true + type: string +security_groups_2: + description: | + The number of security groups that are allowed + for each tenant. + in: body + required: false + type: integer +size: + description: | + The size of the volume, in gibibytes (GiB). + in: body + required: true + type: integer +snapshot: + description: | + A ``snapshot`` object. + in: body + required: true + type: object +snapshot_id: + description: | + To create a volume from an existing snapshot, + specify the UUID of the volume snapshot. The volume is created in + same availability zone and with same size as the snapshot. + in: body + required: false + type: string +snapshot_id_2: + description: | + The UUID of the source volume snapshot. The API + creates a new volume snapshot with the same size as the source + volume snapshot. + in: body + required: true + type: string +source_replica: + description: | + The UUID of the primary volume to clone. + in: body + required: false + type: string +source_volid: + description: | + The UUID of the source volume. The API creates a + new volume with the same size as the source volume. + in: body + required: false + type: string +source_volid_1: + description: | + The UUID of the source volume. + in: body + required: true + type: string +status: + description: | + The volume status. + in: body + required: true + type: string +updated_at: + description: | + The date and time when the resource was updated. + + The date and time stamp format is `ISO 8601 + `_: + + :: + + CCYY-MM-DDThh:mm:ss±hh:mm + + For example, ``2015-08-27T09:49:58-05:00``. + + The ``±hh:mm`` value, if included, is the time zone as an offset + from UTC. In the previous example, the offset value is ``-05:00``. + + If the ``updated_at`` date and time stamp is not set, its value is + ``null``. + in: body + required: true + type: string +user_id_1: + description: | + The UUID of the user. + in: body + required: true + type: string +volume: + description: | + A ``volume`` object. + in: body + required: true + type: object +volume_type: + description: | + The volume type. To create an environment with + multiple-storage back ends, you must specify a volume type. Block + Storage volume back ends are spawned as children to ``cinder- + volume``, and they are keyed from a unique queue. They are named + ``cinder- volume.HOST.BACKEND``. For example, ``cinder- + volume.ubuntu.lvmdriver``. When a volume is created, the scheduler + chooses an appropriate back end to handle the request based on the + volume type. Default is ``None``. For information about how to + use volume types to create multiple- storage back ends, see + `Configure multiple-storage back ends + `_. + in: body + required: false + type: string +volume_type_1: + description: | + The volume type. In an environment with multiple- + storage back ends, the scheduler determines where to send the + volume based on the volume type. For information about how to use + volume types to create multiple- storage back ends, see `Configure + multiple-storage back ends `_. + in: body + required: true + type: string +volumes: + description: | + A list of ``volume`` objects. + in: body + required: true + type: array + diff --git a/api-ref/source/blockstorage/v1/samples/os-quota-sets/quotas-defaults-show-response.json b/api-ref/source/blockstorage/v1/samples/os-quota-sets/quotas-defaults-show-response.json new file mode 100644 index 000000000..239c64d23 --- /dev/null +++ b/api-ref/source/blockstorage/v1/samples/os-quota-sets/quotas-defaults-show-response.json @@ -0,0 +1,17 @@ +{ + "quota_set": { + "cores": 20, + "fixed_ips": -1, + "floating_ips": 10, + "id": "fake_tenant", + "injected_file_content_bytes": 10240, + "injected_file_path_bytes": 255, + "injected_files": 5, + "instances": 10, + "key_pairs": 100, + "metadata_items": 128, + "ram": 51200, + "security_group_rules": 20, + "security_groups": 10 + } +} diff --git a/api-ref/source/blockstorage/v1/samples/os-quota-sets/quotas-defaults-show-response.xml b/api-ref/source/blockstorage/v1/samples/os-quota-sets/quotas-defaults-show-response.xml new file mode 100644 index 000000000..76a9292c1 --- /dev/null +++ b/api-ref/source/blockstorage/v1/samples/os-quota-sets/quotas-defaults-show-response.xml @@ -0,0 +1,15 @@ + + + 20 + -1 + 10 + 10240 + 255 + 5 + 10 + 100 + 128 + 51200 + 20 + 10 + diff --git a/api-ref/source/blockstorage/v1/samples/os-quota-sets/quotas-show-response.json b/api-ref/source/blockstorage/v1/samples/os-quota-sets/quotas-show-response.json new file mode 100644 index 000000000..239c64d23 --- /dev/null +++ b/api-ref/source/blockstorage/v1/samples/os-quota-sets/quotas-show-response.json @@ -0,0 +1,17 @@ +{ + "quota_set": { + "cores": 20, + "fixed_ips": -1, + "floating_ips": 10, + "id": "fake_tenant", + "injected_file_content_bytes": 10240, + "injected_file_path_bytes": 255, + "injected_files": 5, + "instances": 10, + "key_pairs": 100, + "metadata_items": 128, + "ram": 51200, + "security_group_rules": 20, + "security_groups": 10 + } +} diff --git a/api-ref/source/blockstorage/v1/samples/os-quota-sets/quotas-show-response.xml b/api-ref/source/blockstorage/v1/samples/os-quota-sets/quotas-show-response.xml new file mode 100644 index 000000000..76a9292c1 --- /dev/null +++ b/api-ref/source/blockstorage/v1/samples/os-quota-sets/quotas-show-response.xml @@ -0,0 +1,15 @@ + + + 20 + -1 + 10 + 10240 + 255 + 5 + 10 + 100 + 128 + 51200 + 20 + 10 + diff --git a/api-ref/source/blockstorage/v1/samples/os-quota-sets/quotas-update-request.json b/api-ref/source/blockstorage/v1/samples/os-quota-sets/quotas-update-request.json new file mode 100644 index 000000000..1f12caa04 --- /dev/null +++ b/api-ref/source/blockstorage/v1/samples/os-quota-sets/quotas-update-request.json @@ -0,0 +1,5 @@ +{ + "quota_set": { + "security_groups": 45 + } +} diff --git a/api-ref/source/blockstorage/v1/samples/os-quota-sets/quotas-update-request.xml b/api-ref/source/blockstorage/v1/samples/os-quota-sets/quotas-update-request.xml new file mode 100644 index 000000000..596ce56ac --- /dev/null +++ b/api-ref/source/blockstorage/v1/samples/os-quota-sets/quotas-update-request.xml @@ -0,0 +1,4 @@ + + + 45 + diff --git a/api-ref/source/blockstorage/v1/samples/os-quota-sets/quotas-update-response.json b/api-ref/source/blockstorage/v1/samples/os-quota-sets/quotas-update-response.json new file mode 100644 index 000000000..2be76d472 --- /dev/null +++ b/api-ref/source/blockstorage/v1/samples/os-quota-sets/quotas-update-response.json @@ -0,0 +1,16 @@ +{ + "quota_set": { + "cores": 20, + "fixed_ips": -1, + "floating_ips": 10, + "injected_file_content_bytes": 10240, + "injected_file_path_bytes": 255, + "injected_files": 5, + "instances": 10, + "key_pairs": 100, + "metadata_items": 128, + "ram": 51200, + "security_group_rules": 20, + "security_groups": 45 + } +} diff --git a/api-ref/source/blockstorage/v1/samples/os-quota-sets/quotas-update-response.xml b/api-ref/source/blockstorage/v1/samples/os-quota-sets/quotas-update-response.xml new file mode 100644 index 000000000..e03a0bf5e --- /dev/null +++ b/api-ref/source/blockstorage/v1/samples/os-quota-sets/quotas-update-response.xml @@ -0,0 +1,15 @@ + + + 20 + -1 + 10 + 10240 + 255 + 5 + 10 + 100 + 128 + 51200 + 20 + 45 + diff --git a/api-ref/source/blockstorage/v1/samples/os-user-quotas/user-quotas-show-detail-response.json b/api-ref/source/blockstorage/v1/samples/os-user-quotas/user-quotas-show-detail-response.json new file mode 100644 index 000000000..53ecff0ba --- /dev/null +++ b/api-ref/source/blockstorage/v1/samples/os-user-quotas/user-quotas-show-detail-response.json @@ -0,0 +1,64 @@ +{ + "quota_set": { + "cores": { + "in_use": 0, + "limit": 20, + "reserved": 0 + }, + "fixed_ips": { + "in_use": 0, + "limit": -1, + "reserved": 0 + }, + "floating_ips": { + "in_use": 0, + "limit": 10, + "reserved": 0 + }, + "injected_files": { + "in_use": 0, + "limit": 5, + "reserved": 0 + }, + "instances": { + "in_use": 0, + "limit": 10, + "reserved": 0 + }, + "key_pairs": { + "in_use": 0, + "limit": 100, + "reserved": 0 + }, + "metadata_items": { + "in_use": 0, + "limit": 128, + "reserved": 0 + }, + "ram": { + "in_use": 0, + "limit": 51200, + "reserved": 0 + }, + "security_groups": { + "in_use": 0, + "limit": 10, + "reserved": 0 + }, + "injected_file_content_bytes": { + "in_use": 0, + "limit": 10240, + "reserved": 0 + }, + "injected_file_path_bytes": { + "in_use": 0, + "limit": 255, + "reserved": 0 + }, + "security_group_rules": { + "in_use": 0, + "limit": 20, + "reserved": 0 + } + } +} diff --git a/api-ref/source/blockstorage/v1/samples/os-user-quotas/user-quotas-show-response.json b/api-ref/source/blockstorage/v1/samples/os-user-quotas/user-quotas-show-response.json new file mode 100644 index 000000000..239c64d23 --- /dev/null +++ b/api-ref/source/blockstorage/v1/samples/os-user-quotas/user-quotas-show-response.json @@ -0,0 +1,17 @@ +{ + "quota_set": { + "cores": 20, + "fixed_ips": -1, + "floating_ips": 10, + "id": "fake_tenant", + "injected_file_content_bytes": 10240, + "injected_file_path_bytes": 255, + "injected_files": 5, + "instances": 10, + "key_pairs": 100, + "metadata_items": 128, + "ram": 51200, + "security_group_rules": 20, + "security_groups": 10 + } +} diff --git a/api-ref/source/blockstorage/v1/samples/os-user-quotas/user-quotas-show-response.xml b/api-ref/source/blockstorage/v1/samples/os-user-quotas/user-quotas-show-response.xml new file mode 100644 index 000000000..76a9292c1 --- /dev/null +++ b/api-ref/source/blockstorage/v1/samples/os-user-quotas/user-quotas-show-response.xml @@ -0,0 +1,15 @@ + + + 20 + -1 + 10 + 10240 + 255 + 5 + 10 + 100 + 128 + 51200 + 20 + 10 + diff --git a/api-ref/source/blockstorage/v1/samples/os-user-quotas/user-quotas-update-request.json b/api-ref/source/blockstorage/v1/samples/os-user-quotas/user-quotas-update-request.json new file mode 100644 index 000000000..6e5195f9a --- /dev/null +++ b/api-ref/source/blockstorage/v1/samples/os-user-quotas/user-quotas-update-request.json @@ -0,0 +1,6 @@ +{ + "quota_set": { + "force": true, + "instances": 9 + } +} diff --git a/api-ref/source/blockstorage/v1/samples/os-user-quotas/user-quotas-update-request.xml b/api-ref/source/blockstorage/v1/samples/os-user-quotas/user-quotas-update-request.xml new file mode 100644 index 000000000..dd58ed24d --- /dev/null +++ b/api-ref/source/blockstorage/v1/samples/os-user-quotas/user-quotas-update-request.xml @@ -0,0 +1,5 @@ + + + true + 9 + diff --git a/api-ref/source/blockstorage/v1/samples/os-user-quotas/user-quotas-update-response.json b/api-ref/source/blockstorage/v1/samples/os-user-quotas/user-quotas-update-response.json new file mode 100644 index 000000000..553933292 --- /dev/null +++ b/api-ref/source/blockstorage/v1/samples/os-user-quotas/user-quotas-update-response.json @@ -0,0 +1,16 @@ +{ + "quota_set": { + "cores": 20, + "floating_ips": 10, + "fixed_ips": -1, + "injected_file_content_bytes": 10240, + "injected_file_path_bytes": 255, + "injected_files": 5, + "instances": 9, + "key_pairs": 100, + "metadata_items": 128, + "ram": 51200, + "security_group_rules": 20, + "security_groups": 10 + } +} diff --git a/api-ref/source/blockstorage/v1/samples/os-user-quotas/user-quotas-update-response.xml b/api-ref/source/blockstorage/v1/samples/os-user-quotas/user-quotas-update-response.xml new file mode 100644 index 000000000..43c36c7da --- /dev/null +++ b/api-ref/source/blockstorage/v1/samples/os-user-quotas/user-quotas-update-response.xml @@ -0,0 +1,15 @@ + + + 20 + 10 + -1 + 10240 + 255 + 5 + 9 + 100 + 128 + 51200 + 20 + 10 + diff --git a/api-ref/source/blockstorage/v1/samples/volumes/snapshot-create-request.json b/api-ref/source/blockstorage/v1/samples/volumes/snapshot-create-request.json new file mode 100644 index 000000000..cc8ce2865 --- /dev/null +++ b/api-ref/source/blockstorage/v1/samples/volumes/snapshot-create-request.json @@ -0,0 +1,8 @@ +{ + "snapshot": { + "display_name": "snap-001", + "display_description": "Daily backup", + "volume_id": "521752a6-acf6-4b2d-bc7a-119f9148cd8c", + "force": true + } +} diff --git a/api-ref/source/blockstorage/v1/samples/volumes/snapshot-create-request.xml b/api-ref/source/blockstorage/v1/samples/volumes/snapshot-create-request.xml new file mode 100644 index 000000000..911667a7b --- /dev/null +++ b/api-ref/source/blockstorage/v1/samples/volumes/snapshot-create-request.xml @@ -0,0 +1,6 @@ + + diff --git a/api-ref/source/blockstorage/v1/samples/volumes/snapshot-metadata-show-response.json b/api-ref/source/blockstorage/v1/samples/volumes/snapshot-metadata-show-response.json new file mode 100644 index 000000000..68c54641d --- /dev/null +++ b/api-ref/source/blockstorage/v1/samples/volumes/snapshot-metadata-show-response.json @@ -0,0 +1,16 @@ +{ + "snapshot": { + "status": "available", + "os-extended-snapshot-attributes:progress": "0%", + "description": null, + "created_at": "2014-05-06T17:59:52.000000", + "metadata": { + "key": "v1" + }, + "volume_id": "ebd80b99-bc3d-4154-9d28-5583baa80580", + "os-extended-snapshot-attributes:project_id": "7e0105e19cd2466193729ef78b604f79", + "size": 10, + "id": "dfcd17fe-3b64-44ba-b95f-1c9c7109ef95", + "name": "my-snapshot" + } +} diff --git a/api-ref/source/blockstorage/v1/samples/volumes/snapshot-metadata-show-response.xml b/api-ref/source/blockstorage/v1/samples/volumes/snapshot-metadata-show-response.xml new file mode 100644 index 000000000..c8e002424 --- /dev/null +++ b/api-ref/source/blockstorage/v1/samples/volumes/snapshot-metadata-show-response.xml @@ -0,0 +1,13 @@ + + + + v1 + + diff --git a/api-ref/source/blockstorage/v1/samples/volumes/snapshot-metadata-update-request.json b/api-ref/source/blockstorage/v1/samples/volumes/snapshot-metadata-update-request.json new file mode 100644 index 000000000..75accc1a6 --- /dev/null +++ b/api-ref/source/blockstorage/v1/samples/volumes/snapshot-metadata-update-request.json @@ -0,0 +1,5 @@ +{ + "metadata": { + "key": "v1" + } +} diff --git a/api-ref/source/blockstorage/v1/samples/volumes/snapshot-metadata-update-request.xml b/api-ref/source/blockstorage/v1/samples/volumes/snapshot-metadata-update-request.xml new file mode 100644 index 000000000..cbcf6b273 --- /dev/null +++ b/api-ref/source/blockstorage/v1/samples/volumes/snapshot-metadata-update-request.xml @@ -0,0 +1,4 @@ + + + v1 + diff --git a/api-ref/source/blockstorage/v1/samples/volumes/snapshot-metadata-update-response.json b/api-ref/source/blockstorage/v1/samples/volumes/snapshot-metadata-update-response.json new file mode 100644 index 000000000..75accc1a6 --- /dev/null +++ b/api-ref/source/blockstorage/v1/samples/volumes/snapshot-metadata-update-response.json @@ -0,0 +1,5 @@ +{ + "metadata": { + "key": "v1" + } +} diff --git a/api-ref/source/blockstorage/v1/samples/volumes/snapshot-metadata-update-response.xml b/api-ref/source/blockstorage/v1/samples/volumes/snapshot-metadata-update-response.xml new file mode 100644 index 000000000..31535fda4 --- /dev/null +++ b/api-ref/source/blockstorage/v1/samples/volumes/snapshot-metadata-update-response.xml @@ -0,0 +1,4 @@ + + + v1 + diff --git a/api-ref/source/blockstorage/v1/samples/volumes/snapshot-show-response.json b/api-ref/source/blockstorage/v1/samples/volumes/snapshot-show-response.json new file mode 100644 index 000000000..f1514e860 --- /dev/null +++ b/api-ref/source/blockstorage/v1/samples/volumes/snapshot-show-response.json @@ -0,0 +1,11 @@ +{ + "snapshot": { + "id": "3fbbcccf-d058-4502-8844-6feeffdf4cb5", + "display_name": "snap-001", + "display_description": "Daily backup", + "volume_id": "521752a6-acf6-4b2d-bc7a-119f9148cd8c", + "status": "available", + "size": 30, + "created_at": "2012-02-29T03:50:07Z" + } +} diff --git a/api-ref/source/blockstorage/v1/samples/volumes/snapshot-show-response.xml b/api-ref/source/blockstorage/v1/samples/volumes/snapshot-show-response.xml new file mode 100644 index 000000000..c37ab2ed3 --- /dev/null +++ b/api-ref/source/blockstorage/v1/samples/volumes/snapshot-show-response.xml @@ -0,0 +1,9 @@ + + diff --git a/api-ref/source/blockstorage/v1/samples/volumes/snapshots-list-response.json b/api-ref/source/blockstorage/v1/samples/volumes/snapshots-list-response.json new file mode 100644 index 000000000..d148577e1 --- /dev/null +++ b/api-ref/source/blockstorage/v1/samples/volumes/snapshots-list-response.json @@ -0,0 +1,26 @@ +{ + "snapshots": [ + { + "id": "3fbbcccf-d058-4502-8844-6feeffdf4cb5", + "display_name": "snap-001", + "display_description": "Daily backup", + "volume_id": "521752a6-acf6-4b2d-bc7a-119f9148cd8c", + "status": "available", + "size": 30, + "created_at": "2012-02-29T03:50:07Z", + "metadata": { + "contents": "junk" + } + }, + { + "id": "e479997c-650b-40a4-9dfe-77655818b0d2", + "display_name": "snap-002", + "display_description": "Weekly backup", + "volume_id": "76b8950a-8594-4e5b-8dce-0dfa9c696358", + "status": "available", + "size": 25, + "created_at": "2012-03-19T01:52:47Z", + "metadata": {} + } + ] +} diff --git a/api-ref/source/blockstorage/v1/samples/volumes/snapshots-list-response.xml b/api-ref/source/blockstorage/v1/samples/volumes/snapshots-list-response.xml new file mode 100644 index 000000000..2e103ff6b --- /dev/null +++ b/api-ref/source/blockstorage/v1/samples/volumes/snapshots-list-response.xml @@ -0,0 +1,21 @@ + + + + + junk + + + + diff --git a/api-ref/source/blockstorage/v1/samples/volumes/version-show-response.json b/api-ref/source/blockstorage/v1/samples/volumes/version-show-response.json new file mode 100644 index 000000000..63c8957a2 --- /dev/null +++ b/api-ref/source/blockstorage/v1/samples/volumes/version-show-response.json @@ -0,0 +1,28 @@ +{ + "version": { + "id": "v1.0", + "links": [ + { + "href": "http://23.253.211.234:8776/v1/", + "rel": "self" + }, + { + "href": "http://docs.openstack.org/", + "rel": "describedby", + "type": "text/html" + } + ], + "media-types": [ + { + "base": "application/xml", + "type": "application/vnd.openstack.volume+xml;version=1" + }, + { + "base": "application/json", + "type": "application/vnd.openstack.volume+json;version=1" + } + ], + "status": "DEPRECATED", + "updated": "2014-06-28T12:20:21Z" + } +} diff --git a/api-ref/source/blockstorage/v1/samples/volumes/versions-list-response.json b/api-ref/source/blockstorage/v1/samples/volumes/versions-list-response.json new file mode 100644 index 000000000..29b36bd17 --- /dev/null +++ b/api-ref/source/blockstorage/v1/samples/volumes/versions-list-response.json @@ -0,0 +1,26 @@ +{ + "versions": [ + { + "id": "v1.0", + "links": [ + { + "href": "http://23.253.211.234:8776/v1/", + "rel": "self" + } + ], + "status": "DEPRECATED", + "updated": "2014-06-28T12:20:21Z" + }, + { + "id": "v2.0", + "links": [ + { + "href": "http://23.253.211.234:8776/v2/", + "rel": "self" + } + ], + "status": "CURRENT", + "updated": "2012-11-21T11:33:21Z" + } + ] +} diff --git a/api-ref/source/blockstorage/v1/samples/volumes/volume-create-request.json b/api-ref/source/blockstorage/v1/samples/volumes/volume-create-request.json new file mode 100644 index 000000000..fbbfe360c --- /dev/null +++ b/api-ref/source/blockstorage/v1/samples/volumes/volume-create-request.json @@ -0,0 +1,12 @@ +{ + "volume": { + "display_name": "vol-001", + "display_description": "Another volume.", + "size": 30, + "volume_type": "289da7f8-6440-407c-9fb4-7db01ec49164", + "metadata": { + "contents": "junk" + }, + "availability_zone": "us-east1" + } +} diff --git a/api-ref/source/blockstorage/v1/samples/volumes/volume-create-request.xml b/api-ref/source/blockstorage/v1/samples/volumes/volume-create-request.xml new file mode 100644 index 000000000..46d6c9be3 --- /dev/null +++ b/api-ref/source/blockstorage/v1/samples/volumes/volume-create-request.xml @@ -0,0 +1,11 @@ + + + + junk + + diff --git a/api-ref/source/blockstorage/v1/samples/volumes/volume-show-response.json b/api-ref/source/blockstorage/v1/samples/volumes/volume-show-response.json new file mode 100644 index 000000000..0118c2fe2 --- /dev/null +++ b/api-ref/source/blockstorage/v1/samples/volumes/volume-show-response.json @@ -0,0 +1,27 @@ +{ + "volume": { + "id": "521752a6-acf6-4b2d-bc7a-119f9148cd8c", + "display_name": "vol-001", + "display_description": "Another volume.", + "status": "active", + "size": 30, + "volume_type": "289da7f8-6440-407c-9fb4-7db01ec49164", + "metadata": { + "contents": "junk" + }, + "availability_zone": "us-east1", + "bootable": "false", + "snapshot_id": null, + "attachments": [ + { + "attachment_id": "03987cd1-0ad5-40d1-9b2a-7cc48295d4fa", + "id": "47e9ecc5-4045-4ee3-9a4b-d859d546a0cf", + "volume_id": "6c80f8ac-e3e2-480c-8e6e-f1db92fe4bfe", + "server_id": "d1c4788b-9435-42e2-9b81-29f3be1cd01f", + "host_name": "mitaka", + "device": "/" + } + ], + "created_at": "2012-02-14T20:53:07Z" + } +} diff --git a/api-ref/source/blockstorage/v1/samples/volumes/volume-show-response.xml b/api-ref/source/blockstorage/v1/samples/volumes/volume-show-response.xml new file mode 100644 index 000000000..7dc246265 --- /dev/null +++ b/api-ref/source/blockstorage/v1/samples/volumes/volume-show-response.xml @@ -0,0 +1,15 @@ + + + + junk + + diff --git a/api-ref/source/blockstorage/v1/samples/volumes/volume-type-create-request.json b/api-ref/source/blockstorage/v1/samples/volumes/volume-type-create-request.json new file mode 100644 index 000000000..af7e47f6b --- /dev/null +++ b/api-ref/source/blockstorage/v1/samples/volumes/volume-type-create-request.json @@ -0,0 +1,8 @@ +{ + "volume_type": { + "name": "vol-type-001", + "extra_specs": { + "capabilities": "gpu" + } + } +} diff --git a/api-ref/source/blockstorage/v1/samples/volumes/volume-type-create-request.xml b/api-ref/source/blockstorage/v1/samples/volumes/volume-type-create-request.xml new file mode 100644 index 000000000..dfe9b37a3 --- /dev/null +++ b/api-ref/source/blockstorage/v1/samples/volumes/volume-type-create-request.xml @@ -0,0 +1,7 @@ + + + + gpu + + diff --git a/api-ref/source/blockstorage/v1/samples/volumes/volume-type-show-response.json b/api-ref/source/blockstorage/v1/samples/volumes/volume-type-show-response.json new file mode 100644 index 000000000..a91f2e94d --- /dev/null +++ b/api-ref/source/blockstorage/v1/samples/volumes/volume-type-show-response.json @@ -0,0 +1,9 @@ +{ + "volume_type": { + "id": "289da7f8-6440-407c-9fb4-7db01ec49164", + "name": "vol-type-001", + "extra_specs": { + "capabilities": "gpu" + } + } +} diff --git a/api-ref/source/blockstorage/v1/samples/volumes/volume-type-show-response.xml b/api-ref/source/blockstorage/v1/samples/volumes/volume-type-show-response.xml new file mode 100644 index 000000000..1c4291d08 --- /dev/null +++ b/api-ref/source/blockstorage/v1/samples/volumes/volume-type-show-response.xml @@ -0,0 +1,8 @@ + + + + gpu + + diff --git a/api-ref/source/blockstorage/v1/samples/volumes/volume-types-list-response.json b/api-ref/source/blockstorage/v1/samples/volumes/volume-types-list-response.json new file mode 100644 index 000000000..dc4ae5046 --- /dev/null +++ b/api-ref/source/blockstorage/v1/samples/volumes/volume-types-list-response.json @@ -0,0 +1,16 @@ +{ + "volume_types": [ + { + "id": "289da7f8-6440-407c-9fb4-7db01ec49164", + "name": "vol-type-001", + "extra_specs": { + "capabilities": "gpu" + } + }, + { + "id": "96c3bda7-c82a-4f50-be73-ca7621794835", + "name": "vol-type-002", + "extra_specs": {} + } + ] +} diff --git a/api-ref/source/blockstorage/v1/samples/volumes/volume-types-list-response.xml b/api-ref/source/blockstorage/v1/samples/volumes/volume-types-list-response.xml new file mode 100644 index 000000000..edde1f675 --- /dev/null +++ b/api-ref/source/blockstorage/v1/samples/volumes/volume-types-list-response.xml @@ -0,0 +1,11 @@ + + + + + gpu + + + + diff --git a/api-ref/source/blockstorage/v1/samples/volumes/volumes-list-response.json b/api-ref/source/blockstorage/v1/samples/volumes/volumes-list-response.json new file mode 100644 index 000000000..0523be7aa --- /dev/null +++ b/api-ref/source/blockstorage/v1/samples/volumes/volumes-list-response.json @@ -0,0 +1,41 @@ +{ + "volumes": [ + { + "id": "521752a6-acf6-4b2d-bc7a-119f9148cd8c", + "display_name": "vol-001", + "display_description": "Another volume.", + "status": "active", + "size": 30, + "volume_type": "289da7f8-6440-407c-9fb4-7db01ec49164", + "metadata": { + "contents": "junk" + }, + "availability_zone": "us-east1", + "snapshot_id": null, + "attachments": [ + { + "attachment_id": "03987cd1-0ad5-40d1-9b2a-7cc48295d4fa", + "id": "47e9ecc5-4045-4ee3-9a4b-d859d546a0cf", + "volume_id": "6c80f8ac-e3e2-480c-8e6e-f1db92fe4bfe", + "server_id": "d1c4788b-9435-42e2-9b81-29f3be1cd01f", + "host_name": "mitaka", + "device": "/" + } + ], + "created_at": "2012-02-14T20:53:07Z" + }, + { + "id": "76b8950a-8594-4e5b-8dce-0dfa9c696358", + "display_name": "vol-002", + "display_description": "Yet another volume.", + "status": "active", + "size": 25, + "volume_type": "96c3bda7-c82a-4f50-be73-ca7621794835", + "metadata": {}, + "availability_zone": "us-east2", + "snapshot_id": null, + "attachments": [], + "created_at": "2012-03-15T19:10:03Z" + } + ] +} diff --git a/api-ref/source/blockstorage/v1/samples/volumes/volumes-list-response.xml b/api-ref/source/blockstorage/v1/samples/volumes/volumes-list-response.xml new file mode 100644 index 000000000..0e20c3ed6 --- /dev/null +++ b/api-ref/source/blockstorage/v1/samples/volumes/volumes-list-response.xml @@ -0,0 +1,25 @@ + + + + + junk + + + + diff --git a/api-ref/source/blockstorage/v1/volumes-v1-snapshots.inc b/api-ref/source/blockstorage/v1/volumes-v1-snapshots.inc new file mode 100644 index 000000000..cde1e0090 --- /dev/null +++ b/api-ref/source/blockstorage/v1/volumes-v1-snapshots.inc @@ -0,0 +1,228 @@ +.. -*- rst -*- + +========= +Snapshots +========= + +Creates, lists, shows information for, and deletes snapshots. Shows +and updates snapshot metadata. + + +Show snapshot details +===================== + +.. rest_method:: GET /v1/{tenant_id}/snapshots/{snapshot_id} + +Shows details for a snapshot. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - snapshot_id: snapshot_id + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/volumes/snapshot-show-response.json + :language: javascript + + + + +Delete snapshot +=============== + +.. rest_method:: DELETE /v1/{tenant_id}/snapshots/{snapshot_id} + +Deletes a snapshot. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - snapshot_id: snapshot_id + + + + + + +List snapshots with details +=========================== + +.. rest_method:: GET /v1/{tenant_id}/snapshots/detail + +Lists all snapshots, with details. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/volumes/snapshots-list-response.json + :language: javascript + + + + +Create snapshot +=============== + +.. rest_method:: POST /v1/{tenant_id}/snapshots + +Creates a snapshot. + +Error response codes:201, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - snapshot: snapshot + - tenant_id: tenant_id + +Request Example +--------------- + +.. literalinclude:: ../samples/volumes/snapshot-create-request.json + :language: javascript + + + + + + + +List snapshots +============== + +.. rest_method:: GET /v1/{tenant_id}/snapshots + +Lists all snapshots. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/volumes/snapshots-list-response.json + :language: javascript + + + + +Show snapshot metadata +====================== + +.. rest_method:: GET /v1/{tenant_id}/snapshots/{snapshot_id}/metadata + +Shows metadata for a snapshot. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - snapshot_id: snapshot_id + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/volumes/snapshot-metadata-show-response.json + :language: javascript + + + + +Update snapshot metadata +======================== + +.. rest_method:: PUT /v1/{tenant_id}/snapshots/{snapshot_id}/metadata + +Updates metadata for a snapshot. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - metadata: metadata + - tenant_id: tenant_id + - snapshot_id: snapshot_id + +Request Example +--------------- + +.. literalinclude:: ../samples/volumes/snapshot-metadata-update-request.json + :language: javascript + + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/volumes/snapshot-metadata-update-response.json + :language: javascript + + + diff --git a/api-ref/source/blockstorage/v1/volumes-v1-types.inc b/api-ref/source/blockstorage/v1/volumes-v1-types.inc new file mode 100644 index 000000000..c3a6fb9c3 --- /dev/null +++ b/api-ref/source/blockstorage/v1/volumes-v1-types.inc @@ -0,0 +1,247 @@ +.. -*- rst -*- + +============ +Volume types +============ + +Lists, creates, updates, shows information for, and deletes volume +types. + + +List volume types +================= + +.. rest_method:: GET /v1/{tenant_id}/types + +Lists volume types. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/volumes/volume-types-list-response.json + :language: javascript + + + + +Create volume type +================== + +.. rest_method:: POST /v1/{tenant_id}/types + +Creates a volume type. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - extra_specs: extra_specs + - name: name + - volume_type: volume_type + - tenant_id: tenant_id + +Request Example +--------------- + +.. literalinclude:: ../samples/volumes/volume-type-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - extra_specs: extra_specs + - name: name + - volume_type: volume_type + + + +Response Example +---------------- + +.. literalinclude:: ../samples/volumes/volume-type-show-response.json + :language: javascript + + + + +Update volume type +================== + +.. rest_method:: PUT /v1/{tenant_id}/types/{volume_type_id} + +Updates a volume type. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - extra_specs: extra_specs + - name: name + - volume_type: volume_type + - tenant_id: tenant_id + - volume_type_id: volume_type_id + +Request Example +--------------- + +.. literalinclude:: ../samples/volumes/volume-type-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - extra_specs: extra_specs + - name: name + - volume_type: volume_type + + + +Response Example +---------------- + +.. literalinclude:: ../samples/volumes/volume-type-show-response.json + :language: javascript + + + + +Update extra specs for a volume type +==================================== + +.. rest_method:: PUT /v1/{tenant_id}/types/{volume_type_id} + +Updates the extra specifications for a volume type. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - extra_specs: extra_specs + - name: name + - volume_type: volume_type + - tenant_id: tenant_id + - volume_type_id: volume_type_id + +Request Example +--------------- + +.. literalinclude:: ../samples/volumes/volume-type-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - extra_specs: extra_specs + - name: name + - volume_type: volume_type + + + +Response Example +---------------- + +.. literalinclude:: ../samples/volumes/volume-type-show-response.json + :language: javascript + + + + +Show volume type details +======================== + +.. rest_method:: GET /v1/{tenant_id}/types/{volume_type_id} + +Shows details for a volume type. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - volume_type_id: volume_type_id + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/volumes/volume-type-show-response.json + :language: javascript + + + + +Delete volume type +================== + +.. rest_method:: DELETE /v1/{tenant_id}/types/{volume_type_id} + +Deletes a volume type. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - volume_type_id: volume_type_id + + + + + diff --git a/api-ref/source/blockstorage/v1/volumes-v1-versions.inc b/api-ref/source/blockstorage/v1/volumes-v1-versions.inc new file mode 100644 index 000000000..963cbb8cc --- /dev/null +++ b/api-ref/source/blockstorage/v1/volumes-v1-versions.inc @@ -0,0 +1,70 @@ +.. -*- rst -*- + +============ +API versions +============ + +Lists information about API versions. + + +Show API v1 details +=================== + +.. rest_method:: GET /v1 + +Shows Block Storage API v1 details. + + +Normal response codes: 200 +Error response codes:203, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/volumes/version-show-response.json + :language: javascript + + + + + +List API versions +================= + +.. rest_method:: GET / + +Lists information about all Block Storage API versions. + + +Normal response codes: 200 +Error response codes:300, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/volumes/versions-list-response.json + :language: javascript + + + diff --git a/api-ref/source/blockstorage/v1/volumes-v1-volumes.inc b/api-ref/source/blockstorage/v1/volumes-v1-volumes.inc new file mode 100644 index 000000000..5f6ad5e01 --- /dev/null +++ b/api-ref/source/blockstorage/v1/volumes-v1-volumes.inc @@ -0,0 +1,255 @@ +.. -*- rst -*- + +======= +Volumes +======= + +The ``snapshot_id`` and ``source_volid`` parameters specify the ID +of the snapshot or volume from which the volume originates. If the +volume was not created from a snapshot or source volume, these +values are null. + + +List volumes, with details +========================== + +.. rest_method:: GET /v1/{tenant_id}/volumes/detail + +Lists all volumes, with details. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - migration_status: migration_status + - attachments: attachments + - links: links + - availability_zone: availability_zone + - encrypted: encrypted + - updated_at: updated_at + - replication_status: replication_status + - snapshot_id: snapshot_id + - id: id + - size: size + - user_id: user_id + - metadata: metadata + - status: status + - description: description + - multiattach: multiattach + - source_volid: source_volid + - consistencygroup_id: consistencygroup_id + - name: name + - bootable: bootable + - created_at: created_at + - volume_type: volume_type + - volumes: volumes + + + +Response Example +---------------- + +.. literalinclude:: ../samples/volumes/volumes-list-response.json + :language: javascript + + + + +Create volume +============= + +.. rest_method:: POST /v1/{tenant_id}/volumes + +Creates a volume. + +Error response codes:201, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - size: size + - description: description + - imageRef: imageRef + - multiattach: multiattach + - availability_zone: availability_zone + - source_volid: source_volid + - name: name + - volume: volume + - consistencygroup_id: consistencygroup_id + - volume_type: volume_type + - snapshot_id: snapshot_id + - scheduler_hints: scheduler_hints + - source_replica: source_replica + - metadata: metadata + - tenant_id: tenant_id + +Request Example +--------------- + +.. literalinclude:: ../samples/volumes/volume-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - imageRef: imageRef + - multiattach: multiattach + - created_at: created_at + - availability_zone: availability_zone + - source_volid: source_volid + - name: name + - volume: volume + - volume_type: volume_type + - snapshot_id: snapshot_id + - size: size + - metadata: metadata + + + + + +List volumes +============ + +.. rest_method:: GET /v1/{tenant_id}/volumes + +Lists all volumes. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - volumes: volumes + - id: id + - links: links + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/volumes/volumes-list-response.json + :language: javascript + + + + +Show volume details +=================== + +.. rest_method:: GET /v1/{tenant_id}/volumes/{volume_id} + +Shows details for a volume. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - volume_id: volume_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - migration_status: migration_status + - attachments: attachments + - links: links + - availability_zone: availability_zone + - encrypted: encrypted + - updated_at: updated_at + - replication_status: replication_status + - snapshot_id: snapshot_id + - id: id + - size: size + - user_id: user_id + - metadata: metadata + - status: status + - description: description + - multiattach: multiattach + - source_volid: source_volid + - volume: volume + - consistencygroup_id: consistencygroup_id + - name: name + - bootable: bootable + - created_at: created_at + - volume_type: volume_type + + + +Response Example +---------------- + +.. literalinclude:: ../samples/volumes/volume-show-response.json + :language: javascript + + + + +Delete volume +============= + +.. rest_method:: DELETE /v1/{tenant_id}/volumes/{volume_id} + +Deletes a volume. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - volume_id: volume_id + + + + + diff --git a/api-ref/source/blockstorage/v2/capabilities-v2.inc b/api-ref/source/blockstorage/v2/capabilities-v2.inc new file mode 100644 index 000000000..18dc699f4 --- /dev/null +++ b/api-ref/source/blockstorage/v2/capabilities-v2.inc @@ -0,0 +1,55 @@ +.. -*- rst -*- + +================================================= +Capabilities for storage back ends (capabilities) +================================================= + +Shows capabilities for a storage back end. + + +Show back-end capabilities +========================== + +.. rest_method:: GET /v2/{tenant_id}/capabilities/{hostname} + +Shows capabilities for a storage back end. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - hostname: hostname + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - pool_name: pool_name + - description: description + - volume_backend_name: volume_backend_name + - namespace: namespace + - visibility: visibility + - driver_version: driver_version + - vendor_name: vendor_name + - properties: properties + - storage_protocol: storage_protocol + + + +Response Example +---------------- + +.. literalinclude:: ../samples/capabilities/backend-capabilities-response.json + :language: javascript + + + diff --git a/api-ref/source/blockstorage/v2/consistencygroups-v2.inc b/api-ref/source/blockstorage/v2/consistencygroups-v2.inc new file mode 100644 index 000000000..2ff272c08 --- /dev/null +++ b/api-ref/source/blockstorage/v2/consistencygroups-v2.inc @@ -0,0 +1,289 @@ +.. -*- rst -*- + +================== +Consistency groups +================== + +Consistency groups enable you to create snapshots at the exact same +point in time from multiple volumes. For example, a database might +place its tables, logs, and configuration on separate volumes. 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. + +Use the ``policy.json`` file to grant permissions for these actions +to limit roles. + + +List consistency groups +======================= + +.. rest_method:: GET /v2/{tenant_id}/consistencygroups + +Lists consistency groups. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - sort_key: sort_key + - sort_dir: sort_dir + - limit: limit + - marker: marker + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/consistencygroups/consistency-groups-list-response.json + :language: javascript + + + + +Create consistency group +======================== + +.. rest_method:: POST /v2/{tenant_id}/consistencygroups + +Creates a consistency group. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - status: status + - user_id: user_id + - description: description + - availability_zone: availability_zone + - volume_types: volume_types + - project_id: project_id + - name: name + - tenant_id: tenant_id + +Request Example +--------------- + +.. literalinclude:: ../samples/consistencygroups/consistency-group-create-request.json + :language: javascript + + + + + + + +Show consistency group details +============================== + +.. rest_method:: GET /v2/{tenant_id}/consistencygroups/{consistencygroup_id} + +Shows details for a consistency group. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - consistencygroup_id: consistencygroup_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - description: description + - availability_zone: availability_zone + - created_at: created_at + - volume_types: volume_types + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/consistencygroups/consistency-group-show-response.json + :language: javascript + + + + +Create consistency group from source +==================================== + +.. rest_method:: POST /v2/{tenant_id}/consistencygroups/create_from_src + +Creates a consistency group from source. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - status: status + - user_id: user_id + - description: description + - cgsnapshot_id: cgsnapshot_id + - source_cgid: source_cgid + - project_id: project_id + - name: name + - tenant_id: tenant_id + +Request Example +--------------- + +.. literalinclude:: ../samples/consistencygroups/consistency-group-create-from-src-request.json + :language: javascript + + + + + + + +Delete consistency group +======================== + +.. rest_method:: POST /v2/{tenant_id}/consistencygroups/{consistencygroup_id}/delete + +Deletes a consistency group. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - force: force + - tenant_id: tenant_id + - consistencygroup_id: consistencygroup_id + +Request Example +--------------- + +.. literalinclude:: ../samples/consistencygroups/consistency-group-delete-request.json + :language: javascript + + + + + + + +List consistency groups with details +==================================== + +.. rest_method:: GET /v2/{tenant_id}/consistencygroups/detail + +Lists consistency groups with details. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - sort_key: sort_key + - sort_dir: sort_dir + - limit: limit + - marker: marker + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - description: description + - availability_zone: availability_zone + - created_at: created_at + - volume_types: volume_types + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/consistencygroups/consistency-groups-list-detailed-response.json + :language: javascript + + + + +Update consistency group +======================== + +.. rest_method:: PUT /v2/{tenant_id}/consistencygroups/{consistencygroup_id}/update + +Updates a consistency group. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - remove_volumes: remove_volumes + - description: description + - add_volumes: add_volumes + - name: name + - tenant_id: tenant_id + - consistencygroup_id: consistencygroup_id + +Request Example +--------------- + +.. literalinclude:: ../samples/consistencygroups/consistency-group-update-request.json + :language: javascript + + + + + + diff --git a/api-ref/source/blockstorage/v2/ext-backups-actions-v2.inc b/api-ref/source/blockstorage/v2/ext-backups-actions-v2.inc new file mode 100644 index 000000000..8b3ddbee5 --- /dev/null +++ b/api-ref/source/blockstorage/v2/ext-backups-actions-v2.inc @@ -0,0 +1,46 @@ +.. -*- rst -*- + +================================ +Backup actions (backups, action) +================================ + +Force-deletes a backup. + + +Force-delete backup +=================== + +.. rest_method:: POST /v2/{tenant_id}/backups/{backup_id}/action + +Force-deletes a backup. Specify the ``os-force_delete`` action in the request body. + +This operations deletes the backup and any backup data. + +The backup driver returns the ``405`` status code if it does not +support this operation. + +Error response codes:404,405,202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - os-force_delete: os-force_delete + - tenant_id: tenant_id + - backup_id: backup_id + +Request Example +--------------- + +.. literalinclude:: ../samples/backups/backup-force-delete-request.json + :language: javascript + + + + + + + + diff --git a/api-ref/source/blockstorage/v2/ext-backups.inc b/api-ref/source/blockstorage/v2/ext-backups.inc new file mode 100644 index 000000000..9e7b14ef5 --- /dev/null +++ b/api-ref/source/blockstorage/v2/ext-backups.inc @@ -0,0 +1,310 @@ +.. -*- rst -*- + +================= +Backups (backups) +================= + +A backup is a full copy of a volume stored in an external service. +The service can be configured. The only supported service is Object +Storage. A backup can subsequently be restored from the external +service to either the same volume that the backup was originally +taken from or to a new volume. Backup and restore operations can +only be carried out on volumes that are in an unattached and +available state. + +When you create, list, or delete backups, these status values are +possible: + +**Backup statuses** + ++-----------------+---------------------------------------------+ +| Status | Description | ++-----------------+---------------------------------------------+ +| creating | The backup is being created. | ++-----------------+---------------------------------------------+ +| available | The backup is ready to restore to a volume. | ++-----------------+---------------------------------------------+ +| deleting | The backup is being deleted. | ++-----------------+---------------------------------------------+ +| error | A backup error occurred. | ++-----------------+---------------------------------------------+ +| restoring | The backup is being restored to a volume. | ++-----------------+---------------------------------------------+ +| error_restoring | A backup restoration error occurred. | ++-----------------+---------------------------------------------+ + + + +If an error occurs, you can find more information about the error +in the ``fail_reason`` field for the backup. + + +List backups with details +========================= + +.. rest_method:: GET /v2/{tenant_id}/backups/detail + +Lists Block Storage backups, with details, to which the tenant has access. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - sort_key: sort_key + - sort_dir: sort_dir + - limit: limit + - marker: marker + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - object_count: object_count + - fail_reason: fail_reason + - description: description + - links: links + - availability_zone: availability_zone + - created_at: created_at + - updated_at: updated_at + - name: name + - has_dependent_backups: has_dependent_backups + - volume_id: volume_id + - container: container + - backups: backups + - size: size + - id: id + - is_incremental: is_incremental + + + +Response Example +---------------- + +.. literalinclude:: ../samples/backups/backups-list-detailed-response.json + :language: javascript + + + + +Show backup details +=================== + +.. rest_method:: GET /v2/{tenant_id}/backups/{backup_id} + +Shows details for a backup. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - backup_id: backup_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - object_count: object_count + - container: container + - description: description + - links: links + - availability_zone: availability_zone + - created_at: created_at + - updated_at: updated_at + - name: name + - has_dependent_backups: has_dependent_backups + - volume_id: volume_id + - fail_reason: fail_reason + - size: size + - backup: backup + - id: id + - is_incremental: is_incremental + + + +Response Example +---------------- + +.. literalinclude:: ../samples/backups/backup-show-response.json + :language: javascript + + + + +Delete backup +============= + +.. rest_method:: DELETE /v2/{tenant_id}/backups/{backup_id} + +Deletes a backup. + +Error response codes:204, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - backup_id: backup_id + + + + + + +Restore backup +============== + +.. rest_method:: POST /v2/{tenant_id}/backups/{backup_id}/restore + +Restores a Block Storage backup to an existing or new Block Storage volume. + +You must specify either the UUID or name of the volume. If you +specify both the UUID and name, the UUID takes priority. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - restore: restore + - name: name + - volume_id: volume_id + - tenant_id: tenant_id + - backup_id: backup_id + +Request Example +--------------- + +.. literalinclude:: ../samples/backups/backup-restore-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - restore: restore + - backup_id: backup_id + - volume_id: volume_id + + + + + +Create backup +============= + +.. rest_method:: POST /v2/{tenant_id}/backups + +Creates a Block Storage backup from a volume. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - container: container + - description: description + - incremental: incremental + - volume_id: volume_id + - force: force + - backup: backup + - name: name + - tenant_id: tenant_id + +Request Example +--------------- + +.. literalinclude:: ../samples/backups/backup-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - backup: backup + - id: id + - links: links + - name: name + + + + + +List backups +============ + +.. rest_method:: GET /v2/{tenant_id}/backups + +Lists Block Storage backups to which the tenant has access. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - sort_key: sort_key + - sort_dir: sort_dir + - limit: limit + - marker: marker + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - backups: backups + - id: id + - links: links + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/backups/backups-list-response.json + :language: javascript + + + diff --git a/api-ref/source/blockstorage/v2/limits.inc b/api-ref/source/blockstorage/v2/limits.inc new file mode 100644 index 000000000..8e465cd96 --- /dev/null +++ b/api-ref/source/blockstorage/v2/limits.inc @@ -0,0 +1,65 @@ +.. -*- rst -*- + +=============== +Limits (limits) +=============== + +Shows absolute limits for a tenant. + +An absolute limit value of ``-1`` indicates that the absolute limit +for the item is infinite. + + +Show absolute limits +==================== + +.. rest_method:: GET /v2/{tenant_id}/limits + +Shows absolute limits for a tenant. + +An absolute limit value of ``-1`` indicates that the absolute limit +for the item is infinite. + + +Normal response codes: 200 +Error response codes:203, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - totalSnapshotsUsed: totalSnapshotsUsed + - maxTotalBackups: maxTotalBackups + - maxTotalVolumeGigabytes: maxTotalVolumeGigabytes + - limits: limits + - maxTotalSnapshots: maxTotalSnapshots + - maxTotalBackupGigabytes: maxTotalBackupGigabytes + - totalBackupGigabytesUsed: totalBackupGigabytesUsed + - maxTotalVolumes: maxTotalVolumes + - totalVolumesUsed: totalVolumesUsed + - rate: rate + - totalBackupsUsed: totalBackupsUsed + - totalGigabytesUsed: totalGigabytesUsed + - absolute: absolute + + + +Response Example +---------------- + +.. literalinclude:: ../samples/limits/limits-show-response.json + :language: javascript + + + + diff --git a/api-ref/source/blockstorage/v2/os-cgsnapshots-v2.inc b/api-ref/source/blockstorage/v2/os-cgsnapshots-v2.inc new file mode 100644 index 000000000..100d82ec0 --- /dev/null +++ b/api-ref/source/blockstorage/v2/os-cgsnapshots-v2.inc @@ -0,0 +1,200 @@ +.. -*- rst -*- + +=========================== +Consistency group snapshots +=========================== + +Lists all, lists all with details, shows details for, creates, and +deletes consistency group snapshots. + + +Delete consistency group snapshot +================================= + +.. rest_method:: DELETE /v2/{tenant_id}/cgsnapshots/{cgsnapshot_id} + +Deletes a consistency group snapshot. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - cgsnapshot_id: cgsnapshot_id + + + + + + +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: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - cgsnapshot_id: cgsnapshot_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - description: description + - created_at: created_at + - consistencygroup_id: consistencygroup_id + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/cgsnapshots/cgsnapshots-show-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: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - description: description + - created_at: created_at + - consistencygroup_id: consistencygroup_id + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/cgsnapshots/cgsnapshots-list-detailed-response.json + :language: javascript + + + + +List consistency group snapshots +================================ + +.. rest_method:: GET /v2/{tenant_id}/cgsnapshots + +Lists all consistency group snapshots. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/cgsnapshots/cgsnapshots-list-response.json + :language: javascript + + + + +Create consistency group snapshot +================================= + +.. rest_method:: POST /v2/{tenant_id}/cgsnapshots + +Creates a consistency group snapshot. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - name: name + - tenant_id: tenant_id + +Request Example +--------------- + +.. literalinclude:: ../samples/cgsnapshots/cgsnapshots-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - description: description + - created_at: created_at + - consistencygroup_id: consistencygroup_id + - id: id + - name: name + + + + diff --git a/api-ref/source/blockstorage/v2/os-vol-image-meta-v2.inc b/api-ref/source/blockstorage/v2/os-vol-image-meta-v2.inc new file mode 100644 index 000000000..d94a245fa --- /dev/null +++ b/api-ref/source/blockstorage/v2/os-vol-image-meta-v2.inc @@ -0,0 +1,52 @@ +.. -*- rst -*- + +=================================================== +Volume image metadata extension (os-vol-image-meta) +=================================================== + +Shows image metadata that is associated with a volume. + + +Show image metadata for volume +============================== + +.. rest_method:: GET /v2/{tenant_id}/os-vol-image-meta + +Shows image metadata for a volume. + +When the request is made, the caller must specify a reference to an +existing storage volume in the ``ref`` element. Each storage driver +may interpret the existing storage volume reference differently but +should accept a reference structure containing either a ``source- +volume-id`` or ``source-volume-name`` element, if possible. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - description: description + - availability_zone: availability_zone + - bootable: bootable + - volume_type: volume_type + - name: name + - volume: volume + - host: host + - ref: ref + - metadata: metadata + - tenant_id: tenant_id + +Request Example +--------------- + +.. literalinclude:: ../samples/os-vol-image-meta/image-metadata-show-request.json + :language: javascript + + + + + + diff --git a/api-ref/source/blockstorage/v2/os-vol-pool-v2.inc b/api-ref/source/blockstorage/v2/os-vol-pool-v2.inc new file mode 100644 index 000000000..bb7dbe3a3 --- /dev/null +++ b/api-ref/source/blockstorage/v2/os-vol-pool-v2.inc @@ -0,0 +1,57 @@ +.. -*- rst -*- + +====================== +Back-end storage pools +====================== + +Administrator only. Lists 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/get_pools + +Lists all back-end storage pools. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - detail: detail + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - updated: updated + - QoS_support: QoS_support + - name: name + - total_capacity: total_capacity + - volume_backend_name: volume_backend_name + - capabilities: capabilities + - free_capacity: free_capacity + - driver_version: driver_version + - reserved_percentage: reserved_percentage + - storage_protocol: storage_protocol + + + +Response Example +---------------- + +.. literalinclude:: ../samples/scheduler-stats/pools-list-detailed-response.json + :language: javascript + + + diff --git a/api-ref/source/blockstorage/v2/os-vol-transfer-v2.inc b/api-ref/source/blockstorage/v2/os-vol-transfer-v2.inc new file mode 100644 index 000000000..ee8913382 --- /dev/null +++ b/api-ref/source/blockstorage/v2/os-vol-transfer-v2.inc @@ -0,0 +1,241 @@ +.. -*- rst -*- + +=============== +Volume transfer +=============== + +Transfers a volume from one user to another user. + + +Accept volume transfer +====================== + +.. rest_method:: POST /v2/{tenant_id}/os-volume-transfer/{transfer_id}/accept + +Accepts a volume transfer. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - auth_key: auth_key + - transfer_id: transfer_id + - tenant_id: tenant_id + +Request Example +--------------- + +.. literalinclude:: ../samples/os-volume-transfer/volume-transfer-accept-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - volume_id: volume_id + - id: id + - links: links + - name: name + + + + + +Create volume transfer +====================== + +.. rest_method:: POST /v2/{tenant_id}/os-volume-transfer + +Creates a volume transfer. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - name: name + - volume_id: volume_id + - tenant_id: tenant_id + +Request Example +--------------- + +.. literalinclude:: ../samples/os-volume-transfer/volume-transfer-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - auth_key: auth_key + - links: links + - created_at: created_at + - volume_id: volume_id + - id: id + - name: name + + + + + +List volume transfers +===================== + +.. rest_method:: GET /v2/{tenant_id}/os-volume-transfer + +Lists volume transfers. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - volume_id: volume_id + - id: id + - links: links + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/os-volume-transfer/volume-transfers-list-response.json + :language: javascript + + + + +Show volume transfer details +============================ + +.. rest_method:: GET /v2/{tenant_id}/os-volume-transfer/{transfer_id} + +Shows details for a volume transfer. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - transfer_id: transfer_id + - tenant_id: tenant_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - created_at: created_at + - volume_id: volume_id + - id: id + - links: links + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/os-volume-transfer/volume-transfer-show-response.json + :language: javascript + + + + +Delete volume transfer +====================== + +.. rest_method:: DELETE /v2/{tenant_id}/os-volume-transfer/{transfer_id} + +Deletes a volume transfer. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - transfer_id: transfer_id + - tenant_id: tenant_id + + + + + + +List volume transfers, with details +=================================== + +.. rest_method:: GET /v2/{tenant_id}/os-volume-transfer/detail + +Lists volume transfers, with details. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - created_at: created_at + - volume_id: volume_id + - id: id + - links: links + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/os-volume-transfer/volume-transfers-list-detailed-response.json + :language: javascript + + + diff --git a/api-ref/source/blockstorage/v2/parameters.yaml b/api-ref/source/blockstorage/v2/parameters.yaml new file mode 100644 index 000000000..ddc53a89e --- /dev/null +++ b/api-ref/source/blockstorage/v2/parameters.yaml @@ -0,0 +1,1560 @@ +# variables in header +{} + +# variables in path +admin_tenant_id: + description: | + The UUID of the administrative tenant. + in: path + required: false + type: string +backup_id: + description: | + The UUID for a backup. + in: path + required: false + type: string +cgsnapshot_id_1: + description: | + The ID of the consistency group snapshot. + in: path + required: false + type: string +consistencygroup_id_2: + description: | + The ID of the consistency group. + in: path + required: false + type: string +force_3: + description: | + To delete a QoS specification even if it is in- + use, set to ``true``. Default is ``false``. + in: path + required: false + type: boolean +hostname: + description: | + The name of the host that hosts the storage back + end. + in: path + required: false + type: string +qos_id: + description: | + The ID of the QoS specification. + in: path + required: false + type: string +snapshot_id_1: + description: | + The UUID of the snapshot. + in: path + required: false + type: string +tenant_id: + description: | + The UUID of the tenant in a multi-tenancy cloud. + in: path + required: false + type: string +transfer_id: + description: | + The unique identifier for a volume transfer. + in: path + required: false + type: string +user_id_1: + description: | + The user ID. Specify in the URI as + ``user_id={user_id}``. + in: path + required: false + type: string +volume_id_1: + description: | + The UUID of the volume. + in: path + required: false + type: string +volume_type: + description: | + The ID of Volume Type to be accessed by project. + in: path + required: false + type: string +volume_type_id: + description: | + The UUID for an existing volume type. + in: path + required: false + type: string + +# variables in query +detail: + description: | + Indicates whether to show pool details or only + pool names in the response. Set to ``true`` to show pool details. + Set to ``false`` to show only pool names. Default is ``false``. + in: query + required: false + type: boolean +limit: + description: | + Requests a page size of items. Returns a number + of items up to a limit value. Use the ``limit`` parameter to make + an initial limited request and use the ID of the last-seen item + from the response as the ``marker`` parameter value in a + subsequent limited request. + in: query + required: false + type: integer +marker: + description: | + The ID of the last-seen item. Use the ``limit`` + parameter to make an initial limited request and use the ID of the + last-seen item from the response as the ``marker`` parameter value + in a subsequent limited request. + in: query + required: false + type: string +sort: + description: | + Comma-separated list of sort keys and optional + sort directions in the form of < key > [: < direction > ]. A valid + direction is ``asc`` (ascending) or ``desc`` (descending). + in: query + required: false + type: string +sort_dir: + description: | + Sorts by one or more sets of attribute and sort + direction combinations. If you omit the sort direction in a set, + default is ``desc``. + in: query + required: false + type: string +sort_key: + description: | + Sorts by an attribute. A valid value is ``name``, + ``status``, ``container_format``, ``disk_format``, ``size``, + ``id``, ``created_at``, or ``updated_at``. Default is + ``created_at``. The API uses the natural sorting direction of the + ``sort_key`` attribute value. + in: query + required: false + type: string +sort_key_1: + description: | + Sorts by an image attribute. A valid value is + ``name``, ``status``, ``container_format``, ``disk_format``, + ``size``, ``id``, ``created_at``, or ``updated_at``. Default is + ``created_at``. The API uses the natural sorting direction of the + ``sort_key`` attribute value. + in: query + required: false + type: string +usage: + description: | + Set to ``usage=true`` to show quota usage. + Default is ``false``. + in: query + required: false + type: boolean + +# variables in body +QoS_support: + description: | + The quality of service (QoS) support. + in: body + required: true + type: boolean +absolute: + description: | + An ``absolute`` limits object. + in: body + required: true + type: object +add_volumes: + description: | + One or more volume UUIDs, separated by commas, to + add to the volume consistency group. + in: body + required: false + 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 +attach_status: + description: | + The volume attach status. + in: body + required: false + type: string +attachment_id: + description: | + The interface ID. + in: body + required: false + type: string +attachments: + description: | + Instance attachment information. If this volume + is attached to a server instance, the attachments list includes + the UUID of the attached server, an attachment UUID, the name of + the attached host, if any, the volume UUID, the device, and the + device UUID. Otherwise, this list is empty. + in: body + required: true + type: array +auth_key: + description: | + The authentication key for the volume transfer. + in: body + required: true + type: string +availability_zone: + description: | + The name of the availability zone. + in: body + required: false + type: string +availability_zone_1: + description: | + The availability zone. + in: body + required: false + type: string +availability_zone_2: + description: | + The availability zone. + in: body + required: true + type: string +availability_zone_3: + description: | + The availability zone name. + in: body + required: true + type: string +backup: + description: | + A ``backup`` object. + in: body + required: true + type: object +backups: + description: | + A list of ``backup`` objects. + in: body + required: true + type: array +bootable: + description: | + Enables or disables the bootable attribute. You + can boot an instance from a bootable volume. + in: body + required: true + type: boolean +bootable_1: + description: | + Enables or disables the bootable attribute. You + can boot an instance from a bootable volume. + in: body + required: false + type: boolean +capabilities: + description: | + The capabilities for the back end. The value is + either ``null`` or a string value that indicates the capabilities + for each pool. For example, ``total_capacity`` or ``QoS_support``. + in: body + required: true + type: object +cgsnapshot_id: + description: | + The UUID of the consistency group snapshot. + in: body + required: false + type: string +connector: + description: | + The ``connector`` object. + in: body + required: true + type: object +consistencygroup_id: + description: | + The UUID of the consistency group. + in: body + required: true + type: string +consistencygroup_id_1: + description: | + The UUID of the consistency group. + in: body + required: false + type: string +consumer: + description: | + The consumer type. + in: body + required: false + type: string +consumer_1: + description: | + The consumer type. + in: body + required: true + type: string +container: + description: | + The container name or null. + in: body + required: true + type: string +cores: + description: | + The number of instance cores that are allowed for + each tenant. + in: body + required: true + type: integer +created_at: + description: | + The date and time when the resource was created. + + The date and time stamp format is `ISO 8601 + `_: + + :: + + CCYY-MM-DDThh:mm:ss±hh:mm + + For example, ``2015-08-27T09:49:58-05:00``. + + The ``±hh:mm`` value, if included, is the time zone as an offset + from UTC. + in: body + required: true + type: string +created_at_1: + description: | + Date and time when the volume was created. + in: body + required: true + type: string +description: + description: | + The backup description or null. + in: body + required: true + type: string +description_1: + description: | + The consistency group snapshot description. + in: body + required: true + type: string +description_10: + description: | + The capabilities description. + in: body + required: true + type: string +description_11: + description: | + The consistency group description. + in: body + required: false + type: string +description_2: + description: | + The description of the consistency group. + in: body + required: false + type: string +description_3: + description: | + The description of the consistency group. + in: body + required: true + type: string +description_4: + description: | + A description for the snapshot. Default is + ``None``. + in: body + required: false + type: string +description_5: + description: | + The volume description. + in: body + required: false + type: string +description_6: + description: | + The consistency group description. + in: body + required: true + type: string +description_7: + description: | + The extension description. + in: body + required: true + type: string +description_8: + description: | + A description for the snapshot. + in: body + required: true + type: string +description_9: + description: | + The volume description. + in: body + required: true + type: string +driver_version: + description: | + The driver version. + in: body + required: true + type: string +encrypted: + description: | + If true, this volume is encrypted. + in: body + required: true + type: boolean +extra_specs: + description: | + A set of key and value pairs that contains the + specifications for a volume type. + in: body + required: true + type: object +extra_specs_1: + description: | + A key and value pair that contains additional + specifications that are associated with the volume type. Examples + include capabilities, capacity, compression, and so on, depending + on the storage driver in use. + in: body + required: true + type: object +fail_reason: + description: | + If the backup failed, the reason for the failure. + Otherwise, null. + in: body + required: true + type: string +fixed_ips: + description: | + The number of fixed IP addresses that are allowed + for each tenant. Must be equal to or greater than the number of + allowed instances. + in: body + required: true + type: integer +floating_ips: + description: | + The number of floating IP addresses that are + allowed for each tenant. + in: body + required: true + type: integer +force: + description: | + Indicates whether to backup, even if the volume + is attached. Default is ``false``. + in: body + required: false + type: boolean +force_1: + description: | + Indicates whether to snapshot, even if the volume + is attached. Default is ``false``. + in: body + required: false + type: boolean +force_2: + description: | + If set to ``true``, forces deletion of a + consistency group that has a registered volume. + in: body + required: false + type: boolean +free_capacity: + description: | + The amount of free capacity for the back-end + volume, in GBs. A valid value is a string, such as ``unknown``, or + an integer. + in: body + required: true + type: string +has_dependent_backups: + description: | + If this value is ``true``, the backup depends on + other backups. + in: body + required: false + type: boolean +host: + description: | + The OpenStack Block Storage host where the + existing volume resides. + in: body + required: true + type: string +host_name: + description: | + The name of the attaching host. + in: body + required: false + type: string +id: + description: | + The UUID of the volume transfer. + in: body + required: true + type: string +id_1: + description: | + The UUID of the backup. + in: body + required: true + type: string +id_2: + description: | + The UUID of the consistency group snapshot. + in: body + required: true + type: string +id_3: + description: | + The generated ID for the QoS specification. + in: body + required: true + type: string +id_4: + description: | + The snapshot UUID. + in: body + required: true + type: string +id_5: + description: | + The UUID of the volume. + in: body + required: true + type: string +id_6: + description: | + The UUID of the consistency group. + in: body + required: true + type: string +id_7: + description: | + The ID for the quota set. + in: body + required: true + type: integer +imageRef: + description: | + The UUID of the image from which you want to + create the volume. Required to create a bootable volume. + in: body + required: false + type: string +in_use: + description: | + The in use data size. Visible only if you set the + ``usage=true`` query parameter. + in: body + required: false + type: string +incremental: + description: | + The backup mode. A valid value is ``true`` for + incremental backup mode or ``false`` for full backup mode. Default + is ``false``. + in: body + required: false + type: boolean +injected_file_content_bytes: + description: | + The number of bytes of content that are allowed + for each injected file. + in: body + required: true + type: integer +injected_file_path_bytes: + description: | + The number of bytes that are allowed for each + injected file path. + in: body + required: true + type: integer +injected_files: + description: | + The number of injected files that are allowed for + each tenant. + in: body + required: true + type: integer +instance_uuid: + description: | + The UUID of the attaching instance. + in: body + required: false + type: string +instances: + description: | + The number of instances that are allowed for each + tenant. + in: body + required: true + type: integer +is_incremental: + description: | + Indicates whether the backup mode is incremental. + If this value is ``true``, the backup mode is incremental. If this + value is ``false``, the backup mode is full. + in: body + required: false + type: boolean +key: + description: | + The metadata key name for the metadata that you + want to remove. + in: body + required: true + type: string +key_pairs: + description: | + The number of key pairs that are allowed for each + user. + in: body + required: true + type: integer +keys: + description: | + List of Keys. + in: body + required: true + type: array +limits: + description: | + A list of ``limit`` objects. + in: body + required: true + type: object +links: + description: | + Links for the volume transfer. + in: body + required: true + type: array +links_1: + description: | + Links for the backup. + in: body + required: true + type: array +links_2: + description: | + The QoS specification links. + in: body + required: true + type: array +links_3: + description: | + The volume links. + in: body + required: true + type: array +links_4: + description: | + List of links related to the extension. + in: body + required: true + type: array +location: + description: | + Full URL to a service or server. + format: uri + in: body + required: true + type: string +maxTotalBackupGigabytes: + description: | + The maximum total amount of backups, in gibibytes + (GiB). + in: body + required: true + type: integer +maxTotalBackups: + description: | + The maximum number of backups. + in: body + required: true + type: integer +maxTotalSnapshots: + description: | + The maximum number of snapshots. + in: body + required: true + type: integer +maxTotalVolumeGigabytes: + description: | + The maximum total amount of volumes, in gibibytes + (GiB). + in: body + required: true + type: integer +maxTotalVolumes: + description: | + The maximum number of volumes. + in: body + required: true + type: integer +metadata: + description: | + One or more metadata key and value pairs for the + snapshot, if any. + in: body + required: true + type: object +metadata_1: + description: | + A ``metadata`` object. Contains one or more + metadata key and value pairs that are associated with the volume. + in: body + required: true + type: object +metadata_2: + description: | + One or more metadata key and value pairs that are + associated with the volume. + in: body + required: false + type: object +metadata_3: + description: | + One or more metadata key and value pairs that are + associated with the volume. + in: body + required: true + type: object +metadata_4: + description: | + One or more metadata key and value pairs to + associate with the volume. + in: body + required: false + type: string +metadata_5: + description: | + The image metadata to add to the volume as a set + of metadata key and value pairs. + in: body + required: true + type: object +metadata_6: + description: | + One or more metadata key and value pairs to + associate with the volume. + in: body + required: false + type: object +metadata_7: + description: | + One or more metadata key and value pairs for the + snapshot. + in: body + required: false + type: object +metadata_items: + description: | + The number of metadata items that are allowed for + each instance. + in: body + required: true + type: integer +migration_status: + description: | + The volume migration status. + in: body + required: true + type: string +migration_status_1: + description: | + The volume migration status. + in: body + required: false + type: string +mountpoint: + description: | + The attaching mount point. + in: body + required: false + type: string +multiattach: + description: | + To enable this volume to attach to more than one + server, set this value to ``true``. Default is ``false``. + in: body + required: false + type: boolean +multiattach_1: + description: | + If true, this volume can attach to more than one + instance. + in: body + required: true + type: boolean +name: + description: | + The name of the volume transfer. + in: body + required: true + type: string +name_1: + description: | + The backup name. + in: body + required: true + 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 volume. + in: body + required: true + type: string +name_12: + description: | + The name of the snapshot. + in: body + required: true + type: string +name_13: + description: | + The volume name. + in: body + required: true + type: string +name_14: + description: | + The name of the volume to which you want to + restore a backup. + in: body + required: false + type: string +name_15: + description: | + The consistency group name. + in: body + required: false + type: string +name_2: + description: | + The consistency group snapshot name. + in: body + required: true + type: string +name_3: + description: | + The name of the consistency group. + in: body + required: true + type: string +name_4: + description: | + The name of the QoS specification. + in: body + required: true + type: string +name_5: + description: | + The name of the snapshot. Default is ``None``. + in: body + required: false + type: string +name_6: + description: | + The volume transfer name. + in: body + required: false + type: string +name_7: + description: | + The name of the volume type. + in: body + required: true + type: string +name_8: + description: | + The volume name. + in: body + required: false + type: string +name_9: + description: | + The consistency group name. + in: body + required: true + type: string +namespace: + description: | + Link associated to the extension. + in: body + required: true + type: string +namespace_1: + description: | + The storage namespace, such as + ``OS::Storage::Capabilities::foo``. + in: body + required: true + type: string +new_size: + description: | + The new size of the volume, in gibibytes (GiB). + in: body + required: true + type: integer +object_count: + description: | + The number of objects in the backup. + in: body + required: true + type: integer +os-attach: + description: | + The ``os-attach`` action. + in: body + required: true + type: object +os-extend: + description: | + The ``os-extend`` action. + in: body + required: true + type: object +os-extended-snapshot-attributes:progress: + description: | + A percentage value for the build progress. + in: body + required: true + type: integer +os-extended-snapshot-attributes:project_id: + description: | + The UUID of the owning project. + in: body + required: true + type: string +os-force_delete: + description: | + The ``os-force_delete`` action. + in: body + required: true + type: string +os-force_detach: + description: | + The ``os-force_detach`` action. + in: body + required: true + type: object +os-promote-replica: + description: | + The ``os-promote-replica`` action. + in: body + required: true + type: object +os-reenable-replica: + description: | + The ``os-reenable-replica`` action. + in: body + required: true + type: object +os-reset_status: + description: | + The ``os-reset_status`` action. + in: body + required: true + type: object +os-set_image_metadata: + description: | + The ``os-set_image_metadata`` action. + in: body + required: true + type: object +os-unmanage: + description: | + The ``os-unmanage`` action. This action removes + the specified volume from Cinder management. + in: body + required: true + type: object +os-unset_image_metadata: + description: | + The ``os-unset_image_metadata`` action. This + action removes the key-value pairs from the image metadata. + in: body + required: true + type: object +os-vol-host-attr:host: + description: | + Current back-end of the volume. + in: body + required: true + type: string +os-vol-mig-status-attr:migstat: + description: | + The status of this volume migration (None means + that a migration is not currently in progress). + in: body + required: true + type: string +os-vol-mig-status-attr:name_id: + description: | + The volume ID that this volume name on the back- + end is based on. + in: body + required: true + type: string +os-vol-tenant-attr:tenant_id: + description: | + The tenant ID which the volume belongs to. + in: body + required: true + type: string +os-volume-replication:driver_data: + description: | + The name of the volume replication driver. + in: body + required: false + type: string +os-volume-replication:extended_status: + description: | + The volume replication status managed by the + driver of backend storage. + in: body + required: false + type: string +os-volume-replication:extended_status_1: + description: | + The status of the volume replication. + in: body + required: false + type: string +pool_name: + description: | + The name of the storage pool. + in: body + required: true + type: string +project: + description: | + The ID of the project. Volume Type access to be + added to this project ID. + in: body + required: true + type: string +project_id: + description: | + The UUID of the project. + in: body + required: true + type: string +project_id_1: + description: | + The Project ID having access to this volume type. + in: body + required: true + type: string +properties: + description: | + The backend volume capabilities list, which is + consisted of cinder standard capabilities and vendor unique + properties. + in: body + required: true + type: object +qos_specs: + description: | + A ``qos_specs`` object. + in: body + required: true + type: object +quota_set: + description: | + A ``quota_set`` object. + in: body + required: true + type: object +ram: + description: | + The amount of instance RAM in megabytes that are + allowed for each tenant. + in: body + required: true + type: integer +rate: + description: | + Rate-limit volume copy bandwidth, used to + mitigate slow down of data access from the instances. + in: body + required: true + type: array +ref: + description: | + A reference to the existing volume. The internal + structure of this reference depends on the volume driver + implementation. For details about the required elements in the + structure, see the documentation for the volume driver. + in: body + required: true + type: string +ref_1: + description: | + A reference to the existing volume. The internal + structure of this reference is dependent on the implementation of + the volume driver, see the specific driver's documentation for + details of the required elements in the structure. + in: body + required: true + type: object +remove_volumes: + description: | + One or more volume UUIDs, separated by commas, to + remove from the volume consistency group. + in: body + required: false + type: string +replication_status: + description: | + The volume replication status. + in: body + required: true + type: string +reserved: + description: | + Reserved volume size. Visible only if you set the + ``usage=true`` query parameter. + in: body + required: false + type: integer +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 +restore: + description: | + A ``restore`` object. + in: body + required: true + type: object +scheduler_hints: + description: | + The dictionary of data to send to the scheduler. + in: body + required: false + type: object +security_group_rules: + description: | + The number of rules that are allowed for each + security group. + in: body + required: false + type: integer +security_groups: + description: | + The number of security groups that are allowed + for each tenant. + in: body + required: true + type: integer +size: + description: | + The size of the volume, in gibibytes (GiB). + in: body + required: true + type: integer +size_1: + description: | + The size of the backup, in GB. + in: body + required: true + type: integer +snapshot: + description: | + A partial representation of a snapshot used in + the creation process. + in: body + required: true + type: string +snapshot_1: + description: | + A ``snapshot`` object. + in: body + required: true + type: object +snapshot_id: + description: | + To create a volume from an existing snapshot, + specify the UUID of the volume snapshot. The volume is created in + same availability zone and with same size as the snapshot. + in: body + required: false + type: string +snapshot_id_2: + description: | + The UUID of the source volume snapshot. + in: body + required: true + type: string +snapshot_id_3: + description: | + The UUID of the source volume snapshot. The API + creates a new volume snapshot with the same size as the source + volume snapshot. + in: body + required: true + type: string +source_cgid: + description: | + The UUID of the source consistency group. + in: body + required: false + type: string +source_replica: + description: | + The UUID of the primary volume to clone. + in: body + required: false + type: string +source_volid: + description: | + The UUID of the source volume. The API creates a + new volume with the same size as the source volume. + in: body + required: false + type: string +source_volid_1: + description: | + The UUID of the source volume. + in: body + required: true + type: string +specs: + description: | + A ``specs`` object. + in: body + required: true + type: object +specs_1: + description: | + Specification key and value pairs. + in: body + required: true + type: object +specs_2: + description: | + Specification key and value pairs. + in: body + required: true + type: string +status: + description: | + The ``status`` of the consistency group snapshot. + in: body + required: false + type: string +status_1: + description: | + The status of the consistency group. + in: body + required: true + type: string +status_2: + description: | + The status for the snapshot. + in: body + required: true + type: string +status_3: + description: | + The volume status. + in: body + required: true + type: string +status_4: + description: | + The backup status. Refer to Backup statuses table + for the possible status value. + in: body + required: true + type: string +status_5: + description: | + The consistency group status. A valid value is + ``creating``, ``available``, ``error``, ``deleting``, + ``updating``, or ``invalid``. + in: body + required: true + type: string +status_6: + description: | + The volume status. + in: body + required: false + type: string +storage_protocol: + description: | + The storage back end for the back-end volume. For + example, ``iSCSI`` or ``FC``. + in: body + required: true + type: string +storage_protocol_1: + description: | + The storage protocol, such as Fibre Channel, + iSCSI, NFS, and so on. + in: body + required: true + type: string +totalBackupGigabytesUsed: + description: | + The total number of backups gibibytes (GiB) used. + in: body + required: true + type: integer +totalBackupsUsed: + description: | + The total number of backups used. + in: body + required: true + type: integer +totalGigabytesUsed: + description: | + The total number of gibibytes (GiB) used. + in: body + required: true + type: integer +totalSnapshotsUsed: + description: | + The total number of snapshots used. + in: body + required: true + type: integer +totalVolumesUsed: + description: | + The total number of volumes used. + in: body + required: true + type: integer +total_capacity: + description: | + The total capacity for the back-end volume, in + GBs. A valid value is a string, such as ``unknown``, or an + integer. + in: body + required: true + type: string +updated: + description: | + The date and time stamp when the extension was + last updated. + in: body + required: true + type: string +updated_1: + description: | + The date and time stamp when the API request was + issued. + in: body + required: true + type: string +updated_at: + description: | + The date and time when the resource was updated. + + The date and time stamp format is `ISO 8601 + `_: + + :: + + CCYY-MM-DDThh:mm:ss±hh:mm + + For example, ``2015-08-27T09:49:58-05:00``. + + The ``±hh:mm`` value, if included, is the time zone as an offset + from UTC. In the previous example, the offset value is ``-05:00``. + + If the ``updated_at`` date and time stamp is not set, its value is + ``null``. + in: body + required: true + type: string +user_id: + description: | + The UUID of the user. + in: body + required: true + type: string +vendor_name: + description: | + The name of the vendor. + in: body + required: true + type: string +visibility: + description: | + The volume type access. + in: body + required: true + type: string +volume: + description: | + A ``volume`` object. + in: body + required: true + type: object +volume_1: + description: | + A ``volume`` object. + in: body + required: true + type: string +volume_backend_name: + description: | + The name of the back-end volume. + in: body + required: true + type: string +volume_id: + description: | + The UUID of the volume. + in: body + required: true + type: string +volume_id_2: + description: | + The UUID of the volume that you want to back up. + in: body + required: true + type: string +volume_id_3: + description: | + To create a snapshot from an existing volume, + specify the UUID of the existing volume. + in: body + required: true + type: string +volume_id_4: + description: | + The UUID of the volume from which the backup was + created. + in: body + required: true + type: string +volume_id_5: + description: | + If the snapshot was created from a volume, the + volume ID. + in: body + required: true + type: string +volume_id_6: + description: | + The UUID of the volume to which you want to + restore a backup. + in: body + required: false + type: string +volume_type_1: + description: | + A ``volume_type`` object. + in: body + required: true + type: object +volume_type_2: + description: | + The volume type. To create an environment with + multiple-storage back ends, you must specify a volume type. Block + Storage volume back ends are spawned as children to ``cinder- + volume``, and they are keyed from a unique queue. They are named + ``cinder- volume.HOST.BACKEND``. For example, ``cinder- + volume.ubuntu.lvmdriver``. When a volume is created, the scheduler + chooses an appropriate back end to handle the request based on the + volume type. Default is ``None``. For information about how to + use volume types to create multiple- storage back ends, see + `Configure multiple-storage back ends + `_. + in: body + required: false + type: string +volume_type_3: + description: | + The volume type. In an environment with multiple- + storage back ends, the scheduler determines where to send the + volume based on the volume type. For information about how to use + volume types to create multiple- storage back ends, see `Configure + multiple-storage back ends `_. + in: body + required: true + type: string +volume_type_4: + description: | + The associated volume type. + in: body + required: false + type: string +volume_type_5: + description: | + A list of ``volume_type`` objects. + in: body + required: true + type: array +volume_types: + description: | + The list of volume types. In an environment with + multiple-storage back ends, the scheduler determines where to send + the volume based on the volume type. For information about how to + use volume types to create multiple- storage back ends, see + `Configure multiple-storage back ends + `_. + in: body + required: true + type: array +volumes: + description: | + A list of ``volume`` objects. + in: body + required: true + type: array + diff --git a/api-ref/source/blockstorage/v2/qos-specs-v2-qos-specs.inc b/api-ref/source/blockstorage/v2/qos-specs-v2-qos-specs.inc new file mode 100644 index 000000000..09927bb1a --- /dev/null +++ b/api-ref/source/blockstorage/v2/qos-specs-v2-qos-specs.inc @@ -0,0 +1,362 @@ +.. -*- rst -*- + +=================================================== +Quality of service (QoS) specifications (qos-specs) +=================================================== + +Administrators only, depending on policy settings. + +Creates, lists, shows details for, associates, disassociates, sets +keys, unsets keys, and deletes quality of service (QoS) +specifications. + + +Disassociate QoS specification from all associations +==================================================== + +.. rest_method:: GET /v2/{tenant_id}/qos-specs/{qos_id}/disassociate_all + +Disassociates a QoS specification from all associations. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - qos_id: qos_id + + + + + + +Unset keys in QoS specification +=============================== + +.. rest_method:: PUT /v2/{tenant_id}/qos-specs/{qos_id}/delete_keys + +Unsets keys in a QoS specification. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - keys: keys + - tenant_id: tenant_id + - qos_id: qos_id + +Request Example +--------------- + +.. literalinclude:: ../samples/qos-specs/qos-unset-request.json + :language: javascript + + + + + +Response Example +---------------- + +.. literalinclude:: + :language: javascript + + + + +Get all associations for QoS specification +========================================== + +.. rest_method:: GET /v2/{tenant_id}/qos-specs/{qos_id}/associations + +Lists all associations for a QoS specification. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - qos_id: qos_id + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/qos-specs/qos-show-response.json + :language: javascript + + + + +Associate QoS specification with volume type +============================================ + +.. rest_method:: GET /v2/{tenant_id}/qos-specs/{qos_id}/associate + +Associates a QoS specification with a volume type. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - qos_id: qos_id + + + + + + +Disassociate QoS specification from volume type +=============================================== + +.. rest_method:: GET /v2/{tenant_id}/qos-specs/{qos_id}/disassociate + +Disassociates a QoS specification from a volume type. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - qos_id: qos_id + + + + + + +Show QoS specification details +============================== + +.. rest_method:: GET /v2/{tenant_id}/qos-specs/{qos_id} + +Shows details for a QoS specification. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - qos_id: qos_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - name: name + - links: links + - id: id + - qos_specs: qos_specs + - consumer: consumer + - specs: specs + + + +Response Example +---------------- + +.. literalinclude:: ../samples/qos-specs/qos-show-response.json + :language: javascript + + + + + + + + + + + +Set keys in QoS specification +============================= + +.. rest_method:: PUT /v2/{tenant_id}/qos-specs/{qos_id} + +Sets keys in a QoS specification. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - qos_specs: qos_specs + - specs: specs + - tenant_id: tenant_id + - qos_id: qos_id + +Request Example +--------------- + +.. literalinclude:: ../samples/qos-specs/qos-update-request.json + :language: javascript + + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/qos-specs/qos-update-response.json + :language: javascript + + + + +Delete QoS specification +======================== + +.. rest_method:: DELETE /v2/{tenant_id}/qos-specs/{qos_id} + +Deletes a QoS specification. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - qos_id: qos_id + - force: force + + + + + + +Create QoS specification +======================== + +.. rest_method:: POST /v2/{tenant_id}/qos-specs + +Creates a QoS specification. + +Specify one or more key and value pairs in the request body. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - qos_specs: qos_specs + - consumer: consumer + - name: name + - tenant_id: tenant_id + +Request Example +--------------- + +.. literalinclude:: ../samples/qos-specs/qos-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - name: name + - links: links + - id: id + - qos_specs: qos_specs + - consumer: consumer + - specs: specs + + + + + +List QoS specs +============== + +.. rest_method:: GET /v2/{tenant_id}/qos-specs + +Lists quality of service (QoS) specifications. + + +Normal response codes: 200 +Error response codes:300, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - sort_key: sort_key + - sort_dir: sort_dir + - limit: limit + - marker: marker + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - specs: specs + - qos_specs: qos_specs + - consumer: consumer + - id: id + - name: name + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/qos-specs/qos-list-response.json + :language: javascript + + + diff --git a/api-ref/source/blockstorage/v2/quota-sets.inc b/api-ref/source/blockstorage/v2/quota-sets.inc new file mode 100644 index 000000000..c1cb35d3a --- /dev/null +++ b/api-ref/source/blockstorage/v2/quota-sets.inc @@ -0,0 +1,448 @@ +.. -*- rst -*- + +==================================== +Quota sets extension (os-quota-sets) +==================================== + +Administrators only, depending on policy settings. + +Shows, updates, and deletes quotas for a tenant. + + +Show quotas for user +==================== + +.. rest_method:: GET /v2/{admin_tenant_id}/os-quota-sets/{tenant_id}/{user_id} + +Enables an admin user to show quotas for a tenant and user. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - user_id: user_id + - admin_tenant_id: admin_tenant_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - injected_file_content_bytes: injected_file_content_bytes + - metadata_items: metadata_items + - reserved: reserved + - in_use: in_use + - ram: ram + - floating_ips: floating_ips + - key_pairs: key_pairs + - injected_file_path_bytes: injected_file_path_bytes + - instances: instances + - security_group_rules: security_group_rules + - injected_files: injected_files + - quota_set: quota_set + - cores: cores + - fixed_ips: fixed_ips + - id: id + - security_groups: security_groups + + + +Response Example +---------------- + +.. literalinclude:: ../samples/os-quota-sets/quotas-update-response.json + :language: javascript + + + + +Update quotas for user +====================== + +.. rest_method:: PUT /v2/{admin_tenant_id}/os-quota-sets/{tenant_id}/{user_id} + +Updates quotas for a tenant and user. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - injected_file_content_bytes: injected_file_content_bytes + - metadata_items: metadata_items + - reserved: reserved + - in_use: in_use + - ram: ram + - floating_ips: floating_ips + - key_pairs: key_pairs + - injected_file_path_bytes: injected_file_path_bytes + - instances: instances + - security_group_rules: security_group_rules + - injected_files: injected_files + - quota_set: quota_set + - cores: cores + - fixed_ips: fixed_ips + - id: id + - security_groups: security_groups + - tenant_id: tenant_id + - user_id: user_id + - admin_tenant_id: admin_tenant_id + +Request Example +--------------- + +.. literalinclude:: ../samples/os-quota-sets/quotas-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - injected_file_content_bytes: injected_file_content_bytes + - metadata_items: metadata_items + - reserved: reserved + - in_use: in_use + - ram: ram + - floating_ips: floating_ips + - key_pairs: key_pairs + - injected_file_path_bytes: injected_file_path_bytes + - instances: instances + - security_group_rules: security_group_rules + - injected_files: injected_files + - quota_set: quota_set + - cores: cores + - fixed_ips: fixed_ips + - id: id + - security_groups: security_groups + + + +Response Example +---------------- + +.. literalinclude:: ../samples/os-quota-sets/quotas-update-response.json + :language: javascript + + + + +Delete quotas for user +====================== + +.. rest_method:: DELETE /v2/{admin_tenant_id}/os-quota-sets/{tenant_id}/{user_id} + +Deletes quotas for a user so that the quotas revert to default values. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - user_id: user_id + - admin_tenant_id: admin_tenant_id + + + + +Response Example +---------------- + +.. literalinclude:: + :language: javascript + + + + +Show quotas +=========== + +.. rest_method:: GET /v2/{admin_tenant_id}/os-quota-sets/{tenant_id} + +Shows quotas for a tenant. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - admin_tenant_id: admin_tenant_id + - usage: usage + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - injected_file_content_bytes: injected_file_content_bytes + - metadata_items: metadata_items + - reserved: reserved + - in_use: in_use + - ram: ram + - floating_ips: floating_ips + - key_pairs: key_pairs + - injected_file_path_bytes: injected_file_path_bytes + - instances: instances + - security_group_rules: security_group_rules + - injected_files: injected_files + - quota_set: quota_set + - cores: cores + - fixed_ips: fixed_ips + - id: id + - security_groups: security_groups + + + +Response Example +---------------- + +.. literalinclude:: ../samples/os-quota-sets/quotas-show-response.json + :language: javascript + + + + +Update quotas +============= + +.. rest_method:: PUT /v2/{admin_tenant_id}/os-quota-sets/{tenant_id} + +Updates quotas for a tenant. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - injected_file_content_bytes: injected_file_content_bytes + - metadata_items: metadata_items + - reserved: reserved + - in_use: in_use + - ram: ram + - floating_ips: floating_ips + - key_pairs: key_pairs + - injected_file_path_bytes: injected_file_path_bytes + - instances: instances + - security_group_rules: security_group_rules + - injected_files: injected_files + - quota_set: quota_set + - cores: cores + - fixed_ips: fixed_ips + - id: id + - security_groups: security_groups + - tenant_id: tenant_id + - admin_tenant_id: admin_tenant_id + +Request Example +--------------- + +.. literalinclude:: ../samples/os-quota-sets/quotas-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - injected_file_content_bytes: injected_file_content_bytes + - metadata_items: metadata_items + - reserved: reserved + - in_use: in_use + - ram: ram + - floating_ips: floating_ips + - key_pairs: key_pairs + - injected_file_path_bytes: injected_file_path_bytes + - instances: instances + - security_group_rules: security_group_rules + - injected_files: injected_files + - quota_set: quota_set + - cores: cores + - fixed_ips: fixed_ips + - id: id + - security_groups: security_groups + + + +Response Example +---------------- + +.. literalinclude:: ../samples/os-quota-sets/quotas-update-response.json + :language: javascript + + + + +Delete quotas +============= + +.. rest_method:: DELETE /v2/{admin_tenant_id}/os-quota-sets/{tenant_id} + +Deletes quotas for a tenant so the quotas revert to default values. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - admin_tenant_id: admin_tenant_id + + + + +Response Example +---------------- + +.. literalinclude:: + :language: javascript + + + + +Show quota details for user +=========================== + +.. rest_method:: GET /v2/{admin_tenant_id}/os-quota-sets/{tenant_id}/detail/{user_id} + +Shows details for quotas for a tenant and user. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - user_id: user_id + - admin_tenant_id: admin_tenant_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - injected_file_content_bytes: injected_file_content_bytes + - metadata_items: metadata_items + - reserved: reserved + - in_use: in_use + - ram: ram + - floating_ips: floating_ips + - key_pairs: key_pairs + - injected_file_path_bytes: injected_file_path_bytes + - instances: instances + - security_group_rules: security_group_rules + - injected_files: injected_files + - quota_set: quota_set + - cores: cores + - fixed_ips: fixed_ips + - id: id + - security_groups: security_groups + + + +Response Example +---------------- + +.. literalinclude:: ../samples/os-quota-sets/quotas-update-response.json + :language: javascript + + + + +Get default quotas +================== + +.. rest_method:: GET /v2/{tenant_id}/os-quota-sets/defaults + +Gets default quotas for a tenant. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - injected_file_content_bytes: injected_file_content_bytes + - metadata_items: metadata_items + - reserved: reserved + - in_use: in_use + - ram: ram + - floating_ips: floating_ips + - key_pairs: key_pairs + - injected_file_path_bytes: injected_file_path_bytes + - instances: instances + - security_group_rules: security_group_rules + - injected_files: injected_files + - quota_set: quota_set + - cores: cores + - fixed_ips: fixed_ips + - id: id + - security_groups: security_groups + + + +Response Example +---------------- + +.. literalinclude:: ../samples/os-quota-sets/quotas-show-defaults-response.json + :language: javascript + + + diff --git a/api-ref/source/blockstorage/v2/samples/backups/backup-create-request.json b/api-ref/source/blockstorage/v2/samples/backups/backup-create-request.json new file mode 100644 index 000000000..c7f8a74d5 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/backups/backup-create-request.json @@ -0,0 +1,9 @@ +{ + "backup": { + "container": null, + "description": null, + "name": "backup001", + "volume_id": "64f5d2fb-d836-4063-b7e2-544d5c1ff607", + "incremental": true + } +} diff --git a/api-ref/source/blockstorage/v2/samples/backups/backup-create-response.json b/api-ref/source/blockstorage/v2/samples/backups/backup-create-response.json new file mode 100644 index 000000000..e2aec1c8f --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/backups/backup-create-response.json @@ -0,0 +1,16 @@ +{ + "backup": { + "id": "deac8b8c-35c9-4c71-acaa-889c2d5d5c8e", + "links": [ + { + "href": "http://localhost:8776/v2/c95fc3e4afe248a49a28828f286a7b38/backups/deac8b8c-35c9-4c71-acaa-889c2d5d5c8e", + "rel": "self" + }, + { + "href": "http://localhost:8776/c95fc3e4afe248a49a28828f286a7b38/backups/deac8b8c-35c9-4c71-acaa-889c2d5d5c8e", + "rel": "bookmark" + } + ], + "name": "backup001" + } +} diff --git a/api-ref/source/blockstorage/v2/samples/backups/backup-force-delete-request.json b/api-ref/source/blockstorage/v2/samples/backups/backup-force-delete-request.json new file mode 100644 index 000000000..5c56464d9 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/backups/backup-force-delete-request.json @@ -0,0 +1,3 @@ +{ + "os-force_delete": {} +} diff --git a/api-ref/source/blockstorage/v2/samples/backups/backup-record-export-response.json b/api-ref/source/blockstorage/v2/samples/backups/backup-record-export-response.json new file mode 100644 index 000000000..8783eeda0 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/backups/backup-record-export-response.json @@ -0,0 +1,6 @@ +{ + "backup-record": { + "backup_service": "cinder.backup.drivers.swift", + "backup_url": "eyJzdGF0" + } +} diff --git a/api-ref/source/blockstorage/v2/samples/backups/backup-record-import-request.json b/api-ref/source/blockstorage/v2/samples/backups/backup-record-import-request.json new file mode 100644 index 000000000..8783eeda0 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/backups/backup-record-import-request.json @@ -0,0 +1,6 @@ +{ + "backup-record": { + "backup_service": "cinder.backup.drivers.swift", + "backup_url": "eyJzdGF0" + } +} diff --git a/api-ref/source/blockstorage/v2/samples/backups/backup-record-import-response.json b/api-ref/source/blockstorage/v2/samples/backups/backup-record-import-response.json new file mode 100644 index 000000000..60eeabbc9 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/backups/backup-record-import-response.json @@ -0,0 +1,16 @@ +{ + "backup": { + "id": "deac8b8c-35c9-4c71-acaa-889c2d5d5c8e", + "links": [ + { + "href": "http://localhost:8776/v2/c95fc3e4afe248a49a28828f286a7b38/backups/deac8b8c-35c9-4c71-acaa-889c2d5d5c8e", + "rel": "self" + }, + { + "href": "http://localhost:8776/c95fc3e4afe248a49a28828f286a7b38/backups/deac8b8c-35c9-4c71-acaa-889c2d5d5c8e", + "rel": "bookmark" + } + ], + "name": null + } +} diff --git a/api-ref/source/blockstorage/v2/samples/backups/backup-restore-request.json b/api-ref/source/blockstorage/v2/samples/backups/backup-restore-request.json new file mode 100644 index 000000000..2ccb7e516 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/backups/backup-restore-request.json @@ -0,0 +1,6 @@ +{ + "restore": { + "name": "vol-01", + "volume_id": "64f5d2fb-d836-4063-b7e2-544d5c1ff607" + } +} diff --git a/api-ref/source/blockstorage/v2/samples/backups/backup-restore-response.json b/api-ref/source/blockstorage/v2/samples/backups/backup-restore-response.json new file mode 100644 index 000000000..a344ea56c --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/backups/backup-restore-response.json @@ -0,0 +1,6 @@ +{ + "restore": { + "backup_id": "2ef47aee-8844-490c-804d-2a8efe561c65", + "volume_id": "795114e8-7489-40be-a978-83797f2c1dd3" + } +} diff --git a/api-ref/source/blockstorage/v2/samples/backups/backup-show-response.json b/api-ref/source/blockstorage/v2/samples/backups/backup-show-response.json new file mode 100644 index 000000000..c4fe0ffc4 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/backups/backup-show-response.json @@ -0,0 +1,27 @@ +{ + "backup": { + "availability_zone": "az1", + "container": "volumebackups", + "created_at": "2013-04-02T10:35:27.000000", + "description": null, + "fail_reason": null, + "id": "2ef47aee-8844-490c-804d-2a8efe561c65", + "links": [ + { + "href": "http://localhost:8776/v1/c95fc3e4afe248a49a28828f286a7b38/backups/2ef47aee-8844-490c-804d-2a8efe561c65", + "rel": "self" + }, + { + "href": "http://localhost:8776/c95fc3e4afe248a49a28828f286a7b38/backups/2ef47aee-8844-490c-804d-2a8efe561c65", + "rel": "bookmark" + } + ], + "name": "backup001", + "object_count": 22, + "size": 1, + "status": "available", + "volume_id": "e5185058-943a-4cb4-96d9-72c184c337d6", + "is_incremental": true, + "has_dependent_backups": false + } +} diff --git a/api-ref/source/blockstorage/v2/samples/backups/backups-list-detailed-response.json b/api-ref/source/blockstorage/v2/samples/backups/backups-list-detailed-response.json new file mode 100644 index 000000000..d729ada68 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/backups/backups-list-detailed-response.json @@ -0,0 +1,54 @@ +{ + "backups": [ + { + "availability_zone": "az1", + "container": "volumebackups", + "created_at": "2013-04-02T10:35:27.000000", + "description": null, + "fail_reason": null, + "id": "2ef47aee-8844-490c-804d-2a8efe561c65", + "links": [ + { + "href": "http://localhost:8776/v1/c95fc3e4afe248a49a28828f286a7b38/backups/2ef47aee-8844-490c-804d-2a8efe561c65", + "rel": "self" + }, + { + "href": "http://localhost:8776/c95fc3e4afe248a49a28828f286a7b38/backups/2ef47aee-8844-490c-804d-2a8efe561c65", + "rel": "bookmark" + } + ], + "name": "backup001", + "object_count": 22, + "size": 1, + "status": "available", + "volume_id": "e5185058-943a-4cb4-96d9-72c184c337d6", + "is_incremental": true, + "has_dependent_backups": false + }, + { + "availability_zone": "az1", + "container": "volumebackups", + "created_at": "2013-04-02T10:21:48.000000", + "description": null, + "fail_reason": null, + "id": "4dbf0ec2-0b57-4669-9823-9f7c76f2b4f8", + "links": [ + { + "href": "http://localhost:8776/v1/c95fc3e4afe248a49a28828f286a7b38/backups/4dbf0ec2-0b57-4669-9823-9f7c76f2b4f8", + "rel": "self" + }, + { + "href": "http://localhost:8776/c95fc3e4afe248a49a28828f286a7b38/backups/4dbf0ec2-0b57-4669-9823-9f7c76f2b4f8", + "rel": "bookmark" + } + ], + "name": "backup002", + "object_count": 22, + "size": 1, + "status": "available", + "volume_id": "e5185058-943a-4cb4-96d9-72c184c337d6", + "is_incremental": true, + "has_dependent_backups": false + } + ] +} diff --git a/api-ref/source/blockstorage/v2/samples/backups/backups-list-response.json b/api-ref/source/blockstorage/v2/samples/backups/backups-list-response.json new file mode 100644 index 000000000..8dd7d785a --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/backups/backups-list-response.json @@ -0,0 +1,32 @@ +{ + "backups": [ + { + "id": "2ef47aee-8844-490c-804d-2a8efe561c65", + "links": [ + { + "href": "http://localhost:8776/v1/c95fc3e4afe248a49a28828f286a7b38/backups/2ef47aee-8844-490c-804d-2a8efe561c65", + "rel": "self" + }, + { + "href": "http://localhost:8776/c95fc3e4afe248a49a28828f286a7b38/backups/2ef47aee-8844-490c-804d-2a8efe561c65", + "rel": "bookmark" + } + ], + "name": "backup001" + }, + { + "id": "4dbf0ec2-0b57-4669-9823-9f7c76f2b4f8", + "links": [ + { + "href": "http://localhost:8776/v1/c95fc3e4afe248a49a28828f286a7b38/backups/4dbf0ec2-0b57-4669-9823-9f7c76f2b4f8", + "rel": "self" + }, + { + "href": "http://localhost:8776/c95fc3e4afe248a49a28828f286a7b38/backups/4dbf0ec2-0b57-4669-9823-9f7c76f2b4f8", + "rel": "bookmark" + } + ], + "name": "backup002" + } + ] +} diff --git a/api-ref/source/blockstorage/v2/samples/capabilities/backend-capabilities-response.json b/api-ref/source/blockstorage/v2/samples/capabilities/backend-capabilities-response.json new file mode 100644 index 000000000..a72a23815 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/capabilities/backend-capabilities-response.json @@ -0,0 +1,33 @@ +{ + "namespace": "OS::Storage::Capabilities::fake", + "vendor_name": "OpenStack", + "volume_backend_name": "lvm", + "pool_name": "pool", + "driver_version": "2.0.0", + "storage_protocol": "iSCSI", + "display_name": "Capabilities of Cinder LVM driver", + "description": "These are volume type options provided by Cinder LVM driver, blah, blah.", + "visibility": "public", + "properties": { + "compression": { + "title": "Compression", + "description": "Enables compression.", + "type": "boolean" + }, + "qos": { + "title": "QoS", + "description": "Enables QoS.", + "type": "boolean" + }, + "replication": { + "title": "Replication", + "description": "Enables replication.", + "type": "boolean" + }, + "thin_provisioning": { + "title": "Thin Provisioning", + "description": "Sets thin provisioning.", + "type": "boolean" + } + } +} diff --git a/api-ref/source/blockstorage/v2/samples/cgsnapshots/cgsnapshots-create-request.json b/api-ref/source/blockstorage/v2/samples/cgsnapshots/cgsnapshots-create-request.json new file mode 100644 index 000000000..36d6f4537 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/cgsnapshots/cgsnapshots-create-request.json @@ -0,0 +1,10 @@ +{ + "cgsnapshot": { + "consistencygroup_id": "6f519a48-3183-46cf-a32f-41815f814546", + "name": "firstcg", + "description": "first consistency group", + "user_id": "6f519a48-3183-46cf-a32f-41815f814444", + "project_id": "6f519a48-3183-46cf-a32f-41815f815555", + "status": "creating" + } +} diff --git a/api-ref/source/blockstorage/v2/samples/cgsnapshots/cgsnapshots-create-response.json b/api-ref/source/blockstorage/v2/samples/cgsnapshots/cgsnapshots-create-response.json new file mode 100644 index 000000000..6d24a97f1 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/cgsnapshots/cgsnapshots-create-response.json @@ -0,0 +1,6 @@ +{ + "cgsnapshot": { + "id": "6f519a48-3183-46cf-a32f-41815f816666", + "name": "firstcg" + } +} diff --git a/api-ref/source/blockstorage/v2/samples/cgsnapshots/cgsnapshots-list-detailed-response.json b/api-ref/source/blockstorage/v2/samples/cgsnapshots/cgsnapshots-list-detailed-response.json new file mode 100644 index 000000000..93ad12870 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/cgsnapshots/cgsnapshots-list-detailed-response.json @@ -0,0 +1,20 @@ +{ + "cgsnapshots": [ + { + "id": "6f519a48-3183-46cf-a32f-41815f813986", + "consistencygroup_id": "6f519a48-3183-46cf-a32f-41815f814444", + "status": "available", + "created_at": "2015-09-16T09:28:52.000000", + "name": "my-cg1", + "description": "my first consistency group" + }, + { + "id": "aed36625-a6d7-4681-ba59-c7ba3d18c148", + "consistencygroup_id": "aed36625-a6d7-4681-ba59-c7ba3d18dddd", + "status": "error", + "created_at": "2015-09-16T09:31:15.000000", + "name": "my-cg2", + "description": "Edited description" + } + ] +} diff --git a/api-ref/source/blockstorage/v2/samples/cgsnapshots/cgsnapshots-list-response.json b/api-ref/source/blockstorage/v2/samples/cgsnapshots/cgsnapshots-list-response.json new file mode 100644 index 000000000..726aa803a --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/cgsnapshots/cgsnapshots-list-response.json @@ -0,0 +1,12 @@ +{ + "cgsnapshots": [ + { + "id": "6f519a48-3183-46cf-a32f-41815f813986", + "name": "my-cg1" + }, + { + "id": "aed36625-a6d7-4681-ba59-c7ba3d18c148", + "name": "my-cg2" + } + ] +} diff --git a/api-ref/source/blockstorage/v2/samples/cgsnapshots/cgsnapshots-show-response.json b/api-ref/source/blockstorage/v2/samples/cgsnapshots/cgsnapshots-show-response.json new file mode 100644 index 000000000..632a5afba --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/cgsnapshots/cgsnapshots-show-response.json @@ -0,0 +1,10 @@ +{ + "cgsnapshot": { + "id": "6f519a48-3183-46cf-a32f-41815f813986", + "consistencygroup_id": "6f519a48-3183-46cf-a32f-41815f814444", + "status": "available", + "created_at": "2015-09-16T09:28:52.000000", + "name": "my-cg1", + "description": "my first consistency group" + } +} diff --git a/api-ref/source/blockstorage/v2/samples/consistencygroups/consistency-group-create-from-src-request.json b/api-ref/source/blockstorage/v2/samples/consistencygroups/consistency-group-create-from-src-request.json new file mode 100644 index 000000000..ad25c5d02 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/consistencygroups/consistency-group-create-from-src-request.json @@ -0,0 +1,11 @@ +{ + "consistencygroup-from-src": { + "name": "firstcg", + "description": "first consistency group", + "cgsnapshot_id": "6f519a48-3183-46cf-a32f-41815f813986", + "source_cgid": "6f519a48-3183-46cf-a32f-41815f814546", + "user_id": "6f519a48-3183-46cf-a32f-41815f815555", + "project_id": "6f519a48-3183-46cf-a32f-41815f814444", + "status": "creating" + } +} diff --git a/api-ref/source/blockstorage/v2/samples/consistencygroups/consistency-group-create-request.json b/api-ref/source/blockstorage/v2/samples/consistencygroups/consistency-group-create-request.json new file mode 100644 index 000000000..29c691c57 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/consistencygroups/consistency-group-create-request.json @@ -0,0 +1,14 @@ +{ + "consistencygroup": { + "name": "firstcg", + "description": "first consistency group", + "volume_types": [ + "type1", + "type2" + ], + "user_id": "6f519a48-3183-46cf-a32f-41815f814546", + "project_id": "6f519a48-3183-46cf-a32f-41815f815555", + "availability_zone": "az0", + "status": "creating" + } +} diff --git a/api-ref/source/blockstorage/v2/samples/consistencygroups/consistency-group-create-response.json b/api-ref/source/blockstorage/v2/samples/consistencygroups/consistency-group-create-response.json new file mode 100644 index 000000000..113950ab6 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/consistencygroups/consistency-group-create-response.json @@ -0,0 +1,6 @@ +{ + "consistencygroup": { + "id": "6f519a48-3183-46cf-a32f-41815f816666", + "name": "firstcg" + } +} diff --git a/api-ref/source/blockstorage/v2/samples/consistencygroups/consistency-group-delete-request.json b/api-ref/source/blockstorage/v2/samples/consistencygroups/consistency-group-delete-request.json new file mode 100644 index 000000000..8ad8745e7 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/consistencygroups/consistency-group-delete-request.json @@ -0,0 +1,5 @@ +{ + "consistencygroup": { + "force": false + } +} diff --git a/api-ref/source/blockstorage/v2/samples/consistencygroups/consistency-group-show-response.json b/api-ref/source/blockstorage/v2/samples/consistencygroups/consistency-group-show-response.json new file mode 100644 index 000000000..3cbb87d74 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/consistencygroups/consistency-group-show-response.json @@ -0,0 +1,13 @@ +{ + "consistencygroup": { + "id": "6f519a48-3183-46cf-a32f-41815f813986", + "status": "available", + "availability_zone": "az1", + "created_at": "2015-09-16T09:28:52.000000", + "name": "my-cg1", + "description": "my first consistency group", + "volume_types": [ + "123456" + ] + } +} diff --git a/api-ref/source/blockstorage/v2/samples/consistencygroups/consistency-group-show-response.xml b/api-ref/source/blockstorage/v2/samples/consistencygroups/consistency-group-show-response.xml new file mode 100644 index 000000000..a9d2b4dd9 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/consistencygroups/consistency-group-show-response.xml @@ -0,0 +1,14 @@ + + + + + "123456" + + + diff --git a/api-ref/source/blockstorage/v2/samples/consistencygroups/consistency-group-update-request.json b/api-ref/source/blockstorage/v2/samples/consistencygroups/consistency-group-update-request.json new file mode 100644 index 000000000..945465516 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/consistencygroups/consistency-group-update-request.json @@ -0,0 +1,8 @@ +{ + "consistencygroup": { + "name": "my_cg", + "description": "My consistency group", + "add_volumes": "volume-uuid-1,volume-uuid-2", + "remove_volumes": "volume-uuid-8,volume-uuid-9" + } +} diff --git a/api-ref/source/blockstorage/v2/samples/consistencygroups/consistency-groups-list-detailed-response.json b/api-ref/source/blockstorage/v2/samples/consistencygroups/consistency-groups-list-detailed-response.json new file mode 100644 index 000000000..618c65882 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/consistencygroups/consistency-groups-list-detailed-response.json @@ -0,0 +1,26 @@ +{ + "consistencygroups": [ + { + "id": "6f519a48-3183-46cf-a32f-41815f813986", + "status": "available", + "availability_zone": "az1", + "created_at": "2015-09-16T09:28:52.000000", + "name": "my-cg1", + "description": "my first consistency group", + "volume_types": [ + "123456" + ] + }, + { + "id": "aed36625-a6d7-4681-ba59-c7ba3d18c148", + "status": "error", + "availability_zone": "az2", + "created_at": "2015-09-16T09:31:15.000000", + "name": "my-cg2", + "description": "Edited description", + "volume_types": [ + "234567" + ] + } + ] +} diff --git a/api-ref/source/blockstorage/v2/samples/consistencygroups/consistency-groups-list-detailed-response.xml b/api-ref/source/blockstorage/v2/samples/consistencygroups/consistency-groups-list-detailed-response.xml new file mode 100644 index 000000000..bed4f6256 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/consistencygroups/consistency-groups-list-detailed-response.xml @@ -0,0 +1,25 @@ + + + + + "123456" + + + + + "234567" + + + diff --git a/api-ref/source/blockstorage/v2/samples/consistencygroups/consistency-groups-list-response.json b/api-ref/source/blockstorage/v2/samples/consistencygroups/consistency-groups-list-response.json new file mode 100644 index 000000000..a53863f43 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/consistencygroups/consistency-groups-list-response.json @@ -0,0 +1,12 @@ +{ + "consistencygroups": [ + { + "id": "6f519a48-3183-46cf-a32f-41815f813986", + "name": "my-cg1" + }, + { + "id": "aed36625-a6d7-4681-ba59-c7ba3d18c148", + "name": "my-cg2" + } + ] +} diff --git a/api-ref/source/blockstorage/v2/samples/host-attach-request.json b/api-ref/source/blockstorage/v2/samples/host-attach-request.json new file mode 100644 index 000000000..01d064451 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/host-attach-request.json @@ -0,0 +1,5 @@ +{ + "os-attach": { + "host_name": "my_host" + } +} diff --git a/api-ref/source/blockstorage/v2/samples/limits/limits-show-response.json b/api-ref/source/blockstorage/v2/samples/limits/limits-show-response.json new file mode 100644 index 000000000..38d0ccd3c --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/limits/limits-show-response.json @@ -0,0 +1,17 @@ +{ + "limits": { + "rate": [], + "absolute": { + "totalSnapshotsUsed": 0, + "maxTotalBackups": 10, + "maxTotalVolumeGigabytes": 1000, + "maxTotalSnapshots": 10, + "maxTotalBackupGigabytes": 1000, + "totalBackupGigabytesUsed": 0, + "maxTotalVolumes": 10, + "totalVolumesUsed": 0, + "totalBackupsUsed": 0, + "totalGigabytesUsed": 0 + } + } +} diff --git a/api-ref/source/blockstorage/v2/samples/limits/limits-show-response.xml b/api-ref/source/blockstorage/v2/samples/limits/limits-show-response.xml new file mode 100644 index 000000000..0f932b074 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/limits/limits-show-response.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + diff --git a/api-ref/source/blockstorage/v2/samples/os-quota-sets/quotas-show-defaults-response.json b/api-ref/source/blockstorage/v2/samples/os-quota-sets/quotas-show-defaults-response.json new file mode 100644 index 000000000..6c267112c --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/os-quota-sets/quotas-show-defaults-response.json @@ -0,0 +1,7 @@ +{ + "quota_set": { + "gigabytes": 5, + "snapshots": 10, + "volumes": 20 + } +} diff --git a/api-ref/source/blockstorage/v2/samples/os-quota-sets/quotas-show-defaults-response.xml b/api-ref/source/blockstorage/v2/samples/os-quota-sets/quotas-show-defaults-response.xml new file mode 100644 index 000000000..b63b30b08 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/os-quota-sets/quotas-show-defaults-response.xml @@ -0,0 +1,6 @@ + + + 5 + 10 + 20 + diff --git a/api-ref/source/blockstorage/v2/samples/os-quota-sets/quotas-show-response.json b/api-ref/source/blockstorage/v2/samples/os-quota-sets/quotas-show-response.json new file mode 100644 index 000000000..6c267112c --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/os-quota-sets/quotas-show-response.json @@ -0,0 +1,7 @@ +{ + "quota_set": { + "gigabytes": 5, + "snapshots": 10, + "volumes": 20 + } +} diff --git a/api-ref/source/blockstorage/v2/samples/os-quota-sets/quotas-show-response.xml b/api-ref/source/blockstorage/v2/samples/os-quota-sets/quotas-show-response.xml new file mode 100644 index 000000000..b63b30b08 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/os-quota-sets/quotas-show-response.xml @@ -0,0 +1,6 @@ + + + 5 + 10 + 20 + diff --git a/api-ref/source/blockstorage/v2/samples/os-quota-sets/quotas-update-request.json b/api-ref/source/blockstorage/v2/samples/os-quota-sets/quotas-update-request.json new file mode 100644 index 000000000..9ab32c11c --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/os-quota-sets/quotas-update-request.json @@ -0,0 +1,5 @@ +{ + "quota_set": { + "snapshots": 45 + } +} diff --git a/api-ref/source/blockstorage/v2/samples/os-quota-sets/quotas-update-request.xml b/api-ref/source/blockstorage/v2/samples/os-quota-sets/quotas-update-request.xml new file mode 100644 index 000000000..ccf34efa0 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/os-quota-sets/quotas-update-request.xml @@ -0,0 +1,4 @@ + + + 45 + diff --git a/api-ref/source/blockstorage/v2/samples/os-quota-sets/quotas-update-response.json b/api-ref/source/blockstorage/v2/samples/os-quota-sets/quotas-update-response.json new file mode 100644 index 000000000..9ab32c11c --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/os-quota-sets/quotas-update-response.json @@ -0,0 +1,5 @@ +{ + "quota_set": { + "snapshots": 45 + } +} diff --git a/api-ref/source/blockstorage/v2/samples/os-quota-sets/quotas-update-response.xml b/api-ref/source/blockstorage/v2/samples/os-quota-sets/quotas-update-response.xml new file mode 100644 index 000000000..b63b30b08 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/os-quota-sets/quotas-update-response.xml @@ -0,0 +1,6 @@ + + + 5 + 10 + 20 + diff --git a/api-ref/source/blockstorage/v2/samples/os-quota-sets/quotas-user-show-detailed-response.json b/api-ref/source/blockstorage/v2/samples/os-quota-sets/quotas-user-show-detailed-response.json new file mode 100644 index 000000000..79609eb84 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/os-quota-sets/quotas-user-show-detailed-response.json @@ -0,0 +1,19 @@ +{ + "quota_set": { + "gigabytes": { + "in_use": 100, + "limit": -1, + "reserved": 0 + }, + "snapshots": { + "in_use": 12, + "limit": -1, + "reserved": 0 + }, + "volumes": { + "in_use": 1, + "limit": -1, + "reserved": 0 + } + } +} diff --git a/api-ref/source/blockstorage/v2/samples/os-quota-sets/quotas-user-show-response.json b/api-ref/source/blockstorage/v2/samples/os-quota-sets/quotas-user-show-response.json new file mode 100644 index 000000000..6c267112c --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/os-quota-sets/quotas-user-show-response.json @@ -0,0 +1,7 @@ +{ + "quota_set": { + "gigabytes": 5, + "snapshots": 10, + "volumes": 20 + } +} diff --git a/api-ref/source/blockstorage/v2/samples/os-quota-sets/quotas-user-show-response.xml b/api-ref/source/blockstorage/v2/samples/os-quota-sets/quotas-user-show-response.xml new file mode 100644 index 000000000..b63b30b08 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/os-quota-sets/quotas-user-show-response.xml @@ -0,0 +1,6 @@ + + + 5 + 10 + 20 + diff --git a/api-ref/source/blockstorage/v2/samples/os-vol-image-meta/image-metadata-show-request.json b/api-ref/source/blockstorage/v2/samples/os-vol-image-meta/image-metadata-show-request.json new file mode 100644 index 000000000..f84e8261d --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/os-vol-image-meta/image-metadata-show-request.json @@ -0,0 +1,18 @@ +{ + "volume": { + "host": "geraint-VirtualBox", + "ref": { + "source-volume-name": "existingLV", + "source-volume-id": "1234" + }, + "name": "New Volume", + "availability_zone": "az2", + "description": "Volume imported from existingLV", + "volume_type": null, + "bootable": true, + "metadata": { + "key1": "value1", + "key2": "value2" + } + } +} diff --git a/api-ref/source/blockstorage/v2/samples/os-vol-image-meta/image-metadata-show-response.json b/api-ref/source/blockstorage/v2/samples/os-vol-image-meta/image-metadata-show-response.json new file mode 100644 index 000000000..343ca66bc --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/os-vol-image-meta/image-metadata-show-response.json @@ -0,0 +1,33 @@ +{ + "volume": { + "status": "creating", + "user_id": "eae1472b5fc5496998a3d06550929e7e", + "attachments": [], + "links": [ + { + "href": "http://10.0.2.15:8776/v2/87c8522052ca4eed98bc672b4c1a3ddb/volumes/23cf872b-c781-4cd4-847d-5f2ec8cbd91c", + "rel": "self" + }, + { + "href": "http://10.0.2.15:8776/87c8522052ca4eed98bc672b4c1a3ddb/volumes/23cf872b-c781-4cd4-847d-5f2ec8cbd91c", + "rel": "bookmark" + } + ], + "availability_zone": "az2", + "bootable": "false", + "encrypted": "false", + "created_at": "2014-07-18T00:12:54.000000", + "description": "Volume imported from existingLV", + "os-vol-tenant-attr:tenant_id": "87c8522052ca4eed98bc672b4c1a3ddb", + "volume_type": null, + "name": "New Volume", + "source_volid": null, + "snapshot_id": null, + "metadata": { + "key2": "value2", + "key1": "value1" + }, + "id": "23cf872b-c781-4cd4-847d-5f2ec8cbd91c", + "size": 0 + } +} diff --git a/api-ref/source/blockstorage/v2/samples/os-volume-manage/volume-manage-request.json b/api-ref/source/blockstorage/v2/samples/os-volume-manage/volume-manage-request.json new file mode 100644 index 000000000..f84e8261d --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/os-volume-manage/volume-manage-request.json @@ -0,0 +1,18 @@ +{ + "volume": { + "host": "geraint-VirtualBox", + "ref": { + "source-volume-name": "existingLV", + "source-volume-id": "1234" + }, + "name": "New Volume", + "availability_zone": "az2", + "description": "Volume imported from existingLV", + "volume_type": null, + "bootable": true, + "metadata": { + "key1": "value1", + "key2": "value2" + } + } +} diff --git a/api-ref/source/blockstorage/v2/samples/os-volume-manage/volume-manage-response.json b/api-ref/source/blockstorage/v2/samples/os-volume-manage/volume-manage-response.json new file mode 100644 index 000000000..343ca66bc --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/os-volume-manage/volume-manage-response.json @@ -0,0 +1,33 @@ +{ + "volume": { + "status": "creating", + "user_id": "eae1472b5fc5496998a3d06550929e7e", + "attachments": [], + "links": [ + { + "href": "http://10.0.2.15:8776/v2/87c8522052ca4eed98bc672b4c1a3ddb/volumes/23cf872b-c781-4cd4-847d-5f2ec8cbd91c", + "rel": "self" + }, + { + "href": "http://10.0.2.15:8776/87c8522052ca4eed98bc672b4c1a3ddb/volumes/23cf872b-c781-4cd4-847d-5f2ec8cbd91c", + "rel": "bookmark" + } + ], + "availability_zone": "az2", + "bootable": "false", + "encrypted": "false", + "created_at": "2014-07-18T00:12:54.000000", + "description": "Volume imported from existingLV", + "os-vol-tenant-attr:tenant_id": "87c8522052ca4eed98bc672b4c1a3ddb", + "volume_type": null, + "name": "New Volume", + "source_volid": null, + "snapshot_id": null, + "metadata": { + "key2": "value2", + "key1": "value1" + }, + "id": "23cf872b-c781-4cd4-847d-5f2ec8cbd91c", + "size": 0 + } +} diff --git a/api-ref/source/blockstorage/v2/samples/os-volume-transfer/volume-transfer-accept-request.json b/api-ref/source/blockstorage/v2/samples/os-volume-transfer/volume-transfer-accept-request.json new file mode 100644 index 000000000..3399f1e0c --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/os-volume-transfer/volume-transfer-accept-request.json @@ -0,0 +1,5 @@ +{ + "accept": { + "auth_key": "9266c59563c84664" + } +} diff --git a/api-ref/source/blockstorage/v2/samples/os-volume-transfer/volume-transfer-accept-response.json b/api-ref/source/blockstorage/v2/samples/os-volume-transfer/volume-transfer-accept-response.json new file mode 100644 index 000000000..bee4d4ae2 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/os-volume-transfer/volume-transfer-accept-response.json @@ -0,0 +1,17 @@ +{ + "transfer": { + "id": "cac5c677-73a9-4288-bb9c-b2ebfb547377", + "name": "first volume transfer", + "volume_id": "894623a6-e901-4312-aa06-4275e6321cce", + "links": [ + { + "href": "http://localhost/v2/firstproject/volumes/1", + "rel": "self" + }, + { + "href": "http://localhost/firstproject/volumes/1", + "rel": "bookmark" + } + ] + } +} diff --git a/api-ref/source/blockstorage/v2/samples/os-volume-transfer/volume-transfer-create-request.json b/api-ref/source/blockstorage/v2/samples/os-volume-transfer/volume-transfer-create-request.json new file mode 100644 index 000000000..f517b7498 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/os-volume-transfer/volume-transfer-create-request.json @@ -0,0 +1,6 @@ +{ + "transfer": { + "volume_id": "c86b9af4-151d-4ead-b62c-5fb967af0e37", + "name": "first volume" + } +} diff --git a/api-ref/source/blockstorage/v2/samples/os-volume-transfer/volume-transfer-create-response.json b/api-ref/source/blockstorage/v2/samples/os-volume-transfer/volume-transfer-create-response.json new file mode 100644 index 000000000..4a5fb16ca --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/os-volume-transfer/volume-transfer-create-response.json @@ -0,0 +1,19 @@ +{ + "transfer": { + "id": "1a7059f5-8ed7-45b7-8d05-2811e5d09f24", + "created_at": "2015-02-25T03:56:53.081642", + "name": "first volume", + "volume_id": "c86b9af4-151d-4ead-b62c-5fb967af0e37", + "auth_key": "9266c59563c84664", + "links": [ + { + "href": "http://localhost/v2/firstproject/volumes/3", + "rel": "self" + }, + { + "href": "http://localhost/firstproject/volumes/3", + "rel": "bookmark" + } + ] + } +} diff --git a/api-ref/source/blockstorage/v2/samples/os-volume-transfer/volume-transfer-show-response.json b/api-ref/source/blockstorage/v2/samples/os-volume-transfer/volume-transfer-show-response.json new file mode 100644 index 000000000..c73b62cc1 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/os-volume-transfer/volume-transfer-show-response.json @@ -0,0 +1,18 @@ +{ + "transfer": { + "id": "cac5c677-73a9-4288-bb9c-b2ebfb547377", + "created_at": "2015-02-25T03:56:53.081642", + "name": "first volume transfer", + "volume_id": "894623a6-e901-4312-aa06-4275e6321cce", + "links": [ + { + "href": "http://localhost/v2/firstproject/volumes/1", + "rel": "self" + }, + { + "href": "http://localhost/firstproject/volumes/1", + "rel": "bookmark" + } + ] + } +} diff --git a/api-ref/source/blockstorage/v2/samples/os-volume-transfer/volume-transfers-list-detailed-response.json b/api-ref/source/blockstorage/v2/samples/os-volume-transfer/volume-transfers-list-detailed-response.json new file mode 100644 index 000000000..9e5d8c0a1 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/os-volume-transfer/volume-transfers-list-detailed-response.json @@ -0,0 +1,36 @@ +{ + "transfers": [ + { + "id": "cac5c677-73a9-4288-bb9c-b2ebfb547377", + "created_at": "2015-02-25T03:56:53.081642", + "name": "first volume transfer", + "volume_id": "894623a6-e901-4312-aa06-4275e6321cce", + "links": [ + { + "href": "http://localhost/v2/firstproject/volumes/1", + "rel": "self" + }, + { + "href": "http://localhost/firstproject/volumes/1", + "rel": "bookmark" + } + ] + }, + { + "id": "f26c0dee-d20d-4e80-8dee-a8d91b9742a1", + "created_at": "2015-03-25T03:56:53.081642", + "name": "second volume transfer", + "volume_id": "673db275-379f-41af-8371-e1652132b4c1", + "links": [ + { + "href": "http://localhost/v2/firstproject/volumes/2", + "rel": "self" + }, + { + "href": "http://localhost/firstproject/volumes/2", + "rel": "bookmark" + } + ] + } + ] +} diff --git a/api-ref/source/blockstorage/v2/samples/os-volume-transfer/volume-transfers-list-response.json b/api-ref/source/blockstorage/v2/samples/os-volume-transfer/volume-transfers-list-response.json new file mode 100644 index 000000000..02711d1ed --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/os-volume-transfer/volume-transfers-list-response.json @@ -0,0 +1,34 @@ +{ + "transfers": [ + { + "id": "cac5c677-73a9-4288-bb9c-b2ebfb547377", + "name": "first volume transfer", + "volume_id": "894623a6-e901-4312-aa06-4275e6321cce", + "links": [ + { + "href": "http://localhost/v2/firstproject/volumes/1", + "rel": "self" + }, + { + "href": "http://localhost/firstproject/volumes/1", + "rel": "bookmark" + } + ] + }, + { + "id": "f26c0dee-d20d-4e80-8dee-a8d91b9742a1", + "name": "second volume transfer", + "volume_id": "673db275-379f-41af-8371-e1652132b4c1", + "links": [ + { + "href": "http://localhost/v2/firstproject/volumes/2", + "rel": "self" + }, + { + "href": "http://localhost/firstproject/volumes/2", + "rel": "bookmark" + } + ] + } + ] +} diff --git a/api-ref/source/blockstorage/v2/samples/qos-specs/qos-create-request.json b/api-ref/source/blockstorage/v2/samples/qos-specs/qos-create-request.json new file mode 100644 index 000000000..c0db909bd --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/qos-specs/qos-create-request.json @@ -0,0 +1,7 @@ +{ + "qos_specs": { + "availability": "100", + "name": "reliability-spec", + "numberOfFailures": "0" + } +} diff --git a/api-ref/source/blockstorage/v2/samples/qos-specs/qos-create-request.xml b/api-ref/source/blockstorage/v2/samples/qos-specs/qos-create-request.xml new file mode 100644 index 000000000..ac772236c --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/qos-specs/qos-create-request.xml @@ -0,0 +1,2 @@ + + diff --git a/api-ref/source/blockstorage/v2/samples/qos-specs/qos-create-response.json b/api-ref/source/blockstorage/v2/samples/qos-specs/qos-create-response.json new file mode 100644 index 000000000..8fbf23376 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/qos-specs/qos-create-response.json @@ -0,0 +1,21 @@ +{ + "qos_specs": { + "specs": { + "numberOfFailures": "0", + "availability": "100" + }, + "consumer": "back-end", + "name": "reliability-spec", + "id": "599ef437-1c99-42ec-9fc6-239d0519fef1" + }, + "links": [ + { + "href": "http://23.253.248.171:8776/v2/bab7d5c60cd041a0a36f7c4b6e1dd978/qos_specs/599ef437-1c99-42ec-9fc6-239d0519fef1", + "rel": "self" + }, + { + "href": "http://23.253.248.171:8776/bab7d5c60cd041a0a36f7c4b6e1dd978/qos_specs/599ef437-1c99-42ec-9fc6-239d0519fef1", + "rel": "bookmark" + } + ] +} diff --git a/api-ref/source/blockstorage/v2/samples/qos-specs/qos-create-response.xml b/api-ref/source/blockstorage/v2/samples/qos-specs/qos-create-response.xml new file mode 100644 index 000000000..b23932486 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/qos-specs/qos-create-response.xml @@ -0,0 +1,9 @@ + + + + + 0 + 100 + + + diff --git a/api-ref/source/blockstorage/v2/samples/qos-specs/qos-list-response.json b/api-ref/source/blockstorage/v2/samples/qos-specs/qos-list-response.json new file mode 100644 index 000000000..92f2a6216 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/qos-specs/qos-list-response.json @@ -0,0 +1,22 @@ +{ + "qos_specs": [ + { + "specs": { + "availability": "100", + "numberOfFailures": "0" + }, + "consumer": "back-end", + "name": "reliability-spec", + "id": "0388d6c6-d5d4-42a3-b289-95205c50dd15" + }, + { + "specs": { + "delay": "0", + "throughput": "100" + }, + "consumer": "back-end", + "name": "performance-spec", + "id": "ecfc6e2e-7117-44a4-8eec-f84d04f531a8" + } + ] +} diff --git a/api-ref/source/blockstorage/v2/samples/qos-specs/qos-list-response.xml b/api-ref/source/blockstorage/v2/samples/qos-specs/qos-list-response.xml new file mode 100644 index 000000000..c77e7847f --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/qos-specs/qos-list-response.xml @@ -0,0 +1,19 @@ + + + + + 100 + 0 + + + + + 0 + 100 + + + diff --git a/api-ref/source/blockstorage/v2/samples/qos-specs/qos-show-response.json b/api-ref/source/blockstorage/v2/samples/qos-specs/qos-show-response.json new file mode 100644 index 000000000..d9a1dc191 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/qos-specs/qos-show-response.json @@ -0,0 +1,21 @@ +{ + "qos_specs": { + "specs": { + "availability": "100", + "numberOfFailures": "0" + }, + "consumer": "back-end", + "name": "reliability-spec", + "id": "0388d6c6-d5d4-42a3-b289-95205c50dd15" + }, + "links": [ + { + "href": "http://23.253.228.211:8776/v2/e1cf63117ae74309a5bcc2002a23be8b/qos_specs/0388d6c6-d5d4-42a3-b289-95205c50dd15", + "rel": "self" + }, + { + "href": "http://23.253.228.211:8776/e1cf63117ae74309a5bcc2002a23be8b/qos_specs/0388d6c6-d5d4-42a3-b289-95205c50dd15", + "rel": "bookmark" + } + ] +} diff --git a/api-ref/source/blockstorage/v2/samples/qos-specs/qos-show-response.xml b/api-ref/source/blockstorage/v2/samples/qos-specs/qos-show-response.xml new file mode 100644 index 000000000..7aee8126c --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/qos-specs/qos-show-response.xml @@ -0,0 +1,11 @@ + + + + + 100 + 0 + + + diff --git a/api-ref/source/blockstorage/v2/samples/qos-specs/qos-unset-request.json b/api-ref/source/blockstorage/v2/samples/qos-specs/qos-unset-request.json new file mode 100644 index 000000000..4193b7392 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/qos-specs/qos-unset-request.json @@ -0,0 +1,5 @@ +{ + "keys": [ + "key1" + ] +} diff --git a/api-ref/source/blockstorage/v2/samples/qos-specs/qos-unset-request.xml b/api-ref/source/blockstorage/v2/samples/qos-specs/qos-unset-request.xml new file mode 100644 index 000000000..c6f10f9f3 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/qos-specs/qos-unset-request.xml @@ -0,0 +1,4 @@ + + + + diff --git a/api-ref/source/blockstorage/v2/samples/qos-specs/qos-update-request.json b/api-ref/source/blockstorage/v2/samples/qos-specs/qos-update-request.json new file mode 100644 index 000000000..1d3987705 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/qos-specs/qos-update-request.json @@ -0,0 +1,5 @@ +{ + "qos_specs": { + "delay": "1" + } +} diff --git a/api-ref/source/blockstorage/v2/samples/qos-specs/qos-update-request.xml b/api-ref/source/blockstorage/v2/samples/qos-specs/qos-update-request.xml new file mode 100644 index 000000000..78524c7ca --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/qos-specs/qos-update-request.xml @@ -0,0 +1,2 @@ + + diff --git a/api-ref/source/blockstorage/v2/samples/qos-specs/qos-update-response.json b/api-ref/source/blockstorage/v2/samples/qos-specs/qos-update-response.json new file mode 100644 index 000000000..1d3987705 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/qos-specs/qos-update-response.json @@ -0,0 +1,5 @@ +{ + "qos_specs": { + "delay": "1" + } +} diff --git a/api-ref/source/blockstorage/v2/samples/qos-specs/qos-update-response.xml b/api-ref/source/blockstorage/v2/samples/qos-specs/qos-update-response.xml new file mode 100644 index 000000000..ed8dd0578 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/qos-specs/qos-update-response.xml @@ -0,0 +1,4 @@ + + + + diff --git a/api-ref/source/blockstorage/v2/samples/qos-specs/qos_show_response.json b/api-ref/source/blockstorage/v2/samples/qos-specs/qos_show_response.json new file mode 100644 index 000000000..4a5d9db6a --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/qos-specs/qos_show_response.json @@ -0,0 +1,9 @@ +{ + "qos_associations": [ + { + "association_type": "volume_type", + "name": "reliability-type", + "id": "a12983c2-83bd-4afa-be9f-ad796573ead6" + } + ] +} diff --git a/api-ref/source/blockstorage/v2/samples/qos-specs/qos_show_response.xml b/api-ref/source/blockstorage/v2/samples/qos-specs/qos_show_response.xml new file mode 100644 index 000000000..e208b8a20 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/qos-specs/qos_show_response.xml @@ -0,0 +1,6 @@ + + + + diff --git a/api-ref/source/blockstorage/v2/samples/scheduler-stats/pools-list-detailed-response.json b/api-ref/source/blockstorage/v2/samples/scheduler-stats/pools-list-detailed-response.json new file mode 100644 index 000000000..3fc28a299 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/scheduler-stats/pools-list-detailed-response.json @@ -0,0 +1,30 @@ +{ + "pools": [ + { + "name": "pool1", + "capabilities": { + "updated": "2014-10-28T00:00:00-00:00", + "total_capacity": 1024, + "free_capacity": 100, + "volume_backend_name": "pool1", + "reserved_percentage": 0, + "driver_version": "1.0.0", + "storage_protocol": "iSCSI", + "QoS_support": false + } + }, + { + "name": "pool2", + "capabilities": { + "updated": "2014-10-28T00:00:00-00:00", + "total_capacity": 512, + "free_capacity": 200, + "volume_backend_name": "pool2", + "reserved_percentage": 0, + "driver_version": "1.0.1", + "storage_protocol": "iSER", + "QoS_support": true + } + } + ] +} diff --git a/api-ref/source/blockstorage/v2/samples/user-quotas-show-response.json b/api-ref/source/blockstorage/v2/samples/user-quotas-show-response.json new file mode 100644 index 000000000..239c64d23 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/user-quotas-show-response.json @@ -0,0 +1,17 @@ +{ + "quota_set": { + "cores": 20, + "fixed_ips": -1, + "floating_ips": 10, + "id": "fake_tenant", + "injected_file_content_bytes": 10240, + "injected_file_path_bytes": 255, + "injected_files": 5, + "instances": 10, + "key_pairs": 100, + "metadata_items": 128, + "ram": 51200, + "security_group_rules": 20, + "security_groups": 10 + } +} diff --git a/api-ref/source/blockstorage/v2/samples/user-quotas-show-response.xml b/api-ref/source/blockstorage/v2/samples/user-quotas-show-response.xml new file mode 100644 index 000000000..76a9292c1 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/user-quotas-show-response.xml @@ -0,0 +1,15 @@ + + + 20 + -1 + 10 + 10240 + 255 + 5 + 10 + 100 + 128 + 51200 + 20 + 10 + diff --git a/api-ref/source/blockstorage/v2/samples/user-quotas-update-request.json b/api-ref/source/blockstorage/v2/samples/user-quotas-update-request.json new file mode 100644 index 000000000..6e5195f9a --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/user-quotas-update-request.json @@ -0,0 +1,6 @@ +{ + "quota_set": { + "force": true, + "instances": 9 + } +} diff --git a/api-ref/source/blockstorage/v2/samples/user-quotas-update-request.xml b/api-ref/source/blockstorage/v2/samples/user-quotas-update-request.xml new file mode 100644 index 000000000..dd58ed24d --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/user-quotas-update-request.xml @@ -0,0 +1,5 @@ + + + true + 9 + diff --git a/api-ref/source/blockstorage/v2/samples/user-quotas-update-response.json b/api-ref/source/blockstorage/v2/samples/user-quotas-update-response.json new file mode 100644 index 000000000..553933292 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/user-quotas-update-response.json @@ -0,0 +1,16 @@ +{ + "quota_set": { + "cores": 20, + "floating_ips": 10, + "fixed_ips": -1, + "injected_file_content_bytes": 10240, + "injected_file_path_bytes": 255, + "injected_files": 5, + "instances": 9, + "key_pairs": 100, + "metadata_items": 128, + "ram": 51200, + "security_group_rules": 20, + "security_groups": 10 + } +} diff --git a/api-ref/source/blockstorage/v2/samples/user-quotas-update-response.xml b/api-ref/source/blockstorage/v2/samples/user-quotas-update-response.xml new file mode 100644 index 000000000..43c36c7da --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/user-quotas-update-response.xml @@ -0,0 +1,15 @@ + + + 20 + 10 + -1 + 10240 + 255 + 5 + 9 + 100 + 128 + 51200 + 20 + 10 + diff --git a/api-ref/source/blockstorage/v2/samples/volumes/extensions-list-response.json b/api-ref/source/blockstorage/v2/samples/volumes/extensions-list-response.json new file mode 100644 index 000000000..55003a906 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/extensions-list-response.json @@ -0,0 +1,212 @@ +{ + "extensions": [ + { + "updated": "2013-04-18T00:00:00+00:00", + "name": "SchedulerHints", + "links": [], + "namespace": "http://docs.openstack.org/block-service/ext/scheduler-hints/api/v2", + "alias": "OS-SCH-HNT", + "description": "Pass arbitrary key/value pairs to the scheduler." + }, + { + "updated": "2011-06-29T00:00:00+00:00", + "name": "Hosts", + "links": [], + "namespace": "http://docs.openstack.org/volume/ext/hosts/api/v1.1", + "alias": "os-hosts", + "description": "Admin-only host administration." + }, + { + "updated": "2011-11-03T00:00:00+00:00", + "name": "VolumeTenantAttribute", + "links": [], + "namespace": "http://docs.openstack.org/volume/ext/volume_tenant_attribute/api/v1", + "alias": "os-vol-tenant-attr", + "description": "Expose the internal project_id as an attribute of a volume." + }, + { + "updated": "2011-08-08T00:00:00+00:00", + "name": "Quotas", + "links": [], + "namespace": "http://docs.openstack.org/volume/ext/quotas-sets/api/v1.1", + "alias": "os-quota-sets", + "description": "Quota management support." + }, + { + "updated": "2011-08-24T00:00:00+00:00", + "name": "TypesManage", + "links": [], + "namespace": "http://docs.openstack.org/volume/ext/types-manage/api/v1", + "alias": "os-types-manage", + "description": "Types manage support." + }, + { + "updated": "2013-07-10T00:00:00+00:00", + "name": "VolumeEncryptionMetadata", + "links": [], + "namespace": "http://docs.openstack.org/volume/ext/os-volume-encryption-metadata/api/v1", + "alias": "os-volume-encryption-metadata", + "description": "Volume encryption metadata retrieval support." + }, + { + "updated": "2012-12-12T00:00:00+00:00", + "name": "Backups", + "links": [], + "namespace": "http://docs.openstack.org/volume/ext/backups/api/v1", + "alias": "backups", + "description": "Backups support." + }, + { + "updated": "2013-07-16T00:00:00+00:00", + "name": "SnapshotActions", + "links": [], + "namespace": "http://docs.openstack.org/volume/ext/snapshot-actions/api/v1.1", + "alias": "os-snapshot-actions", + "description": "Enable snapshot manager actions." + }, + { + "updated": "2012-05-31T00:00:00+00:00", + "name": "VolumeActions", + "links": [], + "namespace": "http://docs.openstack.org/volume/ext/volume-actions/api/v1.1", + "alias": "os-volume-actions", + "description": "Enable volume actions\n " + }, + { + "updated": "2013-10-03T00:00:00+00:00", + "name": "UsedLimits", + "links": [], + "namespace": "http://docs.openstack.org/volume/ext/used-limits/api/v1.1", + "alias": "os-used-limits", + "description": "Provide data on limited resources that are being used." + }, + { + "updated": "2012-05-31T00:00:00+00:00", + "name": "VolumeUnmanage", + "links": [], + "namespace": "http://docs.openstack.org/volume/ext/volume-unmanage/api/v1.1", + "alias": "os-volume-unmanage", + "description": "Enable volume unmanage operation." + }, + { + "updated": "2011-11-03T00:00:00+00:00", + "name": "VolumeHostAttribute", + "links": [], + "namespace": "http://docs.openstack.org/volume/ext/volume_host_attribute/api/v1", + "alias": "os-vol-host-attr", + "description": "Expose host as an attribute of a volume." + }, + { + "updated": "2013-07-01T00:00:00+00:00", + "name": "VolumeTypeEncryption", + "links": [], + "namespace": "http://docs.openstack.org/volume/ext/volume-type-encryption/api/v1", + "alias": "encryption", + "description": "Encryption support for volume types." + }, + { + "updated": "2013-06-27T00:00:00+00:00", + "name": "AvailabilityZones", + "links": [], + "namespace": "http://docs.openstack.org/volume/ext/os-availability-zone/api/v1", + "alias": "os-availability-zone", + "description": "Describe Availability Zones." + }, + { + "updated": "2013-08-02T00:00:00+00:00", + "name": "Qos_specs_manage", + "links": [], + "namespace": "http://docs.openstack.org/volume/ext/qos-specs/api/v1", + "alias": "qos-specs", + "description": "QoS specs support." + }, + { + "updated": "2011-08-24T00:00:00+00:00", + "name": "TypesExtraSpecs", + "links": [], + "namespace": "http://docs.openstack.org/volume/ext/types-extra-specs/api/v1", + "alias": "os-types-extra-specs", + "description": "Type extra specs support." + }, + { + "updated": "2013-08-08T00:00:00+00:00", + "name": "VolumeMigStatusAttribute", + "links": [], + "namespace": "http://docs.openstack.org/volume/ext/volume_mig_status_attribute/api/v1", + "alias": "os-vol-mig-status-attr", + "description": "Expose migration_status as an attribute of a volume." + }, + { + "updated": "2012-08-13T00:00:00+00:00", + "name": "CreateVolumeExtension", + "links": [], + "namespace": "http://docs.openstack.org/volume/ext/image-create/api/v1", + "alias": "os-image-create", + "description": "Allow creating a volume from an image in the Create Volume v1 API." + }, + { + "updated": "2014-01-10T00:00:00-00:00", + "name": "ExtendedServices", + "links": [], + "namespace": "http://docs.openstack.org/volume/ext/extended_services/api/v2", + "alias": "os-extended-services", + "description": "Extended services support." + }, + { + "updated": "2012-06-19T00:00:00+00:00", + "name": "ExtendedSnapshotAttributes", + "links": [], + "namespace": "http://docs.openstack.org/volume/ext/extended_snapshot_attributes/api/v1", + "alias": "os-extended-snapshot-attributes", + "description": "Extended SnapshotAttributes support." + }, + { + "updated": "2012-12-07T00:00:00+00:00", + "name": "VolumeImageMetadata", + "links": [], + "namespace": "http://docs.openstack.org/volume/ext/volume_image_metadata/api/v1", + "alias": "os-vol-image-meta", + "description": "Show image metadata associated with the volume." + }, + { + "updated": "2012-03-12T00:00:00+00:00", + "name": "QuotaClasses", + "links": [], + "namespace": "http://docs.openstack.org/volume/ext/quota-classes-sets/api/v1.1", + "alias": "os-quota-class-sets", + "description": "Quota classes management support." + }, + { + "updated": "2013-05-29T00:00:00+00:00", + "name": "VolumeTransfer", + "links": [], + "namespace": "http://docs.openstack.org/volume/ext/volume-transfer/api/v1.1", + "alias": "os-volume-transfer", + "description": "Volume transfer management support." + }, + { + "updated": "2014-02-10T00:00:00+00:00", + "name": "VolumeManage", + "links": [], + "namespace": "http://docs.openstack.org/volume/ext/os-volume-manage/api/v1", + "alias": "os-volume-manage", + "description": "Allows existing backend storage to be 'managed' by Cinder." + }, + { + "updated": "2012-08-25T00:00:00+00:00", + "name": "AdminActions", + "links": [], + "namespace": "http://docs.openstack.org/volume/ext/admin-actions/api/v1.1", + "alias": "os-admin-actions", + "description": "Enable admin actions." + }, + { + "updated": "2012-10-28T00:00:00-00:00", + "name": "Services", + "links": [], + "namespace": "http://docs.openstack.org/volume/ext/services/api/v2", + "alias": "os-services", + "description": "Services support." + } + ] +} diff --git a/api-ref/source/blockstorage/v2/samples/volumes/extensions-list-response.xml b/api-ref/source/blockstorage/v2/samples/volumes/extensions-list-response.xml new file mode 100644 index 000000000..969efec6b --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/extensions-list-response.xml @@ -0,0 +1,165 @@ + + + + Pass arbitrary key/value pairs to the + scheduler. + + + Admin-only host administration. + + + Expose the internal project_id as an attribute of + a volume. + + + Quota management support. + + + Types manage support. + + + Volume encryption metadata retrieval + support. + + + Backups support. + + + Enable snapshot manager actions. + + + Enable volume actions + + + Provide data on limited resources that are being + used. + + + Enable volume unmanage operation. + + + Expose host as an attribute of a + volume. + + + Encryption support for volume + types. + + + Describe Availability Zones. + + + QoS specs support. + + + Type extra specs support. + + + Expose migration_status as an attribute of a + volume. + + + Allow creating a volume from an image in the + Create Volume v1 API. + + + Extended services support. + + + Extended SnapshotAttributes + support. + + + Show image metadata associated with the + volume. + + + Quota classes management support. + + + Volume transfer management support. + + + Allows existing back end storage to be 'managed' + by cinder. + + + Enable admin actions. + + + Services support. + + diff --git a/api-ref/source/blockstorage/v2/samples/volumes/snapshot-create-request.json b/api-ref/source/blockstorage/v2/samples/volumes/snapshot-create-request.json new file mode 100644 index 000000000..3c0fe5d88 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/snapshot-create-request.json @@ -0,0 +1,8 @@ +{ + "snapshot": { + "name": "snap-001", + "description": "Daily backup", + "volume_id": "5aa119a8-d25b-45a7-8d1b-88e127885635", + "force": true + } +} diff --git a/api-ref/source/blockstorage/v2/samples/volumes/snapshot-create-request.xml b/api-ref/source/blockstorage/v2/samples/volumes/snapshot-create-request.xml new file mode 100644 index 000000000..2b56fde55 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/snapshot-create-request.xml @@ -0,0 +1,5 @@ + + diff --git a/api-ref/source/blockstorage/v2/samples/volumes/snapshot-create-response.json b/api-ref/source/blockstorage/v2/samples/volumes/snapshot-create-response.json new file mode 100644 index 000000000..d8901e88d --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/snapshot-create-response.json @@ -0,0 +1,12 @@ +{ + "snapshot": { + "status": "creating", + "description": "Daily backup", + "created_at": "2013-02-25T03:56:53.081642", + "metadata": {}, + "volume_id": "5aa119a8-d25b-45a7-8d1b-88e127885635", + "size": 1, + "id": "ffa9bc5e-1172-4021-acaf-cdcd78a9584d", + "name": "snap-001" + } +} diff --git a/api-ref/source/blockstorage/v2/samples/volumes/snapshot-create-response.xml b/api-ref/source/blockstorage/v2/samples/volumes/snapshot-create-response.xml new file mode 100644 index 000000000..1f72e6993 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/snapshot-create-response.xml @@ -0,0 +1,7 @@ + + + + diff --git a/api-ref/source/blockstorage/v2/samples/volumes/snapshot-metadata-show-response.json b/api-ref/source/blockstorage/v2/samples/volumes/snapshot-metadata-show-response.json new file mode 100644 index 000000000..cbfe4ef7a --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/snapshot-metadata-show-response.json @@ -0,0 +1,5 @@ +{ + "metadata": { + "name": "test" + } +} diff --git a/api-ref/source/blockstorage/v2/samples/volumes/snapshot-metadata-show-response.xml b/api-ref/source/blockstorage/v2/samples/volumes/snapshot-metadata-show-response.xml new file mode 100644 index 000000000..f62f5b6b9 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/snapshot-metadata-show-response.xml @@ -0,0 +1,4 @@ + + + test + diff --git a/api-ref/source/blockstorage/v2/samples/volumes/snapshot-metadata-update-request.json b/api-ref/source/blockstorage/v2/samples/volumes/snapshot-metadata-update-request.json new file mode 100644 index 000000000..4373b0018 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/snapshot-metadata-update-request.json @@ -0,0 +1,5 @@ +{ + "metadata": { + "key": "v2" + } +} diff --git a/api-ref/source/blockstorage/v2/samples/volumes/snapshot-metadata-update-request.xml b/api-ref/source/blockstorage/v2/samples/volumes/snapshot-metadata-update-request.xml new file mode 100644 index 000000000..ceeb8f031 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/snapshot-metadata-update-request.xml @@ -0,0 +1,4 @@ + + + v2 + diff --git a/api-ref/source/blockstorage/v2/samples/volumes/snapshot-metadata-update-response.json b/api-ref/source/blockstorage/v2/samples/volumes/snapshot-metadata-update-response.json new file mode 100644 index 000000000..4373b0018 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/snapshot-metadata-update-response.json @@ -0,0 +1,5 @@ +{ + "metadata": { + "key": "v2" + } +} diff --git a/api-ref/source/blockstorage/v2/samples/volumes/snapshot-metadata-update-response.xml b/api-ref/source/blockstorage/v2/samples/volumes/snapshot-metadata-update-response.xml new file mode 100644 index 000000000..6d00cdef1 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/snapshot-metadata-update-response.xml @@ -0,0 +1,4 @@ + + + v2 + diff --git a/api-ref/source/blockstorage/v2/samples/volumes/snapshot-show-response.json b/api-ref/source/blockstorage/v2/samples/volumes/snapshot-show-response.json new file mode 100644 index 000000000..25a8c6c9d --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/snapshot-show-response.json @@ -0,0 +1,14 @@ +{ + "snapshot": { + "status": "available", + "os-extended-snapshot-attributes:progress": "100%", + "description": "Daily backup", + "created_at": "2013-02-25T04:13:17.000000", + "metadata": {}, + "volume_id": "5aa119a8-d25b-45a7-8d1b-88e127885635", + "os-extended-snapshot-attributes:project_id": "0c2eba2c5af04d3f9e9d0d410b371fde", + "size": 1, + "id": "2bb856e1-b3d8-4432-a858-09e4ce939389", + "name": "snap-001" + } +} diff --git a/api-ref/source/blockstorage/v2/samples/volumes/snapshot-show-response.xml b/api-ref/source/blockstorage/v2/samples/volumes/snapshot-show-response.xml new file mode 100644 index 000000000..5863aa554 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/snapshot-show-response.xml @@ -0,0 +1,11 @@ + + + + diff --git a/api-ref/source/blockstorage/v2/samples/volumes/snapshot-update-request.json b/api-ref/source/blockstorage/v2/samples/volumes/snapshot-update-request.json new file mode 100644 index 000000000..0e0895717 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/snapshot-update-request.json @@ -0,0 +1,6 @@ +{ + "snapshot": { + "name": "snap-002", + "description": "This is yet, another snapshot." + } +} diff --git a/api-ref/source/blockstorage/v2/samples/volumes/snapshot-update-request.xml b/api-ref/source/blockstorage/v2/samples/volumes/snapshot-update-request.xml new file mode 100644 index 000000000..670f6e682 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/snapshot-update-request.xml @@ -0,0 +1,4 @@ + + diff --git a/api-ref/source/blockstorage/v2/samples/volumes/snapshot-update-response.json b/api-ref/source/blockstorage/v2/samples/volumes/snapshot-update-response.json new file mode 100644 index 000000000..a2fa27793 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/snapshot-update-response.json @@ -0,0 +1,11 @@ +{ + "snapshot": { + "created_at": "2013-02-20T08:11:34.000000", + "description": "This is yet, another snapshot", + "name": "snap-002", + "id": "4b502fcb-1f26-45f8-9fe5-3b9a0a52eaf2", + "size": 1, + "status": "available", + "volume_id": "2402b902-0b7a-458c-9c07-7435a826f794" + } +} diff --git a/api-ref/source/blockstorage/v2/samples/volumes/snapshot-update-response.xml b/api-ref/source/blockstorage/v2/samples/volumes/snapshot-update-response.xml new file mode 100644 index 000000000..1d09541c7 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/snapshot-update-response.xml @@ -0,0 +1,14 @@ + + + + diff --git a/api-ref/source/blockstorage/v2/samples/volumes/snapshots-list-detailed-response.json b/api-ref/source/blockstorage/v2/samples/volumes/snapshots-list-detailed-response.json new file mode 100644 index 000000000..463b98ec1 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/snapshots-list-detailed-response.json @@ -0,0 +1,18 @@ +{ + "snapshots": [ + { + "status": "available", + "metadata": { + "name": "test" + }, + "os-extended-snapshot-attributes:progress": "100%", + "name": "test-volume-snapshot", + "volume_id": "173f7b48-c4c1-4e70-9acc-086b39073506", + "os-extended-snapshot-attributes:project_id": "bab7d5c60cd041a0a36f7c4b6e1dd978", + "created_at": "2015-11-29T02:25:51.000000", + "size": 1, + "id": "b1323cda-8e4b-41c1-afc5-2fc791809c8c", + "description": "volume snapshot" + } + ] +} diff --git a/api-ref/source/blockstorage/v2/samples/volumes/snapshots-list-detailed-response.xml b/api-ref/source/blockstorage/v2/samples/volumes/snapshots-list-detailed-response.xml new file mode 100644 index 000000000..2114e0069 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/snapshots-list-detailed-response.xml @@ -0,0 +1,16 @@ + + + + + test + + + diff --git a/api-ref/source/blockstorage/v2/samples/volumes/snapshots-list-response.json b/api-ref/source/blockstorage/v2/samples/volumes/snapshots-list-response.json new file mode 100644 index 000000000..8d7e4973a --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/snapshots-list-response.json @@ -0,0 +1,16 @@ +{ + "snapshots": [ + { + "status": "available", + "metadata": { + "name": "test" + }, + "name": "test-volume-snapshot", + "volume_id": "173f7b48-c4c1-4e70-9acc-086b39073506", + "created_at": "2015-11-29T02:25:51.000000", + "size": 1, + "id": "b1323cda-8e4b-41c1-afc5-2fc791809c8c", + "description": "volume snapshot" + } + ] +} diff --git a/api-ref/source/blockstorage/v2/samples/volumes/snapshots-list-response.xml b/api-ref/source/blockstorage/v2/samples/volumes/snapshots-list-response.xml new file mode 100644 index 000000000..654189455 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/snapshots-list-response.xml @@ -0,0 +1,13 @@ + + + + + test + + + diff --git a/api-ref/source/blockstorage/v2/samples/volumes/version-show-response.json b/api-ref/source/blockstorage/v2/samples/volumes/version-show-response.json new file mode 100644 index 000000000..06ba84d07 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/version-show-response.json @@ -0,0 +1,33 @@ +{ + "version": { + "status": "CURRENT", + "updated": "2012-01-04T11:33:21Z", + "media-types": [ + { + "base": "application/xml", + "type": "application/vnd.openstack.volume+xml;version=1" + }, + { + "base": "application/json", + "type": "application/vnd.openstack.volume+json;version=1" + } + ], + "id": "v1.0", + "links": [ + { + "href": "http://23.253.228.211:8776/v1/", + "rel": "self" + }, + { + "href": "http://jorgew.github.com/block-storage-api/content/os-block-storage-1.0.pdf", + "type": "application/pdf", + "rel": "describedby" + }, + { + "href": "http://docs.rackspacecloud.com/servers/api/v1.1/application.wadl", + "type": "application/vnd.sun.wadl+xml", + "rel": "describedby" + } + ] + } +} diff --git a/api-ref/source/blockstorage/v2/samples/volumes/version-show-response.xml b/api-ref/source/blockstorage/v2/samples/volumes/version-show-response.xml new file mode 100644 index 000000000..38cecbc61 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/version-show-response.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/api-ref/source/blockstorage/v2/samples/volumes/version-v2-show-response.json b/api-ref/source/blockstorage/v2/samples/volumes/version-v2-show-response.json new file mode 100644 index 000000000..2719a8135 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/version-v2-show-response.json @@ -0,0 +1,44 @@ +{ + "choices": [ + { + "status": "SUPPORTED", + "media-types": [ + { + "base": "application/xml", + "type": "application/vnd.openstack.volume+xml;version=1" + }, + { + "base": "application/json", + "type": "application/vnd.openstack.volume+json;version=1" + } + ], + "id": "v1.0", + "links": [ + { + "href": "http://23.253.248.171:8776/v1/v2.json", + "rel": "self" + } + ] + }, + { + "status": "CURRENT", + "media-types": [ + { + "base": "application/xml", + "type": "application/vnd.openstack.volume+xml;version=1" + }, + { + "base": "application/json", + "type": "application/vnd.openstack.volume+json;version=1" + } + ], + "id": "v2.0", + "links": [ + { + "href": "http://23.253.248.171:8776/v2/v2.json", + "rel": "self" + } + ] + } + ] +} diff --git a/api-ref/source/blockstorage/v2/samples/volumes/versions-response.json b/api-ref/source/blockstorage/v2/samples/volumes/versions-response.json new file mode 100644 index 000000000..d8a0c6a63 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/versions-response.json @@ -0,0 +1,76 @@ +{ + "versions": [ + { + "status": "DEPRECATED", + "updated": "2014-06-28T12:20:21Z", + "links": [ + { + "href": "http://docs.openstack.org/", + "type": "text/html", + "rel": "describedby" + }, + { + "href": "http://10.0.2.15:8776/v1/", + "rel": "self" + } + ], + "min_version": "", + "version": "", + "media-types": [ + { + "base": "application/json", + "type": "application/vnd.openstack.volume+json;version=1" + } + ], + "id": "v1.0" + }, + { + "status": "SUPPORTED", + "updated": "2014-06-28T12:20:21Z", + "links": [ + { + "href": "http://docs.openstack.org/", + "type": "text/html", + "rel": "describedby" + }, + { + "href": "http://10.0.2.15:8776/v2/", + "rel": "self" + } + ], + "min_version": "", + "version": "", + "media-types": [ + { + "base": "application/json", + "type": "application/vnd.openstack.volume+json;version=1" + } + ], + "id": "v2.0" + }, + { + "status": "CURRENT", + "updated": "2016-02-08T12:20:21Z", + "links": [ + { + "href": "http://docs.openstack.org/", + "type": "text/html", + "rel": "describedby" + }, + { + "href": "http://10.0.2.15:8776/v3/", + "rel": "self" + } + ], + "min_version": "3.0", + "version": "{Current_Max_Version}", + "media-types": [ + { + "base": "application/json", + "type": "application/vnd.openstack.volume+json;version=1" + } + ], + "id": "v3.0" + } + ] +} diff --git a/api-ref/source/blockstorage/v2/samples/volumes/versions-response.xml b/api-ref/source/blockstorage/v2/samples/volumes/versions-response.xml new file mode 100644 index 000000000..a09fac716 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/versions-response.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/api-ref/source/blockstorage/v2/samples/volumes/volume-attach-request.json b/api-ref/source/blockstorage/v2/samples/volumes/volume-attach-request.json new file mode 100644 index 000000000..a779f9fbf --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/volume-attach-request.json @@ -0,0 +1,6 @@ +{ + "os-attach": { + "instance_uuid": "95D9EF50-507D-11E5-B970-0800200C9A66", + "mountpoint": "/dev/vdc" + } +} diff --git a/api-ref/source/blockstorage/v2/samples/volumes/volume-create-request.json b/api-ref/source/blockstorage/v2/samples/volumes/volume-create-request.json new file mode 100644 index 000000000..38c12d9a7 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/volume-create-request.json @@ -0,0 +1,16 @@ +{ + "volume": { + "size": 10, + "availability_zone": null, + "source_volid": null, + "description": null, + "multiattach ": false, + "snapshot_id": null, + "name": null, + "imageRef": null, + "volume_type": null, + "metadata": {}, + "source_replica": null, + "consistencygroup_id": null + } +} diff --git a/api-ref/source/blockstorage/v2/samples/volumes/volume-create-request.xml b/api-ref/source/blockstorage/v2/samples/volumes/volume-create-request.xml new file mode 100644 index 000000000..5b655e92e --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/volume-create-request.xml @@ -0,0 +1,5 @@ + + diff --git a/api-ref/source/blockstorage/v2/samples/volumes/volume-create-response.json b/api-ref/source/blockstorage/v2/samples/volumes/volume-create-response.json new file mode 100644 index 000000000..a4f4de88b --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/volume-create-response.json @@ -0,0 +1,34 @@ +{ + "volume": { + "status": "creating", + "migration_status": null, + "user_id": "0eea4eabcf184061a3b6db1e0daaf010", + "attachments": [], + "links": [ + { + "href": "http://23.253.248.171:8776/v2/bab7d5c60cd041a0a36f7c4b6e1dd978/volumes/6edbc2f4-1507-44f8-ac0d-eed1d2608d38", + "rel": "self" + }, + { + "href": "http://23.253.248.171:8776/bab7d5c60cd041a0a36f7c4b6e1dd978/volumes/6edbc2f4-1507-44f8-ac0d-eed1d2608d38", + "rel": "bookmark" + } + ], + "availability_zone": "nova", + "bootable": "false", + "encrypted": false, + "created_at": "2015-11-29T03:01:44.000000", + "description": null, + "updated_at": null, + "volume_type": "lvmdriver-1", + "name": "test-volume-attachments", + "replication_status": "disabled", + "consistencygroup_id": null, + "source_volid": null, + "snapshot_id": null, + "multiattach": false, + "metadata": {}, + "id": "6edbc2f4-1507-44f8-ac0d-eed1d2608d38", + "size": 2 + } +} diff --git a/api-ref/source/blockstorage/v2/samples/volumes/volume-create-response.xml b/api-ref/source/blockstorage/v2/samples/volumes/volume-create-response.xml new file mode 100644 index 000000000..9be3c5e39 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/volume-create-response.xml @@ -0,0 +1,11 @@ + + + + + diff --git a/api-ref/source/blockstorage/v2/samples/volumes/volume-extend-request.json b/api-ref/source/blockstorage/v2/samples/volumes/volume-extend-request.json new file mode 100644 index 000000000..a051cb3cb --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/volume-extend-request.json @@ -0,0 +1,5 @@ +{ + "os-extend": { + "new_size": 3 + } +} diff --git a/api-ref/source/blockstorage/v2/samples/volumes/volume-force-detach-request.json b/api-ref/source/blockstorage/v2/samples/volumes/volume-force-detach-request.json new file mode 100644 index 000000000..277849d8c --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/volume-force-detach-request.json @@ -0,0 +1,8 @@ +{ + "os-force_detach": { + "attachment_id": "d8777f54-84cf-4809-a679-468ffed56cf1", + "connector": { + "initiator": "iqn.2012-07.org.fake:01" + } + } +} diff --git a/api-ref/source/blockstorage/v2/samples/volumes/volume-image-metadata-set-request.json b/api-ref/source/blockstorage/v2/samples/volumes/volume-image-metadata-set-request.json new file mode 100644 index 000000000..1f2be3d6e --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/volume-image-metadata-set-request.json @@ -0,0 +1,10 @@ +{ + "os-set_image_metadata": { + "metadata": { + "image_id": "521752a6-acf6-4b2d-bc7a-119f9148cd8c", + "image_name": "image", + "kernel_id": "155d900f-4e14-4e4c-a73d-069cbf4541e6", + "ramdisk_id": "somedisk" + } + } +} diff --git a/api-ref/source/blockstorage/v2/samples/volumes/volume-image-metadata-unset-request.json b/api-ref/source/blockstorage/v2/samples/volumes/volume-image-metadata-unset-request.json new file mode 100644 index 000000000..49d3295c5 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/volume-image-metadata-unset-request.json @@ -0,0 +1,5 @@ +{ + "os-unset_image_metadata": { + "key": "ramdisk_id" + } +} diff --git a/api-ref/source/blockstorage/v2/samples/volumes/volume-metadata-create-request.json b/api-ref/source/blockstorage/v2/samples/volumes/volume-metadata-create-request.json new file mode 100644 index 000000000..1ff9aae27 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/volume-metadata-create-request.json @@ -0,0 +1,5 @@ +{ + "metadata": { + "name": "metadata0" + } +} diff --git a/api-ref/source/blockstorage/v2/samples/volumes/volume-metadata-create-response.json b/api-ref/source/blockstorage/v2/samples/volumes/volume-metadata-create-response.json new file mode 100644 index 000000000..1ff9aae27 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/volume-metadata-create-response.json @@ -0,0 +1,5 @@ +{ + "metadata": { + "name": "metadata0" + } +} diff --git a/api-ref/source/blockstorage/v2/samples/volumes/volume-metadata-show-response.json b/api-ref/source/blockstorage/v2/samples/volumes/volume-metadata-show-response.json new file mode 100644 index 000000000..5937a8665 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/volume-metadata-show-response.json @@ -0,0 +1,3 @@ +{ + "metadata": {} +} diff --git a/api-ref/source/blockstorage/v2/samples/volumes/volume-metadata-show-response.xml b/api-ref/source/blockstorage/v2/samples/volumes/volume-metadata-show-response.xml new file mode 100644 index 000000000..ba106077a --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/volume-metadata-show-response.xml @@ -0,0 +1,2 @@ + + diff --git a/api-ref/source/blockstorage/v2/samples/volumes/volume-metadata-update-request.json b/api-ref/source/blockstorage/v2/samples/volumes/volume-metadata-update-request.json new file mode 100644 index 000000000..4d96ad848 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/volume-metadata-update-request.json @@ -0,0 +1,5 @@ +{ + "metadata": { + "name": "metadata1" + } +} diff --git a/api-ref/source/blockstorage/v2/samples/volumes/volume-metadata-update-request.xml b/api-ref/source/blockstorage/v2/samples/volumes/volume-metadata-update-request.xml new file mode 100644 index 000000000..ceeb8f031 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/volume-metadata-update-request.xml @@ -0,0 +1,4 @@ + + + v2 + diff --git a/api-ref/source/blockstorage/v2/samples/volumes/volume-metadata-update-response.json b/api-ref/source/blockstorage/v2/samples/volumes/volume-metadata-update-response.json new file mode 100644 index 000000000..4d96ad848 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/volume-metadata-update-response.json @@ -0,0 +1,5 @@ +{ + "metadata": { + "name": "metadata1" + } +} diff --git a/api-ref/source/blockstorage/v2/samples/volumes/volume-metadata-update-response.xml b/api-ref/source/blockstorage/v2/samples/volumes/volume-metadata-update-response.xml new file mode 100644 index 000000000..6d00cdef1 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/volume-metadata-update-response.xml @@ -0,0 +1,4 @@ + + + v2 + diff --git a/api-ref/source/blockstorage/v2/samples/volumes/volume-replica-promote-request.json b/api-ref/source/blockstorage/v2/samples/volumes/volume-replica-promote-request.json new file mode 100644 index 000000000..9ed522325 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/volume-replica-promote-request.json @@ -0,0 +1,3 @@ +{ + "os-promote-replica": {} +} diff --git a/api-ref/source/blockstorage/v2/samples/volumes/volume-replica-reenable-request.json b/api-ref/source/blockstorage/v2/samples/volumes/volume-replica-reenable-request.json new file mode 100644 index 000000000..d622b08ca --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/volume-replica-reenable-request.json @@ -0,0 +1,3 @@ +{ + "os-reenable-replica": {} +} diff --git a/api-ref/source/blockstorage/v2/samples/volumes/volume-show-response.json b/api-ref/source/blockstorage/v2/samples/volumes/volume-show-response.json new file mode 100644 index 000000000..f9d73aae8 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/volume-show-response.json @@ -0,0 +1,33 @@ +{ + "volume": { + "status": "available", + "attachments": [], + "links": [ + { + "href": "http://localhost:8776/v2/0c2eba2c5af04d3f9e9d0d410b371fde/volumes/5aa119a8-d25b-45a7-8d1b-88e127885635", + "rel": "self" + }, + { + "href": "http://localhost:8776/0c2eba2c5af04d3f9e9d0d410b371fde/volumes/5aa119a8-d25b-45a7-8d1b-88e127885635", + "rel": "bookmark" + } + ], + "availability_zone": "nova", + "bootable": "false", + "os-vol-host-attr:host": "ip-10-168-107-25", + "source_volid": null, + "snapshot_id": null, + "id": "5aa119a8-d25b-45a7-8d1b-88e127885635", + "description": "Super volume.", + "name": "vol-002", + "created_at": "2013-02-25T02:40:21.000000", + "volume_type": "None", + "os-vol-tenant-attr:tenant_id": "0c2eba2c5af04d3f9e9d0d410b371fde", + "size": 1, + "os-volume-replication:driver_data": null, + "os-volume-replication:extended_status": null, + "metadata": { + "contents": "not junk" + } + } +} diff --git a/api-ref/source/blockstorage/v2/samples/volumes/volume-show-response.xml b/api-ref/source/blockstorage/v2/samples/volumes/volume-show-response.xml new file mode 100644 index 000000000..17632dfcb --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/volume-show-response.xml @@ -0,0 +1,19 @@ + + + + + not junk + + diff --git a/api-ref/source/blockstorage/v2/samples/volumes/volume-status-reset-request.json b/api-ref/source/blockstorage/v2/samples/volumes/volume-status-reset-request.json new file mode 100644 index 000000000..506b61019 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/volume-status-reset-request.json @@ -0,0 +1,7 @@ +{ + "os-reset_status": { + "status": "available", + "attach_status": "detached", + "migration_status": "migrating" + } +} diff --git a/api-ref/source/blockstorage/v2/samples/volumes/volume-type-access-add-request.json b/api-ref/source/blockstorage/v2/samples/volumes/volume-type-access-add-request.json new file mode 100644 index 000000000..b7481edbb --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/volume-type-access-add-request.json @@ -0,0 +1,5 @@ +{ + "addProjectAccess": { + "project": "f270b245cb11498ca4031deb7e141cfa" + } +} diff --git a/api-ref/source/blockstorage/v2/samples/volumes/volume-type-access-add-request.xml b/api-ref/source/blockstorage/v2/samples/volumes/volume-type-access-add-request.xml new file mode 100644 index 000000000..fdf06a0c2 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/volume-type-access-add-request.xml @@ -0,0 +1,4 @@ + + + "f270b245cb11498ca4031deb7e141cfa" + diff --git a/api-ref/source/blockstorage/v2/samples/volumes/volume-type-access-delete-request.json b/api-ref/source/blockstorage/v2/samples/volumes/volume-type-access-delete-request.json new file mode 100644 index 000000000..144997bfc --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/volume-type-access-delete-request.json @@ -0,0 +1,5 @@ +{ + "removeProjectAccess": { + "project": "f270b245cb11498ca4031deb7e141cfa" + } +} diff --git a/api-ref/source/blockstorage/v2/samples/volumes/volume-type-access-delete-request.xml b/api-ref/source/blockstorage/v2/samples/volumes/volume-type-access-delete-request.xml new file mode 100644 index 000000000..dcde1b2e4 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/volume-type-access-delete-request.xml @@ -0,0 +1,4 @@ + + + "f270b245cb11498ca4031deb7e141cfa" + diff --git a/api-ref/source/blockstorage/v2/samples/volumes/volume-type-access-list-response.json b/api-ref/source/blockstorage/v2/samples/volumes/volume-type-access-list-response.json new file mode 100644 index 000000000..afcffb081 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/volume-type-access-list-response.json @@ -0,0 +1,6 @@ +{ + "volume_type_access": { + "volume_type_id": "3c67e124-39ad-4ace-a507-8bb7bf510c26", + "project_id": "f270b245cb11498ca4031deb7e141cfa" + } +} diff --git a/api-ref/source/blockstorage/v2/samples/volumes/volume-type-create-request.json b/api-ref/source/blockstorage/v2/samples/volumes/volume-type-create-request.json new file mode 100644 index 000000000..13d86bfdf --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/volume-type-create-request.json @@ -0,0 +1,10 @@ +{ + "volume_type": { + "name": "vol-type-001", + "description": "volume type 0001", + "os-volume-type-access:is_public": true, + "extra_specs": { + "capabilities": "gpu" + } + } +} diff --git a/api-ref/source/blockstorage/v2/samples/volumes/volume-type-create-request.xml b/api-ref/source/blockstorage/v2/samples/volumes/volume-type-create-request.xml new file mode 100644 index 000000000..817e446d7 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/volume-type-create-request.xml @@ -0,0 +1,6 @@ + + + + gpu + + diff --git a/api-ref/source/blockstorage/v2/samples/volumes/volume-type-show-request.json b/api-ref/source/blockstorage/v2/samples/volumes/volume-type-show-request.json new file mode 100644 index 000000000..a91f2e94d --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/volume-type-show-request.json @@ -0,0 +1,9 @@ +{ + "volume_type": { + "id": "289da7f8-6440-407c-9fb4-7db01ec49164", + "name": "vol-type-001", + "extra_specs": { + "capabilities": "gpu" + } + } +} diff --git a/api-ref/source/blockstorage/v2/samples/volumes/volume-type-show-request.xml b/api-ref/source/blockstorage/v2/samples/volumes/volume-type-show-request.xml new file mode 100644 index 000000000..1c4291d08 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/volume-type-show-request.xml @@ -0,0 +1,8 @@ + + + + gpu + + diff --git a/api-ref/source/blockstorage/v2/samples/volumes/volume-type-show-response.json b/api-ref/source/blockstorage/v2/samples/volumes/volume-type-show-response.json new file mode 100644 index 000000000..7a0420f20 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/volume-type-show-response.json @@ -0,0 +1,11 @@ +{ + "volume_type": { + "id": "6685584b-1eac-4da6-b5c3-555430cf68ff", + "name": "vol-type-001", + "description": "volume type 001", + "is_public": "true", + "extra_specs": { + "capabilities": "gpu" + } + } +} diff --git a/api-ref/source/blockstorage/v2/samples/volumes/volume-type-show-response.xml b/api-ref/source/blockstorage/v2/samples/volumes/volume-type-show-response.xml new file mode 100644 index 000000000..f5935c74a --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/volume-type-show-response.xml @@ -0,0 +1,9 @@ + + + + gpu + + diff --git a/api-ref/source/blockstorage/v2/samples/volumes/volume-type-update-request.json b/api-ref/source/blockstorage/v2/samples/volumes/volume-type-update-request.json new file mode 100644 index 000000000..8bdc5befb --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/volume-type-update-request.json @@ -0,0 +1,10 @@ +{ + "volume_type": { + "name": "vol-type-001", + "description": "volume type 0001", + "is_public": true, + "extra_specs": { + "capabilities": "gpu" + } + } +} diff --git a/api-ref/source/blockstorage/v2/samples/volumes/volume-type-update-request.xml b/api-ref/source/blockstorage/v2/samples/volumes/volume-type-update-request.xml new file mode 100644 index 000000000..dddddf669 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/volume-type-update-request.xml @@ -0,0 +1,6 @@ + + + + gpu + + diff --git a/api-ref/source/blockstorage/v2/samples/volumes/volume-types-list-response.json b/api-ref/source/blockstorage/v2/samples/volumes/volume-types-list-response.json new file mode 100644 index 000000000..1d72f923e --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/volume-types-list-response.json @@ -0,0 +1,16 @@ +{ + "volume_types": [ + { + "extra_specs": { + "capabilities": "gpu" + }, + "id": "6685584b-1eac-4da6-b5c3-555430cf68ff", + "name": "SSD" + }, + { + "extra_specs": {}, + "id": "8eb69a46-df97-4e41-9586-9a40a7533803", + "name": "SATA" + } + ] +} diff --git a/api-ref/source/blockstorage/v2/samples/volumes/volume-types-list-response.xml b/api-ref/source/blockstorage/v2/samples/volumes/volume-types-list-response.xml new file mode 100644 index 000000000..e227787da --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/volume-types-list-response.xml @@ -0,0 +1,11 @@ + + + + + gpu + + + + diff --git a/api-ref/source/blockstorage/v2/samples/volumes/volume-unmanage-request.json b/api-ref/source/blockstorage/v2/samples/volumes/volume-unmanage-request.json new file mode 100644 index 000000000..a75950bb9 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/volume-unmanage-request.json @@ -0,0 +1,3 @@ +{ + "os-unmanage": {} +} diff --git a/api-ref/source/blockstorage/v2/samples/volumes/volume-update-request.json b/api-ref/source/blockstorage/v2/samples/volumes/volume-update-request.json new file mode 100644 index 000000000..8e52dacb6 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/volume-update-request.json @@ -0,0 +1,6 @@ +{ + "volume": { + "name": "vol-003", + "description": "This is yet, another volume." + } +} diff --git a/api-ref/source/blockstorage/v2/samples/volumes/volume-update-request.xml b/api-ref/source/blockstorage/v2/samples/volumes/volume-update-request.xml new file mode 100644 index 000000000..d03ed1930 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/volume-update-request.xml @@ -0,0 +1,4 @@ + + diff --git a/api-ref/source/blockstorage/v2/samples/volumes/volume-update-response.json b/api-ref/source/blockstorage/v2/samples/volumes/volume-update-response.json new file mode 100644 index 000000000..f87bcd2ce --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/volume-update-response.json @@ -0,0 +1,36 @@ +{ + "volume": { + "status": "available", + "migration_status": null, + "user_id": "0eea4eabcf184061a3b6db1e0daaf010", + "attachments": [], + "links": [ + { + "href": "http://localhost:8776/v2/0c2eba2c5af04d3f9e9d0d410b371fde/volumes/5aa119a8-d25b-45a7-8d1b-88e127885635", + "rel": "self" + }, + { + "href": "http://localhost:8776/0c2eba2c5af04d3f9e9d0d410b371fde/volumes/5aa119a8-d25b-45a7-8d1b-88e127885635", + "rel": "bookmark" + } + ], + "availability_zone": "nova", + "bootable": "false", + "encrypted": false, + "created_at": "2015-11-29T03:01:44.000000", + "description": "This is yet, another volume.", + "updated_at": null, + "volume_type": "lvmdriver-1", + "name": "vol-003", + "replication_status": "disabled", + "consistencygroup_id": null, + "source_volid": null, + "snapshot_id": null, + "multiattach": false, + "metadata": { + "contents": "not junk" + }, + "id": "5aa119a8-d25b-45a7-8d1b-88e127885635", + "size": 1 + } +} diff --git a/api-ref/source/blockstorage/v2/samples/volumes/volume-update-response.xml b/api-ref/source/blockstorage/v2/samples/volumes/volume-update-response.xml new file mode 100644 index 000000000..0524361ac --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/volume-update-response.xml @@ -0,0 +1,13 @@ + + + + + not junk + + diff --git a/api-ref/source/blockstorage/v2/samples/volumes/volumes-list-detailed-response.json b/api-ref/source/blockstorage/v2/samples/volumes/volumes-list-detailed-response.json new file mode 100644 index 000000000..e91029c14 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/volumes-list-detailed-response.json @@ -0,0 +1,102 @@ +{ + "volumes": [ + { + "migration_status": null, + "attachments": [ + { + "server_id": "f4fda93b-06e0-4743-8117-bc8bcecd651b", + "attachment_id": "3b4db356-253d-4fab-bfa0-e3626c0b8405", + "host_name": null, + "volume_id": "6edbc2f4-1507-44f8-ac0d-eed1d2608d38", + "device": "/dev/vdb", + "id": "6edbc2f4-1507-44f8-ac0d-eed1d2608d38" + } + ], + "links": [ + { + "href": "http://23.253.248.171:8776/v2/bab7d5c60cd041a0a36f7c4b6e1dd978/volumes/6edbc2f4-1507-44f8-ac0d-eed1d2608d38", + "rel": "self" + }, + { + "href": "http://23.253.248.171:8776/bab7d5c60cd041a0a36f7c4b6e1dd978/volumes/6edbc2f4-1507-44f8-ac0d-eed1d2608d38", + "rel": "bookmark" + } + ], + "availability_zone": "nova", + "os-vol-host-attr:host": "difleming@lvmdriver-1#lvmdriver-1", + "encrypted": false, + "os-volume-replication:extended_status": null, + "replication_status": "disabled", + "snapshot_id": null, + "id": "6edbc2f4-1507-44f8-ac0d-eed1d2608d38", + "size": 2, + "user_id": "32779452fcd34ae1a53a797ac8a1e064", + "os-vol-tenant-attr:tenant_id": "bab7d5c60cd041a0a36f7c4b6e1dd978", + "os-vol-mig-status-attr:migstat": null, + "metadata": { + "readonly": false, + "attached_mode": "rw" + }, + "status": "in-use", + "description": null, + "multiattach": true, + "os-volume-replication:driver_data": null, + "source_volid": null, + "consistencygroup_id": null, + "os-vol-mig-status-attr:name_id": null, + "name": "test-volume-attachments", + "bootable": "false", + "created_at": "2015-11-29T03:01:44.000000", + "volume_type": "lvmdriver-1" + }, + { + "migration_status": null, + "attachments": [], + "links": [ + { + "href": "http://23.253.248.171:8776/v2/bab7d5c60cd041a0a36f7c4b6e1dd978/volumes/173f7b48-c4c1-4e70-9acc-086b39073506", + "rel": "self" + }, + { + "href": "http://23.253.248.171:8776/bab7d5c60cd041a0a36f7c4b6e1dd978/volumes/173f7b48-c4c1-4e70-9acc-086b39073506", + "rel": "bookmark" + } + ], + "availability_zone": "nova", + "os-vol-host-attr:host": "difleming@lvmdriver-1#lvmdriver-1", + "encrypted": false, + "os-volume-replication:extended_status": null, + "replication_status": "disabled", + "snapshot_id": null, + "id": "173f7b48-c4c1-4e70-9acc-086b39073506", + "size": 1, + "user_id": "32779452fcd34ae1a53a797ac8a1e064", + "os-vol-tenant-attr:tenant_id": "bab7d5c60cd041a0a36f7c4b6e1dd978", + "os-vol-mig-status-attr:migstat": null, + "metadata": {}, + "status": "available", + "volume_image_metadata": { + "kernel_id": "8a55f5f1-78f7-4477-8168-977d8519342c", + "checksum": "eb9139e4942121f22bbc2afc0400b2a4", + "min_ram": "0", + "ramdisk_id": "5f6bdf8a-92db-4988-865b-60bdd808d9ef", + "disk_format": "ami", + "image_name": "cirros-0.3.4-x86_64-uec", + "image_id": "b48c53e1-9a96-4a5a-a630-2e74ec54ddcc", + "container_format": "ami", + "min_disk": "0", + "size": "25165824" + }, + "description": "", + "multiattach": false, + "os-volume-replication:driver_data": null, + "source_volid": null, + "consistencygroup_id": null, + "os-vol-mig-status-attr:name_id": null, + "name": "test-volume", + "bootable": "true", + "created_at": "2015-11-29T02:25:18.000000", + "volume_type": "lvmdriver-1" + } + ] +} diff --git a/api-ref/source/blockstorage/v2/samples/volumes/volumes-list-detailed-response.xml b/api-ref/source/blockstorage/v2/samples/volumes/volumes-list-detailed-response.xml new file mode 100644 index 000000000..36bbffd0a --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/volumes-list-detailed-response.xml @@ -0,0 +1,31 @@ + + + + + + junk + + + + + + not junk + + + diff --git a/api-ref/source/blockstorage/v2/samples/volumes/volumes-list-response.json b/api-ref/source/blockstorage/v2/samples/volumes/volumes-list-response.json new file mode 100644 index 000000000..b3c7cc051 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/volumes-list-response.json @@ -0,0 +1,32 @@ +{ + "volumes": [ + { + "id": "45baf976-c20a-4894-a7c3-c94b7376bf55", + "links": [ + { + "href": "http://localhost:8776/v2/0c2eba2c5af04d3f9e9d0d410b371fde/volumes/45baf976-c20a-4894-a7c3-c94b7376bf55", + "rel": "self" + }, + { + "href": "http://localhost:8776/0c2eba2c5af04d3f9e9d0d410b371fde/volumes/45baf976-c20a-4894-a7c3-c94b7376bf55", + "rel": "bookmark" + } + ], + "name": "vol-004" + }, + { + "id": "5aa119a8-d25b-45a7-8d1b-88e127885635", + "links": [ + { + "href": "http://localhost:8776/v2/0c2eba2c5af04d3f9e9d0d410b371fde/volumes/5aa119a8-d25b-45a7-8d1b-88e127885635", + "rel": "self" + }, + { + "href": "http://localhost:8776/0c2eba2c5af04d3f9e9d0d410b371fde/volumes/5aa119a8-d25b-45a7-8d1b-88e127885635", + "rel": "bookmark" + } + ], + "name": "vol-003" + } + ] +} diff --git a/api-ref/source/blockstorage/v2/samples/volumes/volumes-list-response.xml b/api-ref/source/blockstorage/v2/samples/volumes/volumes-list-response.xml new file mode 100644 index 000000000..024608615 --- /dev/null +++ b/api-ref/source/blockstorage/v2/samples/volumes/volumes-list-response.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/api-ref/source/blockstorage/v2/volume-manage.inc b/api-ref/source/blockstorage/v2/volume-manage.inc new file mode 100644 index 000000000..bfb5d2bd2 --- /dev/null +++ b/api-ref/source/blockstorage/v2/volume-manage.inc @@ -0,0 +1,56 @@ +.. -*- rst -*- + +========================================== +Volume manage extension (os-volume-manage) +========================================== + +Creates volumes by using existing storage instead of allocating new +storage. + + +Manage existing volume +====================== + +.. rest_method:: POST /v2/{tenant_id}/os-volume-manage + +Creates a Block Storage volume by using existing storage rather than allocating new storage. + +The caller must specify a reference to an existing storage volume +in the ref parameter in the request. Although each storage driver +might interpret this reference differently, the driver should +accept a reference structure that contains either a source-volume- +id or source-volume-name element, if possible. + +The API chooses the size of the volume by rounding up the size of +the existing storage volume to the next gibibyte (GiB). + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - description: description + - availability_zone: availability_zone + - bootable: bootable + - volume_type: volume_type + - name: name + - volume: volume + - host: host + - ref: ref + - metadata: metadata + - tenant_id: tenant_id + +Request Example +--------------- + +.. literalinclude:: ../samples/os-volume-manage/volume-manage-request.json + :language: javascript + + + + + + diff --git a/api-ref/source/blockstorage/v2/volume-type-access.inc b/api-ref/source/blockstorage/v2/volume-type-access.inc new file mode 100644 index 000000000..8760f5dd7 --- /dev/null +++ b/api-ref/source/blockstorage/v2/volume-type-access.inc @@ -0,0 +1,116 @@ +.. -*- rst -*- + +============================ +Volume type access (volumes) +============================ + +Private volume type access to project. + +By default, volumes types are public. To create a private volume +type, set the ``is_public`` boolean field to ``false`` at volume +type creation time. To control access to a private volume type, +user needs to add a project to or remove a project from the volume +type. Private volume types without projects are only accessible by +users with the administrative role and context. + + +Add private volume type access +============================== + +.. rest_method:: POST /v2/{tenant_id}/types/{volume_type}/action + +Adds private volume type access to a project. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - project: project + - tenant_id: tenant_id + - volume_type: volume_type + +Request Example +--------------- + +.. literalinclude:: ../samples/volumes/volume-type-access-add-request.json + :language: javascript + + + + + + + +Remove private volume type access +================================= + +.. rest_method:: POST /v2/{tenant_id}/types/{volume_type}/action + +Removes private volume type access from a project. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - project: project + - tenant_id: tenant_id + - volume_type: volume_type + +Request Example +--------------- + +.. literalinclude:: ../samples/volumes/volume-type-access-delete-request.json + :language: javascript + + + + + + + +List private volume type access details +======================================= + +.. rest_method:: GET /v2/{tenant_id}/types/{volume_type}/os-volume-type-access + +Lists project IDs that have access to private volume type. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - volume_type: volume_type + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - project_id: project_id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/volumes/volume-type-access-list-response.json + :language: javascript + + + diff --git a/api-ref/source/blockstorage/v2/volumes-v2-extensions.inc b/api-ref/source/blockstorage/v2/volumes-v2-extensions.inc new file mode 100644 index 000000000..b93d2fd5c --- /dev/null +++ b/api-ref/source/blockstorage/v2/volumes-v2-extensions.inc @@ -0,0 +1,52 @@ +.. -*- rst -*- + +=========================== +API extensions (extensions) +=========================== + + + + +List API extensions +=================== + +.. rest_method:: GET /v2/{tenant_id}/extensions + +Lists Block Storage API extensions. + + +Normal response codes: 200 +Error response codes:300, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - updated: updated + - description: description + - links: links + - namespace: namespace + - alias: alias + - name: name + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/volumes/extensions-list-response.json + :language: javascript + + + diff --git a/api-ref/source/blockstorage/v2/volumes-v2-snapshots.inc b/api-ref/source/blockstorage/v2/volumes-v2-snapshots.inc new file mode 100644 index 000000000..8f38aceed --- /dev/null +++ b/api-ref/source/blockstorage/v2/volumes-v2-snapshots.inc @@ -0,0 +1,394 @@ +.. -*- rst -*- + +============================ +Volume snapshots (snapshots) +============================ + +A snapshot is a point-in-time copy of the data that a volume +contains. + +When you create, list, or delete snapshots, these status values are +possible: + +**Snapshot statuses** + ++----------------+-------------------------------------+ +| Status | Description | ++----------------+-------------------------------------+ +| creating | The snapshot is being created. | ++----------------+-------------------------------------+ +| available | The snapshot is ready to use. | ++----------------+-------------------------------------+ +| deleting | The snapshot is being deleted. | ++----------------+-------------------------------------+ +| error | A snapshot creation error occurred. | ++----------------+-------------------------------------+ +| error_deleting | A snapshot deletion error occurred. | ++----------------+-------------------------------------+ + + +List snapshots with details +=========================== + +.. rest_method:: GET /v2/{tenant_id}/snapshots/detail + +Lists all Block Storage snapshots, with details, that the tenant can access. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - os-extended-snapshot-attributes:progress: os-extended-snapshot-attributes:progress + - description: description + - created_at: created_at + - name: name + - volume_id: volume_id + - os-extended-snapshot-attributes:project_id: os-extended-snapshot-attributes:project_id + - size: size + - id: id + - metadata: metadata + + + +Response Example +---------------- + +.. literalinclude:: ../samples/volumes/snapshots-list-detailed-response.json + :language: javascript + + + + +Create snapshot +=============== + +.. rest_method:: POST /v2/{tenant_id}/snapshots + +Creates a volume snapshot, which is a point-in-time, complete copy of a volume. You can create a volume from a snapshot. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - snapshot: snapshot + - volume_id: volume_id + - force: force + - description: description + - name: name + - tenant_id: tenant_id + +Request Example +--------------- + +.. literalinclude:: ../samples/volumes/snapshot-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - description: description + - created_at: created_at + - name: name + - snapshot: snapshot + - volume_id: volume_id + - metadata: metadata + - id: id + - size: size + + + + + +List snapshots +============== + +.. rest_method:: GET /v2/{tenant_id}/snapshots + +Lists all Block Storage snapshots, with summary information, that the tenant can access. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - sort_key: sort_key + - sort_dir: sort_dir + - limit: limit + - marker: marker + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - description: description + - created_at: created_at + - name: name + - volume_id: volume_id + - metadata: metadata + - id: id + - size: size + + + +Response Example +---------------- + +.. literalinclude:: ../samples/volumes/snapshots-list-response.json + :language: javascript + + + + +Show snapshot metadata +====================== + +.. rest_method:: GET /v2/{tenant_id}/snapshots/{snapshot_id}/metadata + +Shows metadata for a snapshot. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - snapshot_id: snapshot_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - os-extended-snapshot-attributes:progress: os-extended-snapshot-attributes:progress + - description: description + - created_at: created_at + - name: name + - snapshot: snapshot + - volume_id: volume_id + - os-extended-snapshot-attributes:project_id: os-extended-snapshot-attributes:project_id + - size: size + - id: id + - metadata: metadata + + + +Response Example +---------------- + +.. literalinclude:: ../samples/volumes/snapshot-metadata-show-response.json + :language: javascript + + + + +Update snapshot metadata +======================== + +.. rest_method:: PUT /v2/{tenant_id}/snapshots/{snapshot_id}/metadata + +Updates metadata for a snapshot. + +Replaces metadata items that match keys. Does not modify items that +are not in the request. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - metadata: metadata + - tenant_id: tenant_id + - snapshot_id: snapshot_id + +Request Example +--------------- + +.. literalinclude:: ../samples/volumes/snapshot-metadata-update-request.json + :language: javascript + + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/volumes/snapshot-metadata-update-response.json + :language: javascript + + + + +Show snapshot details +===================== + +.. rest_method:: GET /v2/{tenant_id}/snapshots/{snapshot_id} + +Shows details for a snapshot. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - snapshot_id: snapshot_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - os-extended-snapshot-attributes:progress: os-extended-snapshot-attributes:progress + - description: description + - created_at: created_at + - name: name + - snapshot: snapshot + - volume_id: volume_id + - os-extended-snapshot-attributes:project_id: os-extended-snapshot-attributes:project_id + - size: size + - id: id + - metadata: metadata + + + +Response Example +---------------- + +.. literalinclude:: ../samples/volumes/snapshot-show-response.json + :language: javascript + + + + +Update snapshot +=============== + +.. rest_method:: PUT /v2/{tenant_id}/snapshots/{snapshot_id} + +Updates a snapshot. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - snapshot: snapshot + - description: description + - name: name + - tenant_id: tenant_id + - snapshot_id: snapshot_id + +Request Example +--------------- + +.. literalinclude:: ../samples/volumes/snapshot-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - description: description + - created_at: created_at + - name: name + - snapshot: snapshot + - volume_id: volume_id + - metadata: metadata + - id: id + - size: size + + + +Response Example +---------------- + +.. literalinclude:: ../samples/volumes/snapshot-update-response.json + :language: javascript + + + + +Delete snapshot +=============== + +.. rest_method:: DELETE /v2/{tenant_id}/snapshots/{snapshot_id} + +Deletes a snapshot. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - snapshot_id: snapshot_id + + + + + diff --git a/api-ref/source/blockstorage/v2/volumes-v2-types.inc b/api-ref/source/blockstorage/v2/volumes-v2-types.inc new file mode 100644 index 000000000..5e2305c80 --- /dev/null +++ b/api-ref/source/blockstorage/v2/volumes-v2-types.inc @@ -0,0 +1,298 @@ +.. -*- rst -*- + +==================== +Volume types (types) +==================== + + + + +Update volume type +================== + +.. rest_method:: PUT /v2/{tenant_id}/types/{volume_type_id} + +Updates a volume type. + +To create an environment with multiple-storage back ends, you must +specify a volume type. The API spawns Block Storage volume back +ends as children to ``cinder-volume``, and keys them from a unique +queue. The API names the back ends ``cinder-volume.HOST.BACKEND``. +For example, ``cinder-volume.ubuntu.lvmdriver``. When you create a +volume, the scheduler chooses an appropriate back end for the +volume type to handle the request. + +For information about how to use volume types to create multiple- +storage back ends, see `Configure multiple-storage back ends +`_. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - volume_type: volume_type + - volume_type_id: volume_type_id + - tenant_id: tenant_id + +Request Example +--------------- + +.. literalinclude:: ../samples/volumes/volume-type-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - is_public: is_public + - extra_specs: extra_specs + - description: description + - volume_type: volume_type + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/volumes/volume-type-show-response.json + :language: javascript + + + + +Update extra specs for a volume type +==================================== + +.. rest_method:: PUT /v2/{tenant_id}/types/{volume_type_id} + +Updates the extra specifications that are assigned to a volume type. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - extra_specs: extra_specs + - volume_type: volume_type + - volume_type_id: volume_type_id + - tenant_id: tenant_id + +Request Example +--------------- + +.. literalinclude:: ../samples/volumes/volume-type-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - is_public: is_public + - extra_specs: extra_specs + - description: description + - volume_type: volume_type + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/volumes/volume-type-show-response.json + :language: javascript + + + + +Show volume type details +======================== + +.. rest_method:: GET /v2/{tenant_id}/types/{volume_type_id} + +Shows details for a volume type. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - volume_type_id: volume_type_id + - tenant_id: tenant_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - is_public: is_public + - extra_specs: extra_specs + - description: description + - volume_type: volume_type + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/volumes/volume-type-show-response.json + :language: javascript + + + + +Delete volume type +================== + +.. rest_method:: DELETE /v2/{tenant_id}/types/{volume_type_id} + +Deletes a volume type. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - volume_type_id: volume_type_id + - tenant_id: tenant_id + + + + + + +List volume types +================= + +.. rest_method:: GET /v2/{tenant_id}/types + +Lists volume types. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - sort_key: sort_key + - sort_dir: sort_dir + - limit: limit + - marker: marker + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - volume_types: volume_types + - extra_specs: extra_specs + - name: name + - volume_type: volume_type + + + +Response Example +---------------- + +.. literalinclude:: ../samples/volumes/volume-types-list-response.json + :language: javascript + + + + +Create volume type +================== + +.. rest_method:: POST /v2/{tenant_id}/types + +Creates a volume type. + +To create an environment with multiple-storage back ends, you must +specify a volume type. Block Storage volume back ends are spawned +as children to ``cinder-volume``, and they are keyed from a unique +queue. They are named ``cinder-volume.HOST.BACKEND``. For example, +``cinder-volume.ubuntu.lvmdriver``. When a volume is created, the +scheduler chooses an appropriate back end to handle the request +based on the volume type. + +For information about how to use volume types to create multiple- +storage back ends, see `Configure multiple-storage back ends +`_. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - volume_type: volume_type + - tenant_id: tenant_id + +Request Example +--------------- + +.. literalinclude:: ../samples/volumes/volume-type-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - is_public: is_public + - extra_specs: extra_specs + - description: description + - volume_type: volume_type + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/volumes/volume-type-show-response.json + :language: javascript + + + diff --git a/api-ref/source/blockstorage/v2/volumes-v2-versions.inc b/api-ref/source/blockstorage/v2/volumes-v2-versions.inc new file mode 100644 index 000000000..9f5970d46 --- /dev/null +++ b/api-ref/source/blockstorage/v2/volumes-v2-versions.inc @@ -0,0 +1,77 @@ +.. -*- rst -*- + +============ +API versions +============ + + + + +List API versions +================= + +.. rest_method:: GET / + +Lists information for all Block Storage API versions. + + +Normal response codes: 200 +Error response codes:300, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/volumes/versions-response.json + :language: javascript + + + + +Show API v2 details +=================== + +.. rest_method:: GET /v2 + +Shows details for Block Storage API v2. + + +Normal response codes: 200 +Error response codes:203, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - location: location + + + +Response Example +---------------- + +.. literalinclude:: ../samples/volumes/version-v2-show-response.json + :language: javascript + + + + diff --git a/api-ref/source/blockstorage/v2/volumes-v2-volumes-actions.inc b/api-ref/source/blockstorage/v2/volumes-v2-volumes-actions.inc new file mode 100644 index 000000000..22e630789 --- /dev/null +++ b/api-ref/source/blockstorage/v2/volumes-v2-volumes-actions.inc @@ -0,0 +1,333 @@ +.. -*- rst -*- + +================================ +Volume actions (volumes, action) +================================ + +Extends the size of, resets statuses for, sets image metadata for, +and removes image metadata from a volume. Attaches a volume to a +server, detaches a volume from a server, and removes a volume from +Block Storage management without actually removing the back-end +storage object associated with it. + + +Extend volume size +================== + +.. rest_method:: POST /v2/{tenant_id}/volumes/{volume_id}/action + +Extends the size of a volume to a requested size, in gibibytes (GiB). Specify the ``os-extend`` action in the request body. + +Preconditions + +- Volume status must be ``available``. + +- Sufficient amount of storage must exist to extend the volume. + +- The user quota must have sufficient volume storage. + +Troubleshooting + +- An ``error_extending`` volume status indicates that the request + failed. Ensure that you meet the preconditions and retry the + request. If the request fails again, investigate the storage back + end. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - os-extend: os-extend + - new_size: new_size + - tenant_id: tenant_id + - volume_id: volume_id + +Request Example +--------------- + +.. literalinclude:: ../samples/volumes/volume-extend-request.json + :language: javascript + + + + + + + +Reset volume statuses +===================== + +.. rest_method:: POST /v2/{tenant_id}/volumes/{volume_id}/action + +Resets the status, attach status, and migration status for a volume. Specify the ``os-reset_status`` action in the request body. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - status: status + - migration_status: migration_status + - os-reset_status: os-reset_status + - attach_status: attach_status + - tenant_id: tenant_id + - volume_id: volume_id + +Request Example +--------------- + +.. literalinclude:: ../samples/volumes/volume-status-reset-request.json + :language: javascript + + + + + + + +Set image metadata for volume +============================= + +.. rest_method:: POST /v2/{tenant_id}/volumes/{volume_id}/action + +Sets the image metadata for a volume. Specify the ``os-set_image_metadata`` action in the request body. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - os-set_image_metadata: os-set_image_metadata + - metadata: metadata + - tenant_id: tenant_id + - volume_id: volume_id + +Request Example +--------------- + +.. literalinclude:: ../samples/volumes/volume-image-metadata-set-request.json + :language: javascript + + + + + + + +Remove image metadata from volume +================================= + +.. rest_method:: POST /v2/{tenant_id}/volumes/{volume_id}/action + +Removes image metadata, by key, from a volume. Specify the ``os-unset_image_metadata`` action in the request body and the ``key`` for the metadata key and value pair that you want to remove. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - os-unset_image_metadata: os-unset_image_metadata + - key: key + - tenant_id: tenant_id + - volume_id: volume_id + +Request Example +--------------- + +.. literalinclude:: ../samples/volumes/volume-image-metadata-unset-request.json + :language: javascript + + + + + + + +Attach volume to server +======================= + +.. rest_method:: POST /v2/{tenant_id}/volumes/{volume_id}/action + +Attaches a volume to a server. Specify the ``os-attach`` action in the request body. + +Preconditions + +- Volume status must be ``available``. + +- You should set ``instance_uuid`` or ``host_name``. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - instance_uuid: instance_uuid + - mountpoint: mountpoint + - host_name: host_name + - os-attach: os-attach + - tenant_id: tenant_id + - volume_id: volume_id + +Request Example +--------------- + +.. literalinclude:: ../samples/volumes/volume-attach-request.json + :language: javascript + + + + + + + +Unmanage volume +=============== + +.. rest_method:: POST /v2/{tenant_id}/volumes/{volume_id}/action + +Removes a volume from Block Storage management without removing the back-end storage object that is associated with it. Specify the ``os-unmanage`` action in the request body. + +Preconditions + +- Volume status must be ``available``. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - os-unmanage: os-unmanage + - tenant_id: tenant_id + - volume_id: volume_id + +Request Example +--------------- + +.. literalinclude:: ../samples/volumes/volume-unmanage-request.json + :language: javascript + + + + + + + +Force detach volume +=================== + +.. rest_method:: POST /v2/{tenant_id}/volumes/{volume_id}/action + +Forces a volume to detach. Specify the ``os-force_detach`` action in the request body. + +Rolls back an unsuccessful detach operation after you disconnect +the volume. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - connector: connector + - attachment_id: attachment_id + - os-force_detach: os-force_detach + - tenant_id: tenant_id + - volume_id: volume_id + +Request Example +--------------- + +.. literalinclude:: ../samples/volumes/volume-force-detach-request.json + :language: javascript + + + + + + + +Promote replicated volume +========================= + +.. rest_method:: POST /v2/{tenant_id}/volumes/{volume_id}/action + +Promotes a replicated volume. Specify the ``os-promote-replica`` action in the request body. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - os-promote-replica: os-promote-replica + - tenant_id: tenant_id + - volume_id: volume_id + +Request Example +--------------- + +.. literalinclude:: ../samples/volumes/volume-replica-promote-request.json + :language: javascript + + + + + + + +Reenable volume replication +=========================== + +.. rest_method:: POST /v2/{tenant_id}/volumes/{volume_id}/action + +Re-enables replication of a volume. Specify the ``volume-replica-reenable`` action in the request body. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - os-reenable-replica: os-reenable-replica + - size: size + - os-volume-replication:driver_data: os-volume-replication:driver_data + - os-volume-replication:extended_status: os-volume-replication:extended_status + - tenant_id: tenant_id + - volume_id: volume_id + +Request Example +--------------- + +.. literalinclude:: ../samples/volumes/volume-replica-reenable-request.json + :language: javascript + + + + + + diff --git a/api-ref/source/blockstorage/v2/volumes-v2-volumes.inc b/api-ref/source/blockstorage/v2/volumes-v2-volumes.inc new file mode 100644 index 000000000..38e0ffe1e --- /dev/null +++ b/api-ref/source/blockstorage/v2/volumes-v2-volumes.inc @@ -0,0 +1,573 @@ +.. -*- rst -*- + +================= +Volumes (volumes) +================= + +A volume is a detachable block storage device similar to a USB hard +drive. You can attach a volume to one instance at a time. + +The ``snapshot_id`` and ``source_volid`` parameters specify the ID +of the snapshot or volume from which this volume originates. If the +volume was not created from a snapshot or source volume, these +values are null. + +When you create, list, update, or delete volumes, the possible +status values are: + +**Volume statuses** + ++------------------+--------------------------------------------------------+ +| Status | Description | ++------------------+--------------------------------------------------------+ +| creating | The volume is being created. | ++------------------+--------------------------------------------------------+ +| available | The volume is ready to attach to an instance. | ++------------------+--------------------------------------------------------+ +| attaching | The volume is attaching to an instance. | ++------------------+--------------------------------------------------------+ +| in-use | The volume is attached to an instance. | ++------------------+--------------------------------------------------------+ +| deleting | The volume is being deleted. | ++------------------+--------------------------------------------------------+ +| error | A volume creation error occurred. | ++------------------+--------------------------------------------------------+ +| error_deleting | A volume deletion error occurred. | ++------------------+--------------------------------------------------------+ +| backing-up | The volume is being backed up. | ++------------------+--------------------------------------------------------+ +| restoring-backup | A backup is being restored to the volume. | ++------------------+--------------------------------------------------------+ +| error_restoring | A backup restoration error occurred. | ++------------------+--------------------------------------------------------+ +| error_extending | An error occurred while attempting to extend a volume. | ++------------------+--------------------------------------------------------+ + + +List volumes with details +========================= + +.. rest_method:: GET /v2/{tenant_id}/volumes/detail + +Lists all Block Storage volumes, with details, that the tenant can access. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - sort: sort + - limit: limit + - marker: marker + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - migration_status: migration_status + - attachments: attachments + - links: links + - availability_zone: availability_zone + - os-vol-host-attr:host: os-vol-host-attr:host + - encrypted: encrypted + - updated_at: updated_at + - os-volume-replication:extended_status: os-volume-replication:extended_status + - replication_status: replication_status + - snapshot_id: snapshot_id + - id: id + - size: size + - user_id: user_id + - os-vol-tenant-attr:tenant_id: os-vol-tenant-attr:tenant_id + - os-vol-mig-status-attr:migstat: os-vol-mig-status-attr:migstat + - metadata: metadata + - status: status + - description: description + - multiattach: multiattach + - source_volid: source_volid + - consistencygroup_id: consistencygroup_id + - os-vol-mig-status-attr:name_id: os-vol-mig-status-attr:name_id + - name: name + - bootable: bootable + - created_at: created_at + - os-volume-replication:driver_data: os-volume-replication:driver_data + - volumes: volumes + - volume_type: volume_type + + + +Response Example +---------------- + +.. literalinclude:: ../samples/volumes/volumes-list-detailed-response.json + :language: javascript + + + + +Create volume +============= + +.. rest_method:: POST /v2/{tenant_id}/volumes + +Creates a volume. + +To create a bootable volume, include the UUID of the image from +which you want to create the volume in the ``imageRef`` attribute +in the request body. + +Preconditions + +- You must have enough volume storage quota remaining to create a + volume of size requested. + +Asynchronous Postconditions + +- With correct permissions, you can see the volume status as + ``available`` through API calls. + +- With correct access, you can see the created volume in the storage + system that OpenStack Block Storage manages. + +Troubleshooting + +- If volume status remains ``creating`` or shows another error + status, the request failed. Ensure you meet the preconditions + then investigate the storage back end. + +- Volume is not created in the storage system that OpenStack Block + Storage manages. + +- The storage node needs enough free storage space to match the size + of the volume creation request. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - size: size + - description: description + - imageRef: imageRef + - multiattach: multiattach + - availability_zone: availability_zone + - source_volid: source_volid + - name: name + - volume: volume + - consistencygroup_id: consistencygroup_id + - volume_type: volume_type + - snapshot_id: snapshot_id + - scheduler_hints: scheduler_hints + - source_replica: source_replica + - metadata: metadata + - tenant_id: tenant_id + +Request Example +--------------- + +.. literalinclude:: ../samples/volumes/volume-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - migration_status: migration_status + - attachments: attachments + - links: links + - availability_zone: availability_zone + - encrypted: encrypted + - updated_at: updated_at + - replication_status: replication_status + - snapshot_id: snapshot_id + - id: id + - size: size + - user_id: user_id + - metadata: metadata + - status: status + - description: description + - multiattach: multiattach + - source_volid: source_volid + - volume: volume + - consistencygroup_id: consistencygroup_id + - name: name + - bootable: bootable + - created_at: created_at + - volume_type: volume_type + + + + + +List volumes +============ + +.. rest_method:: GET /v2/{tenant_id}/volumes + +Lists summary information for all Block Storage volumes that the tenant can access. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - sort: sort + - limit: limit + - marker: marker + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - volumes: volumes + - id: id + - links: links + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/volumes/volumes-list-response.json + :language: javascript + + + + +Show volume details +=================== + +.. rest_method:: GET /v2/{tenant_id}/volumes/{volume_id} + +Shows details for a volume. + +Preconditions + +- The volume must exist. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - volume_id: volume_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - migration_status: migration_status + - attachments: attachments + - links: links + - availability_zone: availability_zone + - os-vol-host-attr:host: os-vol-host-attr:host + - encrypted: encrypted + - updated_at: updated_at + - os-volume-replication:extended_status: os-volume-replication:extended_status + - replication_status: replication_status + - snapshot_id: snapshot_id + - id: id + - size: size + - user_id: user_id + - os-vol-tenant-attr:tenant_id: os-vol-tenant-attr:tenant_id + - os-vol-mig-status-attr:migstat: os-vol-mig-status-attr:migstat + - metadata: metadata + - status: status + - description: description + - multiattach: multiattach + - source_volid: source_volid + - volume: volume + - consistencygroup_id: consistencygroup_id + - os-vol-mig-status-attr:name_id: os-vol-mig-status-attr:name_id + - name: name + - bootable: bootable + - created_at: created_at + - os-volume-replication:driver_data: os-volume-replication:driver_data + - volume_type: volume_type + + + +Response Example +---------------- + +.. literalinclude:: ../samples/volumes/volume-show-response.json + :language: javascript + + + + +Update volume +============= + +.. rest_method:: PUT /v2/{tenant_id}/volumes/{volume_id} + +Updates a volume. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - volume: volume + - description: description + - name: name + - metadata: metadata + - tenant_id: tenant_id + - volume_id: volume_id + +Request Example +--------------- + +.. literalinclude:: ../samples/volumes/volume-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - migration_status: migration_status + - attachments: attachments + - links: links + - availability_zone: availability_zone + - encrypted: encrypted + - updated_at: updated_at + - replication_status: replication_status + - snapshot_id: snapshot_id + - id: id + - size: size + - user_id: user_id + - metadata: metadata + - status: status + - description: description + - multiattach: multiattach + - source_volid: source_volid + - volume: volume + - consistencygroup_id: consistencygroup_id + - name: name + - bootable: bootable + - created_at: created_at + - volume_type: volume_type + + + +Response Example +---------------- + +.. literalinclude:: ../samples/volumes/volume-update-response.json + :language: javascript + + + + +Delete volume +============= + +.. rest_method:: DELETE /v2/{tenant_id}/volumes/{volume_id} + +Deletes a volume. + +Preconditions + +- Volume status must be ``available``, ``in-use``, ``error``, or + ``error_restoring``. + +- You cannot already have a snapshot of the volume. + +- You cannot delete a volume that is in a migration. + +Asynchronous Postconditions + +- The volume is deleted in volume index. + +- The volume managed by OpenStack Block Storage is deleted in + storage node. + +Troubleshooting + +- If volume status remains in ``deleting`` or becomes + ``error_deleting`` the request failed. Ensure you meet the + preconditions then investigate the storage back end. + +- The volume managed by OpenStack Block Storage is not deleted from + the storage system. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - volume_id: volume_id + + + + + + +Create volume metadata +====================== + +.. rest_method:: POST /v2/{tenant_id}/volumes/{volume_id}/metadata + +Creates metadata for a volume. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - metadata: metadata + - tenant_id: tenant_id + - volume_id: volume_id + +Request Example +--------------- + +.. literalinclude:: ../samples/volumes/volume-metadata-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - metadata: metadata + + + + + +Show volume metadata +==================== + +.. rest_method:: GET /v2/{tenant_id}/volumes/{volume_id}/metadata + +Shows metadata for a volume. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - volume_id: volume_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - metadata: metadata + + + +Response Example +---------------- + +.. literalinclude:: ../samples/volumes/volume-metadata-show-response.json + :language: javascript + + + + +Update volume metadata +====================== + +.. rest_method:: PUT /v2/{tenant_id}/volumes/{volume_id}/metadata + +Updates metadata for a volume. + +Replaces metadata items that match keys. Does not modify items that +are not in the request. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - metadata: metadata + - tenant_id: tenant_id + - volume_id: volume_id + +Request Example +--------------- + +.. literalinclude:: ../samples/volumes/volume-metadata-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - metadata: metadata + + + +Response Example +---------------- + +.. literalinclude:: ../samples/volumes/volume-metadata-update-response.json + :language: javascript + + + diff --git a/api-ref/source/clustering/v1/clustering-v1-actions.inc b/api-ref/source/clustering/v1/clustering-v1-actions.inc new file mode 100644 index 000000000..4d66f4d47 --- /dev/null +++ b/api-ref/source/clustering/v1/clustering-v1-actions.inc @@ -0,0 +1,76 @@ +.. -*- rst -*- + +======= +Actions +======= + +Lists all actions and shows details for an action. + + +Show action details +=================== + +.. rest_method:: GET /v1/actions/{action_id} + +Shows details for an action. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - action_id: action_id + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/action-show-response.json + :language: javascript + + + + +List actions +============ + +.. rest_method:: GET /v1/actions + +Lists all actions. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - limit: limit + - marker: marker + - sort: sort + - global_project: global_project + - name: name + - target: target + - action: action + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/actions-list-response.json + :language: javascript + + + diff --git a/api-ref/source/clustering/v1/clustering-v1-build-info.inc b/api-ref/source/clustering/v1/clustering-v1-build-info.inc new file mode 100644 index 000000000..95601520d --- /dev/null +++ b/api-ref/source/clustering/v1/clustering-v1-build-info.inc @@ -0,0 +1,39 @@ +.. -*- rst -*- + +================= +Build information +================= + +Shows build information for a `Senlin +`_ deployment. + + +Show build information +====================== + +.. rest_method:: GET /v1/build-info + +Shows build information for a Senlin deployment. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/build-show-response.json + :language: javascript + + + diff --git a/api-ref/source/clustering/v1/clustering-v1-cluster_policies.inc b/api-ref/source/clustering/v1/clustering-v1-cluster_policies.inc new file mode 100644 index 000000000..b9d49c8ec --- /dev/null +++ b/api-ref/source/clustering/v1/clustering-v1-cluster_policies.inc @@ -0,0 +1,90 @@ +.. -*- rst -*- + +================ +Cluster policies +================ + +Lists all cluster policies and shows information for a cluster +policy. + + +Show cluster policy details +=========================== + +.. rest_method:: GET /v1/clusters/{cluster_id}/policies/{policy_id} + +Shows details for a policy for a cluster. + + +Normal response codes: 200 +Error response codes:404,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - cluster_id: cluster_id + - policy_id: policy_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - cluster_type: cluster_type + - enabled: enabled + - policy_name: policy_name + - cluster_name: cluster_name + - cluster_id: cluster_id + - id: id + - policy_id: policy_id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/cluster-policy-show-response.json + :language: javascript + + + + + + + +List policies +============= + +.. rest_method:: GET /v1/clusters/{cluster_id}/policies + +Lists all policies for a cluster. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - cluster_id: cluster_id + - sort: sort + - enabled: enabled + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/cluster-policies-list-response.json + :language: javascript + + + diff --git a/api-ref/source/clustering/v1/clustering-v1-clusters.inc b/api-ref/source/clustering/v1/clustering-v1-clusters.inc new file mode 100644 index 000000000..280f99323 --- /dev/null +++ b/api-ref/source/clustering/v1/clustering-v1-clusters.inc @@ -0,0 +1,230 @@ +.. -*- rst -*- + +======== +Clusters +======== + +Lists all clusters and creates, shows information for, updates, +deletes, and triggers an action on a cluster. + + +List clusters +============= + +.. rest_method:: GET /v1/clusters + +Lists clusters. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - limit: limit + - marker: marker + - sort: sort + - global_project: global_project + - name: name + - status: status + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - clusters: clusters + + + +Response Example +---------------- + +.. literalinclude:: ../samples/clusters-list-response.json + :language: javascript + + + + +Create cluster +============== + +.. rest_method:: POST /v1/clusters + +Creates a cluster. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - name: name + - parent: parent + - desired_capacity: desired_capacity + - profile_id: profile_id + - min_size: min_size + - cluster: cluster + - timeout: timeout + - max_size: max_size + - metadata: metadata + +Request Example +--------------- + +.. literalinclude:: ../samples/cluster-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - location: location + - cluster: cluster + + + + + +Trigger cluster action +====================== + +.. rest_method:: POST /v1/clusters/{cluster_id}/actions + +Triggers an action on a cluster. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - action: action + - cluster_id: cluster_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - location: location + + + + + +Show cluster details +==================== + +.. rest_method:: GET /v1/clusters/{cluster_id} + +Shows details for a cluster. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - cluster_id: cluster_id + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/cluster-show-response.json + :language: javascript + + + + +Update cluster +============== + +.. rest_method:: PATCH /v1/clusters/{cluster_id} + +Updates a cluster. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - name: name + - parent: parent + - profile_id: profile_id + - cluster: cluster + - timeout: timeout + - metadata: metadata + - cluster_id: cluster_id + +Request Example +--------------- + +.. literalinclude:: ../samples/cluster-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - location: location + - cluster: cluster + + + + + +Delete cluster +============== + +.. rest_method:: DELETE /v1/clusters/{cluster_id} + +Deletes a cluster. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - cluster_id: cluster_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - location: location + + + + diff --git a/api-ref/source/clustering/v1/clustering-v1-events.inc b/api-ref/source/clustering/v1/clustering-v1-events.inc new file mode 100644 index 000000000..6dadb66a0 --- /dev/null +++ b/api-ref/source/clustering/v1/clustering-v1-events.inc @@ -0,0 +1,78 @@ +.. -*- rst -*- + +====== +Events +====== + +Lists all events and shows information for an event. + + +List events +=========== + +.. rest_method:: GET /v1/events + +Lists events. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - limit: limit + - marker: marker + - sort: sort + - global_project: global_project + - obj_id: obj_id + - obj_type: obj_type + - obj_name: obj_name + - cluster_id: cluster_id + - action: action + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/events-list-response.json + :language: javascript + + + + +Show event details +================== + +.. rest_method:: GET /v1/events/{event_id} + +Shows details for an event. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - event_id: event_id + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/event-show-response.json + :language: javascript + + + diff --git a/api-ref/source/clustering/v1/clustering-v1-nodes.inc b/api-ref/source/clustering/v1/clustering-v1-nodes.inc new file mode 100644 index 000000000..17a89fbec --- /dev/null +++ b/api-ref/source/clustering/v1/clustering-v1-nodes.inc @@ -0,0 +1,223 @@ +.. -*- rst -*- + +===== +Nodes +===== + +Lists all nodes, and creates, shows information for, updates, +deletes a node. + + +List nodes +========== + +.. rest_method:: GET /v1/nodes + +Lists all nodes. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - limit: limit + - marker: marker + - sort: sort + - global_project: global_project + - cluster_id: cluster_id + - name: name + - status: status + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - nodes: nodes + + + +Response Example +---------------- + +.. literalinclude:: ../samples/nodes-list-response.json + :language: javascript + + + + +Create node +=========== + +.. rest_method:: POST /v1/nodes + +Creates a node. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - role: role + - profile_id: profile_id + - cluster_id: cluster_id + - name: name + - metadata: metadata + +Request Example +--------------- + +.. literalinclude:: ../samples/node-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - location: location + - node: node + + + + + +Trigger node action +=================== + +.. rest_method:: POST /v1/nodes/{node_id}/actions + +Triggers an action on a node. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - action: action + - node_id: node_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - location: location + + + + + +Update node +=========== + +.. rest_method:: PATCH /v1/nodes/{node_id} + +Updates a node. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - node: node + - node_id: node_id + +Request Example +--------------- + +.. literalinclude:: ../samples/node-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - location: location + - node: node + + + + + +Delete node +=========== + +.. rest_method:: DELETE /v1/nodes/{node_id} + +Deletes a node. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - node_id: node_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - location: location + + + + + +Show node details +================= + +.. rest_method:: GET /v1/nodes/{node_id} + +Shows data for a node. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - node_id: node_id + - show_details: show_details + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/node-show-response.json + :language: javascript + + + diff --git a/api-ref/source/clustering/v1/clustering-v1-policies.inc b/api-ref/source/clustering/v1/clustering-v1-policies.inc new file mode 100644 index 000000000..b3fbfc2cc --- /dev/null +++ b/api-ref/source/clustering/v1/clustering-v1-policies.inc @@ -0,0 +1,185 @@ +.. -*- rst -*- + +======== +Policies +======== + +Lists all policies and creates, shows information for, updates, and +deletes a policy. + + +List policies +============= + +.. rest_method:: GET /v1/policies + +Lists all policies. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - limit: limit + - marker: marker + - sort: sort + - global_project: global_project + - name: name + - type: type + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - policies: policies + + + +Response Example +---------------- + +.. literalinclude:: ../samples/policies-list-response.json + :language: javascript + + + + +Create policy +============= + +.. rest_method:: POST /v1/policies + +Creates a policy. + +Error response codes:201, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - policy: policy + - spec: spec + - cooldown: cooldown + - name: name + - level: level + +Request Example +--------------- + +.. literalinclude:: ../samples/policy-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - location: location + - policy: policy + + + + + +Show policy details +=================== + +.. rest_method:: GET /v1/policies/{policy_id} + +Shows details for a policy. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - policy_id: policy_id + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/policy-show-response.json + :language: javascript + + + + +Update policy +============= + +.. rest_method:: PATCH /v1/policies/{policy_id} + +Updates a policy. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - policy: policy + - policy_id: policy_id + +Request Example +--------------- + +.. literalinclude:: ../samples/policy-update-request.json + :language: javascript + + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/policy-update-response.json + :language: javascript + + + + +Delete policy +============= + +.. rest_method:: DELETE /v1/policies/{policy_id} + +Deletes a policy. + +Error response codes:204, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - policy_id: policy_id + + + + + diff --git a/api-ref/source/clustering/v1/clustering-v1-policy_types.inc b/api-ref/source/clustering/v1/clustering-v1-policy_types.inc new file mode 100644 index 000000000..029e02133 --- /dev/null +++ b/api-ref/source/clustering/v1/clustering-v1-policy_types.inc @@ -0,0 +1,76 @@ +.. -*- rst -*- + +============ +Policy types +============ + +Lists all policy types and shows details for a policy type. + + +List policy types +================= + +.. rest_method:: GET /v1/policy-types + +Lists all supported policy types. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/policy-types-list-response.json + :language: javascript + + + + +Show policy type details +======================== + +.. rest_method:: GET /v1/policy-types/{policy_type} + +Shows details for a policy type. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - policy_type: policy_type + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/policy-type-show-response.json + :language: javascript + + + diff --git a/api-ref/source/clustering/v1/clustering-v1-profile_types.inc b/api-ref/source/clustering/v1/clustering-v1-profile_types.inc new file mode 100644 index 000000000..98af09e5d --- /dev/null +++ b/api-ref/source/clustering/v1/clustering-v1-profile_types.inc @@ -0,0 +1,69 @@ +.. -*- rst -*- + +============= +Profile types +============= + +Lists all profile types and shows details for a profile type. + + +Show profile type details +========================= + +.. rest_method:: GET /v1/profile-types/{profile_type} + +Shows details for a profile type. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - profile_type: profile_type + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/profile-type-show-response.json + :language: javascript + + + + +List profile types +================== + +.. rest_method:: GET /v1/profile-types + +Lists supported profile types. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/profile-types-list-response.json + :language: javascript + + + diff --git a/api-ref/source/clustering/v1/clustering-v1-profiles.inc b/api-ref/source/clustering/v1/clustering-v1-profiles.inc new file mode 100644 index 000000000..e082065a8 --- /dev/null +++ b/api-ref/source/clustering/v1/clustering-v1-profiles.inc @@ -0,0 +1,185 @@ +.. -*- rst -*- + +======== +Profiles +======== + +Lists all profiles and creates, shows information for, updates, and +deletes a profile. + + +Show profile details +==================== + +.. rest_method:: GET /v1/profiles/{profile_id} + +Shows details for a profile. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - profile_id: profile_id + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/profile-show-response.json + :language: javascript + + + + +Update profile +============== + +.. rest_method:: PATCH /v1/profiles/{profile_id} + +Updates a profile. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - name: name + - metadata: metadata + - profile_id: profile_id + +Request Example +--------------- + +.. literalinclude:: ../samples/profile-update-request.json + :language: javascript + + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/profile-update-response.json + :language: javascript + + + + +Delete profile +============== + +.. rest_method:: DELETE /v1/profiles/{profile_id} + +Deletes a profile. + +Error response codes:204, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - profile_id: profile_id + + + + + + +List profiles +============= + +.. rest_method:: GET /v1/profiles + +Lists all profiles. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - limit: limit + - marker: marker + - sort: sort + - global_project: global_project + - name: name + - type: type + - metadata: metadata + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - profiles: profiles + + + +Response Example +---------------- + +.. literalinclude:: ../samples/profiles-list-response.json + :language: javascript + + + + +Create profile +============== + +.. rest_method:: POST /v1/profiles + +Creates a profile. + +Error response codes:201, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - spec: spec + - name: name + - metadata: metadata + +Request Example +--------------- + +.. literalinclude:: ../samples/profile-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - location: location + - profile: profile + + + + diff --git a/api-ref/source/clustering/v1/clustering-v1-receivers.inc b/api-ref/source/clustering/v1/clustering-v1-receivers.inc new file mode 100644 index 000000000..a85e75901 --- /dev/null +++ b/api-ref/source/clustering/v1/clustering-v1-receivers.inc @@ -0,0 +1,138 @@ +.. -*- rst -*- + +========= +Receivers +========= + +Lists all receivers and creates, shows information for, and deletes +a receiver. + + +Show receiver details +===================== + +.. rest_method:: GET /v1/receivers/{receiver_id} + +Shows details for a receiver. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - receiver_id: receiver_id + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/receiver-show-response.json + :language: javascript + + + + +Delete receiver +=============== + +.. rest_method:: DELETE /v1/receivers/{receiver_id} + +Deletes a receiver. + +Error response codes:204, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - receiver_id: receiver_id + + + + + + +List receivers +============== + +.. rest_method:: GET /v1/receivers + +Lists all receivers. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - limit: limit + - marker: marker + - sort: sort + - global_project: global_project + - name: name + - type: type + - user: user + - cluster_id: cluster_id + - action: action + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/receivers-list-response.json + :language: javascript + + + + +Create receiver +=============== + +.. rest_method:: POST /v1/receivers + +Creates a receiver. + +Error response codes:201, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - receiver: receiver + +Request Example +--------------- + +.. literalinclude:: ../samples/receiver-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - location: location + - receiver: receiver + + + + diff --git a/api-ref/source/clustering/v1/clustering-v1-webhooks.inc b/api-ref/source/clustering/v1/clustering-v1-webhooks.inc new file mode 100644 index 000000000..ba7f73bed --- /dev/null +++ b/api-ref/source/clustering/v1/clustering-v1-webhooks.inc @@ -0,0 +1,39 @@ +.. -*- rst -*- + +======== +Webhooks +======== + +Triggers an action represented by a webhook. + + +Trigger webhook action +====================== + +.. rest_method:: POST /v1/webhooks/{webhook_id}/trigger + +Triggers a webhook receiver. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - webhook_id: webhook_id + - V: V + - params: params + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - location: location + + + + diff --git a/api-ref/source/clustering/v1/parameters.yaml b/api-ref/source/clustering/v1/parameters.yaml new file mode 100644 index 000000000..54ecf5fa7 --- /dev/null +++ b/api-ref/source/clustering/v1/parameters.yaml @@ -0,0 +1,616 @@ +# variables in header +location: + description: | + The URL against which to check the status of the + action spawned from the request. + in: header + required: true + type: string +location_1: + description: | + The URL against which to check the status of the + resource. + in: header + required: true + type: string + +# variables in path +action_id: + description: | + The UUID of the action. + in: path + required: false + type: string +cluster_id: + description: | + The UUID of the cluster. + in: path + required: false + type: string +event_id: + description: | + The UUID of the event. + in: path + required: false + type: string +node_id: + description: | + The UUID of the node. + in: path + required: false + type: string +policy_id: + description: | + The UUID of the policy. + in: path + required: false + type: string +policy_type: + description: | + The name of the policy type. + in: path + required: false + type: string +profile_id_2: + description: | + The UUID of the profile. + in: path + required: false + type: string +profile_type: + description: | + The name of the profile type. + in: path + required: false + type: string +receiver_id: + description: | + The UUID of the receiver. + in: path + required: false + type: string +webhook_id: + description: | + The UUID of the webhook. + in: path + required: false + type: string + +# variables in query +V: + description: | + The webhook implementation version requested. + in: query + required: true + type: string +action_1: + description: | + Filters the response by an action name. Use this + filter multiple times to filter by multiple names. + in: query + required: false + type: string +action_2: + description: | + Filters the response by the action name + associated with an event. Use this filter multiple times to filter + by multiple actions. + in: query + required: false + type: string +action_3: + description: | + Filters the response by the targeted action of a + receiver. + in: query + required: false + type: string +cluster_id_2: + description: | + Filters the response by the cluster ID associated + with an event. Use this filter multiple times to filter by + multiple clusters. + in: query + required: false + type: string +cluster_id_3: + description: | + Filters the response by the cluster that owns a + node. + in: query + required: false + type: string +cluster_id_4: + description: | + Filters the response by the ID of the targeted + cluster of a receiver. + in: query + required: false + type: string +enabled: + description: | + Filters the response by a policy enabled status + on the cluster. + in: query + required: false + type: boolean +global_project: + description: | + Indicates whether to include objects for all + projects or objects for the current project in the response. If + you are an administrative user and you set this value to ``true``, + the call returns all objects from all projects. Default is + ``false``, which returns only objects in the current project. + in: query + required: false + type: boolean +limit: + description: | + Requests a page size of items. Returns a number + of items up to a limit value. Use the ``limit`` parameter to make + an initial limited request and use the ID of the last-seen item + from the response as the ``marker`` parameter value in a + subsequent limited request. + in: query + required: false + type: integer +marker: + description: | + The ID of the last-seen item. Use the ``limit`` + parameter to make an initial limited request and use the ID of the + last-seen item from the response as the ``marker`` parameter value + in a subsequent limited request. + in: query + required: false + type: string +metadata_3: + description: | + Filters the response by a metadata key and value + pair. + in: query + required: false + type: object +name_10: + description: | + Filters the response by the name of a receiver. + in: query + required: false + type: string +name_4: + description: | + Filters the response by an action name. Use this + filter multiple times to filter by multiple names. + in: query + required: false + type: string +name_5: + description: | + Filters the response by a cluster name. Use this + filter multiple times to filter by multiple names. + in: query + required: false + type: string +name_6: + description: | + Filters the response by the name of a node. + in: query + required: false + type: string +name_7: + description: | + Filters the response by the name of a policy. + in: query + required: false + type: string +name_9: + description: | + Filters the response by the name of a profile. + in: query + required: false + type: string +obj_id: + description: | + Filters the response by the object ID for an + event. Use this filter multiple times to filter by multiple + objects. + in: query + required: false + type: string +obj_name: + description: | + Filters the response by the name of object + associated with an event. Use this filter multiple times to filter + by multiple objects. + in: query + required: false + type: string +obj_type: + description: | + Filters the response by the type of object + associated with an event. Use this filter multiple times to filter + by multiple objects. A valid value is ``CLUSTER`` or ``NODE``. + in: query + required: false + type: string +params: + description: | + The query string that forms the inputs to use for + the targeted action. + in: query + required: false + type: object +show_details: + description: | + Indicates whether the node details are returned. + Default is ``false``. + in: query + required: false + type: boolean +sort: + description: | + Sorts the response by one or more attribute and optional sort + direction combinations. A valid direction is ``asc`` (ascending) or + ``desc`` (descending). Default direction is ``asc`` (ascending). + + Specify the list as < key > [: < direction > ]. + + For example, the following query parameters in the URI sort the + objects in the response by ``name`` in ascending order and then by + ``status`` in descending order: + + .. code-block:: json + + GET /v2/images?sort=name:asc,status:desc + + The following query parameters in the URI sort the objects in the + response by ``name`` in descending order and then by ``status`` in + ascending order. + + .. code-block:: json + + GET /v2/images?sort=name:desc,status + in: query + required: false + type: string +status: + description: | + Filters the response by a cluster status. Use + this filter multiple times to filter by multiple statuses. + in: query + required: false + type: string +status_1: + description: | + Filters the response by the status of a node. + in: query + required: false + type: string +target: + description: | + Filters the response by the targeted object ID + that is associated with an action. An object can be a cluster, a + node, and so on. Use this filter multiple times to filter by + multiple targets. + in: query + required: false + type: string +type: + description: | + Filters the response by the type of a policy. + in: query + required: false + type: string +type_1: + description: | + Filters the response by the type of a profile. + in: query + required: false + type: string +type_2: + description: | + Filters the response by the type of a receiver. + in: query + required: false + type: string +user: + description: | + Filters the response by the user name of a + receiver. + in: query + required: false + type: string + +# variables in body +action: + description: | + The action to trigger. Each action takes a + different set of parameters. Supported actions include: - + ``add_nodes`` Add one or more nodes, as a list, to a cluster. For + example: - ``del_nodes`` Delete one or more nodes, as a list, + from a cluster. For example: - ``scale_out`` Enlarge the + cluster by ``count`` number of nodes. For example: - + ``scale_in`` Shrink the cluster by ``count`` number of nodes. For + example: - ``resize`` Change the size of the cluster by + ``adjustment_type``, ``number``, ``min_step``, ``min_size``, + ``max_size``, or ``strict`` values. For example: - ``check`` + Check the health status of a cluster. For example: - ``recover`` + Recover a cluster from its current unhealthy status. For + example: - ``policy_attach`` Attach a policy to a cluster. The + request body contains parameters for the policy attachment: - + ``policy_detach`` Detach a policy from a cluster. The request body + contains the ID of the policy: - ``policy_update`` Update the + policy attachment. Specify the policy ID and property settings + in the request body: + in: body + required: true + type: string +action_4: + description: | + The action to trigger. Each action takes a + different set of parameters. Supported actions include: - + ``check`` Check the health status of a node. For example: - + ``recover`` Recover a node from its current unhealthy status. For + example: + in: body + required: true + type: string +cluster: + description: | + A map of cluster details. + in: body + required: true + type: object +cluster_id_1: + description: | + The ID or shortID or name of the cluster the node + lives in. If not specified, the node created will be an orphaned + node. + in: body + required: false + type: string +clusters: + description: | + List of cluster records. Each record contains + fields such as ``created_at``, ``id``, ``name``, ``profile_id``, + ``size``, ``nodes``, ``status``, ``status_reason``, and so on. + in: body + required: true + type: array +cooldown: + description: | + The cooldown value, in seconds. + in: body + required: false + type: integer +desired_capacity: + description: | + The capacity, or initial size, of the cluster. + Default is 0. + in: body + required: true + type: integer +level: + description: | + An integer value that represents the default + enforcement level. + in: body + required: false + type: integer +max_size: + description: | + The maximum size of the cluster. Default is + ``-1``, which indicates that no upper limit exists for the cluster + size. + in: body + required: false + type: integer +metadata: + description: | + A set of key and value pairs to associate with + the cluster. + in: body + required: false + type: object +metadata_1: + description: | + A set of key and value pairs to associate with + the node. + in: body + required: false + type: object +metadata_2: + description: | + A list of key and value pairs to associate with + the profile. + in: body + required: false + type: array +metadata_4: + description: | + A list of key and value pairs to associate with + the target profile. + in: body + required: false + type: object +min_size: + description: | + The minimum size of the cluster. Default is 0. + in: body + required: false + type: integer +name: + description: | + The name of the cluster. + in: body + required: true + type: string +name_1: + description: | + The name of the node to be created. + in: body + required: true + type: string +name_11: + description: | + New name for the target profile. + in: body + required: false + type: string +name_2: + description: | + The name for the policy. + in: body + required: true + type: string +name_3: + description: | + The name for the profile. + in: body + required: true + type: string +name_8: + description: | + The name of the policy type. + in: body + required: true + type: string +node: + description: | + Detailed data for the node, such as ``id``, + ``name``, ``status``, and so on. + in: body + required: true + type: object +node_1: + description: | + A map with detailed data for the node. **Node + update request body** - ``name`` New name for the node + (optional). - ``profile_id`` Name, ID, or short ID of the new + profile to use by the node. The new profile has to have the same + profile type as that of the node (optional). - ``role`` The new + role this node plays in a cluster (optional). - ``metadata`` A + list of key-value pairs to attach to the updated node + (optional). + in: body + required: true + type: object +nodes: + description: | + List of node records. Each record contains fields + such as ``id``, ``cluster_id``, ``name``, ``physical_id``, + ``profile_id``, ``created_at``, ``index``, ``status``, + ``status_reason``, ``metadata``, ``updated_at``, and so on. + in: body + required: true + type: array +parent: + description: | + The UUID of the parent cluster if the cluster is + a nested cluster. + in: body + required: false + type: string +policies: + description: | + List of policy records. Each record contains + fields such as ``id``, ``name``, ``type``, ``spec``, and so on. + in: body + required: true + type: array +policy: + description: | + A map with keys and values that specify the + details for the policy to be created: + in: body + required: true + type: object +policy_1: + description: | + A map with a set of key and value pairs that + specify the details of the policy: **Policy body** - ``name`` + Name for the policy, if specified. + in: body + required: true + type: object +profile: + description: | + A dictionary with profile details. **Profile + create response** - ``id`` An unique ID for the profile. - + ``name`` Name for the profile. - ``type`` Name of policy type + referenced by the profile. - ``spec`` Detailed specification + based on the profile type. - ``metadata`` A list of key and value + pairs that are attached to the profile. - ``created_at`` The + UTC date and time stamp when the profile was created. - + ``updated_at`` The UTC date and time stamp when the profile was + updated. - ``domain`` The ID of the domain to which the profile + belongs. - ``project`` The ID of the project to which the profile + belongs. - ``user`` The ID of the user who created the profile. + in: body + required: true + type: object +profile_id: + description: | + The ID or name of the profile for the cluster. + in: body + required: true + type: string +profile_id_1: + description: | + The ID or shortID or name of the profile for the + node. + in: body + required: true + type: string +profiles: + description: | + Profile records. Each record contains the ``id``, + ``name``, ``type``, ``spec``, ``metadata``, and other fields. + in: body + required: true + type: array +receiver: + description: | + A map with detailed data for the receiver. + **Receiver Create Request Body** - ``name`` Name for the receiver + (optional). - ``cluster_id`` Name, ID, or short ID of the object + targeted by the receiver (required). - ``type`` The type of the + receiver where the only valid value is ``webhook`` currently + (required). - ``action`` The action to initiate when the receiver + is triggered. A valid value should be the name of an action that + can be applied on a cluster. - ``actor`` A map of key and value + pairs to use for authentication. If omitted, the requester is + assumed to be the actor (optional). - ``params`` A map of key and + value pairs to use for action creation. Some actions might + require certain input parameters (optional). + in: body + required: true + type: object +role: + description: | + A string indicating the role this node plays in a + cluster. + in: body + required: false + type: string +spec: + description: | + A detailed specification based on the policy + type. + in: body + required: true + type: object +spec_1: + description: | + Detailed specification based on the chosen + profile type. + in: body + required: true + type: object +timeout: + description: | + The timeout value, in minutes, for cluster + creation. Default is 60. + in: body + required: false + type: integer + diff --git a/api-ref/source/clustering/v1/samples/action-show-response.json b/api-ref/source/clustering/v1/samples/action-show-response.json new file mode 100644 index 000000000..cbb0ebd62 --- /dev/null +++ b/api-ref/source/clustering/v1/samples/action-show-response.json @@ -0,0 +1,21 @@ +{ + "action": "CLUSTER_DELETE", + "cause": "RPC Request", + "context": {}, + "created_at": "2015-06-27T05:09:43", + "depended_by": [], + "depends_on": [], + "end_time": 1423570000.0, + "id": "ffbb9175-d510-4bc1-b676-c6aba2a4ca81", + "inputs": {}, + "interval": -1, + "name": "cluster_delete_fcc9b635", + "outputs": {}, + "owner": null, + "start_time": 1423570000.0, + "status": "FAILED", + "status_reason": "Cluster action FAILED", + "target": "fcc9b635-52e3-490b-99f2-87b1640e4e89", + "timeout": 3600, + "updated_at": null +} diff --git a/api-ref/source/clustering/v1/samples/actions-list-response.json b/api-ref/source/clustering/v1/samples/actions-list-response.json new file mode 100644 index 000000000..ac4072679 --- /dev/null +++ b/api-ref/source/clustering/v1/samples/actions-list-response.json @@ -0,0 +1,44 @@ +{ + "actions": [ + { + "action": "NODE_CREATE", + "cause": "RPC Request", + "created_at": "2015-12-04T04:54:41", + "depended_by": [], + "depends_on": [], + "end_time": 1425550000.0, + "id": "2366d440-c73e-4961-9254-6d1c3af7c167", + "inputs": {}, + "interval": -1, + "name": "node_create_0df0931b", + "outputs": {}, + "owner": null, + "start_time": 1425550000.0, + "status": "SUCCEEDED", + "status_reason": "Action completed successfully.", + "target": "0df0931b-e251-4f2e-8719-4ebfda3627ba", + "timeout": 3600, + "updated_at": null + }, + { + "action": "NODE_DELETE", + "cause": "RPC Request", + "created_at": "2015-11-04T05:21:41", + "depended_by": [], + "depends_on": [], + "end_time": 1425550000.0, + "id": "edce3528-864f-41fb-8759-f4707925cc09", + "inputs": {}, + "interval": -1, + "name": "node_delete_f0de9b9c", + "outputs": {}, + "owner": null, + "start_time": 1425550000.0, + "status": "SUCCEEDED", + "status_reason": "Action completed successfully.", + "target": "f0de9b9c-6d48-4a46-af21-2ca8607777fe", + "timeout": 3600, + "updated_at": null + } + ] +} diff --git a/api-ref/source/clustering/v1/samples/build-show-response.json b/api-ref/source/clustering/v1/samples/build-show-response.json new file mode 100644 index 000000000..a5ddde4c0 --- /dev/null +++ b/api-ref/source/clustering/v1/samples/build-show-response.json @@ -0,0 +1,10 @@ +{ + "build_info": { + "api": { + "revision": "1.0" + }, + "engine": { + "revision": "2.0" + } + } +} diff --git a/api-ref/source/clustering/v1/samples/cluster-add-nodes-request.json b/api-ref/source/clustering/v1/samples/cluster-add-nodes-request.json new file mode 100644 index 000000000..c2cefbaec --- /dev/null +++ b/api-ref/source/clustering/v1/samples/cluster-add-nodes-request.json @@ -0,0 +1,7 @@ +{ + "add_nodes": { + "nodes": [ + "node1" + ] + } +} diff --git a/api-ref/source/clustering/v1/samples/cluster-check-request.json b/api-ref/source/clustering/v1/samples/cluster-check-request.json new file mode 100644 index 000000000..6d831ea62 --- /dev/null +++ b/api-ref/source/clustering/v1/samples/cluster-check-request.json @@ -0,0 +1,3 @@ +{ + "check": {} +} diff --git a/api-ref/source/clustering/v1/samples/cluster-create-request.json b/api-ref/source/clustering/v1/samples/cluster-create-request.json new file mode 100644 index 000000000..735b2fef4 --- /dev/null +++ b/api-ref/source/clustering/v1/samples/cluster-create-request.json @@ -0,0 +1,11 @@ +{ + "cluster": { + "desired_capacity": 0, + "max_size": -1, + "metadata": {}, + "min_size": 0, + "name": "test_cluster", + "profile_id": "mystack", + "timeout": null + } +} diff --git a/api-ref/source/clustering/v1/samples/cluster-create-response.json b/api-ref/source/clustering/v1/samples/cluster-create-response.json new file mode 100644 index 000000000..c9b822fda --- /dev/null +++ b/api-ref/source/clustering/v1/samples/cluster-create-response.json @@ -0,0 +1,24 @@ +{ + "cluster": { + "created_at": null, + "data": {}, + "desired_capacity": 4, + "domain": null, + "id": "45edadcb-c73b-4920-87e1-518b2f29f54b", + "init_at": "2015-02-10T14:16:10", + "max_size": -1, + "metadata": {}, + "min_size": 0, + "name": "test_cluster", + "nodes": [], + "policies": [], + "profile_id": "edc63d0a-2ca4-48fa-9854-27926da76a4a", + "profile_name": "mystack", + "project": "6e18cc2bdbeb48a5b3cad2dc499f6804", + "status": "INIT", + "status_reason": "Initializing", + "timeout": 3600, + "updated_at": null, + "user": "5e5bf8027826429c96af157f68dc9072" + } +} diff --git a/api-ref/source/clustering/v1/samples/cluster-delete-nodes-request.json b/api-ref/source/clustering/v1/samples/cluster-delete-nodes-request.json new file mode 100644 index 000000000..283f71505 --- /dev/null +++ b/api-ref/source/clustering/v1/samples/cluster-delete-nodes-request.json @@ -0,0 +1,7 @@ +{ + "del_nodes": { + "nodes": [ + "node1" + ] + } +} diff --git a/api-ref/source/clustering/v1/samples/cluster-policies-list-response.json b/api-ref/source/clustering/v1/samples/cluster-policies-list-response.json new file mode 100644 index 000000000..a34262104 --- /dev/null +++ b/api-ref/source/clustering/v1/samples/cluster-policies-list-response.json @@ -0,0 +1,22 @@ +{ + "cluster_policies": [ + { + "cluster_id": "7d85f602-a948-4a30-afd4-e84f47471c15", + "cluster_name": "cluster4", + "enabled": true, + "id": "06be3a1f-b238-4a96-a737-ceec5714087e", + "policy_id": "714fe676-a08f-4196-b7af-61d52eeded15", + "policy_name": "dp01", + "policy_type": "senlin.policy.deletion-1.0" + }, + { + "cluster_id": "7d85f602-a948-4a30-afd4-e84f47471c15", + "cluster_name": "cluster4", + "enabled": true, + "id": "abddc45e-ac31-4f90-93cc-db55a7d8dd6d", + "policy_id": "e026e09f-a3e9-4dad-a1b9-d7ba316026a1", + "policy_name": "sp1", + "policy_type": "senlin.policy.scaling-1.0" + } + ] +} diff --git a/api-ref/source/clustering/v1/samples/cluster-policy-attach-request.json b/api-ref/source/clustering/v1/samples/cluster-policy-attach-request.json new file mode 100644 index 000000000..c7734c93a --- /dev/null +++ b/api-ref/source/clustering/v1/samples/cluster-policy-attach-request.json @@ -0,0 +1,6 @@ +{ + "policy_attach": { + "enabled": true, + "policy_id": "lb001" + } +} diff --git a/api-ref/source/clustering/v1/samples/cluster-policy-detach-request.json b/api-ref/source/clustering/v1/samples/cluster-policy-detach-request.json new file mode 100644 index 000000000..91f30b5ab --- /dev/null +++ b/api-ref/source/clustering/v1/samples/cluster-policy-detach-request.json @@ -0,0 +1,5 @@ +{ + "policy_detach": { + "policy_id": "lb001" + } +} diff --git a/api-ref/source/clustering/v1/samples/cluster-policy-show-response.json b/api-ref/source/clustering/v1/samples/cluster-policy-show-response.json new file mode 100644 index 000000000..caf05eb91 --- /dev/null +++ b/api-ref/source/clustering/v1/samples/cluster-policy-show-response.json @@ -0,0 +1,11 @@ +{ + "cluster_policy": { + "cluster_id": "7d85f602-a948-4a30-afd4-e84f47471c15", + "cluster_name": "cluster4", + "enabled": true, + "id": "06be3a1f-b238-4a96-a737-ceec5714087e", + "policy_id": "714fe676-a08f-4196-b7af-61d52eeded15", + "policy_name": "dp01", + "policy_type": "senlin.policy.deletion-1.0" + } +} diff --git a/api-ref/source/clustering/v1/samples/cluster-policy-update-request.json b/api-ref/source/clustering/v1/samples/cluster-policy-update-request.json new file mode 100644 index 000000000..1eabc2beb --- /dev/null +++ b/api-ref/source/clustering/v1/samples/cluster-policy-update-request.json @@ -0,0 +1,6 @@ +{ + "policy_update": { + "enabled": false, + "policy_id": "lb001" + } +} diff --git a/api-ref/source/clustering/v1/samples/cluster-recover-request.json b/api-ref/source/clustering/v1/samples/cluster-recover-request.json new file mode 100644 index 000000000..84273532f --- /dev/null +++ b/api-ref/source/clustering/v1/samples/cluster-recover-request.json @@ -0,0 +1,5 @@ +{ + "recover": { + "operation": "rebuild" + } +} diff --git a/api-ref/source/clustering/v1/samples/cluster-resize-request.json b/api-ref/source/clustering/v1/samples/cluster-resize-request.json new file mode 100644 index 000000000..d4347e4e5 --- /dev/null +++ b/api-ref/source/clustering/v1/samples/cluster-resize-request.json @@ -0,0 +1,10 @@ +{ + "resize": { + "adjustment_type": "CHANGE_IN_PERCENTAGE", + "max_size": 20, + "min_step": 1, + "min_size": 5, + "number": 20, + "strict": true + } +} diff --git a/api-ref/source/clustering/v1/samples/cluster-scale-in-nodes-request.json b/api-ref/source/clustering/v1/samples/cluster-scale-in-nodes-request.json new file mode 100644 index 000000000..d008f4f98 --- /dev/null +++ b/api-ref/source/clustering/v1/samples/cluster-scale-in-nodes-request.json @@ -0,0 +1,5 @@ +{ + "scale_in": { + "count": "2" + } +} diff --git a/api-ref/source/clustering/v1/samples/cluster-scale-out-nodes-request.json b/api-ref/source/clustering/v1/samples/cluster-scale-out-nodes-request.json new file mode 100644 index 000000000..0be206099 --- /dev/null +++ b/api-ref/source/clustering/v1/samples/cluster-scale-out-nodes-request.json @@ -0,0 +1,5 @@ +{ + "scale_out": { + "count": "1" + } +} diff --git a/api-ref/source/clustering/v1/samples/cluster-show-response.json b/api-ref/source/clustering/v1/samples/cluster-show-response.json new file mode 100644 index 000000000..6db8d6a4a --- /dev/null +++ b/api-ref/source/clustering/v1/samples/cluster-show-response.json @@ -0,0 +1,24 @@ +{ + "cluster": { + "created_at": "2015-02-11T15:13:20", + "data": {}, + "desired_capacity": 0, + "domain": null, + "id": "45edadcb-c73b-4920-87e1-518b2f29f54b", + "init_at": "2015-02-10T14:26:10", + "max_size": -1, + "metadata": {}, + "min_size": 0, + "name": "test_cluster", + "nodes": [], + "policies": [], + "profile_id": "edc63d0a-2ca4-48fa-9854-27926da76a4a", + "profile_name": "mystack", + "project": "6e18cc2bdbeb48a5b3cad2dc499f6804", + "status": "ACTIVE", + "status_reason": "Creation succeeded", + "timeout": 3600, + "updated_at": null, + "user": "5e5bf8027826429c96af157f68dc9072" + } +} diff --git a/api-ref/source/clustering/v1/samples/cluster-update-request.json b/api-ref/source/clustering/v1/samples/cluster-update-request.json new file mode 100644 index 000000000..bf8c4892b --- /dev/null +++ b/api-ref/source/clustering/v1/samples/cluster-update-request.json @@ -0,0 +1,8 @@ +{ + "cluster": { + "metadata": null, + "name": null, + "profile_id": null, + "timeout": "30" + } +} diff --git a/api-ref/source/clustering/v1/samples/cluster-update-response.json b/api-ref/source/clustering/v1/samples/cluster-update-response.json new file mode 100644 index 000000000..3fb98085f --- /dev/null +++ b/api-ref/source/clustering/v1/samples/cluster-update-response.json @@ -0,0 +1,24 @@ +{ + "cluster": { + "created_at": "2015-02-11T15:13:20", + "data": {}, + "desired_capacity": 0, + "domain": null, + "id": "45edadcb-c73b-4920-87e1-518b2f29f54b", + "init_at": "2015-02-10T14:26:10", + "max_size": -1, + "metadata": {}, + "min_size": 0, + "name": "test_cluster", + "nodes": [], + "policies": [], + "profile_id": "edc63d0a-2ca4-48fa-9854-27926da76a4a", + "profile_name": "mystack", + "project": "6e18cc2bdbeb48a5b3cad2dc499f6804", + "status": "INIT", + "status_reason": "Initializing", + "timeout": 3600, + "updated_at": null, + "user": "5e5bf8027826429c96af157f68dc9072" + } +} diff --git a/api-ref/source/clustering/v1/samples/clusters-list-response.json b/api-ref/source/clustering/v1/samples/clusters-list-response.json new file mode 100644 index 000000000..483f2291c --- /dev/null +++ b/api-ref/source/clustering/v1/samples/clusters-list-response.json @@ -0,0 +1,30 @@ +{ + "clusters": [ + { + "created_at": "2015-02-10T14:26:14", + "data": {}, + "desired_capacity": 4, + "domain": null, + "id": "7d85f602-a948-4a30-afd4-e84f47471c15", + "init_at": "2015-02-10T14:26:11", + "max_size": -1, + "metadata": {}, + "min_size": 0, + "name": "cluster1", + "nodes": [ + "b07c57c8-7ab2-47bf-bdf8-e894c0c601b9", + "ecc23d3e-bb68-48f8-8260-c9cf6bcb6e61", + "da1e9c87-e584-4626-a120-022da5062dac" + ], + "policies": [], + "profile_id": "edc63d0a-2ca4-48fa-9854-27926da76a4a", + "profile_name": "mystack", + "project": "6e18cc2bdbeb48a5b3cad2dc499f6804", + "status": "ACTIVE", + "status_reason": "Cluster scale-in succeeded", + "timeout": 3600, + "updated_at": null, + "user": "5e5bf8027826429c96af157f68dc9072" + } + ] +} diff --git a/api-ref/source/clustering/v1/samples/event-show-response.json b/api-ref/source/clustering/v1/samples/event-show-response.json new file mode 100644 index 000000000..f3effda63 --- /dev/null +++ b/api-ref/source/clustering/v1/samples/event-show-response.json @@ -0,0 +1,16 @@ +{ + "event": { + "action": "create", + "cluster_id": null, + "id": "2d255b9c-8f36-41a2-a137-c0175ccc29c3", + "level": "20", + "obj_id": "0df0931b-e251-4f2e-8719-4ebfda3627ba", + "obj_name": "node009", + "obj_type": "NODE", + "project": "6e18cc2bdbeb48a5b3cad2dc499f6804", + "status": "CREATING", + "status_reason": "Initializing", + "timestamp": "2015-03-05T08:53:15", + "user": "a21ded6060534d99840658a777c2af5a" + } +} diff --git a/api-ref/source/clustering/v1/samples/events-list-response.json b/api-ref/source/clustering/v1/samples/events-list-response.json new file mode 100644 index 000000000..85d02e33d --- /dev/null +++ b/api-ref/source/clustering/v1/samples/events-list-response.json @@ -0,0 +1,18 @@ +{ + "events": [ + { + "action": "create", + "cluster_id": null, + "id": "2d255b9c-8f36-41a2-a137-c0175ccc29c3", + "level": "20", + "obj_id": "0df0931b-e251-4f2e-8719-4ebfda3627ba", + "obj_name": "node009", + "obj_type": "NODE", + "project": "6e18cc2bdbeb48a5b3cad2dc499f6804", + "status": "CREATING", + "status_reason": "Initializing", + "timestamp": "2015-03-05T08:53:15", + "user": "a21ded6060534d99840658a777c2af5a" + } + ] +} diff --git a/api-ref/source/clustering/v1/samples/node-check-request.json b/api-ref/source/clustering/v1/samples/node-check-request.json new file mode 100644 index 000000000..6d831ea62 --- /dev/null +++ b/api-ref/source/clustering/v1/samples/node-check-request.json @@ -0,0 +1,3 @@ +{ + "check": {} +} diff --git a/api-ref/source/clustering/v1/samples/node-create-request.json b/api-ref/source/clustering/v1/samples/node-create-request.json new file mode 100644 index 000000000..55e5c3311 --- /dev/null +++ b/api-ref/source/clustering/v1/samples/node-create-request.json @@ -0,0 +1,9 @@ +{ + "node": { + "cluster_id": null, + "metadata": {}, + "name": "node009", + "profile_id": "mystack", + "role": "master" + } +} diff --git a/api-ref/source/clustering/v1/samples/node-create-response.json b/api-ref/source/clustering/v1/samples/node-create-response.json new file mode 100644 index 000000000..5a2f2f3be --- /dev/null +++ b/api-ref/source/clustering/v1/samples/node-create-response.json @@ -0,0 +1,22 @@ +{ + "node": { + "cluster_id": null, + "created_at": null, + "data": {}, + "domain": null, + "id": "0df0931b-e251-4f2e-8719-4ebfda3627ba", + "index": -1, + "init_at": "2015-03-05T08:53:15", + "metadata": {}, + "name": "node009", + "physical_id": "", + "profile_id": "edc63d0a-2ca4-48fa-9854-27926da76a4a", + "profile_name": "mystack", + "project": "6e18cc2bdbeb48a5b3cad2dc499f6804", + "role": "master", + "status": "INIT", + "status_reason": "Initializing", + "updated_at": null, + "user": "5e5bf8027826429c96af157f68dc9072" + } +} diff --git a/api-ref/source/clustering/v1/samples/node-recover-request.json b/api-ref/source/clustering/v1/samples/node-recover-request.json new file mode 100644 index 000000000..84273532f --- /dev/null +++ b/api-ref/source/clustering/v1/samples/node-recover-request.json @@ -0,0 +1,5 @@ +{ + "recover": { + "operation": "rebuild" + } +} diff --git a/api-ref/source/clustering/v1/samples/node-show-response.json b/api-ref/source/clustering/v1/samples/node-show-response.json new file mode 100644 index 000000000..7d19bc394 --- /dev/null +++ b/api-ref/source/clustering/v1/samples/node-show-response.json @@ -0,0 +1,22 @@ +{ + "node": { + "cluster_id": null, + "created_at": "2015-02-10T12:03:16", + "data": {}, + "domain": null, + "id": "d5779bb0-f0a0-49c9-88cc-6f078adb5a0b", + "index": -1, + "init_at": "2015-02-10T12:03:13", + "metadata": {}, + "name": "node1", + "physical_id": "f41537fa-22ab-4bea-94c0-c874e19d0c80", + "profile_id": "edc63d0a-2ca4-48fa-9854-27926da76a4a", + "profile_name": "mystack", + "project": "6e18cc2bdbeb48a5b3cad2dc499f6804", + "role": null, + "status": "ACTIVE", + "status_reason": "Creation succeeded", + "updated_at": "2015-03-04T04:58:27", + "user": "5e5bf8027826429c96af157f68dc9072" + } +} diff --git a/api-ref/source/clustering/v1/samples/node-update-request.json b/api-ref/source/clustering/v1/samples/node-update-request.json new file mode 100644 index 000000000..b593bb7f8 --- /dev/null +++ b/api-ref/source/clustering/v1/samples/node-update-request.json @@ -0,0 +1,5 @@ +{ + "node": { + "name": "new_node_name" + } +} diff --git a/api-ref/source/clustering/v1/samples/node-update-response.json b/api-ref/source/clustering/v1/samples/node-update-response.json new file mode 100644 index 000000000..9d8f81ade --- /dev/null +++ b/api-ref/source/clustering/v1/samples/node-update-response.json @@ -0,0 +1,23 @@ +{ + "node": { + "action": "2366d440-c73e-4961-9254-6d1c3af7c167", + "cluster_id": null, + "created_at": null, + "data": {}, + "domain": null, + "id": "0df0931b-e251-4f2e-8719-4ebfda3627ba", + "index": -1, + "init_at": "2015-03-05T08:53:15", + "metadata": {}, + "name": "node009", + "physical_id": "", + "profile_id": "edc63d0a-2ca4-48fa-9854-27926da76a4a", + "profile_name": "mystack", + "project": "6e18cc2bdbeb48a5b3cad2dc499f6804", + "role": "master", + "status": "ACTIVE", + "status_reason": "Update succeeded", + "updated_at": "2015-09-01T18:53:15", + "user": "5e5bf8027826429c96af157f68dc9072" + } +} diff --git a/api-ref/source/clustering/v1/samples/nodes-list-response.json b/api-ref/source/clustering/v1/samples/nodes-list-response.json new file mode 100644 index 000000000..31c68e7f7 --- /dev/null +++ b/api-ref/source/clustering/v1/samples/nodes-list-response.json @@ -0,0 +1,25 @@ +{ + "nodes": [ + { + "cluster_id": null, + "created_at": "2015-02-27T04:39:21", + "data": {}, + "details": {}, + "domain": null, + "id": "573aa1ba-bf45-49fd-907d-6b5d6e6adfd3", + "index": -1, + "init_at": "2015-02-27T04:39:18", + "metadata": {}, + "name": "node00a", + "physical_id": "cc028275-d078-4729-bf3e-154b7359814b", + "profile_id": "edc63d0a-2ca4-48fa-9854-27926da76a4a", + "profile_name": "mystack", + "project": "6e18cc2bdbeb48a5b3cad2dc499f6804", + "role": null, + "status": "ACTIVE", + "status_reason": "Creation succeeded", + "updated_at": null, + "user": "5e5bf8027826429c96af157f68dc9072" + } + ] +} diff --git a/api-ref/source/clustering/v1/samples/policies-list-response.json b/api-ref/source/clustering/v1/samples/policies-list-response.json new file mode 100644 index 000000000..6e87c214d --- /dev/null +++ b/api-ref/source/clustering/v1/samples/policies-list-response.json @@ -0,0 +1,26 @@ +{ + "policies": [ + { + "created_at": "2015-02-15T08:33:13.000000", + "data": {}, + "domain": null, + "id": "7192d8df-73be-4e98-ab99-1cf6d5066729", + "name": "test_policy_1", + "project": "42d9e9663331431f97b75e25136307ff", + "spec": { + "description": "A test policy", + "properties": { + "criteria": "OLDEST_FIRST", + "destroy_after_deletion": true, + "grace_period": 60, + "reduce_desired_capacity": false + }, + "type": "senlin.policy.deletion", + "version": "1.0" + }, + "type": "senlin.policy.deletion-1.0", + "updated_at": null, + "user": "5e5bf8027826429c96af157f68dc9072" + } + ] +} diff --git a/api-ref/source/clustering/v1/samples/policy-create-request.json b/api-ref/source/clustering/v1/samples/policy-create-request.json new file mode 100644 index 000000000..d610eedec --- /dev/null +++ b/api-ref/source/clustering/v1/samples/policy-create-request.json @@ -0,0 +1,17 @@ +{ + "policy": { + "name": "sp001", + "spec": { + "properties": { + "adjustment": { + "min_step": 1, + "number": 1, + "type": "CHANGE_IN_CAPACITY" + }, + "event": "CLUSTER_SCALE_IN" + }, + "type": "senlin.policy.scaling", + "version": "1.0" + } + } +} diff --git a/api-ref/source/clustering/v1/samples/policy-create-response.json b/api-ref/source/clustering/v1/samples/policy-create-response.json new file mode 100644 index 000000000..4d9f6fcaf --- /dev/null +++ b/api-ref/source/clustering/v1/samples/policy-create-response.json @@ -0,0 +1,26 @@ +{ + "policy": { + "created_at": "2015-03-02T07:40:31", + "data": {}, + "domain": null, + "id": "02f62195-2198-4797-b0a9-877632208527", + "name": "sp001", + "project": "42d9e9663331431f97b75e25136307ff", + "spec": { + "properties": { + "adjustment": { + "best_effort": true, + "min_step": 1, + "number": 1, + "type": "CHANGE_IN_CAPACITY" + }, + "event": "CLUSTER_SCALE_IN" + }, + "type": "senlin.policy.scaling", + "version": "1.0" + }, + "type": "senlin.policy.scaling-1.0", + "updated_at": null, + "user": "5e5bf8027826429c96af157f68dc9072" + } +} diff --git a/api-ref/source/clustering/v1/samples/policy-show-response.json b/api-ref/source/clustering/v1/samples/policy-show-response.json new file mode 100644 index 000000000..4d9f6fcaf --- /dev/null +++ b/api-ref/source/clustering/v1/samples/policy-show-response.json @@ -0,0 +1,26 @@ +{ + "policy": { + "created_at": "2015-03-02T07:40:31", + "data": {}, + "domain": null, + "id": "02f62195-2198-4797-b0a9-877632208527", + "name": "sp001", + "project": "42d9e9663331431f97b75e25136307ff", + "spec": { + "properties": { + "adjustment": { + "best_effort": true, + "min_step": 1, + "number": 1, + "type": "CHANGE_IN_CAPACITY" + }, + "event": "CLUSTER_SCALE_IN" + }, + "type": "senlin.policy.scaling", + "version": "1.0" + }, + "type": "senlin.policy.scaling-1.0", + "updated_at": null, + "user": "5e5bf8027826429c96af157f68dc9072" + } +} diff --git a/api-ref/source/clustering/v1/samples/policy-type-show-response.json b/api-ref/source/clustering/v1/samples/policy-type-show-response.json new file mode 100644 index 000000000..1691736f6 --- /dev/null +++ b/api-ref/source/clustering/v1/samples/policy-type-show-response.json @@ -0,0 +1,42 @@ +{ + "policy_type": { + "name": "senlin.policy.deletion", + "schema": { + "criteria": { + "constraints": [ + { + "constraint": [ + "OLDEST_FIRST", + "OLDEST_PROFILE_FRIST", + "YOUNGEST_FIRST", + "RANDOM" + ], + "type": "AllowedValues" + } + ], + "default": "RANDOM", + "description": "Criteria used in selecting candidates for deletion", + "required": false, + "type": "String" + }, + "destroy_after_deletion": { + "default": true, + "description": "Whether a node should be completely destroyed after deletion. Default to true", + "required": false, + "type": "Boolean" + }, + "grace_period": { + "default": 0, + "description": "Number of seconds before real deletion happens.", + "required": false, + "type": "Integer" + }, + "reduce_desired_capacity": { + "default": false, + "description": "Whether the desired capacity of the cluster should be reduced along the deletion. Default to false.", + "required": false, + "type": "Boolean" + } + } + } +} diff --git a/api-ref/source/clustering/v1/samples/policy-types-list-response.json b/api-ref/source/clustering/v1/samples/policy-types-list-response.json new file mode 100644 index 000000000..55aa80095 --- /dev/null +++ b/api-ref/source/clustering/v1/samples/policy-types-list-response.json @@ -0,0 +1,22 @@ +{ + "policy_types": [ + { + "name": "ScalingPolicy" + }, + { + "name": "PlacementPolicy" + }, + { + "name": "DeletionPolicy" + }, + { + "name": "LoadBalancingPolicy" + }, + { + "name": "HealthPolicy" + }, + { + "name": "UpdatePolicy" + } + ] +} diff --git a/api-ref/source/clustering/v1/samples/policy-update-request.json b/api-ref/source/clustering/v1/samples/policy-update-request.json new file mode 100644 index 000000000..c1c489a2a --- /dev/null +++ b/api-ref/source/clustering/v1/samples/policy-update-request.json @@ -0,0 +1,5 @@ +{ + "policy": { + "name": "new_name" + } +} diff --git a/api-ref/source/clustering/v1/samples/policy-update-response.json b/api-ref/source/clustering/v1/samples/policy-update-response.json new file mode 100644 index 000000000..98f53d70b --- /dev/null +++ b/api-ref/source/clustering/v1/samples/policy-update-response.json @@ -0,0 +1,24 @@ +{ + "policy": { + "created_at": "2015-10-14T09:14:53", + "data": {}, + "domain": null, + "id": "ac5415bd-f522-4160-8be0-f8853e4bc332", + "name": "dp01", + "project": "42d9e9663331431f97b75e25136307ff", + "spec": { + "description": "A policy for node deletion.", + "properties": { + "criteria": "OLDEST_FIRST", + "destroy_after_deletion": true, + "grace_period": 60, + "reduce_desired_capacity": false + }, + "type": "senlin.policy.deletion", + "version": "1.0" + }, + "type": "senlin.policy.deletion-1.0", + "updated_at": null, + "user": "5e5bf8027826429c96af157f68dc9072" + } +} diff --git a/api-ref/source/clustering/v1/samples/profile-create-request.json b/api-ref/source/clustering/v1/samples/profile-create-request.json new file mode 100644 index 000000000..669eaed9d --- /dev/null +++ b/api-ref/source/clustering/v1/samples/profile-create-request.json @@ -0,0 +1,52 @@ +{ + "profile": { + "metadata": {}, + "name": "test_prof1", + "spec": { + "properties": { + "disable_rollback": false, + "environment": { + "resource_registry": { + "os.heat.server": "OS::Heat::Server" + } + }, + "files": { + "file:///usr/test_script.sh": "#!/bin/bash\n\necho \"this is a test script file\"\n" + }, + "parameters": {}, + "template": { + "heat_template_version": "2014-10-16", + "outputs": { + "result": { + "value": { + "get_attr": [ + "random", + "value" + ] + } + } + }, + "parameters": { + "file": { + "default": { + "get_file": "file:///usr/test_script.sh" + }, + "type": "string" + } + }, + "resources": { + "random": { + "properties": { + "length": 64 + }, + "type": "OS::Heat::RandomString" + } + } + }, + "timeout": 60 + }, + "type": "os.heat.stack", + "version": "1.0" + } + } +} diff --git a/api-ref/source/clustering/v1/samples/profile-create-response.json b/api-ref/source/clustering/v1/samples/profile-create-response.json new file mode 100644 index 000000000..094414993 --- /dev/null +++ b/api-ref/source/clustering/v1/samples/profile-create-response.json @@ -0,0 +1,59 @@ +{ + "profile": { + "created_at": "2015-03-01T14:28:25", + "domain": null, + "id": "7fa885cd-fa39-4531-a42d-780af95c84a4", + "metadata": {}, + "name": "test_prof1", + "project": "42d9e9663331431f97b75e25136307ff", + "spec": { + "properties": { + "disable_rollback": false, + "environment": { + "resource_registry": { + "os.heat.server": "OS::Heat::Server" + } + }, + "files": { + "file:///opt/stack/senlin/examples/profiles/test_script.sh": "#!/bin/bash\n\necho \"this is a test script file\"\n" + }, + "parameters": {}, + "template": { + "heat_template_version": "2014-10-16", + "outputs": { + "result": { + "value": { + "get_attr": [ + "random", + "value" + ] + } + } + }, + "parameters": { + "file": { + "default": { + "get_file": "file:///opt/stack/senlin/examples/profiles/test_script.sh" + }, + "type": "string" + } + }, + "resources": { + "random": { + "properties": { + "length": 64 + }, + "type": "OS::Heat::RandomString" + } + } + }, + "timeout": 60 + }, + "type": "os.heat.stack", + "version": "1.0" + }, + "type": "os.heat.stack-1.0", + "updated_at": null, + "user": "5e5bf8027826429c96af157f68dc9072" + } +} diff --git a/api-ref/source/clustering/v1/samples/profile-show-response.json b/api-ref/source/clustering/v1/samples/profile-show-response.json new file mode 100644 index 000000000..82ed7e566 --- /dev/null +++ b/api-ref/source/clustering/v1/samples/profile-show-response.json @@ -0,0 +1,57 @@ +{ + "profile": { + "created_at": "2015-03-01T14:28:25", + "domain": null, + "id": "7fa885cd-fa39-4531-a42d-780af95c84a4", + "metadata": {}, + "name": "test_prof1", + "project": "42d9e9663331431f97b75e25136307ff", + "spec": { + "disable_rollback": false, + "environment": { + "resource_registry": { + "os.heat.server": "OS::Heat::Server" + } + }, + "files": { + "file:///opt/stack/senlin/examples/profiles/test_script.sh": "#!/bin/bash\n\necho \"this is a test script file\"\n" + }, + "parameters": {}, + "template": { + "heat_template_version": "2014-10-16", + "outputs": { + "result": { + "value": { + "get_attr": [ + "random", + "value" + ] + } + } + }, + "parameters": { + "file": { + "default": { + "get_file": "file:///opt/stack/senlin/examples/profiles/test_script.sh" + }, + "type": "string" + } + }, + "resources": { + "random": { + "properties": { + "length": 64 + }, + "type": "OS::Heat::RandomString" + } + }, + "timeout": 60 + }, + "type": "os.heat.stack", + "version": "1.0" + }, + "type": "os.heat.stack-1.0", + "updated_at": null, + "user": "5e5bf8027826429c96af157f68dc9072" + } +} diff --git a/api-ref/source/clustering/v1/samples/profile-type-show-response.json b/api-ref/source/clustering/v1/samples/profile-type-show-response.json new file mode 100644 index 000000000..d83707987 --- /dev/null +++ b/api-ref/source/clustering/v1/samples/profile-type-show-response.json @@ -0,0 +1,47 @@ +{ + "profile_type": { + "name": "os.heat.stack", + "schema": { + "context": { + "default": {}, + "description": "A dictionary for specifying the customized context for stack operations", + "required": false, + "type": "Map" + }, + "disable_rollback": { + "default": true, + "description": "A boolean specifying whether a stack operation can be rolled back.", + "required": false, + "type": "Boolean" + }, + "environment": { + "default": {}, + "description": "A map that specifies the environment used for stack operations.", + "required": false, + "type": "Map" + }, + "files": { + "default": {}, + "description": "Contents of files referenced by the template, if any.", + "required": false, + "type": "Map" + }, + "parameters": { + "default": {}, + "description": "Parameters to be passed to Heat for stack operations.", + "required": false, + "type": "Map" + }, + "template": { + "description": "Heat stack template.", + "required": true, + "type": "Map" + }, + "timeout": { + "description": "A integer that specifies the number of minutes that a stack operation times out.", + "required": false, + "type": "Integer" + } + } + } +} diff --git a/api-ref/source/clustering/v1/samples/profile-types-list-response.json b/api-ref/source/clustering/v1/samples/profile-types-list-response.json new file mode 100644 index 000000000..f943bf521 --- /dev/null +++ b/api-ref/source/clustering/v1/samples/profile-types-list-response.json @@ -0,0 +1,13 @@ +{ + "profile_types": [ + { + "name": "os.heat.stack" + }, + { + "name": "os.heat.resource" + }, + { + "name": "os.nova.server" + } + ] +} diff --git a/api-ref/source/clustering/v1/samples/profile-update-request.json b/api-ref/source/clustering/v1/samples/profile-update-request.json new file mode 100644 index 000000000..8bd02f394 --- /dev/null +++ b/api-ref/source/clustering/v1/samples/profile-update-request.json @@ -0,0 +1,6 @@ +{ + "profile": { + "metadata": {}, + "name": null + } +} diff --git a/api-ref/source/clustering/v1/samples/profile-update-response.json b/api-ref/source/clustering/v1/samples/profile-update-response.json new file mode 100644 index 000000000..82ed7e566 --- /dev/null +++ b/api-ref/source/clustering/v1/samples/profile-update-response.json @@ -0,0 +1,57 @@ +{ + "profile": { + "created_at": "2015-03-01T14:28:25", + "domain": null, + "id": "7fa885cd-fa39-4531-a42d-780af95c84a4", + "metadata": {}, + "name": "test_prof1", + "project": "42d9e9663331431f97b75e25136307ff", + "spec": { + "disable_rollback": false, + "environment": { + "resource_registry": { + "os.heat.server": "OS::Heat::Server" + } + }, + "files": { + "file:///opt/stack/senlin/examples/profiles/test_script.sh": "#!/bin/bash\n\necho \"this is a test script file\"\n" + }, + "parameters": {}, + "template": { + "heat_template_version": "2014-10-16", + "outputs": { + "result": { + "value": { + "get_attr": [ + "random", + "value" + ] + } + } + }, + "parameters": { + "file": { + "default": { + "get_file": "file:///opt/stack/senlin/examples/profiles/test_script.sh" + }, + "type": "string" + } + }, + "resources": { + "random": { + "properties": { + "length": 64 + }, + "type": "OS::Heat::RandomString" + } + }, + "timeout": 60 + }, + "type": "os.heat.stack", + "version": "1.0" + }, + "type": "os.heat.stack-1.0", + "updated_at": null, + "user": "5e5bf8027826429c96af157f68dc9072" + } +} diff --git a/api-ref/source/clustering/v1/samples/profiles-list-response.json b/api-ref/source/clustering/v1/samples/profiles-list-response.json new file mode 100644 index 000000000..6f46dbc7c --- /dev/null +++ b/api-ref/source/clustering/v1/samples/profiles-list-response.json @@ -0,0 +1,63 @@ +{ + "profiles": [ + { + "created_at": "2015-02-10T11:46:33.000000", + "domain": null, + "id": "edc63d0a-2ca4-48fa-9854-27926da76a4a", + "metadata": {}, + "name": "mystack", + "project": "42d9e9663331431f97b75e25136307ff", + "spec": { + "properties": { + "disable_rollback": false, + "environment": { + "resource_registry": { + "os.heat.server": "OS::Heat::Server" + } + }, + "files": { + "file:///opt/stack/senlin/examples/profiles/test_script.sh": "#!/bin/bash\n\necho \"this is a test script file\"\n" + }, + "name": "random_string_stack", + "parameters": {}, + "rollback": false, + "template": { + "heat_template_version": "2014-10-16", + "outputs": { + "result": { + "value": { + "get_attr": [ + "random", + "value" + ] + } + } + }, + "parameters": { + "file": { + "default": { + "get_file": "file:///opt/stack/senlin/examples/profiles/test_script.sh" + }, + "type": "string" + } + }, + "resources": { + "random": { + "properties": { + "length": 64 + }, + "type": "OS::Heat::RandomString" + } + } + }, + "timeout": 60 + }, + "type": "os.heat.stack", + "version": "1.0" + }, + "type": "os.heat.stack-1.0", + "updated_at": null, + "user": "5e5bf8027826429c96af157f68dc9072" + } + ] +} diff --git a/api-ref/source/clustering/v1/samples/receiver-create-request.json b/api-ref/source/clustering/v1/samples/receiver-create-request.json new file mode 100644 index 000000000..c78b95b9c --- /dev/null +++ b/api-ref/source/clustering/v1/samples/receiver-create-request.json @@ -0,0 +1,11 @@ +{ + "receiver": { + "action": "CLUSTER_SCALE_OUT", + "cluster_id": "cf99d754-3cdc-47f4-8a29-cd14f02f5436", + "name": "cluster_inflate", + "params": { + "count": "1" + }, + "type": "webhook" + } +} diff --git a/api-ref/source/clustering/v1/samples/receiver-create-response.json b/api-ref/source/clustering/v1/samples/receiver-create-response.json new file mode 100644 index 000000000..a8c8bb031 --- /dev/null +++ b/api-ref/source/clustering/v1/samples/receiver-create-response.json @@ -0,0 +1,25 @@ +{ + "receiver": { + "action": "CLUSTER_SCALE_OUT", + "actor": { + "trust_id": [ + "6dc6d336e3fc4c0a951b5698cd1236d9" + ] + }, + "channel": { + "alarm_url": "http://node1:8778/v1/webhooks/e03dd2e5-8f2e-4ec1-8c6a-74ba891e5422/trigger?V=1&count=1" + }, + "cluster_id": "ae63a10b-4a90-452c-aef1-113a0b255ee3", + "created_at": "2015-06-27T05:09:43", + "domain": "Default", + "id": "573aa1ba-bf45-49fd-907d-6b5d6e6adfd3", + "name": "cluster_inflate", + "params": { + "count": "1" + }, + "project": "6e18cc2bdbeb48a5b3cad2dc499f6804", + "type": "webhook", + "updated_at": null, + "user": "b4ad2d6e18cc2b9c48049f6dbe8a5b3c" + } +} diff --git a/api-ref/source/clustering/v1/samples/receiver-show-response.json b/api-ref/source/clustering/v1/samples/receiver-show-response.json new file mode 100644 index 000000000..a8c8bb031 --- /dev/null +++ b/api-ref/source/clustering/v1/samples/receiver-show-response.json @@ -0,0 +1,25 @@ +{ + "receiver": { + "action": "CLUSTER_SCALE_OUT", + "actor": { + "trust_id": [ + "6dc6d336e3fc4c0a951b5698cd1236d9" + ] + }, + "channel": { + "alarm_url": "http://node1:8778/v1/webhooks/e03dd2e5-8f2e-4ec1-8c6a-74ba891e5422/trigger?V=1&count=1" + }, + "cluster_id": "ae63a10b-4a90-452c-aef1-113a0b255ee3", + "created_at": "2015-06-27T05:09:43", + "domain": "Default", + "id": "573aa1ba-bf45-49fd-907d-6b5d6e6adfd3", + "name": "cluster_inflate", + "params": { + "count": "1" + }, + "project": "6e18cc2bdbeb48a5b3cad2dc499f6804", + "type": "webhook", + "updated_at": null, + "user": "b4ad2d6e18cc2b9c48049f6dbe8a5b3c" + } +} diff --git a/api-ref/source/clustering/v1/samples/receivers-list-response.json b/api-ref/source/clustering/v1/samples/receivers-list-response.json new file mode 100644 index 000000000..7cd65f4ed --- /dev/null +++ b/api-ref/source/clustering/v1/samples/receivers-list-response.json @@ -0,0 +1,27 @@ +{ + "receivers": [ + { + "action": "CLUSTER_SCALE_OUT", + "actor": { + "trust_id": [ + "6dc6d336e3fc4c0a951b5698cd1236d9" + ] + }, + "channel": { + "alarm_url": "http://node1:8778/v1/webhooks/e03dd2e5-8f2e-4ec1-8c6a-74ba891e5422/trigger?V=1&count=1" + }, + "cluster_id": "ae63a10b-4a90-452c-aef1-113a0b255ee3", + "created_at": "2015-06-27T05:09:43", + "domain": "Default", + "id": "573aa1ba-bf45-49fd-907d-6b5d6e6adfd3", + "name": "cluster_inflate", + "params": { + "count": "1" + }, + "project": "6e18cc2bdbeb48a5b3cad2dc499f6804", + "type": "webhook", + "updated_at": null, + "user": "b4ad2d6e18cc2b9c48049f6dbe8a5b3c" + } + ] +} diff --git a/api-ref/source/clustering/v1/samples/senlin-versions-list-response.json b/api-ref/source/clustering/v1/samples/senlin-versions-list-response.json new file mode 100644 index 000000000..ed11f7456 --- /dev/null +++ b/api-ref/source/clustering/v1/samples/senlin-versions-list-response.json @@ -0,0 +1,14 @@ +{ + "versions": [ + { + "status": "CURRENT", + "id": "v1.0", + "links": [ + { + "href": "http://192.168.12.34:8778/v1/", + "rel": "self" + } + ] + } + ] +} diff --git a/api-ref/source/clustering/v1/senlin-versions.inc b/api-ref/source/clustering/v1/senlin-versions.inc new file mode 100644 index 000000000..f1e735688 --- /dev/null +++ b/api-ref/source/clustering/v1/senlin-versions.inc @@ -0,0 +1,38 @@ +.. -*- rst -*- + +============ +API versions +============ + +Lists information for all Clustering API versions. + + +List versions +============= + +.. rest_method:: GET / + +Lists information for all Clustering API versions. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/senlin-versions-list-response.json + :language: javascript + + + diff --git a/api-ref/source/data-processing/v1.1/clusters.inc b/api-ref/source/data-processing/v1.1/clusters.inc new file mode 100644 index 000000000..483cb2b16 --- /dev/null +++ b/api-ref/source/data-processing/v1.1/clusters.inc @@ -0,0 +1,317 @@ +.. -*- rst -*- + +======== +Clusters +======== + +A cluster is a group of nodes with the same configuration. + + +List available clusters +======================= + +.. rest_method:: GET /v1.1/{tenant_id}/clusters + +Lists available clusters. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - count: count + - info: info + - cluster_template_id: cluster_template_id + - is_transient: is_transient + - provision_progress: provision_progress + - status: status + - neutron_management_network: neutron_management_network + - clusters: clusters + - management_public_key: management_public_key + - status_description: status_description + - trust_id: trust_id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/clusters/clusters-list-response.json + :language: javascript + + + + +Create cluster +============== + +.. rest_method:: POST /v1.1/{tenant_id}/clusters + +Creates a cluster. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + +Request Example +--------------- + +.. literalinclude:: ../samples/clusters/cluster-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - count: count + - info: info + - cluster_template_id: cluster_template_id + - is_transient: is_transient + - provision_progress: provision_progress + - status: status + - neutron_management_network: neutron_management_network + - management_public_key: management_public_key + - status_description: status_description + - trust_id: trust_id + + + + + +Create multiple clusters +======================== + +.. rest_method:: POST /v1.1/{tenant_id}/clusters/multiple + +Creates multiple clusters. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + +Request Example +--------------- + +.. literalinclude:: ../samples/clusters/multiple-clusters-create-request.json + :language: javascript + + + + + + + +Show details of a cluster +========================= + +.. rest_method:: GET /v1.1/{tenant_id}/clusters/{cluster_id} + +Shows details for a cluster, by ID. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - cluster_id: cluster_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - count: count + - info: info + - cluster_template_id: cluster_template_id + - is_transient: is_transient + - provision_progress: provision_progress + - status: status + - neutron_management_network: neutron_management_network + - management_public_key: management_public_key + - status_description: status_description + - trust_id: trust_id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/clusters/cluster-show-response.json + :language: javascript + + + + +Delete a cluster +================ + +.. rest_method:: DELETE /v1.1/{tenant_id}/clusters/{cluster_id} + +Deletes a cluster. + +Error response codes:204, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - cluster_id: cluster_id + + + + + + +Scale cluster +============= + +.. rest_method:: PUT /v1.1/{tenant_id}/clusters/{cluster_id} + +Scales a cluster. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - cluster_id: cluster_id + +Request Example +--------------- + +.. literalinclude:: ../samples/clusters/cluster-scale-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - count: count + - info: info + - cluster_template_id: cluster_template_id + - is_transient: is_transient + - provision_progress: provision_progress + - status: status + - neutron_management_network: neutron_management_network + - management_public_key: management_public_key + - status_description: status_description + - trust_id: trust_id + + + + + +Update cluster +============== + +.. rest_method:: PATCH /v1.1/{tenant_id}/clusters/{cluster_id} + +Updates a cluster. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - cluster_id: cluster_id + +Request Example +--------------- + +.. literalinclude:: ../samples/clusters/cluster-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - count: count + - info: info + - cluster_template_id: cluster_template_id + - is_transient: is_transient + - provision_progress: provision_progress + - status: status + - neutron_management_network: neutron_management_network + - management_public_key: management_public_key + - status_description: status_description + - trust_id: trust_id + + + + + +Show progress +============= + +.. rest_method:: GET /v1.1/{tenant_id}/clusters/{cluster_id} + +Shows provisioning progress for a cluster. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - cluster_id: cluster_id + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/event-log/cluster-progress-response.json + :language: javascript + + + diff --git a/api-ref/source/data-processing/v1.1/clustertemplate.inc b/api-ref/source/data-processing/v1.1/clustertemplate.inc new file mode 100644 index 000000000..484cdcc67 --- /dev/null +++ b/api-ref/source/data-processing/v1.1/clustertemplate.inc @@ -0,0 +1,239 @@ +.. -*- rst -*- + +================= +Cluster templates +================= + +A cluster template configures a Hadoop cluster. A cluster template +lists node groups with the number of instances in each group. You +can also define cluster-scoped configurations in a cluster +template. + + +Show cluster template details +============================= + +.. rest_method:: GET /v1.1/{tenant_id}/cluster-templates/{cluster_template_id} + +Shows details for a cluster template. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - cluster_template_id: cluster_template_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - use_autoconfig: use_autoconfig + - cluster_configs: cluster_configs + - created_at: created_at + - default_image_id: default_image_id + - updated_at: updated_at + - plugin_name: plugin_name + - is_default: is_default + - is_protected: is_protected + - shares: shares + - tenant_id: tenant_id + - node_groups: node_groups + - is_public: is_public + - hadoop_version: hadoop_version + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/cluster-templates/cluster-templates-list-response.json + :language: javascript + + + + +Update cluster templates +======================== + +.. rest_method:: PUT /v1.1/{tenant_id}/cluster-templates/{cluster_template_id} + +Updates a cluster template. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - cluster_template_id: cluster_template_id + +Request Example +--------------- + +.. literalinclude:: ../samples/cluster-templates/cluster-template-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - use_autoconfig: use_autoconfig + - cluster_configs: cluster_configs + - created_at: created_at + - default_image_id: default_image_id + - updated_at: updated_at + - plugin_name: plugin_name + - is_default: is_default + - is_protected: is_protected + - shares: shares + - tenant_id: tenant_id + - node_groups: node_groups + - is_public: is_public + - hadoop_version: hadoop_version + - id: id + - name: name + + + + + +Delete cluster template +======================= + +.. rest_method:: DELETE /v1.1/{tenant_id}/cluster-templates/{cluster_template_id} + +Deletes a cluster template. + +Error response codes:204, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - cluster_template_id: cluster_template_id + + + + + + +List cluster templates +====================== + +.. rest_method:: GET /v1.1/{tenant_id}/cluster-templates + +Lists available cluster templates. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - use_autoconfig: use_autoconfig + - cluster_configs: cluster_configs + - created_at: created_at + - default_image_id: default_image_id + - updated_at: updated_at + - plugin_name: plugin_name + - is_default: is_default + - is_protected: is_protected + - shares: shares + - tenant_id: tenant_id + - node_groups: node_groups + - is_public: is_public + - hadoop_version: hadoop_version + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/cluster-templates/cluster-templates-list-response.json + :language: javascript + + + + +Create cluster templates +======================== + +.. rest_method:: POST /v1.1/{tenant_id}/cluster-templates + +Creates a cluster template. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + +Request Example +--------------- + +.. literalinclude:: ../samples/cluster-templates/cluster-template-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - use_autoconfig: use_autoconfig + - cluster_configs: cluster_configs + - created_at: created_at + - default_image_id: default_image_id + - updated_at: updated_at + - plugin_name: plugin_name + - is_default: is_default + - is_protected: is_protected + - shares: shares + - tenant_id: tenant_id + - node_groups: node_groups + - is_public: is_public + - hadoop_version: hadoop_version + - id: id + - name: name + + + + diff --git a/api-ref/source/data-processing/v1.1/datasources.inc b/api-ref/source/data-processing/v1.1/datasources.inc new file mode 100644 index 000000000..b784cf305 --- /dev/null +++ b/api-ref/source/data-processing/v1.1/datasources.inc @@ -0,0 +1,200 @@ +.. -*- rst -*- + +============ +Data sources +============ + +A data source object defines the location of input or output for +MapReduce jobs and might reference different types of storage. + +The Data Processing service does not validate data source +locations. + + +Show data source details +======================== + +.. rest_method:: GET /v1.1/{tenant_id}/data-sources/{data_source_id} + +Shows details for a data source. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - data_source_id: data_source_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - url: url + - tenant_id: tenant_id + - created_at: created_at + - updated_at: updated_at + - is_protected: is_protected + - is_public: is_public + - type: type + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/data-sources/data-source-show-response.json + :language: javascript + + + + +Delete data source +================== + +.. rest_method:: DELETE /v1.1/{tenant_id}/data-sources/{data_source_id} + +Deletes a data source. + +Error response codes:204, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - data_source_id: data_source_id + + + + + + +Update data source +================== + +.. rest_method:: PUT /v1.1/{tenant_id}/data-sources/{data_source_id} + +Updates a data source. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - data_source_id: data_source_id + +Request Example +--------------- + +.. literalinclude:: ../samples/data-sources/data-source-update-request.json + :language: javascript + + + + + + + +List data sources +================= + +.. rest_method:: GET /v1.1/{tenant_id}/data-sources + +Lists all data sources. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - url: url + - tenant_id: tenant_id + - created_at: created_at + - updated_at: updated_at + - is_protected: is_protected + - is_public: is_public + - type: type + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/data-sources/data-sources-list-response.json + :language: javascript + + + + +Create data source +================== + +.. rest_method:: POST /v1.1/{tenant_id}/data-sources + +Creates a data source. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + +Request Example +--------------- + +.. literalinclude:: ../samples/data-sources/data-source-register-hdfs-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - url: url + - tenant_id: tenant_id + - created_at: created_at + - updated_at: updated_at + - is_protected: is_protected + - is_public: is_public + - type: type + - id: id + - name: name + + + + diff --git a/api-ref/source/data-processing/v1.1/event-log.inc b/api-ref/source/data-processing/v1.1/event-log.inc new file mode 100644 index 000000000..934502886 --- /dev/null +++ b/api-ref/source/data-processing/v1.1/event-log.inc @@ -0,0 +1,41 @@ +.. -*- rst -*- + +========= +Event log +========= + +The event log feature provides information about cluster +provisioning. In the event of errors, the event log shows the +reason for the failure. + + +Show progress +============= + +.. rest_method:: GET /v1.1/{tenant_id}/clusters/{cluster_id} + +Shows provisioning progress of cluster. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - cluster_id: cluster_id + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/event-log/cluster-progress-response.json + :language: javascript + + + diff --git a/api-ref/source/data-processing/v1.1/imageregistry.inc b/api-ref/source/data-processing/v1.1/imageregistry.inc new file mode 100644 index 000000000..12b88ceeb --- /dev/null +++ b/api-ref/source/data-processing/v1.1/imageregistry.inc @@ -0,0 +1,245 @@ +.. -*- rst -*- + +============== +Image registry +============== + +Use the image registry tool to manage images, add tags to and +remove tags from images, and define the user name for an instance +operating system. Each plugin lists required tags for an image. To +run remote operations, the Data Processing service requires a user +name with which to log in to the operating system for an instance. + + +Add tags to image +================= + +.. rest_method:: POST /v1.1/{tenant_id}/images/{image_id}/tag + +Adds tags to an image. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tags: tags + - image_id: image_id + +Request Example +--------------- + +.. literalinclude:: ../samples/image-registry/image-tags-add-request.json + :language: javascript + + + + + + + +Show image details +================== + +.. rest_method:: GET /v1.1/{tenant_id}/images/{image_id} + +Shows details for an image. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - image_id: image_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - username: username + - updated: updated + - description: description + - created: created + - image: image + - tags: tags + - minDisk: minDisk + - name: name + - progress: progress + - minRam: minRam + - id: id + - metadata: metadata + + + +Response Example +---------------- + +.. literalinclude:: ../samples/image-registry/image-show-response.json + :language: javascript + + + + +Register image +============== + +.. rest_method:: POST /v1.1/{tenant_id}/images/{image_id} + +Registers an image in the registry. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - username: username + - description: description + - image_id: image_id + +Request Example +--------------- + +.. literalinclude:: ../samples/image-registry/image-register-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - username: username + - updated: updated + - description: description + - created: created + - image: image + - tags: tags + - minDisk: minDisk + - name: name + - progress: progress + - minRam: minRam + - id: id + - metadata: metadata + + + + + +Unregister image +================ + +.. rest_method:: DELETE /v1.1/{tenant_id}/images/{image_id} + +Removes an image from the registry. + +Error response codes:204, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - image_id: image_id + + + + + + +Remove tags from image +====================== + +.. rest_method:: POST /v1.1/{tenant_id}/images/{image_id}/untag + +Removes tags from an image. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tags: tags + - image_id: image_id + +Request Example +--------------- + +.. literalinclude:: ../samples/image-registry/image-tags-delete-request.json + :language: javascript + + + + + + + +List images +=========== + +.. rest_method:: GET /v1.1/{tenant_id}/images + +Lists all images registered in the registry. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tags: tags + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - username: username + - updated: updated + - description: description + - created: created + - image: image + - tags: tags + - minDisk: minDisk + - name: name + - images: images + - progress: progress + - minRam: minRam + - id: id + - metadata: metadata + + + +Response Example +---------------- + +.. literalinclude:: ../samples/image-registry/images-list-response.json + :language: javascript + + + diff --git a/api-ref/source/data-processing/v1.1/job-executions.inc b/api-ref/source/data-processing/v1.1/job-executions.inc new file mode 100644 index 000000000..220aa8286 --- /dev/null +++ b/api-ref/source/data-processing/v1.1/job-executions.inc @@ -0,0 +1,315 @@ +.. -*- rst -*- + +============== +Job executions +============== + +A job execution object represents a Hadoop job that runs on a +cluster. A job execution polls the status of a running job and +reports it to the user. Also a user can cancel a running job. + + +Refresh job execution status +============================ + +.. rest_method:: GET /v1.1/{tenant_id}/job-executions/{job_execution_id}/refresh-status + +Refreshes the status of and shows information for a job execution. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - job_execution_id: job_execution_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - info: info + - output_id: output_id + - start_time: start_time + - job_id: job_id + - updated_at: updated_at + - tenant_id: tenant_id + - created_at: created_at + - args: args + - data_source_urls: data_source_urls + - return_code: return_code + - oozie_job_id: oozie_job_id + - is_protected: is_protected + - cluster_id: cluster_id + - end_time: end_time + - params: params + - is_public: is_public + - input_id: input_id + - configs: configs + - job_execution: job_execution + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/job-executions/job-ex-response.json + :language: javascript + + + + +List job executions +=================== + +.. rest_method:: GET /v1.1/{tenant_id}/job-executions + +Lists available job executions. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - info: info + - output_id: output_id + - start_time: start_time + - job_id: job_id + - updated_at: updated_at + - tenant_id: tenant_id + - created_at: created_at + - args: args + - data_source_urls: data_source_urls + - return_code: return_code + - oozie_job_id: oozie_job_id + - is_protected: is_protected + - cluster_id: cluster_id + - end_time: end_time + - params: params + - is_public: is_public + - input_id: input_id + - configs: configs + - job_execution: job_execution + - id: id + - job_executions: job_executions + + + +Response Example +---------------- + +.. literalinclude:: ../samples/job-executions/list-response.json + :language: javascript + + + + +Show job execution details +========================== + +.. rest_method:: GET /v1.1/{tenant_id}/job-executions/{job_execution_id} + +Shows details for a job execution, by ID. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - job_execution_id: job_execution_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - info: info + - output_id: output_id + - start_time: start_time + - job_id: job_id + - updated_at: updated_at + - tenant_id: tenant_id + - created_at: created_at + - args: args + - data_source_urls: data_source_urls + - return_code: return_code + - oozie_job_id: oozie_job_id + - is_protected: is_protected + - cluster_id: cluster_id + - end_time: end_time + - params: params + - is_public: is_public + - input_id: input_id + - configs: configs + - job_execution: job_execution + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/job-executions/job-ex-response.json + :language: javascript + + + + +Delete job execution +==================== + +.. rest_method:: DELETE /v1.1/{tenant_id}/job-executions/{job_execution_id} + +Deletes a job execution. + +Error response codes:204, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - job_execution_id: job_execution_id + + + + + + +Update job execution +==================== + +.. rest_method:: PATCH /v1.1/{tenant_id}/job-executions/{job_execution_id} + +Updates a job execution. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - job_execution_id: job_execution_id + +Request Example +--------------- + +.. literalinclude:: ../samples/job-executions/job-ex-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - info: info + - output_id: output_id + - start_time: start_time + - job_id: job_id + - updated_at: updated_at + - tenant_id: tenant_id + - created_at: created_at + - args: args + - data_source_urls: data_source_urls + - return_code: return_code + - oozie_job_id: oozie_job_id + - is_protected: is_protected + - cluster_id: cluster_id + - end_time: end_time + - params: params + - is_public: is_public + - input_id: input_id + - configs: configs + - job_execution: job_execution + - id: id + + + + + +Cancel job execution +==================== + +.. rest_method:: GET /v1.1/{tenant_id}/job-executions/{job_execution_id}/cancel + +Cancels a job execution. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - job_execution_id: job_execution_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - info: info + - output_id: output_id + - start_time: start_time + - job_id: job_id + - updated_at: updated_at + - tenant_id: tenant_id + - created_at: created_at + - args: args + - data_source_urls: data_source_urls + - return_code: return_code + - oozie_job_id: oozie_job_id + - is_protected: is_protected + - cluster_id: cluster_id + - end_time: end_time + - params: params + - is_public: is_public + - input_id: input_id + - configs: configs + - job_execution: job_execution + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/job-executions/cancel-response.json + :language: javascript + + + diff --git a/api-ref/source/data-processing/v1.1/job-types.inc b/api-ref/source/data-processing/v1.1/job-types.inc new file mode 100644 index 000000000..35117d9d1 --- /dev/null +++ b/api-ref/source/data-processing/v1.1/job-types.inc @@ -0,0 +1,60 @@ +.. -*- rst -*- + +========= +Job types +========= + +Each plugin that supports EDP also supports specific job types. +Different versions of a plugin might actually support different job +types. Configuration options vary by plugin, version, and job type. + +The job types provide information about which plugins support which +job types and how to configure the job types. + + +List job types +============== + +.. rest_method:: GET /v1.1/{tenant_id}/job-types + +Lists all job types. + +You can use query parameters to filter the response. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - plugin: plugin + - version: version + - type: type + - hints: hints + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - versions: versions + - title: title + - description: description + - job_types: job_types + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/job-types/job-types-list-response.json + :language: javascript + + + diff --git a/api-ref/source/data-processing/v1.1/jobbinaries.inc b/api-ref/source/data-processing/v1.1/jobbinaries.inc new file mode 100644 index 000000000..4027dfe07 --- /dev/null +++ b/api-ref/source/data-processing/v1.1/jobbinaries.inc @@ -0,0 +1,247 @@ +.. -*- rst -*- + +============ +Job binaries +============ + +Job binary objects represent data processing applications and +libraries that are stored in either the internal database or the +Object Storage service. + + +List job binaries +================= + +.. rest_method:: GET /v1.1/{tenant_id}/job-binaries + +Lists the available job binaries. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - url: url + - tenant_id: tenant_id + - created_at: created_at + - updated_at: updated_at + - is_protected: is_protected + - is_public: is_public + - binaries: binaries + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/job-binaries/list-response.json + :language: javascript + + + + +Create job binary +================= + +.. rest_method:: POST /v1.1/{tenant_id}/job-binaries + +Creates a job binary. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + +Request Example +--------------- + +.. literalinclude:: ../samples/job-binaries/create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - url: url + - tenant_id: tenant_id + - created_at: created_at + - updated_at: updated_at + - is_protected: is_protected + - is_public: is_public + - id: id + - name: name + + + + + +Show job binary details +======================= + +.. rest_method:: GET /v1.1/{tenant_id}/job-binaries + +Shows details for a job binary. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - url: url + - tenant_id: tenant_id + - created_at: created_at + - updated_at: updated_at + - is_protected: is_protected + - is_public: is_public + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/job-binaries/show-response.json + :language: javascript + + + + +Delete job binary +================= + +.. rest_method:: DELETE /v1.1/{tenant_id}/job-binaries + +Deletes a job binary. + +Error response codes:204, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + + + +Update job binary +================= + +.. rest_method:: PUT /v1.1/{tenant_id}/job-binaries + +Updates a job binary. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + +Request Example +--------------- + +.. literalinclude:: ../samples/job-binaries/update-request.json + :language: javascript + + + + + + + +Show job binary data +==================== + +.. rest_method:: GET /v1.1/{tenant_id}/job-binaries/{job_binary_id}/data + +Shows data for a job binary. + +The response body shows the job binary raw data and the response +headers show the data length. + +Example response: + +:: + + HTTP/1.1 200 OK + Connection: keep-alive + Content-Length: 161 + Content-Type: text/html; charset=utf-8 + Date: Sat, 28 Mar 2016 02:42:48 GMT + A = load '$INPUT' using PigStorage(':') as (fruit: chararray); + B = foreach A generate com.hadoopbook.pig.Trim(fruit); + store B into '$OUTPUT' USING PigStorage(); + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - job_binary_id: job_binary_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - Content-Length: Content-Length + + + +Response Example +---------------- + +.. literalinclude:: + :language: javascript + + + diff --git a/api-ref/source/data-processing/v1.1/jobbinary-internals.inc b/api-ref/source/data-processing/v1.1/jobbinary-internals.inc new file mode 100644 index 000000000..c1db41ac9 --- /dev/null +++ b/api-ref/source/data-processing/v1.1/jobbinary-internals.inc @@ -0,0 +1,247 @@ +.. -*- rst -*- + +==================== +Job binary internals +==================== + +Job binary internal objects represent data processing applications +and libraries that are stored in the internal database. + + +Create job binary internal +========================== + +.. rest_method:: PUT /v1.1/{tenant_id}/job-binary-internals/{name} + +Creates a job binary internal. + +Job binary internals are objects that represent data processing +applications and libraries that are stored in the internal +database. + +Specify the file contents (raw data or script text) in the request +body. Specify the file name in the URI. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - name: name + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - name: name + - tenant_id: tenant_id + - created_at: created_at + - updated_at: updated_at + - is_protected: is_protected + - is_public: is_public + - datasize: datasize + - id: id + + + + + +Show job binary internal data +============================= + +.. rest_method:: GET /v1.1/{tenant_id}/job-binary-internals/{job_binary_internals_id}/data + +Shows data for a job binary internal. + +The response body shows the job binary raw data and the response +headers show the data length. + +Example response: + +:: + + HTTP/1.1 200 OK + Connection: keep-alive + Content-Length: 161 + Content-Type: text/html; charset=utf-8 + Date: Sat, 28 Mar 2016 02:21:13 GMT + A = load '$INPUT' using PigStorage(':') as (fruit: chararray); + B = foreach A generate com.hadoopbook.pig.Trim(fruit); + store B into '$OUTPUT' USING PigStorage(); + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - job_binary_internals_id: job_binary_internals_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - Content-Length: Content-Length + + + +Response Example +---------------- + +.. literalinclude:: + :language: javascript + + + + +Show job binary internal details +================================ + +.. rest_method:: GET /v1.1/{tenant_id}/job-binary-internals/{job_binary_internals_id} + +Shows details for a job binary internal. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - job_binary_internals_id: job_binary_internals_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - name: name + - tenant_id: tenant_id + - created_at: created_at + - updated_at: updated_at + - is_protected: is_protected + - is_public: is_public + - datasize: datasize + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/job-binary-internals/show-response.json + :language: javascript + + + + +Delete job binary internal +========================== + +.. rest_method:: DELETE /v1.1/{tenant_id}/job-binary-internals/{job_binary_internals_id} + +Deletes a job binary internal. + +Error response codes:204, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - job_binary_internals_id: job_binary_internals_id + + + + + + +Update job binary internal +========================== + +.. rest_method:: PATCH /v1.1/{tenant_id}/job-binary-internals/{job_binary_internals_id} + +Updates a job binary internal. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - job_binary_internals_id: job_binary_internals_id + +Request Example +--------------- + +.. literalinclude:: ../samples/job-binary-internals/update-request.json + :language: javascript + + + + + + + +List job binary internals +========================= + +.. rest_method:: GET /v1.1/{tenant_id}/job-binary-internals + +Lists the available job binary internals. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - binaries: binaries + - name: name + - tenant_id: tenant_id + - created_at: created_at + - updated_at: updated_at + - is_protected: is_protected + - is_public: is_public + - datasize: datasize + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/job-binary-internals/list-response.json + :language: javascript + + + diff --git a/api-ref/source/data-processing/v1.1/jobs.inc b/api-ref/source/data-processing/v1.1/jobs.inc new file mode 100644 index 000000000..f58686a04 --- /dev/null +++ b/api-ref/source/data-processing/v1.1/jobs.inc @@ -0,0 +1,253 @@ +.. -*- rst -*- + +==== +Jobs +==== + +A job object lists the binaries that a job needs to run. To run a +job, you must specify data sources and job parameters. + +You can run a job on an existing or new transient cluster. + + +Run job +======= + +.. rest_method:: POST /v1.1/{tenant_id}/jobs/{job_id}/execute + +Runs a job. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - job_id: job_id + +Request Example +--------------- + +.. literalinclude:: ../samples/jobs/job-execute-request.json + :language: javascript + + + + + + + +List jobs +========= + +.. rest_method:: GET /v1.1/{tenant_id}/jobs + +Lists all jobs. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - jobs: jobs + - description: description + - tenant_id: tenant_id + - created_at: created_at + - mains: mains + - updated_at: updated_at + - libs: libs + - is_protected: is_protected + - interface: interface + - is_public: is_public + - type: type + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/jobs/jobs-list-response.json + :language: javascript + + + + +Create job +========== + +.. rest_method:: POST /v1.1/{tenant_id}/jobs + +Creates a job object. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + +Request Example +--------------- + +.. literalinclude:: ../samples/jobs/job-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - tenant_id: tenant_id + - created_at: created_at + - mains: mains + - updated_at: updated_at + - libs: libs + - is_protected: is_protected + - interface: interface + - is_public: is_public + - type: type + - id: id + - name: name + + + + + +Show job details +================ + +.. rest_method:: GET /v1.1/{tenant_id}/jobs/{job_id} + +Shows details for a job. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - job_id: job_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - tenant_id: tenant_id + - created_at: created_at + - mains: mains + - updated_at: updated_at + - libs: libs + - is_protected: is_protected + - interface: interface + - is_public: is_public + - type: type + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/jobs/job-show-response.json + :language: javascript + + + + +Remove job +========== + +.. rest_method:: DELETE /v1.1/{tenant_id}/jobs/{job_id} + +Removes a job. + +Error response codes:204, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - job_id: job_id + + + + + + +Update job object +================= + +.. rest_method:: PATCH /v1.1/{tenant_id}/jobs/{job_id} + +Updates a job object. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - job_id: job_id + +Request Example +--------------- + +.. literalinclude:: ../samples/jobs/job-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - tenant_id: tenant_id + - created_at: created_at + - mains: mains + - updated_at: updated_at + - libs: libs + - is_protected: is_protected + - interface: interface + - is_public: is_public + - type: type + - id: id + - name: name + + + + diff --git a/api-ref/source/data-processing/v1.1/node-group-template.inc b/api-ref/source/data-processing/v1.1/node-group-template.inc new file mode 100644 index 000000000..fed38ce2c --- /dev/null +++ b/api-ref/source/data-processing/v1.1/node-group-template.inc @@ -0,0 +1,256 @@ +.. -*- rst -*- + +==================== +Node group templates +==================== + +A cluster is a group of nodes with the same configuration. A node +group template configures a node in the cluster. + +A template configures Hadoop processes and VM characteristics, such +as the number of reduced slots for task tracker, the number of +CPUs, and the amount of RAM. The template specifies the VM +characteristics through an OpenStack flavor. + + +List node group templates +========================= + +.. rest_method:: GET /v1.1/{tenant_id}/node-group-templates + +Lists available node group templates. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - volume_local_to_instance: volume_local_to_instance + - availability_zone: availability_zone + - updated_at: updated_at + - use_autoconfig: use_autoconfig + - volumes_per_node: volumes_per_node + - id: id + - security_groups: security_groups + - shares: shares + - node_configs: node_configs + - auto_security_group: auto_security_group + - volumes_availability_zone: volumes_availability_zone + - description: description + - volume_mount_prefix: volume_mount_prefix + - plugin_name: plugin_name + - floating_ip_pool: floating_ip_pool + - is_default: is_default + - image_id: image_id + - volumes_size: volumes_size + - is_proxy_gateway: is_proxy_gateway + - is_public: is_public + - hadoop_version: hadoop_version + - name: name + - tenant_id: tenant_id + - created_at: created_at + - volume_type: volume_type + - is_protected: is_protected + - node_processes: node_processes + - flavor_id: flavor_id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/node-group-templates/node-group-templates-list-response.json + :language: javascript + + + + +Create node group template +========================== + +.. rest_method:: POST /v1.1/{tenant_id}/node-group-templates + +Creates a node group template. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + +Request Example +--------------- + +.. literalinclude:: ../samples/node-group-templates/node-group-template-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - volume_local_to_instance: volume_local_to_instance + - availability_zone: availability_zone + - updated_at: updated_at + - use_autoconfig: use_autoconfig + - volumes_per_node: volumes_per_node + - id: id + - security_groups: security_groups + - shares: shares + - node_configs: node_configs + - auto_security_group: auto_security_group + - volumes_availability_zone: volumes_availability_zone + - description: description + - volume_mount_prefix: volume_mount_prefix + - plugin_name: plugin_name + - floating_ip_pool: floating_ip_pool + - is_default: is_default + - image_id: image_id + - volumes_size: volumes_size + - is_proxy_gateway: is_proxy_gateway + - is_public: is_public + - hadoop_version: hadoop_version + - name: name + - tenant_id: tenant_id + - created_at: created_at + - volume_type: volume_type + - is_protected: is_protected + - node_processes: node_processes + - flavor_id: flavor_id + + + + + +Show node group template details +================================ + +.. rest_method:: GET /v1.1/{tenant_id}/node-group-templates/{node_group_template_id} + +Shows a node group template, by ID. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - node_group_template_id: node_group_template_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - volume_local_to_instance: volume_local_to_instance + - availability_zone: availability_zone + - updated_at: updated_at + - use_autoconfig: use_autoconfig + - volumes_per_node: volumes_per_node + - id: id + - security_groups: security_groups + - shares: shares + - node_configs: node_configs + - auto_security_group: auto_security_group + - volumes_availability_zone: volumes_availability_zone + - description: description + - volume_mount_prefix: volume_mount_prefix + - plugin_name: plugin_name + - floating_ip_pool: floating_ip_pool + - is_default: is_default + - image_id: image_id + - volumes_size: volumes_size + - is_proxy_gateway: is_proxy_gateway + - is_public: is_public + - hadoop_version: hadoop_version + - name: name + - tenant_id: tenant_id + - created_at: created_at + - volume_type: volume_type + - is_protected: is_protected + - node_processes: node_processes + - flavor_id: flavor_id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/node-group-templates/node-group-template-show-response.json + :language: javascript + + + + +Delete node group template +========================== + +.. rest_method:: DELETE /v1.1/{tenant_id}/node-group-templates/{node_group_template_id} + +Deletes a node group template. + +Error response codes:204, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - node_group_template_id: node_group_template_id + + + + + + +Update node group template +========================== + +.. rest_method:: PUT /v1.1/{tenant_id}/node-group-templates/{node_group_template_id} + +Updates a node group template. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - node_group_template_id: node_group_template_id + +Request Example +--------------- + +.. literalinclude:: ../samples/node-group-templates/node-group-template-update-request.json + :language: javascript + + + + + + diff --git a/api-ref/source/data-processing/v1.1/parameters.yaml b/api-ref/source/data-processing/v1.1/parameters.yaml new file mode 100644 index 000000000..85aa6c6d2 --- /dev/null +++ b/api-ref/source/data-processing/v1.1/parameters.yaml @@ -0,0 +1,980 @@ +# variables in header +Content-Length: + description: | + The length of the data, in bytes. + in: header + required: true + type: string + +# variables in path +cluster_id: + description: | + The ID of the cluster + in: path + required: false + type: string +cluster_template_id_1: + description: | + The unique identifier of the cluster template. + in: path + required: false + type: string +data_source_id: + description: | + The UUID of the data source. + in: path + required: false + type: string +hints: + description: | + Includes configuration hints in the response. + in: path + required: false + type: boolean +image_id: + description: | + The UUID of the image. + in: path + required: false + type: string +job_binary_id: + description: | + The UUID of the job binary. + in: path + required: false + type: string +job_binary_internals_id: + description: | + The UUID of the job binary internal. + in: path + required: false + type: string +job_execution_id: + description: | + The UUID of the job execution. + in: path + required: false + type: string +job_id: + description: | + The UUID of the job. + in: path + required: false + type: string +name_3: + description: | + The name of the job binary internal. + in: path + required: false + type: string +node_group_template_id: + description: | + The UUID of the node group template. + in: path + required: false + type: string +plugin: + description: | + Filters the response by a plugin name. + in: path + required: false + type: string +plugin_name_1: + description: | + Name of the plugin. + in: path + required: false + type: string +type_2: + description: | + Filters the response by a job type. + in: path + required: false + type: string +version: + description: | + Filters the response by a plugin version. + in: path + required: false + type: string +version_1: + description: | + Version of the plugin. + in: path + required: false + type: string + +# variables in query +{} + +# variables in body +args: + description: | + The list of arguments. + in: body + required: true + type: array +auto_security_group: + description: | + If set to ``True``, the cluster group is + automatically secured. + in: body + required: true + type: boolean +availability_zone: + description: | + The availability of the node in the cluster. + in: body + required: true + type: string +binaries: + description: | + The list of job binary internal objects. + in: body + required: true + type: array +cluster_configs: + description: | + A set of key and value pairs that contain the + cluster configuration. + in: body + required: true + type: object +cluster_id_1: + description: | + The UUID of the cluster. + in: body + required: true + type: string +cluster_template_id: + description: | + The UUID of the cluster template. + in: body + required: true + type: string +clusters: + description: | + The list of clusters. + in: body + required: true + type: array +configs: + description: | + The mappings of the job tasks. + in: body + required: true + type: object +count: + description: | + The number of nodes in the cluster. + in: body + required: true + type: integer +created: + description: | + The date and time when the image was created. + + The date and time stamp format is `ISO 8601 + `_: + + :: + + CCYY-MM-DDThh:mm:ss±hh:mm + + For example, ``2015-08-27T09:49:58-05:00``. + + The ``±hh:mm`` value, if included, is the time zone as an offset + from UTC. + in: body + required: true + type: string +created_at: + description: | + The date and time when the cluster 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 when the object 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 when the node was created in the cluster. + + 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_3: + description: | + The date and time when the job execution object 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 +data_source_urls: + description: | + The data source URLs. + in: body + required: true + type: object +datasize: + description: | + The size of the data stored in the internal + database. + in: body + required: true + type: integer +default_image_id: + description: | + The default ID of the image. + in: body + required: true + type: string +description: + description: | + The description of the cluster. + in: body + required: true + type: string +description_1: + description: | + The description of the data source object. + in: body + required: true + type: string +description_2: + description: | + The description of the job object. + in: body + required: true + type: string +description_3: + description: | + The description of the node in the cluster. + in: body + required: true + type: string +description_4: + description: | + The description of the job binary object. + in: body + required: true + type: string +description_5: + description: | + The description of the image. + in: body + required: true + type: string +description_6: + description: | + The full description of the plugin. + in: body + required: true + type: string +description_7: + description: | + Description of the image. + in: body + required: false + type: string +end_time: + description: | + The end date and time of the job execution. + + The date and time when the job completed execution. + + 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 +flavor_id: + description: | + The ID of the flavor. + in: body + required: true + type: string +floating_ip_pool: + description: | + The UUID of the pool in the template. + in: body + required: true + type: string +hadoop_version: + description: | + The version of the Hadoop used in the cluster. + in: body + required: true + type: string +hadoop_version_1: + description: | + The version of the Hadoop. + in: body + required: true + type: string +id: + description: | + The UUID of the cluster. + in: body + required: true + type: string +id_1: + description: | + The ID of the object. + in: body + required: true + type: string +id_2: + description: | + The UUID of the node in the cluster. + in: body + required: true + type: string +id_3: + description: | + The UUID of the job execution object. + in: body + required: true + type: string +id_4: + description: | + The UUID of the image. + in: body + required: true + type: string +image: + description: | + A set of key and value pairs that contain image + properties. + in: body + required: true + type: object +image_id_1: + description: | + The UUID of the image. + in: body + required: true + type: string +images: + description: | + The list of images and their properties. + in: body + required: true + type: array +info: + description: | + A set of key and value pairs that contain cluster + information. + in: body + required: true + type: object +info_1: + description: | + The report of the executed job objects. + in: body + required: true + type: object +input_id: + description: | + The UUID of the input. + in: body + required: true + type: string +interface: + description: | + The interfaces of the job object. + in: body + required: true + type: array +is_default: + description: | + If set to ``true``, the cluster is the default + cluster. + in: body + required: true + type: boolean +is_default_1: + description: | + If set to ``True`` the node is the default node + in the cluster. + in: body + required: true + type: boolean +is_protected: + description: | + If set to ``true``, the cluster is protected. + in: body + required: true + type: boolean +is_protected_1: + description: | + If set to ``true``, the object is protected. + in: body + required: true + type: boolean +is_protected_2: + description: | + If set to ``true``, the node is protected. + in: body + required: true + type: boolean +is_protected_3: + description: | + If set to ``true``, the job execution object is + protected. + in: body + required: true + type: boolean +is_proxy_gateway: + description: | + If set to ``true``, the node is the proxy + gateway. + in: body + required: true + type: boolean +is_public: + description: | + If set to ``true``, the cluster is public. + in: body + required: true + type: boolean +is_public_1: + description: | + If set to ``true``, the object is public. + in: body + required: true + type: boolean +is_public_2: + description: | + If set to ``True``, the node is public in the + cluster. + in: body + required: true + type: boolean +is_public_3: + description: | + If set to ``true``, the job execution object is + public. + in: body + required: true + type: boolean +is_transient: + description: | + If set to ``true``, the cluster is transient. + in: body + required: true + type: boolean +job_execution: + description: | + A set of key and value pairs that contain the job + object. + in: body + required: true + type: object +job_executions: + description: | + The list of job execution objects. + in: body + required: true + type: array +job_id_1: + description: | + The UUID of the job object. + in: body + required: true + type: string +job_types: + description: | + The list of plugins and their job types. + in: body + required: true + type: array +jobs: + description: | + The list of the jobs. + in: body + required: true + type: array +libs: + description: | + The list of the job object properties. + in: body + required: true + type: array +mains: + description: | + The list of the job object and their properties. + in: body + required: true + type: array +management_public_key: + description: | + The SSH key for the management network. + in: body + required: true + type: string +metadata: + description: | + A set of key and value pairs that contain image + metadata. + in: body + required: true + type: object +minDisk: + description: | + The minimum disk space, in GB. + in: body + required: true + type: integer +minRam: + description: | + The minimum amount of random access memory (RAM) + for the image, in GB. + in: body + required: true + type: integer +name: + description: | + The name of the cluster. + in: body + required: true + type: string +name_1: + description: | + The name of the object. + in: body + required: true + type: string +name_2: + description: | + The name of the node. + in: body + required: true + type: string +name_4: + description: | + The name of the operating system image. + in: body + required: true + type: string +name_5: + description: | + The name of the plugin. + in: body + required: true + type: string +neutron_management_network: + description: | + The UUID of the neutron management network. + in: body + required: true + type: string +node_configs: + description: | + A set of key and value pairs that contain the + node configuration in the cluster. + in: body + required: true + type: object +node_groups: + description: | + The detail properties of the node in key-value + pairs. + in: body + required: true + type: object +node_processes: + description: | + The list of the processes performed by the node. + in: body + required: true + type: array +oozie_job_id: + description: | + The UUID of the ``oozie_job``. + in: body + required: true + type: string +output_id: + description: | + The UUID of the output of job execution object. + in: body + required: true + type: string +params: + description: | + The mappings of values to the parameters. + in: body + required: true + type: object +plugin_name: + description: | + The name of the plugin. + in: body + required: true + type: string +plugins: + description: | + The list of plugins. + in: body + required: true + type: array +progress: + description: | + A progress indicator, as a percentage value, for + the amount of image content that has been processed. + in: body + required: true + type: integer +provision_progress: + description: | + A list of the cluster progresses. + in: body + required: true + type: array +return_code: + description: | + The code returned after job has executed. + in: body + required: true + type: string +security_groups: + description: | + The security groups of the node. + in: body + required: true + type: string +shares: + description: | + The shares of the cluster. + in: body + required: true + type: string +shares_1: + description: | + The sharing of resources in the cluster. + in: body + required: true + type: string +start_time: + description: | + The date and time when the job started. + + 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 +status: + description: | + The status of the cluster. + in: body + required: true + type: string +status_1: + description: | + The current status of the image. + in: body + required: true + type: string +status_description: + description: | + The description of the cluster status. + in: body + required: true + type: string +tags: + description: | + List of tags to add. + in: body + required: true + type: array +tags_1: + description: | + Lists images only with specific tag. Can be used + multiple times. + in: body + required: false + type: string +tags_2: + description: | + One or more image tags. + in: body + required: true + type: array +tags_3: + description: | + List of tags to remove. + in: body + required: true + type: array +tenant_id: + description: | + The UUID of the tenant. + in: body + required: true + type: string +title: + description: | + The title of the plugin. + in: body + required: true + type: string +trust_id: + description: | + The id of the trust. + in: body + required: true + type: integer +type: + description: | + The type of the data source object. + in: body + required: true + type: string +type_1: + description: | + The type of the job object. + in: body + required: true + type: string +updated: + description: | + The date and time when the image was updated. + + The date and time stamp format is `ISO 8601 + `_: + + :: + + CCYY-MM-DDThh:mm:ss±hh:mm + + For example, ``2015-08-27T09:49:58-05:00``. + + The ``±hh:mm`` value, if included, is the time zone as an offset + from UTC. + in: body + required: true + type: string +updated_at: + description: | + The date and time when the cluster 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 when the object 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 when the node 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_3: + description: | + The date and time when the job execution object 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 +url: + description: | + The url of the data source object. + in: body + required: true + type: string +url_1: + description: | + The url of the job binary object. + in: body + required: true + type: string +use_autoconfig: + description: | + If set to ``true``, the cluster is auto + configured. + in: body + required: true + type: boolean +use_autoconfig_1: + description: | + If set to ``true``, the node is auto configured. + in: body + required: true + type: boolean +username: + description: | + The name of the user for the image. + in: body + required: true + type: string +username_1: + description: | + The user name to log in to an instance operating + system for remote operations execution. + in: body + required: true + type: string +versions: + description: | + The list of plugin versions. + in: body + required: true + type: array +volume_local_to_instance: + description: | + If set to ``true``, the volume is local to the + instance. + in: body + required: true + type: boolean +volume_mount_prefix: + description: | + The mount point of the node. + in: body + required: true + type: string +volume_type: + description: | + The type of volume in a node. + in: body + required: true + type: string +volumes_availability_zone: + description: | + The availability zone of the volumes. + in: body + required: true + type: string +volumes_per_node: + description: | + The number of volumes for the node. + in: body + required: true + type: integer +volumes_size: + description: | + The size of the volumes in a node. + in: body + required: true + type: integer + diff --git a/api-ref/source/data-processing/v1.1/plugins.inc b/api-ref/source/data-processing/v1.1/plugins.inc new file mode 100644 index 000000000..4186a50c6 --- /dev/null +++ b/api-ref/source/data-processing/v1.1/plugins.inc @@ -0,0 +1,133 @@ +.. -*- rst -*- + +======= +Plugins +======= + +A plugin object defines the Hadoop or Spark version that it can +install and which configurations can be set for the cluster. + + +Show plugin details +=================== + +.. rest_method:: GET /v1.1/{tenant_id}/plugins/{plugin_name} + +Shows details for a plugin. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - plugin_name: plugin_name + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - versions: versions + - title: title + - description: description + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/plugins/plugin-show-response.json + :language: javascript + + + + +List plugins +============ + +.. rest_method:: GET /v1.1/{tenant_id}/plugins + +Lists all registered plugins. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - title: title + - versions: versions + - plugins: plugins + - description: description + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/plugins/plugins-list-response.json + :language: javascript + + + + +Show plugin version details +=========================== + +.. rest_method:: GET /v1.1/{tenant_id}/plugins/{plugin_name}/{version} + +Shows details for a plugin version. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - version: version + - plugin_name: plugin_name + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - versions: versions + - title: title + - description: description + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/plugins/plugin-version-show-response.json + :language: javascript + + + diff --git a/api-ref/source/data-processing/v1.1/samples/cluster-templates/cluster-template-create-request.json b/api-ref/source/data-processing/v1.1/samples/cluster-templates/cluster-template-create-request.json new file mode 100644 index 000000000..e7d9027f6 --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/cluster-templates/cluster-template-create-request.json @@ -0,0 +1,17 @@ +{ + "plugin_name": "vanilla", + "hadoop_version": "2.7.1", + "node_groups": [ + { + "name": "worker", + "count": 3, + "node_group_template_id": "846edb31-add5-46e6-a4ee-a4c339f99251" + }, + { + "name": "master", + "count": 1, + "node_group_template_id": "0bb9f1a4-0c44-4dc5-9452-6741c62ed9ae" + } + ], + "name": "cluster-template" +} diff --git a/api-ref/source/data-processing/v1.1/samples/cluster-templates/cluster-template-create-response.json b/api-ref/source/data-processing/v1.1/samples/cluster-templates/cluster-template-create-response.json new file mode 100644 index 000000000..82b377908 --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/cluster-templates/cluster-template-create-response.json @@ -0,0 +1,81 @@ +{ + "cluster_template": { + "is_public": false, + "anti_affinity": [], + "name": "cluster-template", + "created_at": "2015-09-14T10:38:44", + "tenant_id": "808d5032ea0446889097723bfc8e919d", + "cluster_configs": {}, + "shares": null, + "id": "57c92a7c-5c6a-42ea-9c6f-9f40a5aa4b36", + "default_image_id": null, + "is_default": false, + "updated_at": null, + "plugin_name": "vanilla", + "node_groups": [ + { + "image_id": null, + "shares": null, + "floating_ip_pool": "033debed-aeb8-488c-b7d0-adb74c61faa5", + "node_configs": {}, + "auto_security_group": false, + "availability_zone": null, + "count": 1, + "flavor_id": "2", + "id": "1751c04e-8f39-467e-a421-480961172d4b", + "security_groups": null, + "use_autoconfig": true, + "volumes_availability_zone": null, + "created_at": "2015-09-14T10:38:44", + "node_group_template_id": "0bb9f1a4-0c44-4dc5-9452-6741c62ed9ae", + "updated_at": null, + "volumes_per_node": 0, + "is_proxy_gateway": false, + "name": "master", + "volume_mount_prefix": "/volumes/disk", + "node_processes": [ + "namenode", + "resourcemanager", + "oozie", + "historyserver" + ], + "volumes_size": 0, + "volume_local_to_instance": false, + "volume_type": null + }, + { + "image_id": null, + "shares": null, + "floating_ip_pool": "033debed-aeb8-488c-b7d0-adb74c61faa5", + "node_configs": {}, + "auto_security_group": false, + "availability_zone": null, + "count": 3, + "flavor_id": "2", + "id": "3ee85068-c455-4391-9db2-b54a20b99df3", + "security_groups": null, + "use_autoconfig": true, + "volumes_availability_zone": null, + "created_at": "2015-09-14T10:38:44", + "node_group_template_id": "846edb31-add5-46e6-a4ee-a4c339f99251", + "updated_at": null, + "volumes_per_node": 0, + "is_proxy_gateway": false, + "name": "worker", + "volume_mount_prefix": "/volumes/disk", + "node_processes": [ + "datanode", + "nodemanager" + ], + "volumes_size": 0, + "volume_local_to_instance": false, + "volume_type": null + } + ], + "neutron_management_network": null, + "hadoop_version": "2.7.1", + "use_autoconfig": true, + "description": null, + "is_protected": false + } +} diff --git a/api-ref/source/data-processing/v1.1/samples/cluster-templates/cluster-template-show-response.json b/api-ref/source/data-processing/v1.1/samples/cluster-templates/cluster-template-show-response.json new file mode 100644 index 000000000..fb94e8858 --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/cluster-templates/cluster-template-show-response.json @@ -0,0 +1,81 @@ +{ + "cluster_template": { + "is_public": false, + "anti_affinity": [], + "name": "cluster-template", + "created_at": "2015-09-14T10:38:44", + "tenant_id": "808d5032ea0446889097723bfc8e919d", + "cluster_configs": {}, + "shares": null, + "id": "57c92a7c-5c6a-42ea-9c6f-9f40a5aa4b36", + "default_image_id": null, + "is_default": false, + "updated_at": null, + "plugin_name": "vanilla", + "node_groups": [ + { + "image_id": null, + "shares": null, + "floating_ip_pool": "033debed-aeb8-488c-b7d0-adb74c61faa5", + "node_configs": {}, + "auto_security_group": false, + "availability_zone": null, + "count": 1, + "flavor_id": "2", + "id": "1751c04e-8f39-467e-a421-480961172d4b", + "security_groups": null, + "use_autoconfig": true, + "volumes_availability_zone": null, + "created_at": "2015-09-14T10:38:44", + "node_group_template_id": "0bb9f1a4-0c44-4dc5-9452-6741c62ed9ae", + "updated_at": null, + "volumes_per_node": 0, + "is_proxy_gateway": false, + "name": "master", + "volume_mount_prefix": "/volumes/disk", + "node_processes": [ + "namenode", + "resourcemanager", + "oozie", + "historyserver" + ], + "volumes_size": 0, + "volume_local_to_instance": false, + "volume_type": null + }, + { + "image_id": null, + "shares": null, + "floating_ip_pool": "033debed-aeb8-488c-b7d0-adb74c61faa5", + "node_configs": {}, + "auto_security_group": false, + "availability_zone": null, + "count": 3, + "flavor_id": "2", + "id": "3ee85068-c455-4391-9db2-b54a20b99df3", + "security_groups": null, + "use_autoconfig": true, + "volumes_availability_zone": null, + "created_at": "2015-09-14T10:38:44", + "node_group_template_id": "846edb31-add5-46e6-a4ee-a4c339f99251", + "updated_at": null, + "volumes_per_node": 0, + "is_proxy_gateway": false, + "name": "worker", + "volume_mount_prefix": "/volumes/disk", + "node_processes": [ + "datanode", + "nodemanager" + ], + "volumes_size": 0, + "volume_local_to_instance": false, + "volume_type": null + } + ], + "neutron_management_network": "b1610452-2933-46b0-bf31-660cfa5621bd", + "hadoop_version": "2.7.1", + "use_autoconfig": true, + "description": null, + "is_protected": false + } +} diff --git a/api-ref/source/data-processing/v1.1/samples/cluster-templates/cluster-template-update-request.json b/api-ref/source/data-processing/v1.1/samples/cluster-templates/cluster-template-update-request.json new file mode 100644 index 000000000..885150e60 --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/cluster-templates/cluster-template-update-request.json @@ -0,0 +1,11 @@ +{ + "description": "Updated template", + "plugin_name": "vanilla", + "hadoop_version": "2.7.1", + "name": "vanilla-updated", + "cluster_configs": { + "HDFS": { + "dfs.replication": 2 + } + } +} diff --git a/api-ref/source/data-processing/v1.1/samples/cluster-templates/cluster-template-update-response.json b/api-ref/source/data-processing/v1.1/samples/cluster-templates/cluster-template-update-response.json new file mode 100644 index 000000000..f1abded46 --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/cluster-templates/cluster-template-update-response.json @@ -0,0 +1,66 @@ +{ + "cluster_template": { + "is_public": false, + "anti_affinity": [], + "name": "vanilla-updated", + "created_at": "2015-08-21T08:41:24", + "tenant_id": "808d5032ea0446889097723bfc8e919d", + "cluster_configs": { + "HDFS": { + "dfs.replication": 2 + } + }, + "shares": null, + "id": "84d47e85-6094-473f-bf6d-5a7e6e86564e", + "default_image_id": null, + "is_default": false, + "updated_at": "2015-09-14T10:45:57", + "plugin_name": "vanilla", + "node_groups": [ + { + "image_id": null, + "shares": null, + "floating_ip_pool": "033debed-aeb8-488c-b7d0-adb74c61faa5", + "node_configs": { + "YARN": {}, + "JobFlow": {}, + "MapReduce": {}, + "Hive": {}, + "Hadoop": {}, + "HDFS": {} + }, + "auto_security_group": true, + "availability_zone": "", + "count": 1, + "flavor_id": "3", + "id": "57b966ab-617e-4735-bf60-0cb991208a52", + "security_groups": [], + "use_autoconfig": true, + "volumes_availability_zone": null, + "created_at": "2015-08-21T08:41:24", + "node_group_template_id": "a5533187-3f14-42c3-ba3a-196c13fe0fb5", + "updated_at": null, + "volumes_per_node": 0, + "is_proxy_gateway": false, + "name": "all", + "volume_mount_prefix": "/volumes/disk", + "node_processes": [ + "namenode", + "datanode", + "historyserver", + "resourcemanager", + "nodemanager", + "oozie" + ], + "volumes_size": 0, + "volume_local_to_instance": false, + "volume_type": null + } + ], + "neutron_management_network": null, + "hadoop_version": "2.7.1", + "use_autoconfig": true, + "description": "Updated template", + "is_protected": false + } +} diff --git a/api-ref/source/data-processing/v1.1/samples/cluster-templates/cluster-templates-list-response.json b/api-ref/source/data-processing/v1.1/samples/cluster-templates/cluster-templates-list-response.json new file mode 100644 index 000000000..18f72587d --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/cluster-templates/cluster-templates-list-response.json @@ -0,0 +1,134 @@ +{ + "cluster_templates": [ + { + "is_public": false, + "anti_affinity": [], + "name": "cluster-template", + "created_at": "2015-09-14T10:38:44", + "tenant_id": "808d5032ea0446889097723bfc8e919d", + "cluster_configs": {}, + "shares": null, + "id": "57c92a7c-5c6a-42ea-9c6f-9f40a5aa4b36", + "default_image_id": null, + "is_default": false, + "updated_at": null, + "plugin_name": "vanilla", + "node_groups": [ + { + "image_id": null, + "shares": null, + "floating_ip_pool": "033debed-aeb8-488c-b7d0-adb74c61faa5", + "node_configs": {}, + "auto_security_group": false, + "availability_zone": null, + "count": 1, + "flavor_id": "2", + "id": "1751c04e-8f39-467e-a421-480961172d4b", + "security_groups": null, + "use_autoconfig": true, + "volumes_availability_zone": null, + "created_at": "2015-09-14T10:38:44", + "node_group_template_id": "0bb9f1a4-0c44-4dc5-9452-6741c62ed9ae", + "updated_at": null, + "volumes_per_node": 0, + "is_proxy_gateway": false, + "name": "master", + "volume_mount_prefix": "/volumes/disk", + "node_processes": [ + "namenode", + "resourcemanager", + "oozie", + "historyserver" + ], + "volumes_size": 0, + "volume_local_to_instance": false, + "volume_type": null + }, + { + "image_id": null, + "shares": null, + "floating_ip_pool": "033debed-aeb8-488c-b7d0-adb74c61faa5", + "node_configs": {}, + "auto_security_group": false, + "availability_zone": null, + "count": 3, + "flavor_id": "2", + "id": "3ee85068-c455-4391-9db2-b54a20b99df3", + "security_groups": null, + "use_autoconfig": true, + "volumes_availability_zone": null, + "created_at": "2015-09-14T10:38:44", + "node_group_template_id": "846edb31-add5-46e6-a4ee-a4c339f99251", + "updated_at": null, + "volumes_per_node": 0, + "is_proxy_gateway": false, + "name": "worker", + "volume_mount_prefix": "/volumes/disk", + "node_processes": [ + "datanode", + "nodemanager" + ], + "volumes_size": 0, + "volume_local_to_instance": false, + "volume_type": null + } + ], + "neutron_management_network": "b1610452-2933-46b0-bf31-660cfa5621bd", + "hadoop_version": "2.7.1", + "use_autoconfig": true, + "description": null, + "is_protected": false + }, + { + "is_public": true, + "anti_affinity": [], + "name": "asd", + "created_at": "2015-08-18T08:39:39", + "tenant_id": "808d5032ea0446889097723bfc8e919d", + "cluster_configs": { + "general": {} + }, + "shares": null, + "id": "5a9c787c-2078-4f7d-9a66-27759be9051b", + "default_image_id": null, + "is_default": false, + "updated_at": "2015-09-14T08:41:15", + "plugin_name": "vanilla", + "node_groups": [ + { + "image_id": null, + "shares": null, + "floating_ip_pool": "033debed-aeb8-488c-b7d0-adb74c61faa5", + "node_configs": {}, + "auto_security_group": true, + "availability_zone": "", + "count": 1, + "flavor_id": "2", + "id": "a65864dd-3f99-4d29-a011-f7711cc23fa0", + "security_groups": [], + "use_autoconfig": true, + "volumes_availability_zone": null, + "created_at": "2015-08-18T08:39:39", + "node_group_template_id": "42ce49de-1b8f-41d5-8f4a-244ec0826d92", + "updated_at": null, + "volumes_per_node": 1, + "is_proxy_gateway": false, + "name": "asd", + "volume_mount_prefix": "/volumes/disk", + "node_processes": [ + "namenode", + "jobtracker" + ], + "volumes_size": 10, + "volume_local_to_instance": false, + "volume_type": null + } + ], + "neutron_management_network": null, + "hadoop_version": "2.7.1", + "use_autoconfig": true, + "description": "", + "is_protected": false + } + ] +} diff --git a/api-ref/source/data-processing/v1.1/samples/clusters/cluster-create-request.json b/api-ref/source/data-processing/v1.1/samples/clusters/cluster-create-request.json new file mode 100644 index 000000000..c579a285c --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/clusters/cluster-create-request.json @@ -0,0 +1,9 @@ +{ + "plugin_name": "vanilla", + "hadoop_version": "2.7.1", + "cluster_template_id": "57c92a7c-5c6a-42ea-9c6f-9f40a5aa4b36", + "default_image_id": "4118a476-dfdc-4b0e-8d5c-463cba08e9ae", + "user_keypair_id": "test", + "name": "vanilla-cluster", + "neutron_management_network": "b1610452-2933-46b0-bf31-660cfa5621bd" +} diff --git a/api-ref/source/data-processing/v1.1/samples/clusters/cluster-create-response.json b/api-ref/source/data-processing/v1.1/samples/clusters/cluster-create-response.json new file mode 100644 index 000000000..9f2952f47 --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/clusters/cluster-create-response.json @@ -0,0 +1,127 @@ +{ + "cluster": { + "is_public": false, + "tenant_id": "808d5032ea0446889097723bfc8e919d", + "shares": null, + "status_description": "", + "plugin_name": "vanilla", + "neutron_management_network": "b1610452-2933-46b0-bf31-660cfa5621bd", + "info": {}, + "user_keypair_id": "test", + "management_public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCfe9ARO+t9CybtuC1+cusDTeQL7wos1+U2dKPlCUJvNUn0PcunGefqWI4MUZPY9yGmvRqfINy7/xRQCzL0AwgqzwcCXamcK8JCC80uH7j8Vxa4kJheG1jxMoz/FpDSdRnzNZ+m7H5rjOwAQANhL7KatGLyCPQg9fqOoaIyCZE/A3fztm/XjJMpWnuANpUZubZtISEfu4UZKVk/DPSlBrbTZkTOvEog1LwZCZoTt0rq6a7PJFzJJkq0YecRudu/f3tpXbNe/F84sd9PhOSqcrRbm72WzglyEE8PuS1kuWpEz8G+Y5/0tQxnoh6khj9mgflrdCFuvpdutFLH4eN5MFDh Generated-by-Sahara\n", + "id": "e172d86c-906d-418e-a29c-6189f53bfa42", + "cluster_template_id": "57c92a7c-5c6a-42ea-9c6f-9f40a5aa4b36", + "node_groups": [ + { + "image_id": null, + "shares": null, + "floating_ip_pool": "033debed-aeb8-488c-b7d0-adb74c61faa5", + "node_configs": { + "YARN": { + "yarn.nodemanager.vmem-check-enabled": "false", + "yarn.scheduler.maximum-allocation-mb": 2048, + "yarn.scheduler.minimum-allocation-mb": 256, + "yarn.nodemanager.resource.memory-mb": 2048 + }, + "MapReduce": { + "yarn.app.mapreduce.am.resource.mb": 256, + "mapreduce.task.io.sort.mb": 102, + "mapreduce.reduce.java.opts": "-Xmx409m", + "mapreduce.reduce.memory.mb": 512, + "mapreduce.map.memory.mb": 256, + "yarn.app.mapreduce.am.command-opts": "-Xmx204m", + "mapreduce.map.java.opts": "-Xmx204m" + } + }, + "auto_security_group": false, + "availability_zone": null, + "count": 1, + "flavor_id": "2", + "id": "0fe07f2a-0275-4bc0-93b2-c3c1e48e2815", + "security_groups": null, + "use_autoconfig": true, + "instances": [], + "volumes_availability_zone": null, + "created_at": "2015-09-14T10:57:11", + "node_group_template_id": "0bb9f1a4-0c44-4dc5-9452-6741c62ed9ae", + "updated_at": "2015-09-14T10:57:12", + "volumes_per_node": 0, + "is_proxy_gateway": false, + "name": "master", + "volume_mount_prefix": "/volumes/disk", + "node_processes": [ + "namenode", + "resourcemanager", + "oozie", + "historyserver" + ], + "volumes_size": 0, + "volume_local_to_instance": false, + "volume_type": null + }, + { + "image_id": null, + "shares": null, + "floating_ip_pool": "033debed-aeb8-488c-b7d0-adb74c61faa5", + "node_configs": { + "YARN": { + "yarn.nodemanager.vmem-check-enabled": "false", + "yarn.scheduler.maximum-allocation-mb": 2048, + "yarn.scheduler.minimum-allocation-mb": 256, + "yarn.nodemanager.resource.memory-mb": 2048 + }, + "MapReduce": { + "yarn.app.mapreduce.am.resource.mb": 256, + "mapreduce.task.io.sort.mb": 102, + "mapreduce.reduce.java.opts": "-Xmx409m", + "mapreduce.reduce.memory.mb": 512, + "mapreduce.map.memory.mb": 256, + "yarn.app.mapreduce.am.command-opts": "-Xmx204m", + "mapreduce.map.java.opts": "-Xmx204m" + } + }, + "auto_security_group": false, + "availability_zone": null, + "count": 3, + "flavor_id": "2", + "id": "c7a3bea4-c898-446b-8c67-6d378d4c06c4", + "security_groups": null, + "use_autoconfig": true, + "instances": [], + "volumes_availability_zone": null, + "created_at": "2015-09-14T10:57:11", + "node_group_template_id": "846edb31-add5-46e6-a4ee-a4c339f99251", + "updated_at": "2015-09-14T10:57:12", + "volumes_per_node": 0, + "is_proxy_gateway": false, + "name": "worker", + "volume_mount_prefix": "/volumes/disk", + "node_processes": [ + "datanode", + "nodemanager" + ], + "volumes_size": 0, + "volume_local_to_instance": false, + "volume_type": null + } + ], + "provision_progress": [], + "hadoop_version": "2.7.1", + "use_autoconfig": true, + "trust_id": null, + "description": null, + "created_at": "2015-09-14T10:57:11", + "is_protected": false, + "updated_at": "2015-09-14T10:57:12", + "is_transient": false, + "cluster_configs": { + "HDFS": { + "dfs.replication": 3 + } + }, + "anti_affinity": [], + "name": "vanilla-cluster", + "default_image_id": "4118a476-dfdc-4b0e-8d5c-463cba08e9ae", + "status": "Validating" + } +} diff --git a/api-ref/source/data-processing/v1.1/samples/clusters/cluster-scale-request.json b/api-ref/source/data-processing/v1.1/samples/clusters/cluster-scale-request.json new file mode 100644 index 000000000..8b61d5ea0 --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/clusters/cluster-scale-request.json @@ -0,0 +1,15 @@ +{ + "add_node_groups": [ + { + "count": 1, + "name": "b-worker", + "node_group_template_id": "bc270ffe-a086-4eeb-9baa-2f5a73504622" + } + ], + "resize_node_groups": [ + { + "count": 4, + "name": "worker" + } + ] +} diff --git a/api-ref/source/data-processing/v1.1/samples/clusters/cluster-scale-response.json b/api-ref/source/data-processing/v1.1/samples/clusters/cluster-scale-response.json new file mode 100644 index 000000000..7e2ca71ce --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/clusters/cluster-scale-response.json @@ -0,0 +1,369 @@ +{ + "cluster": { + "info": { + "YARN": { + "Web UI": "http://172.18.168.115:8088", + "ResourceManager": "http://172.18.168.115:8032" + }, + "HDFS": { + "Web UI": "http://172.18.168.115:50070", + "NameNode": "hdfs://vanilla-cluster-master-0:9000" + }, + "MapReduce JobHistory Server": { + "Web UI": "http://172.18.168.115:19888" + }, + "JobFlow": { + "Oozie": "http://172.18.168.115:11000" + } + }, + "plugin_name": "vanilla", + "hadoop_version": "2.7.1", + "updated_at": "2015-09-14T11:01:15", + "name": "vanilla-cluster", + "id": "e172d86c-906d-418e-a29c-6189f53bfa42", + "management_public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCfe9ARO+t9CybtuC1+cusDTeQL7wos1+U2dKPlCUJvNUn0PcunGefqWI4MUZPY9yGmvRqfINy7/xRQCzL0AwgqzwcCXamcK8JCC80uH7j8Vxa4kJheG1jxMoz/FpDSdRnzNZ+m7H5rjOwAQANhL7KatGLyCPQg9fqOoaIyCZE/A3fztm/XjJMpWnuANpUZubZtISEfu4UZKVk/DPSlBrbTZkTOvEog1LwZCZoTt0rq6a7PJFzJJkq0YecRudu/f3tpXbNe/F84sd9PhOSqcrRbm72WzglyEE8PuS1kuWpEz8G+Y5/0tQxnoh6khj9mgflrdCFuvpdutFLH4eN5MFDh Generated-by-Sahara\n", + "trust_id": null, + "status_description": "", + "default_image_id": "4118a476-dfdc-4b0e-8d5c-463cba08e9ae", + "cluster_template_id": "57c92a7c-5c6a-42ea-9c6f-9f40a5aa4b36", + "is_protected": false, + "is_transient": false, + "provision_progress": [ + { + "cluster_id": "e172d86c-906d-418e-a29c-6189f53bfa42", + "total": 1, + "successful": true, + "step_name": "Create Heat stack", + "step_type": "Engine: create cluster", + "updated_at": "2015-09-14T10:57:38", + "tenant_id": "808d5032ea0446889097723bfc8e919d", + "created_at": "2015-09-14T10:57:18", + "id": "0a6d95f9-30f4-4434-823a-a38a7999a5af" + }, + { + "cluster_id": "e172d86c-906d-418e-a29c-6189f53bfa42", + "total": 4, + "successful": true, + "step_name": "Configure instances", + "step_type": "Engine: create cluster", + "updated_at": "2015-09-14T10:58:22", + "tenant_id": "808d5032ea0446889097723bfc8e919d", + "created_at": "2015-09-14T10:58:16", + "id": "29f2b587-c34c-4871-9ed9-9235b411cd9a" + }, + { + "cluster_id": "e172d86c-906d-418e-a29c-6189f53bfa42", + "total": 1, + "successful": true, + "step_name": "Start the following process(es): Oozie", + "step_type": "Plugin: start cluster", + "updated_at": "2015-09-14T11:01:15", + "tenant_id": "808d5032ea0446889097723bfc8e919d", + "created_at": "2015-09-14T11:00:27", + "id": "36f1efde-90f9-41c1-b409-aa1cf9623e3e" + }, + { + "cluster_id": "e172d86c-906d-418e-a29c-6189f53bfa42", + "total": 4, + "successful": true, + "step_name": "Configure instances", + "step_type": "Plugin: configure cluster", + "updated_at": "2015-09-14T10:59:21", + "tenant_id": "808d5032ea0446889097723bfc8e919d", + "created_at": "2015-09-14T10:58:22", + "id": "602bcc27-3a2d-42c8-8aca-ebc475319c72" + }, + { + "cluster_id": "e172d86c-906d-418e-a29c-6189f53bfa42", + "total": 1, + "successful": true, + "step_name": "Configure topology data", + "step_type": "Plugin: configure cluster", + "updated_at": "2015-09-14T10:59:37", + "tenant_id": "808d5032ea0446889097723bfc8e919d", + "created_at": "2015-09-14T10:59:21", + "id": "7e291df1-2d32-410d-ae89-33ab6f83cf17" + }, + { + "cluster_id": "e172d86c-906d-418e-a29c-6189f53bfa42", + "total": 3, + "successful": true, + "step_name": "Start the following process(es): DataNodes, NodeManagers", + "step_type": "Plugin: start cluster", + "updated_at": "2015-09-14T11:00:11", + "tenant_id": "808d5032ea0446889097723bfc8e919d", + "created_at": "2015-09-14T11:00:01", + "id": "8ab7933c-ad61-4a4f-88db-23ce78ee10f6" + }, + { + "cluster_id": "e172d86c-906d-418e-a29c-6189f53bfa42", + "total": 1, + "successful": true, + "step_name": "Await DataNodes start up", + "step_type": "Plugin: start cluster", + "updated_at": "2015-09-14T11:00:21", + "tenant_id": "808d5032ea0446889097723bfc8e919d", + "created_at": "2015-09-14T11:00:11", + "id": "9c8dc016-8c5b-4e80-9857-80c41f6bd971" + }, + { + "cluster_id": "e172d86c-906d-418e-a29c-6189f53bfa42", + "total": 1, + "successful": true, + "step_name": "Start the following process(es): HistoryServer", + "step_type": "Plugin: start cluster", + "updated_at": "2015-09-14T11:00:27", + "tenant_id": "808d5032ea0446889097723bfc8e919d", + "created_at": "2015-09-14T11:00:21", + "id": "c6327532-222b-416c-858f-73dbb32b8e97" + }, + { + "cluster_id": "e172d86c-906d-418e-a29c-6189f53bfa42", + "total": 4, + "successful": true, + "step_name": "Wait for instance accessibility", + "step_type": "Engine: create cluster", + "updated_at": "2015-09-14T10:58:14", + "tenant_id": "808d5032ea0446889097723bfc8e919d", + "created_at": "2015-09-14T10:57:41", + "id": "d3eca726-8b44-473a-ac29-fba45a893725" + }, + { + "cluster_id": "e172d86c-906d-418e-a29c-6189f53bfa42", + "total": 0, + "successful": true, + "step_name": "Mount volumes to instances", + "step_type": "Engine: create cluster", + "updated_at": "2015-09-14T10:58:15", + "tenant_id": "808d5032ea0446889097723bfc8e919d", + "created_at": "2015-09-14T10:58:14", + "id": "d7a875ff-64bf-41aa-882d-b5061c8ee152" + }, + { + "cluster_id": "e172d86c-906d-418e-a29c-6189f53bfa42", + "total": 1, + "successful": true, + "step_name": "Start the following process(es): ResourceManager", + "step_type": "Plugin: start cluster", + "updated_at": "2015-09-14T11:00:00", + "tenant_id": "808d5032ea0446889097723bfc8e919d", + "created_at": "2015-09-14T10:59:55", + "id": "ded7d227-10b8-4cb0-ab6c-25da1462bb7a" + }, + { + "cluster_id": "e172d86c-906d-418e-a29c-6189f53bfa42", + "total": 1, + "successful": true, + "step_name": "Start the following process(es): NameNode", + "step_type": "Plugin: start cluster", + "updated_at": "2015-09-14T10:59:54", + "tenant_id": "808d5032ea0446889097723bfc8e919d", + "created_at": "2015-09-14T10:59:38", + "id": "e1701ff5-930a-4212-945a-43515dfe24d1" + }, + { + "cluster_id": "e172d86c-906d-418e-a29c-6189f53bfa42", + "total": 4, + "successful": true, + "step_name": "Assign IPs", + "step_type": "Engine: create cluster", + "updated_at": "2015-09-14T10:57:41", + "tenant_id": "808d5032ea0446889097723bfc8e919d", + "created_at": "2015-09-14T10:57:38", + "id": "eaf0ab1b-bf8f-48f0-8f2c-fa4f82f539b9" + } + ], + "status": "Active", + "description": null, + "use_autoconfig": true, + "shares": null, + "neutron_management_network": "b1610452-2933-46b0-bf31-660cfa5621bd", + "is_public": false, + "tenant_id": "808d5032ea0446889097723bfc8e919d", + "node_groups": [ + { + "volumes_per_node": 0, + "volume_type": null, + "updated_at": "2015-09-14T10:57:37", + "name": "b-worker", + "id": "b7a6dea4-c898-446b-8c67-4f378d4c06c4", + "node_group_template_id": "bc270ffe-a086-4eeb-9baa-2f5a73504622", + "node_configs": { + "YARN": { + "yarn.nodemanager.vmem-check-enabled": "false", + "yarn.scheduler.minimum-allocation-mb": 256, + "yarn.nodemanager.resource.memory-mb": 2048, + "yarn.scheduler.maximum-allocation-mb": 2048 + }, + "MapReduce": { + "mapreduce.map.memory.mb": 256, + "yarn.app.mapreduce.am.command-opts": "-Xmx204m", + "mapreduce.map.java.opts": "-Xmx204m", + "mapreduce.reduce.memory.mb": 512, + "mapreduce.task.io.sort.mb": 102, + "mapreduce.reduce.java.opts": "-Xmx409m", + "yarn.app.mapreduce.am.resource.mb": 256 + } + }, + "auto_security_group": false, + "volumes_availability_zone": null, + "use_autoconfig": true, + "security_groups": null, + "shares": null, + "node_processes": [ + "datanode", + "nodemanager" + ], + "availability_zone": null, + "flavor_id": "2", + "image_id": null, + "volume_local_to_instance": false, + "count": 1, + "volumes_size": 0, + "floating_ip_pool": "033debed-aeb8-488c-b7d0-adb74c61faa5", + "volume_mount_prefix": "/volumes/disk", + "instances": [], + "is_proxy_gateway": false, + "created_at": "2015-09-14T10:57:11" + }, + { + "volumes_per_node": 0, + "volume_type": null, + "updated_at": "2015-09-14T10:57:36", + "name": "master", + "id": "0fe07f2a-0275-4bc0-93b2-c3c1e48e2815", + "node_group_template_id": "0bb9f1a4-0c44-4dc5-9452-6741c62ed9ae", + "node_configs": { + "YARN": { + "yarn.nodemanager.vmem-check-enabled": "false", + "yarn.scheduler.minimum-allocation-mb": 256, + "yarn.nodemanager.resource.memory-mb": 2048, + "yarn.scheduler.maximum-allocation-mb": 2048 + }, + "MapReduce": { + "mapreduce.map.memory.mb": 256, + "yarn.app.mapreduce.am.command-opts": "-Xmx204m", + "mapreduce.map.java.opts": "-Xmx204m", + "mapreduce.reduce.memory.mb": 512, + "mapreduce.task.io.sort.mb": 102, + "mapreduce.reduce.java.opts": "-Xmx409m", + "yarn.app.mapreduce.am.resource.mb": 256 + } + }, + "auto_security_group": false, + "volumes_availability_zone": null, + "use_autoconfig": true, + "security_groups": null, + "shares": null, + "node_processes": [ + "namenode", + "resourcemanager", + "oozie", + "historyserver" + ], + "availability_zone": null, + "flavor_id": "2", + "image_id": null, + "volume_local_to_instance": false, + "count": 1, + "volumes_size": 0, + "floating_ip_pool": "033debed-aeb8-488c-b7d0-adb74c61faa5", + "volume_mount_prefix": "/volumes/disk", + "instances": [ + { + "instance_id": "b9f16a07-88fc-423e-83a3-489598fe6737", + "internal_ip": "10.50.0.60", + "instance_name": "vanilla-cluster-master-0", + "updated_at": "2015-09-14T10:57:39", + "management_ip": "172.18.168.115", + "created_at": "2015-09-14T10:57:36", + "id": "4867d92e-cc7b-4cde-9a1a-149e91caa491" + } + ], + "is_proxy_gateway": false, + "created_at": "2015-09-14T10:57:11" + }, + { + "volumes_per_node": 0, + "volume_type": null, + "updated_at": "2015-09-14T10:57:37", + "name": "worker", + "id": "c7a3bea4-c898-446b-8c67-6d378d4c06c4", + "node_group_template_id": "846edb31-add5-46e6-a4ee-a4c339f99251", + "node_configs": { + "YARN": { + "yarn.nodemanager.vmem-check-enabled": "false", + "yarn.scheduler.minimum-allocation-mb": 256, + "yarn.nodemanager.resource.memory-mb": 2048, + "yarn.scheduler.maximum-allocation-mb": 2048 + }, + "MapReduce": { + "mapreduce.map.memory.mb": 256, + "yarn.app.mapreduce.am.command-opts": "-Xmx204m", + "mapreduce.map.java.opts": "-Xmx204m", + "mapreduce.reduce.memory.mb": 512, + "mapreduce.task.io.sort.mb": 102, + "mapreduce.reduce.java.opts": "-Xmx409m", + "yarn.app.mapreduce.am.resource.mb": 256 + } + }, + "auto_security_group": false, + "volumes_availability_zone": null, + "use_autoconfig": true, + "security_groups": null, + "shares": null, + "node_processes": [ + "datanode", + "nodemanager" + ], + "availability_zone": null, + "flavor_id": "2", + "image_id": null, + "volume_local_to_instance": false, + "count": 4, + "volumes_size": 0, + "floating_ip_pool": "033debed-aeb8-488c-b7d0-adb74c61faa5", + "volume_mount_prefix": "/volumes/disk", + "instances": [ + { + "instance_id": "0cf1ee81-aa72-48da-be2c-65bc2fa51f8f", + "internal_ip": "10.50.0.63", + "instance_name": "vanilla-cluster-worker-0", + "updated_at": "2015-09-14T10:57:39", + "management_ip": "172.18.168.118", + "created_at": "2015-09-14T10:57:37", + "id": "f3633b30-c1e4-4144-930b-ab5b780b87be" + }, + { + "instance_id": "4a937391-b594-4ad0-9a53-00a99a691383", + "internal_ip": "10.50.0.62", + "instance_name": "vanilla-cluster-worker-1", + "updated_at": "2015-09-14T10:57:40", + "management_ip": "172.18.168.117", + "created_at": "2015-09-14T10:57:37", + "id": "0d66fd93-f277-4a94-b46a-f5866aa0c38f" + }, + { + "instance_id": "839b1d56-6d0d-4aa4-9d05-30e029c276f8", + "internal_ip": "10.50.0.61", + "instance_name": "vanilla-cluster-worker-2", + "updated_at": "2015-09-14T10:57:40", + "management_ip": "172.18.168.116", + "created_at": "2015-09-14T10:57:37", + "id": "0982cefd-5c58-436e-8f1e-c1d0830f18a7" + } + ], + "is_proxy_gateway": false, + "created_at": "2015-09-14T10:57:11" + } + ], + "cluster_configs": { + "HDFS": { + "dfs.replication": 3 + } + }, + "user_keypair_id": "apavlov", + "anti_affinity": [], + "created_at": "2015-09-14T10:57:11" + } +} diff --git a/api-ref/source/data-processing/v1.1/samples/clusters/cluster-show-response.json b/api-ref/source/data-processing/v1.1/samples/clusters/cluster-show-response.json new file mode 100644 index 000000000..9f2952f47 --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/clusters/cluster-show-response.json @@ -0,0 +1,127 @@ +{ + "cluster": { + "is_public": false, + "tenant_id": "808d5032ea0446889097723bfc8e919d", + "shares": null, + "status_description": "", + "plugin_name": "vanilla", + "neutron_management_network": "b1610452-2933-46b0-bf31-660cfa5621bd", + "info": {}, + "user_keypair_id": "test", + "management_public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCfe9ARO+t9CybtuC1+cusDTeQL7wos1+U2dKPlCUJvNUn0PcunGefqWI4MUZPY9yGmvRqfINy7/xRQCzL0AwgqzwcCXamcK8JCC80uH7j8Vxa4kJheG1jxMoz/FpDSdRnzNZ+m7H5rjOwAQANhL7KatGLyCPQg9fqOoaIyCZE/A3fztm/XjJMpWnuANpUZubZtISEfu4UZKVk/DPSlBrbTZkTOvEog1LwZCZoTt0rq6a7PJFzJJkq0YecRudu/f3tpXbNe/F84sd9PhOSqcrRbm72WzglyEE8PuS1kuWpEz8G+Y5/0tQxnoh6khj9mgflrdCFuvpdutFLH4eN5MFDh Generated-by-Sahara\n", + "id": "e172d86c-906d-418e-a29c-6189f53bfa42", + "cluster_template_id": "57c92a7c-5c6a-42ea-9c6f-9f40a5aa4b36", + "node_groups": [ + { + "image_id": null, + "shares": null, + "floating_ip_pool": "033debed-aeb8-488c-b7d0-adb74c61faa5", + "node_configs": { + "YARN": { + "yarn.nodemanager.vmem-check-enabled": "false", + "yarn.scheduler.maximum-allocation-mb": 2048, + "yarn.scheduler.minimum-allocation-mb": 256, + "yarn.nodemanager.resource.memory-mb": 2048 + }, + "MapReduce": { + "yarn.app.mapreduce.am.resource.mb": 256, + "mapreduce.task.io.sort.mb": 102, + "mapreduce.reduce.java.opts": "-Xmx409m", + "mapreduce.reduce.memory.mb": 512, + "mapreduce.map.memory.mb": 256, + "yarn.app.mapreduce.am.command-opts": "-Xmx204m", + "mapreduce.map.java.opts": "-Xmx204m" + } + }, + "auto_security_group": false, + "availability_zone": null, + "count": 1, + "flavor_id": "2", + "id": "0fe07f2a-0275-4bc0-93b2-c3c1e48e2815", + "security_groups": null, + "use_autoconfig": true, + "instances": [], + "volumes_availability_zone": null, + "created_at": "2015-09-14T10:57:11", + "node_group_template_id": "0bb9f1a4-0c44-4dc5-9452-6741c62ed9ae", + "updated_at": "2015-09-14T10:57:12", + "volumes_per_node": 0, + "is_proxy_gateway": false, + "name": "master", + "volume_mount_prefix": "/volumes/disk", + "node_processes": [ + "namenode", + "resourcemanager", + "oozie", + "historyserver" + ], + "volumes_size": 0, + "volume_local_to_instance": false, + "volume_type": null + }, + { + "image_id": null, + "shares": null, + "floating_ip_pool": "033debed-aeb8-488c-b7d0-adb74c61faa5", + "node_configs": { + "YARN": { + "yarn.nodemanager.vmem-check-enabled": "false", + "yarn.scheduler.maximum-allocation-mb": 2048, + "yarn.scheduler.minimum-allocation-mb": 256, + "yarn.nodemanager.resource.memory-mb": 2048 + }, + "MapReduce": { + "yarn.app.mapreduce.am.resource.mb": 256, + "mapreduce.task.io.sort.mb": 102, + "mapreduce.reduce.java.opts": "-Xmx409m", + "mapreduce.reduce.memory.mb": 512, + "mapreduce.map.memory.mb": 256, + "yarn.app.mapreduce.am.command-opts": "-Xmx204m", + "mapreduce.map.java.opts": "-Xmx204m" + } + }, + "auto_security_group": false, + "availability_zone": null, + "count": 3, + "flavor_id": "2", + "id": "c7a3bea4-c898-446b-8c67-6d378d4c06c4", + "security_groups": null, + "use_autoconfig": true, + "instances": [], + "volumes_availability_zone": null, + "created_at": "2015-09-14T10:57:11", + "node_group_template_id": "846edb31-add5-46e6-a4ee-a4c339f99251", + "updated_at": "2015-09-14T10:57:12", + "volumes_per_node": 0, + "is_proxy_gateway": false, + "name": "worker", + "volume_mount_prefix": "/volumes/disk", + "node_processes": [ + "datanode", + "nodemanager" + ], + "volumes_size": 0, + "volume_local_to_instance": false, + "volume_type": null + } + ], + "provision_progress": [], + "hadoop_version": "2.7.1", + "use_autoconfig": true, + "trust_id": null, + "description": null, + "created_at": "2015-09-14T10:57:11", + "is_protected": false, + "updated_at": "2015-09-14T10:57:12", + "is_transient": false, + "cluster_configs": { + "HDFS": { + "dfs.replication": 3 + } + }, + "anti_affinity": [], + "name": "vanilla-cluster", + "default_image_id": "4118a476-dfdc-4b0e-8d5c-463cba08e9ae", + "status": "Validating" + } +} diff --git a/api-ref/source/data-processing/v1.1/samples/clusters/cluster-update-request.json b/api-ref/source/data-processing/v1.1/samples/clusters/cluster-update-request.json new file mode 100644 index 000000000..ab01348af --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/clusters/cluster-update-request.json @@ -0,0 +1,4 @@ +{ + "name": "public-vanilla-cluster", + "is_public": true +} diff --git a/api-ref/source/data-processing/v1.1/samples/clusters/cluster-update-response.json b/api-ref/source/data-processing/v1.1/samples/clusters/cluster-update-response.json new file mode 100644 index 000000000..d961c477e --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/clusters/cluster-update-response.json @@ -0,0 +1,127 @@ +{ + "cluster": { + "is_public": true, + "tenant_id": "808d5032ea0446889097723bfc8e919d", + "shares": null, + "status_description": "", + "plugin_name": "vanilla", + "neutron_management_network": "b1610452-2933-46b0-bf31-660cfa5621bd", + "info": {}, + "user_keypair_id": "test", + "management_public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCfe9ARO+t9CybtuC1+cusDTeQL7wos1+U2dKPlCUJvNUn0PcunGefqWI4MUZPY9yGmvRqfINy7/xRQCzL0AwgqzwcCXamcK8JCC80uH7j8Vxa4kJheG1jxMoz/FpDSdRnzNZ+m7H5rjOwAQANhL7KatGLyCPQg9fqOoaIyCZE/A3fztm/XjJMpWnuANpUZubZtISEfu4UZKVk/DPSlBrbTZkTOvEog1LwZCZoTt0rq6a7PJFzJJkq0YecRudu/f3tpXbNe/F84sd9PhOSqcrRbm72WzglyEE8PuS1kuWpEz8G+Y5/0tQxnoh6khj9mgflrdCFuvpdutFLH4eN5MFDh Generated-by-Sahara\n", + "id": "e172d86c-906d-418e-a29c-6189f53bfa42", + "cluster_template_id": "57c92a7c-5c6a-42ea-9c6f-9f40a5aa4b36", + "node_groups": [ + { + "image_id": null, + "shares": null, + "floating_ip_pool": "033debed-aeb8-488c-b7d0-adb74c61faa5", + "node_configs": { + "YARN": { + "yarn.nodemanager.vmem-check-enabled": "false", + "yarn.scheduler.maximum-allocation-mb": 2048, + "yarn.scheduler.minimum-allocation-mb": 256, + "yarn.nodemanager.resource.memory-mb": 2048 + }, + "MapReduce": { + "yarn.app.mapreduce.am.resource.mb": 256, + "mapreduce.task.io.sort.mb": 102, + "mapreduce.reduce.java.opts": "-Xmx409m", + "mapreduce.reduce.memory.mb": 512, + "mapreduce.map.memory.mb": 256, + "yarn.app.mapreduce.am.command-opts": "-Xmx204m", + "mapreduce.map.java.opts": "-Xmx204m" + } + }, + "auto_security_group": false, + "availability_zone": null, + "count": 1, + "flavor_id": "2", + "id": "0fe07f2a-0275-4bc0-93b2-c3c1e48e2815", + "security_groups": null, + "use_autoconfig": true, + "instances": [], + "volumes_availability_zone": null, + "created_at": "2015-09-14T10:57:11", + "node_group_template_id": "0bb9f1a4-0c44-4dc5-9452-6741c62ed9ae", + "updated_at": "2015-09-14T10:57:12", + "volumes_per_node": 0, + "is_proxy_gateway": false, + "name": "master", + "volume_mount_prefix": "/volumes/disk", + "node_processes": [ + "namenode", + "resourcemanager", + "oozie", + "historyserver" + ], + "volumes_size": 0, + "volume_local_to_instance": false, + "volume_type": null + }, + { + "image_id": null, + "shares": null, + "floating_ip_pool": "033debed-aeb8-488c-b7d0-adb74c61faa5", + "node_configs": { + "YARN": { + "yarn.nodemanager.vmem-check-enabled": "false", + "yarn.scheduler.maximum-allocation-mb": 2048, + "yarn.scheduler.minimum-allocation-mb": 256, + "yarn.nodemanager.resource.memory-mb": 2048 + }, + "MapReduce": { + "yarn.app.mapreduce.am.resource.mb": 256, + "mapreduce.task.io.sort.mb": 102, + "mapreduce.reduce.java.opts": "-Xmx409m", + "mapreduce.reduce.memory.mb": 512, + "mapreduce.map.memory.mb": 256, + "yarn.app.mapreduce.am.command-opts": "-Xmx204m", + "mapreduce.map.java.opts": "-Xmx204m" + } + }, + "auto_security_group": false, + "availability_zone": null, + "count": 3, + "flavor_id": "2", + "id": "c7a3bea4-c898-446b-8c67-6d378d4c06c4", + "security_groups": null, + "use_autoconfig": true, + "instances": [], + "volumes_availability_zone": null, + "created_at": "2015-09-14T10:57:11", + "node_group_template_id": "846edb31-add5-46e6-a4ee-a4c339f99251", + "updated_at": "2015-09-14T10:57:12", + "volumes_per_node": 0, + "is_proxy_gateway": false, + "name": "worker", + "volume_mount_prefix": "/volumes/disk", + "node_processes": [ + "datanode", + "nodemanager" + ], + "volumes_size": 0, + "volume_local_to_instance": false, + "volume_type": null + } + ], + "provision_progress": [], + "hadoop_version": "2.7.1", + "use_autoconfig": true, + "trust_id": null, + "description": null, + "created_at": "2015-09-14T10:57:11", + "is_protected": false, + "updated_at": "2015-09-14T10:57:12", + "is_transient": false, + "cluster_configs": { + "HDFS": { + "dfs.replication": 3 + } + }, + "anti_affinity": [], + "name": "public-vanilla-cluster", + "default_image_id": "4118a476-dfdc-4b0e-8d5c-463cba08e9ae", + "status": "Validating" + } +} diff --git a/api-ref/source/data-processing/v1.1/samples/clusters/clusters-list-response.json b/api-ref/source/data-processing/v1.1/samples/clusters/clusters-list-response.json new file mode 100644 index 000000000..c41b952b4 --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/clusters/clusters-list-response.json @@ -0,0 +1,326 @@ +{ + "clusters": [ + { + "is_public": false, + "tenant_id": "808d5032ea0446889097723bfc8e919d", + "shares": null, + "status_description": "", + "plugin_name": "vanilla", + "neutron_management_network": "b1610452-2933-46b0-bf31-660cfa5621bd", + "info": { + "YARN": { + "Web UI": "http://172.18.168.115:8088", + "ResourceManager": "http://172.18.168.115:8032" + }, + "HDFS": { + "Web UI": "http://172.18.168.115:50070", + "NameNode": "hdfs://vanilla-cluster-master-0:9000" + }, + "JobFlow": { + "Oozie": "http://172.18.168.115:11000" + }, + "MapReduce JobHistory Server": { + "Web UI": "http://172.18.168.115:19888" + } + }, + "user_keypair_id": "apavlov", + "management_public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCfe9ARO+t9CybtuC1+cusDTeQL7wos1+U2dKPlCUJvNUn0PcunGefqWI4MUZPY9yGmvRqfINy7/xRQCzL0AwgqzwcCXamcK8JCC80uH7j8Vxa4kJheG1jxMoz/FpDSdRnzNZ+m7H5rjOwAQANhL7KatGLyCPQg9fqOoaIyCZE/A3fztm/XjJMpWnuANpUZubZtISEfu4UZKVk/DPSlBrbTZkTOvEog1LwZCZoTt0rq6a7PJFzJJkq0YecRudu/f3tpXbNe/F84sd9PhOSqcrRbm72WzglyEE8PuS1kuWpEz8G+Y5/0tQxnoh6khj9mgflrdCFuvpdutFLH4eN5MFDh Generated-by-Sahara\n", + "id": "e172d86c-906d-418e-a29c-6189f53bfa42", + "cluster_template_id": "57c92a7c-5c6a-42ea-9c6f-9f40a5aa4b36", + "node_groups": [ + { + "image_id": null, + "shares": null, + "floating_ip_pool": "033debed-aeb8-488c-b7d0-adb74c61faa5", + "node_configs": { + "YARN": { + "yarn.nodemanager.vmem-check-enabled": "false", + "yarn.scheduler.maximum-allocation-mb": 2048, + "yarn.scheduler.minimum-allocation-mb": 256, + "yarn.nodemanager.resource.memory-mb": 2048 + }, + "MapReduce": { + "yarn.app.mapreduce.am.resource.mb": 256, + "mapreduce.task.io.sort.mb": 102, + "mapreduce.reduce.java.opts": "-Xmx409m", + "mapreduce.reduce.memory.mb": 512, + "mapreduce.map.memory.mb": 256, + "yarn.app.mapreduce.am.command-opts": "-Xmx204m", + "mapreduce.map.java.opts": "-Xmx204m" + } + }, + "auto_security_group": false, + "availability_zone": null, + "count": 1, + "flavor_id": "2", + "id": "0fe07f2a-0275-4bc0-93b2-c3c1e48e2815", + "security_groups": null, + "use_autoconfig": true, + "instances": [ + { + "created_at": "2015-09-14T10:57:36", + "id": "4867d92e-cc7b-4cde-9a1a-149e91caa491", + "management_ip": "172.18.168.115", + "updated_at": "2015-09-14T10:57:39", + "instance_id": "b9f16a07-88fc-423e-83a3-489598fe6737", + "internal_ip": "10.50.0.60", + "instance_name": "vanilla-cluster-master-0" + } + ], + "volumes_availability_zone": null, + "created_at": "2015-09-14T10:57:11", + "node_group_template_id": "0bb9f1a4-0c44-4dc5-9452-6741c62ed9ae", + "updated_at": "2015-09-14T10:57:36", + "volumes_per_node": 0, + "is_proxy_gateway": false, + "name": "master", + "volume_mount_prefix": "/volumes/disk", + "node_processes": [ + "namenode", + "resourcemanager", + "oozie", + "historyserver" + ], + "volumes_size": 0, + "volume_local_to_instance": false, + "volume_type": null + }, + { + "image_id": null, + "shares": null, + "floating_ip_pool": "033debed-aeb8-488c-b7d0-adb74c61faa5", + "node_configs": { + "YARN": { + "yarn.nodemanager.vmem-check-enabled": "false", + "yarn.scheduler.maximum-allocation-mb": 2048, + "yarn.scheduler.minimum-allocation-mb": 256, + "yarn.nodemanager.resource.memory-mb": 2048 + }, + "MapReduce": { + "yarn.app.mapreduce.am.resource.mb": 256, + "mapreduce.task.io.sort.mb": 102, + "mapreduce.reduce.java.opts": "-Xmx409m", + "mapreduce.reduce.memory.mb": 512, + "mapreduce.map.memory.mb": 256, + "yarn.app.mapreduce.am.command-opts": "-Xmx204m", + "mapreduce.map.java.opts": "-Xmx204m" + } + }, + "auto_security_group": false, + "availability_zone": null, + "count": 3, + "flavor_id": "2", + "id": "c7a3bea4-c898-446b-8c67-6d378d4c06c4", + "security_groups": null, + "use_autoconfig": true, + "instances": [ + { + "created_at": "2015-09-14T10:57:37", + "id": "f3633b30-c1e4-4144-930b-ab5b780b87be", + "management_ip": "172.18.168.118", + "updated_at": "2015-09-14T10:57:39", + "instance_id": "0cf1ee81-aa72-48da-be2c-65bc2fa51f8f", + "internal_ip": "10.50.0.63", + "instance_name": "vanilla-cluster-worker-0" + }, + { + "created_at": "2015-09-14T10:57:37", + "id": "0d66fd93-f277-4a94-b46a-f5866aa0c38f", + "management_ip": "172.18.168.117", + "updated_at": "2015-09-14T10:57:40", + "instance_id": "4a937391-b594-4ad0-9a53-00a99a691383", + "internal_ip": "10.50.0.62", + "instance_name": "vanilla-cluster-worker-1" + }, + { + "created_at": "2015-09-14T10:57:37", + "id": "0982cefd-5c58-436e-8f1e-c1d0830f18a7", + "management_ip": "172.18.168.116", + "updated_at": "2015-09-14T10:57:40", + "instance_id": "839b1d56-6d0d-4aa4-9d05-30e029c276f8", + "internal_ip": "10.50.0.61", + "instance_name": "vanilla-cluster-worker-2" + } + ], + "volumes_availability_zone": null, + "created_at": "2015-09-14T10:57:11", + "node_group_template_id": "846edb31-add5-46e6-a4ee-a4c339f99251", + "updated_at": "2015-09-14T10:57:37", + "volumes_per_node": 0, + "is_proxy_gateway": false, + "name": "worker", + "volume_mount_prefix": "/volumes/disk", + "node_processes": [ + "datanode", + "nodemanager" + ], + "volumes_size": 0, + "volume_local_to_instance": false, + "volume_type": null + } + ], + "provision_progress": [ + { + "created_at": "2015-09-14T10:57:18", + "tenant_id": "808d5032ea0446889097723bfc8e919d", + "id": "0a6d95f9-30f4-4434-823a-a38a7999a5af", + "step_type": "Engine: create cluster", + "step_name": "Create Heat stack", + "updated_at": "2015-09-14T10:57:38", + "successful": true, + "total": 1, + "cluster_id": "e172d86c-906d-418e-a29c-6189f53bfa42" + }, + { + "created_at": "2015-09-14T10:58:16", + "tenant_id": "808d5032ea0446889097723bfc8e919d", + "id": "29f2b587-c34c-4871-9ed9-9235b411cd9a", + "step_type": "Engine: create cluster", + "step_name": "Configure instances", + "updated_at": "2015-09-14T10:58:22", + "successful": true, + "total": 4, + "cluster_id": "e172d86c-906d-418e-a29c-6189f53bfa42" + }, + { + "created_at": "2015-09-14T11:00:27", + "tenant_id": "808d5032ea0446889097723bfc8e919d", + "id": "36f1efde-90f9-41c1-b409-aa1cf9623e3e", + "step_type": "Plugin: start cluster", + "step_name": "Start the following process(es): Oozie", + "updated_at": "2015-09-14T11:01:15", + "successful": true, + "total": 1, + "cluster_id": "e172d86c-906d-418e-a29c-6189f53bfa42" + }, + { + "created_at": "2015-09-14T10:58:22", + "tenant_id": "808d5032ea0446889097723bfc8e919d", + "id": "602bcc27-3a2d-42c8-8aca-ebc475319c72", + "step_type": "Plugin: configure cluster", + "step_name": "Configure instances", + "updated_at": "2015-09-14T10:59:21", + "successful": true, + "total": 4, + "cluster_id": "e172d86c-906d-418e-a29c-6189f53bfa42" + }, + { + "created_at": "2015-09-14T10:59:21", + "tenant_id": "808d5032ea0446889097723bfc8e919d", + "id": "7e291df1-2d32-410d-ae89-33ab6f83cf17", + "step_type": "Plugin: configure cluster", + "step_name": "Configure topology data", + "updated_at": "2015-09-14T10:59:37", + "successful": true, + "total": 1, + "cluster_id": "e172d86c-906d-418e-a29c-6189f53bfa42" + }, + { + "created_at": "2015-09-14T11:00:01", + "tenant_id": "808d5032ea0446889097723bfc8e919d", + "id": "8ab7933c-ad61-4a4f-88db-23ce78ee10f6", + "step_type": "Plugin: start cluster", + "step_name": "Start the following process(es): DataNodes, NodeManagers", + "updated_at": "2015-09-14T11:00:11", + "successful": true, + "total": 3, + "cluster_id": "e172d86c-906d-418e-a29c-6189f53bfa42" + }, + { + "created_at": "2015-09-14T11:00:11", + "tenant_id": "808d5032ea0446889097723bfc8e919d", + "id": "9c8dc016-8c5b-4e80-9857-80c41f6bd971", + "step_type": "Plugin: start cluster", + "step_name": "Await DataNodes start up", + "updated_at": "2015-09-14T11:00:21", + "successful": true, + "total": 1, + "cluster_id": "e172d86c-906d-418e-a29c-6189f53bfa42" + }, + { + "created_at": "2015-09-14T11:00:21", + "tenant_id": "808d5032ea0446889097723bfc8e919d", + "id": "c6327532-222b-416c-858f-73dbb32b8e97", + "step_type": "Plugin: start cluster", + "step_name": "Start the following process(es): HistoryServer", + "updated_at": "2015-09-14T11:00:27", + "successful": true, + "total": 1, + "cluster_id": "e172d86c-906d-418e-a29c-6189f53bfa42" + }, + { + "created_at": "2015-09-14T10:57:41", + "tenant_id": "808d5032ea0446889097723bfc8e919d", + "id": "d3eca726-8b44-473a-ac29-fba45a893725", + "step_type": "Engine: create cluster", + "step_name": "Wait for instance accessibility", + "updated_at": "2015-09-14T10:58:14", + "successful": true, + "total": 4, + "cluster_id": "e172d86c-906d-418e-a29c-6189f53bfa42" + }, + { + "created_at": "2015-09-14T10:58:14", + "tenant_id": "808d5032ea0446889097723bfc8e919d", + "id": "d7a875ff-64bf-41aa-882d-b5061c8ee152", + "step_type": "Engine: create cluster", + "step_name": "Mount volumes to instances", + "updated_at": "2015-09-14T10:58:15", + "successful": true, + "total": 0, + "cluster_id": "e172d86c-906d-418e-a29c-6189f53bfa42" + }, + { + "created_at": "2015-09-14T10:59:55", + "tenant_id": "808d5032ea0446889097723bfc8e919d", + "id": "ded7d227-10b8-4cb0-ab6c-25da1462bb7a", + "step_type": "Plugin: start cluster", + "step_name": "Start the following process(es): ResourceManager", + "updated_at": "2015-09-14T11:00:00", + "successful": true, + "total": 1, + "cluster_id": "e172d86c-906d-418e-a29c-6189f53bfa42" + }, + { + "created_at": "2015-09-14T10:59:38", + "tenant_id": "808d5032ea0446889097723bfc8e919d", + "id": "e1701ff5-930a-4212-945a-43515dfe24d1", + "step_type": "Plugin: start cluster", + "step_name": "Start the following process(es): NameNode", + "updated_at": "2015-09-14T10:59:54", + "successful": true, + "total": 1, + "cluster_id": "e172d86c-906d-418e-a29c-6189f53bfa42" + }, + { + "created_at": "2015-09-14T10:57:38", + "tenant_id": "808d5032ea0446889097723bfc8e919d", + "id": "eaf0ab1b-bf8f-48f0-8f2c-fa4f82f539b9", + "step_type": "Engine: create cluster", + "step_name": "Assign IPs", + "updated_at": "2015-09-14T10:57:41", + "successful": true, + "total": 4, + "cluster_id": "e172d86c-906d-418e-a29c-6189f53bfa42" + } + ], + "hadoop_version": "2.7.1", + "use_autoconfig": true, + "trust_id": null, + "description": null, + "created_at": "2015-09-14T10:57:11", + "is_protected": false, + "updated_at": "2015-09-14T11:01:15", + "is_transient": false, + "cluster_configs": { + "HDFS": { + "dfs.replication": 3 + } + }, + "anti_affinity": [], + "name": "vanilla-cluster", + "default_image_id": "4118a476-dfdc-4b0e-8d5c-463cba08e9ae", + "status": "Active" + } + ] +} diff --git a/api-ref/source/data-processing/v1.1/samples/clusters/multiple-clusters-create-request.json b/api-ref/source/data-processing/v1.1/samples/clusters/multiple-clusters-create-request.json new file mode 100644 index 000000000..d5f0d29e8 --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/clusters/multiple-clusters-create-request.json @@ -0,0 +1,11 @@ +{ + "plugin_name": "vanilla", + "hadoop_version": "2.6.0", + "cluster_template_id": "9951f86d-57ba-43d6-9cb0-14ed2ec7a6cf", + "default_image_id": "bc3c3d3c-2684-4bf8-a9fa-388fb71288a9", + "user_keypair_id": "test", + "name": "def-cluster", + "count": 2, + "cluster_configs": {}, + "neutron_management_network": "7e31648b-4b2e-4f32-9b0a-113581c27076" +} diff --git a/api-ref/source/data-processing/v1.1/samples/clusters/multiple-clusters-create-response.json b/api-ref/source/data-processing/v1.1/samples/clusters/multiple-clusters-create-response.json new file mode 100644 index 000000000..5b13bca55 --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/clusters/multiple-clusters-create-response.json @@ -0,0 +1,6 @@ +{ + "clusters": [ + "a007a3e7-658f-4568-b0f2-fe2fd5efc554", + "b012a6et-65hf-4566-b0f2-fe3fd7efc567" + ] +} diff --git a/api-ref/source/data-processing/v1.1/samples/data-sources/data-source-register-hdfs-request.json b/api-ref/source/data-processing/v1.1/samples/data-sources/data-source-register-hdfs-request.json new file mode 100644 index 000000000..9d9c9c945 --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/data-sources/data-source-register-hdfs-request.json @@ -0,0 +1,6 @@ +{ + "description": "This is hdfs input", + "url": "hdfs://test-master-node:8020/user/hadoop/input", + "type": "hdfs", + "name": "hdfs_input" +} diff --git a/api-ref/source/data-processing/v1.1/samples/data-sources/data-source-register-hdfs-response.json b/api-ref/source/data-processing/v1.1/samples/data-sources/data-source-register-hdfs-response.json new file mode 100644 index 000000000..6d637044f --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/data-sources/data-source-register-hdfs-response.json @@ -0,0 +1,14 @@ +{ + "data_source": { + "is_public": false, + "tenant_id": "9cd1314a0a31493282b6712b76a8fcda", + "is_protected": false, + "created_at": "2015-03-26 11:09:36.148464", + "id": "d7fffe9c-3b42-46a9-8be8-e98f586fa7a9", + "updated_at": null, + "name": "hdfs_input", + "description": "This is hdfs input", + "url": "hdfs://test-master-node:8020/user/hadoop/input", + "type": "hdfs" + } +} diff --git a/api-ref/source/data-processing/v1.1/samples/data-sources/data-source-register-swift-request.json b/api-ref/source/data-processing/v1.1/samples/data-sources/data-source-register-swift-request.json new file mode 100644 index 000000000..30a1e535d --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/data-sources/data-source-register-swift-request.json @@ -0,0 +1,10 @@ +{ + "description": "This is input", + "url": "swift://container/text", + "credentials": { + "password": "swordfish", + "user": "dev" + }, + "type": "swift", + "name": "swift_input" +} diff --git a/api-ref/source/data-processing/v1.1/samples/data-sources/data-source-register-swift-response.json b/api-ref/source/data-processing/v1.1/samples/data-sources/data-source-register-swift-response.json new file mode 100644 index 000000000..66a8c7bf0 --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/data-sources/data-source-register-swift-response.json @@ -0,0 +1,14 @@ +{ + "data_source": { + "is_public": false, + "tenant_id": "9cd1314a0a31493282b6712b76a8fcda", + "is_protected": false, + "created_at": "2015-03-26 11:18:10.691493", + "id": "953831f2-0852-49d8-ac71-af5805e25256", + "updated_at": null, + "name": "swift_input", + "description": "This is input", + "url": "swift://container/text", + "type": "swift" + } +} diff --git a/api-ref/source/data-processing/v1.1/samples/data-sources/data-source-show-response.json b/api-ref/source/data-processing/v1.1/samples/data-sources/data-source-show-response.json new file mode 100644 index 000000000..66a8c7bf0 --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/data-sources/data-source-show-response.json @@ -0,0 +1,14 @@ +{ + "data_source": { + "is_public": false, + "tenant_id": "9cd1314a0a31493282b6712b76a8fcda", + "is_protected": false, + "created_at": "2015-03-26 11:18:10.691493", + "id": "953831f2-0852-49d8-ac71-af5805e25256", + "updated_at": null, + "name": "swift_input", + "description": "This is input", + "url": "swift://container/text", + "type": "swift" + } +} diff --git a/api-ref/source/data-processing/v1.1/samples/data-sources/data-source-update-request.json b/api-ref/source/data-processing/v1.1/samples/data-sources/data-source-update-request.json new file mode 100644 index 000000000..8397ae654 --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/data-sources/data-source-update-request.json @@ -0,0 +1,4 @@ +{ + "description": "This is public input", + "is_protected": true +} diff --git a/api-ref/source/data-processing/v1.1/samples/data-sources/data-source-update-response.json b/api-ref/source/data-processing/v1.1/samples/data-sources/data-source-update-response.json new file mode 100644 index 000000000..d874ed1cd --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/data-sources/data-source-update-response.json @@ -0,0 +1,14 @@ +{ + "data_source": { + "is_public": true, + "tenant_id": "9cd1314a0a31493282b6712b76a8fcda", + "is_protected": false, + "created_at": "2015-09-15 12:32:24.847493", + "id": "953831f2-0852-49d8-ac71-af5805e25256", + "updated_at": "2015-09-15 12:34:42.597435", + "name": "swift_input", + "description": "This is public input", + "url": "swift://container/text", + "type": "swift" + } +} diff --git a/api-ref/source/data-processing/v1.1/samples/data-sources/data-sources-list-response.json b/api-ref/source/data-processing/v1.1/samples/data-sources/data-sources-list-response.json new file mode 100644 index 000000000..724542ec7 --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/data-sources/data-sources-list-response.json @@ -0,0 +1,28 @@ +{ + "data_sources": [ + { + "is_public": false, + "tenant_id": "9cd1314a0a31493282b6712b76a8fcda", + "is_protected": false, + "created_at": "2015-03-26 11:18:10", + "id": "953831f2-0852-49d8-ac71-af5805e25256", + "name": "swift_input", + "updated_at": null, + "description": "This is input", + "url": "swift://container/text", + "type": "swift" + }, + { + "is_public": false, + "tenant_id": "9cd1314a0a31493282b6712b76a8fcda", + "is_protected": false, + "created_at": "2015-03-26 11:09:36", + "id": "d7fffe9c-3b42-46a9-8be8-e98f586fa7a9", + "name": "hdfs_input", + "updated_at": null, + "description": "This is hdfs input", + "url": "hdfs://test-master-node:8020/user/hadoop/input", + "type": "hdfs" + } + ] +} diff --git a/api-ref/source/data-processing/v1.1/samples/event-log/cluster-progress-response.json b/api-ref/source/data-processing/v1.1/samples/event-log/cluster-progress-response.json new file mode 100644 index 000000000..f1923093e --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/event-log/cluster-progress-response.json @@ -0,0 +1,72 @@ +{ + "status": "Error", + "neutron_management_network": "7e31648b-4b2e-4f32-9b0a-113581c27076", + "is_transient": false, + "description": "", + "user_keypair_id": "vgridnev", + "updated_at": "2015-03-31 14:10:59", + "plugin_name": "spark", + "provision_progress": [ + { + "successful": false, + "tenant_id": "9cd1314a0a31493282b6712b76a8fcda", + "created_at": "2015-03-31 14:10:20", + "step_type": "Engine: create cluster", + "updated_at": "2015-03-31 14:10:35", + "events": [ + { + "instance_name": "sample-worker-spark-004", + "successful": false, + "created_at": "2015-03-31 14:10:35", + "updated_at": null, + "event_info": "Node sample-worker-spark-004 has error status\nError ID: 3e238c82-d1f5-4560-8ed8-691e923e16a0", + "instance_id": "b5ba5ba8-e9c1-47f7-9355-3ce0ec0e449d", + "node_group_id": "145cf2fb-dcdf-42af-a4b9-a4047d2919d4", + "step_id": "3f243c67-2c27-47c7-a0c0-0834ad17f8b6", + "id": "34afcfc7-bdb0-43cb-b142-283d560dc6ad" + }, + { + "instance_name": "sample-worker-spark-001", + "successful": true, + "created_at": "2015-03-31 14:10:35", + "updated_at": null, + "event_info": null, + "instance_id": "c532ab71-38da-475a-95f8-f8eb93b8f1c2", + "node_group_id": "145cf2fb-dcdf-42af-a4b9-a4047d2919d4", + "step_id": "3f243c67-2c27-47c7-a0c0-0834ad17f8b6", + "id": "4ba50414-5216-4161-bc7a-12716122b99d" + } + ], + "cluster_id": "c26ec982-ba6b-4d75-818c-a50240164af0", + "step_name": "Wait for instances to become active", + "total": 5, + "id": "3f243c67-2c27-47c7-a0c0-0834ad17f8b6" + }, + { + "successful": true, + "tenant_id": "9cd1314a0a31493282b6712b76a8fcda", + "created_at": "2015-03-31 14:10:12", + "step_type": "Engine: create cluster", + "updated_at": "2015-03-31 14:10:19", + "events": [], + "cluster_id": "c26ec982-ba6b-4d75-818c-a50240164af0", + "step_name": "Run instances", + "total": 5, + "id": "407ba50a-c799-46af-9dfb-6aa5f6ade426" + } + ], + "anti_affinity": [], + "node_groups": [], + "management_public_key": "Sahara", + "status_description": "Creating cluster failed for the following reason(s): Node sample-worker-spark-004 has error status\nError ID: 3e238c82-d1f5-4560-8ed8-691e923e16a0", + "hadoop_version": "1.0.0", + "id": "c26ec982-ba6b-4d75-1f8c-a50240164af0", + "trust_id": null, + "info": {}, + "cluster_template_id": "5a9a09a3-9349-43bd-9058-16c401fad2d5", + "name": "sample", + "cluster_configs": {}, + "created_at": "2015-03-31 14:10:07", + "default_image_id": "e6a6c5da-67be-4017-a7d2-81f466efe67e", + "tenant_id": "9cd1314a0a31493282b6712b76a8fcda" +} diff --git a/api-ref/source/data-processing/v1.1/samples/image-registry/image-register-request.json b/api-ref/source/data-processing/v1.1/samples/image-registry/image-register-request.json new file mode 100644 index 000000000..7bd4d15ef --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/image-registry/image-register-request.json @@ -0,0 +1,4 @@ +{ + "username": "ubuntu", + "description": "Ubuntu image for Hadoop 2.7.1" +} diff --git a/api-ref/source/data-processing/v1.1/samples/image-registry/image-register-response.json b/api-ref/source/data-processing/v1.1/samples/image-registry/image-register-response.json new file mode 100644 index 000000000..5851a58ec --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/image-registry/image-register-response.json @@ -0,0 +1,25 @@ +{ + "image": { + "updated": "2015-03-24T10:05:10Z", + "metadata": { + "_sahara_description": "Ubuntu image for Hadoop 2.7.1", + "_sahara_username": "ubuntu", + "_sahara_tag_vanilla": true, + "_sahara_tag_2.7.1": true + }, + "id": "bb8d12b5-f9bb-49f0-aecb-739b8a9bec89", + "minDisk": 0, + "status": "ACTIVE", + "tags": [ + "vanilla", + "2.7.1" + ], + "minRam": 0, + "progress": 100, + "username": "ubuntu", + "created": "2015-02-03T10:28:39Z", + "name": "sahara-vanilla-2.7.1-ubuntu-14.04", + "description": "Ubuntu image for Hadoop 2.7.1", + "OS-EXT-IMG-SIZE:size": 1101856768 + } +} diff --git a/api-ref/source/data-processing/v1.1/samples/image-registry/image-show-response.json b/api-ref/source/data-processing/v1.1/samples/image-registry/image-show-response.json new file mode 100644 index 000000000..0f09f23f5 --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/image-registry/image-show-response.json @@ -0,0 +1,24 @@ +{ + "image": { + "updated": "2015-02-03T10:29:32Z", + "metadata": { + "_sahara_username": "ubuntu", + "_sahara_tag_vanilla": true, + "_sahara_tag_2.6.0": true + }, + "id": "bb8d12b5-f9bb-49f0-aecb-739b8a9bec89", + "minDisk": 0, + "status": "ACTIVE", + "tags": [ + "vanilla", + "2.6.0" + ], + "minRam": 0, + "progress": 100, + "username": "ubuntu", + "created": "2015-02-03T10:28:39Z", + "name": "sahara-vanilla-2.6.0-ubuntu-14.04", + "description": null, + "OS-EXT-IMG-SIZE:size": 1101856768 + } +} diff --git a/api-ref/source/data-processing/v1.1/samples/image-registry/image-tags-add-request.json b/api-ref/source/data-processing/v1.1/samples/image-registry/image-tags-add-request.json new file mode 100644 index 000000000..aa69662a6 --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/image-registry/image-tags-add-request.json @@ -0,0 +1,7 @@ +{ + "tags": [ + "vanilla", + "2.7.1", + "some_other_tag" + ] +} diff --git a/api-ref/source/data-processing/v1.1/samples/image-registry/image-tags-add-response.json b/api-ref/source/data-processing/v1.1/samples/image-registry/image-tags-add-response.json new file mode 100644 index 000000000..2c66b2930 --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/image-registry/image-tags-add-response.json @@ -0,0 +1,27 @@ +{ + "image": { + "updated": "2015-03-24T10:18:33Z", + "metadata": { + "_sahara_tag_vanilla": true, + "_sahara_description": "Ubuntu image for Hadoop 2.7.1", + "_sahara_username": "ubuntu", + "_sahara_tag_some_other_tag": true, + "_sahara_tag_2.7.1": true + }, + "id": "bb8d12b5-f9bb-49f0-aecb-739b8a9bec89", + "minDisk": 0, + "status": "ACTIVE", + "tags": [ + "vanilla", + "some_other_tag", + "2.7.1" + ], + "minRam": 0, + "progress": 100, + "username": "ubuntu", + "created": "2015-02-03T10:28:39Z", + "name": "sahara-vanilla-2.6.0-ubuntu-14.04", + "description": "Ubuntu image for Hadoop 2.7.1", + "OS-EXT-IMG-SIZE:size": 1101856768 + } +} diff --git a/api-ref/source/data-processing/v1.1/samples/image-registry/image-tags-delete-request.json b/api-ref/source/data-processing/v1.1/samples/image-registry/image-tags-delete-request.json new file mode 100644 index 000000000..44e1cef46 --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/image-registry/image-tags-delete-request.json @@ -0,0 +1,5 @@ +{ + "tags": [ + "some_other_tag" + ] +} diff --git a/api-ref/source/data-processing/v1.1/samples/image-registry/image-tags-delete-response.json b/api-ref/source/data-processing/v1.1/samples/image-registry/image-tags-delete-response.json new file mode 100644 index 000000000..44eb13139 --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/image-registry/image-tags-delete-response.json @@ -0,0 +1,25 @@ +{ + "image": { + "updated": "2015-03-24T10:19:28Z", + "metadata": { + "_sahara_description": "Ubuntu image for Hadoop 2.7.1", + "_sahara_username": "ubuntu", + "_sahara_tag_vanilla": true, + "_sahara_tag_2.7.1": true + }, + "id": "bb8d12b5-f9bb-49f0-aecb-739b8a9bec89", + "minDisk": 0, + "status": "ACTIVE", + "tags": [ + "vanilla", + "2.7.1" + ], + "minRam": 0, + "progress": 100, + "username": "ubuntu", + "created": "2015-02-03T10:28:39Z", + "name": "sahara-vanilla-2.7.1-ubuntu-14.04", + "description": "Ubuntu image for Hadoop 2.7.1", + "OS-EXT-IMG-SIZE:size": 1101856768 + } +} diff --git a/api-ref/source/data-processing/v1.1/samples/image-registry/images-list-response.json b/api-ref/source/data-processing/v1.1/samples/image-registry/images-list-response.json new file mode 100644 index 000000000..d40f0c215 --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/image-registry/images-list-response.json @@ -0,0 +1,48 @@ +{ + "images": [ + { + "name": "ubuntu-vanilla-2.7.1", + "id": "4118a476-dfdc-4b0e-8d5c-463cba08e9ae", + "created": "2015-08-06T08:17:14Z", + "metadata": { + "_sahara_tag_2.7.1": true, + "_sahara_username": "ubuntu", + "_sahara_tag_vanilla": true + }, + "username": "ubuntu", + "progress": 100, + "OS-EXT-IMG-SIZE:size": 998716928, + "status": "ACTIVE", + "minDisk": 0, + "tags": [ + "vanilla", + "2.7.1" + ], + "updated": "2015-09-04T09:35:09Z", + "minRam": 0, + "description": null + }, + { + "name": "cdh-latest", + "id": "ff74035b-9da7-4edf-981d-57f270ed337d", + "created": "2015-09-04T11:56:44Z", + "metadata": { + "_sahara_username": "ubuntu", + "_sahara_tag_5.4.0": true, + "_sahara_tag_cdh": true + }, + "username": "ubuntu", + "progress": 100, + "OS-EXT-IMG-SIZE:size": 3281453056, + "status": "ACTIVE", + "minDisk": 0, + "tags": [ + "5.4.0", + "cdh" + ], + "updated": "2015-09-04T12:46:42Z", + "minRam": 0, + "description": null + } + ] +} diff --git a/api-ref/source/data-processing/v1.1/samples/job-binaries/create-request.json b/api-ref/source/data-processing/v1.1/samples/job-binaries/create-request.json new file mode 100644 index 000000000..f32e15b40 --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/job-binaries/create-request.json @@ -0,0 +1,9 @@ +{ + "url": "swift://container/jar-example.jar", + "name": "jar-example.jar", + "description": "This is a job binary", + "extra": { + "password": "swordfish", + "user": "admin" + } +} diff --git a/api-ref/source/data-processing/v1.1/samples/job-binaries/create-response.json b/api-ref/source/data-processing/v1.1/samples/job-binaries/create-response.json new file mode 100644 index 000000000..feba49ef7 --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/job-binaries/create-response.json @@ -0,0 +1,13 @@ +{ + "job_binary": { + "is_public": false, + "description": "This is a job binary", + "url": "swift://container/jar-example.jar", + "tenant_id": "11587919cc534bcbb1027a161c82cf58", + "created_at": "2013-10-15 14:49:20.106452", + "id": "07f86352-ee8a-4b08-b737-d705ded5ff9c", + "updated_at": null, + "name": "jar-example.jar", + "is_protected": false + } +} diff --git a/api-ref/source/data-processing/v1.1/samples/job-binaries/list-response.json b/api-ref/source/data-processing/v1.1/samples/job-binaries/list-response.json new file mode 100644 index 000000000..3e5e5539a --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/job-binaries/list-response.json @@ -0,0 +1,37 @@ +{ + "binaries": [ + { + "is_public": false, + "description": "", + "url": "internal-db://d2498cbf-4589-484a-a814-81436c18beb3", + "tenant_id": "11587919cc534bcbb1027a161c82cf58", + "created_at": "2013-10-15 12:36:59.375060", + "updated_at": null, + "id": "84248975-3c82-4206-a58d-6e7fb3a563fd", + "name": "example.pig", + "is_protected": false + }, + { + "is_public": false, + "description": "", + "url": "internal-db://22f1d87a-23c8-483e-a0dd-cb4a16dde5f9", + "tenant_id": "11587919cc534bcbb1027a161c82cf58", + "created_at": "2013-10-15 12:43:52.265899", + "updated_at": null, + "id": "508fc62d-1d58-4412-b603-bdab307bb926", + "name": "udf.jar", + "is_protected": false + }, + { + "is_public": false, + "description": "", + "url": "swift://container/jar-example.jar", + "tenant_id": "11587919cc534bcbb1027a161c82cf58", + "created_at": "2013-10-15 14:25:04.970513", + "updated_at": null, + "id": "a716a9cd-9add-4b12-b1b6-cdb71aaef350", + "name": "jar-example.jar", + "is_protected": false + } + ] +} diff --git a/api-ref/source/data-processing/v1.1/samples/job-binaries/show-response.json b/api-ref/source/data-processing/v1.1/samples/job-binaries/show-response.json new file mode 100644 index 000000000..a46f81906 --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/job-binaries/show-response.json @@ -0,0 +1,13 @@ +{ + "job_binary": { + "is_public": false, + "description": "an example jar file", + "url": "swift://container/jar-example.jar", + "tenant_id": "11587919cc534bcbb1027a161c82cf58", + "created_at": "2013-10-15 14:25:04.970513", + "updated_at": null, + "id": "a716a9cd-9add-4b12-b1b6-cdb71aaef350", + "name": "jar-example.jar", + "is_protected": false + } +} diff --git a/api-ref/source/data-processing/v1.1/samples/job-binaries/update-request.json b/api-ref/source/data-processing/v1.1/samples/job-binaries/update-request.json new file mode 100644 index 000000000..456b0b209 --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/job-binaries/update-request.json @@ -0,0 +1,5 @@ +{ + "url": "swift://container/new-jar-example.jar", + "name": "new-jar-example.jar", + "description": "This is a new job binary" +} diff --git a/api-ref/source/data-processing/v1.1/samples/job-binaries/update-response.json b/api-ref/source/data-processing/v1.1/samples/job-binaries/update-response.json new file mode 100644 index 000000000..947049e6e --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/job-binaries/update-response.json @@ -0,0 +1,13 @@ +{ + "job_binary": { + "is_public": false, + "description": "This is a new job binary", + "url": "swift://container/new-jar-example.jar", + "tenant_id": "11587919cc534bcbb1027a161c82cf58", + "created_at": "2015-09-15 12:42:51.421542", + "updated_at": null, + "id": "b713d7ad-4add-4f12-g1b6-cdg71aaef350", + "name": "new-jar-example.jar", + "is_protected": false + } +} diff --git a/api-ref/source/data-processing/v1.1/samples/job-binary-internals/create-response.json b/api-ref/source/data-processing/v1.1/samples/job-binary-internals/create-response.json new file mode 100644 index 000000000..a8d23d58c --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/job-binary-internals/create-response.json @@ -0,0 +1,12 @@ +{ + "job_binary_internal": { + "is_public": false, + "name": "script.pig", + "tenant_id": "11587919cc534bcbb1027a161c82cf58", + "created_at": "2013-10-15 13:17:35.994466", + "updated_at": null, + "datasize": 160, + "id": "4833dc4b-8682-4d5b-8a9f-2036b47a0996", + "is_protected": false + } +} diff --git a/api-ref/source/data-processing/v1.1/samples/job-binary-internals/list-response.json b/api-ref/source/data-processing/v1.1/samples/job-binary-internals/list-response.json new file mode 100644 index 000000000..d5a2909ab --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/job-binary-internals/list-response.json @@ -0,0 +1,24 @@ +{ + "binaries": [ + { + "is_public": false, + "name": "example.pig", + "tenant_id": "11587919cc534bcbb1027a161c82cf58", + "created_at": "2013-10-15 12:36:59.329034", + "updated_at": null, + "datasize": 161, + "id": "d2498cbf-4589-484a-a814-81436c18beb3", + "is_protected": false + }, + { + "is_public": false, + "name": "udf.jar", + "tenant_id": "11587919cc534bcbb1027a161c82cf58", + "created_at": "2013-10-15 12:43:52.008620", + "updated_at": null, + "datasize": 3745, + "id": "22f1d87a-23c8-483e-a0dd-cb4a16dde5f9", + "is_protected": false + } + ] +} diff --git a/api-ref/source/data-processing/v1.1/samples/job-binary-internals/show-response.json b/api-ref/source/data-processing/v1.1/samples/job-binary-internals/show-response.json new file mode 100644 index 000000000..a8d23d58c --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/job-binary-internals/show-response.json @@ -0,0 +1,12 @@ +{ + "job_binary_internal": { + "is_public": false, + "name": "script.pig", + "tenant_id": "11587919cc534bcbb1027a161c82cf58", + "created_at": "2013-10-15 13:17:35.994466", + "updated_at": null, + "datasize": 160, + "id": "4833dc4b-8682-4d5b-8a9f-2036b47a0996", + "is_protected": false + } +} diff --git a/api-ref/source/data-processing/v1.1/samples/job-binary-internals/update-request.json b/api-ref/source/data-processing/v1.1/samples/job-binary-internals/update-request.json new file mode 100644 index 000000000..d6e292052 --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/job-binary-internals/update-request.json @@ -0,0 +1,4 @@ +{ + "name": "public-jbi", + "is_public": true +} diff --git a/api-ref/source/data-processing/v1.1/samples/job-binary-internals/update-response.json b/api-ref/source/data-processing/v1.1/samples/job-binary-internals/update-response.json new file mode 100644 index 000000000..19fed48c5 --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/job-binary-internals/update-response.json @@ -0,0 +1,12 @@ +{ + "job_binary_internal": { + "is_public": true, + "name": "public-jbi", + "tenant_id": "11587919cc534bcbb1027a161c82cf58", + "created_at": "2015-09-15 13:21:54.485912", + "updated_at": "2015-09-15 13:24:24.590124", + "datasize": 200, + "id": "2433dc4b-8682-4d5b-8a9f-2036d47a0996", + "is_protected": false + } +} diff --git a/api-ref/source/data-processing/v1.1/samples/job-executions/cancel-response.json b/api-ref/source/data-processing/v1.1/samples/job-executions/cancel-response.json new file mode 100644 index 000000000..251c746c6 --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/job-executions/cancel-response.json @@ -0,0 +1,120 @@ +{ + "job_execution": { + "job_configs": { + "configs": { + "mapred.reduce.tasks": "1", + "mapred.map.tasks": "1" + }, + "args": [ + "arg1", + "arg2" + ], + "params": { + "param2": "value2", + "param1": "value1" + } + }, + "is_protected": false, + "input_id": "3e1bc8e6-8c69-4749-8e52-90d9341d15bc", + "job_id": "310b0fc6-e1db-408e-8798-312e7500f3ac", + "cluster_id": "811e1134-666f-4c48-bc92-afb5b10c9d8c", + "created_at": "2015-09-15T09:49:24", + "end_time": "2015-09-15T12:50:46", + "output_id": "52146b52-6540-4aac-a024-fee253cf52a9", + "is_public": false, + "updated_at": "2015-09-15T09:50:46", + "return_code": null, + "data_source_urls": { + "3e1bc8e6-8c69-4749-8e52-90d9341d15bc": "swift://ap-cont/input", + "52146b52-6540-4aac-a024-fee253cf52a9": "swift://ap-cont/output" + }, + "tenant_id": "808d5032ea0446889097723bfc8e919d", + "start_time": "2015-09-15T12:49:43", + "id": "20da9edb-12ce-4b45-a473-41baeefef997", + "oozie_job_id": "0000001-150915094349962-oozie-hado-W", + "info": { + "user": "hadoop", + "actions": [ + { + "name": ":start:", + "trackerUri": "-", + "externalStatus": "OK", + "status": "OK", + "externalId": "-", + "transition": "job-node", + "data": null, + "endTime": "Tue, 15 Sep 2015 09:49:59 GMT", + "errorCode": null, + "id": "0000001-150915094349962-oozie-hado-W@:start:", + "consoleUrl": "-", + "errorMessage": null, + "toString": "Action name[:start:] status[OK]", + "stats": null, + "type": ":START:", + "retries": 0, + "startTime": "Tue, 15 Sep 2015 09:49:59 GMT", + "externalChildIDs": null, + "cred": "null" + }, + { + "name": "job-node", + "trackerUri": "http://172.18.168.119:8032", + "externalStatus": "FAILED/KILLED", + "status": "ERROR", + "externalId": "job_1442310173665_0002", + "transition": "fail", + "data": null, + "endTime": "Tue, 15 Sep 2015 09:50:17 GMT", + "errorCode": "JA018", + "id": "0000001-150915094349962-oozie-hado-W@job-node", + "consoleUrl": "http://ap-cluster-all-0:8088/proxy/application_1442310173665_0002/", + "errorMessage": "Main class [org.apache.oozie.action.hadoop.PigMain], exit code [2]", + "toString": "Action name[job-node] status[ERROR]", + "stats": null, + "type": "pig", + "retries": 0, + "startTime": "Tue, 15 Sep 2015 09:49:59 GMT", + "externalChildIDs": null, + "cred": "null" + }, + { + "name": "fail", + "trackerUri": "-", + "externalStatus": "OK", + "status": "OK", + "externalId": "-", + "transition": null, + "data": null, + "endTime": "Tue, 15 Sep 2015 09:50:17 GMT", + "errorCode": "E0729", + "id": "0000001-150915094349962-oozie-hado-W@fail", + "consoleUrl": "-", + "errorMessage": "Workflow failed, error message[Main class [org.apache.oozie.action.hadoop.PigMain], exit code [2]]", + "toString": "Action name[fail] status[OK]", + "stats": null, + "type": ":KILL:", + "retries": 0, + "startTime": "Tue, 15 Sep 2015 09:50:17 GMT", + "externalChildIDs": null, + "cred": "null" + } + ], + "createdTime": "Tue, 15 Sep 2015 09:49:58 GMT", + "status": "KILLED", + "group": null, + "externalId": null, + "acl": null, + "run": 0, + "appName": "job-wf", + "parentId": null, + "conf": "\r\n \r\n user.name\r\n hadoop\r\n \r\n \r\n oozie.use.system.libpath\r\n true\r\n \r\n \r\n mapreduce.job.user.name\r\n hadoop\r\n \r\n \r\n nameNode\r\n hdfs://ap-cluster-all-0:9000\r\n \r\n \r\n jobTracker\r\n http://172.18.168.119:8032\r\n \r\n \r\n oozie.wf.application.path\r\n hdfs://ap-cluster-all-0:9000/user/hadoop/pig-job-example/3038025d-9974-4993-a778-26a074cdfb8d/workflow.xml\r\n \r\n", + "id": "0000001-150915094349962-oozie-hado-W", + "startTime": "Tue, 15 Sep 2015 09:49:59 GMT", + "appPath": "hdfs://ap-cluster-all-0:9000/user/hadoop/pig-job-example/3038025d-9974-4993-a778-26a074cdfb8d/workflow.xml", + "endTime": "Tue, 15 Sep 2015 09:50:17 GMT", + "toString": "Workflow id[0000001-150915094349962-oozie-hado-W] status[KILLED]", + "lastModTime": "Tue, 15 Sep 2015 09:50:17 GMT", + "consoleUrl": "http://ap-cluster-all-0.novalocal:11000/oozie?job=0000001-150915094349962-oozie-hado-W" + } + } +} diff --git a/api-ref/source/data-processing/v1.1/samples/job-executions/job-ex-response.json b/api-ref/source/data-processing/v1.1/samples/job-executions/job-ex-response.json new file mode 100644 index 000000000..251c746c6 --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/job-executions/job-ex-response.json @@ -0,0 +1,120 @@ +{ + "job_execution": { + "job_configs": { + "configs": { + "mapred.reduce.tasks": "1", + "mapred.map.tasks": "1" + }, + "args": [ + "arg1", + "arg2" + ], + "params": { + "param2": "value2", + "param1": "value1" + } + }, + "is_protected": false, + "input_id": "3e1bc8e6-8c69-4749-8e52-90d9341d15bc", + "job_id": "310b0fc6-e1db-408e-8798-312e7500f3ac", + "cluster_id": "811e1134-666f-4c48-bc92-afb5b10c9d8c", + "created_at": "2015-09-15T09:49:24", + "end_time": "2015-09-15T12:50:46", + "output_id": "52146b52-6540-4aac-a024-fee253cf52a9", + "is_public": false, + "updated_at": "2015-09-15T09:50:46", + "return_code": null, + "data_source_urls": { + "3e1bc8e6-8c69-4749-8e52-90d9341d15bc": "swift://ap-cont/input", + "52146b52-6540-4aac-a024-fee253cf52a9": "swift://ap-cont/output" + }, + "tenant_id": "808d5032ea0446889097723bfc8e919d", + "start_time": "2015-09-15T12:49:43", + "id": "20da9edb-12ce-4b45-a473-41baeefef997", + "oozie_job_id": "0000001-150915094349962-oozie-hado-W", + "info": { + "user": "hadoop", + "actions": [ + { + "name": ":start:", + "trackerUri": "-", + "externalStatus": "OK", + "status": "OK", + "externalId": "-", + "transition": "job-node", + "data": null, + "endTime": "Tue, 15 Sep 2015 09:49:59 GMT", + "errorCode": null, + "id": "0000001-150915094349962-oozie-hado-W@:start:", + "consoleUrl": "-", + "errorMessage": null, + "toString": "Action name[:start:] status[OK]", + "stats": null, + "type": ":START:", + "retries": 0, + "startTime": "Tue, 15 Sep 2015 09:49:59 GMT", + "externalChildIDs": null, + "cred": "null" + }, + { + "name": "job-node", + "trackerUri": "http://172.18.168.119:8032", + "externalStatus": "FAILED/KILLED", + "status": "ERROR", + "externalId": "job_1442310173665_0002", + "transition": "fail", + "data": null, + "endTime": "Tue, 15 Sep 2015 09:50:17 GMT", + "errorCode": "JA018", + "id": "0000001-150915094349962-oozie-hado-W@job-node", + "consoleUrl": "http://ap-cluster-all-0:8088/proxy/application_1442310173665_0002/", + "errorMessage": "Main class [org.apache.oozie.action.hadoop.PigMain], exit code [2]", + "toString": "Action name[job-node] status[ERROR]", + "stats": null, + "type": "pig", + "retries": 0, + "startTime": "Tue, 15 Sep 2015 09:49:59 GMT", + "externalChildIDs": null, + "cred": "null" + }, + { + "name": "fail", + "trackerUri": "-", + "externalStatus": "OK", + "status": "OK", + "externalId": "-", + "transition": null, + "data": null, + "endTime": "Tue, 15 Sep 2015 09:50:17 GMT", + "errorCode": "E0729", + "id": "0000001-150915094349962-oozie-hado-W@fail", + "consoleUrl": "-", + "errorMessage": "Workflow failed, error message[Main class [org.apache.oozie.action.hadoop.PigMain], exit code [2]]", + "toString": "Action name[fail] status[OK]", + "stats": null, + "type": ":KILL:", + "retries": 0, + "startTime": "Tue, 15 Sep 2015 09:50:17 GMT", + "externalChildIDs": null, + "cred": "null" + } + ], + "createdTime": "Tue, 15 Sep 2015 09:49:58 GMT", + "status": "KILLED", + "group": null, + "externalId": null, + "acl": null, + "run": 0, + "appName": "job-wf", + "parentId": null, + "conf": "\r\n \r\n user.name\r\n hadoop\r\n \r\n \r\n oozie.use.system.libpath\r\n true\r\n \r\n \r\n mapreduce.job.user.name\r\n hadoop\r\n \r\n \r\n nameNode\r\n hdfs://ap-cluster-all-0:9000\r\n \r\n \r\n jobTracker\r\n http://172.18.168.119:8032\r\n \r\n \r\n oozie.wf.application.path\r\n hdfs://ap-cluster-all-0:9000/user/hadoop/pig-job-example/3038025d-9974-4993-a778-26a074cdfb8d/workflow.xml\r\n \r\n", + "id": "0000001-150915094349962-oozie-hado-W", + "startTime": "Tue, 15 Sep 2015 09:49:59 GMT", + "appPath": "hdfs://ap-cluster-all-0:9000/user/hadoop/pig-job-example/3038025d-9974-4993-a778-26a074cdfb8d/workflow.xml", + "endTime": "Tue, 15 Sep 2015 09:50:17 GMT", + "toString": "Workflow id[0000001-150915094349962-oozie-hado-W] status[KILLED]", + "lastModTime": "Tue, 15 Sep 2015 09:50:17 GMT", + "consoleUrl": "http://ap-cluster-all-0.novalocal:11000/oozie?job=0000001-150915094349962-oozie-hado-W" + } + } +} diff --git a/api-ref/source/data-processing/v1.1/samples/job-executions/job-ex-update-request.json b/api-ref/source/data-processing/v1.1/samples/job-executions/job-ex-update-request.json new file mode 100644 index 000000000..647a4175b --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/job-executions/job-ex-update-request.json @@ -0,0 +1,3 @@ +{ + "is_public": true +} diff --git a/api-ref/source/data-processing/v1.1/samples/job-executions/job-ex-update-response.json b/api-ref/source/data-processing/v1.1/samples/job-executions/job-ex-update-response.json new file mode 100644 index 000000000..a5d248479 --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/job-executions/job-ex-update-response.json @@ -0,0 +1,120 @@ +{ + "job_execution": { + "job_configs": { + "configs": { + "mapred.reduce.tasks": "1", + "mapred.map.tasks": "1" + }, + "args": [ + "arg1", + "arg2" + ], + "params": { + "param2": "value2", + "param1": "value1" + } + }, + "is_protected": false, + "input_id": "3e1bc8e6-8c69-4749-8e52-90d9341d15bc", + "job_id": "310b0fc6-e1db-408e-8798-312e7500f3ac", + "cluster_id": "811e1134-666f-4c48-bc92-afb5b10c9d8c", + "created_at": "2015-09-15T09:49:24", + "end_time": "2015-09-15T12:50:46", + "output_id": "52146b52-6540-4aac-a024-fee253cf52a9", + "is_public": true, + "updated_at": "2015-09-15T09:50:46", + "return_code": null, + "data_source_urls": { + "3e1bc8e6-8c69-4749-8e52-90d9341d15bc": "swift://ap-cont/input", + "52146b52-6540-4aac-a024-fee253cf52a9": "swift://ap-cont/output" + }, + "tenant_id": "808d5032ea0446889097723bfc8e919d", + "start_time": "2015-09-15T12:49:43", + "id": "20da9edb-12ce-4b45-a473-41baeefef997", + "oozie_job_id": "0000001-150915094349962-oozie-hado-W", + "info": { + "user": "hadoop", + "actions": [ + { + "name": ":start:", + "trackerUri": "-", + "externalStatus": "OK", + "status": "OK", + "externalId": "-", + "transition": "job-node", + "data": null, + "endTime": "Tue, 15 Sep 2015 09:49:59 GMT", + "errorCode": null, + "id": "0000001-150915094349962-oozie-hado-W@:start:", + "consoleUrl": "-", + "errorMessage": null, + "toString": "Action name[:start:] status[OK]", + "stats": null, + "type": ":START:", + "retries": 0, + "startTime": "Tue, 15 Sep 2015 09:49:59 GMT", + "externalChildIDs": null, + "cred": "null" + }, + { + "name": "job-node", + "trackerUri": "http://172.18.168.119:8032", + "externalStatus": "FAILED/KILLED", + "status": "ERROR", + "externalId": "job_1442310173665_0002", + "transition": "fail", + "data": null, + "endTime": "Tue, 15 Sep 2015 09:50:17 GMT", + "errorCode": "JA018", + "id": "0000001-150915094349962-oozie-hado-W@job-node", + "consoleUrl": "http://ap-cluster-all-0:8088/proxy/application_1442310173665_0002/", + "errorMessage": "Main class [org.apache.oozie.action.hadoop.PigMain], exit code [2]", + "toString": "Action name[job-node] status[ERROR]", + "stats": null, + "type": "pig", + "retries": 0, + "startTime": "Tue, 15 Sep 2015 09:49:59 GMT", + "externalChildIDs": null, + "cred": "null" + }, + { + "name": "fail", + "trackerUri": "-", + "externalStatus": "OK", + "status": "OK", + "externalId": "-", + "transition": null, + "data": null, + "endTime": "Tue, 15 Sep 2015 09:50:17 GMT", + "errorCode": "E0729", + "id": "0000001-150915094349962-oozie-hado-W@fail", + "consoleUrl": "-", + "errorMessage": "Workflow failed, error message[Main class [org.apache.oozie.action.hadoop.PigMain], exit code [2]]", + "toString": "Action name[fail] status[OK]", + "stats": null, + "type": ":KILL:", + "retries": 0, + "startTime": "Tue, 15 Sep 2015 09:50:17 GMT", + "externalChildIDs": null, + "cred": "null" + } + ], + "createdTime": "Tue, 15 Sep 2015 09:49:58 GMT", + "status": "KILLED", + "group": null, + "externalId": null, + "acl": null, + "run": 0, + "appName": "job-wf", + "parentId": null, + "conf": "\r\n \r\n user.name\r\n hadoop\r\n \r\n \r\n oozie.use.system.libpath\r\n true\r\n \r\n \r\n mapreduce.job.user.name\r\n hadoop\r\n \r\n \r\n nameNode\r\n hdfs://ap-cluster-all-0:9000\r\n \r\n \r\n jobTracker\r\n http://172.18.168.119:8032\r\n \r\n \r\n oozie.wf.application.path\r\n hdfs://ap-cluster-all-0:9000/user/hadoop/pig-job-example/3038025d-9974-4993-a778-26a074cdfb8d/workflow.xml\r\n \r\n", + "id": "0000001-150915094349962-oozie-hado-W", + "startTime": "Tue, 15 Sep 2015 09:49:59 GMT", + "appPath": "hdfs://ap-cluster-all-0:9000/user/hadoop/pig-job-example/3038025d-9974-4993-a778-26a074cdfb8d/workflow.xml", + "endTime": "Tue, 15 Sep 2015 09:50:17 GMT", + "toString": "Workflow id[0000001-150915094349962-oozie-hado-W] status[KILLED]", + "lastModTime": "Tue, 15 Sep 2015 09:50:17 GMT", + "consoleUrl": "http://ap-cluster-all-0.novalocal:11000/oozie?job=0000001-150915094349962-oozie-hado-W" + } + } +} diff --git a/api-ref/source/data-processing/v1.1/samples/job-executions/list-response.json b/api-ref/source/data-processing/v1.1/samples/job-executions/list-response.json new file mode 100644 index 000000000..fb085254a --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/job-executions/list-response.json @@ -0,0 +1,122 @@ +{ + "job_executions": [ + { + "job_configs": { + "configs": { + "mapred.reduce.tasks": "1", + "mapred.map.tasks": "1" + }, + "args": [ + "arg1", + "arg2" + ], + "params": { + "param2": "value2", + "param1": "value1" + } + }, + "is_protected": false, + "input_id": "3e1bc8e6-8c69-4749-8e52-90d9341d15bc", + "job_id": "310b0fc6-e1db-408e-8798-312e7500f3ac", + "cluster_id": "811e1134-666f-4c48-bc92-afb5b10c9d8c", + "created_at": "2015-09-15T09:49:24", + "end_time": "2015-09-15T12:50:46", + "output_id": "52146b52-6540-4aac-a024-fee253cf52a9", + "is_public": false, + "updated_at": "2015-09-15T09:50:46", + "return_code": null, + "data_source_urls": { + "3e1bc8e6-8c69-4749-8e52-90d9341d15bc": "swift://ap-cont/input", + "52146b52-6540-4aac-a024-fee253cf52a9": "swift://ap-cont/output" + }, + "tenant_id": "808d5032ea0446889097723bfc8e919d", + "start_time": "2015-09-15T12:49:43", + "id": "20da9edb-12ce-4b45-a473-41baeefef997", + "oozie_job_id": "0000001-150915094349962-oozie-hado-W", + "info": { + "user": "hadoop", + "actions": [ + { + "name": ":start:", + "trackerUri": "-", + "externalStatus": "OK", + "status": "OK", + "externalId": "-", + "transition": "job-node", + "data": null, + "endTime": "Tue, 15 Sep 2015 09:49:59 GMT", + "errorCode": null, + "id": "0000001-150915094349962-oozie-hado-W@:start:", + "consoleUrl": "-", + "errorMessage": null, + "toString": "Action name[:start:] status[OK]", + "stats": null, + "type": ":START:", + "retries": 0, + "startTime": "Tue, 15 Sep 2015 09:49:59 GMT", + "externalChildIDs": null, + "cred": "null" + }, + { + "name": "job-node", + "trackerUri": "http://172.18.168.119:8032", + "externalStatus": "FAILED/KILLED", + "status": "ERROR", + "externalId": "job_1442310173665_0002", + "transition": "fail", + "data": null, + "endTime": "Tue, 15 Sep 2015 09:50:17 GMT", + "errorCode": "JA018", + "id": "0000001-150915094349962-oozie-hado-W@job-node", + "consoleUrl": "http://ap-cluster-all-0:8088/proxy/application_1442310173665_0002/", + "errorMessage": "Main class [org.apache.oozie.action.hadoop.PigMain], exit code [2]", + "toString": "Action name[job-node] status[ERROR]", + "stats": null, + "type": "pig", + "retries": 0, + "startTime": "Tue, 15 Sep 2015 09:49:59 GMT", + "externalChildIDs": null, + "cred": "null" + }, + { + "name": "fail", + "trackerUri": "-", + "externalStatus": "OK", + "status": "OK", + "externalId": "-", + "transition": null, + "data": null, + "endTime": "Tue, 15 Sep 2015 09:50:17 GMT", + "errorCode": "E0729", + "id": "0000001-150915094349962-oozie-hado-W@fail", + "consoleUrl": "-", + "errorMessage": "Workflow failed, error message[Main class [org.apache.oozie.action.hadoop.PigMain], exit code [2]]", + "toString": "Action name[fail] status[OK]", + "stats": null, + "type": ":KILL:", + "retries": 0, + "startTime": "Tue, 15 Sep 2015 09:50:17 GMT", + "externalChildIDs": null, + "cred": "null" + } + ], + "createdTime": "Tue, 15 Sep 2015 09:49:58 GMT", + "status": "KILLED", + "group": null, + "externalId": null, + "acl": null, + "run": 0, + "appName": "job-wf", + "parentId": null, + "conf": "\r\n \r\n user.name\r\n hadoop\r\n \r\n \r\n oozie.use.system.libpath\r\n true\r\n \r\n \r\n mapreduce.job.user.name\r\n hadoop\r\n \r\n \r\n nameNode\r\n hdfs://ap-cluster-all-0:9000\r\n \r\n \r\n jobTracker\r\n http://172.18.168.119:8032\r\n \r\n \r\n oozie.wf.application.path\r\n hdfs://ap-cluster-all-0:9000/user/hadoop/pig-job-example/3038025d-9974-4993-a778-26a074cdfb8d/workflow.xml\r\n \r\n", + "id": "0000001-150915094349962-oozie-hado-W", + "startTime": "Tue, 15 Sep 2015 09:49:59 GMT", + "appPath": "hdfs://ap-cluster-all-0:9000/user/hadoop/pig-job-example/3038025d-9974-4993-a778-26a074cdfb8d/workflow.xml", + "endTime": "Tue, 15 Sep 2015 09:50:17 GMT", + "toString": "Workflow id[0000001-150915094349962-oozie-hado-W] status[KILLED]", + "lastModTime": "Tue, 15 Sep 2015 09:50:17 GMT", + "consoleUrl": "http://ap-cluster-all-0.novalocal:11000/oozie?job=0000001-150915094349962-oozie-hado-W" + } + } + ] +} diff --git a/api-ref/source/data-processing/v1.1/samples/job-types/job-types-list-response.json b/api-ref/source/data-processing/v1.1/samples/job-types/job-types-list-response.json new file mode 100644 index 000000000..c321c4fbd --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/job-types/job-types-list-response.json @@ -0,0 +1,209 @@ +{ + "job_types": [ + { + "plugins": [ + { + "description": "The Apache Vanilla plugin provides the ability to launch upstream Vanilla Apache Hadoop cluster without any management consoles. It can also deploy the Oozie component.", + "versions": { + "1.2.1": {}, + "2.6.0": {} + }, + "title": "Vanilla Apache Hadoop", + "name": "vanilla" + }, + { + "description": "The Hortonworks Sahara plugin automates the deployment of the Hortonworks Data Platform (HDP) on OpenStack.", + "versions": { + "1.3.2": {}, + "2.0.6": {} + }, + "title": "Hortonworks Data Platform", + "name": "hdp" + }, + { + "description": "The Cloudera Sahara plugin provides the ability to launch the Cloudera distribution of Apache Hadoop (CDH) with Cloudera Manager management console.", + "versions": { + "5": {}, + "5.3.0": {} + }, + "title": "Cloudera Plugin", + "name": "cdh" + } + ], + "name": "Hive" + }, + { + "plugins": [ + { + "description": "The Apache Vanilla plugin provides the ability to launch upstream Vanilla Apache Hadoop cluster without any management consoles. It can also deploy the Oozie component.", + "versions": { + "1.2.1": {}, + "2.6.0": {} + }, + "title": "Vanilla Apache Hadoop", + "name": "vanilla" + }, + { + "description": "The Hortonworks Sahara plugin automates the deployment of the Hortonworks Data Platform (HDP) on OpenStack.", + "versions": { + "1.3.2": {}, + "2.0.6": {} + }, + "title": "Hortonworks Data Platform", + "name": "hdp" + }, + { + "description": "The Cloudera Sahara plugin provides the ability to launch the Cloudera distribution of Apache Hadoop (CDH) with Cloudera Manager management console.", + "versions": { + "5": {}, + "5.3.0": {} + }, + "title": "Cloudera Plugin", + "name": "cdh" + } + ], + "name": "Java" + }, + { + "plugins": [ + { + "description": "The Apache Vanilla plugin provides the ability to launch upstream Vanilla Apache Hadoop cluster without any management consoles. It can also deploy the Oozie component.", + "versions": { + "1.2.1": {}, + "2.6.0": {} + }, + "title": "Vanilla Apache Hadoop", + "name": "vanilla" + }, + { + "description": "The Hortonworks Sahara plugin automates the deployment of the Hortonworks Data Platform (HDP) on OpenStack.", + "versions": { + "1.3.2": {}, + "2.0.6": {} + }, + "title": "Hortonworks Data Platform", + "name": "hdp" + }, + { + "description": "The Cloudera Sahara plugin provides the ability to launch the Cloudera distribution of Apache Hadoop (CDH) with Cloudera Manager management console.", + "versions": { + "5": {}, + "5.3.0": {} + }, + "title": "Cloudera Plugin", + "name": "cdh" + } + ], + "name": "MapReduce" + }, + { + "plugins": [ + { + "description": "The Apache Vanilla plugin provides the ability to launch upstream Vanilla Apache Hadoop cluster without any management consoles. It can also deploy the Oozie component.", + "versions": { + "1.2.1": {}, + "2.6.0": {} + }, + "title": "Vanilla Apache Hadoop", + "name": "vanilla" + }, + { + "description": "The Hortonworks Sahara plugin automates the deployment of the Hortonworks Data Platform (HDP) on OpenStack.", + "versions": { + "1.3.2": {}, + "2.0.6": {} + }, + "title": "Hortonworks Data Platform", + "name": "hdp" + }, + { + "description": "The Cloudera Sahara plugin provides the ability to launch the Cloudera distribution of Apache Hadoop (CDH) with Cloudera Manager management console.", + "versions": { + "5": {}, + "5.3.0": {} + }, + "title": "Cloudera Plugin", + "name": "cdh" + } + ], + "name": "MapReduce.Streaming" + }, + { + "plugins": [ + { + "description": "The Apache Vanilla plugin provides the ability to launch upstream Vanilla Apache Hadoop cluster without any management consoles. It can also deploy the Oozie component.", + "versions": { + "1.2.1": {}, + "2.6.0": {} + }, + "title": "Vanilla Apache Hadoop", + "name": "vanilla" + }, + { + "description": "The Hortonworks Sahara plugin automates the deployment of the Hortonworks Data Platform (HDP) on OpenStack.", + "versions": { + "1.3.2": {}, + "2.0.6": {} + }, + "title": "Hortonworks Data Platform", + "name": "hdp" + }, + { + "description": "The Cloudera Sahara plugin provides the ability to launch the Cloudera distribution of Apache Hadoop (CDH) with Cloudera Manager management console.", + "versions": { + "5": {}, + "5.3.0": {} + }, + "title": "Cloudera Plugin", + "name": "cdh" + } + ], + "name": "Pig" + }, + { + "plugins": [ + { + "description": "The Apache Vanilla plugin provides the ability to launch upstream Vanilla Apache Hadoop cluster without any management consoles. It can also deploy the Oozie component.", + "versions": { + "1.2.1": {}, + "2.6.0": {} + }, + "title": "Vanilla Apache Hadoop", + "name": "vanilla" + }, + { + "description": "The Hortonworks Sahara plugin automates the deployment of the Hortonworks Data Platform (HDP) on OpenStack.", + "versions": { + "1.3.2": {}, + "2.0.6": {} + }, + "title": "Hortonworks Data Platform", + "name": "hdp" + }, + { + "description": "The Cloudera Sahara plugin provides the ability to launch the Cloudera distribution of Apache Hadoop (CDH) with Cloudera Manager management console.", + "versions": { + "5": {}, + "5.3.0": {} + }, + "title": "Cloudera Plugin", + "name": "cdh" + } + ], + "name": "Shell" + }, + { + "plugins": [ + { + "description": "This plugin provides an ability to launch Spark on Hadoop CDH cluster without any management consoles.", + "versions": { + "1.0.0": {} + }, + "title": "Apache Spark", + "name": "spark" + } + ], + "name": "Spark" + } + ] +} diff --git a/api-ref/source/data-processing/v1.1/samples/jobs/job-create-request.json b/api-ref/source/data-processing/v1.1/samples/jobs/job-create-request.json new file mode 100644 index 000000000..b8d1a8ed1 --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/jobs/job-create-request.json @@ -0,0 +1,11 @@ +{ + "description": "This is pig job example", + "mains": [ + "90d9d5ec-11aa-48bd-bc8c-34936ce0db6e" + ], + "libs": [ + "320a2ca7-25fd-4b48-9bc3-4fb1b6c4ff27" + ], + "type": "Pig", + "name": "pig-job-example" +} diff --git a/api-ref/source/data-processing/v1.1/samples/jobs/job-create-response.json b/api-ref/source/data-processing/v1.1/samples/jobs/job-create-response.json new file mode 100644 index 000000000..1413d83d2 --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/jobs/job-create-response.json @@ -0,0 +1,35 @@ +{ + "job": { + "is_public": false, + "tenant_id": "9cd1314a0a31493282b6712b76a8fcda", + "created_at": "2015-03-27 08:48:38.630827", + "id": "71defc8f-d005-484f-9d86-1aedf644d1ef", + "name": "pig-job-example", + "description": "This is pig job example", + "interface": [], + "libs": [ + { + "tenant_id": "9cd1314a0a31493282b6712b76a8fcda", + "created_at": "2015-02-10 14:25:53", + "id": "320a2ca7-25fd-4b48-9bc3-4fb1b6c4ff27", + "name": "binary-job", + "updated_at": null, + "description": "", + "url": "internal-db://c6a925fa-ac1d-4b2e-b88a-7054e1927521" + } + ], + "type": "Pig", + "is_protected": false, + "mains": [ + { + "tenant_id": "9cd1314a0a31493282b6712b76a8fcda", + "created_at": "2015-02-03 10:47:51", + "id": "90d9d5ec-11aa-48bd-bc8c-34936ce0db6e", + "name": "pig", + "updated_at": null, + "description": "", + "url": "internal-db://872878f6-72ea-44db-8d1d-e6a6396d2df0" + } + ] + } +} diff --git a/api-ref/source/data-processing/v1.1/samples/jobs/job-execute-request.json b/api-ref/source/data-processing/v1.1/samples/jobs/job-execute-request.json new file mode 100644 index 000000000..588358c81 --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/jobs/job-execute-request.json @@ -0,0 +1,19 @@ +{ + "cluster_id": "811e1134-666f-4c48-bc92-afb5b10c9d8c", + "input_id": "3e1bc8e6-8c69-4749-8e52-90d9341d15bc", + "output_id": "52146b52-6540-4aac-a024-fee253cf52a9", + "job_configs": { + "configs": { + "mapred.map.tasks": "1", + "mapred.reduce.tasks": "1" + }, + "args": [ + "arg1", + "arg2" + ], + "params": { + "param2": "value2", + "param1": "value1" + } + } +} diff --git a/api-ref/source/data-processing/v1.1/samples/jobs/job-execute-response.json b/api-ref/source/data-processing/v1.1/samples/jobs/job-execute-response.json new file mode 100644 index 000000000..28e66fe90 --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/jobs/job-execute-response.json @@ -0,0 +1,30 @@ +{ + "job_execution": { + "input_id": "3e1bc8e6-8c69-4749-8e52-90d9341d15bc", + "is_protected": false, + "job_id": "310b0fc6-e1db-408e-8798-312e7500f3ac", + "cluster_id": "811e1134-666f-4c48-bc92-afb5b10c9d8c", + "output_id": "52146b52-6540-4aac-a024-fee253cf52a9", + "created_at": "2015-09-15T09:49:24", + "is_public": false, + "id": "20da9edb-12ce-4b45-a473-41baeefef997", + "tenant_id": "808d5032ea0446889097723bfc8e919d", + "job_configs": { + "configs": { + "mapred.reduce.tasks": "1", + "mapred.map.tasks": "1" + }, + "args": [ + "arg1", + "arg2" + ], + "params": { + "param2": "value2", + "param1": "value1" + } + }, + "info": { + "status": "PENDING" + } + } +} diff --git a/api-ref/source/data-processing/v1.1/samples/jobs/job-show-response.json b/api-ref/source/data-processing/v1.1/samples/jobs/job-show-response.json new file mode 100644 index 000000000..43653e971 --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/jobs/job-show-response.json @@ -0,0 +1,26 @@ +{ + "job": { + "is_public": false, + "tenant_id": "9cd1314a0a31493282b6712b76a8fcda", + "created_at": "2015-02-10 14:25:48", + "id": "1a674c31-9aaa-4d07-b844-2bf200a1b836", + "name": "Edp-test-job", + "updated_at": null, + "description": "", + "interface": [], + "libs": [ + { + "tenant_id": "9cd1314a0a31493282b6712b76a8fcda", + "created_at": "2015-02-10 14:25:48", + "id": "0ff4ac10-94a4-4e25-9ac9-603afe27b100", + "name": "binary-job.jar", + "updated_at": null, + "description": "", + "url": "swift://Edp-test-c71e6bce.sahara/binary-job.jar" + } + ], + "type": "MapReduce", + "mains": [], + "is_protected": false + } +} diff --git a/api-ref/source/data-processing/v1.1/samples/jobs/job-update-request.json b/api-ref/source/data-processing/v1.1/samples/jobs/job-update-request.json new file mode 100644 index 000000000..810b8a60b --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/jobs/job-update-request.json @@ -0,0 +1,4 @@ +{ + "description": "This is public pig job example", + "name": "public-pig-job-example" +} diff --git a/api-ref/source/data-processing/v1.1/samples/jobs/job-update-response.json b/api-ref/source/data-processing/v1.1/samples/jobs/job-update-response.json new file mode 100644 index 000000000..0ee7e2734 --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/jobs/job-update-response.json @@ -0,0 +1,26 @@ +{ + "job": { + "is_public": false, + "tenant_id": "9cd1314a0a31493282b6712b76a8fcda", + "created_at": "2015-02-10 14:25:48", + "id": "1a674c31-9aaa-4d07-b844-2bf200a1b836", + "name": "public-pig-job-example", + "updated_at": null, + "description": "This is public pig job example", + "interface": [], + "libs": [ + { + "tenant_id": "9cd1314a0a31493282b6712b76a8fcda", + "created_at": "2015-02-10 14:25:48", + "id": "0ff4ac10-94a4-4e25-9ac9-603afe27b100", + "name": "binary-job.jar", + "updated_at": null, + "description": "", + "url": "swift://Edp-test-c71e6bce.sahara/binary-job.jar" + } + ], + "type": "MapReduce", + "mains": [], + "is_protected": false + } +} diff --git a/api-ref/source/data-processing/v1.1/samples/jobs/jobs-list-response.json b/api-ref/source/data-processing/v1.1/samples/jobs/jobs-list-response.json new file mode 100644 index 000000000..7f0d04de6 --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/jobs/jobs-list-response.json @@ -0,0 +1,62 @@ +{ + "jobs": [ + { + "is_public": false, + "tenant_id": "9cd1314a0a31493282b6712b76a8fcda", + "created_at": "2015-02-10 14:25:48", + "id": "1a674c31-9aaa-4d07-b844-2bf200a1b836", + "name": "Edp-test-job-3d60854e", + "updated_at": null, + "description": "", + "interface": [], + "libs": [ + { + "tenant_id": "9cd1314a0a31493282b6712b76a8fcda", + "created_at": "2015-02-10 14:25:48", + "id": "0ff4ac10-94a4-4e25-9ac9-603afe27b100", + "name": "binary-job-339c2d1a.jar", + "updated_at": null, + "description": "", + "url": "swift://Edp-test-c71e6bce.sahara/binary-job-339c2d1a.jar" + } + ], + "type": "MapReduce", + "mains": [], + "is_protected": false + }, + { + "is_public": false, + "tenant_id": "9cd1314a0a31493282b6712b76a8fcda", + "created_at": "2015-02-10 14:25:44", + "id": "4d1f3759-3497-4927-8352-910bacf24e62", + "name": "Edp-test-job-6b6953c8", + "updated_at": null, + "description": "", + "interface": [], + "libs": [ + { + "tenant_id": "9cd1314a0a31493282b6712b76a8fcda", + "created_at": "2015-02-10 14:25:44", + "id": "e0d47800-4ac1-4d63-a2e1-c92d669a44e2", + "name": "binary-job-6f21a2f8.jar", + "updated_at": null, + "description": "", + "url": "swift://Edp-test-b409ec68.sahara/binary-job-6f21a2f8.jar" + } + ], + "type": "Pig", + "mains": [ + { + "tenant_id": "9cd1314a0a31493282b6712b76a8fcda", + "created_at": "2015-02-10 14:25:44", + "id": "e073e896-f123-4b76-995f-901d786262df", + "name": "binary-job-d4f8bd75.pig", + "updated_at": null, + "description": "", + "url": "swift://Edp-test-b409ec68.sahara/binary-job-d4f8bd75.pig" + } + ], + "is_protected": false + } + ] +} diff --git a/api-ref/source/data-processing/v1.1/samples/node-group-templates/node-group-template-create-request.json b/api-ref/source/data-processing/v1.1/samples/node-group-templates/node-group-template-create-request.json new file mode 100644 index 000000000..802fcfb30 --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/node-group-templates/node-group-template-create-request.json @@ -0,0 +1,13 @@ +{ + "plugin_name": "vanilla", + "hadoop_version": "2.7.1", + "node_processes": [ + "namenode", + "resourcemanager", + "oozie", + "historyserver" + ], + "name": "master", + "floating_ip_pool": "033debed-aeb8-488c-b7d0-adb74c61faa5", + "flavor_id": "2" +} diff --git a/api-ref/source/data-processing/v1.1/samples/node-group-templates/node-group-template-create-response.json b/api-ref/source/data-processing/v1.1/samples/node-group-templates/node-group-template-create-response.json new file mode 100644 index 000000000..c9f9851a4 --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/node-group-templates/node-group-template-create-response.json @@ -0,0 +1,33 @@ +{ + "node_group_template": { + "is_public": false, + "tenant_id": "808d5032ea0446889097723bfc8e919d", + "floating_ip_pool": "033debed-aeb8-488c-b7d0-adb74c61faa5", + "node_configs": {}, + "auto_security_group": false, + "is_default": false, + "availability_zone": null, + "plugin_name": "vanilla", + "is_protected": false, + "flavor_id": "2", + "id": "0bb9f1a4-0c44-4dc5-9452-6741c62ed9ae", + "hadoop_version": "2.7.1", + "use_autoconfig": true, + "volumes_availability_zone": null, + "created_at": "2015-09-14T10:20:11", + "security_groups": null, + "volumes_per_node": 0, + "is_proxy_gateway": false, + "name": "master", + "volume_mount_prefix": "/volumes/disk", + "node_processes": [ + "namenode", + "resourcemanager", + "oozie", + "historyserver" + ], + "volumes_size": 0, + "volume_local_to_instance": false, + "volume_type": null + } +} diff --git a/api-ref/source/data-processing/v1.1/samples/node-group-templates/node-group-template-show-response.json b/api-ref/source/data-processing/v1.1/samples/node-group-templates/node-group-template-show-response.json new file mode 100644 index 000000000..78fa9f970 --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/node-group-templates/node-group-template-show-response.json @@ -0,0 +1,37 @@ +{ + "node_group_template": { + "is_public": false, + "image_id": null, + "tenant_id": "808d5032ea0446889097723bfc8e919d", + "shares": null, + "floating_ip_pool": "033debed-aeb8-488c-b7d0-adb74c61faa5", + "node_configs": {}, + "auto_security_group": false, + "is_default": false, + "availability_zone": null, + "plugin_name": "vanilla", + "flavor_id": "2", + "id": "0bb9f1a4-0c44-4dc5-9452-6741c62ed9ae", + "description": null, + "hadoop_version": "2.7.1", + "use_autoconfig": true, + "volumes_availability_zone": null, + "created_at": "2015-09-14T10:20:11", + "is_protected": false, + "updated_at": null, + "volumes_per_node": 0, + "is_proxy_gateway": false, + "name": "master", + "volume_mount_prefix": "/volumes/disk", + "node_processes": [ + "namenode", + "resourcemanager", + "oozie", + "historyserver" + ], + "volumes_size": 0, + "volume_local_to_instance": false, + "security_groups": null, + "volume_type": null + } +} diff --git a/api-ref/source/data-processing/v1.1/samples/node-group-templates/node-group-template-update-request.json b/api-ref/source/data-processing/v1.1/samples/node-group-templates/node-group-template-update-request.json new file mode 100644 index 000000000..124ef6187 --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/node-group-templates/node-group-template-update-request.json @@ -0,0 +1,10 @@ +{ + "plugin_name": "vanilla", + "hadoop_version": "2.7.1", + "node_processes": [ + "datanode" + ], + "name": "new", + "floating_ip_pool": "033debed-aeb8-488c-b7d0-adb74c61faa5", + "flavor_id": "2" +} diff --git a/api-ref/source/data-processing/v1.1/samples/node-group-templates/node-group-template-update-response.json b/api-ref/source/data-processing/v1.1/samples/node-group-templates/node-group-template-update-response.json new file mode 100644 index 000000000..bbb3161f2 --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/node-group-templates/node-group-template-update-response.json @@ -0,0 +1,30 @@ +{ + "node_group_template": { + "is_public": false, + "tenant_id": "808d5032ea0446889097723bfc8e919d", + "floating_ip_pool": "033debed-aeb8-488c-b7d0-adb74c61faa5", + "node_configs": {}, + "auto_security_group": false, + "is_default": false, + "availability_zone": null, + "plugin_name": "vanilla", + "is_protected": false, + "flavor_id": "2", + "id": "0bb9f1a4-0c44-4dc5-9452-6741c62ed9ae", + "hadoop_version": "2.7.1", + "use_autoconfig": true, + "volumes_availability_zone": null, + "created_at": "2015-09-14T10:20:11", + "security_groups": null, + "volumes_per_node": 0, + "is_proxy_gateway": false, + "name": "new", + "volume_mount_prefix": "/volumes/disk", + "node_processes": [ + "datanode" + ], + "volumes_size": 0, + "volume_local_to_instance": false, + "volume_type": null + } +} diff --git a/api-ref/source/data-processing/v1.1/samples/node-group-templates/node-group-templates-list-response.json b/api-ref/source/data-processing/v1.1/samples/node-group-templates/node-group-templates-list-response.json new file mode 100644 index 000000000..37c296cdf --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/node-group-templates/node-group-templates-list-response.json @@ -0,0 +1,72 @@ +{ + "node_group_templates": [ + { + "is_public": false, + "image_id": null, + "tenant_id": "808d5032ea0446889097723bfc8e919d", + "shares": null, + "floating_ip_pool": "033debed-aeb8-488c-b7d0-adb74c61faa5", + "node_configs": {}, + "auto_security_group": false, + "is_default": false, + "availability_zone": null, + "plugin_name": "vanilla", + "flavor_id": "2", + "id": "0bb9f1a4-0c44-4dc5-9452-6741c62ed9ae", + "description": null, + "hadoop_version": "2.7.1", + "use_autoconfig": true, + "volumes_availability_zone": null, + "created_at": "2015-09-14T10:20:11", + "is_protected": false, + "updated_at": null, + "volumes_per_node": 0, + "is_proxy_gateway": false, + "name": "master", + "volume_mount_prefix": "/volumes/disk", + "node_processes": [ + "namenode", + "resourcemanager", + "oozie", + "historyserver" + ], + "volumes_size": 0, + "volume_local_to_instance": false, + "security_groups": null, + "volume_type": null + }, + { + "is_public": false, + "image_id": null, + "tenant_id": "808d5032ea0446889097723bfc8e919d", + "shares": null, + "floating_ip_pool": "033debed-aeb8-488c-b7d0-adb74c61faa5", + "node_configs": {}, + "auto_security_group": false, + "is_default": false, + "availability_zone": null, + "plugin_name": "vanilla", + "flavor_id": "2", + "id": "846edb31-add5-46e6-a4ee-a4c339f99251", + "description": null, + "hadoop_version": "2.7.1", + "use_autoconfig": true, + "volumes_availability_zone": null, + "created_at": "2015-09-14T10:27:00", + "is_protected": false, + "updated_at": null, + "volumes_per_node": 0, + "is_proxy_gateway": false, + "name": "worker", + "volume_mount_prefix": "/volumes/disk", + "node_processes": [ + "datanode", + "nodemanager" + ], + "volumes_size": 0, + "volume_local_to_instance": false, + "security_groups": null, + "volume_type": null + } + ] +} diff --git a/api-ref/source/data-processing/v1.1/samples/plugins/plugin-show-response.json b/api-ref/source/data-processing/v1.1/samples/plugins/plugin-show-response.json new file mode 100644 index 000000000..00b948a0e --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/plugins/plugin-show-response.json @@ -0,0 +1,12 @@ +{ + "plugin": { + "name": "vanilla", + "versions": [ + "1.2.1", + "2.4.1", + "2.6.0" + ], + "title": "Vanilla Apache Hadoop", + "description": "The Apache Vanilla plugin provides the ability to launch upstream Vanilla Apache Hadoop cluster without any management consoles. It can also deploy the Oozie component." + } +} diff --git a/api-ref/source/data-processing/v1.1/samples/plugins/plugin-version-show-response.json b/api-ref/source/data-processing/v1.1/samples/plugins/plugin-version-show-response.json new file mode 100644 index 000000000..cb1c175a5 --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/plugins/plugin-version-show-response.json @@ -0,0 +1,92 @@ +{ + "plugin": { + "name": "vanilla", + "versions": [ + "1.2.1", + "2.4.1", + "2.6.0" + ], + "description": "The Apache Vanilla plugin provides the ability to launch upstream Vanilla Apache Hadoop cluster without any management consoles. It can also deploy the Oozie component.", + "required_image_tags": [ + "vanilla", + "2.6.0" + ], + "node_processes": { + "JobFlow": [ + "oozie" + ], + "HDFS": [ + "namenode", + "datanode", + "secondarynamenode" + ], + "YARN": [ + "resourcemanager", + "nodemanager" + ], + "MapReduce": [ + "historyserver" + ], + "Hadoop": [], + "Hive": [ + "hiveserver" + ] + }, + "configs": [ + { + "default_value": "/tmp/hadoop-${user.name}", + "name": "hadoop.tmp.dir", + "priority": 2, + "config_type": "string", + "applicable_target": "HDFS", + "is_optional": true, + "scope": "node", + "description": "A base for other temporary directories." + }, + { + "default_value": true, + "name": "hadoop.native.lib", + "priority": 2, + "config_type": "bool", + "applicable_target": "HDFS", + "is_optional": true, + "scope": "node", + "description": "Should native hadoop libraries, if present, be used." + }, + { + "default_value": 1024, + "name": "NodeManager Heap Size", + "config_values": null, + "priority": 1, + "config_type": "int", + "applicable_target": "YARN", + "is_optional": false, + "scope": "node", + "description": null + }, + { + "default_value": true, + "name": "Enable Swift", + "config_values": null, + "priority": 1, + "config_type": "bool", + "applicable_target": "general", + "is_optional": false, + "scope": "cluster", + "description": null + }, + { + "default_value": true, + "name": "Enable MySQL", + "config_values": null, + "priority": 1, + "config_type": "bool", + "applicable_target": "general", + "is_optional": true, + "scope": "cluster", + "description": null + } + ], + "title": "Vanilla Apache Hadoop" + } +} diff --git a/api-ref/source/data-processing/v1.1/samples/plugins/plugins-list-response.json b/api-ref/source/data-processing/v1.1/samples/plugins/plugins-list-response.json new file mode 100644 index 000000000..d92d85c11 --- /dev/null +++ b/api-ref/source/data-processing/v1.1/samples/plugins/plugins-list-response.json @@ -0,0 +1,41 @@ +{ + "plugins": [ + { + "name": "vanilla", + "description": "The Apache Vanilla plugin provides the ability to launch upstream Vanilla Apache Hadoop cluster without any management consoles. It can also deploy the Oozie component.", + "versions": [ + "1.2.1", + "2.4.1", + "2.6.0" + ], + "title": "Vanilla Apache Hadoop" + }, + { + "name": "hdp", + "description": "The Hortonworks Sahara plugin automates the deployment of the Hortonworks Data Platform (HDP) on OpenStack.", + "versions": [ + "1.3.2", + "2.0.6" + ], + "title": "Hortonworks Data Platform" + }, + { + "name": "spark", + "description": "This plugin provides an ability to launch Spark on Hadoop CDH cluster without any management consoles.", + "versions": [ + "1.0.0", + "0.9.1" + ], + "title": "Apache Spark" + }, + { + "name": "cdh", + "description": "The Cloudera Sahara plugin provides the ability to launch the Cloudera distribution of Apache Hadoop (CDH) with Cloudera Manager management console.", + "versions": [ + "5", + "5.3.0" + ], + "title": "Cloudera Plugin" + } + ] +} diff --git a/api-ref/source/database/v1/api-versions.inc b/api-ref/source/database/v1/api-versions.inc new file mode 100644 index 000000000..44b688728 --- /dev/null +++ b/api-ref/source/database/v1/api-versions.inc @@ -0,0 +1,89 @@ +.. -*- rst -*- + +============ +API versions +============ + +Lists information for all Database Service API versions and shows +Database Service v1.0 details. + + +List versions +============= + +.. rest_method:: GET / + +Lists information about all Database Service API versions. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,422,503,500,501, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + +Response Example +---------------- + +.. literalinclude:: samples/db-versions-response.json + :language: javascript + + + + + + + + + + + + + + +Show version details +==================== + +.. rest_method:: GET /v1.0 + +Shows details for the Database Service API v1.0. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,422,503,500,501, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + +Response Example +---------------- + +.. literalinclude:: samples/db-version-response.json + :language: javascript + + + + + + + + + + + + + diff --git a/api-ref/source/database/v1/configurations.inc b/api-ref/source/database/v1/configurations.inc new file mode 100644 index 000000000..a8a4d3671 --- /dev/null +++ b/api-ref/source/database/v1/configurations.inc @@ -0,0 +1,313 @@ +.. -*- rst -*- + +===================================== +Configuration groups (configurations) +===================================== + +Creates and lists all configuration groups. + + +Create configuration group +========================== + +.. rest_method:: POST /v1.0/{accountId}/configurations + +Creates a configuration group. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,422,503,500,501, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - datastore: datastore + - values: values + - name: name + - accountId: accountId + +Request Example +--------------- + +.. literalinclude:: samples/db-create-config-grp-request.json + :language: javascript + + + + + +Response Example +---------------- + +.. literalinclude:: samples/db-create-config-grp-response.json + :language: javascript + + + + + + + + + + + + + + +List configuration groups +========================= + +.. rest_method:: GET /v1.0/{accountId}/configurations + +Lists all configuration groups. + +The list includes the associated data store and data store version +for each configuration group. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,422,503,500,501, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - accountId: accountId + + + + +Response Example +---------------- + +.. literalinclude:: samples/db-list-cfg-groups-response.json + :language: javascript + + + + + + + + + + + + + + +List configuration group instances +================================== + +.. rest_method:: GET /v1.0/{accountId}/configurations/{configId}/instances + +Lists the instances associated with the specified configuration group. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,422,503,500,501, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - configId: configId + - accountId: accountId + + + + +Response Example +---------------- + +.. literalinclude:: samples/db-config-group-instances-response.json + :language: javascript + + + + + + + + + + + + + + +Delete configuration group +========================== + +.. rest_method:: DELETE /v1.0/{accountId}/configurations/{configId} + +Deletes a configuration group. + +Error response codes:202,413,405,404,403,401,400,422,503,500,501, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - configId: configId + - accountId: accountId + + + + + + + + + + + + + + + + +Patch configuration group +========================= + +.. rest_method:: PATCH /v1.0/{accountId}/configurations/{configId} + +Sets new values for a configuration group. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,422,503,500,501, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - values: values + - configId: configId + - accountId: accountId + +Request Example +--------------- + +.. literalinclude:: samples/db-patch-config-grp-request.json + :language: javascript + + + + + +Response Example +---------------- + +.. literalinclude:: samples/db-patch-config-grp-response-json-http.txt + :language: javascript + + + + + + + + + + + + + + +Show configuration group details +================================ + +.. rest_method:: GET /v1.0/{accountId}/configurations/{configId} + +Lists details about a configuration group, including its values. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,422,503,500,501, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - configId: configId + - accountId: accountId + + + + +Response Example +---------------- + +.. literalinclude:: samples/db-config-group-details-response.json + :language: javascript + + + + + + + + + + + + + + +Update configuration group +========================== + +.. rest_method:: PUT /v1.0/{accountId}/configurations/{configId} + +Sets new values for a configuration group. Also lets you change the name and description of the configuration group. + +Error response codes:202,413,405,404,403,401,400,422,503,500,501, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - values: values + - description: description + - name: name + - configId: configId + - accountId: accountId + +Request Example +--------------- + +.. literalinclude:: samples/db-update-config-grp-request.json + :language: javascript + + + + + + + + + + + + + + + + diff --git a/api-ref/source/database/v1/database-instance-actions.inc b/api-ref/source/database/v1/database-instance-actions.inc new file mode 100644 index 000000000..f1c842a83 --- /dev/null +++ b/api-ref/source/database/v1/database-instance-actions.inc @@ -0,0 +1,269 @@ +.. -*- rst -*- + +================================== +Database instance actions (action) +================================== + +Resizes instances and volumes and restarts instances. + + +Restart instance +================ + +.. rest_method:: POST /v1.0/{accountId}/instances/{instanceId}/action + +Restarts the database service for an instance. + +The restart operation restarts only the MySQL instance. Restarting +MySQL erases any dynamic configuration settings that you make in +MySQL. + +The MySQL service is unavailable until the instance restarts. + +If the operation succeeds, it returns the ``Accepted (202)`` +response code. + +Error response codes:202,413,415,405,404,403,401,400,422,503,500,501, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - instanceId: instanceId + - accountId: accountId + +Request Example +--------------- + +.. literalinclude:: samples/db-instance-restart-request.json + :language: javascript + + + + + + + + + + + + + + + + + + +Resize instance +=============== + +.. rest_method:: POST /v1.0/{accountId}/instances/{instanceId}/action + +Resizes the memory for an instance. + +If you provide a valid ``flavorRef``, this operation changes the +memory size of the instance, and restarts MySQL. + +Error response codes:202,413,415,405,404,403,401,400,422,503,500,501, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - instanceId: instanceId + - accountId: accountId + +Request Example +--------------- + +.. literalinclude:: samples/db-instance-resize-instance-request.json + :language: javascript + + + + + + + + + + + + + + + + + + +Resize instance volume +====================== + +.. rest_method:: POST /v1.0/{accountId}/instances/{instanceId}/action + +Resizes the volume that is attached to an instance. + +You can use this operation to increase but not decrease the volume +size. A valid volume size is an integer value in gigabytes (GB). + +You cannot increase the volume to a size that is larger than the +API volume size limit. + +If this operation succeeds, it returns a 202 Accepted response. + +Error response codes:202,413,415,405,404,403,401,400,422,503,500,501, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - instanceId: instanceId + - accountId: accountId + +Request Example +--------------- + +.. literalinclude:: samples/db-instance-resize-volume-request.json + :language: javascript + + + + + + + + + + + + + + + + + + +Promote instance to replica source +================================== + +.. rest_method:: POST /v1.0/{accountId}/instances/{instanceId}/action + +Promotes a replica. + +If you have set up replication, and the base instance is still +reachable, you can use this operation to promote a replica to be +the new base instance. + +This can be useful if you want to make a configuration change to +the base instance that your replicas are replicating from. For +example, you might want to increase the disk or CPU capacity. If +you made the change on the base instance directly, you would need +to take the base instance down for the duration of the operation. +Instead, you can create a replica, make the configuration change on +the replica, and then promote the replica to become the new base +instance. + +For ``instanceId``, pass in the instance ID of the replica you want +to promote. + +Error response codes:202,413,415,405,404,403,401,400,422,503,500,501, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - instanceId: instanceId + - accountId: accountId + +Request Example +--------------- + +.. literalinclude:: samples/db-instance-promote-replica-request.json + :language: javascript + + + + + + + + + + + + + + + + + + +Delete replication base instance +================================ + +.. rest_method:: POST /v1.0/{accountId}/instances/{instanceId}/action + +Deletes the base instance in a replication set. + +If the base instance becomes unreachable, you can use this +operation to delete the base instance. + +This operation: + +- Finds the replica that has processed the greatest number of + transactions and picks that replica to use as the new base + instance. + +- Transfers the public IP of the old base instance to the new base + instance (which is the newly-promoted replica). + +- Deletes the old base instance. + +- Takes all the instances in the replication set and makes them + start replicating from the new base instance. + +For ``instanceId``, pass in the instance ID of the unreachable base +instance. + +Error response codes:202,413,415,405,404,403,401,400,422,503,500,501, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - instanceId: instanceId + - accountId: accountId + +Request Example +--------------- + +.. literalinclude:: samples/db-instance-eject-replica-request.json + :language: javascript + + + + + + + + + + + + + + + + + diff --git a/api-ref/source/database/v1/database-instances.inc b/api-ref/source/database/v1/database-instances.inc new file mode 100644 index 000000000..641dc1d04 --- /dev/null +++ b/api-ref/source/database/v1/database-instances.inc @@ -0,0 +1,425 @@ +.. -*- rst -*- + +============================== +Database instances (instances) +============================== + +Creates, lists, shows details for, attaches a configuration group +to, detaches a configuration group from, deletes, lists +configuration defaults, creates root, and determines whether root +is enables for instances. + + +Delete database instance +======================== + +.. rest_method:: DELETE /v1.0/{accountId}/instances/{instanceId} + +Deletes a database instance, including any associated data. + +This operation does not delete any read slaves. + +You cannot complete this operation when the instance state is +either ``REBUILDING`` or ``BUILDING``. + +Error response codes:202,413,405,404,403,401,400,422,503,500,501, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - instanceId: instanceId + - accountId: accountId + + + + + + + + + + + + + + + + +Show database instance details +============================== + +.. rest_method:: GET /v1.0/{accountId}/instances/{instanceId} + +Shows database instance details. + +Lists the status and details of the database instance. + +Lists the volume size in gigabytes (GB) and the approximate GB +used. + +After instance creation, the ``used`` value is greater than 0, +which is expected and due to the automatic creation of non-empty +transaction logs for MySQL optimization. The response does not +include the ``used`` attribute when the instance status is +``BUILD``, ``REBOOT``, ``RESIZE``, or ``ERROR``. + +The list operations return a DNS-resolvable host name for the +database instance rather than an IP address. Because the host name +always resolves to the correct IP address for the database +instance, you do not need to maintain the mapping. Although the IP +address might change when you resize, migrate, or perform other +operations, the host name always resolves to the correct database +instance. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,422,503,500,501, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - instanceId: instanceId + - accountId: accountId + + + + +Response Example +---------------- + +.. literalinclude:: samples/db-instance-status-detail-response.json + :language: javascript + + + + + + + + + + + + + + +Attach configuration group +========================== + +.. rest_method:: PUT /v1.0/{accountId}/instances/{instanceId} + +Attaches a configuration group to an instance. + +Error response codes:202,413,415,405,404,403,401,400,422,503,500,501, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - configuration: configuration + - instanceId: instanceId + - accountId: accountId + +Request Example +--------------- + +.. literalinclude:: samples/db-attach-config-grp-request.json + :language: javascript + + + + + + + + + + + + + + + + + + +Detach configuration group +========================== + +.. rest_method:: PUT /v1.0/{accountId}/instances/{instanceId} + +Detaches a configuration group from an instance. + +When you pass in only an instance ID and omit the configuration ID, +this operation detaches any configuration group that was attached +to the instance. + +Error response codes:202,413,415,405,404,403,401,400,422,503,500,501, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - configuration: configuration + - instanceId: instanceId + - accountId: accountId + +Request Example +--------------- + +.. literalinclude:: samples/db-detach-config-grp-request.json + :language: javascript + + + + + + + + + + + + + + + + + + +Detach replica +============== + +.. rest_method:: PATCH /v1.0/{accountId}/instances/{instanceId} + +Detaches a replica from its replication source. + +If you created an instance that is a replica of a source instance, +you can detach the replica from the source. This can be useful if +the source becomes unavailable. In this case, you can detach the +replica from the source, making the replica a standalone database +instance. You can then take the new standalone instance and create +a new replica of that instance. + +Error response codes:202,413,415,405,404,403,401,400,422,503,500,501, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - replica_of: replica_of + - slave_of: slave_of + - instanceId: instanceId + - accountId: accountId + +Request Example +--------------- + +.. literalinclude:: samples/db-detach-replica-request.json + :language: javascript + + + + + + + + + + + + + + + + + + +Create database instance +======================== + +.. rest_method:: POST /v1.0/{accountId}/instances + +Creates a database instance. + +Asynchronously provisions a database instance. You must specify a +flavor and a volume size. The service provisions the instance with +a volume of the requested size, which serves as storage for the +database instance. + + **Notes** + +- You can create only one database instance per POST request. + +- You can create a database instance with one or more databases. You + associate users with each database. + +- The default binding for the MySQL instance is port 3306. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,422,503,500,501, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - users: users + - password: password + - datastore_version: datastore_version + - name: name + - flavorRef: flavorRef + - characterSet: characterSet + - replica_count: replica_count + - instance: instance + - collate: collate + - databases: databases + - datastore: datastore + - configuration: configuration + - type: type + - replica_of: replica_of + - size: size + - accountId: accountId + +Request Example +--------------- + +.. literalinclude:: samples/db-create-instance-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - updated: updated + - name: name + - created: created + - characterSet: characterSet + - instance: instance + - collate: collate + - databases: databases + - flavor: flavor + - users: users + + + +Response Example +---------------- + +.. literalinclude:: samples/db-create-instance-response.json + :language: javascript + + + + + + + + + + + + + + +List database instances +======================= + +.. rest_method:: GET /v1.0/{accountId}/instances + +Lists information, including status, for all database instances. + +Lists status and information for all database instances. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,422,503,500,501, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - accountId: accountId + + + + +Response Example +---------------- + +.. literalinclude:: samples/db-instances-index-response.json + :language: javascript + + + + + + + + + + + + + + +List configuration defaults +=========================== + +.. rest_method:: GET /v1.0/{accountId}/instances/{instanceId}/configuration + +Lists the configuration defaults for an instance. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,422,503,500,501, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - instanceId: instanceId + - accountId: accountId + + + + +Response Example +---------------- + +.. literalinclude:: samples/db-list-cfg-defaults-response.json + :language: javascript + + + + + + + + + + + + + diff --git a/api-ref/source/database/v1/databases.inc b/api-ref/source/database/v1/databases.inc new file mode 100644 index 000000000..658b5b7be --- /dev/null +++ b/api-ref/source/database/v1/databases.inc @@ -0,0 +1,137 @@ +.. -*- rst -*- + +===================== +Databases (databases) +===================== + +Creates, lists all, and deletes databases. + + +Delete database +=============== + +.. rest_method:: DELETE /v1.0/{accountId}/instances/{instanceId}/databases/{databaseName} + +Deletes a database. + +This operation also deletes all data that is associated with the +database. + +Error response codes:202,413,405,404,403,401,400,422,503,500,501, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - instanceId: instanceId + - databaseName: databaseName + - accountId: accountId + + + + + + + + + + + + + + + + +Create database +=============== + +.. rest_method:: POST /v1.0/{accountId}/instances/{instanceId}/databases + +Creates a database within an instance. + +The ``name`` of the database is a required attribute. + +Error response codes:202,413,405,404,403,401,400,422,503,500,501, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - characterSet: characterSet + - collate: collate + - name: name + - instanceId: instanceId + - accountId: accountId + +Request Example +--------------- + +.. literalinclude:: samples/db-create-databases-request.json + :language: javascript + + + + + + + + + + + + + + + + + +List instance databases +======================= + +.. rest_method:: GET /v1.0/{accountId}/instances/{instanceId}/databases + +Lists databases for an instance. + +This operation returns only the user-defined databases and not the +system databases. Only the database administrator can view the +``mysql``, ``information_schema``, and ``lost+found`` system +databases. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,422,503,500,501, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - instanceId: instanceId + - accountId: accountId + + + + +Response Example +---------------- + +.. literalinclude:: samples/db-list-databases-response.json + :language: javascript + + + + + + + + + + + + + diff --git a/api-ref/source/database/v1/datastores.inc b/api-ref/source/database/v1/datastores.inc new file mode 100644 index 000000000..e55629596 --- /dev/null +++ b/api-ref/source/database/v1/datastores.inc @@ -0,0 +1,143 @@ +.. -*- rst -*- + +======================== +Data stores (datastores) +======================== + +Lists data store versions, lists parameters for data stores, and +shows parameter details for a data store version. + + +Show configuration parameter details +==================================== + +.. rest_method:: GET /v1.0/{accountId}/datastores/versions/{datastore_version_id}/parameters/{parameter_name} + +Displays details for a configuration parameter associated with a data store version. + +Details include the type, minimum and maximum values, and whether +you must restart the instance after you change the parameter value. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,422,503,500,501, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - parameter_name: parameter_name + - datastore_version_id: datastore_version_id + - accountId: accountId + + + + +Response Example +---------------- + +.. literalinclude:: samples/db-show-parameter-details.json + :language: javascript + + + + + + + + + + + + + + +List datastore versions +======================= + +.. rest_method:: GET /v1.0/{accountId}/datastores/{datastore_name}/versions + +Lists the available versions of a data store. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,422,503,500,501, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - datastore_name: datastore_name + - accountId: accountId + + + + +Response Example +---------------- + +.. literalinclude:: samples/db-list-datastore-versions.json + :language: javascript + + + + + + + + + + + + + + +List configuration parameters +============================= + +.. rest_method:: GET /v1.0/{accountId}/datastores/versions/{datastore_version_id}/parameters + +Lists the available configuration parameters for a data store version. + +Parameter information includes the type, minimum and maximum +values, and whether you must restart the instance after you change +a parameter value. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,422,503,500,501, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - datastore_version_id: datastore_version_id + - accountId: accountId + + + + +Response Example +---------------- + +.. literalinclude:: samples/db-list-parameters-response.json + :language: javascript + + + + + + + + + + + + + diff --git a/api-ref/source/database/v1/flavors.inc b/api-ref/source/database/v1/flavors.inc new file mode 100644 index 000000000..4127737a2 --- /dev/null +++ b/api-ref/source/database/v1/flavors.inc @@ -0,0 +1,104 @@ +.. -*- rst -*- + +================= +Flavors (flavors) +================= + +Lists all flavors and shows details for a flavor, by ID. + + +Show flavor details +=================== + +.. rest_method:: GET /v1.0/{accountId}/flavors/{flavorId} + +Shows flavor details with details of the RAM. + +This resource is identical to the flavors found in the OpenStack +Compute API, but without the disk property. + +The ``flavorId`` parameter must be an integer value. If you use a +floating point value for this parameter, this call truncates the +decimal portion and uses the integer portion as the ``flavorId`` +value. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,422,503,500,501, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - flavorId: flavorId + - accountId: accountId + + + + +Response Example +---------------- + +.. literalinclude:: samples/db-flavors-by-id-response.json + :language: javascript + + + + + + + + + + + + + + +List flavors +============ + +.. rest_method:: GET /v1.0/{accountId}/flavors + +Lists information for all available flavors. + +This operation lists information for all available flavors. + +This resource is identical to the flavors found in the OpenStack +Nova API, but without the disk property. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,422,503,500,501, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - accountId: accountId + + + + +Response Example +---------------- + +.. literalinclude:: samples/db-flavors-response.json + :language: javascript + + + + + + + + + + + + + diff --git a/api-ref/source/database/v1/parameters.yaml b/api-ref/source/database/v1/parameters.yaml new file mode 100644 index 000000000..6a863fdcf --- /dev/null +++ b/api-ref/source/database/v1/parameters.yaml @@ -0,0 +1,293 @@ +# variables in header +{} + +# variables in path +accountId: + description: | + The account ID of the owner of the instance. + in: path + required: false + type: string +configId: + description: | + The ID of the configuration group. + in: path + required: false + type: string +databaseName: + description: | + The name for the database. + in: path + required: false + type: string +datastore_name: + description: | + The name of the data store. + in: path + required: false + type: string +datastore_version_id: + description: | + The UUID of the data store version. + in: path + required: false + type: string +flavorId: + description: | + The ID for the flavor. + in: path + required: false + type: string +instanceId: + description: | + The ID for the database instance. + in: path + required: false + type: string +parameter_name: + description: | + The name of the parameter for which to show + details. + in: path + required: false + type: string + +# variables in query +{} + +# variables in body +characterSet: + description: | + A set of symbols and encodings. Default is + ``utf8``. For information about supported character sets and + collations, see `Character Sets and Collations in MySQL + `_. + in: body + required: false + type: string +collate: + description: | + A set of rules for comparing characters in a + character set. Default is ``utf8_general_ci``. For information + about supported character sets and collations, see `Character Sets + and Collations in MySQL `_. + in: body + required: false + type: string +configuration: + description: | + ID of the configuration group that you want to + attach to the instance. + in: body + required: true + type: string +configuration_1: + description: | + ID of the configuration group to attach to the + instance. + in: body + required: false + type: string +configuration_2: + description: | + To detach a configuration group, set the + configuration parameter to null. + in: body + required: true + type: string +created: + description: | + The date and time when the resource was created. + + The date and time stamp format is `ISO 8601 + `_: + + :: + + CCYY-MM-DDThh:mm:ss±hh:mm + + For example, ``2015-08-27T09:49:58-05:00``. + + The ``±hh:mm`` value, if included, is the time zone as an offset + from UTC. In the previous example, the offset value is ``-05:00``. + in: body + required: true + type: string +databases: + description: | + A ``databases`` object. + in: body + required: false + type: array +datastore: + description: | + Data store assigned to the configuration group. + Required if you did not configure the default data store. + in: body + required: true + type: string +datastore_1: + description: | + Name of the datastore to use when creating the + instance. + in: body + required: false + type: string +datastore_version: + description: | + Name of the datastore version to use when + creating the instance. + in: body + required: false + type: string +description: + description: | + New description of the configuration group. + in: body + required: true + type: string +flavor: + description: | + A ``flavor`` object, which includes the flavor ID + (integer) and flavor relative links. + in: body + required: true + type: object +flavorRef: + description: | + Reference (href), which is the actual URI to a + flavor as it appears in the list flavors response. Rather than + the flavor URI, you can also pass the flavor ID (integer) as the + ``flavorRef`` value. For example, ``1``. + in: body + required: true + type: string +instance: + description: | + An ``instance`` object. + in: body + required: true + type: object +name: + description: | + Name of the configuration group you are creating. + in: body + required: true + type: string +name_1: + description: | + A database name. You cannot use the + ``lost+found``, ``information_schema``, or ``mysql`` database name + to create a database because these names are reserved for system + databases. Valid characters in a database name are: - Upper and + lower case letters. - Numbers. - ``@``, ``?``, ``#``, and spaces + except at the beginning or end of the database name. - ``_`` is + allowed anywhere in the database name. You cannot use these + characters in a database name: The maximum length of a database + name is 64 characters. + in: body + required: false + type: string +name_2: + description: | + The user name for the database on instance + creation. + in: body + required: false + type: string +name_3: + description: | + New name of the configuration group. + in: body + required: true + type: string +password: + description: | + The password for those users on instance + creation. + in: body + required: false + type: string +replica_count: + description: | + Number of replicas to create (defaults to 1). + in: body + required: false + type: integer +replica_of: + description: | + ID or name of an existing instance to replicate + from. + in: body + required: false + type: string +replica_of_1: + description: | + To detach a replica, set ``replica_of`` to null. + in: body + required: true + type: string +size: + description: | + The volume size, in gigabytes (GB). A valid value + is from 1 to 50. + in: body + required: true + type: integer +slave_of: + description: | + To detach a replica, set ``slave_of`` to null. + in: body + required: true + type: string +type: + description: | + The volume type to use. You can list the + available volume types on your system by using the ``cinder type- + list`` command. If you want to specify a volume type, you must + also specify a volume size. + in: body + required: false + type: string +updated: + description: | + The date and time when the resource was updated. + + The date and time stamp format is `ISO 8601 + `_: + + :: + + CCYY-MM-DDThh:mm:ss±hh:mm + + The ``±hh:mm`` value, if included, is the time zone as an offset + from UTC. + + For example, ``2015-08-27T09:49:58-05:00``. + + The UTC time zone is assumed. + in: body + required: true + type: string +users: + description: | + A ``users`` object. + in: body + required: true + type: array +values: + description: | + Dictionary that lists configuration parameter + names and associated values. + in: body + required: true + type: string +values_1: + description: | + Dictionary that lists configuration parameter + names and associated values. + in: body + required: true + type: object + diff --git a/api-ref/source/database/v1/samples/db-attach-config-grp-request-json-http.txt b/api-ref/source/database/v1/samples/db-attach-config-grp-request-json-http.txt new file mode 100644 index 000000000..478e04939 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-attach-config-grp-request-json-http.txt @@ -0,0 +1,7 @@ +PUT /v1.0/1234/instances/4c93c73b-d6d0-47d7-b8c6-b699d19d7de9 HTTP/1.1 +User-Agent: python-example-client +Host: openstack.example.com +X-Auth-Token: 87c6033c-9ff6-405f-943e-2deb73f278b7 +Accept: application/json +Content-Type: application/json + diff --git a/api-ref/source/database/v1/samples/db-attach-config-grp-request.json b/api-ref/source/database/v1/samples/db-attach-config-grp-request.json new file mode 100644 index 000000000..d5708d910 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-attach-config-grp-request.json @@ -0,0 +1,5 @@ +{ + "instance": { + "configuration": "2aa51628-5c42-4086-8682-137caffd2ba6" + } +} diff --git a/api-ref/source/database/v1/samples/db-attach-config-grp-response-json-http.txt b/api-ref/source/database/v1/samples/db-attach-config-grp-response-json-http.txt new file mode 100644 index 000000000..c7fabb46f --- /dev/null +++ b/api-ref/source/database/v1/samples/db-attach-config-grp-response-json-http.txt @@ -0,0 +1,5 @@ +HTTP/1.1 202 OK +Content-Type: application/json +Content-Length: 0 +Date: Mon, 13 Jul 2015 19:53:04 GMT + diff --git a/api-ref/source/database/v1/samples/db-check-root-user-request-json-http.txt b/api-ref/source/database/v1/samples/db-check-root-user-request-json-http.txt new file mode 100644 index 000000000..86b449b52 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-check-root-user-request-json-http.txt @@ -0,0 +1,6 @@ +GET /v1.0/1234/instances/692d8418-7a8f-47f1-8060-59846c6e024f/root HTTP/1.1 +User-Agent: python-example-client +Host: openstack.example.com +X-Auth-Token: 87c6033c-9ff6-405f-943e-2deb73f278b7 +Accept: application/json +Content-Type: application/json \ No newline at end of file diff --git a/api-ref/source/database/v1/samples/db-check-root-user-response-json-http.txt b/api-ref/source/database/v1/samples/db-check-root-user-response-json-http.txt new file mode 100644 index 000000000..a7b5e387b --- /dev/null +++ b/api-ref/source/database/v1/samples/db-check-root-user-response-json-http.txt @@ -0,0 +1,4 @@ +HTTP/1.1 200 OK +Content-Type: application/json +Content-Length: 21 +Date: Wed, 25 Jan 2012 21:58:13 GMT \ No newline at end of file diff --git a/api-ref/source/database/v1/samples/db-check-root-user-response.json b/api-ref/source/database/v1/samples/db-check-root-user-response.json new file mode 100644 index 000000000..f3990b45a --- /dev/null +++ b/api-ref/source/database/v1/samples/db-check-root-user-response.json @@ -0,0 +1,3 @@ +{ + "rootEnabled": true +} diff --git a/api-ref/source/database/v1/samples/db-config-group-details-request-json-http.txt b/api-ref/source/database/v1/samples/db-config-group-details-request-json-http.txt new file mode 100644 index 000000000..8ee791ec8 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-config-group-details-request-json-http.txt @@ -0,0 +1,6 @@ +GET /v1.0/1234/configurations/5678 HTTP/1.1 +User-Agent: python-example-client +Host: openstack.example.com +X-Auth-Token: 87c6033c-9ff6-405f-943e-2deb73f278b7 +Accept: application/json +Content-Type: application/json diff --git a/api-ref/source/database/v1/samples/db-config-group-details-response-json-http.txt b/api-ref/source/database/v1/samples/db-config-group-details-response-json-http.txt new file mode 100644 index 000000000..41f9a3b59 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-config-group-details-response-json-http.txt @@ -0,0 +1,4 @@ +HTTP/1.1 200 OK +Content-Type: application/json +Content-Length: 138 +Date: Fri, 20 Nov 2015 19:53:04 GMT diff --git a/api-ref/source/database/v1/samples/db-config-group-details-response.json b/api-ref/source/database/v1/samples/db-config-group-details-response.json new file mode 100644 index 000000000..a5ee26b41 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-config-group-details-response.json @@ -0,0 +1,16 @@ +{ + "configuration": { + "datastore_name": "mysql", + "updated": "2015-11-22T19:07:20", + "values": { + "connect_timeout": 17 + }, + "name": "group1", + "created": "2015-11-20T20:51:24", + "datastore_version_name": "5.6", + "instance_count": 1, + "id": "1c8a4fdd-690c-4e6e-b2e1-148b8d738770", + "datastore_version_id": "b9f97132-467b-4f8e-b12d-947cfc223ac3", + "description": null + } +} diff --git a/api-ref/source/database/v1/samples/db-config-group-instances-request-json-http.txt b/api-ref/source/database/v1/samples/db-config-group-instances-request-json-http.txt new file mode 100644 index 000000000..e4840a5be --- /dev/null +++ b/api-ref/source/database/v1/samples/db-config-group-instances-request-json-http.txt @@ -0,0 +1,6 @@ +GET /v1.0/1234/configurations/5678/instances HTTP/1.1 +User-Agent: python-example-client +Host: openstack.example.com +X-Auth-Token: 87c6033c-9ff6-405f-943e-2deb73f278b7 +Accept: application/json +Content-Type: application/json diff --git a/api-ref/source/database/v1/samples/db-config-group-instances-response-json-http.txt b/api-ref/source/database/v1/samples/db-config-group-instances-response-json-http.txt new file mode 100644 index 000000000..41f9a3b59 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-config-group-instances-response-json-http.txt @@ -0,0 +1,4 @@ +HTTP/1.1 200 OK +Content-Type: application/json +Content-Length: 138 +Date: Fri, 20 Nov 2015 19:53:04 GMT diff --git a/api-ref/source/database/v1/samples/db-config-group-instances-response.json b/api-ref/source/database/v1/samples/db-config-group-instances-response.json new file mode 100644 index 000000000..b25b471d3 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-config-group-instances-response.json @@ -0,0 +1,8 @@ +{ + "instances": [ + { + "id": "7fd2d1d6-a2ef-4a76-8c03-e233db4d86da", + "name": "master_1" + } + ] +} diff --git a/api-ref/source/database/v1/samples/db-create-config-grp-request-json-http.txt b/api-ref/source/database/v1/samples/db-create-config-grp-request-json-http.txt new file mode 100644 index 000000000..a346a2d63 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-create-config-grp-request-json-http.txt @@ -0,0 +1,7 @@ +POST /v1.0/1234/configurations HTTP/1.1 +User-Agent: python-example-client +Host: openstack.example.com +X-Auth-Token: d6cafa5b-e0c7-4ab8-948e-7c95f2acd031 +Accept: application/json +Content-Type: application/json + diff --git a/api-ref/source/database/v1/samples/db-create-config-grp-request.json b/api-ref/source/database/v1/samples/db-create-config-grp-request.json new file mode 100644 index 000000000..e8acd72a6 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-create-config-grp-request.json @@ -0,0 +1,15 @@ +{ + "configuration": { + "datastore": [ + { + "type": "mysql" + } + ], + "values": [ + { + "sync_binlog": 1 + } + ], + "name": "group1" + } +} diff --git a/api-ref/source/database/v1/samples/db-create-config-grp-response-json-http.txt b/api-ref/source/database/v1/samples/db-create-config-grp-response-json-http.txt new file mode 100644 index 000000000..4033d8982 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-create-config-grp-response-json-http.txt @@ -0,0 +1,5 @@ +HTTP/1.1 200 OK +Content-Type: application/json +Content-Length: 360 +Date: Mon, 6 Jul 2015 21:53:10 GMT + diff --git a/api-ref/source/database/v1/samples/db-create-config-grp-response.json b/api-ref/source/database/v1/samples/db-create-config-grp-response.json new file mode 100644 index 000000000..7a2c4fe68 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-create-config-grp-response.json @@ -0,0 +1,14 @@ +{ + "updated": "2015-07-01T16:38:27", + "name": "group1", + "created": "2015-07-01T16:38:27", + "instance_count": 0, + "values": { + "sync_binlog": 1 + }, + "datastore_version_id": "2dc7faa0-efff-4c2b-8cff-bcd949c518a5", + "id": "2aa51628-5c42-4086-8682-137caffd2ba6", + "datastore_name": "mysql", + "datastore_version_name": "5.6", + "description": null +} diff --git a/api-ref/source/database/v1/samples/db-create-databases-request-json-http.txt b/api-ref/source/database/v1/samples/db-create-databases-request-json-http.txt new file mode 100644 index 000000000..a033c19c1 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-create-databases-request-json-http.txt @@ -0,0 +1,6 @@ +POST /v1.0/1234/instances/692d8418-7a8f-47f1-8060-59846c6e024f/databases HTTP/1.1 +User-Agent: python-example-client +Host: openstack.example.com +X-Auth-Token: 87c6033c-9ff6-405f-943e-2deb73f278b7 +Accept: application/json +Content-Type: application/json \ No newline at end of file diff --git a/api-ref/source/database/v1/samples/db-create-databases-request.json b/api-ref/source/database/v1/samples/db-create-databases-request.json new file mode 100644 index 000000000..e653d3b10 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-create-databases-request.json @@ -0,0 +1,12 @@ +{ + "databases": [ + { + "character_set": "utf8", + "collate": "utf8_general_ci", + "name": "testingdb" + }, + { + "name": "sampledb" + } + ] +} diff --git a/api-ref/source/database/v1/samples/db-create-databases-response-json-http.txt b/api-ref/source/database/v1/samples/db-create-databases-response-json-http.txt new file mode 100644 index 000000000..6a83f7fcb --- /dev/null +++ b/api-ref/source/database/v1/samples/db-create-databases-response-json-http.txt @@ -0,0 +1,4 @@ +HTTP/1.1 202 Accepted +Content-Type: application/json +Content-Length: 0 +Date: Wed, 27 Jun 2012 23:11:18 GMT diff --git a/api-ref/source/database/v1/samples/db-create-instance-request-json-http.txt b/api-ref/source/database/v1/samples/db-create-instance-request-json-http.txt new file mode 100644 index 000000000..13446afd2 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-create-instance-request-json-http.txt @@ -0,0 +1,6 @@ +POST /v1.0/1234/instances HTTP/1.1 +User-Agent: python-example-client +Host: openstack.example.com +X-Auth-Token: d6cafa5b-e0c7-4ab8-948e-7c95f2acd031 +Accept: application/json +Content-Type: application/json \ No newline at end of file diff --git a/api-ref/source/database/v1/samples/db-create-instance-request.json b/api-ref/source/database/v1/samples/db-create-instance-request.json new file mode 100644 index 000000000..5e99ca793 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-create-instance-request.json @@ -0,0 +1,30 @@ +{ + "instance": { + "databases": [ + { + "character_set": "utf8", + "collate": "utf8_general_ci", + "name": "sampledb" + }, + { + "name": "nextround" + } + ], + "flavorRef": "https://openstack.example.com/v1.0/1234/flavors/1", + "name": "json_rack_instance", + "users": [ + { + "databases": [ + { + "name": "sampledb" + } + ], + "name": "demouser", + "password": "secretsecret" + } + ], + "volume": { + "size": 2 + } + } +} diff --git a/api-ref/source/database/v1/samples/db-create-instance-response-json-http.txt b/api-ref/source/database/v1/samples/db-create-instance-response-json-http.txt new file mode 100644 index 000000000..5ea2b4158 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-create-instance-response-json-http.txt @@ -0,0 +1,4 @@ +HTTP/1.1 200 OK +Content-Type: application/json +Content-Length: 636 +Date: Wed, 25 Jan 2012 21:53:10 GMT \ No newline at end of file diff --git a/api-ref/source/database/v1/samples/db-create-instance-response.json b/api-ref/source/database/v1/samples/db-create-instance-response.json new file mode 100644 index 000000000..521dfea42 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-create-instance-response.json @@ -0,0 +1,36 @@ +{ + "instance": { + "created": "2012-01-25T21:53:09Z", + "flavor": { + "id": "1", + "links": [ + { + "href": "https://openstack.example.com/v1.0/1234/flavors/1", + "rel": "self" + }, + { + "href": "https://openstack.example.com/flavors/1", + "rel": "bookmark" + } + ] + }, + "hostname": "e09ad9a3f73309469cf1f43d11e79549caf9acf2.rackspaceclouddb.com", + "id": "dea5a2f7-3ec7-4496-adab-0abb5a42d635", + "links": [ + { + "href": "https://openstack.example.com/v1.0/1234/instances/dea5a2f7-3ec7-4496-adab-0abb5a42d635", + "rel": "self" + }, + { + "href": "https://openstack.example.com/instances/dea5a2f7-3ec7-4496-adab-0abb5a42d635", + "rel": "bookmark" + } + ], + "name": "json_rack_instance", + "status": "BUILD", + "updated": "2012-01-25T21:53:10Z", + "volume": { + "size": 2 + } + } +} diff --git a/api-ref/source/database/v1/samples/db-create-users-request-json-http.txt b/api-ref/source/database/v1/samples/db-create-users-request-json-http.txt new file mode 100644 index 000000000..9ac79667d --- /dev/null +++ b/api-ref/source/database/v1/samples/db-create-users-request-json-http.txt @@ -0,0 +1,6 @@ +POST /v1.0/1234/instances/1c59bdb8-03b6-4079-a7db-ba92d23a98b3/users HTTP/1.1 +User-Agent: python-example-client +Host: openstack.example.com +X-Auth-Token: bb64d788-2dec-4a6b-a670-7151d108cacf +Accept: application/json +Content-Type: application/json \ No newline at end of file diff --git a/api-ref/source/database/v1/samples/db-create-users-request.json b/api-ref/source/database/v1/samples/db-create-users-request.json new file mode 100644 index 000000000..84117ec94 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-create-users-request.json @@ -0,0 +1,25 @@ +{ + "users": [ + { + "databases": [ + { + "name": "databaseA" + } + ], + "name": "dbuser3", + "password": "secretsecret" + }, + { + "databases": [ + { + "name": "databaseB" + }, + { + "name": "databaseC" + } + ], + "name": "dbuser4", + "password": "secretsecret" + } + ] +} diff --git a/api-ref/source/database/v1/samples/db-create-users-response-json-http.txt b/api-ref/source/database/v1/samples/db-create-users-response-json-http.txt new file mode 100644 index 000000000..6a83f7fcb --- /dev/null +++ b/api-ref/source/database/v1/samples/db-create-users-response-json-http.txt @@ -0,0 +1,4 @@ +HTTP/1.1 202 Accepted +Content-Type: application/json +Content-Length: 0 +Date: Wed, 27 Jun 2012 23:11:18 GMT diff --git a/api-ref/source/database/v1/samples/db-datastore-parameters-response.json b/api-ref/source/database/v1/samples/db-datastore-parameters-response.json new file mode 100644 index 000000000..7f9153c8a --- /dev/null +++ b/api-ref/source/database/v1/samples/db-datastore-parameters-response.json @@ -0,0 +1,258 @@ +{ + "configuration-parameters": [ + { + "name": "myisam_sort_buffer_size", + "min": 4096, + "max": 18446744073709552000, + "restart_required": false, + "type": "integer", + "datastore_version_id": "f597f709-70ef-474d-ac18-2c6abd35a758" + }, + { + "name": "sync_binlog", + "min": 0, + "max": 4294967295, + "restart_required": false, + "type": "integer", + "datastore_version_id": "f597f709-70ef-474d-ac18-2c6abd35a758" + }, + { + "name": "max_allowed_packet", + "min": 1024, + "max": 1073741824, + "restart_required": false, + "type": "integer", + "datastore_version_id": "f597f709-70ef-474d-ac18-2c6abd35a758" + }, + { + "type": "string", + "name": "character_set_connection", + "datastore_version_id": "f597f709-70ef-474d-ac18-2c6abd35a758", + "restart_required": false + }, + { + "name": "autocommit", + "min": 0, + "max": 1, + "restart_required": false, + "type": "integer", + "datastore_version_id": "f597f709-70ef-474d-ac18-2c6abd35a758" + }, + { + "type": "string", + "name": "character_set_client", + "datastore_version_id": "f597f709-70ef474d-ac18-2c6abd35a758", + "restart_required": false + }, + { + "name": "join_buffer_size", + "min": 128, + "max": 18446744073709548000, + "restart_required": false, + "type": "integer", + "datastore_version_id": "f597f709-70ef-474d-ac18-2c6abd35a758" + }, + { + "name": "local_infile", + "min": 0, + "max": 1, + "restart_required": false, + "type": "integer", + "datastore_version_id": "f597f709-70ef-474d-ac18-2c6abd35a758" + }, + { + "name": "auto_increment_offset", + "min": 1, + "max": 65535, + "restart_required": false, + "type": "integer", + "datastore_version_id": "f597f709-70ef-474d-ac18-2c6abd35a758" + }, + { + "name": "max_connections", + "min": 1, + "max": 100000, + "restart_required": false, + "type": "integer", + "datastore_version_id": "f597f709-70ef-474d-ac18-2c6abd35a758" + }, + { + "name": "bulk_insert_buffer_size", + "min": 0, + "max": 18446744073709552000, + "restart_required": false, + "type": "integer", + "datastore_version_id": "f597f709-70ef474dac18-2c6abd35a758" + }, + { + "name": "sort_buffer_size", + "min": 32768, + "max": 18446744073709552000, + "restart_required": false, + "type": "integer", + "datastore_version_id": "f597f709-70ef-474d-ac18-2c6abd35a758" + }, + { + "name": "innodb_log_buffer_size", + "min": 262144, + "max": 4294967295, + "restart_required": true, + "type": "integer", + "datastore_version_id": "f597f709-70ef-474d-ac18-2c6abd35a758" + }, + { + "name": "innodb_file_per_table", + "min": 0, + "max": 1, + "restart_required": false, + "type": "integer", + "datastore_version_id": "f597f709-70ef-474d-ac18-2c6abd35a758" + }, + { + "type": "string", + "name": "character_set_server", + "datastore_version_id": "f597f709-70ef-474d-ac18-2c6abd35a758", + "restart_required": false + }, + { + "name": "innodb_buffer_pool_size", + "min": 5242880, + "max": 18446744073709552000, + "restart_required": true, + "type": "integer", + "datastore_version_id": "f597f709-70ef474dac18-2c6abd35a758" + }, + { + "type": "string", + "name": "collation_server", + "datastore_version_id": "f597f709-70ef-474d-ac18-2c6abd35a758", + "restart_required": false + }, + { + "type": "string", + "name": "character_set_filesystem", + "datastore_version_id": "f597f709-70ef-474d-ac18-2c6abd35a758", + "restart_required": false + }, + { + "type": "string", + "name": "collation_database", + "datastore_version_id": "f597f709-70ef474d-ac18-2c6abd35a758", + "restart_required": false + }, + { + "name": "innodb_flush_log_at_trx_commit", + "min": 0, + "max": 2, + "restart_required": false, + "type": "integer", + "datastore_version_id": "f597f709-70ef-474d-ac18-2c6abd35a758" + }, + { + "name": "interactive_timeout", + "min": 1, + "max": 65535, + "restart_required": false, + "type": "integer", + "datastore_version_id": "f597f709-70ef-474d-ac18-2c6abd35a758" + }, + { + "name": "max_user_connections", + "min": 0, + "max": 4294967295, + "restart_required": false, + "type": "integer", + "datastore_version_id": "f597f709-70ef-474d-ac18-2c6abd35a758" + }, + { + "name": "innodb_thread_concurrency", + "min": 0, + "max": 1000, + "restart_required": false, + "type": "integer", + "datastore_version_id": "f597f709-70ef-474d-ac18-2c6abd35a758" + }, + { + "name": "innodb_open_files", + "min": 10, + "max": 4294967295, + "restart_required": true, + "type": "integer", + "datastore_version_id": "f597f709-70ef-474d-ac18-2c6abd35a758" + }, + { + "name": "key_buffer_size", + "min": 8, + "max": 4294967295, + "restart_required": false, + "type": "integer", + "datastore_version_id": "f597f709-70ef474d-ac18-2c6abd35a758" + }, + { + "name": "connect_timeout", + "min": 2, + "max": 31536000, + "restart_required": false, + "type": "integer", + "datastore_version_id": "f597f709-70ef474d-ac18-2c6abd35a758" + }, + { + "type": "string", + "name": "collation_connection", + "datastore_version_id": "f597f709-70ef-474d-ac18-2c6abd35a758", + "restart_required": false + }, + { + "type": "string", + "name": "character_set_database", + "datastore_version_id": "f597f709-70ef-474d-ac18-2c6abd35a758", + "restart_required": false + }, + { + "name": "auto_increment_increment", + "min": 1, + "max": 65535, + "restart_required": false, + "type": "integer", + "datastore_version_id": "f597f709-70ef-474d-ac18-2c6abd35a758" + }, + { + "name": "max_connect_errors", + "min": 1, + "max": 18446744073709552000, + "restart_required": false, + "type": "integer", + "datastore_version_id": "f597f709-70ef-474d-ac18-2c6abd35a758" + }, + { + "type": "string", + "name": "character_set_results", + "datastore_version_id": "f597f709-70ef-474d-ac18-2c6abd35a758", + "restart_required": false + }, + { + "name": "expire_logs_days", + "min": 0, + "max": 99, + "restart_required": false, + "type": "integer", + "datastore_version_id": "f597f709-70ef-474d-ac18-2c6abd35a758" + }, + { + "name": "wait_timeout", + "min": 1, + "max": 31536000, + "restart_required": false, + "type": "integer", + "datastore_version_id": "f597f709-70ef474d-ac18-2c6abd35a758" + }, + { + "name": "server_id", + "min": 0, + "max": 4294967295, + "restart_required": false, + "type": "integer", + "datastore_version_id": "f597f709-70ef-474d-ac18-2c6abd35a758" + } + ] +} diff --git a/api-ref/source/database/v1/samples/db-delete-config-group-request-json-http.txt b/api-ref/source/database/v1/samples/db-delete-config-group-request-json-http.txt new file mode 100644 index 000000000..a4d2f0cfd --- /dev/null +++ b/api-ref/source/database/v1/samples/db-delete-config-group-request-json-http.txt @@ -0,0 +1,6 @@ +DELETE /v1.0/1234/configurations/692d8418-7a8f-47f1-8060-59846c6e024f HTTP/1.1 +User-Agent: python-example-client +Host: openstack.example.com +X-Auth-Token: 87c6033c-9ff6-405f-943e-2deb73f278b7 +Accept: application/json +Content-Type: application/json diff --git a/api-ref/source/database/v1/samples/db-delete-config-group-response-json-http.txt b/api-ref/source/database/v1/samples/db-delete-config-group-response-json-http.txt new file mode 100644 index 000000000..8321a3166 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-delete-config-group-response-json-http.txt @@ -0,0 +1,4 @@ +HTTP/1.1 202 Accepted +Content-Type: application/json +Content-Length: 0 +Date: Fri, 08 Apr 2016 23:15:51 GMT diff --git a/api-ref/source/database/v1/samples/db-delete-databases-request-json-http.txt b/api-ref/source/database/v1/samples/db-delete-databases-request-json-http.txt new file mode 100644 index 000000000..4140eae49 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-delete-databases-request-json-http.txt @@ -0,0 +1,8 @@ +DELETE /v1.0/1234/instances/692d8418-7a8f-47f1-8060-59846c6e024f/databases/exampledb HTTP/1.1 +User-Agent: python-example-client +Host: openstack.example.com +X-Auth-Token: 87c6033c-9ff6-405f-943e-2deb73f278b7 +Accept: application/json +Content-Type: application/json + + diff --git a/api-ref/source/database/v1/samples/db-delete-databases-response-json-http.txt b/api-ref/source/database/v1/samples/db-delete-databases-response-json-http.txt new file mode 100644 index 000000000..6a83f7fcb --- /dev/null +++ b/api-ref/source/database/v1/samples/db-delete-databases-response-json-http.txt @@ -0,0 +1,4 @@ +HTTP/1.1 202 Accepted +Content-Type: application/json +Content-Length: 0 +Date: Wed, 27 Jun 2012 23:11:18 GMT diff --git a/api-ref/source/database/v1/samples/db-delete-instance-request-json-http.txt b/api-ref/source/database/v1/samples/db-delete-instance-request-json-http.txt new file mode 100644 index 000000000..f5bcbb793 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-delete-instance-request-json-http.txt @@ -0,0 +1,6 @@ +DELETE /v1.0/1234/instances/692d8418-7a8f-47f1-8060-59846c6e024f HTTP/1.1 +User-Agent: python-example-client +Host: openstack.example.com +X-Auth-Token: 87c6033c-9ff6-405f-943e-2deb73f278b7 +Accept: application/json +Content-Type: application/json \ No newline at end of file diff --git a/api-ref/source/database/v1/samples/db-delete-instance-response-json-http.txt b/api-ref/source/database/v1/samples/db-delete-instance-response-json-http.txt new file mode 100644 index 000000000..456166082 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-delete-instance-response-json-http.txt @@ -0,0 +1,4 @@ +HTTP/1.1 202 Accepted +Content-Type: application/json +Content-Length: 0 +Date: Wed, 27 Jun 2012 23:15:51 GMT \ No newline at end of file diff --git a/api-ref/source/database/v1/samples/db-delete-root-request-json-http.txt b/api-ref/source/database/v1/samples/db-delete-root-request-json-http.txt new file mode 100644 index 000000000..ab9ce8e2f --- /dev/null +++ b/api-ref/source/database/v1/samples/db-delete-root-request-json-http.txt @@ -0,0 +1,7 @@ +DELETE /v1.0/1234/instances/692d8418-7a8f-47f1-8060-59846c6e024f/root HTTP/1.1 +User-Agent: python-example-client +Host: openstack.example.com +X-Auth-Token: 87c6033c-9ff6-405f-943e-2deb73f278b7 +Accept: application/json +Content-Type: application/json + diff --git a/api-ref/source/database/v1/samples/db-delete-root-response-json-http.txt b/api-ref/source/database/v1/samples/db-delete-root-response-json-http.txt new file mode 100644 index 000000000..ca90ef72d --- /dev/null +++ b/api-ref/source/database/v1/samples/db-delete-root-response-json-http.txt @@ -0,0 +1,5 @@ +HTTP/1.1 202 Accepted +Content-Type: application/json +Content-Length: 0 +Date: Wed, 27 Jun 2012 23:11:18 GMT + diff --git a/api-ref/source/database/v1/samples/db-delete-users-request-json-http.txt b/api-ref/source/database/v1/samples/db-delete-users-request-json-http.txt new file mode 100644 index 000000000..ed0f185b8 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-delete-users-request-json-http.txt @@ -0,0 +1,8 @@ +DELETE /v1.0/1234/instances/692d8418-7a8f-47f1-8060-59846c6e024f/users/testuser HTTP/1.1 +User-Agent: python-example-client +Host: openstack.example.com +X-Auth-Token: 87c6033c-9ff6-405f-943e-2deb73f278b7 +Accept: application/json +Content-Type: application/json + + diff --git a/api-ref/source/database/v1/samples/db-delete-users-response-json-http.txt b/api-ref/source/database/v1/samples/db-delete-users-response-json-http.txt new file mode 100644 index 000000000..e5f311463 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-delete-users-response-json-http.txt @@ -0,0 +1,4 @@ +HTTP/1.1 202 Accepted +Content-Type: application/json +Content-Length: 0 +Date: Wed, 27 Jun 2012 23:11:19 GMT diff --git a/api-ref/source/database/v1/samples/db-detach-config-grp-request-json-http.txt b/api-ref/source/database/v1/samples/db-detach-config-grp-request-json-http.txt new file mode 100644 index 000000000..478e04939 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-detach-config-grp-request-json-http.txt @@ -0,0 +1,7 @@ +PUT /v1.0/1234/instances/4c93c73b-d6d0-47d7-b8c6-b699d19d7de9 HTTP/1.1 +User-Agent: python-example-client +Host: openstack.example.com +X-Auth-Token: 87c6033c-9ff6-405f-943e-2deb73f278b7 +Accept: application/json +Content-Type: application/json + diff --git a/api-ref/source/database/v1/samples/db-detach-config-grp-request.json b/api-ref/source/database/v1/samples/db-detach-config-grp-request.json new file mode 100644 index 000000000..24b79afa2 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-detach-config-grp-request.json @@ -0,0 +1,3 @@ +{ + "instance": {} +} diff --git a/api-ref/source/database/v1/samples/db-detach-config-grp-response-json-http.txt b/api-ref/source/database/v1/samples/db-detach-config-grp-response-json-http.txt new file mode 100644 index 000000000..c7fabb46f --- /dev/null +++ b/api-ref/source/database/v1/samples/db-detach-config-grp-response-json-http.txt @@ -0,0 +1,5 @@ +HTTP/1.1 202 OK +Content-Type: application/json +Content-Length: 0 +Date: Mon, 13 Jul 2015 19:53:04 GMT + diff --git a/api-ref/source/database/v1/samples/db-detach-replica-request-json-http.txt b/api-ref/source/database/v1/samples/db-detach-replica-request-json-http.txt new file mode 100644 index 000000000..cea1a9078 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-detach-replica-request-json-http.txt @@ -0,0 +1,7 @@ +PATCH /v1.0/1234/instances/4c93c73b-d6d0-47d7-b8c6-b699d19d7de9 HTTP/1.1 +User-Agent: python-example-client +Host: openstack.example.com +X-Auth-Token: 87c6033c-9ff6-405f-943e-2deb73f278b7 +Accept: application/json +Content-Type: application/json + diff --git a/api-ref/source/database/v1/samples/db-detach-replica-request.json b/api-ref/source/database/v1/samples/db-detach-replica-request.json new file mode 100644 index 000000000..f61219c8a --- /dev/null +++ b/api-ref/source/database/v1/samples/db-detach-replica-request.json @@ -0,0 +1,6 @@ +{ + "instance": { + "replica_of": null, + "slave_of": null + } +} diff --git a/api-ref/source/database/v1/samples/db-detach-replica-response-json-http.txt b/api-ref/source/database/v1/samples/db-detach-replica-response-json-http.txt new file mode 100644 index 000000000..c7fabb46f --- /dev/null +++ b/api-ref/source/database/v1/samples/db-detach-replica-response-json-http.txt @@ -0,0 +1,5 @@ +HTTP/1.1 202 OK +Content-Type: application/json +Content-Length: 0 +Date: Mon, 13 Jul 2015 19:53:04 GMT + diff --git a/api-ref/source/database/v1/samples/db-enable-root-user-request-json-http.txt b/api-ref/source/database/v1/samples/db-enable-root-user-request-json-http.txt new file mode 100644 index 000000000..7f081b6b1 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-enable-root-user-request-json-http.txt @@ -0,0 +1,8 @@ +POST /v1.0/1234/instances/692d8418-7a8f-47f1-8060-59846c6e024f/root HTTP/1.1 +User-Agent: python-example-client +Host: openstack.example.com +X-Auth-Token: 87c6033c-9ff6-405f-943e-2deb73f278b7 +Accept: application/json +Content-Type: application/json + + diff --git a/api-ref/source/database/v1/samples/db-enable-root-user-response-json-http.txt b/api-ref/source/database/v1/samples/db-enable-root-user-response-json-http.txt new file mode 100644 index 000000000..ef590b61c --- /dev/null +++ b/api-ref/source/database/v1/samples/db-enable-root-user-response-json-http.txt @@ -0,0 +1,4 @@ +HTTP/1.1 200 OK +Content-Type: application/json +Content-Length: 78 +Date: Wed, 25 Jan 2012 21:58:11 GMT \ No newline at end of file diff --git a/api-ref/source/database/v1/samples/db-enable-root-user-response.json b/api-ref/source/database/v1/samples/db-enable-root-user-response.json new file mode 100644 index 000000000..37e24fdfe --- /dev/null +++ b/api-ref/source/database/v1/samples/db-enable-root-user-response.json @@ -0,0 +1,6 @@ +{ + "user": { + "name": "root", + "password": "secretsecret" + } +} diff --git a/api-ref/source/database/v1/samples/db-flavors-by-id-request-json-http.txt b/api-ref/source/database/v1/samples/db-flavors-by-id-request-json-http.txt new file mode 100644 index 000000000..972cb3c47 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-flavors-by-id-request-json-http.txt @@ -0,0 +1,8 @@ +GET /v1.0/1234/flavors/1 HTTP/1.1 +User-Agent: python-example-client +Host: openstack.example.com +X-Auth-Token: 87c6033c-9ff6-405f-943e-2deb73f278b7 +Accept: application/json +Content-Type: application/json + + diff --git a/api-ref/source/database/v1/samples/db-flavors-by-id-response-json-http.txt b/api-ref/source/database/v1/samples/db-flavors-by-id-response-json-http.txt new file mode 100644 index 000000000..409cdbfa2 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-flavors-by-id-response-json-http.txt @@ -0,0 +1,4 @@ +HTTP/1.1 200 OK +Content-Type: application/json +Content-Length: 209 +Date: Wed, 25 Jan 2012 21:53:05 GMT \ No newline at end of file diff --git a/api-ref/source/database/v1/samples/db-flavors-by-id-response.json b/api-ref/source/database/v1/samples/db-flavors-by-id-response.json new file mode 100644 index 000000000..81654eeb0 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-flavors-by-id-response.json @@ -0,0 +1,17 @@ +{ + "flavor": { + "id": 1, + "links": [ + { + "href": "https://openstack.example.com/v1.0/1234/flavors/1", + "rel": "self" + }, + { + "href": "https://openstack.example.com/flavors/1", + "rel": "bookmark" + } + ], + "name": "m1.tiny", + "ram": 512 + } +} diff --git a/api-ref/source/database/v1/samples/db-flavors-request-json-http.txt b/api-ref/source/database/v1/samples/db-flavors-request-json-http.txt new file mode 100644 index 000000000..2c0f90975 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-flavors-request-json-http.txt @@ -0,0 +1,8 @@ +GET /v1.0/1234/flavors HTTP/1.1 +User-Agent: python-example-client +Host: openstack.example.com +X-Auth-Token: 87c6033c-9ff6-405f-943e-2deb73f278b7 +Accept: application/json +Content-Type: application/json + + diff --git a/api-ref/source/database/v1/samples/db-flavors-response-json-http.txt b/api-ref/source/database/v1/samples/db-flavors-response-json-http.txt new file mode 100644 index 000000000..0a4f0fe0b --- /dev/null +++ b/api-ref/source/database/v1/samples/db-flavors-response-json-http.txt @@ -0,0 +1,4 @@ +HTTP/1.1 200 OK +Content-Type: application/json +Content-Length: 1768 +Date: Tue, 19 Jun 2012 19:52:45 GMT \ No newline at end of file diff --git a/api-ref/source/database/v1/samples/db-flavors-response.json b/api-ref/source/database/v1/samples/db-flavors-response.json new file mode 100644 index 000000000..496009659 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-flavors-response.json @@ -0,0 +1,64 @@ +{ + "flavors": [ + { + "id": 1, + "links": [ + { + "href": "https://openstack.example.com/v1.0/1234/flavors/1", + "rel": "self" + }, + { + "href": "https://openstack.example.com/flavors/1", + "rel": "bookmark" + } + ], + "name": "m1.tiny", + "ram": 512 + }, + { + "id": 2, + "links": [ + { + "href": "https://openstack.example.com/v1.0/1234/flavors/2", + "rel": "self" + }, + { + "href": "https://openstack.example.com/flavors/2", + "rel": "bookmark" + } + ], + "name": "m1.small", + "ram": 1024 + }, + { + "id": 3, + "links": [ + { + "href": "https://openstack.example.com/v1.0/1234/flavors/3", + "rel": "self" + }, + { + "href": "https://openstack.example.com/flavors/3", + "rel": "bookmark" + } + ], + "name": "m1.medium", + "ram": 2048 + }, + { + "id": 4, + "links": [ + { + "href": "https://openstack.example.com/v1.0/1234/flavors/4", + "rel": "self" + }, + { + "href": "https://openstack.example.com/flavors/4", + "rel": "bookmark" + } + ], + "name": "m1.large", + "ram": 4096 + } + ] +} diff --git a/api-ref/source/database/v1/samples/db-instance-eject-replica-request-json-http.txt b/api-ref/source/database/v1/samples/db-instance-eject-replica-request-json-http.txt new file mode 100644 index 000000000..cf3652d10 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-instance-eject-replica-request-json-http.txt @@ -0,0 +1,6 @@ +POST /v1.0/1234/instances/13d940c4-70bb-4ff4-8866-6ee9ab5e5cae/action HTTP/1.1 +User-Agent: python-example-client +Host: openstack.example.com +X-Auth-Token: 87c6033c-9ff6-405f-943e-2deb73f278b7 +Accept: application/json +Content-Type: application/json \ No newline at end of file diff --git a/api-ref/source/database/v1/samples/db-instance-eject-replica-request.json b/api-ref/source/database/v1/samples/db-instance-eject-replica-request.json new file mode 100644 index 000000000..e0d425ad6 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-instance-eject-replica-request.json @@ -0,0 +1,3 @@ +{ + "eject_replica_source": {} +} diff --git a/api-ref/source/database/v1/samples/db-instance-eject-replica-response-json-http.txt b/api-ref/source/database/v1/samples/db-instance-eject-replica-response-json-http.txt new file mode 100644 index 000000000..dd6883b3a --- /dev/null +++ b/api-ref/source/database/v1/samples/db-instance-eject-replica-response-json-http.txt @@ -0,0 +1,4 @@ +HTTP/1.1 202 Accepted +Content-Type: application/json +Content-Length: 0 +Date: Fri, 08 Apr 2016 23:11:19 GMT diff --git a/api-ref/source/database/v1/samples/db-instance-promote-replica-request-json-http.txt b/api-ref/source/database/v1/samples/db-instance-promote-replica-request-json-http.txt new file mode 100644 index 000000000..cf3652d10 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-instance-promote-replica-request-json-http.txt @@ -0,0 +1,6 @@ +POST /v1.0/1234/instances/13d940c4-70bb-4ff4-8866-6ee9ab5e5cae/action HTTP/1.1 +User-Agent: python-example-client +Host: openstack.example.com +X-Auth-Token: 87c6033c-9ff6-405f-943e-2deb73f278b7 +Accept: application/json +Content-Type: application/json \ No newline at end of file diff --git a/api-ref/source/database/v1/samples/db-instance-promote-replica-request.json b/api-ref/source/database/v1/samples/db-instance-promote-replica-request.json new file mode 100644 index 000000000..f2803b792 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-instance-promote-replica-request.json @@ -0,0 +1,3 @@ +{ + "promote_to_replica_source": {} +} diff --git a/api-ref/source/database/v1/samples/db-instance-promote-replica-response-json-http.txt b/api-ref/source/database/v1/samples/db-instance-promote-replica-response-json-http.txt new file mode 100644 index 000000000..dd6883b3a --- /dev/null +++ b/api-ref/source/database/v1/samples/db-instance-promote-replica-response-json-http.txt @@ -0,0 +1,4 @@ +HTTP/1.1 202 Accepted +Content-Type: application/json +Content-Length: 0 +Date: Fri, 08 Apr 2016 23:11:19 GMT diff --git a/api-ref/source/database/v1/samples/db-instance-resize-flavor-request.json b/api-ref/source/database/v1/samples/db-instance-resize-flavor-request.json new file mode 100644 index 000000000..499b67fab --- /dev/null +++ b/api-ref/source/database/v1/samples/db-instance-resize-flavor-request.json @@ -0,0 +1,5 @@ +{ + "resize": { + "flavorRef": "https://openstack.example.com/v1.0/1234/flavors/3" + } +} diff --git a/api-ref/source/database/v1/samples/db-instance-resize-flavor-response-json-http.txt b/api-ref/source/database/v1/samples/db-instance-resize-flavor-response-json-http.txt new file mode 100644 index 000000000..fe14f4dd4 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-instance-resize-flavor-response-json-http.txt @@ -0,0 +1,4 @@ +HTTP/1.1 202 Accepted +Content-Type: application/json +Content-Length: 0 +Date: Wed, 27 Jun 2012 23:14:20 GMT diff --git a/api-ref/source/database/v1/samples/db-instance-resize-instance-request-json-http.txt b/api-ref/source/database/v1/samples/db-instance-resize-instance-request-json-http.txt new file mode 100644 index 000000000..252ec5545 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-instance-resize-instance-request-json-http.txt @@ -0,0 +1,6 @@ +POST /v1.0/1234/instances/23a3d4fb-3731-497b-afd4-bf25bde2b5fc/action HTTP/1.1 +User-Agent: python-example-client +Host: openstack.example.com +X-Auth-Token: 2eeb3252-0164-40f5-8fb7-85df5faa2698 +Accept: application/json +Content-Type: application/json \ No newline at end of file diff --git a/api-ref/source/database/v1/samples/db-instance-resize-instance-request.json b/api-ref/source/database/v1/samples/db-instance-resize-instance-request.json new file mode 100644 index 000000000..0e91d91fe --- /dev/null +++ b/api-ref/source/database/v1/samples/db-instance-resize-instance-request.json @@ -0,0 +1,5 @@ +{ + "resize": { + "flavorRef": "https://openstack.example.com/v1.0/1234/flavors/2" + } +} diff --git a/api-ref/source/database/v1/samples/db-instance-resize-instance-response-json-http.txt b/api-ref/source/database/v1/samples/db-instance-resize-instance-response-json-http.txt new file mode 100644 index 000000000..48a2e91a0 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-instance-resize-instance-response-json-http.txt @@ -0,0 +1,6 @@ +HTTP/1.1 202 Accepted +Content-Type: text/plain; charset=UTF-8 +Content-Length: 58 +Date: Mon, 06 Feb 2012 21:28:10 GMT + + diff --git a/api-ref/source/database/v1/samples/db-instance-resize-volume-request-json-http.txt b/api-ref/source/database/v1/samples/db-instance-resize-volume-request-json-http.txt new file mode 100644 index 000000000..252ec5545 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-instance-resize-volume-request-json-http.txt @@ -0,0 +1,6 @@ +POST /v1.0/1234/instances/23a3d4fb-3731-497b-afd4-bf25bde2b5fc/action HTTP/1.1 +User-Agent: python-example-client +Host: openstack.example.com +X-Auth-Token: 2eeb3252-0164-40f5-8fb7-85df5faa2698 +Accept: application/json +Content-Type: application/json \ No newline at end of file diff --git a/api-ref/source/database/v1/samples/db-instance-resize-volume-request.json b/api-ref/source/database/v1/samples/db-instance-resize-volume-request.json new file mode 100644 index 000000000..949bbba8b --- /dev/null +++ b/api-ref/source/database/v1/samples/db-instance-resize-volume-request.json @@ -0,0 +1,7 @@ +{ + "resize": { + "volume": { + "size": 4 + } + } +} diff --git a/api-ref/source/database/v1/samples/db-instance-resize-volume-response-json-http.txt b/api-ref/source/database/v1/samples/db-instance-resize-volume-response-json-http.txt new file mode 100644 index 000000000..319bbadbb --- /dev/null +++ b/api-ref/source/database/v1/samples/db-instance-resize-volume-response-json-http.txt @@ -0,0 +1,4 @@ +HTTP/1.1 202 Accepted +Content-Type: application/json +Content-Length: 0 +Date: Wed, 27 Jun 2012 23:12:20 GMT diff --git a/api-ref/source/database/v1/samples/db-instance-restart-request-json-http.txt b/api-ref/source/database/v1/samples/db-instance-restart-request-json-http.txt new file mode 100644 index 000000000..cf3652d10 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-instance-restart-request-json-http.txt @@ -0,0 +1,6 @@ +POST /v1.0/1234/instances/13d940c4-70bb-4ff4-8866-6ee9ab5e5cae/action HTTP/1.1 +User-Agent: python-example-client +Host: openstack.example.com +X-Auth-Token: 87c6033c-9ff6-405f-943e-2deb73f278b7 +Accept: application/json +Content-Type: application/json \ No newline at end of file diff --git a/api-ref/source/database/v1/samples/db-instance-restart-request.json b/api-ref/source/database/v1/samples/db-instance-restart-request.json new file mode 100644 index 000000000..1c92835cd --- /dev/null +++ b/api-ref/source/database/v1/samples/db-instance-restart-request.json @@ -0,0 +1,3 @@ +{ + "restart": {} +} diff --git a/api-ref/source/database/v1/samples/db-instance-restart-response-json-http.txt b/api-ref/source/database/v1/samples/db-instance-restart-response-json-http.txt new file mode 100644 index 000000000..e5f311463 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-instance-restart-response-json-http.txt @@ -0,0 +1,4 @@ +HTTP/1.1 202 Accepted +Content-Type: application/json +Content-Length: 0 +Date: Wed, 27 Jun 2012 23:11:19 GMT diff --git a/api-ref/source/database/v1/samples/db-instance-status-detail-request-json-http.txt b/api-ref/source/database/v1/samples/db-instance-status-detail-request-json-http.txt new file mode 100644 index 000000000..5ac19998c --- /dev/null +++ b/api-ref/source/database/v1/samples/db-instance-status-detail-request-json-http.txt @@ -0,0 +1,6 @@ +GET /v1.0/1234/instances/692d8418-7a8f-47f1-8060-59846c6e024f HTTP/1.1 +User-Agent: python-example-client +Host: openstack.example.com +X-Auth-Token: 87c6033c-9ff6-405f-943e-2deb73f278b7 +Accept: application/json +Content-Type: application/json \ No newline at end of file diff --git a/api-ref/source/database/v1/samples/db-instance-status-detail-response-json-http.txt b/api-ref/source/database/v1/samples/db-instance-status-detail-response-json-http.txt new file mode 100644 index 000000000..8a72a3a46 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-instance-status-detail-response-json-http.txt @@ -0,0 +1,4 @@ +HTTP/1.1 200 OK +Content-Type: application/json +Content-Length: 685 +Date: Wed, 28 Mar 2012 21:37:29 GMT \ No newline at end of file diff --git a/api-ref/source/database/v1/samples/db-instance-status-detail-response.json b/api-ref/source/database/v1/samples/db-instance-status-detail-response.json new file mode 100644 index 000000000..0bb0a95c2 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-instance-status-detail-response.json @@ -0,0 +1,37 @@ +{ + "instance": { + "created": "2012-03-28T21:31:02Z", + "flavor": { + "id": "1", + "links": [ + { + "href": "https://openstack.example.com/v1.0/1234/flavors/1", + "rel": "self" + }, + { + "href": "https://openstack.example.com/flavors/1", + "rel": "bookmark" + } + ] + }, + "hostname": "e09ad9a3f73309469cf1f43d11e79549caf9acf2.rackspaceclouddb.com", + "id": "2450c73f-7805-4afe-a42c-4094ab42666b", + "links": [ + { + "href": "https://openstack.example.com/v1.0/1234/instances/2450c73f-7805-4afe-a42c-4094ab42666b", + "rel": "self" + }, + { + "href": "https://openstack.example.com/instances/2450c73f-7805-4afe-a42c-4094ab42666b", + "rel": "bookmark" + } + ], + "name": "xml_rack_instance", + "status": "ACTIVE", + "updated": "2012-03-28T21:34:25Z", + "volume": { + "size": 2, + "used": 0.124542236328125 + } + } +} diff --git a/api-ref/source/database/v1/samples/db-instances-index-request-json-http.txt b/api-ref/source/database/v1/samples/db-instances-index-request-json-http.txt new file mode 100644 index 000000000..820debcf1 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-instances-index-request-json-http.txt @@ -0,0 +1,6 @@ +GET /v1.0/1234/instances HTTP/1.1 +User-Agent: python-example-client +Host: openstack.example.com +X-Auth-Token: 87c6033c-9ff6-405f-943e-2deb73f278b7 +Accept: application/json +Content-Type: application/json \ No newline at end of file diff --git a/api-ref/source/database/v1/samples/db-instances-index-response-json-http.txt b/api-ref/source/database/v1/samples/db-instances-index-response-json-http.txt new file mode 100644 index 000000000..52d15a89f --- /dev/null +++ b/api-ref/source/database/v1/samples/db-instances-index-response-json-http.txt @@ -0,0 +1,4 @@ +HTTP/1.1 200 OK +Content-Type: application/json +Content-Length: 1150 +Date: Tue, 19 Jun 2012 19:53:04 GMT \ No newline at end of file diff --git a/api-ref/source/database/v1/samples/db-instances-index-response.json b/api-ref/source/database/v1/samples/db-instances-index-response.json new file mode 100644 index 000000000..e12808bf0 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-instances-index-response.json @@ -0,0 +1,66 @@ +{ + "instances": [ + { + "flavor": { + "id": "1", + "links": [ + { + "href": "https://openstack.example.com/v1.0/1234/flavors/1", + "rel": "self" + }, + { + "href": "https://openstack.example.com/flavors/1", + "rel": "bookmark" + } + ] + }, + "id": "28d1b8f3-172a-4f6d-983d-36021508444a", + "links": [ + { + "href": "https://openstack.example.com/v1.0/1234/instances/28d1b8f3-172a-4f6d-983d-36021508444a", + "rel": "self" + }, + { + "href": "https://openstack.example.com/instances/28d1b8f3-172a-4f6d-983d-36021508444a", + "rel": "bookmark" + } + ], + "name": "json_rack_instance", + "status": "ACTIVE", + "volume": { + "size": 2 + } + }, + { + "flavor": { + "id": "1", + "links": [ + { + "href": "https://openstack.example.com/v1.0/1234/flavors/1", + "rel": "self" + }, + { + "href": "https://openstack.example.com/flavors/1", + "rel": "bookmark" + } + ] + }, + "id": "8fb081af-f237-44f5-80cc-b46be1840ca9", + "links": [ + { + "href": "https://openstack.example.com/v1.0/1234/instances/8fb081af-f237-44f5-80cc-b46be1840ca9", + "rel": "self" + }, + { + "href": "https://openstack.example.com/instances/8fb081af-f237-44f5-80cc-b46be1840ca9", + "rel": "bookmark" + } + ], + "name": "xml_rack_instance", + "status": "ACTIVE", + "volume": { + "size": 2 + } + } + ] +} diff --git a/api-ref/source/database/v1/samples/db-list-cfg-defaults-request-json-http.txt b/api-ref/source/database/v1/samples/db-list-cfg-defaults-request-json-http.txt new file mode 100644 index 000000000..bb84c098d --- /dev/null +++ b/api-ref/source/database/v1/samples/db-list-cfg-defaults-request-json-http.txt @@ -0,0 +1,7 @@ +GET /v1.0/1234/instances/instance_1 HTTP/1.1 +User-Agent: python-example-client +Host: openstack.example.com +X-Auth-Token: 87c6033c-9ff6-405f-943e-2deb73f278b7 +Accept: application/json +Content-Type: application/json + diff --git a/api-ref/source/database/v1/samples/db-list-cfg-defaults-response-json-http.txt b/api-ref/source/database/v1/samples/db-list-cfg-defaults-response-json-http.txt new file mode 100644 index 000000000..dd38b48f7 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-list-cfg-defaults-response-json-http.txt @@ -0,0 +1,5 @@ +HTTP/1.1 200 OK +Content-Type: application/json +Content-Length: 1559 +Date: Wed, 08 Jul 2015 19:53:04 GMT + diff --git a/api-ref/source/database/v1/samples/db-list-cfg-defaults-response.json b/api-ref/source/database/v1/samples/db-list-cfg-defaults-response.json new file mode 100644 index 000000000..81a9eb745 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-list-cfg-defaults-response.json @@ -0,0 +1,43 @@ +{ + "instance": { + "configuration": { + "tmp_table_size": "16M", + "innodb_log_files_in_group": "2", + "skip-external-locking": "1", + "read_rnd_buffer_size": "512 K", + "max_user_connections": "100", + "max_heap_table_size": "16M", + "port": "3306", + "tmpdir": "/var/tmp", + "pid_file": "/var/run/mysqld/mysqld.pid", + "myisam-recover ": "BACKUP", + "server_id": "334596", + "innodb_buffer_pool_size": "150M", + "basedir": "/usr", + "max_allowed_packet": "1024K", + "datadir": "/var/lib/mysql/data", + "inno db_log_buffer_size": "25M", + "max_connections": "100", + "table_open_cache": "256", + "connect_timeout": "15", + "query_cache_type": "1", + "local-infile": "0", + "innodb_ log_file_size": "50M", + "thread_stack": "192K", + "query_cache_limit": "1M", + "wait_timeout": "120", + "user": "mysql", + "thread_cache_size": "4", + "query_cache_size": "8M", + "innodb_data_file_path": "ibdata1:10M:autoextend", + "default_storage_engine": "innodb", + "sort_buffer_size": "1M", + "table_definition_cache": "256", + "read_bu ffer_size": "512K", + "open_files_limit": "512", + "innodb_file_per_table": "1", + "key_buffer_size": "50M", + "join_buffer_size": "1M" + } + } +} diff --git a/api-ref/source/database/v1/samples/db-list-cfg-groups-request-json-http.txt b/api-ref/source/database/v1/samples/db-list-cfg-groups-request-json-http.txt new file mode 100644 index 000000000..f7812e9e6 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-list-cfg-groups-request-json-http.txt @@ -0,0 +1,7 @@ +GET /v1.0/1234/configurations HTTP/1.1 +User-Agent: python-example-client +Host: openstack.example.com +X-Auth-Token: 87c6033c-9ff6-405f-943e-2deb73f278b7 +Accept: application/json +Content-Type: application/json + diff --git a/api-ref/source/database/v1/samples/db-list-cfg-groups-response-json-http.txt b/api-ref/source/database/v1/samples/db-list-cfg-groups-response-json-http.txt new file mode 100644 index 000000000..22bba6af0 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-list-cfg-groups-response-json-http.txt @@ -0,0 +1,5 @@ +HTTP/1.1 200 OK +Content-Type: application/json +Content-Length: 426 +Date: Tue, 07 Jul 2012 19:53:04 GMT + diff --git a/api-ref/source/database/v1/samples/db-list-cfg-groups-response.json b/api-ref/source/database/v1/samples/db-list-cfg-groups-response.json new file mode 100644 index 000000000..5bdaa990d --- /dev/null +++ b/api-ref/source/database/v1/samples/db-list-cfg-groups-response.json @@ -0,0 +1,14 @@ +{ + "configurations": [ + { + "datastore_name": "mysql", + "updated": "2015-07-01T16:38:27", + "name": "group1", + "created": "2015-07-01T16:38:27", + "datastore_version_name": "5.6", + "id": "2aa51628-5c42-4086-8682-137caffd2ba6", + "datastore_version_id": "2dc7faa0-efff-4c2b-8cff-bcd949c518a5", + "description": null + } + ] +} diff --git a/api-ref/source/database/v1/samples/db-list-databases-request-json-http.txt b/api-ref/source/database/v1/samples/db-list-databases-request-json-http.txt new file mode 100644 index 000000000..0a43a2f8d --- /dev/null +++ b/api-ref/source/database/v1/samples/db-list-databases-request-json-http.txt @@ -0,0 +1,6 @@ +GET /v1.0/1234/instances/692d8418-7a8f-47f1-8060-59846c6e024f/databases HTTP/1.1 +User-Agent: python-example-client +Host: openstack.example.com +X-Auth-Token: 87c6033c-9ff6-405f-943e-2deb73f278b7 +Accept: application/json +Content-Type: application/json diff --git a/api-ref/source/database/v1/samples/db-list-databases-response-json-http.txt b/api-ref/source/database/v1/samples/db-list-databases-response-json-http.txt new file mode 100644 index 000000000..485229ebf --- /dev/null +++ b/api-ref/source/database/v1/samples/db-list-databases-response-json-http.txt @@ -0,0 +1,4 @@ +HTTP/1.1 200 OK +Content-Type: application/json +Content-Length: 136 +Date: Wed, 25 Jan 2012 21:58:01 GMT diff --git a/api-ref/source/database/v1/samples/db-list-databases-response.json b/api-ref/source/database/v1/samples/db-list-databases-response.json new file mode 100644 index 000000000..2fa6c5b7f --- /dev/null +++ b/api-ref/source/database/v1/samples/db-list-databases-response.json @@ -0,0 +1,19 @@ +{ + "databases": [ + { + "name": "anotherexampledb" + }, + { + "name": "exampledb" + }, + { + "name": "nextround" + }, + { + "name": "sampledb" + }, + { + "name": "testingdb" + } + ] +} diff --git a/api-ref/source/database/v1/samples/db-list-datastore-versions-request-json-http.txt b/api-ref/source/database/v1/samples/db-list-datastore-versions-request-json-http.txt new file mode 100644 index 000000000..0763e5214 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-list-datastore-versions-request-json-http.txt @@ -0,0 +1,6 @@ +GET /v1.0/1234/datastores/mysql/versions HTTP/1.1 +User-Agent: python-example-client +Host: openstack.example.com +X-Auth-Token: 87c6033c-9ff6-405f-943e-2deb73f278b7 +Accept: application/json +Content-Type: application/json diff --git a/api-ref/source/database/v1/samples/db-list-datastore-versions-response-json-http.txt b/api-ref/source/database/v1/samples/db-list-datastore-versions-response-json-http.txt new file mode 100644 index 000000000..519dfba19 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-list-datastore-versions-response-json-http.txt @@ -0,0 +1,4 @@ +HTTP/1.1 200 OK +Content-Type: application/json +Content-Length: 580 +Date: Tue, 23 Jun 2015 21:58:13 GMT diff --git a/api-ref/source/database/v1/samples/db-list-datastore-versions.json b/api-ref/source/database/v1/samples/db-list-datastore-versions.json new file mode 100644 index 000000000..e80e70c0e --- /dev/null +++ b/api-ref/source/database/v1/samples/db-list-datastore-versions.json @@ -0,0 +1,18 @@ +{ + "name": "5.6", + "links": [ + { + "href": "https://10.240.28.38:8779/v1.0/27bee406abb5486e81ef3ff4382aabaf/datastores/versions/2dc7faa0-efff-4c2b-8cff-bcd949c518a5", + "rel": "self" + }, + { + "href": "https://10.240.28.38:8779/datastores/versions/2dc7faa0-efff-4c2b-8cff-bcd949c518a5", + "rel": "bookmark" + } + ], + "image": "b69fbd9e-b31d-46ff-8afb-cbf452f6f835", + "active": 1, + "datastore": "3a8968d8-e5f5-4452-83ca-f6c90b5de06a", + "packages": "mysql-server-5.6", + "id": "2dc7faa0-efff-4c2b-8cff-bcd949c518a5" +} diff --git a/api-ref/source/database/v1/samples/db-list-parameters-request-json-http.txt b/api-ref/source/database/v1/samples/db-list-parameters-request-json-http.txt new file mode 100644 index 000000000..8a07a796f --- /dev/null +++ b/api-ref/source/database/v1/samples/db-list-parameters-request-json-http.txt @@ -0,0 +1,6 @@ +GET /v1.0/1234/datastores/versions/692d8418-7a8f-47f1-8060-59846c6e024f/parameters HTTP/1.1 +User-Agent: python-example-client +Host: openstack.example.com +X-Auth-Token: 87c6033c-9ff6-405f-943e-2deb73f278b7 +Accept: application/json +Content-Type: application/json diff --git a/api-ref/source/database/v1/samples/db-list-parameters-response-json-http.txt b/api-ref/source/database/v1/samples/db-list-parameters-response-json-http.txt new file mode 100644 index 000000000..2f37db264 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-list-parameters-response-json-http.txt @@ -0,0 +1,4 @@ +HTTP/1.1 200 OK +Content-Type: application/json +Content-Length: 8454 +Date: Fri, 12 Jun 2015 21:58:13 GMT diff --git a/api-ref/source/database/v1/samples/db-list-parameters-response.json b/api-ref/source/database/v1/samples/db-list-parameters-response.json new file mode 100644 index 000000000..7f9153c8a --- /dev/null +++ b/api-ref/source/database/v1/samples/db-list-parameters-response.json @@ -0,0 +1,258 @@ +{ + "configuration-parameters": [ + { + "name": "myisam_sort_buffer_size", + "min": 4096, + "max": 18446744073709552000, + "restart_required": false, + "type": "integer", + "datastore_version_id": "f597f709-70ef-474d-ac18-2c6abd35a758" + }, + { + "name": "sync_binlog", + "min": 0, + "max": 4294967295, + "restart_required": false, + "type": "integer", + "datastore_version_id": "f597f709-70ef-474d-ac18-2c6abd35a758" + }, + { + "name": "max_allowed_packet", + "min": 1024, + "max": 1073741824, + "restart_required": false, + "type": "integer", + "datastore_version_id": "f597f709-70ef-474d-ac18-2c6abd35a758" + }, + { + "type": "string", + "name": "character_set_connection", + "datastore_version_id": "f597f709-70ef-474d-ac18-2c6abd35a758", + "restart_required": false + }, + { + "name": "autocommit", + "min": 0, + "max": 1, + "restart_required": false, + "type": "integer", + "datastore_version_id": "f597f709-70ef-474d-ac18-2c6abd35a758" + }, + { + "type": "string", + "name": "character_set_client", + "datastore_version_id": "f597f709-70ef474d-ac18-2c6abd35a758", + "restart_required": false + }, + { + "name": "join_buffer_size", + "min": 128, + "max": 18446744073709548000, + "restart_required": false, + "type": "integer", + "datastore_version_id": "f597f709-70ef-474d-ac18-2c6abd35a758" + }, + { + "name": "local_infile", + "min": 0, + "max": 1, + "restart_required": false, + "type": "integer", + "datastore_version_id": "f597f709-70ef-474d-ac18-2c6abd35a758" + }, + { + "name": "auto_increment_offset", + "min": 1, + "max": 65535, + "restart_required": false, + "type": "integer", + "datastore_version_id": "f597f709-70ef-474d-ac18-2c6abd35a758" + }, + { + "name": "max_connections", + "min": 1, + "max": 100000, + "restart_required": false, + "type": "integer", + "datastore_version_id": "f597f709-70ef-474d-ac18-2c6abd35a758" + }, + { + "name": "bulk_insert_buffer_size", + "min": 0, + "max": 18446744073709552000, + "restart_required": false, + "type": "integer", + "datastore_version_id": "f597f709-70ef474dac18-2c6abd35a758" + }, + { + "name": "sort_buffer_size", + "min": 32768, + "max": 18446744073709552000, + "restart_required": false, + "type": "integer", + "datastore_version_id": "f597f709-70ef-474d-ac18-2c6abd35a758" + }, + { + "name": "innodb_log_buffer_size", + "min": 262144, + "max": 4294967295, + "restart_required": true, + "type": "integer", + "datastore_version_id": "f597f709-70ef-474d-ac18-2c6abd35a758" + }, + { + "name": "innodb_file_per_table", + "min": 0, + "max": 1, + "restart_required": false, + "type": "integer", + "datastore_version_id": "f597f709-70ef-474d-ac18-2c6abd35a758" + }, + { + "type": "string", + "name": "character_set_server", + "datastore_version_id": "f597f709-70ef-474d-ac18-2c6abd35a758", + "restart_required": false + }, + { + "name": "innodb_buffer_pool_size", + "min": 5242880, + "max": 18446744073709552000, + "restart_required": true, + "type": "integer", + "datastore_version_id": "f597f709-70ef474dac18-2c6abd35a758" + }, + { + "type": "string", + "name": "collation_server", + "datastore_version_id": "f597f709-70ef-474d-ac18-2c6abd35a758", + "restart_required": false + }, + { + "type": "string", + "name": "character_set_filesystem", + "datastore_version_id": "f597f709-70ef-474d-ac18-2c6abd35a758", + "restart_required": false + }, + { + "type": "string", + "name": "collation_database", + "datastore_version_id": "f597f709-70ef474d-ac18-2c6abd35a758", + "restart_required": false + }, + { + "name": "innodb_flush_log_at_trx_commit", + "min": 0, + "max": 2, + "restart_required": false, + "type": "integer", + "datastore_version_id": "f597f709-70ef-474d-ac18-2c6abd35a758" + }, + { + "name": "interactive_timeout", + "min": 1, + "max": 65535, + "restart_required": false, + "type": "integer", + "datastore_version_id": "f597f709-70ef-474d-ac18-2c6abd35a758" + }, + { + "name": "max_user_connections", + "min": 0, + "max": 4294967295, + "restart_required": false, + "type": "integer", + "datastore_version_id": "f597f709-70ef-474d-ac18-2c6abd35a758" + }, + { + "name": "innodb_thread_concurrency", + "min": 0, + "max": 1000, + "restart_required": false, + "type": "integer", + "datastore_version_id": "f597f709-70ef-474d-ac18-2c6abd35a758" + }, + { + "name": "innodb_open_files", + "min": 10, + "max": 4294967295, + "restart_required": true, + "type": "integer", + "datastore_version_id": "f597f709-70ef-474d-ac18-2c6abd35a758" + }, + { + "name": "key_buffer_size", + "min": 8, + "max": 4294967295, + "restart_required": false, + "type": "integer", + "datastore_version_id": "f597f709-70ef474d-ac18-2c6abd35a758" + }, + { + "name": "connect_timeout", + "min": 2, + "max": 31536000, + "restart_required": false, + "type": "integer", + "datastore_version_id": "f597f709-70ef474d-ac18-2c6abd35a758" + }, + { + "type": "string", + "name": "collation_connection", + "datastore_version_id": "f597f709-70ef-474d-ac18-2c6abd35a758", + "restart_required": false + }, + { + "type": "string", + "name": "character_set_database", + "datastore_version_id": "f597f709-70ef-474d-ac18-2c6abd35a758", + "restart_required": false + }, + { + "name": "auto_increment_increment", + "min": 1, + "max": 65535, + "restart_required": false, + "type": "integer", + "datastore_version_id": "f597f709-70ef-474d-ac18-2c6abd35a758" + }, + { + "name": "max_connect_errors", + "min": 1, + "max": 18446744073709552000, + "restart_required": false, + "type": "integer", + "datastore_version_id": "f597f709-70ef-474d-ac18-2c6abd35a758" + }, + { + "type": "string", + "name": "character_set_results", + "datastore_version_id": "f597f709-70ef-474d-ac18-2c6abd35a758", + "restart_required": false + }, + { + "name": "expire_logs_days", + "min": 0, + "max": 99, + "restart_required": false, + "type": "integer", + "datastore_version_id": "f597f709-70ef-474d-ac18-2c6abd35a758" + }, + { + "name": "wait_timeout", + "min": 1, + "max": 31536000, + "restart_required": false, + "type": "integer", + "datastore_version_id": "f597f709-70ef474d-ac18-2c6abd35a758" + }, + { + "name": "server_id", + "min": 0, + "max": 4294967295, + "restart_required": false, + "type": "integer", + "datastore_version_id": "f597f709-70ef-474d-ac18-2c6abd35a758" + } + ] +} diff --git a/api-ref/source/database/v1/samples/db-list-users-request-json-http.txt b/api-ref/source/database/v1/samples/db-list-users-request-json-http.txt new file mode 100644 index 000000000..62ccf5166 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-list-users-request-json-http.txt @@ -0,0 +1,8 @@ +GET /v1.0/1234/instances/692d8418-7a8f-47f1-8060-59846c6e024f/users HTTP/1.1 +User-Agent: python-example-client +Host: openstack.example.com +X-Auth-Token: 87c6033c-9ff6-405f-943e-2deb73f278b7 +Accept: application/json +Content-Type: application/json + + diff --git a/api-ref/source/database/v1/samples/db-list-users-response-json-http.txt b/api-ref/source/database/v1/samples/db-list-users-response-json-http.txt new file mode 100644 index 000000000..f4d95ac12 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-list-users-response-json-http.txt @@ -0,0 +1,4 @@ +HTTP/1.1 200 OK +Content-Type: application/json +Content-Length: 152 +Date: Wed, 21 Mar 2012 17:46:46 GMT \ No newline at end of file diff --git a/api-ref/source/database/v1/samples/db-list-users-response.json b/api-ref/source/database/v1/samples/db-list-users-response.json new file mode 100644 index 000000000..597e4f51e --- /dev/null +++ b/api-ref/source/database/v1/samples/db-list-users-response.json @@ -0,0 +1,23 @@ +{ + "users": [ + { + "databases": [ + { + "name": "databaseA" + } + ], + "name": "dbuser3" + }, + { + "databases": [ + { + "name": "databaseB" + }, + { + "name": "databaseC" + } + ], + "name": "dbuser4" + } + ] +} diff --git a/api-ref/source/database/v1/samples/db-patch-config-grp-request-json-http.txt b/api-ref/source/database/v1/samples/db-patch-config-grp-request-json-http.txt new file mode 100644 index 000000000..3606caefb --- /dev/null +++ b/api-ref/source/database/v1/samples/db-patch-config-grp-request-json-http.txt @@ -0,0 +1,7 @@ +PATCH /v1.0/1234/configurations/5678 HTTP/1.1 +User-Agent: python-example-client +Host: openstack.example.com +X-Auth-Token: d6cafa5b-e0c7-4ab8-948e-7c95f2acd031 +Accept: application/json +Content-Type: application/json + diff --git a/api-ref/source/database/v1/samples/db-patch-config-grp-request.json b/api-ref/source/database/v1/samples/db-patch-config-grp-request.json new file mode 100644 index 000000000..bdb87bd48 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-patch-config-grp-request.json @@ -0,0 +1,7 @@ +{ + "configuration": { + "values": { + "connect_timeout": 17 + } + } +} diff --git a/api-ref/source/database/v1/samples/db-patch-config-grp-response-json-http.txt b/api-ref/source/database/v1/samples/db-patch-config-grp-response-json-http.txt new file mode 100644 index 000000000..244b32fb4 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-patch-config-grp-response-json-http.txt @@ -0,0 +1,5 @@ +HTTP/1.1 200 OK +Content-Type: application/json +Content-Length: 0 +Date: Mon, 6 Jul 2015 21:53:10 GMT + diff --git a/api-ref/source/database/v1/samples/db-show-parameter-details-request-json-http.txt b/api-ref/source/database/v1/samples/db-show-parameter-details-request-json-http.txt new file mode 100644 index 000000000..a5e30777b --- /dev/null +++ b/api-ref/source/database/v1/samples/db-show-parameter-details-request-json-http.txt @@ -0,0 +1,6 @@ +GET /v1.0/1234/datastores/versions/f8e67741-e767-4137-b394-3fb8a3fafd2f/parameters/connect_timeout HTTP/1.1 +User-Agent: python-example-client +Host: openstack.example.com +X-Auth-Token: 87c6033c-9ff6-405f-943e-2deb73f278b7 +Accept: application/json +Content-Type: application/json diff --git a/api-ref/source/database/v1/samples/db-show-parameter-details-response-json-http.txt b/api-ref/source/database/v1/samples/db-show-parameter-details-response-json-http.txt new file mode 100644 index 000000000..35d4ca06d --- /dev/null +++ b/api-ref/source/database/v1/samples/db-show-parameter-details-response-json-http.txt @@ -0,0 +1,4 @@ +HTTP/1.1 200 OK +Content-Type: application/json +Content-Length: 180 +Date: Tue, 16 Jun 2015 21:58:13 GMT diff --git a/api-ref/source/database/v1/samples/db-show-parameter-details.json b/api-ref/source/database/v1/samples/db-show-parameter-details.json new file mode 100644 index 000000000..6da77f15f --- /dev/null +++ b/api-ref/source/database/v1/samples/db-show-parameter-details.json @@ -0,0 +1,8 @@ +{ + "name": "connect_timeout", + "min": 2, + "max": 31536000, + "restart_required": false, + "type": "integer", + "datastore_version_id": "f8e67741-e767-4137-b394-3fb8a3fafd2f" +} diff --git a/api-ref/source/database/v1/samples/db-update-config-grp-request-json-http.txt b/api-ref/source/database/v1/samples/db-update-config-grp-request-json-http.txt new file mode 100644 index 000000000..c9549a2c6 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-update-config-grp-request-json-http.txt @@ -0,0 +1,7 @@ +PUT /v1.0/1234/configurations/5678 HTTP/1.1 +User-Agent: python-example-client +Host: openstack.example.com +X-Auth-Token: d6cafa5b-e0c7-4ab8-948e-7c95f2acd031 +Accept: application/json +Content-Type: application/json + diff --git a/api-ref/source/database/v1/samples/db-update-config-grp-request.json b/api-ref/source/database/v1/samples/db-update-config-grp-request.json new file mode 100644 index 000000000..f98de45d0 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-update-config-grp-request.json @@ -0,0 +1,9 @@ +{ + "configuration": { + "values": { + "connect_timeout": 18 + }, + "name": "new_name", + "description": "New description" + } +} diff --git a/api-ref/source/database/v1/samples/db-update-config-grp-response-json-http.txt b/api-ref/source/database/v1/samples/db-update-config-grp-response-json-http.txt new file mode 100644 index 000000000..13027ba4d --- /dev/null +++ b/api-ref/source/database/v1/samples/db-update-config-grp-response-json-http.txt @@ -0,0 +1,5 @@ +HTTP/1.1 202 OK +Content-Type: application/json +Content-Length: 0 +Date: Mon, 6 Jul 2015 21:53:10 GMT + diff --git a/api-ref/source/database/v1/samples/db-version-request-json-http.txt b/api-ref/source/database/v1/samples/db-version-request-json-http.txt new file mode 100644 index 000000000..9b7a3f54c --- /dev/null +++ b/api-ref/source/database/v1/samples/db-version-request-json-http.txt @@ -0,0 +1,6 @@ +GET /v1.0/ HTTP/1.1 +User-Agent: python-example-client +Host: openstack.example.com +X-Auth-Token: 87c6033c-9ff6-405f-943e-2deb73f278b7 +Accept: application/json +Content-Type: application/json \ No newline at end of file diff --git a/api-ref/source/database/v1/samples/db-version-response-json-http.txt b/api-ref/source/database/v1/samples/db-version-response-json-http.txt new file mode 100644 index 000000000..3b1ecdf31 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-version-response-json-http.txt @@ -0,0 +1,4 @@ +HTTP/1.1 200 OK +Content-Type: application/json +Content-Length: 158 +Date: Tue, 22 Apr 2014 19:02:58 GMT \ No newline at end of file diff --git a/api-ref/source/database/v1/samples/db-version-response.json b/api-ref/source/database/v1/samples/db-version-response.json new file mode 100644 index 000000000..efc11977a --- /dev/null +++ b/api-ref/source/database/v1/samples/db-version-response.json @@ -0,0 +1,15 @@ +{ + "versions": [ + { + "status": "CURRENT", + "updated": "2012-08-01T00:00:00Z", + "id": "v1.0", + "links": [ + { + "href": "http://23.253.228.211:8779/v1.0/", + "rel": "self" + } + ] + } + ] +} diff --git a/api-ref/source/database/v1/samples/db-versions-request-json-http.txt b/api-ref/source/database/v1/samples/db-versions-request-json-http.txt new file mode 100644 index 000000000..5a1eee968 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-versions-request-json-http.txt @@ -0,0 +1,6 @@ +GET / HTTP/1.1 +User-Agent: python-example-client +Host: openstack.example.com +X-Auth-Token: 87c6033c-9ff6-405f-943e-2deb73f278b7 +Accept: application/json +Content-Type: application/json \ No newline at end of file diff --git a/api-ref/source/database/v1/samples/db-versions-response-json-http.txt b/api-ref/source/database/v1/samples/db-versions-response-json-http.txt new file mode 100644 index 000000000..314c6835f --- /dev/null +++ b/api-ref/source/database/v1/samples/db-versions-response-json-http.txt @@ -0,0 +1,4 @@ +HTTP/1.1 200 OK +Content-Type: application/json +Content-Length: 153 +Date: Wed, 25 Jan 2012 21:53:04 GMT \ No newline at end of file diff --git a/api-ref/source/database/v1/samples/db-versions-response.json b/api-ref/source/database/v1/samples/db-versions-response.json new file mode 100644 index 000000000..d5d2b3546 --- /dev/null +++ b/api-ref/source/database/v1/samples/db-versions-response.json @@ -0,0 +1,15 @@ +{ + "versions": [ + { + "id": "v1.0", + "links": [ + { + "href": "https://openstack.example.com/v1.0/", + "rel": "self" + } + ], + "status": "CURRENT", + "updated": "2012-01-01T00:00:00Z" + } + ] +} diff --git a/api-ref/source/database/v1/user-management.inc b/api-ref/source/database/v1/user-management.inc new file mode 100644 index 000000000..28970bf65 --- /dev/null +++ b/api-ref/source/database/v1/user-management.inc @@ -0,0 +1,363 @@ +.. -*- rst -*- + +============= +Users (users) +============= + +Creates, lists all, and deletes users. + + +Enable root user +================ + +.. rest_method:: POST /v1.0/{accountId}/instances/{instanceId}/root + +Enables the root user for a database instance and returns the root password. + +This operation generates a root password for the root user and +enables the root user to log in from any host. + +Changes that you make as a root user can impact the database +instance and API operations in unpredictable and detrimental ways. +When you enable the root user, you accept the possibility that we +cannot support your database instance. We might not be able to +assist you if you change core MySQL settings. These changes can be, +but are not limited to, turning off bin logs, removing users that +we use to access your instance, and so on. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,422,503,500,501, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - instanceId: instanceId + - accountId: accountId + + + + +Response Example +---------------- + +.. literalinclude:: samples/db-enable-root-user-response.json + :language: javascript + + + + + + + + + + + + + + +Show root-enabled status for database instance +============================================== + +.. rest_method:: GET /v1.0/{accountId}/instances/{instanceId}/root + +Shows root-enabled status for a database instance. + +Returns ``true`` if root user is enabled for a database instance. +Otherwise, returns ``false``. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,422,503,500,501, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - instanceId: instanceId + - accountId: accountId + + + + +Response Example +---------------- + +.. literalinclude:: samples/db-check-root-user-response.json + :language: javascript + + + + + + + + + + + + + + +Disable root user +================= + +.. rest_method:: DELETE /v1.0/{accountId}/instances/{instanceId}/root + +Disables the root user. + +Error response codes:202,413,405,404,403,401,400,422,503,500,501, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - instanceId: instanceId + - accountId: accountId + + + + + + + + + + + + + + + + +Delete user +=========== + +.. rest_method:: DELETE /v1.0/{accountId}/instances/{instanceId}/users/{name} + +Deletes a user for a database instance. + +Do not use periods in user names. A bug in a Python library that +Rackspace uses that can cause incorrect user deletions to occur if +you use a period (.) in the user name. In this case, the bug in the +library truncates the user name to the portion from the beginning +up to the period. For example, for the ``my.userA`` user, the bug +truncates the user name to ``my``, and if the ``user`` exists, that +user is incorrectly deleted. + +Error response codes:202,413,405,404,403,401,400,422,503,500,501, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - instanceId: instanceId + - accountId: accountId + + + + + + + + + + + + + + + + +Create user +=========== + +.. rest_method:: POST /v1.0/{accountId}/instances/{instanceId}/users + +Creates a user for a database instance. + +Asynchronously provisions a new user for the database instance by +using the configuration that you define in the request object. +After the API validates the request and starts progress on the +provisioning process, the call returns the ``Accepted (202)`` +response code. + +If the API cannot fulfill the corresponding request due to +insufficient data or data that is not valid, the API returns the +``Bad Request (400)`` response code with information about the +nature of the failure. You cannot recover from validation errors. +You must correct the cause of the failure and the request again. + +This table lists the required attributes for creating users: + +**Required attributes for user** + ++-----------------+---------------------------------------------------------------------+------------------------------------+----------+ +| Applies to | Name | Description | Required | ++-----------------+---------------------------------------------------------------------+------------------------------------+----------+ +| User | name | Name of the user for the database. | Yes | ++-----------------+---------------------------------------------------------------------+------------------------------------+----------+ +| password | User password for database access. | Yes | | ++-----------------+---------------------------------------------------------------------+------------------------------------+----------+ +| (database) name | Name of the database that the user can access. You must specify one | No | | +| | or more database names. | | | ++-----------------+---------------------------------------------------------------------+------------------------------------+----------+ + + **Notes** + +- The operation grants the user all privileges on the databases. + +- Do not use the ``root`` user name, which is reserved. + +These tables list the valid characters for database names, user +names, and passwords. + +**Valid characters in database name, user name, and password** + ++---------------------------------------------------------------------------------------------------------------------------------+ +| Character | ++---------------------------------------------------------------------------------------------------------------------------------+ +| Letters (upper and lower cases allowed) | ++---------------------------------------------------------------------------------------------------------------------------------+ +| Numbers | ++---------------------------------------------------------------------------------------------------------------------------------+ +| ``@``, ``?``, ``#``, and spaces are allowed, but **not** at the beginning and end of the database name, user name, and password | ++---------------------------------------------------------------------------------------------------------------------------------+ +| ``_`` is allowed anywhere in the database name, user name, and password | ++---------------------------------------------------------------------------------------------------------------------------------+ + +**Characters that are not allowed in database name, user name, and password** + ++---------------------------------------------------------+ +| Character | ++---------------------------------------------------------+ +| Single quotes | ++---------------------------------------------------------+ +| Double quotes | ++---------------------------------------------------------+ +| Back quotes | ++---------------------------------------------------------+ +| Semicolons | ++---------------------------------------------------------+ +| Commas | ++---------------------------------------------------------+ +| Back slashes | ++---------------------------------------------------------+ +| Forward slashes | ++---------------------------------------------------------+ +| Spaces at the front or end of the user name or password | ++---------------------------------------------------------+ + +**Length restrictions for database name, user name, and password** + ++------------------------------+-----------------------------+ +| Restriction | Value | ++------------------------------+-----------------------------+ +| Database name maximum length | 64 | ++------------------------------+-----------------------------+ +| User name maximum length | 16 | ++------------------------------+-----------------------------+ +| Password maximum length | unlimited (no restrictions) | ++------------------------------+-----------------------------+ + +Error response codes:202,413,405,404,403,401,400,422,503,500,501, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - instanceId: instanceId + - accountId: accountId + +Request Example +--------------- + +.. literalinclude:: samples/db-create-users-request.json + :language: javascript + + + + + + + + + + + + + + + + + +List database instance users +============================ + +.. rest_method:: GET /v1.0/{accountId}/instances/{instanceId}/users + +Lists the users in a database instance and the associated databases for that user. + +This operation does not return system users. A system user is a +database administrator who administers the health of the database. +Also, this operation returns the ``root`` user only if it is +enabled. + +The following notes apply to MySQL users: + +- User names can be up to 16 characters long. + +- When you create accounts with INSERT, you must use FLUSH + PRIVILEGES to tell the server to reload the grant tables. + +- For additional information, See: + `http://dev.mysql.com/doc/refman/5.1/en/user-account- + management.html `_ + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,422,503,500,501, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - instanceId: instanceId + - accountId: accountId + + + + +Response Example +---------------- + +.. literalinclude:: samples/db-list-users-response.json + :language: javascript + + + + + + + + + + + + + diff --git a/api-ref/source/identity/v2-admin/admin-extensions.inc b/api-ref/source/identity/v2-admin/admin-extensions.inc new file mode 100644 index 000000000..649c1902d --- /dev/null +++ b/api-ref/source/identity/v2-admin/admin-extensions.inc @@ -0,0 +1,10 @@ +.. -*- rst -*- + +========== +Extensions +========== + +For information about Identity API v2.0 extensions, see `Extensions +`_. + diff --git a/api-ref/source/identity/v2-admin/admin-tenants.inc b/api-ref/source/identity/v2-admin/admin-tenants.inc new file mode 100644 index 000000000..fa6143d3c --- /dev/null +++ b/api-ref/source/identity/v2-admin/admin-tenants.inc @@ -0,0 +1,175 @@ +.. -*- rst -*- + +======= +Tenants +======= + + + + +Show tenant details, by ID +========================== + +.. rest_method:: GET /v2.0/tenants/{tenantId} + +Shows details for a tenant, by ID. + + +Normal response codes: 200 +Error response codes:203,413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenantId: tenantId + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/admin/tenant-show-response.json + :language: javascript + + + + + + + + + + + + +List roles for user +=================== + +.. rest_method:: GET /v2.0/tenants/{tenantId}/users/{userId}/roles + +Lists roles for a user on a tenant. Excludes global roles. + + +Normal response codes: 200 +Error response codes:203,413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - userId: userId + - tenantId: tenantId + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - roles_links: roles_links + - roles: roles + - description: description + - name: name + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/admin/roles-list-response.json + :language: javascript + + + + + + + + + + + + +List tenants +============ + +.. rest_method:: GET /v2.0/tenants + +Lists all tenants. + + +Normal response codes: 200 +Error response codes:203,413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/admin/tenants-list-response.json + :language: javascript + + + + + + + + + + + + +Show tenant details, by name +============================ + +.. rest_method:: GET /v2.0/tenants + +Shows details for a tenant, by name. + + +Normal response codes: 200 +Error response codes:203,413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - name: name + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/admin/tenant-show-response.json + :language: javascript + + + + + + + + + + + diff --git a/api-ref/source/identity/v2-admin/admin-tokens.inc b/api-ref/source/identity/v2-admin/admin-tokens.inc new file mode 100644 index 000000000..80c207455 --- /dev/null +++ b/api-ref/source/identity/v2-admin/admin-tokens.inc @@ -0,0 +1,255 @@ +.. -*- rst -*- + +====== +Tokens +====== + + + + +List endoints for token +======================= + +.. rest_method:: GET /v2.0/tokens/{tokenId}/endpoints + +Lists the endpoints associated with a token. + + +Normal response codes: 200 +Error response codes:203,413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tokenId: tokenId + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/admin/endpoints-list-response.json + :language: javascript + + + + + + + + + + + + +Authenticate for admin API +========================== + +.. rest_method:: POST /v2.0/tokens + +Authenticates and generates a token. + +A REST interface provides client authentication by using the POST +method with ``v2.0/tokens`` as the path. Include a payload of +credentials in the body. + +The Identity API is a RESTful web service. It is the entry point to +all service APIs. To access the Identity API, you must know its +URL. + +Each REST request against the Identity Service requires the ``X +-Auth-Token`` header. Clients obtain this token and the URL +endpoints for other service APIs by supplying their valid +credentials to the authentication service. + +If the authentication token has expired, this call returns the HTTP +``unauthorized (401)`` response code. + +If the token has expired, this call returns the ``itemNotFound +(404)`` response code. + +The Identity API treats expired tokens as no longer valid tokens. + +The deployment determines how long expired tokens are stored. + +To view the ``trust`` object, you need to set ``trust`` enable on +the keystone configuration. + + +Normal response codes: 200 +Error response codes:203,413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + +Request Example +--------------- + +.. literalinclude:: ../samples/admin/authenticate-token-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - impersonation: impersonation + - endpoints_links: endpoints_links + - serviceCatalog: serviceCatalog + - description: description + - type: type + - expires: expires + - enabled: enabled + - name: name + - access: access + - trustee_user_id: trustee_user_id + - token: token + - user: user + - issued_at: issued_at + - trustor_user_id: trustor_user_id + - endpoints: endpoints + - trust: trust + - id: id + - tenant: tenant + - metadata: metadata + + + +Response Example +---------------- + +.. literalinclude:: ../samples/admin/authenticate-response.json + :language: javascript + + + + + + + + + + + + +Validate token +============== + +.. rest_method:: GET /v2.0/tokens/{tokenId} + +Validates a token and confirms that it belongs to a tenant. + +Returns the permissions relevant to a particular client. Valid +tokens are in the ``/tokens/{tokenId}`` path. If the token is not +valid, this call returns the ``itemNotFound (404)`` response code. + + +Normal response codes: 200 +Error response codes:203,413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tokenId: tokenId + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/admin/token-validate-response.json + :language: javascript + + + + + + + + + + + + +Validate token (admin) +====================== + +.. rest_method:: HEAD /v2.0/tokens/{tokenId} + +Validates a token and confirms that it belongs to a tenant, for performance. + + +Normal response codes: 200 +Error response codes:203,204,413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tokenId: tokenId + + + + +Response Example +---------------- + +.. literalinclude:: + :language: javascript + + + + + + + + + + + + + +Delete token +============ + +.. rest_method:: DELETE /v2.0/tokens/{tokenId} + +Deletes a token. + +Error response codes:204,413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tokenId: tokenId + + + + + + + + + + + + diff --git a/api-ref/source/identity/v2-admin/admin-users.inc b/api-ref/source/identity/v2-admin/admin-users.inc new file mode 100644 index 000000000..fe6d9e782 --- /dev/null +++ b/api-ref/source/identity/v2-admin/admin-users.inc @@ -0,0 +1,313 @@ +.. -*- rst -*- + +===== +Users +===== + + + + +List user global roles +====================== + +.. rest_method:: GET /v2.0/users/{userId}/roles + +Lists global roles for a user. Excludes tenant roles. + + +Normal response codes: 200 +Error response codes:203,413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - userId: userId + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - roles_links: roles_links + - roles: roles + - description: description + - name: name + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/admin/roles-list-response.json + :language: javascript + + + + + + + + + + + + +Create user +=========== + +.. rest_method:: POST /v2.0/users + +Creates a user. + +Error response codes:201,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenantId: tenantId + - password: password + - enabled: enabled + - email: email + - name: name + - X-Auth-Token: X-Auth-Token + +Request Example +--------------- + +.. literalinclude:: ../samples/admin/user-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - username: username + - enabled: enabled + - email: email + - name: name + - id: id + + + + + + + + + + + + + + +List users +========== + +.. rest_method:: GET /v2.0/users + +Lists all users. + +To show detailed information about a user by name, include the +``name`` query parameter in the request. + + +Normal response codes: 200 +Error response codes:203,413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - username: username + - users: users + - enabled: enabled + - id: id + - email: email + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/admin/user-show-response.json + :language: javascript + + + + + + + + + + + + +Update user +=========== + +.. rest_method:: PUT /v2.0/users/{userId} + +Updates a user. + +Error response codes:201,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - username: username + - enabled: enabled + - email: email + - name: name + - userId: userId + +Request Example +--------------- + +.. literalinclude:: ../samples/admin/user-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - enabled: enabled + - email: email + - name: name + - id: id + + + + + + + + + + + + + + +Delete user +=========== + +.. rest_method:: DELETE /v2.0/users/{userId} + +Deletes a user. + +Error response codes:204,413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - userId: userId + + + + + + + + + + + + + +Show user details +================= + +.. rest_method:: GET /v2.0/users/{userId} + +Shows details for a user, by ID. + +The `openstack user show `_ command supports +showing user details by name or ID. However, the command actually +looks up the user ID for a user name and queries the user by ID. + +As a workaround, complete these steps to show details for a user by +name: + +- `List all users `_. + +- In the response, find the user name for which you want to show + details and note its corresponding user ID. + +- `Show details for user `_. + + +Normal response codes: 200 +Error response codes:203,413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - userId: userId + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - username: username + - enabled: enabled + - email: email + - name: name + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/admin/user-show-response.json + :language: javascript + + + + + + + + + + + diff --git a/api-ref/source/identity/v2-admin/admin-versions.inc b/api-ref/source/identity/v2-admin/admin-versions.inc new file mode 100644 index 000000000..727a173c3 --- /dev/null +++ b/api-ref/source/identity/v2-admin/admin-versions.inc @@ -0,0 +1,53 @@ +.. -*- rst -*- + +======== +Versions +======== + + + + +Get version details +=================== + +.. rest_method:: GET /v2.0 + +Gets detailed information about a version of the Identity API. + + +Normal response codes: 200 +Error response codes:203,413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - location: location + + + +Response Example +---------------- + +.. literalinclude:: ../samples/admin/version-show-response.json + :language: javascript + + + + + + + + + + + diff --git a/api-ref/source/identity/v2-admin/parameters.yaml b/api-ref/source/identity/v2-admin/parameters.yaml new file mode 100644 index 000000000..35d7d8cbf --- /dev/null +++ b/api-ref/source/identity/v2-admin/parameters.yaml @@ -0,0 +1,258 @@ +# variables in header +X-Auth-Token: + description: | + A valid authentication token for an + administrative user. + in: header + required: true + type: string + +# variables in path +tenantId_1: + description: | + The tenant ID. + in: path + required: false + type: string +tokenId: + description: | + The authentication token for which to perform the + operation. + in: path + required: false + type: string +userId: + description: | + The user ID. + in: path + required: false + type: string + +# variables in query +name_2: + description: | + Filters the response by a tenant name. + in: query + required: true + type: string + +# variables in body +access: + description: | + An ``access`` object. + in: body + required: true + type: string +description: + description: | + The description of the tenant. If not set, this + value is ``null``. + in: body + required: true + type: string +email: + description: | + The user email. + in: body + required: false + type: string +email_1: + description: | + The user email. + in: body + required: true + type: string +enabled: + description: | + Indicates whether the tenant is enabled or + disabled. + in: body + required: true + type: boolean +enabled_1: + description: | + Indicates whether the user is enabled (``true``) + or disabled (``false``). Default is ``true``. + in: body + required: false + type: boolean +enabled_2: + description: | + Indicates whether the user is enabled (``true``) + or disabled(``false``). The default value is ``true``. + in: body + required: true + type: boolean +endpoints: + description: | + One or more ``endpoints`` objects. Each object + shows the ``adminURL``, ``region``, ``internalURL``, ``id``, and + ``publicURL`` for the endpoint. + in: body + required: true + type: string +endpoints_links: + description: | + Links for the endpoint. + in: body + required: true + type: string +expires: + description: | + The date and time when the token expires. + + The date and time stamp format is `ISO 8601 + `_: + + :: + + CCYY-MM-DDThh:mm:ss±hh:mm + + For example, ``2015-08-27T09:49:58-05:00``. + + The ``±hh:mm`` value, if included, is the time zone as an offset + from UTC. In the previous example, the offset value is ``-05:00``. + + A ``null`` value indicates that the token never expires. + in: body + required: true + type: string +id: + description: | + The ID of the trust. + in: body + required: false + type: string +id_1: + description: | + The user ID. + in: body + required: true + type: string +impersonation: + description: | + The impersonation flag. + in: body + required: false + type: string +issued_at: + description: | + The date and time when the token was issued. + + The date and time stamp format is `ISO 8601 + `_: + + :: + + CCYY-MM-DDThh:mm:ss±hh:mm + + For example, ``2015-08-27T09:49:58-05:00``. + + The ``±hh:mm`` value, if included, is the time zone as an offset + from UTC. In the previous example, the offset value is ``-05:00``. + in: body + required: true + type: string +location: + format: uri + in: body + required: true + type: string +metadata: + description: | + A ``metadata`` object. + in: body + required: true + type: string +name: + description: | + Endpoint name. + in: body + required: true + type: string +name_1: + description: | + The user name. + in: body + required: true + type: string +password: + description: | + The user password. + in: body + required: false + type: string +serviceCatalog: + description: | + A ``serviceCatalog`` object. + in: body + required: true + type: string +tenant: + description: | + A ``tenant`` object. + in: body + required: true + type: string +tenantId: + description: | + The tenant ID. + in: body + required: false + type: string +token: + description: | + A ``token`` object. + in: body + required: true + type: string +trust: + description: | + A ``trust`` object. + in: body + required: false + type: string +trustee_user_id: + description: | + The trustee user ID. + in: body + required: false + type: string +trustor_user_id: + description: | + The trustor user ID. + in: body + required: false + type: string +type: + description: | + Endpoint type. + in: body + required: true + type: string +user: + description: | + A ``user`` object, which shows the ``username``, + ``roles_links``, ``id``, ``roles``, and ``name``. + in: body + required: true + type: string +username: + description: | + The user name of the user. + in: body + required: true + type: string +username_1: + description: | + The username of user. + in: body + required: true + type: string +users: + description: | + One or more ``user`` objects. + in: body + required: true + type: array + diff --git a/api-ref/source/identity/v2-ext/ksadm-admin.inc b/api-ref/source/identity/v2-ext/ksadm-admin.inc new file mode 100644 index 000000000..a064f894c --- /dev/null +++ b/api-ref/source/identity/v2-ext/ksadm-admin.inc @@ -0,0 +1,1057 @@ +.. -*- rst -*- + +======================== +OS-KSADM admin extension +======================== + +Supports create, read, update, and delete (CRUD) operations for +users, tenants, roles, and services. Requires administrator +privileges. + + +Grant roles to user on tenant +============================= + +.. rest_method:: PUT /v2.0/tenants/{tenantId}/users/{userId}/roles/OS-KSADM/{roleId} + +Grants a role to a user for a tenant. + +Error response codes:201,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - userId: userId + - roleId: roleId + - tenantId: tenantId + + + + + + + + + + + + + + + +Revoke role from user on tenant +=============================== + +.. rest_method:: DELETE /v2.0/tenants/{tenantId}/users/{userId}/roles/OS-KSADM/{roleId} + +Revokes a role from a user for a tenant. + +Error response codes:204,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - userId: userId + - roleId: roleId + - tenantId: tenantId + + + + + + + + + + + + + + + +Shows service information by ID +=============================== + +.. rest_method:: GET /v2.0/services/{serviceId} + +Shows information for a service, by ID. + + +Normal response codes: 200 +Error response codes:203,413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - serviceId: serviceId + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - type: type + - description: description + - name: name + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/OS-KSADM/service-show-response.json + :language: javascript + + + + + + + + + + + + +Delete service +============== + +.. rest_method:: DELETE /v2.0/services/{serviceId} + +Deletes a service. + +Error response codes:204,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - serviceId: serviceId + + + + + + + + + + + + + + + +List users on a tenant +====================== + +.. rest_method:: GET /v2.0/tenants/{tenantId}/users + +Lists all users for a tenant. + + +Normal response codes: 200 +Error response codes:203,413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenantId: tenantId + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/OS-KSADM/users-list-response.json + :language: javascript + + + + + + + + + + + + +Enable user +=========== + +.. rest_method:: PUT /v2.0/users/{userId}/OS-KSADM/enabled + +Enables a user. + + +Normal response codes: 200 +Error response codes:413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - userId: userId + +Request Example +--------------- + +.. literalinclude:: ../samples/OS-KSADM/userwithenabledonly-enable-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - enabled: enabled + - email: email + - name: name + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/OS-KSADM/user-show-response.json + :language: javascript + + + + + + + + + + + + + +List roles +========== + +.. rest_method:: GET /v2.0/OS-KSADM/ + +Lists all roles. + + +Normal response codes: 200 +Error response codes:203,413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - roles_links: roles_links + - roles: roles + - description: description + - name: name + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/OS-KSADM/roles-list-response.json + :language: javascript + + + + + + + + + + + + +List users +========== + +.. rest_method:: GET /v2.0/users + +Lists all users. + + +Normal response codes: 200 +Error response codes:203,413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - users: users + - enabled: enabled + - email: email + - name: name + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/OS-KSADM/users-list-response.json + :language: javascript + + + + + + + + + + + + +Create user +=========== + +.. rest_method:: POST /v2.0/users + +Creates a user. + +Error response codes:201,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - name: name + - enabled: enabled + - id: id + - user: user + - users_links: users_links + - email: email + +Request Example +--------------- + +.. literalinclude:: ../samples/OS-KSADM/userwithoutid-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - enabled: enabled + - email: email + - name: name + - id: id + + + + + + + + + + + + + + +Show role information by name +============================= + +.. rest_method:: GET /v2.0/OS-KSADM/roles/{role_name} + +Shows information for a role, by name. + + +Normal response codes: 200 +Error response codes:203,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - Location: Location + - description: description + - name: name + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/OS-KSADM/role-show-response.json + :language: javascript + + + + + + + + + + + + + + +Grant global role to user +========================= + +.. rest_method:: PUT /v2.0/users/{userId}/roles/OS-KSADM/{roleId} + +Grants a global role to a user. + +Error response codes:201,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - userId: userId + - roleId: roleId + + + + + + + + + + + + + + + +Delete global role from user +============================ + +.. rest_method:: DELETE /v2.0/users/{userId}/roles/OS-KSADM/{roleId} + +Deletes a global role from a user. + +Error response codes:204,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - userId: userId + - roleId: roleId + + + + + + + + + + + + + + + +List services +============= + +.. rest_method:: GET /v2.0/services + +Lists all services. + + +Normal response codes: 200 +Error response codes:203,413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - type: type + - description: description + - name: name + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/OS-KSADM/services-list-response.json + :language: javascript + + + + + + + + + + + + +Create service +============== + +.. rest_method:: POST /v2.0/services + +Creates a service. + +Error response codes:201,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + +Request Example +--------------- + +.. literalinclude:: ../samples/OS-KSADM/service-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - Location: Location + - type: type + - description: description + - name: name + - id: id + + + + + + + + + + + + + + +Show service information by name +================================ + +.. rest_method:: GET /v2.0/services/{serviceName} + +Shows information for a service, by name. + + +Normal response codes: 200 +Error response codes:203,413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - type: type + - description: description + - name: name + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/OS-KSADM/service-show-response.json + :language: javascript + + + + + + + + + + + + +Create role +=========== + +.. rest_method:: POST /v2.0/OS-KSADM + +Creates a role. + +Error response codes:201,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + +Request Example +--------------- + +.. literalinclude:: ../samples/OS-KSADM/role-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - Location: Location + + + + + + + + + + + + + + +Create tenant +============= + +.. rest_method:: POST /v2.0/tenants + +Creates a tenant. + +Error response codes:201,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + +Request Example +--------------- + +.. literalinclude:: ../samples/OS-KSADM/tenantwithoutid-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - tenant: tenant + - enabled: enabled + - description: description + - name: name + - id: id + + + + + + + + + + + + + + +List global roles for user +========================== + +.. rest_method:: GET /v2.0/users/{userId}/roles + +Lists global roles for a user. + + +Normal response codes: 200 +Error response codes:203,413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - userId: userId + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/OS-KSADM/user-roles-list-response.json + :language: javascript + + + + + + + + + + + + +Update tenant +============= + +.. rest_method:: POST /v2.0/tenants/{tenantId} + +Updates a tenant. + + +Normal response codes: 200 +Error response codes:413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant: tenant + - enabled: enabled + - description: description + - name: name + - id: id + - tenantId: tenantId + +Request Example +--------------- + +.. literalinclude:: ../samples/OS-KSADM/tenant-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - tenant: tenant + - enabled: enabled + - description: description + - name: name + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/OS-KSADM/tenant-show-response.json + :language: javascript + + + + + + + + + + + + + +Delete tenant +============= + +.. rest_method:: DELETE /v2.0/tenants/{tenantId} + +Deletes a tenant. + +Error response codes:204,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenantId: tenantId + + + + + + + + + + + + + + + +Show role details, by ID +======================== + +.. rest_method:: GET /v2.0/OS-KSADM/{roleId} + +Shows details for a role, by ID. + + +Normal response codes: 200 +Error response codes:203,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - roleId: roleId + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - Location: Location + - description: description + - name: name + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/OS-KSADM/role-show-response.json + :language: javascript + + + + + + + + + + + + + + +Delete role +=========== + +.. rest_method:: DELETE /v2.0/OS-KSADM/{roleId} + +Deletes a role. + +Error response codes:204,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - roleId: roleId + + + + + + + + + + + + + + + +Update user +=========== + +.. rest_method:: PUT /v2.0/users/{userId} + +Updates a user. + + +Normal response codes: 200 +Error response codes:413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - userId: userId + +Request Example +--------------- + +.. literalinclude:: ../samples/OS-KSADM/user-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - users: users + - enabled: enabled + - email: email + - name: name + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/OS-KSADM/user-show-response.json + :language: javascript + + + + + + + + + + + + + +Delete user +=========== + +.. rest_method:: DELETE /v2.0/users/{userId} + +Deletes a user. + +Error response codes:204,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - userId: userId + + + + + + + + + + + + + + diff --git a/api-ref/source/identity/v2-ext/kscatalog.inc b/api-ref/source/identity/v2-ext/kscatalog.inc new file mode 100644 index 000000000..910d316e3 --- /dev/null +++ b/api-ref/source/identity/v2-ext/kscatalog.inc @@ -0,0 +1,357 @@ +.. -*- rst -*- + +============================ +OS-KSCATALOG admin extension +============================ + +Supports CRUD operations for endpoint templates and endpoints. +Requires administrator privileges. + + +Update endpoint template +======================== + +.. rest_method:: PUT /v2.0/OS-KSCATALOG/endpointTemplates/{endpointTemplateId} + +Updates endpoint template. + + +Normal response codes: 200 +Error response codes:413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - endpointTemplateId: endpointTemplateId + +Request Example +--------------- + +.. literalinclude:: ../samples/OS-KSCATALOG/endpointTemplate-create-request.json + :language: javascript + + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/OS-KSCATALOG/endpointTemplate-show-response.json + :language: javascript + + + + + + + + + + + + + +Delete endpoint template. +========================= + +.. rest_method:: DELETE /v2.0/OS-KSCATALOG/endpointTemplates/{endpointTemplateId} + +Deletes an endpoint template. + +Error response codes:204,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - endpointTemplateId: endpointTemplateId + + + + + + + + + + + + + + + +Create endpoint +=============== + +.. rest_method:: POST /v2.0/tenants/{tenantId}/OS-KSCATALOG/endpoints + +Creates endpoint to a tenant. + +Error response codes:201,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + +Request Example +--------------- + +.. literalinclude:: ../samples/OS-KSCATALOG/endpointTemplateWithOnlyId-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - Location: Location + + + + + + + + + + + + + + +List endpoints +============== + +.. rest_method:: GET /v2.0/tenants/{tenantId}/OS-KSCATALOG/endpoints + +Lists endpoints for a tenant. + + +Normal response codes: 200 +Error response codes:203,413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/OS-KSCATALOG/endpoints-list-response.json + :language: javascript + + + + + + + + + + + + +Get endpoint +============ + +.. rest_method:: GET /v2.0/tenants/{tenantId}/OS-KSCATALOG/endpoints + +Gets endpoint for a tenant. + + +Normal response codes: 200 +Error response codes:203,413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/OS-KSCATALOG/endpoint-show-response.json + :language: javascript + + + + + + + + + + + + +List endpoint templates +======================= + +.. rest_method:: GET /v2.0/OS-KSCATALOG/endpointTemplates + +Lists endpoint templates. + + +Normal response codes: 200 +Error response codes:203,413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/OS-KSCATALOG/endpointTemplates-list-response.json + :language: javascript + + + + + + + + + + + + +Get endpoint template +===================== + +.. rest_method:: GET /v2.0/OS-KSCATALOG/endpointTemplates + +Gets endpoint templates. + + +Normal response codes: 200 +Error response codes:203,413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/OS-KSCATALOG/endpointTemplate-show-response.json + :language: javascript + + + + + + + + + + + + +Create endpoint template +======================== + +.. rest_method:: POST /v2.0/OS-KSCATALOG/endpointTemplates + +Creates endpoint template. + +Error response codes:201,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + +Request Example +--------------- + +.. literalinclude:: ../samples/OS-KSCATALOG/endpointTemplate-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - Location: Location + + + + + + + + + + + + + + +Delete endpoint +=============== + +.. rest_method:: DELETE /v2.0/tenants/{tenantId}/OS-KSCATALOG/endpoints/{endpointId} + +Deletes an endpoint from a tenant. + +Error response codes:204,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + + + + + + + + + + + diff --git a/api-ref/source/identity/v2-ext/ksec2-admin.inc b/api-ref/source/identity/v2-ext/ksec2-admin.inc new file mode 100644 index 000000000..19cabd5b9 --- /dev/null +++ b/api-ref/source/identity/v2-ext/ksec2-admin.inc @@ -0,0 +1,236 @@ +.. -*- rst -*- + +======================== +OS-KSEC2 admin extension +======================== + +Supports Amazon Elastic Compute (EC2) style authentication. + + +Grant credential to user +======================== + +.. rest_method:: POST /v2.0/users/{userId}/OS-KSADM/credentials + +Grants a credential to a user. + +Error response codes:201,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + +Request Example +--------------- + +.. literalinclude:: ../samples/OS-KSEC2/ec2Credentials-create-request.json + :language: javascript + + + + + + + + + + + + + + + + +List credentials +================ + +.. rest_method:: GET /v2.0/users/{userId}/OS-KSADM/credentials + +Lists credentials. + + +Normal response codes: 200 +Error response codes:203,413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/OS-KSEC2/credentialswithec2-list-response.json + :language: javascript + + + + + + + + + + + + +Update user credentials +======================= + +.. rest_method:: POST /v2.0/users/{userId}/OS-KSADM/credentials/OS-KSEC2:ec2Credentials + +Updates credentials for a user. + + +Normal response codes: 200 +Error response codes:413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + +Request Example +--------------- + +.. literalinclude:: ../samples/OS-KSEC2/ec2Credentials-create-request.json + :language: javascript + + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/OS-KSEC2/ec2Credentials-show-response.json + :language: javascript + + + + + + + + + + + + + +Delete user credentials +======================= + +.. rest_method:: DELETE /v2.0/users/{userId}/OS-KSADM/credentials/OS-KSEC2:ec2Credentials + +Deletes user credentials. + +Error response codes:204,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + + + + + + + + + + + + +Get user credentials +==================== + +.. rest_method:: GET /v2.0/users/{userId}/OS-KSADM/credentials/OS-KSEC2:ec2Credentials + +Gets user credentials. + + +Normal response codes: 200 +Error response codes:203,413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/OS-KSEC2/ec2Credentials-show-response.json + :language: javascript + + + + + + + + + + + + +List credentials by type +======================== + +.. rest_method:: GET /v2.0/users/{userId}/OS-KSADM/credentials/OS-KSEC2:ec2Credentials/{type} + +Lists credentials by type. + + +Normal response codes: 200 +Error response codes:203,413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - type: type + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/OS-KSADM/credentials-show-response.json + :language: javascript + + + + + + + + + + + diff --git a/api-ref/source/identity/v2-ext/kss3-admin.inc b/api-ref/source/identity/v2-ext/kss3-admin.inc new file mode 100644 index 000000000..3e702c107 --- /dev/null +++ b/api-ref/source/identity/v2-ext/kss3-admin.inc @@ -0,0 +1,235 @@ +.. -*- rst -*- + +======================= +OS-KSS3 admin extension +======================= + + + + +List credentials by type +======================== + +.. rest_method:: GET /v2.0/users/{userId}/OS-KSS3/credentials/s3credentials/{type} + +Lists credentials by type. + + +Normal response codes: 200 +Error response codes:203,413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/OS-KSS3/credentialswiths3-list-response.json + :language: javascript + + + + + + + + + + + + +Update user credentials +======================= + +.. rest_method:: POST /v2.0/users/{userId}/OS-KSS3/credentials/s3credentials + +Updates credentials. + + +Normal response codes: 200 +Error response codes:413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + +Request Example +--------------- + +.. literalinclude:: ../samples/OS-KSS3/s3Credentials-create-request.json + :language: javascript + + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/OS-KSS3/s3Credentials-show-response.json + :language: javascript + + + + + + + + + + + + + +Revoke user credentials +======================= + +.. rest_method:: DELETE /v2.0/users/{userId}/OS-KSS3/credentials/s3credentials + +Revokes user credentials. + +Error response codes:204,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + + + + + + + + + + + + +Get user credentials +==================== + +.. rest_method:: GET /v2.0/users/{userId}/OS-KSS3/credentials/s3credentials + +Gets user credentials. + + +Normal response codes: 200 +Error response codes:203,413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/OS-KSS3/s3Credentials-show-response.json + :language: javascript + + + + + + + + + + + + +Grant credential to user +======================== + +.. rest_method:: POST /v2.0/users/{userId}/OS-KSS3/credentials + +Grants a credential to a user. + +Error response codes:201,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + +Request Example +--------------- + +.. literalinclude:: ../samples/OS-KSS3/s3Credentials-create-request.json + :language: javascript + + + + + + + + + + + + + + + + +List credentials +================ + +.. rest_method:: GET /v2.0/users/{userId}/OS-KSS3/credentials + +Lists credentials. + + +Normal response codes: 200 +Error response codes:203,413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/OS-KSS3/credentialswiths3-list-response.json + :language: javascript + + + + + + + + + + + diff --git a/api-ref/source/identity/v2-ext/ksvalidate.inc b/api-ref/source/identity/v2-ext/ksvalidate.inc new file mode 100644 index 000000000..d48729e1d --- /dev/null +++ b/api-ref/source/identity/v2-ext/ksvalidate.inc @@ -0,0 +1,140 @@ +.. -*- rst -*- + +============================= +OS-KSVALIDATE admin extension +============================= + + + + +List endpoints for token +======================== + +.. rest_method:: GET /v2.0/OS-KSVALIDATE/token/endpoints + +Lists endpoints for a token. + + +Normal response codes: 200 +Error response codes:203,413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/OS-KSVALIDATE/endpoints-list-response.json + :language: javascript + + + + + + + + + + + + +Validate token +============== + +.. rest_method:: GET /v2.0/OS-KSVALIDATE/token/validate + +Checks that a token is valid and that it belongs to the tenant and any service IDs. Returns the permissions for a particular client. + +Behavior is similar to ``/tokens/{tokenId}``. If the token is not +valid, the call returns the ``itemNotFound (404)`` response code. + +This extension might decrypt the ``X-Subject-Token`` header and +internally call and pass in all headers and query parameters to the +normal validation code for Identity. Consequently, this extension +must support all existing ``/tokens/{tokenId}`` calls including +extensions such as HP-IDM. + + +Normal response codes: 200 +Error response codes:203,413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/OS-KSVALIDATE/token-validate-response.json + :language: javascript + + + + + + + + + + + + +Check token +=========== + +.. rest_method:: HEAD /v2.0/OS-KSVALIDATE/token/validate + +Checks that a token is valid and that it belongs to the tenant and any service IDs, for performance. + +Behavior is similar to ``/tokens/{tokenId}``. If the token is not +valid, the call returns the ``itemNotFound (404)`` response code. + +This extension might decrypt the ``X-Subject-Token`` header and +internally call and pass in all headers and query parameters to the +normal validation code for Identity. Consequently, this extension +must support all existing ``/tokens/{tokenId}`` calls including +extensions such as HP-IDM. + + +Normal response codes: 200 +Error response codes:203,413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + +Response Example +---------------- + +.. literalinclude:: + :language: javascript + + + + + + + + + + + diff --git a/api-ref/source/identity/v2-ext/parameters.yaml b/api-ref/source/identity/v2-ext/parameters.yaml new file mode 100644 index 000000000..633ec4d55 --- /dev/null +++ b/api-ref/source/identity/v2-ext/parameters.yaml @@ -0,0 +1,167 @@ +# variables in header +Location: + format: uri + in: header + required: false + type: string +Location_1: + description: | + The location. + format: uri + in: header + required: false + type: string + +# variables in path +endpointTemplateId: + description: | + The endpoint template ID. + in: path + required: false + type: string +roleId: + description: | + The role ID. + in: path + required: false + type: string +serviceId: + description: | + The service ID. + in: path + required: false + type: string +tenantId: + description: | + The tenant ID. + in: path + required: false + type: string +type_1: + description: | + The credential type. + in: path + required: false + type: string +userId: + description: | + The user ID. + in: path + required: false + type: string + +# variables in query +{} + +# variables in body +description: + description: | + Description about the service. + in: body + required: true + type: string +description_1: + description: | + Description about the tenant. + in: body + required: true + type: string +description_2: + description: | + The role description. + in: body + required: true + type: string +email: + description: | + The user email. + in: body + required: true + type: string +enabled: + description: | + Indicates whether the tenant is enabled or + disabled. Default is ``true``. + in: body + required: true + type: boolean +enabled_1: + description: | + Indicates whether the user is enabled (``true``) + or disabled(``false``). The default value is ``true``. + in: body + required: true + type: boolean +id: + description: | + The UUID of the service. + in: body + required: true + type: string +id_1: + description: | + The tenant ID. + in: body + required: true + type: string +id_2: + description: | + The user ID. + in: body + required: true + type: string +id_3: + description: | + The role ID. + in: body + required: true + type: integer +name: + description: | + The service name. + in: body + required: true + type: string +name_1: + description: | + The tenant name. + in: body + required: true + type: string +name_2: + description: | + The user name. + in: body + required: true + type: string +name_3: + description: | + The role name. + in: body + required: true + type: string +roles: + description: | + A ``roles`` object. + in: body + required: true + type: string +roles_links: + description: | + Role links. + in: body + required: true + type: object +type: + description: | + The type of the service. + in: body + required: true + type: string +users: + description: | + The ``users`` object. + in: body + required: true + type: array + diff --git a/api-ref/source/identity/v2/identity-api-extensions.inc b/api-ref/source/identity/v2/identity-api-extensions.inc new file mode 100644 index 000000000..66ee88baa --- /dev/null +++ b/api-ref/source/identity/v2/identity-api-extensions.inc @@ -0,0 +1,107 @@ +.. -*- rst -*- + +========== +Extensions +========== + + + + +Show extension details +====================== + +.. rest_method:: GET /v2.0/extensions/{alias} + +Shows details for an extension, by alias. + + +Normal response codes: 200 +Error response codes:203,413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - alias: alias + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - x-openstack-request-id: x-openstack-request-id + - alias: alias + - updated: updated + - description: description + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/admin/extension-show-response.json + :language: javascript + + + + + + + + + + + + +List extensions +=============== + +.. rest_method:: GET /v2.0/extensions + +Lists available extensions. + + +Normal response codes: 200 +Error response codes:203,413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - x-openstack-request-id: x-openstack-request-id + - alias: alias + - updated: updated + - description: description + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/admin/extensions-list-response.json + :language: javascript + + + + + + + + + + + diff --git a/api-ref/source/identity/v2/identity-auth.inc b/api-ref/source/identity/v2/identity-auth.inc new file mode 100644 index 000000000..778badd80 --- /dev/null +++ b/api-ref/source/identity/v2/identity-auth.inc @@ -0,0 +1,160 @@ +.. -*- rst -*- + +================== +Tokens and tenants +================== + + + + +List tenants +============ + +.. rest_method:: GET /v2.0/tenants + +Lists tenants to which the token has access. + + +Normal response codes: 200 +Error response codes:203,413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - tenants_links: tenants_links + - enabled: enabled + - tenants: tenants + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/admin/tenants-list-response.json + :language: javascript + + + + + + + + + + + + +Authenticate +============ + +.. rest_method:: POST /v2.0/tokens + +Authenticates and generates a token. + +The Identity API is a RESTful web service. It is the entry point to +all service APIs. To access the Identity API, you must know its +URL. + +Each REST request against Identity requires the X-Auth-Token +header. Clients obtain this token, along with the URL to other +service APIs, by first authenticating against Identity with valid +credentials. + +To authenticate, you must provide either a user ID and password or +a token. + +If the authentication token has expired, this call returns the HTTP +``401`` status code. + +If the token has expired, this call returns the HTTP ``404`` status +code. + +The Identity API treats expired tokens as no longer valid tokens. + +The deployment determines how long expired tokens are stored. + +To view the ``trust`` object, you need to set ``trust`` enable on +the keystone configuration. + + +Normal response codes: 200 +Error response codes:203,413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - username: username + - passwordCredentials: passwordCredentials + - tenantId: tenantId + - token: token + - tenantName: tenantName + - password: password + - id: id + +Request Example +--------------- + +.. literalinclude:: ../samples/admin/authenticate-token-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - impersonation: impersonation + - endpoints_links: endpoints_links + - serviceCatalog: serviceCatalog + - description: description + - type: type + - expires: expires + - enabled: enabled + - name: name + - access: access + - trustee_user_id: trustee_user_id + - token: token + - user: user + - issued_at: issued_at + - trustor_user_id: trustor_user_id + - endpoints: endpoints + - trust: trust + - id: id + - tenant: tenant + - metadata: metadata + + + +Response Example +---------------- + +.. literalinclude:: ../samples/client/authenticate-response.json + :language: javascript + + + + + + + + + + + diff --git a/api-ref/source/identity/v2/parameters.yaml b/api-ref/source/identity/v2/parameters.yaml new file mode 100644 index 000000000..38b3fb5d3 --- /dev/null +++ b/api-ref/source/identity/v2/parameters.yaml @@ -0,0 +1,271 @@ +# variables in header +x-openstack-request-id: + description: | + A unique request ID that provides tracking for + the request. Provider must configure middleware to return a + request ID header in a response. + in: header + required: false + type: string + +# variables in path +alias_1: + description: | + An alias for the extension name. For example, + ``os-server-external- events``. + in: path + required: false + type: string + +# variables in query +{} + +# variables in body +access: + description: | + An ``access`` object. + in: body + required: true + type: object +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 +description: + description: | + The description of the tenant. If not set, this + value is ``null``. + in: body + required: true + type: string +description_1: + description: | + The extension description. + in: body + required: true + type: string +description_2: + description: | + Description about the tenant. + in: body + required: true + type: string +enabled: + description: | + Indicates whether the tenant is enabled or + disabled. + in: body + required: true + type: boolean +endpoints: + description: | + One or more ``endpoints`` objects. Each object + shows the ``adminURL``, ``region``, ``internalURL``, ``id``, and + ``publicURL`` for the endpoint. + in: body + required: true + type: array +endpoints_links: + description: | + Links for the endpoint. + in: body + required: true + type: array +expires: + description: | + The date and time when the token expires. + + The date and time stamp format is `ISO 8601 + `_: + + :: + + CCYY-MM-DDThh:mm:ss±hh:mm + + For example, ``2015-08-27T09:49:58-05:00``. + + The ``±hh:mm`` value, if included, is the time zone as an offset + from UTC. In the previous example, the offset value is ``-05:00``. + + A ``null`` value indicates that the token never expires. + in: body + required: true + type: string +id: + description: | + The token ID. This field is required in the + ``token`` object. + in: body + required: false + type: string +id_1: + description: | + The tenant ID. + in: body + required: true + type: string +impersonation: + description: | + The impersonation flag. + in: body + required: false + type: boolean +issued_at: + description: | + The date and time when the token was issued. + + The date and time stamp format is `ISO 8601 + `_: + + :: + + CCYY-MM-DDThh:mm:ss±hh:mm + + For example, ``2015-08-27T09:49:58-05:00``. + + The ``±hh:mm`` value, if included, is the time zone as an offset + from UTC. In the previous example, the offset value is ``-05:00``. + in: body + required: true + type: string +metadata: + description: | + A ``metadata`` object. + in: body + required: true + type: object +name: + description: | + Endpoint name. + in: body + required: true + type: string +name_1: + description: | + The name of the extension. For example, "Fox In + Socks." + in: body + required: true + type: string +name_2: + description: | + The tenant name. + in: body + required: true + type: string +password: + description: | + The password of the user. Required if you include + the ``passwordCredentials`` object. Otherwise, you must provide a + token. + in: body + required: false + type: string +passwordCredentials: + description: | + A ``passwordCredentials`` object. To + authenticate, you must provide either a user ID and password or a + token. + in: body + required: false + type: string +serviceCatalog: + description: | + List of ``serviceCatalog`` objects. + in: body + required: true + type: array +tenant: + description: | + A ``tenant`` object. + in: body + required: true + type: object +tenantId: + description: | + The tenant ID. Both the ``tenantId`` and + ``tenantName`` attributes are optional and mutually exclusive. If + you specify both attributes, the server returns the ``Bad Request + (400)`` response code. + in: body + required: false + type: string +tenantName: + description: | + The tenant name. Both the ``tenantId`` and + ``tenantName`` attributes are optional and mutually exclusive. If + you specify both attributes, the server returns the ``Bad Request + (400)`` response code. + in: body + required: false + type: string +tenants: + description: | + One or more tenant Objects. + in: body + required: true + type: array +tenants_links: + description: | + Links of the tenants. + in: body + required: true + type: array +token: + description: | + A ``token`` object. Required if you do not + provide a password credential. + in: body + required: false + type: object +trust: + description: | + A ``trust`` object. + in: body + required: false + type: object +trustee_user_id: + description: | + The trustee user ID. + in: body + required: false + type: string +trustor_user_id: + description: | + The trustor user ID. + in: body + required: false + type: string +type: + description: | + Endpoint type. + in: body + required: true + type: string +updated: + description: | + The date and time stamp when the extension was + last updated. + in: body + required: true + type: string +user: + description: | + A ``user`` object, which shows the ``username``, + ``roles_links``, ``id``, ``roles``, and ``name``. + in: body + required: true + type: object +username: + description: | + The user name. Required if you include the + ``passwordCredentials`` object. Otherwise, you must provide a + token. + in: body + required: false + type: string + diff --git a/api-ref/source/identity/v2/samples/OS-KSADM/credentials-show-response.json b/api-ref/source/identity/v2/samples/OS-KSADM/credentials-show-response.json new file mode 100644 index 000000000..7dbc0d6f1 --- /dev/null +++ b/api-ref/source/identity/v2/samples/OS-KSADM/credentials-show-response.json @@ -0,0 +1,11 @@ +{ + "credentials": [ + { + "passwordCredentials": { + "username": "test_user", + "password": "secretsecret" + } + } + ], + "credentials_links": [] +} diff --git a/api-ref/source/identity/v2/samples/OS-KSADM/role-create-request.json b/api-ref/source/identity/v2/samples/OS-KSADM/role-create-request.json new file mode 100644 index 000000000..2df605f55 --- /dev/null +++ b/api-ref/source/identity/v2/samples/OS-KSADM/role-create-request.json @@ -0,0 +1,7 @@ +{ + "role": { + "id": "123", + "name": "Guest", + "description": "Guest Access" + } +} diff --git a/api-ref/source/identity/v2/samples/OS-KSADM/role-show-response.json b/api-ref/source/identity/v2/samples/OS-KSADM/role-show-response.json new file mode 100644 index 000000000..2df605f55 --- /dev/null +++ b/api-ref/source/identity/v2/samples/OS-KSADM/role-show-response.json @@ -0,0 +1,7 @@ +{ + "role": { + "id": "123", + "name": "Guest", + "description": "Guest Access" + } +} diff --git a/api-ref/source/identity/v2/samples/OS-KSADM/roles-list-response.json b/api-ref/source/identity/v2/samples/OS-KSADM/roles-list-response.json new file mode 100644 index 000000000..ed3b58bd2 --- /dev/null +++ b/api-ref/source/identity/v2/samples/OS-KSADM/roles-list-response.json @@ -0,0 +1,10 @@ +{ + "roles": [ + { + "id": "123", + "name": "compute:admin", + "description": "Nova Administrator" + } + ], + "roles_links": [] +} diff --git a/api-ref/source/identity/v2/samples/OS-KSADM/service-create-request.json b/api-ref/source/identity/v2/samples/OS-KSADM/service-create-request.json new file mode 100644 index 000000000..06acd60a4 --- /dev/null +++ b/api-ref/source/identity/v2/samples/OS-KSADM/service-create-request.json @@ -0,0 +1,8 @@ +{ + "OS-KSADM:service": { + "id": "123", + "name": "nova", + "type": "compute", + "description": "OpenStack Compute Service" + } +} diff --git a/api-ref/source/identity/v2/samples/OS-KSADM/service-show-response.json b/api-ref/source/identity/v2/samples/OS-KSADM/service-show-response.json new file mode 100644 index 000000000..06acd60a4 --- /dev/null +++ b/api-ref/source/identity/v2/samples/OS-KSADM/service-show-response.json @@ -0,0 +1,8 @@ +{ + "OS-KSADM:service": { + "id": "123", + "name": "nova", + "type": "compute", + "description": "OpenStack Compute Service" + } +} diff --git a/api-ref/source/identity/v2/samples/OS-KSADM/services-list-response.json b/api-ref/source/identity/v2/samples/OS-KSADM/services-list-response.json new file mode 100644 index 000000000..07cd95cb3 --- /dev/null +++ b/api-ref/source/identity/v2/samples/OS-KSADM/services-list-response.json @@ -0,0 +1,17 @@ +{ + "OS-KSADM:services": [ + { + "id": "123", + "name": "nova", + "type": "compute", + "description": "OpenStack Compute Service" + }, + { + "id": "234", + "name": "glance", + "type": "image", + "description": "OpenStack Image Service" + } + ], + "OS-KSADM:services_links": [] +} diff --git a/api-ref/source/identity/v2/samples/OS-KSADM/tenant-show-response.json b/api-ref/source/identity/v2/samples/OS-KSADM/tenant-show-response.json new file mode 100644 index 000000000..05fad705f --- /dev/null +++ b/api-ref/source/identity/v2/samples/OS-KSADM/tenant-show-response.json @@ -0,0 +1,8 @@ +{ + "tenant": { + "id": "1234", + "name": "ACME corp", + "description": "A description ...", + "enabled": true + } +} diff --git a/api-ref/source/identity/v2/samples/OS-KSADM/tenant-update-request.json b/api-ref/source/identity/v2/samples/OS-KSADM/tenant-update-request.json new file mode 100644 index 000000000..05fad705f --- /dev/null +++ b/api-ref/source/identity/v2/samples/OS-KSADM/tenant-update-request.json @@ -0,0 +1,8 @@ +{ + "tenant": { + "id": "1234", + "name": "ACME corp", + "description": "A description ...", + "enabled": true + } +} diff --git a/api-ref/source/identity/v2/samples/OS-KSADM/tenantwithoutid-create-request.json b/api-ref/source/identity/v2/samples/OS-KSADM/tenantwithoutid-create-request.json new file mode 100644 index 000000000..b18dc9665 --- /dev/null +++ b/api-ref/source/identity/v2/samples/OS-KSADM/tenantwithoutid-create-request.json @@ -0,0 +1,7 @@ +{ + "tenant": { + "name": "ACME corp", + "description": "A description ...", + "enabled": true + } +} diff --git a/api-ref/source/identity/v2/samples/OS-KSADM/user-roles-list-response.json b/api-ref/source/identity/v2/samples/OS-KSADM/user-roles-list-response.json new file mode 100644 index 000000000..7c916915e --- /dev/null +++ b/api-ref/source/identity/v2/samples/OS-KSADM/user-roles-list-response.json @@ -0,0 +1,12 @@ +{ + "roles": [ + { + "id": "8341d3603a1d4d5985bff09f10704d4d", + "name": "service" + }, + { + "id": "2e66d57df76946fdbe034bc4da6fdec0", + "name": "admin" + } + ] +} diff --git a/api-ref/source/identity/v2/samples/OS-KSADM/user-show-response.json b/api-ref/source/identity/v2/samples/OS-KSADM/user-show-response.json new file mode 100644 index 000000000..78c8dfea7 --- /dev/null +++ b/api-ref/source/identity/v2/samples/OS-KSADM/user-show-response.json @@ -0,0 +1,8 @@ +{ + "user": { + "id": "u1000", + "name": "jqsmith", + "email": "john.smith@example.org", + "enabled": true + } +} diff --git a/api-ref/source/identity/v2/samples/OS-KSADM/user-update-request.json b/api-ref/source/identity/v2/samples/OS-KSADM/user-update-request.json new file mode 100644 index 000000000..78c8dfea7 --- /dev/null +++ b/api-ref/source/identity/v2/samples/OS-KSADM/user-update-request.json @@ -0,0 +1,8 @@ +{ + "user": { + "id": "u1000", + "name": "jqsmith", + "email": "john.smith@example.org", + "enabled": true + } +} diff --git a/api-ref/source/identity/v2/samples/OS-KSADM/users-list-response.json b/api-ref/source/identity/v2/samples/OS-KSADM/users-list-response.json new file mode 100644 index 000000000..06c3e0f8d --- /dev/null +++ b/api-ref/source/identity/v2/samples/OS-KSADM/users-list-response.json @@ -0,0 +1,17 @@ +{ + "users": [ + { + "id": "u1000", + "name": "jqsmith", + "email": "john.smith@example.org", + "enabled": true + }, + { + "id": "u1001", + "name": "jqsmith", + "email": "john.smith@example.org", + "enabled": true + } + ], + "users_links": [] +} diff --git a/api-ref/source/identity/v2/samples/OS-KSADM/userwithenabledonly-enable-request.json b/api-ref/source/identity/v2/samples/OS-KSADM/userwithenabledonly-enable-request.json new file mode 100644 index 000000000..65beabab7 --- /dev/null +++ b/api-ref/source/identity/v2/samples/OS-KSADM/userwithenabledonly-enable-request.json @@ -0,0 +1,5 @@ +{ + "user": { + "enabled": true + } +} diff --git a/api-ref/source/identity/v2/samples/OS-KSADM/userwithenabledonly-show-response.json b/api-ref/source/identity/v2/samples/OS-KSADM/userwithenabledonly-show-response.json new file mode 100644 index 000000000..65beabab7 --- /dev/null +++ b/api-ref/source/identity/v2/samples/OS-KSADM/userwithenabledonly-show-response.json @@ -0,0 +1,5 @@ +{ + "user": { + "enabled": true + } +} diff --git a/api-ref/source/identity/v2/samples/OS-KSADM/userwithoutid-create-request.json b/api-ref/source/identity/v2/samples/OS-KSADM/userwithoutid-create-request.json new file mode 100644 index 000000000..88d1377e6 --- /dev/null +++ b/api-ref/source/identity/v2/samples/OS-KSADM/userwithoutid-create-request.json @@ -0,0 +1,8 @@ +{ + "user": { + "name": "jqsmith", + "email": "john.smith@example.org", + "enabled": true, + "OS-KSADM:password": "secretsecret" + } +} diff --git a/api-ref/source/identity/v2/samples/OS-KSCATALOG/endpoint-show-response.json b/api-ref/source/identity/v2/samples/OS-KSCATALOG/endpoint-show-response.json new file mode 100644 index 000000000..9941133db --- /dev/null +++ b/api-ref/source/identity/v2/samples/OS-KSCATALOG/endpoint-show-response.json @@ -0,0 +1,11 @@ +{ + "endpoint": { + "id": 1, + "tenantId": 1, + "region": "North", + "type": "compute", + "publicURL": "https://compute.north.public.com/v1", + "internalURL": "https://compute.north.internal.com/v1", + "adminURL": "https://compute.north.internal.com/v1" + } +} diff --git a/api-ref/source/identity/v2/samples/OS-KSCATALOG/endpointTemplate-create-request.json b/api-ref/source/identity/v2/samples/OS-KSCATALOG/endpointTemplate-create-request.json new file mode 100644 index 000000000..60ca51bd4 --- /dev/null +++ b/api-ref/source/identity/v2/samples/OS-KSCATALOG/endpointTemplate-create-request.json @@ -0,0 +1,14 @@ +{ + "OS-KSCATALOG:endpointTemplate": { + "id": 1, + "region": "North", + "global": true, + "type": "compute", + "publicURL": "https://compute.north.public.com/v1", + "internalURL": "https://compute.north.internal.com/v1", + "versionId": "1", + "versionInfo": "https://compute.north.public.com/v1/", + "versionList": "https://compute.north.public.com/", + "enabled": true + } +} diff --git a/api-ref/source/identity/v2/samples/OS-KSCATALOG/endpointTemplate-show-response.json b/api-ref/source/identity/v2/samples/OS-KSCATALOG/endpointTemplate-show-response.json new file mode 100644 index 000000000..ce56fa6c3 --- /dev/null +++ b/api-ref/source/identity/v2/samples/OS-KSCATALOG/endpointTemplate-show-response.json @@ -0,0 +1,11 @@ +{ + "OS-KSCATALOG:endpointTemplate": { + "id": 1, + "region": "North", + "global": true, + "type": "compute", + "publicURL": "https://compute.north.public.com/v1", + "internalURL": "https://compute.north.internal.com/v1", + "enabled": true + } +} diff --git a/api-ref/source/identity/v2/samples/OS-KSCATALOG/endpointTemplateWithOnlyId-create-request.json b/api-ref/source/identity/v2/samples/OS-KSCATALOG/endpointTemplateWithOnlyId-create-request.json new file mode 100644 index 000000000..9e33b3e93 --- /dev/null +++ b/api-ref/source/identity/v2/samples/OS-KSCATALOG/endpointTemplateWithOnlyId-create-request.json @@ -0,0 +1,5 @@ +{ + "OS-KSCATALOG:endpointTemplate": { + "id": 1 + } +} diff --git a/api-ref/source/identity/v2/samples/OS-KSCATALOG/endpointTemplates-list-response.json b/api-ref/source/identity/v2/samples/OS-KSCATALOG/endpointTemplates-list-response.json new file mode 100644 index 000000000..153a69b73 --- /dev/null +++ b/api-ref/source/identity/v2/samples/OS-KSCATALOG/endpointTemplates-list-response.json @@ -0,0 +1,44 @@ +{ + "OS-KSCATALOG:endpointsTemplates": [ + { + "id": 1, + "region": "North", + "global": true, + "type": "compute", + "publicURL": "https://compute.north.public.com/v1", + "internalURL": "https://compute.north.internal.com/v1", + "enabled": true + }, + { + "id": 2, + "region": "South", + "type": "compute", + "publicURL": "https://compute.south.public.com/v1", + "internalURL": "https://compute.south.internal.com/v1", + "enabled": false + }, + { + "id": 3, + "region": "North", + "global": true, + "type": "object-store", + "publicURL": "https://object-store.north.public.com/v1.0", + "enabled": true + }, + { + "id": 4, + "region": "South", + "type": "object-store", + "publicURL": "https://object-store.south.public.com/v2", + "enabled": true + }, + { + "id": 5, + "global": true, + "type": "OS-DNS:DNS", + "publicURL": "https://dns.public.com/v3.2", + "enabled": true + } + ], + "OS-KSCATALOG:endpointsTemplates_links": [] +} diff --git a/api-ref/source/identity/v2/samples/OS-KSCATALOG/endpoints-list-response.json b/api-ref/source/identity/v2/samples/OS-KSCATALOG/endpoints-list-response.json new file mode 100644 index 000000000..ee1d8cd39 --- /dev/null +++ b/api-ref/source/identity/v2/samples/OS-KSCATALOG/endpoints-list-response.json @@ -0,0 +1,50 @@ +{ + "endpoints": [ + { + "id": 1, + "tenantId": "1", + "region": "North", + "type": "compute", + "publicURL": "https://compute.north.public.com/v1", + "internalURL": "https://compute.north.internal.com/v1", + "adminURL": "https://compute.north.internal.com/v1" + }, + { + "id": 2, + "tenantId": "1", + "region": "South", + "type": "compute", + "publicURL": "https://compute.north.public.com/v1", + "internalURL": "https://compute.north.internal.com/v1", + "adminURL": "https://compute.north.internal.com/v1" + }, + { + "id": 3, + "tenantId": "1", + "region": "East", + "type": "compute", + "publicURL": "https://compute.north.public.com/v1", + "internalURL": "https://compute.north.internal.com/v1", + "adminURL": "https://compute.north.internal.com/v1" + }, + { + "id": 4, + "tenantId": "1", + "region": "West", + "type": "compute", + "publicURL": "https://compute.north.public.com/v1", + "internalURL": "https://compute.north.internal.com/v1", + "adminURL": "https://compute.north.internal.com/v1" + }, + { + "id": 5, + "tenantId": "1", + "region": "Global", + "type": "compute", + "publicURL": "https://compute.north.public.com/v1", + "internalURL": "https://compute.north.internal.com/v1", + "adminURL": "https://compute.north.internal.com/v1" + } + ], + "endpoints_links": [] +} diff --git a/api-ref/source/identity/v2/samples/OS-KSEC2/credentialswithec2-list-response.json b/api-ref/source/identity/v2/samples/OS-KSEC2/credentialswithec2-list-response.json new file mode 100644 index 000000000..f3884c07c --- /dev/null +++ b/api-ref/source/identity/v2/samples/OS-KSEC2/credentialswithec2-list-response.json @@ -0,0 +1,18 @@ +{ + "credentials": [ + { + "passwordCredentials": { + "username": "test_user", + "password": "secretsecret" + } + }, + { + "OS-KSEC2-ec2Credentials": { + "username": "test_user", + "secret": "secretsecret", + "signature": "bbb" + } + } + ], + "credentials_links": [] +} diff --git a/api-ref/source/identity/v2/samples/OS-KSEC2/ec2Credentials-create-request.json b/api-ref/source/identity/v2/samples/OS-KSEC2/ec2Credentials-create-request.json new file mode 100644 index 000000000..db53bcc04 --- /dev/null +++ b/api-ref/source/identity/v2/samples/OS-KSEC2/ec2Credentials-create-request.json @@ -0,0 +1,7 @@ +{ + "OS-KSEC2-ec2Credentials": { + "username": "test_user", + "secret": "secretsecret", + "signature": "bbb" + } +} diff --git a/api-ref/source/identity/v2/samples/OS-KSEC2/ec2Credentials-show-response.json b/api-ref/source/identity/v2/samples/OS-KSEC2/ec2Credentials-show-response.json new file mode 100644 index 000000000..db53bcc04 --- /dev/null +++ b/api-ref/source/identity/v2/samples/OS-KSEC2/ec2Credentials-show-response.json @@ -0,0 +1,7 @@ +{ + "OS-KSEC2-ec2Credentials": { + "username": "test_user", + "secret": "secretsecret", + "signature": "bbb" + } +} diff --git a/api-ref/source/identity/v2/samples/OS-KSS3/credentialswiths3-list-response.json b/api-ref/source/identity/v2/samples/OS-KSS3/credentialswiths3-list-response.json new file mode 100644 index 000000000..264b585fc --- /dev/null +++ b/api-ref/source/identity/v2/samples/OS-KSS3/credentialswiths3-list-response.json @@ -0,0 +1,18 @@ +{ + "credentials": [ + { + "passwordCredentials": { + "username": "test_user", + "password": "secretsecret" + } + }, + { + "OS-KSS3:s3Credentials": { + "username": "test_user", + "secret": "secretsecret", + "signature": "bbb" + } + } + ], + "credentials_links": [] +} diff --git a/api-ref/source/identity/v2/samples/OS-KSS3/s3Credentials-create-request.json b/api-ref/source/identity/v2/samples/OS-KSS3/s3Credentials-create-request.json new file mode 100644 index 000000000..e91d41468 --- /dev/null +++ b/api-ref/source/identity/v2/samples/OS-KSS3/s3Credentials-create-request.json @@ -0,0 +1,7 @@ +{ + "OS-KSS3:s3Credentials": { + "username": "test_user", + "secret": "secretsecret", + "signature": "bbb" + } +} diff --git a/api-ref/source/identity/v2/samples/OS-KSS3/s3Credentials-show-response.json b/api-ref/source/identity/v2/samples/OS-KSS3/s3Credentials-show-response.json new file mode 100644 index 000000000..e91d41468 --- /dev/null +++ b/api-ref/source/identity/v2/samples/OS-KSS3/s3Credentials-show-response.json @@ -0,0 +1,7 @@ +{ + "OS-KSS3:s3Credentials": { + "username": "test_user", + "secret": "secretsecret", + "signature": "bbb" + } +} diff --git a/api-ref/source/identity/v2/samples/OS-KSVALIDATE/endpoints-list-response.json b/api-ref/source/identity/v2/samples/OS-KSVALIDATE/endpoints-list-response.json new file mode 100644 index 000000000..ee1d8cd39 --- /dev/null +++ b/api-ref/source/identity/v2/samples/OS-KSVALIDATE/endpoints-list-response.json @@ -0,0 +1,50 @@ +{ + "endpoints": [ + { + "id": 1, + "tenantId": "1", + "region": "North", + "type": "compute", + "publicURL": "https://compute.north.public.com/v1", + "internalURL": "https://compute.north.internal.com/v1", + "adminURL": "https://compute.north.internal.com/v1" + }, + { + "id": 2, + "tenantId": "1", + "region": "South", + "type": "compute", + "publicURL": "https://compute.north.public.com/v1", + "internalURL": "https://compute.north.internal.com/v1", + "adminURL": "https://compute.north.internal.com/v1" + }, + { + "id": 3, + "tenantId": "1", + "region": "East", + "type": "compute", + "publicURL": "https://compute.north.public.com/v1", + "internalURL": "https://compute.north.internal.com/v1", + "adminURL": "https://compute.north.internal.com/v1" + }, + { + "id": 4, + "tenantId": "1", + "region": "West", + "type": "compute", + "publicURL": "https://compute.north.public.com/v1", + "internalURL": "https://compute.north.internal.com/v1", + "adminURL": "https://compute.north.internal.com/v1" + }, + { + "id": 5, + "tenantId": "1", + "region": "Global", + "type": "compute", + "publicURL": "https://compute.north.public.com/v1", + "internalURL": "https://compute.north.internal.com/v1", + "adminURL": "https://compute.north.internal.com/v1" + } + ], + "endpoints_links": [] +} diff --git a/api-ref/source/identity/v2/samples/OS-KSVALIDATE/token-validate-response.json b/api-ref/source/identity/v2/samples/OS-KSVALIDATE/token-validate-response.json new file mode 100644 index 000000000..43d1a8a07 --- /dev/null +++ b/api-ref/source/identity/v2/samples/OS-KSVALIDATE/token-validate-response.json @@ -0,0 +1,28 @@ +{ + "access": { + "token": { + "id": "ab48a9efdfedb23ty3494", + "expires": "2010-11-01T03:32:15-05:00", + "tenant": { + "id": "345", + "name": "My Project" + } + }, + "user": { + "id": "123", + "name": "jqsmith", + "roles": [ + { + "id": "234", + "name": "compute:admin" + }, + { + "id": "234", + "name": "object-store:admin", + "tenantId": "1" + } + ], + "roles_links": [] + } + } +} diff --git a/api-ref/source/identity/v2/samples/admin/UserUpdatePasswordRequest.json b/api-ref/source/identity/v2/samples/admin/UserUpdatePasswordRequest.json new file mode 100644 index 000000000..592b99be1 --- /dev/null +++ b/api-ref/source/identity/v2/samples/admin/UserUpdatePasswordRequest.json @@ -0,0 +1,6 @@ +{ + "user": { + "password": "old_secretsecret", + "original_password": "secretsecret" + } +} diff --git a/api-ref/source/identity/v2/samples/admin/authenticate-credentials-request.json b/api-ref/source/identity/v2/samples/admin/authenticate-credentials-request.json new file mode 100644 index 000000000..3c2cb316b --- /dev/null +++ b/api-ref/source/identity/v2/samples/admin/authenticate-credentials-request.json @@ -0,0 +1,9 @@ +{ + "auth": { + "tenantName": "admin", + "passwordCredentials": { + "username": "admin", + "password": "secretsecret" + } + } +} diff --git a/api-ref/source/identity/v2/samples/admin/authenticate-response.json b/api-ref/source/identity/v2/samples/admin/authenticate-response.json new file mode 100644 index 000000000..79fc6ce12 --- /dev/null +++ b/api-ref/source/identity/v2/samples/admin/authenticate-response.json @@ -0,0 +1,184 @@ +{ + "access": { + "token": { + "issued_at": "2014-01-30T17:09:57.647795", + "expires": "2014-01-31T17:09:57Z", + "id": "admin_id", + "tenant": { + "description": null, + "enabled": true, + "id": "73f0aa26640f4971864919d0eb0f0880", + "name": "admin" + } + }, + "serviceCatalog": [ + { + "endpoints": [ + { + "adminURL": "http://23.253.72.207:8774/v2/73f0aa26640f4971864919d0eb0f0880", + "region": "RegionOne", + "internalURL": "http://23.253.72.207:8774/v2/73f0aa26640f4971864919d0eb0f0880", + "id": "2dad48f09e2a447a9bf852bcd93548ef", + "publicURL": "http://23.253.72.207:8774/v2/73f0aa26640f4971864919d0eb0f0880" + } + ], + "endpoints_links": [], + "type": "compute", + "name": "nova" + }, + { + "endpoints": [ + { + "adminURL": "http://23.253.72.207:9696/", + "region": "RegionOne", + "internalURL": "http://23.253.72.207:9696/", + "id": "97c526db8d7a4c88bbb8d68db1bdcdb8", + "publicURL": "http://23.253.72.207:9696/" + } + ], + "endpoints_links": [], + "type": "network", + "name": "neutron" + }, + { + "endpoints": [ + { + "adminURL": "http://23.253.72.207:8776/v2/73f0aa26640f4971864919d0eb0f0880", + "region": "RegionOne", + "internalURL": "http://23.253.72.207:8776/v2/73f0aa26640f4971864919d0eb0f0880", + "id": "93f86dfcbba143a39a33d0c2cd424870", + "publicURL": "http://23.253.72.207:8776/v2/73f0aa26640f4971864919d0eb0f0880" + } + ], + "endpoints_links": [], + "type": "volumev2", + "name": "cinder" + }, + { + "endpoints": [ + { + "adminURL": "http://23.253.72.207:8774/v3", + "region": "RegionOne", + "internalURL": "http://23.253.72.207:8774/v3", + "id": "3eb274b12b1d47b2abc536038d87339e", + "publicURL": "http://23.253.72.207:8774/v3" + } + ], + "endpoints_links": [], + "type": "computev3", + "name": "nova" + }, + { + "endpoints": [ + { + "adminURL": "http://23.253.72.207:3333", + "region": "RegionOne", + "internalURL": "http://23.253.72.207:3333", + "id": "957f1e54afc64d33a62099faa5e980a2", + "publicURL": "http://23.253.72.207:3333" + } + ], + "endpoints_links": [], + "type": "s3", + "name": "s3" + }, + { + "endpoints": [ + { + "adminURL": "http://23.253.72.207:9292", + "region": "RegionOne", + "internalURL": "http://23.253.72.207:9292", + "id": "27d5749f36864c7d96bebf84a5ec9767", + "publicURL": "http://23.253.72.207:9292" + } + ], + "endpoints_links": [], + "type": "image", + "name": "glance" + }, + { + "endpoints": [ + { + "adminURL": "http://23.253.72.207:8776/v1/73f0aa26640f4971864919d0eb0f0880", + "region": "RegionOne", + "internalURL": "http://23.253.72.207:8776/v1/73f0aa26640f4971864919d0eb0f0880", + "id": "37c83a2157f944f1972e74658aa0b139", + "publicURL": "http://23.253.72.207:8776/v1/73f0aa26640f4971864919d0eb0f0880" + } + ], + "endpoints_links": [], + "type": "volume", + "name": "cinder" + }, + { + "endpoints": [ + { + "adminURL": "http://23.253.72.207:8773/services/Admin", + "region": "RegionOne", + "internalURL": "http://23.253.72.207:8773/services/Cloud", + "id": "289b59289d6048e2912b327e5d3240ca", + "publicURL": "http://23.253.72.207:8773/services/Cloud" + } + ], + "endpoints_links": [], + "type": "ec2", + "name": "ec2" + }, + { + "endpoints": [ + { + "adminURL": "http://23.253.72.207:8080", + "region": "RegionOne", + "internalURL": "http://23.253.72.207:8080/v1/AUTH_73f0aa26640f4971864919d0eb0f0880", + "id": "16b76b5e5b7d48039a6e4cc3129545f3", + "publicURL": "http://23.253.72.207:8080/v1/AUTH_73f0aa26640f4971864919d0eb0f0880" + } + ], + "endpoints_links": [], + "type": "object-store", + "name": "swift" + }, + { + "endpoints": [ + { + "adminURL": "http://23.253.72.207:35357/v2.0", + "region": "RegionOne", + "internalURL": "http://23.253.72.207:5000/v2.0", + "id": "26af053673df4ef3a2340c4239e21ea2", + "publicURL": "http://23.253.72.207:5000/v2.0" + } + ], + "endpoints_links": [], + "type": "identity", + "name": "keystone" + } + ], + "user": { + "username": "admin", + "roles_links": [], + "id": "1f568815cb8148688e6ee9b2f7527dcc", + "roles": [ + { + "name": "service" + }, + { + "name": "admin" + } + ], + "name": "admin" + }, + "metadata": { + "is_admin": 0, + "roles": [ + "8341d3603a1d4d5985bff09f10704d4d", + "2e66d57df76946fdbe034bc4da6fdec0" + ] + }, + "trust": { + "id": "394998fa61f14736b1f0c1f322882949", + "trustee_user_id": "269348fdd9374b8885da1418e0730af1", + "trustor_user_id": "3ec3164f750146be97f21559ee4d9c51", + "impersonation": false + } + } +} diff --git a/api-ref/source/identity/v2/samples/admin/authenticate-token-request.json b/api-ref/source/identity/v2/samples/admin/authenticate-token-request.json new file mode 100644 index 000000000..d9513c7a6 --- /dev/null +++ b/api-ref/source/identity/v2/samples/admin/authenticate-token-request.json @@ -0,0 +1,8 @@ +{ + "auth": { + "tenantName": "demo", + "token": { + "id": "cbc36478b0bd8e67e89469c7749d4127" + } + } +} diff --git a/api-ref/source/identity/v2/samples/admin/endpoints-list-response.json b/api-ref/source/identity/v2/samples/admin/endpoints-list-response.json new file mode 100644 index 000000000..838d467c5 --- /dev/null +++ b/api-ref/source/identity/v2/samples/admin/endpoints-list-response.json @@ -0,0 +1,122 @@ +{ + "endpoints_links": [], + "endpoints": [ + { + "name": "nova", + "adminURL": "https://nova.region-one.internal.com/v2/be1319401cfa4a0aa590b97cc7b64d8d", + "region": "RegionOne", + "internalURL": "https://nova.region-one.internal.com/v2/be1319401cfa4a0aa590b97cc7b64d8d", + "type": "compute", + "id": "11b41ee1b00841128b7333d4bf1a6140", + "publicURL": "https://nova.region-one.public.com/v2/be1319401cfa4a0aa590b97cc7b64d8d" + }, + { + "name": "neutron", + "adminURL": "https://neutron.region-one.internal.com/", + "region": "RegionOne", + "internalURL": "https://neutron.region-one.internal.com/", + "type": "network", + "id": "cdbfa3c416d741a9b5c968f2dc628acb", + "publicURL": "https://neutron.region-one.public.com/" + }, + { + "name": "cinderv2", + "adminURL": "https://cinderv2.region-one.internal.com/v2/be1319401cfa4a0aa590b97cc7b64d8d", + "region": "RegionOne", + "internalURL": "https://cinderv2.region-one.internal.com/v2/be1319401cfa4a0aa590b97cc7b64d8d", + "type": "cinderv2v2", + "id": "6de282e4132747ecb48f6fd8c525c6f6", + "publicURL": "https://cinderv2.region-one.public.com/v2/be1319401cfa4a0aa590b97cc7b64d8d" + }, + { + "name": "trove", + "adminURL": "https://trove.region-one.internal.com/v1.0/be1319401cfa4a0aa590b97cc7b64d8d", + "region": "RegionOne", + "internalURL": "https://trove.region-one.internal.com/v1.0/be1319401cfa4a0aa590b97cc7b64d8d", + "type": "database", + "id": "4bfad53a0c684bd981d093099eb7799b", + "publicURL": "https://trove.region-one.public.com/v1.0/be1319401cfa4a0aa590b97cc7b64d8d" + }, + { + "name": "s3", + "adminURL": "https://s3.region-one.internal.com", + "region": "RegionOne", + "internalURL": "https://s3.region-one.internal.com", + "type": "s3", + "id": "50fb6b43cde44bb6b0e471a682dc42dd", + "publicURL": "https://s3.region-one.public.com" + }, + { + "name": "glance", + "adminURL": "https://glance.region-one.internal.com", + "region": "RegionOne", + "internalURL": "https://glance.region-one.internal.com", + "type": "glance", + "id": "838a338171164c3c8f56e6b5882267ff", + "publicURL": "https://glance.region-one.public.com" + }, + { + "name": "novav3", + "adminURL": "https://novav3.region-one.internal.com/v3", + "region": "RegionOne", + "internalURL": "https://novav3.region-one.internal.com/v3", + "type": "computev3", + "id": "b437edd03d244bf4be605b9b8c8689e0", + "publicURL": "https://novav3.region-one.public.com/v3" + }, + { + "name": "heat", + "adminURL": "https://heat.region-one.internal.comv1", + "region": "RegionOne", + "internalURL": "https://heat.region-one.internal.comv1", + "type": "cloudformation", + "id": "7a0f6f37344d488fa596a1325e0fcf10", + "publicURL": "https://heat.region-one.public.comv1" + }, + { + "name": "cinder", + "adminURL": "https://cinder.region-one.internal.com/v1/be1319401cfa4a0aa590b97cc7b64d8d", + "region": "RegionOne", + "internalURL": "https://cinder.region-one.internal.com/v1/be1319401cfa4a0aa590b97cc7b64d8d", + "type": "cinderv2", + "id": "d4f251065dce4ce3946d3c1b87e167f2", + "publicURL": "https://cinder.region-one.public.com/v1/be1319401cfa4a0aa590b97cc7b64d8d" + }, + { + "name": "ec2", + "adminURL": "https://ec2.region-one.internal.com/services/Admin", + "region": "RegionOne", + "internalURL": "https://ec2.region-one.internal.com/services/Cloud", + "type": "ec2", + "id": "44c6bf28d9bd4d63bfb00d66f22439a8", + "publicURL": "https://ec2.region-one.public.com/services/Cloud" + }, + { + "name": "heat", + "adminURL": "https://heat.region-one.internal.com/v1/be1319401cfa4a0aa590b97cc7b64d8d", + "region": "RegionOne", + "internalURL": "https://heat.region-one.internal.com/v1/be1319401cfa4a0aa590b97cc7b64d8d", + "type": "orchestration", + "id": "21aaace3f33c46b8aaea2b17d41ffd54", + "publicURL": "https://heat.region-one.public.com/v1/be1319401cfa4a0aa590b97cc7b64d8d" + }, + { + "name": "swift", + "adminURL": "https://swift.region-one.internal.com", + "region": "RegionOne", + "internalURL": "https://swift.region-one.internal.com/v1/AUTH_be1319401cfa4a0aa590b97cc7b64d8d", + "type": "object-store", + "id": "35f7aca3be384580a3b1df43a97c2eb2", + "publicURL": "https://swift.region-one.public.com/v1/AUTH_be1319401cfa4a0aa590b97cc7b64d8d" + }, + { + "name": "keystone", + "adminURL": "https://keystone.region-one.internal.com/v2.0", + "region": "RegionOne", + "internalURL": "https://keystone.region-one.internal.com/v2.0", + "type": "identity", + "id": "48da758fb58c47dcaf02000a4409a265", + "publicURL": "https://keystone.region-one.public.com/v2.0" + } + ] +} diff --git a/api-ref/source/identity/v2/samples/admin/extension-show-response.json b/api-ref/source/identity/v2/samples/admin/extension-show-response.json new file mode 100644 index 000000000..835a22d76 --- /dev/null +++ b/api-ref/source/identity/v2/samples/admin/extension-show-response.json @@ -0,0 +1,16 @@ +{ + "extension": { + "updated": "2013-07-07T12:00:0-00:00", + "name": "OpenStack OAUTH1 API", + "links": [ + { + "href": "https://github.com/openstack/identity-api", + "type": "text/html", + "rel": "describedby" + } + ], + "namespace": "http://docs.openstack.org/identity/api/ext/OS-OAUTH1/v1.0", + "alias": "OS-OAUTH1", + "description": "OpenStack OAuth 1.0a Delegated Auth Mechanism." + } +} diff --git a/api-ref/source/identity/v2/samples/admin/extensions-list-response.json b/api-ref/source/identity/v2/samples/admin/extensions-list-response.json new file mode 100644 index 000000000..5ac8f81c8 --- /dev/null +++ b/api-ref/source/identity/v2/samples/admin/extensions-list-response.json @@ -0,0 +1,118 @@ +{ + "extensions": { + "values": [ + { + "updated": "2013-07-07T12:00:0-00:00", + "name": "OpenStack S3 API", + "links": [ + { + "href": "https://github.com/openstack/identity-api", + "type": "text/html", + "rel": "describedby" + } + ], + "namespace": "http://docs.openstack.org/identity/api/ext/s3tokens/v1.0", + "alias": "s3tokens", + "description": "OpenStack S3 API." + }, + { + "updated": "2013-07-23T12:00:0-00:00", + "name": "OpenStack Keystone Endpoint Filter API", + "links": [ + { + "href": "https://github.com/openstack/identity-api/blob/master/openstack-identity-api/v3/src/markdown/identity-api-v3-os-ep-filter-ext.md", + "type": "text/html", + "rel": "describedby" + } + ], + "namespace": "http://docs.openstack.org/identity/api/ext/OS-EP-FILTER/v1.0", + "alias": "OS-EP-FILTER", + "description": "OpenStack Keystone Endpoint Filter API." + }, + { + "updated": "2014-02-24T20:51:0-00:00", + "name": "OpenStack Revoke API", + "links": [ + { + "href": "https://github.com/openstack/identity-api/blob/master/openstack-identity-api/v3/src/markdown/identity-api-v3-os-revoke-ext.md", + "type": "text/html", + "rel": "describedby" + } + ], + "namespace": "http://docs.openstack.org/identity/api/ext/OS-REVOKE/v1.0", + "alias": "OS-REVOKE", + "description": "OpenStack revoked token reporting mechanism." + }, + { + "updated": "2013-12-17T12:00:0-00:00", + "name": "OpenStack Federation APIs", + "links": [ + { + "href": "https://github.com/openstack/identity-api", + "type": "text/html", + "rel": "describedby" + } + ], + "namespace": "http://docs.openstack.org/identity/api/ext/OS-FEDERATION/v1.0", + "alias": "OS-FEDERATION", + "description": "OpenStack Identity Providers Mechanism." + }, + { + "updated": "2013-07-11T17:14:00-00:00", + "name": "OpenStack Keystone Admin", + "links": [ + { + "href": "https://github.com/openstack/identity-api", + "type": "text/html", + "rel": "describedby" + } + ], + "namespace": "http://docs.openstack.org/identity/api/ext/OS-KSADM/v1.0", + "alias": "OS-KSADM", + "description": "OpenStack extensions to Keystone v2.0 API enabling Administrative Operations." + }, + { + "updated": "2014-01-20T12:00:0-00:00", + "name": "OpenStack Simple Certificate API", + "links": [ + { + "href": "https://github.com/openstack/identity-api", + "type": "text/html", + "rel": "describedby" + } + ], + "namespace": "http://docs.openstack.org/identity/api/ext/OS-SIMPLE-CERT/v1.0", + "alias": "OS-SIMPLE-CERT", + "description": "OpenStack simple certificate retrieval extension" + }, + { + "updated": "2013-07-07T12:00:0-00:00", + "name": "OpenStack OAUTH1 API", + "links": [ + { + "href": "https://github.com/openstack/identity-api", + "type": "text/html", + "rel": "describedby" + } + ], + "namespace": "http://docs.openstack.org/identity/api/ext/OS-OAUTH1/v1.0", + "alias": "OS-OAUTH1", + "description": "OpenStack OAuth 1.0a Delegated Auth Mechanism." + }, + { + "updated": "2013-07-07T12:00:0-00:00", + "name": "OpenStack EC2 API", + "links": [ + { + "href": "https://github.com/openstack/identity-api", + "type": "text/html", + "rel": "describedby" + } + ], + "namespace": "http://docs.openstack.org/identity/api/ext/OS-EC2/v1.0", + "alias": "OS-EC2", + "description": "OpenStack EC2 Credentials backend." + } + ] + } +} diff --git a/api-ref/source/identity/v2/samples/admin/roles-list-response.json b/api-ref/source/identity/v2/samples/admin/roles-list-response.json new file mode 100644 index 000000000..ed3b58bd2 --- /dev/null +++ b/api-ref/source/identity/v2/samples/admin/roles-list-response.json @@ -0,0 +1,10 @@ +{ + "roles": [ + { + "id": "123", + "name": "compute:admin", + "description": "Nova Administrator" + } + ], + "roles_links": [] +} diff --git a/api-ref/source/identity/v2/samples/admin/tenant-show-response.json b/api-ref/source/identity/v2/samples/admin/tenant-show-response.json new file mode 100644 index 000000000..05fad705f --- /dev/null +++ b/api-ref/source/identity/v2/samples/admin/tenant-show-response.json @@ -0,0 +1,8 @@ +{ + "tenant": { + "id": "1234", + "name": "ACME corp", + "description": "A description ...", + "enabled": true + } +} diff --git a/api-ref/source/identity/v2/samples/admin/tenants-list-request-JSON.txt b/api-ref/source/identity/v2/samples/admin/tenants-list-request-JSON.txt new file mode 100644 index 000000000..9116ca3b6 --- /dev/null +++ b/api-ref/source/identity/v2/samples/admin/tenants-list-request-JSON.txt @@ -0,0 +1,5 @@ +GET /v2.0/tenants HTTP/1.1 +Host: identity.api.openstack.org +Content-Type: application/json +X-Auth-Token: fa8426a0-8eaf-4d22-8e13-7c1b16a9370c +Accept: application/json diff --git a/api-ref/source/identity/v2/samples/admin/tenants-list-response.json b/api-ref/source/identity/v2/samples/admin/tenants-list-response.json new file mode 100644 index 000000000..f825128dc --- /dev/null +++ b/api-ref/source/identity/v2/samples/admin/tenants-list-response.json @@ -0,0 +1,17 @@ +{ + "tenants": [ + { + "id": "1234", + "name": "ACME Corp", + "description": "A description ...", + "enabled": true + }, + { + "id": "3456", + "name": "Iron Works", + "description": "A description ...", + "enabled": true + } + ], + "tenants_links": [] +} diff --git a/api-ref/source/identity/v2/samples/admin/token-validate-response.json b/api-ref/source/identity/v2/samples/admin/token-validate-response.json new file mode 100644 index 000000000..43d1a8a07 --- /dev/null +++ b/api-ref/source/identity/v2/samples/admin/token-validate-response.json @@ -0,0 +1,28 @@ +{ + "access": { + "token": { + "id": "ab48a9efdfedb23ty3494", + "expires": "2010-11-01T03:32:15-05:00", + "tenant": { + "id": "345", + "name": "My Project" + } + }, + "user": { + "id": "123", + "name": "jqsmith", + "roles": [ + { + "id": "234", + "name": "compute:admin" + }, + { + "id": "234", + "name": "object-store:admin", + "tenantId": "1" + } + ], + "roles_links": [] + } + } +} diff --git a/api-ref/source/identity/v2/samples/admin/user-create-request.json b/api-ref/source/identity/v2/samples/admin/user-create-request.json new file mode 100644 index 000000000..0077ec08f --- /dev/null +++ b/api-ref/source/identity/v2/samples/admin/user-create-request.json @@ -0,0 +1,9 @@ +{ + "user": { + "email": "new-user@example.com", + "password": null, + "enabled": true, + "name": "new-user", + "tenantId": "40429f980fac419bbfec372a5607c154" + } +} diff --git a/api-ref/source/identity/v2/samples/admin/user-create-response.json b/api-ref/source/identity/v2/samples/admin/user-create-response.json new file mode 100644 index 000000000..cb1c7ca49 --- /dev/null +++ b/api-ref/source/identity/v2/samples/admin/user-create-response.json @@ -0,0 +1,10 @@ +{ + "user": { + "username": "new-user", + "name": "new-user", + "id": "71767c619a90479ab21626abf76aa46c", + "enabled": true, + "email": "new-user@example.com", + "tenantId": "40429f980fac419bbfec372a5607c154" + } +} diff --git a/api-ref/source/identity/v2/samples/admin/user-show-response.json b/api-ref/source/identity/v2/samples/admin/user-show-response.json new file mode 100644 index 000000000..f783b6ea0 --- /dev/null +++ b/api-ref/source/identity/v2/samples/admin/user-show-response.json @@ -0,0 +1,9 @@ +{ + "user": { + "username": "nova", + "name": "nova", + "enabled": true, + "email": null, + "id": "405ecdef1a434c70bb1e441cd295245d" + } +} diff --git a/api-ref/source/identity/v2/samples/admin/user-update-request.json b/api-ref/source/identity/v2/samples/admin/user-update-request.json new file mode 100644 index 000000000..860e449af --- /dev/null +++ b/api-ref/source/identity/v2/samples/admin/user-update-request.json @@ -0,0 +1,8 @@ +{ + "user": { + "username": "nova", + "name": "nova", + "enabled": false, + "email": null + } +} diff --git a/api-ref/source/identity/v2/samples/admin/user-update-response.json b/api-ref/source/identity/v2/samples/admin/user-update-response.json new file mode 100644 index 000000000..acc30f9f4 --- /dev/null +++ b/api-ref/source/identity/v2/samples/admin/user-update-response.json @@ -0,0 +1,9 @@ +{ + "user": { + "username": "nova", + "name": "nova", + "enabled": false, + "email": null, + "id": "71767c619a90479ab21626abf76aa46c" + } +} diff --git a/api-ref/source/identity/v2/samples/admin/users-list-response.json b/api-ref/source/identity/v2/samples/admin/users-list-response.json new file mode 100644 index 000000000..bb7d0bbe6 --- /dev/null +++ b/api-ref/source/identity/v2/samples/admin/users-list-response.json @@ -0,0 +1,88 @@ +{ + "users": [ + { + "username": "admin", + "name": "admin", + "enabled": true, + "email": null, + "id": "19dec86542d54bc791288b83d05c57a6" + }, + { + "username": "swift", + "name": "swift", + "enabled": true, + "email": null, + "id": "2109a7e134244071ac5b6ce31d8fe5b6" + }, + { + "username": "swiftusertest1", + "name": "swiftusertest1", + "enabled": true, + "email": "test@example.com", + "id": "3b59634090f84745bcd24bc28e564aff" + }, + { + "username": "alt_demo", + "name": "alt_demo", + "enabled": true, + "email": "alt_demo@example.com", + "id": "3f957317491c478daaee50992e5d2d3b" + }, + { + "username": "nova", + "name": "nova", + "enabled": true, + "email": null, + "id": "405ecdef1a434c70bb1e441cd295245d" + }, + { + "username": "swiftusertest3", + "name": "swiftusertest3", + "enabled": true, + "email": "test3@example.com", + "id": "5f58db25affc44c28d678279981c946f" + }, + { + "username": "swiftusertest2", + "name": "swiftusertest2", + "enabled": true, + "email": "test2@example.com", + "id": "9e4a840d8f5a45cdaa589febffcedb01" + }, + { + "username": "glance", + "name": "glance", + "enabled": true, + "email": null, + "id": "9f7df42d30264a0eb5f4e0d01486260d" + }, + { + "username": "demo", + "name": "demo", + "enabled": true, + "email": "demo@example.com", + "id": "a27a3939ad964215ad60315e8b2a3791" + }, + { + "username": "glance-swift", + "name": "glance-swift", + "enabled": true, + "email": "glance-swift@example.com", + "id": "bbe7ee42ffc345c18430599f74af9fa3" + }, + { + "username": "neutron", + "name": "neutron", + "enabled": true, + "email": null, + "id": "cf16ee300c2c412f81474ae452eda38d" + }, + { + "username": "cinder", + "name": "cinder", + "enabled": true, + "email": null, + "id": "f570fcf1692241978015cdb49242e383" + } + ] +} diff --git a/api-ref/source/identity/v2/samples/admin/version-show-response.json b/api-ref/source/identity/v2/samples/admin/version-show-response.json new file mode 100644 index 000000000..2af9d2885 --- /dev/null +++ b/api-ref/source/identity/v2/samples/admin/version-show-response.json @@ -0,0 +1,24 @@ +{ + "version": { + "status": "stable", + "updated": "2014-04-17T00:00:00Z", + "media-types": [ + { + "base": "application/json", + "type": "application/vnd.openstack.identity-v2.0+json" + } + ], + "id": "v2.0", + "links": [ + { + "href": "http://localhost:5000/v2.0/", + "rel": "self" + }, + { + "href": "http://docs.openstack.org/", + "rel": "describedby", + "type": "text/html" + } + ] + } +} diff --git a/api-ref/source/identity/v2/samples/admin/versions-list-response.json b/api-ref/source/identity/v2/samples/admin/versions-list-response.json new file mode 100644 index 000000000..e832fa55f --- /dev/null +++ b/api-ref/source/identity/v2/samples/admin/versions-list-response.json @@ -0,0 +1,45 @@ +{ + "versions": { + "values": [ + { + "id": "v3.4", + "links": [ + { + "href": "http://localhost:35357/v3/", + "rel": "self" + } + ], + "media-types": [ + { + "base": "application/json", + "type": "application/vnd.openstack.identity-v3+json" + } + ], + "status": "stable", + "updated": "2015-03-30T00:00:00Z" + }, + { + "id": "v2.0", + "links": [ + { + "href": "http://localhost:35357/v2.0/", + "rel": "self" + }, + { + "href": "http://docs.openstack.org/", + "rel": "describedby", + "type": "text/html" + } + ], + "media-types": [ + { + "base": "application/json", + "type": "application/vnd.openstack.identity-v2.0+json" + } + ], + "status": "stable", + "updated": "2014-04-17T00:00:00Z" + } + ] + } +} diff --git a/api-ref/source/identity/v2/samples/client/authenticate-credentials-request.json b/api-ref/source/identity/v2/samples/client/authenticate-credentials-request.json new file mode 100644 index 000000000..a50203a26 --- /dev/null +++ b/api-ref/source/identity/v2/samples/client/authenticate-credentials-request.json @@ -0,0 +1,9 @@ +{ + "auth": { + "tenantName": "demo", + "passwordCredentials": { + "username": "demo", + "password": "secretsecret" + } + } +} diff --git a/api-ref/source/identity/v2/samples/client/authenticate-response.json b/api-ref/source/identity/v2/samples/client/authenticate-response.json new file mode 100644 index 000000000..9c25b9df4 --- /dev/null +++ b/api-ref/source/identity/v2/samples/client/authenticate-response.json @@ -0,0 +1,184 @@ +{ + "access": { + "token": { + "issued_at": "2014-01-30T15:30:58.819584", + "expires": "2014-01-31T15:30:58Z", + "id": "aaaaa-bbbbb-ccccc-dddd", + "tenant": { + "description": null, + "enabled": true, + "id": "fc394f2ab2df4114bde39905f800dc57", + "name": "demo" + } + }, + "serviceCatalog": [ + { + "endpoints": [ + { + "adminURL": "http://23.253.72.207:8774/v2/fc394f2ab2df4114bde39905f800dc57", + "region": "RegionOne", + "internalURL": "http://23.253.72.207:8774/v2/fc394f2ab2df4114bde39905f800dc57", + "id": "2dad48f09e2a447a9bf852bcd93548ef", + "publicURL": "http://23.253.72.207:8774/v2/fc394f2ab2df4114bde39905f800dc57" + } + ], + "endpoints_links": [], + "type": "compute", + "name": "nova" + }, + { + "endpoints": [ + { + "adminURL": "http://23.253.72.207:9696/", + "region": "RegionOne", + "internalURL": "http://23.253.72.207:9696/", + "id": "97c526db8d7a4c88bbb8d68db1bdcdb8", + "publicURL": "http://23.253.72.207:9696/" + } + ], + "endpoints_links": [], + "type": "network", + "name": "neutron" + }, + { + "endpoints": [ + { + "adminURL": "http://23.253.72.207:8776/v2/fc394f2ab2df4114bde39905f800dc57", + "region": "RegionOne", + "internalURL": "http://23.253.72.207:8776/v2/fc394f2ab2df4114bde39905f800dc57", + "id": "93f86dfcbba143a39a33d0c2cd424870", + "publicURL": "http://23.253.72.207:8776/v2/fc394f2ab2df4114bde39905f800dc57" + } + ], + "endpoints_links": [], + "type": "volumev2", + "name": "cinder" + }, + { + "endpoints": [ + { + "adminURL": "http://23.253.72.207:8774/v3", + "region": "RegionOne", + "internalURL": "http://23.253.72.207:8774/v3", + "id": "3eb274b12b1d47b2abc536038d87339e", + "publicURL": "http://23.253.72.207:8774/v3" + } + ], + "endpoints_links": [], + "type": "computev3", + "name": "nova" + }, + { + "endpoints": [ + { + "adminURL": "http://23.253.72.207:3333", + "region": "RegionOne", + "internalURL": "http://23.253.72.207:3333", + "id": "957f1e54afc64d33a62099faa5e980a2", + "publicURL": "http://23.253.72.207:3333" + } + ], + "endpoints_links": [], + "type": "s3", + "name": "s3" + }, + { + "endpoints": [ + { + "adminURL": "http://23.253.72.207:9292", + "region": "RegionOne", + "internalURL": "http://23.253.72.207:9292", + "id": "27d5749f36864c7d96bebf84a5ec9767", + "publicURL": "http://23.253.72.207:9292" + } + ], + "endpoints_links": [], + "type": "image", + "name": "glance" + }, + { + "endpoints": [ + { + "adminURL": "http://23.253.72.207:8776/v1/fc394f2ab2df4114bde39905f800dc57", + "region": "RegionOne", + "internalURL": "http://23.253.72.207:8776/v1/fc394f2ab2df4114bde39905f800dc57", + "id": "37c83a2157f944f1972e74658aa0b139", + "publicURL": "http://23.253.72.207:8776/v1/fc394f2ab2df4114bde39905f800dc57" + } + ], + "endpoints_links": [], + "type": "volume", + "name": "cinder" + }, + { + "endpoints": [ + { + "adminURL": "http://23.253.72.207:8773/services/Admin", + "region": "RegionOne", + "internalURL": "http://23.253.72.207:8773/services/Cloud", + "id": "289b59289d6048e2912b327e5d3240ca", + "publicURL": "http://23.253.72.207:8773/services/Cloud" + } + ], + "endpoints_links": [], + "type": "ec2", + "name": "ec2" + }, + { + "endpoints": [ + { + "adminURL": "http://23.253.72.207:8080", + "region": "RegionOne", + "internalURL": "http://23.253.72.207:8080/v1/AUTH_fc394f2ab2df4114bde39905f800dc57", + "id": "16b76b5e5b7d48039a6e4cc3129545f3", + "publicURL": "http://23.253.72.207:8080/v1/AUTH_fc394f2ab2df4114bde39905f800dc57" + } + ], + "endpoints_links": [], + "type": "object-store", + "name": "swift" + }, + { + "endpoints": [ + { + "adminURL": "http://23.253.72.207:35357/v2.0", + "region": "RegionOne", + "internalURL": "http://23.253.72.207:5000/v2.0", + "id": "26af053673df4ef3a2340c4239e21ea2", + "publicURL": "http://23.253.72.207:5000/v2.0" + } + ], + "endpoints_links": [], + "type": "identity", + "name": "keystone" + } + ], + "user": { + "username": "demo", + "roles_links": [], + "id": "9a6590b2ab024747bc2167c4e064d00d", + "roles": [ + { + "name": "Member" + }, + { + "name": "anotherrole" + } + ], + "name": "demo" + }, + "metadata": { + "is_admin": 0, + "roles": [ + "7598ac3c634d4c3da4b9126a5f67ca2b", + "f95c0ab82d6045d9805033ee1fbc80d4" + ] + }, + "trust": { + "id": "394998fa61f14736b1f0c1f322882949", + "trustee_user_id": "269348fdd9374b8885da1418e0730af1", + "trustor_user_id": "3ec3164f750146be97f21559ee4d9c51", + "impersonation": false + } + } +} diff --git a/api-ref/source/identity/v2/versions.inc b/api-ref/source/identity/v2/versions.inc new file mode 100644 index 000000000..fd3ffae01 --- /dev/null +++ b/api-ref/source/identity/v2/versions.inc @@ -0,0 +1,84 @@ +.. -*- rst -*- + +============ +API versions +============ + + + + +Show version details +==================== + +.. rest_method:: GET /v2.0 + +Shows details for the Identity API v2.0. + + +Normal response codes: 200 +Error response codes:203,413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/admin/version-show-response.json + :language: javascript + + + + + + + + + + + + +List versions +============= + +.. rest_method:: GET / + +Lists information about all Identity API versions. + + +Normal response codes: 200 +Error response codes:300,413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/admin/versions-list-response.json + :language: javascript + + + + + + + + + + + diff --git a/api-ref/source/identity/v3-ext/identity_v3_OS-ENDPOINT-POLICY-ext.inc b/api-ref/source/identity/v3-ext/identity_v3_OS-ENDPOINT-POLICY-ext.inc new file mode 100644 index 000000000..a5f6064a8 --- /dev/null +++ b/api-ref/source/identity/v3-ext/identity_v3_OS-ENDPOINT-POLICY-ext.inc @@ -0,0 +1,381 @@ +.. -*- rst -*- + +================================================= +OS-ENDPOINT-POLICY extension (OS-ENDPOINT-POLICY) +================================================= + +Creates, verifies, and deletes associations between service +endpoints and policies. Such associations enable an endpoint to +request its policy. + +To create, check, or delete an association, you reference a policy +by its ID in the Identity server. + +The extension supports these associations: + +- A policy and endpoint association. + +- A policy and service-type endpoint in a region association. + +- A policy and service-type endpoint association. + +This order reflects policies in their most to least-specific order. + +When an endpoint requests the appropriate policy for itself, the +extension finds the policy by traversing the ordered sequence of +methods of association. The extension shows the policy for the +first association that it finds. + +If the region of the endpoint has a parent, the extension examines +the region associations up the region tree in ascending order. For +region associations, the extension examines any parent regions in +ascending order. The extension does not combine polices. + + +Associate policy and service-type endpoint +========================================== + +.. rest_method:: PUT /v3/policies/{policy_id}/OS-ENDPOINT-POLICY/services/{service_id} + +Associates a policy and any endpoint of a service type. + +If an association already exists between the endpoint of a service +type and another policy, this call replaces that association. + +Error response codes:204, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - service_id: service_id + - policy_id: policy_id + + + + + + +Verify a policy and service-type endpoint association +===================================================== + +.. rest_method:: GET /v3/policies/{policy_id}/OS-ENDPOINT-POLICY/services/{service_id} + +Verifies an association between a policy and an endpoint of a service type. + +A HEAD version of this API is also supported. + +Error response codes:204, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - service_id: service_id + - policy_id: policy_id + + + + + + +Delete a policy and service-type endpoint association +===================================================== + +.. rest_method:: DELETE /v3/policies/{policy_id}/OS-ENDPOINT-POLICY/services/{service_id} + +Deletes an association between a policy and an endpoint of a service type. + +Error response codes:204, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - service_id: service_id + - policy_id: policy_id + + + + + + +Show policy for endpoint +======================== + +.. rest_method:: GET /v3/policies/{policy_id}/OS-ENDPOINT-POLICY/policy + +Shows a policy for an endpoint. + +The extension finds the policy by traversing the ordered sequence +of methods of association. The extension shows the policy for the +first association that it finds. If the region of the endpoint has +a parent, the extension examines the region associations up the +region tree in ascending order. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - policy_id: policy_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - policy: policy + - type: type + - blob: blob + - links: links + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/OS-ENDPOINT-POLICY/policy-show-response.json + :language: javascript + + + + +Check policy and service endpoint association +============================================= + +.. rest_method:: HEAD /v3/policies/{policy_id}/OS-ENDPOINT-POLICY/policy + +Checks whether a policy is associated with an endpoint. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - policy_id: policy_id + + + + +Response Example +---------------- + +.. literalinclude:: + :language: javascript + + + + +Associate policy and service-type endpoint in a region +====================================================== + +.. rest_method:: PUT /v3/policies/{policy_id}/OS-ENDPOINT-POLICY/services/regions/{region_id} + +Associates a policy and an endpoint of a service type in a region. + +If an association already exists between the service in a region +and another policy, this call replaces that association. + +Error response codes:204, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - region_id: region_id + - policy_id: policy_id + + + + + + +Verify a policy and service-type endpoint in a region association +================================================================= + +.. rest_method:: GET /v3/policies/{policy_id}/OS-ENDPOINT-POLICY/services/regions/{region_id} + +Verifies an association between a policy and service-type endpoint in a region. + +A HEAD version of this API is also supported. + +Error response codes:204, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - region_id: region_id + - policy_id: policy_id + + + + + + +Delete a policy and service-type endpoint in a region association +================================================================= + +.. rest_method:: DELETE /v3/policies/{policy_id}/OS-ENDPOINT-POLICY/services/regions/{region_id} + +Deletes an association between a policy and service-type endpoint in a region. + +Error response codes:204, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - region_id: region_id + - policy_id: policy_id + + + + + + +List policy and service endpoint associations +============================================= + +.. rest_method:: GET /v3/policies/{policy_id}/OS-ENDPOINT-POLICY/endpoints + +Lists all the endpoints that are currently associated with a policy through any of the association methods. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - policy_id: policy_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - links: links + - url: url + - region: region + - next: next + - self: self + - interface: interface + - service_id: service_id + - endpoints: endpoints + - id: id + - previous: previous + + + +Response Example +---------------- + +.. literalinclude:: ../samples/OS-ENDPOINT-POLICY/policy-endpoint-associations-list-response.json + :language: javascript + + + + +Associate policy and endpoint +============================= + +.. rest_method:: PUT /v3/policies/{policy_id}/OS-ENDPOINT-POLICY/endpoints/{endpoint_id} + +Associates a policy and an endpoint. + +If an association already exists between the endpoint and another +policy, this call replaces that association. + +Error response codes:204, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - endpoint_id: endpoint_id + - policy_id: policy_id + + + + + + +Verify a policy and endpoint association +======================================== + +.. rest_method:: GET /v3/policies/{policy_id}/OS-ENDPOINT-POLICY/endpoints/{endpoint_id} + +Verifies an association between a policy and an endpoint. + +A HEAD version of this API is also supported. + +Error response codes:204, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - endpoint_id: endpoint_id + - policy_id: policy_id + + + + + + +Delete a policy and endpoint association +======================================== + +.. rest_method:: DELETE /v3/policies/{policy_id}/OS-ENDPOINT-POLICY/endpoints/{endpoint_id} + +Deletes an association between a policy and an endpoint. + +Error response codes:204, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - endpoint_id: endpoint_id + - policy_id: policy_id + + + + + diff --git a/api-ref/source/identity/v3-ext/inherit.inc b/api-ref/source/identity/v3-ext/inherit.inc new file mode 100644 index 000000000..258fed977 --- /dev/null +++ b/api-ref/source/identity/v3-ext/inherit.inc @@ -0,0 +1,582 @@ +.. -*- rst -*- + +================================= +OS-INHERIT extension (OS-INHERIT) +================================= + +Enables projects to inherit role assignments from either their +owning domain or projects that are higher in the hierarchy. + +(Since API v3.4) The OS-INHERIT extension allows inheritance from +both projects and domains. To access project inheritance, the +Identity service server must run at least API v3.4. + + +Assign role to user owned by domain projects +============================================ + +.. rest_method:: PUT /v3/OS-INHERIT/domains/{domain_id}/users/{user_id}/roles/{role_id}/inherited_to_projects + +Assigns a role to a user in projects owned by a domain. + +The API applies the inherited role to the existing and future owned +projects. The inherited role does not appear as a role in a domain- +scoped token. + +Error response codes:204, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - user_id: user_id + - role_id: role_id + - domain_id: domain_id + + + + + + +Check project role for user in domain +===================================== + +.. rest_method:: HEAD /v3/OS-INHERIT/domains/{domain_id}/users/{user_id}/roles/{role_id}/inherited_to_projects + +Checks whether a user has an inherited project role in a domain. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - user_id: user_id + - role_id: role_id + - domain_id: domain_id + + + + +Response Example +---------------- + +.. literalinclude:: + :language: javascript + + + + +Revoke project role from user in domain +======================================= + +.. rest_method:: DELETE /v3/OS-INHERIT/domains/{domain_id}/users/{user_id}/roles/{role_id}/inherited_to_projects + +Revokes an inherited project role from a user in a domain. + +Error response codes:204, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - user_id: user_id + - role_id: role_id + - domain_id: domain_id + + + + + + +Assign role to group +==================== + +.. rest_method:: PUT /v3/OS-INHERIT/projects/{project_id}/groups/{group_id}/roles/{role_id}/inherited_to_projects + +Assigns a role to a group in projects in a subtree. + +The API anchors the inherited role assignment to a project and +applies it to its subtree in the projects hierarchy to both +existing and future projects. + +A group can have both a regular, non-inherited role assignment and +an inherited role assignment in the same project. + +Error response codes:204, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - group_id: group_id + - role_id: role_id + - project_id: project_id + + + + + + +Check role for group +==================== + +.. rest_method:: HEAD /v3/OS-INHERIT/projects/{project_id}/groups/{group_id}/roles/{role_id}/inherited_to_projects + +Checks whether a group has a role assignment with the ``inherited_to_projects`` flag in a project. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - group_id: group_id + - role_id: role_id + - project_id: project_id + + + + +Response Example +---------------- + +.. literalinclude:: + :language: javascript + + + + +Revoke role from group +====================== + +.. rest_method:: DELETE /v3/OS-INHERIT/projects/{project_id}/groups/{group_id}/roles/{role_id}/inherited_to_projects + +Revokes an inherited role from a group in a project. + +Error response codes:204, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - group_id: group_id + - role_id: role_id + - project_id: project_id + + + + + + +Assign role to group in domain projects +======================================= + +.. rest_method:: PUT /v3/OS-INHERIT/domains/{domain_id}/groups/{group_id}/roles/{role_id}/inherited_to_projects + +Assigns a role to a group in projects owned by a domain. + +The API applies the inherited role to owned projects, both existing +and future. The inherited role does not appear as a role in a +domain-scoped token. + +Error response codes:204, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - group_id: group_id + - role_id: role_id + - domain_id: domain_id + + + + + + +Check project role for group in domain +====================================== + +.. rest_method:: HEAD /v3/OS-INHERIT/domains/{domain_id}/groups/{group_id}/roles/{role_id}/inherited_to_projects + +Checks whether a group has an inherited project role in a domain. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - group_id: group_id + - role_id: role_id + - domain_id: domain_id + + + + +Response Example +---------------- + +.. literalinclude:: + :language: javascript + + + + +Revoke project role from group in domain +======================================== + +.. rest_method:: DELETE /v3/OS-INHERIT/domains/{domain_id}/groups/{group_id}/roles/{role_id}/inherited_to_projects + +Revokes an inherited project role from a group in a domain. + +Error response codes:204, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - group_id: group_id + - role_id: role_id + - domain_id: domain_id + + + + + + +Assign role to user +=================== + +.. rest_method:: PUT /v3/OS-INHERIT/projects/{project_id}/users/{user_id}/roles/{role_id}/inherited_to_projects + +Assigns a role to a user in projects in a subtree. + +The API anchors the inherited role assignment to a project and +applies it to its subtree in the projects hierarchy to both +existing and future projects. + +A user can have both a regular, non-inherited role assignment and +an inherited role assignment in the same project. + +Error response codes:204, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - user_id: user_id + - role_id: role_id + - project_id: project_id + + + + + + +Check role for user +=================== + +.. rest_method:: HEAD /v3/OS-INHERIT/projects/{project_id}/users/{user_id}/roles/{role_id}/inherited_to_projects + +Checks whether a user has a role assignment with the ``inherited_to_projects`` flag in a project. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - user_id: user_id + - role_id: role_id + - project_id: project_id + + + + +Response Example +---------------- + +.. literalinclude:: + :language: javascript + + + + +Revoke role from user +===================== + +.. rest_method:: DELETE /v3/OS-INHERIT/projects/{project_id}/users/{user_id}/roles/{role_id}/inherited_to_projects + +Revokes an inherited role from a user in a project. + +Error response codes:204, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - user_id: user_id + - role_id: role_id + - project_id: project_id + + + + + + +List project roles for group in domain +====================================== + +.. rest_method:: GET /v3/OS-INHERIT/domains/{domain_id}/groups/{group_id}/roles/inherited_to_projects + +Lists the project roles that a group inherits from a parent project in a domain. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - group_id: group_id + - domain_id: domain_id + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/OS-INHERIT/group-roles-domain-list-response.json + :language: javascript + + + + +List role assignments +===================== + +.. rest_method:: GET /v3/role_assignments + +Lists role assignments. + +The scope section in the list response is extended to allow the +representation of role assignments that are inherited to projects. + +The list of all role assignments can be long. To filter the list, +use the query parameters. + +Some typical examples are: + +``GET /role_assignments?user.id={user_id}`` lists all role +assignments for a user. + +``GET /role_assignments?scope.project.id={project_id}`` lists all +role assignments for a project. + +Each role assignment entity in the collection contains a link to +the assignment that created this entity. + +Use the ``effective`` query parameter to list effective assignments +at the user, project, and domain level. This parameter allows for +the effects of group membership as well as inheritance from the +parent domain or project, for role assignments that were made using +OS-INHERIT assignment APIs. + +The group role assignment entities themselves are not returned in +the collection. Because, like group membership, the effects of +inheritance have already been allowed for, the role assignment +entities themselves that specify the inheritance are not returned +in the collection. This represents the effective role assignments +that would be included in a scoped token. You can use the other +query parameters with the ``effective`` parameter. + +For example, to determine what a user can actually do, issue this +request: ``GET /role_assignments?user.id={user_id} & effective`` + +To get the equivalent set of role assignments that would be +included in the token response of a project-scoped token, issue +``GET /role_assignments?user.id={user_id} & +scope.project.id={project_id} & effective`` + +In the response, the entity ``links`` section for entities that are +included by virtue of group members also contains a url that you +can use to access the membership of the group. + +Use the ``scope.OS-INHERIT:inherited_to`` query parameter to filter +the response by inherited role assignments. The ``scope.OS- +INHERIT:inherited_to`` value of ``projects`` is currently +supported. This value indicates that this role is inherited to all +projects of the owning domain or parent project. + +An example response for an API call with the ``effective`` query +string: + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/OS-INHERIT/role-assignments-effective-list-response.json + :language: javascript + + + + + + + + + + + +List project roles for user in domain +===================================== + +.. rest_method:: GET /v3/OS-INHERIT/domains/{domain_id}/users/{user_id}/roles/inherited_to_projects + +Lists the project roles that a user inherits from a parent project in a domain. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - user_id: user_id + - domain_id: domain_id + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/OS-INHERIT/user-roles-domain-list-response.json + :language: javascript + + + + +List roles for group +==================== + +.. rest_method:: GET /v3/OS-INHERIT/projects/{project_id}/groups/{group_id}/roles/inherited_to_projects + +Lists the project roles that a group in a project inherits from a parent project. + +The list shows only roles that the group project inherits from the +parent project. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - group_id: group_id + - project_id: project_id + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/OS-INHERIT/group-roles-list-response.json + :language: javascript + + + + +List roles for user +=================== + +.. rest_method:: GET /v3/OS-INHERIT/projects/{project_id}/users/{user_id}/roles/inherited_to_projects + +Lists the project roles that a user in a project inherits from a parent project. + +The list shows only roles that the user project inherits from the +parent project. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - user_id: user_id + - project_id: project_id + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/OS-INHERIT/user-roles-list-response.json + :language: javascript + + + diff --git a/api-ref/source/identity/v3-ext/kds.inc b/api-ref/source/identity/v3-ext/kds.inc new file mode 100644 index 000000000..d85e47128 --- /dev/null +++ b/api-ref/source/identity/v3-ext/kds.inc @@ -0,0 +1,410 @@ +.. -*- rst -*- + +================================================ +Key Distribution Server (KDS) extension (OS-KDS) +================================================ + +The Key Distribution Server (KDS) is a trusted third party that +generates and securely distributes signing and encryption keys to +communicating parties. These shared keys enable parties to exchange +authenticated, confidential messages. KDS is an integral part of +the RPC message security implementation. To establish a trusted +relationship between the party and the KDS, a properly authorized +user, such as a cloud administrator, must assign a long-term shared +key to the communicating party. Assigning a key to a party requires +assigning an identity to that party in the KDS. An identity +includes a unique party name and the associated long-term shared +key. This party name is used to identify a party when it +communicates with KDS or another party. + +The KDS enables two individual parties or one individual party and +a group party to exchange secure messages. To get keys so that it +can communicate with another party, a party makes an authenticated +request to KDS for a ticket. The KDS returns an encrypted ticket to +the requesting party. The KDS encrypts the ticket with the long- +term shared key that is associated with that party. Only the +associated party or the KDS itself can decrypt the ticket. + +The KDS issues a ticket that contains a copy of the shared +encryption and signing keys. These keys are for the source party, +which is the party that requests the ticket. The ticket also +contains a payload that is intended for the destination party, +which is the party with whom the source party wants to communicate. +This payload contains the information that the destination party +can use to derive the shared encryption and signing keys. When the +destination party is: + +- An individual. The payload is encrypted with the long-term shared + key that is associated with the destination party. + +- A group. The payload is encrypted with a shared group key that the + KDS makes available to all members of the group. This encryption + enables the destination party to trust that the information in + the payload was supplied by the KDS. + +When the source party is ready to communicate with the destination +party, it sends this encrypted payload to the destination party +along with whatever data it has protected with the shared signing +and encryption keys. The destination party can decrypt the payload +and derive the shared encryption and signing keys by using the +payload information. Both parties have a copy of the shared signing +and encryption keys that are trusted as being issued by the KDS. +The destination party uses these shared keys to authenticate and +decrypt the data sent by the source party. + +Other guidelines: + +- When a source party must send secure messages to multiple + recipients, an authorized user can define a KDS group for the + recipients. Membership in a group is determined by comparing a + party name with the group name. The party is considered a member + if the party name matches ``< group name > .*``. For example, a + party named ``scheduler.host.example.com`` is considered a member + of the ``scheduler`` group. This method is the same method that + is used to name message queues in OpenStack. + +- When a source party requests a ticket for a destination party that + is a group, KDS generates a short-lived group key and assigns it + to the group. This group key is used to encrypt the payload in + the ticket, which contains the information that the destination + party uses to derive the shared signing and encryption keys. + +- When an individual destination party must decrypt the payload that + it receives from the source party as a part of a group message, + it makes an authenticated request to KDS to get the short-lived + group key. If the requester is a member of the target group, KDS + provides the short-lived group key encrypted with the long-term + shared key associated with the individual destination party. The + individual destination party can then decrypt the group key, + which enables it to decrypt the payload and derive the shared + signing and encryption keys to use to authenticate and decrypt + the data sent by the source party. + +- When a sender gets keys to send a message to a group, all group + members and the sender share the signing and encryption keys, + which makes it impossible for an individual destination party to + determine whether a message was sent by the source party or by + another destination party who is a group member. The destination + party can confirm only that the message was sent by a party who + has the shared signing and encryption keys. When a sender uses + keys to send a message to a group, all group members must trust + other members to operate in good faith. + +The signing and encryption keys that communicating parties share +are short-lived. The life span of these keys is defined by a +validity period that is set by the KDS when it issues the ticket. A +suggested reasonable default validity period is 15 minutes, though +the implementation determines the appropriate validity period. + +After the validity period for the keys expires, a party should +refuse to use those keys to prevent the use of compromised keys. +This requires the source party to request a new ticket from the KDS +to get a new set of keys. An implementation can implement a grace +period to account for clock skew between parties. This grace period +enables a destination party to accept messages that use recently +expired keys. If you use a grace period, its duration should be +five or fewer minutes. + +A key server, unlike a pure public key-based system, can regulate +the encryption and signing key exchange. When keys are requested, +the key server actively distributes keys to communicating parties, +applies access control, and denies communication between arbitrary +peers in the system. This enables centralized access control, +prevents unauthorized communication, and eliminates the need to +perform post-authentication access control and policy lookups on +the receiving side. + +The KDS requires that all ticket requests are authenticated and, +where appropriate, data is encrypted. You must pass any time stamp +value to the API as a `UTC +`_ `ISO 8601 +`_ date and time string +that includes microseconds. For example, +``2012-03-26T10:01:01.720000``. + +The default algorithms for message authentication and encryption +are, respectively, HMAC-SHA-256 and AES-128-CBC. Therefore, the +default block size is 128 bit. + +The source party that requests a ticket must send the encrypted +``esek`` payload to the destination party. The source and +destination strings used when requesting the ticket also must be +sent to the destination party to enable it to derive the shared +signing end encryption keys. The messaging implementation is +responsible for transferring this data to the destination party. + +The key derivation used to generate the shared signing and +encryption keys uses the Hashed Message Authentication Code +(HMAC)-based key derivation function (HKDF) standard, as described +in RFC 5869. The destination party must use the HKDF ``expand`` +function by using the information that it receives from the source +party to complete derivation of the shared signing and encryption +keys. The inputs to the HKDF ``expand`` function are: + +:: + + HKDF-Expand(esek.key, info, 256) + +The ``info`` input for the HKDF ``expand`` function is a string +that concatenates the source, destination, and ``esek.timestamp`` +strings by using a comma (``,``) separator between each element. +The following example shows a valid ``info`` string where +``scheduler.host.example.com`` is the source, +``compute.host.example.com`` is the destination, and +``2012-03-26T10:01:01.720000`` is the ``esek.timestamp``: + +:: + + scheduler.host.example.com,compute.host.example.com,2012-03-26T10:01:01.720000 + +The output of the HKDF expand function is an array of bytes of 256 +bit length. The first half is the signing key, and the second half +is the encryption key. + +Create and delete requests for long-term keys are restricted to +authorized users, such as cloud administrators. The authentication +and authorization for these requests is left up to the +implementation, though the implementation should leverage the +Identity API for these purposes. + + +Create group +============ + +.. rest_method:: POST /v3/groups/{name} + +Creates a group in the KDS. + +Membership in groups is based on the party name. For example, a +``scheduler`` group implicitly includes any party name that starts +with ``scheduler``. For example, a member named +``scheduler.host.example.com``. + +Error response codes:201,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - name: name + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - name: name + + + + + + + + + + + + + + +Delete group +============ + +.. rest_method:: DELETE /v3/groups/{name} + +Deletes a group from the KDS. + +Error response codes:204,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - name: name + + + + + + + + + + + + + + + +Show group key +============== + +.. rest_method:: GET /v3/groups + +Shows the key for a group in the KDS. + +When a ticket is requested where the destination is a group, a +group key is generated that is valid for a predetermined amount of +time. Any member of the group can get the key as long as it is +still valid. Group keys are necessary to verify signatures and +decrypt messages that have a group name as the target. + +Error response codes:201,413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - name: name + + + + + + + + + + + + +Generate ticket +=============== + +.. rest_method:: POST /v3/tickets + +Generates a ticket to facilitate messaging between a source and destination. + +A generate ticket request contains metadata that you specify as a +Base64-encoded JSON object and a signature. + +The response shows the metadata, encrypted ticket, and signature. + +Error response codes:201,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - generation: generation + - signature: signature + - metadata: metadata + +Request Example +--------------- + +.. literalinclude:: ../samples/OS-KDS/ticket-generate-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - ticket: ticket + - signature: signature + - metadata: metadata + + + + + + + + + + + + + + +Create key +========== + +.. rest_method:: POST /v3/keys/{name} + +Creates a long-term key in the KDS. + +The request body contains the key. + +The response shows the key name and generation value. + +Error response codes:201,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - name: name + +Request Example +--------------- + +.. literalinclude:: ../samples/OS-KDS/key-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - generation: generation + - name: name + + + + + + + + + + + + + + +Delete key +========== + +.. rest_method:: DELETE /v3/keys/{name} + +Deletes a long-term key from the KDS. + +Error response codes:204, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - name: name + + + + + diff --git a/api-ref/source/identity/v3-ext/parameters.yaml b/api-ref/source/identity/v3-ext/parameters.yaml new file mode 100644 index 000000000..33c167adc --- /dev/null +++ b/api-ref/source/identity/v3-ext/parameters.yaml @@ -0,0 +1,392 @@ +# variables in header +{} + +# variables in path +access_token_id: + description: | + The UUID of the access token. + in: path + required: false + type: string +consumer_id: + description: | + The UUID of the consumer. + in: path + required: false + type: string +domain_id: + description: | + The UUID of the domain. + in: path + required: false + type: string +endpoint_id: + description: | + The endpoint ID. + in: path + required: false + type: string +group_id: + description: | + The UUID of the group. + in: path + required: false + type: string +name: + description: | + The name of the group. + in: path + required: false + type: string +policy_id: + description: | + The policy ID. + in: path + required: false + type: string +project_id: + description: | + The UUID of the project. + in: path + required: false + type: string +region_id: + description: | + The region ID. + in: path + required: false + type: string +role_id: + description: | + The UUID of the role. + in: path + required: false + type: string +service_id: + description: | + The service ID. + in: path + required: false + type: string +user_id: + description: | + The UUID of the user. + in: path + required: false + type: string + +# variables in query +{} + +# variables in body +blob: + description: | + The policy rule itself, as a serialized blob. + in: body + required: true + type: object +endpoints: + description: | + An ``endpoints`` object. + in: body + required: true + type: array +generation: + description: | + A unique integer value that identifies the key. + The generation value changes only if you set a new key. If the + request sets the key to the same value that already exists, the + response shows the existing generation value, which makes the + request idempotent. + in: body + required: true + type: integer +id: + description: | + The ID of the trust. + in: body + required: true + type: string +id_1: + description: | + The endpoint UUID. + in: body + required: true + type: string +id_2: + description: | + The ID of the policy. + in: body + required: true + type: string +impersonation: + description: | + The impersonation flag. Default is false. + in: body + required: false + type: boolean +interface: + description: | + The interface type, which describes the + visibility of the endpoint. Value is: - ``public``. Visible by + end users on a publicly available network interface. - + ``internal``. Visible by end users on an unmetered internal + network interface. - ``admin``. Visible by administrative users + on a secure network interface. + in: body + required: true + type: string +links: + description: | + Trust links. + in: body + required: true + type: object +links_1: + description: | + The links for the ``endpoints`` resource. + in: body + required: true + type: object +links_2: + description: | + The links for the ``policy`` resource. + in: body + required: true + type: object +metadata: + description: | + A Base64-encoded JSON object that contains these key and value + pairs: + + - ``source``. The identity who is requesting a ticket. + + - ``destination``. The target for which the ticket will be valid. + + - ``timestamp``. The current time stamp from the requester. + + - ``nonce``. Random, single-use data. See `Cryptographic nonce + `_. + + The time stamp and nonce are required to prevent replay attacks. + + For example: + + .. code-block:: json + + { + "source": "scheduler.host.example.com", + "destination": "compute.host.example.com", + "timestamp": "2012-03-26T10:01:01.720000", + "nonce": 1234567890 + } + in: body + required: true + type: object +name_1: + description: | + The role name. + in: body + required: true + type: string +name_2: + description: | + The name of the group. + in: body + required: true + type: string +next: + description: | + The ``next`` relative link for the ``endpoints`` + resource. + in: body + required: true + type: string +oauth_expires_at: + description: | + The date and time when a request token expires. + + The date and time stamp format is `ISO 8601 + `_: + + :: + + CCYY-MM-DDThh:mm:ss±hh:mm + + The ``±hh:mm`` value, if included, is the time zone as an offset + from UTC. + + For example, ``2015-08-27T09:49:58-05:00``. + + If the Identity API does not include this attribute or its value is + ``null``, the token never expires. + in: body + required: false + type: string +policy: + description: | + A ``policy`` object. + in: body + required: true + type: object +previous: + description: | + The ``previous`` relative link for the + ``endpoints`` resource. + in: body + required: true + type: string +project_id_1: + description: | + The ID of the project. + in: body + required: true + type: string +region: + description: | + (Deprecated in v3.2) The geographic location of + the service endpoint. + in: body + required: true + type: string +remaining_uses: + description: | + Remaining uses flag. Default is null. + in: body + required: false + type: boolean +roles: + description: | + A roles object. + in: body + required: true + type: array +roles_links: + description: | + A roles links object. Includes ``next``, + ``previous``, and ``self`` links for roles. + in: body + required: true + type: object +self: + description: | + The ``self`` relative link for the ``endpoints`` + resource. + in: body + required: true + type: string +service_id_1: + description: | + The UUID of the service to which the endpoint + belongs. + in: body + required: true + type: string +signature: + description: | + A Base64-encoded HMAC signature over the + Base64-encoded request metadata object. For example: + ``Base64encode(HMAC(SigningKey, RequestMetadata))`` The long-term + key of the requester is used for the signature. When the request + is received, the KDS must verify the signature. To do so, the KDS + must access the ``source`` from the request metadata to look up + the associated long-term key to use to verify the signature. The + KDS should not access any other data contained in the request + metadata before verifying the signature. If the KDS fails to + verify the signature, it risks issuing a ticket to a party who is + impersonating the source. + in: body + required: true + type: string +ticket: + description: | + The ticket is encrypted with the long-term key of the source and + contains a Base64-encoded JSON object containing the following key + and value pairs: + + - ``skey``. The newly-generated Base64-encoded message signing key. + + - ``ekey``. The newly-generated Base64-encoded message encryption + key. + + - ``esek``. Encrypted signing and encryption key pair for the + receiver. + + For example: + + .. code-block:: json + + { + "skey": "ZjhkuYZH8y87rzhgi7...", + "ekey": "Fk8yksa8z8zKtakc8s...", + "esek": "KBo8fajfo8ysad5hq2..." + } + + The long-term key of the destination is used to encrypt the + ``esek`` value. The ``esek`` value contains a Base64-encoded JSON + object that contains the following key and value pairs: + + - ``key``. The Base64-encoded random key that is used to generate + the signing and encryption keys. + + - ``timestamp``. The time stamp when the key was created. + + - ``ttl``. An integer value that specifies the validity length of + the key, in seconds. + + For example: + + .. code-block:: json + + { + "key": "Afa8sad2hgsd7asv7ad...", + "timestamp": "2012-03-26T10:01:01.720000", + "ttl": 28800 + } + + The ``key`` and ``timestamp`` values are used as inputs to the HKDF + ``expand`` function to generate the signing and encryption keys, as + described in the overview on this page. + + The ``timestamp`` and ``ttl`` values must equal the ``expiration`` + time stamp value that is contained in the response metadata. + in: body + required: true + type: string +trust: + description: | + A trust object. + in: body + required: true + type: object +trustee_user_id: + description: | + The trustee user ID. + in: body + required: true + type: string +trustor_user_id: + description: | + The trustor user ID. + in: body + required: true + type: string +type: + description: | + The MIME media type of the serialized policy + blob. From the perspective of the Identity API, a policy blob can + be based on any technology. In OpenStack, the ``policy.json`` blob + (``type="application/json"``) is the conventional solution. + However, you might want to use an alternative policy engine that + uses a different policy language type. For example, + ``type="application/xacml+xml"``. + in: body + required: true + type: string +url: + description: | + The endpoint URL. + in: body + required: true + type: string + diff --git a/api-ref/source/identity/v3-ext/trust.inc b/api-ref/source/identity/v3-ext/trust.inc new file mode 100644 index 000000000..bd23b5a4a --- /dev/null +++ b/api-ref/source/identity/v3-ext/trust.inc @@ -0,0 +1,87 @@ +.. -*- rst -*- + +========================== +Trust extension (OS-TRUST) +========================== + +Creates a trust. + +A trust is an OpenStack Identity extension that enables delegation +and, optionally, impersonation through ``keystone``. A trust +extension defines a relationship between a trustor and trustee. A +trustor is the user who delegates a limited set of their own rights +to another user, known as the trustee, for a limited time. + +The trust can eventually enable the trustee to impersonate the +trustor. For security reasons, some safety measures are added. For +example, if a trustor loses a given role, the API automatically +revokes any trusts and the related tokens that the user issued with +that role. + +For more information, see `Use trusts `_. + + +Create trust +============ + +.. rest_method:: POST /v3/OS-TRUST/trusts + +Creates a trust. + +Error response codes:201,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - impersonation: impersonation + - trust: trust + - trustor_user_id: trustor_user_id + - name: name + - roles: roles + - oauth_expires_at: oauth_expires_at + - remaining_uses: remaining_uses + - trustee_user_id: trustee_user_id + - project_id: project_id + +Request Example +--------------- + +.. literalinclude:: ../samples/OS-TRUST/trust-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - impersonation: impersonation + - roles_links: roles_links + - trust: trust + - trustor_user_id: trustor_user_id + - name: name + - links: links + - oauth_expires_at: oauth_expires_at + - remaining_uses: remaining_uses + - trustee_user_id: trustee_user_id + - roles: roles + - project_id: project_id + - id: id + + + + + + + + + + + + + diff --git a/api-ref/source/identity/v3/authenticate-v3.inc b/api-ref/source/identity/v3/authenticate-v3.inc new file mode 100644 index 000000000..2500d475a --- /dev/null +++ b/api-ref/source/identity/v3/authenticate-v3.inc @@ -0,0 +1,555 @@ +.. -*- rst -*- + +================================================== +Authentication and token management (auth, tokens) +================================================== + +In exchange for a set of authentication credentials, the Identity +service generates tokens. A token represents the authenticated +identity of a user and, optionally, grants authorization on a +specific project or domain. + +The body of an authentication request must include a payload that +specifies the authentication method, which is ``password`` or +``token``, the credentials, and, optionally, the authorization +scope. You can scope a token to a project or domain, or the token +can be unscoped. You cannot scope a token to both a project and +domain. + +Tokens have IDs, which the Identity API returns in the ``X-Subject- +Token`` response header. + +Also, validates an authentication token and lists the domains, +projects, roles, and endpoints to which the token gives access. +Forces the immediate revocation of a token. + +After you obtain an authentication token, you can: + +- Make REST API requests to other OpenStack services. You supply the + ID of your authentication token in the ``X-Auth-Token`` request + header. + +- Validate your authentication token and list the domains, projects, + roles, and endpoints that your token gives you access to. + +- Use your token to request another token scoped for a different + domain and project. + +- Force the immediate revocation of a token. + +- List revoked public key infrastructure (PKI) tokens. + +The Identity API treats expired tokens as no longer valid tokens. +The deployment determines how long expired tokens are stored. + +These authentication errors can occur: + +**Authentication errors** + ++------------------------+----------------------------------------------------------------------+ +| Response code | Description | ++------------------------+----------------------------------------------------------------------+ +| ``Bad Request (400)`` | The Identity service failed to parse the request as expected. One | +| | of the following errors occurred: | +| | | +| | - A required attribute was missing. | +| | | +| | - An attribute that is not allowed was specified, such as an ID on a | +| | POST request in a basic CRUD operation. | +| | | +| | - An attribute of an unexpected data type was specified. | ++------------------------+----------------------------------------------------------------------+ +| ``Unauthorized (401)`` | One of the following errors occurred: | +| | | +| | - Authentication was not performed. | +| | | +| | - The specified ``X-Auth-Token`` header is not valid. | +| | | +| | - The authentication credentials are not valid. | ++------------------------+----------------------------------------------------------------------+ +| ``Forbidden (403)`` | The identity was successfully authenticated but it is not | +| | authorized to perform the requested action. | ++------------------------+----------------------------------------------------------------------+ +| ``Not Found (404)`` | An operation failed because a referenced entity cannot be found by | +| | ID. For a POST request, the referenced entity might be specified in | +| | the request body rather than in the resource path. | ++------------------------+----------------------------------------------------------------------+ +| ``Conflict (409)`` | A POST or PATCH operation failed. For example, a client tried to | +| | update a unique attribute for an entity, which conflicts with that | +| | of another entity in the same collection. | +| | | +| | Or, a client issued a create operation twice on a collection with a | +| | user-defined, unique attribute. For example, a client made a POST | +| | ``/users`` request two times for the unique, user-defined name | +| | attribute for a user entity. | ++------------------------+----------------------------------------------------------------------+ + + +Password authentication with unscoped authorization +=================================================== + +.. rest_method:: POST /v3/auth/tokens + +Authenticates an identity and generates a token. Uses the password authentication method. Authorization is unscoped. + +The request body must include a payload that specifies the +authentication method, which is ``password``, and the user, by ID +or name, and password credentials. + +Error response codes:201,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - domain: domain + - name: name + - auth: auth + - user: user + - password: password + - id: id + - identity: identity + - methods: methods + - nocatalog: nocatalog + +Request Example +--------------- + +.. literalinclude:: ../samples/admin/auth-password-unscoped-request-with-domain.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - X-Subject-Token: X-Subject-Token + - domain: domain + - methods: methods + - expires_at: expires_at + - token: token + - extras: extras + - user: user + - audit_ids: audit_ids + - issued_at: issued_at + - id: id + - name: name + + + + + + + + + + + + + + +Password authentication with scoped authorization +================================================= + +.. rest_method:: POST /v3/auth/tokens + +Authenticates an identity and generates a token. Uses the password authentication method and scopes authorization to a project or domain. + +The request body must include a payload that specifies the +``password`` authentication method, the credentials, and the +``project`` or ``domain`` authorization scope. + +Error response codes:201,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - name: name + - auth: auth + - user: user + - scope: scope + - password: password + - id: id + - identity: identity + - methods: methods + - nocatalog: nocatalog + +Request Example +--------------- + +.. literalinclude:: ../samples/admin/auth-password-project-scoped-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - X-Subject-Token: X-Subject-Token + - domain: domain + - region_id: region_id + - methods: methods + - roles: roles + - url: url + - region: region + - token: token + - expires_at: expires_at + - project: project + - issued_at: issued_at + - catalog: catalog + - extras: extras + - user: user + - audit_ids: audit_ids + - interface: interface + - endpoints: endpoints + - type: type + - id: id + - name: name + + + + + + + + + + + + + + +Password authentication with explicit unscoped authorization +============================================================ + +.. rest_method:: POST /v3/auth/tokens + +Authenticates an identity and generates a token. Uses the password authentication method with explicit unscoped authorization. + +The request body must include a payload that specifies the +``password`` authentication method, the credentials, and the +``unscoped`` authorization scope. + +Error response codes:201,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - name: name + - auth: auth + - user: user + - scope: scope + - password: password + - id: id + - identity: identity + - methods: methods + - nocatalog: nocatalog + +Request Example +--------------- + +.. literalinclude:: ../samples/admin/auth-password-explicit-unscoped-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - X-Subject-Token: X-Subject-Token + - domain: domain + - methods: methods + - roles: roles + - expires_at: expires_at + - token: token + - extras: extras + - user: user + - audit_ids: audit_ids + - issued_at: issued_at + - id: id + - name: name + + + + + + + + + + + + + + +Token authentication with unscoped authorization +================================================ + +.. rest_method:: POST /v3/auth/tokens + +Authenticates an identity and generates a token. Uses the token authentication method. Authorization is unscoped. + +In the request body, provide the token ID. + +Error response codes:201,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - identity: identity + - token: token + - id: id + - auth: auth + - methods: methods + - nocatalog: nocatalog + +Request Example +--------------- + +.. literalinclude:: ../samples/admin/auth-token-unscoped-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - X-Subject-Token: X-Subject-Token + - X-Auth-Token: X-Auth-Token + + + + + + + + + + + + + + +Token authentication with scoped authorization +============================================== + +.. rest_method:: POST /v3/auth/tokens + +Authenticates an identity and generates a token. Uses the token authentication method and scopes authorization to a project or domain. + +In the request body, provide the token ID and the ``project`` or +``domain`` authorization scope. + +Error response codes:201,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - methods: methods + - auth: auth + - token: token + - audit_ids: audit_ids + - scope: scope + - id: id + - identity: identity + - nocatalog: nocatalog + +Request Example +--------------- + +.. literalinclude:: ../samples/admin/auth-token-scoped-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - X-Subject-Token: X-Subject-Token + - X-Auth-Token: X-Auth-Token + + + + + + + + + + + + + + +Validate and show information for token +======================================= + +.. rest_method:: GET /v3/auth/tokens + +Validates and shows information for a token, including its expiration date and authorization scope. + +Pass your own token in the ``X-Auth-Token`` request header. + +Pass the token that you want to validate in the ``X-Subject-Token`` +request header. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - X-Auth-Token: X-Auth-Token + - X-Subject-Token: X-Subject-Token + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - X-Subject-Token: X-Subject-Token + - X-Auth-Token: X-Auth-Token + - domain: domain + - methods: methods + - links: links + - user: user + - token: token + - expires_at: expires_at + - project: project + - catalog: catalog + - extras: extras + - roles: roles + - audit_ids: audit_ids + - issued_at: issued_at + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/admin/auth-token-unscoped-response.json + :language: javascript + + + + + + + + + + + +Check token +=========== + +.. rest_method:: HEAD /v3/auth/tokens + +Validates a token. + +This call is similar to ``GET /auth/tokens`` but no response body +is provided even in the ``X-Subject-Token`` header. + +The Identity API returns the same response as when the subject +token was issued by ``POST /auth/tokens`` even if an error occurs +because the token is not valid. An HTTP ``204`` response code +indicates that the ``X-Subject-Token`` is valid. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - X-Auth-Token: X-Auth-Token + - X-Subject-Token: X-Subject-Token + + + + +Response Example +---------------- + +.. literalinclude:: + :language: javascript + + + + + + + + + + + +Revoke token +============ + +.. rest_method:: DELETE /v3/auth/tokens + +Revokes a token. + +This call is similar to the HEAD ``/auth/tokens`` call except that +the ``X-Subject-Token`` token is immediately not valid, regardless +of the ``expires_at`` attribute value. An additional ``X-Auth- +Token`` is not required. + +Error response codes:413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - X-Auth-Token: X-Auth-Token + - X-Subject-Token: X-Subject-Token + + + + + + + + + + + + + diff --git a/api-ref/source/identity/v3/credentials.inc b/api-ref/source/identity/v3/credentials.inc new file mode 100644 index 000000000..7df84c1ca --- /dev/null +++ b/api-ref/source/identity/v3/credentials.inc @@ -0,0 +1,277 @@ +.. -*- rst -*- + +========================= +Credentials (credentials) +========================= + +In exchange for a set of authentication credentials that the user +submits, the Identity service generates and returns a token. A +token represents the authenticated identity of a user and, +optionally, grants authorization on a specific project or domain. + +You can list all credentials, and create, show details for, update, +and delete a credential. + + +Create credential +================= + +.. rest_method:: POST /v3/credentials + +Creates a credential. + +The following example shows how to create an EC2-style credential. +The credential blob is a string that contains a JSON-serialized +dictionary with the ``access`` and ``secret`` keys. This format is +required when you specify the ``ec2`` type. To specify other +credentials, such as ``access_key``, change the type and contents +of the data blob. + +Error response codes:201,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - credential: credential + - project_id: project_id + - type: type + - blob: blob + - user_id: user_id + +Request Example +--------------- + +.. literalinclude:: ../samples/admin/credential-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - credential: credential + - user_id: user_id + - links: links + - blob: blob + - project_id: project_id + - type: type + - id: id + + + + + + + + + + + + + + +List credentials +================ + +.. rest_method:: GET /v3/credentials + +Lists all credentials. + +Optionally, you can include the ``user_id`` query parameter in the +URI to filter the response by a user. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - user_id: user_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - user_id: user_id + - links: links + - blob: blob + - credentials: credentials + - project_id: project_id + - type: type + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/admin/credentials-list-response.json + :language: javascript + + + + + + + + + + + +Show credential details +======================= + +.. rest_method:: GET /v3/credentials/{credential_id} + +Shows details for a credential. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - credential_id: credential_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - credential: credential + - user_id: user_id + - links: links + - blob: blob + - project_id: project_id + - type: type + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/admin/credential-show-response.json + :language: javascript + + + + + + + + + + + +Update credential +================= + +.. rest_method:: PATCH /v3/credentials/{credential_id} + +Updates a credential. + + +Normal response codes: 200 +Error response codes:413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - credential: credential + - project_id: project_id + - type: type + - blob: blob + - user_id: user_id + - credential_id: credential_id + +Request Example +--------------- + +.. literalinclude:: ../samples/admin/credential-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - credential: credential + - user_id: user_id + - links: links + - blob: blob + - project_id: project_id + - type: type + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/admin/credential-update-response.json + :language: javascript + + + + + + + + + + + + + +Delete credential +================= + +.. rest_method:: DELETE /v3/credentials/{credential_id} + +Deletes a credential. + +Error response codes:204,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - credential_id: credential_id + + + + + + + + + + + + + + diff --git a/api-ref/source/identity/v3/domains-config-v3.inc b/api-ref/source/identity/v3/domains-config-v3.inc new file mode 100644 index 000000000..9462f7fc7 --- /dev/null +++ b/api-ref/source/identity/v3/domains-config-v3.inc @@ -0,0 +1,503 @@ +.. -*- rst -*- + +================================================================== +Domain configuration (domains, config) (since v3.4) (EXPERIMENTAL) +================================================================== + +You can manage domain-specific configuration options. + +Domain-specific configuration options are structured within their +group objects. The API supports only the ``identity`` and ``ldap`` +groups. These groups override the default configuration settings +for the storage of users and groups by the Identity server. + +You can create, update, and delete domain-specific configuration +options by using the HTTP PUT , PATCH , and DELETE methods. When +updating, it is only necessary to include those options that are +being updated. + +To create an option, use the PUT method. The Identity API does not +return options that are considered sensitive, although you can +create and update these options. The only option currently +considered sensitive is the ``password`` option within the ``ldap`` +group. + +The API enables you to include sensitive options as part of non- +sensitive options. For example, you can include the password as +part of the ``url`` option. + +If you try to create or update configuration options for groups +other than the ``identity`` or ``ldap`` groups, the ``Forbidden +(403)`` response code is returned. + +For information about how to integrate the Identity service with +LDAP, see `Integrate Identity with LDAP `_. + + +Show domain group option configuration +====================================== + +.. rest_method:: GET /v3/domains/{domain_id}/config/{group}/{option} + +Shows details for a domain group option configuration. + +The API supports only the ``identity`` and ``ldap`` groups. For the +``ldap`` group, a valid value is ``url`` or ``user_tree_dn``. For +the ``identity`` group, a valid value is ``driver``. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - domain_id: domain_id + - group: group + - option: option + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - url: url + - driver: driver + - ldap: ldap + - config: config + - user_tree_dn: user_tree_dn + - identity: identity + + + +Response Example +---------------- + +.. literalinclude:: ../samples/admin/domain-config-group-option-show-response.json + :language: javascript + + + + + + + + + + + +Update domain group option configuration +======================================== + +.. rest_method:: PATCH /v3/domains/{domain_id}/config/{group}/{option} + +Updates a domain group option configuration. + +The API supports only the ``identity`` and ``ldap`` groups. For the +``ldap`` group, a valid value is ``url`` or ``user_tree_dn``. For +the ``identity`` group, a valid value is ``driver``. + + +Normal response codes: 200 +Error response codes:413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - url: url + - driver: driver + - ldap: ldap + - config: config + - user_tree_dn: user_tree_dn + - identity: identity + - domain_id: domain_id + - group: group + - option: option + +Request Example +--------------- + +.. literalinclude:: ../samples/admin/domain-config-group-option-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - url: url + - driver: driver + - ldap: ldap + - config: config + - user_tree_dn: user_tree_dn + - identity: identity + + + +Response Example +---------------- + +.. literalinclude:: ../samples/admin/domain-config-group-option-update-response.json + :language: javascript + + + + + + + + + + + + + +Delete domain group option configuration +======================================== + +.. rest_method:: DELETE /v3/domains/{domain_id}/config/{group}/{option} + +Deletes a domain group option configuration. + +The API supports only the ``identity`` and ``ldap`` groups. For the +``ldap`` group, a valid value is ``url`` or ``user_tree_dn``. For +the ``identity`` group, a valid value is ``driver``. + +Error response codes:204,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - domain_id: domain_id + - group: group + - option: option + + + + + + + + + + + + + + + +Show domain group configuration +=============================== + +.. rest_method:: GET /v3/domains/{domain_id}/config/{group} + +Shows details for a domain group configuration. + +The API supports only the ``identity`` and ``ldap`` groups. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - domain_id: domain_id + - group: group + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - url: url + - driver: driver + - ldap: ldap + - config: config + - user_tree_dn: user_tree_dn + - identity: identity + + + +Response Example +---------------- + +.. literalinclude:: ../samples/admin/domain-config-group-show-response.json + :language: javascript + + + + + + + + + + + +Update domain group configuration +================================= + +.. rest_method:: PATCH /v3/domains/{domain_id}/config/{group} + +Updates a domain group configuration. + +The API supports only the ``identity`` and ``ldap`` groups. If you +try to set configuration options for other groups, this call fails +with the ``Forbidden (403)`` response code. + + +Normal response codes: 200 +Error response codes:413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - url: url + - driver: driver + - ldap: ldap + - config: config + - user_tree_dn: user_tree_dn + - identity: identity + - domain_id: domain_id + - group: group + +Request Example +--------------- + +.. literalinclude:: ../samples/admin/domain-config-group-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - url: url + - driver: driver + - ldap: ldap + - config: config + - user_tree_dn: user_tree_dn + - identity: identity + + + +Response Example +---------------- + +.. literalinclude:: ../samples/admin/domain-config-group-update-response.json + :language: javascript + + + + + + + + + + + + + +Delete domain group configuration +================================= + +.. rest_method:: DELETE /v3/domains/{domain_id}/config/{group} + +Deletes a domain group configuration. + +The API supports only the ``identity`` and ``ldap`` groups. + +Error response codes:204,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - domain_id: domain_id + - group: group + + + + + + + + + + + + + + + +Show domain configuration +========================= + +.. rest_method:: GET /v3/domains/{domain_id}/config + +Shows details for a domain configuration. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - domain_id: domain_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - url: url + - driver: driver + - ldap: ldap + - config: config + - user_tree_dn: user_tree_dn + - identity: identity + + + +Response Example +---------------- + +.. literalinclude:: ../samples/admin/domain-config-show-response.json + :language: javascript + + + + + + + + + + + +Update domain configuration +=========================== + +.. rest_method:: PATCH /v3/domains/{domain_id}/config + +Updates a domain configuration. + + +Normal response codes: 200 +Error response codes:413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - url: url + - driver: driver + - ldap: ldap + - config: config + - user_tree_dn: user_tree_dn + - identity: identity + - domain_id: domain_id + +Request Example +--------------- + +.. literalinclude:: ../samples/admin/domain-config-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - url: url + - driver: driver + - ldap: ldap + - config: config + - user_tree_dn: user_tree_dn + - identity: identity + + + +Response Example +---------------- + +.. literalinclude:: ../samples/admin/domain-config-update-response.json + :language: javascript + + + + + + + + + + + + + +Delete domain configuration +=========================== + +.. rest_method:: DELETE /v3/domains/{domain_id}/config + +Deletes a domain configuration. + +Error response codes:204,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - domain_id: domain_id + + + + + + + + + + + + + + diff --git a/api-ref/source/identity/v3/domains.inc b/api-ref/source/identity/v3/domains.inc new file mode 100644 index 000000000..c55c8bdcf --- /dev/null +++ b/api-ref/source/identity/v3/domains.inc @@ -0,0 +1,286 @@ +.. -*- rst -*- + +======================================= +Domains (domains, users, groups, roles) +======================================= + +A domain is a collection of users, groups, and projects. Each group +and project is owned by exactly one domain. + +Each domain defines a namespace where certain API-visible name +attributes exist, which affects whether those names must be +globally unique or unique within that domain. In the Identity API, +the uniqueness of these attributes is as follows: + +- *Domain name*. Globally unique across all domains. + +- *Role name*. Globally unique across all domains. + +- *User name*. Unique within the owning domain. + +- *Project name*. Unique within the owning domain. + +- *Group name*. Unique within the owning domain. + + +List domains +============ + +.. rest_method:: GET /v3/domains + +Lists all domains. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - name: name + - enabled: enabled + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - name: name + - links: links + - enabled: enabled + - domains: domains + - id: id + - description: description + + + +Response Example +---------------- + +.. literalinclude:: ../samples/admin/domains-list-response.json + :language: javascript + + + + + + + + + + + +Create domain +============= + +.. rest_method:: POST /v3/domains + +Creates a domain. + +Error response codes:201,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - domain: domain + - enabled: enabled + - description: description + - name: name + +Request Example +--------------- + +.. literalinclude:: ../samples/admin/domain-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - domain: domain + - name: name + - links: links + - enabled: enabled + - id: id + - description: description + + + + + + + + + + + + + + +Show domain details +=================== + +.. rest_method:: GET /v3/domains/{domain_id} + +Shows details for a domain. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - domain_id: domain_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - domain: domain + - name: name + - links: links + - enabled: enabled + - id: id + - description: description + + + +Response Example +---------------- + +.. literalinclude:: ../samples/admin/domain-show-response.json + :language: javascript + + + + + + + + + + + +Update domain +============= + +.. rest_method:: PATCH /v3/domains/{domain_id} + +Updates a domain. + + +Normal response codes: 200 +Error response codes:413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - domain: domain + - enabled: enabled + - description: description + - name: name + - domain_id: domain_id + +Request Example +--------------- + +.. literalinclude:: ../samples/admin/domain-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - domain: domain + - name: name + - links: links + - enabled: enabled + - id: id + - description: description + + + +Response Example +---------------- + +.. literalinclude:: ../samples/admin/domain-update-response.json + :language: javascript + + + + + + + + + + + + + +Delete domain +============= + +.. rest_method:: DELETE /v3/domains/{domain_id} + +Deletes a domain. + +To minimize the risk of accidentally deleting a domain, you must +first disable the domain by using the update domain method. + +When you delete a domain, this call also deletes all entities owned +by it, such as users, groups, and projects, and any credentials and +granted roles that relate to those entities. + +(Since v3.6) The deletion of a non-leaf domain in a domain +hierarchy tree is not allowed and fails with a ``Bad Request +(400)`` response code. + +If you try to delete an enabled domain, this call returns the +``Forbidden (403)`` response code. + +Error response codes:204,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - domain_id: domain_id + + + + + + + + + + + + + + diff --git a/api-ref/source/identity/v3/groups.inc b/api-ref/source/identity/v3/groups.inc new file mode 100644 index 000000000..ef440650f --- /dev/null +++ b/api-ref/source/identity/v3/groups.inc @@ -0,0 +1,418 @@ +.. -*- rst -*- + +====================== +Groups (groups, users) +====================== + +A group is a collection of users. Each group is owned by a domain. + +When you grant a role to a group, you explicitly associate that +group with a project or domain. This action is equivalent to +granting the role to each group member on that project and domain. + +When you grant a role to a group, that role is automatically +granted to any user that you add to the group. When you revoke a +role from a group, that role is automatically revoked from any user +that you remove from the group. Any token that authenticates that +user, project, and domain is revoked. + +As with users, a group without any role grants is useless from the +perspective an OpenStack service and has no access to resources. +However, a group without role grants is permitted as a way of +acquiring or loading users and groups from external sources before +mapping them to projects and domains. + + +Show group details +================== + +.. rest_method:: GET /v3/groups/{group_id} + +Shows details for a group. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - group_id: group_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - group: group + - name: name + - links: links + - domain_id: domain_id + - id: id + - description: description + + + +Response Example +---------------- + +.. literalinclude:: ../samples/admin/group-show-response.json + :language: javascript + + + + + + + + + + + +Update group +============ + +.. rest_method:: PATCH /v3/groups/{group_id} + +Updates a group. + +If the back-end driver does not support this functionality, the +call returns the ``Not Implemented (501)`` response code. + + +Normal response codes: 200 +Error response codes:413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - group: group + - description: description + - name: name + - domain_id: domain_id + - group_id: group_id + +Request Example +--------------- + +.. literalinclude:: ../samples/admin/group-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - group: group + - name: name + - links: links + - domain_id: domain_id + - id: id + - description: description + + + +Response Example +---------------- + +.. literalinclude:: ../samples/admin/group-update-response.json + :language: javascript + + + + + + + + + + + + + +Delete group +============ + +.. rest_method:: DELETE /v3/groups/{group_id} + +Deletes a group. + +Error response codes:204,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - group_id: group_id + + + + + + + + + + + + + + + +Add user to group +================= + +.. rest_method:: PUT /v3/groups/{group_id}/users/{user_id} + +Adds a user to a group. + +Error response codes:204,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - user_id: user_id + - group_id: group_id + + + + + + + + + + + + + + + +Remove user from group +====================== + +.. rest_method:: DELETE /v3/groups/{group_id}/users/{user_id} + +Removes a user from a group. + +Error response codes:204,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - user_id: user_id + - group_id: group_id + + + + + + + + + + + + + + + +Check whether user belongs to group +=================================== + +.. rest_method:: HEAD /v3/groups/{group_id}/users/{user_id} + +Validates that a user belongs to a group. + +Error response codes:204,413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - user_id: user_id + - group_id: group_id + + + + + + + + + + + + + +List users in group +=================== + +.. rest_method:: GET /v3/groups/{group_id}/users + +Lists the users that belong to a group. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - group_id: group_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - name: name + - links: links + - enabled: enabled + - domain_id: domain_id + - email: email + - id: id + - users: users + + + +Response Example +---------------- + +.. literalinclude:: ../samples/admin/group-users-list-response.json + :language: javascript + + + + + + + + + + + +Create group +============ + +.. rest_method:: POST /v3/groups + +Creates a group. + +Error response codes:201,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - group: group + - description: description + - name: name + - domain_id: domain_id + +Request Example +--------------- + +.. literalinclude:: ../samples/admin/group-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - group: group + - name: name + - links: links + - domain_id: domain_id + - id: id + - description: description + + + + + + + + + + + + + + +List groups +=========== + +.. rest_method:: GET /v3/groups + +Lists groups. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - name: name + - links: links + - domain_id: domain_id + - groups: groups + - id: id + - description: description + + + +Response Example +---------------- + +.. literalinclude:: ../samples/admin/groups-list-response.json + :language: javascript + + + + + + + + + + diff --git a/api-ref/source/identity/v3/identity_v3_OS-OAUTH1.inc b/api-ref/source/identity/v3/identity_v3_OS-OAUTH1.inc new file mode 100644 index 000000000..3841f5c4e --- /dev/null +++ b/api-ref/source/identity/v3/identity_v3_OS-OAUTH1.inc @@ -0,0 +1,592 @@ +.. -*- rst -*- + +======================= +OAuth OAuth (OS-OAUTH1) +======================= + +Enables users to delegate roles to third-party consumers through +`The OAuth 1.0 Protocol `_. + +A user is an Identity API user who delegates its roles and who +authorizes request tokens. + +A consumer is a third-party application that uses OAuth to access a +protected resource. + +Administrative users use an OAuth-derived token to act on behalf of +the authorizing user. + +The consumer uses a request token to get authorization from the +user. The consumer provides an OAuth verifier string with the +request token in exchange for an access token. + +The consumer uses an access token to request Identity API tokens on +behalf of the authorizing user instead of using the credentials for +the user. + +Request and access tokens use token keys to identify themselves. +For OpenStack purposes, the token key is the token ID. The consumer +uses a token secret to establish ownership of a token. Both request +and access tokens have token secrets. + +Delegated authentication through OAuth occurs as follows: + +- A user creates a consumer. + +- The consumer gets an unauthorized request token. Then, the + consumer uses the request token to initiate user authorization. + +- The user authorizes the request token. + +- The consumer exchanges the authorized request token and the OAuth + verifier for an access token. + + The authorizing user receives the request token key from the + consumer out-of-band. + +- The consumer uses the access token to request an Identity API + token. + + +Create consumer +=============== + +.. rest_method:: POST /v3/OS-OAUTH1/consumers + +Enables a user to create a consumer. + +Error response codes:201,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + +Request Example +--------------- + +.. literalinclude:: ../samples/OS-OAUTH1/consumers-create-request.json + :language: javascript + + + + + + + + + + + + + + + + +List consumers +============== + +.. rest_method:: GET /v3/OS-OAUTH1/consumers + +Lists consumers. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/OS-OAUTH1/consumers-list-response.json + :language: javascript + + + + + + + + + + + +Get authorized access token +=========================== + +.. rest_method:: GET /v3/OS-OAUTH1/users/{user_id}/access_tokens/{access_token_id} + +Gets an authorized access token. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - user_id: user_id + - access_token_id: access_token_id + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/OS-OAUTH1/access-token-show-response.json + :language: javascript + + + + + + + + + + + +Revoke access token +=================== + +.. rest_method:: DELETE /v3/OS-OAUTH1/users/{user_id}/access_tokens/{access_token_id} + +Enables a user to revoke an access token, which prevents the consumer from requesting new Identity Service API tokens. Also, revokes any Identity Service API tokens that were issued to the consumer through that access token. + +Error response codes:204,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - user_id: user_id + - access_token_id: access_token_id + + + + + + + + + + + + + + + +Create access token +=================== + +.. rest_method:: POST /v3/OS-OAUTH1/access_token + +Enables a consumer to create an access token by exchanging a request token for an access token. + +After the user authorizes the request token, the consumer exchanges +the authorized request token and OAuth verifier for an access +token. + +Supported signature methods: HMAC-SHA1. + +The consumer must provide all required OAuth parameters in the +request. See `Consumer Obtains a Request Token +`_. + +Supported signature methods: HMAC-SHA1. + +You must provide all required OAuth parameters in the request. See +`Consumer Obtains a Request Token +`_. + + +Normal response codes: 200 +Error response codes:413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/OS-OAUTH1/access-token-create-response.txt + :language: javascript + + + + + + + + + + + + + +Get an Identity Service token +============================= + +.. rest_method:: POST /v3/auth/tokens + +Enables a consumer to get an Identity Service authentication token. + +The token represents the delegated authorization and identity +(impersonation) of the authorizing user. The roles and scope of the +generated token match those that the consumer initially requested. + +Supported signature methods: HMAC-SHA1. + +The consumer must provide required OAuth parameters in the request. +See `Consumer Obtains a Request Token +`_. + +The returned token is scoped to the requested project and with the +requested roles. In addition to the standard token response, the +token has an OAuth-specific object. + +Example OAuth-specific object in a token: + +.. code-block:: json + + "OS-OAUTH1": { + "access_token_id": "cce0b8be7" + } + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + +Response Example +---------------- + +.. literalinclude:: + :language: javascript + + + + + + + + + + + +List authorized access tokens +============================= + +.. rest_method:: GET /v3/OS-OAUTH1/users/{user_id}/access_tokens + +Lists authorized access tokens. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - user_id: user_id + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/OS-OAUTH1/access-tokens-list-response.json + :language: javascript + + + + + + + + + + + +Show consumer details +===================== + +.. rest_method:: GET /v3/OS-OAUTH1/consumers/{consumer_id} + +Shows details for a consumer. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - consumer_id: consumer_id + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/OS-OAUTH1/consumer-show-response.json + :language: javascript + + + + + + + + + + + +Delete consumer +=============== + +.. rest_method:: DELETE /v3/OS-OAUTH1/consumers/{consumer_id} + +Deletes a consumer. + +When you delete a consumer, any associated request tokens, access +tokens, and Identity API tokens are also deleted. + +Error response codes:204,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - consumer_id: consumer_id + + + + + + + + + + + + + + + +Update consumer +=============== + +.. rest_method:: PATCH /v3/OS-OAUTH1/consumers/{consumer_id} + +Updates the description for a consumer. + +If you try to update any attribute other than description, the HTTP +400 Bad Request error is returned. + + +Normal response codes: 200 +Error response codes:413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - consumer_id: consumer_id + +Request Example +--------------- + +.. literalinclude:: ../samples/OS-OAUTH1/consumer-update-request.json + :language: javascript + + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/OS-OAUTH1/consumer-update-response.json + :language: javascript + + + + + + + + + + + + + +Show unauthorized request token +=============================== + +.. rest_method:: POST /v3/OS-OAUTH1/request_token + +Enables a consumer to get an unauthorized request token. + +Supported signature methods: HMAC-SHA1. + +The consumer must provide all required OAuth parameters in the +request. See `Consumer Obtains a Request Token +`_. + + +Normal response codes: 200 +Error response codes:413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/OS-OAUTH1/request-token-create-response.txt + :language: javascript + + + + + + + + + + + + + +List roles for an access token +============================== + +.. rest_method:: GET /v3/OS-OAUTH1/users/{user_id}/access_tokens/{access_token_id}/roles + +Lists associated roles for an access token. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - user_id: user_id + - access_token_id: access_token_id + + + + +Response Example +---------------- + +.. literalinclude:: + :language: javascript + + + + + + + + + + + +Show role details for an access token +===================================== + +.. rest_method:: GET /v3/OS-OAUTH1/users/{user_id}/access_tokens/{access_token_id}/roles/{role_id} + +Shows details for a role for an access token. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - user_id: user_id + - role_id: role_id + - access_token_id: access_token_id + + + + +Response Example +---------------- + +.. literalinclude:: + :language: javascript + + + + + + + + + + diff --git a/api-ref/source/identity/v3/parameters.yaml b/api-ref/source/identity/v3/parameters.yaml new file mode 100644 index 000000000..49f75e2b1 --- /dev/null +++ b/api-ref/source/identity/v3/parameters.yaml @@ -0,0 +1,1376 @@ +# variables in header +X-Auth-Token: + description: | + A valid authentication token for an + administrative user. + in: header + required: true + type: string +X-Subject-Token: + description: | + The authentication token. An authentication + response returns the token ID in this header rather than in the + response body. + in: header + required: true + type: string +X-Subject-Token_1: + description: | + The authentication token for which you want to + perform the operation. + in: header + required: true + type: string + +# variables in path +credential_id: + description: | + The UUID for the credential. + in: path + required: false + type: string +domain_id: + description: | + Filters the response by a domain ID. + in: path + required: false + type: string +endpoint_id: + description: | + The endpoint ID. + in: path + required: false + type: string +group_1: + description: | + The group name, which is ``ldap`` or + ``identity``. + in: path + required: false + type: string +group_id: + description: | + The group ID. + in: path + required: false + type: string +option: + description: | + The option name. For the ``ldap`` group, a valid + value is ``url`` or ``user_tree_dn``. For the ``identity`` group, + a valid value is ``driver``. + in: path + required: false + type: string +policy_id: + description: | + The policy ID. + in: path + required: false + type: string +project_id: + description: | + The project ID. + in: path + required: false + type: string +region_id_2: + description: | + The region ID. + in: path + required: false + type: string +role_id: + description: | + The role ID. + in: path + required: false + type: string +service_id_2: + description: | + The service ID. + in: path + required: false + type: string +user_id: + description: | + The user ID. + in: path + required: false + type: string + +# variables in query +domain_id_7: + description: | + Filters the response by a domain ID. + in: query + required: false + type: string +enabled_11: + description: | + Filters the response by either enabled (``true``) + or disabled (``false``) users. + in: query + required: false + type: string +enabled_6: + description: | + Filters the response by either enabled (``true``) + or disabled (``false``) domains. Users can authorize against an + enabled domain and any of its projects. Users that are owned by an + enabled domain can authenticate and receive additional + authorization. Users cannot authorize against a disabled domain + or any of its projects. Users that are owned by a disabled domain + cannot authenticate or receive additional authorization. All + tokens that are authorized for a disabled domain or its projects + become no longer valid. If you reenable the domain, these tokens + are not re- enabled. + in: query + required: false + type: string +enabled_9: + description: | + Filters the response by either enabled (``true``) + or disabled (``false``) projects. + in: query + required: false + type: string +interface_2: + description: | + Filters the response by an interface. + in: query + required: false + type: string +name_10: + description: | + Filters the response by a domain name. + in: query + required: false + type: string +name_13: + description: | + Filters the response by a project name. + in: query + required: false + type: string +name_14: + description: | + Filters the response by a role name. + in: query + required: false + type: string +name_16: + description: | + Filters the response by a user name. + in: query + required: false + type: string +nocatalog: + description: | + (Since v3.1) The authentication response excludes + the service catalog. By default, the response includes the service + catalog. + in: query + required: false + type: string +parent_id_2: + description: | + (Since v3.4) Filters the response by a parent ID. + in: query + required: false + type: string +parent_region_id_1: + description: | + Filters the response by a parent region, by ID. + in: query + required: false + type: string +service_id_3: + description: | + Filters the response by a service ID. + in: query + required: false + type: string +type_4: + description: | + Filters the response by a MIME media type for the + serialized policy blob. For example, ``application/json``. + in: query + required: false + type: string +type_5: + description: | + Filters the response by a service type. A valid + value is ``compute``, ``ec2``, ``identity``, ``image``, + ``network``, or ``volume``. + in: query + required: false + type: string +user_id_3: + description: | + Filters the response by a user ID. + in: query + required: false + type: string + +# variables in body +audit_ids: + description: | + A list of one or two audit IDs. An audit ID is a + unique, randomly generated, URL-safe string that you can use to + track a token. The first audit ID is the current audit ID for the + token. The second audit ID is present for only re-scoped tokens + and is the audit ID from the token before it was re-scoped. A re- + scoped token is one that was exchanged for another token of the + same or different scope. You can use these audit IDs to track the + use of a token or chain of tokens across multiple requests and + endpoints without exposing the token ID to non-privileged users. + in: body + required: true + type: array +auth: + description: | + An ``auth`` object. + in: body + required: true + type: object +blob: + description: | + The credential itself, as a serialized blob. + in: body + required: true + type: string +blob_1: + description: | + The policy rule set itself, as a serialized blob. + in: body + required: true + type: string +blob_2: + description: | + The policy rule itself, as a serialized blob. + in: body + required: true + type: object +blob_3: + description: | + The credential itself, as a serialized blob. + in: body + required: false + type: string +catalog: + description: | + A ``catalog`` object. + in: body + required: true + type: array +config: + description: | + A ``config`` object. + in: body + required: true + type: object +credential: + description: | + A ``credential`` object. + in: body + required: true + type: object +credentials: + description: | + A ``credentials`` object. + in: body + required: true + type: array +default_project_id: + description: | + The ID of the default project for the user. + Setting this attribute does not grant any actual authorization on + the project, and is merely provided for convenience. Therefore, + the referenced project does not need to exist within the user + domain. (Since v3.1) If the user does not have authorization to + their default project, the default project is ignored at token + creation. (Since v3.1) Additionally, if your default project is + not valid, a token is issued without an explicit scope of + authorization. + in: body + required: false + type: string +default_project_id_1: + description: | + The ID of the default project for the user. + in: body + required: true + type: string +description: + description: | + The domain description. + in: body + required: false + type: string +description_1: + description: | + The group description. + in: body + required: false + type: string +description_10: + description: | + The service description. + in: body + required: true + type: string +description_11: + description: | + The user description. + in: body + required: true + type: string +description_2: + description: | + The project description. + in: body + required: false + type: string +description_3: + description: | + The region description. + in: body + required: false + type: string +description_4: + description: | + The service description. + in: body + required: false + type: string +description_5: + description: | + The user description. + in: body + required: false + type: string +description_6: + description: | + The project description. + in: body + required: true + type: string +description_7: + description: | + The domain description. + in: body + required: true + type: string +description_8: + description: | + The group description. + in: body + required: true + type: string +description_9: + description: | + The region description. + in: body + required: true + type: string +domain: + description: | + A ``domain`` object. + in: body + required: true + type: object +domain_1: + description: | + A ``domain`` object. Required if you specify a + user name. + in: body + required: false + type: object +domain_2: + description: | + Specify either ``id`` or ``name`` to uniquely + identify the domain. + in: body + required: false + type: object +domain_id_1: + description: | + The ID of the domain that owns the group. If you + omit the domain ID, defaults to the domain to which the client + token is scoped. + in: body + required: false + type: string +domain_id_2: + description: | + The ID of the domain for the project. If you + omit the domain ID, default is the domain to which your token is + scoped. + in: body + required: false + type: string +domain_id_3: + description: | + The ID of the domain for the user. + in: body + required: false + type: string +domain_id_4: + description: | + The ID of the domain for the project. + in: body + required: true + type: string +domain_id_5: + description: | + The ID of the domain for the group. + in: body + required: true + type: string +domain_id_6: + description: | + The ID of the domain for the user. + in: body + required: true + type: string +domains: + description: | + A ``domains`` object. + in: body + required: true + type: array +driver: + description: | + The Identity back-end driver. + in: body + required: true + type: string +driver_1: + description: | + The Identity back-end driver. + in: body + required: false + type: string +email: + description: | + The email address for the user. + in: body + required: false + type: string +email_1: + description: | + The email address for the user. + in: body + required: true + type: string +enabled: + description: | + Enables or disables the domain. Users can + authorize against an enabled domain and any of its projects. Users + that are owned by an enabled domain can authenticate and receive + additional authorization. Users cannot authorize against a + disabled domain or any of its projects. Users that are owned by a + disabled domain cannot authenticate or receive additional + authorization. All tokens that are authorized for a disabled + domain or its projects become no longer valid. If you reenable the + domain, these tokens are not re- enabled. To enable the domain, + set to ``true``. To disable the domain, set to ``false``. Default + is ``true``. + in: body + required: false + type: boolean +enabled_1: + description: | + Defines whether the endpoint appears in the + service catalog: - ``false``. The endpoint does not appear in the + service catalog. - ``true``. The endpoint appears in the service + catalog. Default is ``true``. + in: body + required: false + type: boolean +enabled_10: + description: | + Defines whether the service and its endpoints + appear in the service catalog: - ``false``. The service and its + endpoints do not appear in the service catalog. - ``true``. The + service and its endpoints appear in the service catalog. + in: body + required: true + type: boolean +enabled_12: + description: | + Indicates whether the domain is enabled or + disabled. If set to ``true``, the domain is enabled. Users can + authorize against an enabled domain and any of its projects. Users + that are owned by an enabled domain can authenticate and receive + additional authorization. If set to ``false``, the domain is + disabled. Users cannot authorize against a disabled domain or any + of its projects. Users that are owned by a disabled domain cannot + authenticate or receive additional authorization. All tokens that + are authorized for a disabled domain or its projects become no + longer valid. If you reenable the domain, these tokens are not re- + enabled. + in: body + required: true + type: boolean +enabled_13: + description: | + If set to ``true``, project is enabled. If set to + ``false``, project is disabled. + in: body + required: true + type: boolean +enabled_2: + description: | + Enables or disables the project. Users can + authorize against an enabled project. Users cannot authorize + against a disabled project. All tokens that are authorized for a + disabled project become no longer valid. If you reenable the + project, these tokens are not re-enabled. To enable the project, + set to ``true``. To disable the project, set to ``false``. Default + is ``true``. + in: body + required: false + type: boolean +enabled_3: + description: | + Defines whether the service and its endpoints + appear in the service catalog: - ``false``. The service and its + endpoints do not appear in the service catalog. - ``true``. The + service and its endpoints appear in the service catalog. + Default is ``true``. + in: body + required: false + type: boolean +enabled_4: + description: | + Enables or disables the user. An enabled user + can authenticate and receive authorization. A disabled user + cannot authenticate or receive authorization. Additionally, all + tokens that the user holds become no longer valid. If you reenable + this user, pre-existing tokens do not become valid. To enable the + user, set to ``true``. To disable the user, set to ``false``. + Default is ``true``. + in: body + required: false + type: boolean +enabled_5: + description: | + Enables or disables the project and its subtree. + Users can authorize against an enabled project. Users cannot + authorize against a disabled project. All tokens that are + authorized for a disabled project become no longer valid. If you + reenable the project, these tokens are not re-enabled. To enable + the project and its subtree, set to ``true``. To disable the + project and its subtree, set to ``false``. Default is ``true``. + in: body + required: true + type: boolean +enabled_7: + description: | + Indicates whether the endpoint appears in the + service catalog: - ``false``. The endpoint does not appear in the + service catalog. - ``true``. The endpoint appears in the service + catalog. + in: body + required: true + type: boolean +enabled_8: + description: | + If the user is enabled, this value is ``true``. + If the user is disabled, this value is ``false``. + in: body + required: true + type: boolean +endpoint: + description: | + An ``endpoint`` object. + in: body + required: true + type: object +endpoints: + description: | + An ``endpoints`` object. + in: body + required: true + type: array +expires_at: + description: | + The date and time when the token expires. + + The date and time stamp format is `ISO 8601 + `_: + + :: + + CCYY-MM-DDThh:mm:ss±hh:mm + + For example, ``2015-08-27T09:49:58-05:00``. + + The ``±hh:mm`` value, if included, is the time zone as an offset + from UTC. In the previous example, the offset value is ``-05:00``. + + A ``null`` value indicates that the token never expires. + in: body + required: true + type: string +extras: + description: | + A set of metadata key and value pairs, if any. + in: body + required: true + type: object +group: + description: | + A ``group`` object. + in: body + required: true + type: object +groups: + description: | + A ``groups`` object. + in: body + required: true + type: array +id: + description: | + The ID of the user. Required if you do not + specify the user name. + in: body + required: false + type: string +id_1: + description: | + The ID of the domain. If you specify a user + name, you must specify either a domain ID or domain name. + in: body + required: false + type: string +id_10: + description: | + The role ID. + in: body + required: true + type: string +id_11: + description: | + The ID of the service. + in: body + required: true + type: string +id_12: + description: | + The ID for the user. + in: body + required: true + type: string +id_13: + description: | + The ID for the region. + in: body + required: true + type: string +id_14: + description: | + The user ID. + in: body + required: true + type: string +id_2: + description: | + A token ID. + in: body + required: false + type: string +id_3: + description: | + The UUID for the credential. + in: body + required: true + type: string +id_4: + description: | + The domain ID. + in: body + required: true + type: string +id_5: + description: | + The endpoint UUID. + in: body + required: true + type: string +id_6: + description: | + The ID for the group. + in: body + required: true + type: string +id_7: + description: | + The ID of the policy. + in: body + required: true + type: string +id_8: + description: | + The ID for the project. + in: body + required: true + type: string +id_9: + description: | + A user-defined region ID. If you include + characters in the region ID that are not allowed in a URI, you + must URL-encode the ID. If you omit an ID, the API assigns an ID + to the region. + in: body + required: false + type: string +identity: + description: | + An ``identity`` object. + in: body + required: true + type: object +identity_1: + description: | + An ``identity`` object. Required to set the + identity group configuration options. + in: body + required: true + type: object +interface: + description: | + The interface type, which describes the + visibility of the endpoint. Value is: - ``public``. Visible by + end users on a publicly available network interface. - + ``internal``. Visible by end users on an unmetered internal + network interface. - ``admin``. Visible by administrative users + on a secure network interface. + in: body + required: true + type: string +interface_1: + description: | + The interface type, which describes the + visibility of the endpoint. A valid value is: - ``public``. + Visible by end users on a publicly available network interface. + - ``internal``. Visible by end users on an unmetered internal + network interface. - ``admin``. Visible by administrative users + on a secure network interface. + in: body + required: true + type: string +is_domain: + description: | + (Since v3.6) Indicates whether the project also + acts as a domain. Set to ``true`` to define this project as both + a project and domain. As a domain, the project provides a name + space in which you can create users, groups, and other projects. + Set to ``false`` to define this project as a regular project that + contains only resources. Default is ``false``. You cannot update + this parameter after you create the project. + in: body + required: false + type: boolean +is_domain_1: + description: | + (Since v3.6) Indicates whether the project also + acts as a domain. If set to ``true``, this project acts as both a + project and domain. As a domain, the project provides a name space + in which you can create users, groups, and other projects. + Otherwise, this field does not appear in the response and this + project behaves as a regular project that contains only resources. + in: body + required: false + type: boolean +issued_at: + description: | + The date and time when the token was issued. + + The date and time stamp format is `ISO 8601 + `_: + + :: + + CCYY-MM-DDThh:mm:ss±hh:mm + + For example, ``2015-08-27T09:49:58-05:00``. + + The ``±hh:mm`` value, if included, is the time zone as an offset + from UTC. In the previous example, the offset value is ``-05:00``. + in: body + required: true + type: string +ldap: + description: | + An ``ldap`` object. Required to set the LDAP + group configuration options. + in: body + required: true + type: object +links: + description: | + The links for the ``credential`` resource. + in: body + required: true + type: object +links_1: + description: | + The links for the ``domain`` resource. + in: body + required: true + type: object +links_10: + description: | + The links for the ``credentials`` resource. + in: body + required: true + type: object +links_11: + description: | + The links for the ``domains`` resource. + in: body + required: true + type: object +links_12: + description: | + The links for the ``roles`` resource. + in: body + required: true + type: object +links_13: + description: | + The links for the ``endpoints`` resource. + in: body + required: true + type: object +links_14: + description: | + The links for the ``users`` resource. + in: body + required: true + type: object +links_2: + description: | + The links for the ``endpoint`` resource. + in: body + required: true + type: object +links_3: + description: | + The links for the ``group`` resource. + in: body + required: true + type: object +links_4: + description: | + The links for the ``policy`` resource. + in: body + required: true + type: object +links_5: + description: | + The links for the ``project`` resource. + in: body + required: true + type: object +links_6: + description: | + The links for the ``region`` resource. + in: body + required: true + type: object +links_7: + description: | + The links for the ``role`` resource. + in: body + required: true + type: object +links_8: + description: | + The links for the ``service`` resource. + in: body + required: true + type: object +links_9: + description: | + The links for the ``user`` resource. + in: body + required: true + type: object +methods: + description: | + The authentication method. For password + authentication, specify ``password``. + in: body + required: true + type: array +methods_1: + description: | + The authentication method. For token + authentication, specify ``token``. + in: body + required: true + type: array +methods_2: + description: | + The authentication method, which is ``password``, + ``token``, or both methods. Indicates the accumulated set of + authentication methods that were used to obtain the token. For + example, if the token was obtained by password authentication, it + contains ``password``. Later, if the token is exchanged by using + the token authentication method one or more times, the + subsequently created tokens contain both ``password`` and + ``token`` in their ``methods`` attribute. Unlike multi-factor + authentication, the ``methods`` attribute merely indicates the + methods that were used to authenticate the user in exchange for a + token. The client is responsible for determining the total number + of authentication factors. + in: body + required: true + type: array +name: + description: | + The user name. Required if you do not specify + the ID of the user. If you specify the user name, you must also + specify the domain, by ID or name. + in: body + required: false + type: string +name_1: + description: | + The name of the domain. If you specify a user + name, you must specify either a domain ID or domain name. + in: body + required: false + type: string +name_11: + description: | + The name of the group. + in: body + required: true + type: string +name_12: + description: | + The user name. Must be unique within the domain. + in: body + required: true + type: string +name_15: + description: | + The service name. + in: body + required: true + type: string +name_17: + description: | + The domain name. + in: body + required: false + type: string +name_18: + description: | + The group name. + in: body + required: false + type: string +name_19: + description: | + The user name. + in: body + required: true + type: string +name_2: + description: | + The domain name. + in: body + required: true + type: string +name_3: + description: | + The endpoint name. + in: body + required: true + type: string +name_4: + description: | + The group name. + in: body + required: true + type: string +name_5: + description: | + The project name, which must be unique within the + owning domain. The project can have the same name as its domain. + in: body + required: true + type: string +name_6: + description: | + The role name. + in: body + required: true + type: string +name_7: + description: | + The service name. + in: body + required: false + type: string +name_8: + description: | + The user name, which must be unique within the + owning domain. + in: body + required: true + type: string +name_9: + description: | + The project name. The project can have the same + name as its domain. + in: body + required: true + type: string +original_password: + description: | + The original password for the user. + in: body + required: true + type: string +parent_id: + description: | + (Since v3.4) The ID of the parent project. If + you omit the parent project ID, the project is a top-level + project. + in: body + required: false + type: string +parent_id_1: + description: | + (Since v3.4) The ID of the parent project. If + ``null``, the project is a top-level project. + in: body + required: true + type: string +parent_region_id: + description: | + To make this region a child of another region, + set this parameter to the ID of the parent region. + in: body + required: false + type: string +parent_region_id_2: + description: | + If the region is a child of another region, the + ID for the parent region. Otherwise, this value is ``null``. + in: body + required: true + type: string +password: + description: | + The user password. + in: body + required: true + type: string +password_1: + description: | + The password for the user. + in: body + required: true + type: string +password_2: + description: | + The new password for the user. + in: body + required: true + type: string +policies: + description: | + A ``policies`` object. + in: body + required: true + type: array +policy: + description: | + A ``policy`` object. + in: body + required: true + type: object +project: + description: | + A ``project`` object. + in: body + required: true + type: object +project_id_1: + description: | + The UUID for the associated project. + in: body + required: true + type: string +project_id_2: + description: | + The UUID for the associated project. + in: body + required: false + type: string +projects: + description: | + A ``projects`` object. + in: body + required: true + type: array +region: + description: | + (Deprecated in v3.2) The geographic location of + the service endpoint. + in: body + required: true + type: string +region_1: + description: | + A ``region`` object. + in: body + required: true + type: object +region_2: + description: | + (Deprecated in v3.2) The geographic location of + the service endpoint. Use the ``region_id`` parameter instead. + in: body + required: false + type: string +region_id: + description: | + (Since v3.2) The ID of the region that contains + the service endpoint. + in: body + required: true + type: string +region_id_1: + description: | + (Since v3.2) The ID of the region that contains + the service endpoint. + in: body + required: false + type: string +regions: + description: | + A ``regions`` object. + in: body + required: true + type: array +role: + description: | + A ``role`` object. + in: body + required: true + type: object +role_assignments: + description: | + A ``role_assignments`` object. + in: body + required: true + type: array +roles: + description: | + A ``roles`` object. + in: body + required: true + type: array +scope: + description: | + The authorization scope. (Since v3.4) Specify + ``unscoped`` to make an explicit unscoped token request, which + returns an unscoped response without any authorization. This + request behaves the same as a token request with no scope where + the user has no default project defined. If you do not make an + explicit ``unscoped`` token request and your role has a default + project, the response might return a project- scoped token. If a + default project is not defined, a token is issued without an + explicit scope of authorization, which is the same as asking for + an explicit unscoped token. + in: body + required: false + type: string +scope_1: + description: | + The authorization scope. - Specify ``project`` + to scope to a project, by ID or name. If you specify the project + by name, you must also specify the project domain to uniquely + identify the project. Because a project can have the same name + as its owning domain, the scope is determined, as follows: - + If the project name is truly unique, the token is scoped to the + project. - If a name clash exists between a project acting as a + domain and a regular project within that domain, the token is + scoped to the regular project. - In a name-clash situation, + if the user wants the token scoped to the project acting as + the domain, you must either specify use the project ID to + specify the scope or rename either the project acting as a + domain or the regular project. Alternatively, you can use a + domain name to uniquely identify the project. - Specify + ``domain`` to scope to a domain, by ID or name with equivalent + results to project scoping. The catalog returned from a domain- + scoped request contains all endpoints of a project- scoped + catalog, excluding ones that require a project ID as part of + their URL. You cannot simultaneously scope a token to a project + and domain. + in: body + required: false + type: object +service: + description: | + A ``service`` object. + in: body + required: true + type: object +service_id: + description: | + The UUID of the service to which the endpoint + belongs. + in: body + required: true + type: string +service_id_1: + description: | + The service ID. + in: body + required: false + type: string +services: + description: | + A ``services`` object. + in: body + required: true + type: array +token: + description: | + A ``token`` object. + in: body + required: true + type: object +token_1: + description: | + A ``token`` object. The token authentication + method is used. This method is typically used in combination with + a request to change authorization scope. + in: body + required: true + type: object +type: + description: | + The endpoint type. + in: body + required: true + type: string +type_1: + description: | + The credential type, such as ``ec2`` or ``cert``. + The implementation determines the list of supported types. + in: body + required: true + type: string +type_2: + description: | + The MIME media type of the serialized policy + blob. + in: body + required: true + type: string +type_3: + description: | + The service type, which describes the API + implemented by the service. A valid value is ``compute``, + ``ec2``, ``identity``, ``image``, ``network``, or ``volume``. + in: body + required: true + type: string +type_6: + description: | + The service type, which describes the API + implemented by the service. Value is ``compute``, ``ec2``, + ``identity``, ``image``, ``network``, or ``volume``. + in: body + required: true + type: string +type_7: + description: | + The credential type, such as ``ec2`` or ``cert``. + The implementation determines the list of supported types. + in: body + required: false + type: string +url: + description: | + The endpoint URL. + in: body + required: true + type: string +url_1: + description: | + The LDAP URL. + in: body + required: true + type: string +url_2: + description: | + The LDAP URL. + in: body + required: false + type: string +user: + description: | + A ``user`` object. + in: body + required: true + type: object +user_id_1: + description: | + The ID of the user who owns the credential. + in: body + required: true + type: string +user_id_2: + description: | + The ID of the user who owns the policy. + in: body + required: false + type: string +user_id_4: + description: | + The ID of the user who owns the policy. + in: body + required: true + type: string +user_id_5: + description: | + The ID of the user who owns the credential. + in: body + required: false + type: string +user_tree_dn: + description: | + The base distinguished name (DN) of LDAP, from + where all users can be reached. For example, + ``ou=Users,dc=root,dc=org``. + in: body + required: true + type: string +user_tree_dn_1: + description: | + The base distinguished name (DN) of LDAP, from + where all users can be reached. For example, + ``ou=Users,dc=root,dc=org``. + in: body + required: false + type: string +users: + description: | + A ``users`` object. + in: body + required: true + type: array + diff --git a/api-ref/source/identity/v3/policies.inc b/api-ref/source/identity/v3/policies.inc new file mode 100644 index 000000000..123dd7451 --- /dev/null +++ b/api-ref/source/identity/v3/policies.inc @@ -0,0 +1,276 @@ +.. -*- rst -*- + +=================== +Policies (policies) +=================== + +A policy is an arbitrarily serialized policy engine rule set to be +consumed by a remote service. + +You encode policy rule sets into a blob that remote services can +consume. To do so, set ``type`` to ``application/json`` and specify +policy rules as JSON strings in a ``blob``. For example: + +:: + + { + "blob":{ + "foobar_user":[ + "role:compute-user" + ] + } + } + + +Create policy +============= + +.. rest_method:: POST /v3/policies + +Creates a policy. + +Error response codes:201,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - policy: policy + - user_id: user_id + - project_id: project_id + - type: type + - blob: blob + +Request Example +--------------- + +.. literalinclude:: ../samples/admin/policy-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - user_id: user_id + - links: links + - blob: blob + - policy: policy + - project_id: project_id + - type: type + - id: id + + + + + + + + + + + + + + +List policies +============= + +.. rest_method:: GET /v3/policies + +Lists policies. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - type: type + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - user_id: user_id + - links: links + - blob: blob + - policies: policies + - project_id: project_id + - type: type + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/admin/policies-list-response.json + :language: javascript + + + + + + + + + + + +Show policy details +=================== + +.. rest_method:: GET /v3/policies/{policy_id} + +Shows details for a policy. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - policy_id: policy_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - user_id: user_id + - links: links + - blob: blob + - policy: policy + - project_id: project_id + - type: type + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/admin/policy-show-response.json + :language: javascript + + + + + + + + + + + +Update policy +============= + +.. rest_method:: PATCH /v3/policies/{policy_id} + +Updates a policy. + + +Normal response codes: 200 +Error response codes:413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - policy: policy + - user_id: user_id + - project_id: project_id + - type: type + - blob: blob + - policy_id: policy_id + +Request Example +--------------- + +.. literalinclude:: ../samples/admin/policy-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - user_id: user_id + - links: links + - blob: blob + - policy: policy + - project_id: project_id + - type: type + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/admin/policy-update-response.json + :language: javascript + + + + + + + + + + + + + +Delete policy +============= + +.. rest_method:: DELETE /v3/policies/{policy_id} + +Deletes a policy. + +Error response codes:204,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - policy_id: policy_id + + + + + + + + + + + + + + diff --git a/api-ref/source/identity/v3/projects.inc b/api-ref/source/identity/v3/projects.inc new file mode 100644 index 000000000..3d34ab3ee --- /dev/null +++ b/api-ref/source/identity/v3/projects.inc @@ -0,0 +1,396 @@ +.. -*- rst -*- + +========================================= +Projects (projects, users, groups, roles) +========================================= + +A project is the base unit of ownership. Resources are owned by a +specific project. A project is owned by a specific domain. + +(Since v3.4) You can create a hierarchy of projects by setting a +parent ID when you create projects. All projects in a hierarchy +must be owned by the same domain. + +(Since v3.6) Optionally, you can create a project that behaves both +as a project and a domain. As a domain, the project provides a name +space in which you can create users, groups, and other projects. If +you create a project that behaves as a domain, you cannot update +this project to behave like a regular project. + + +List projects +============= + +.. rest_method:: GET /v3/projects + +Lists projects. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - domain_id: domain_id + - parent_id: parent_id + - name: name + - enabled: enabled + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - is_domain: is_domain + - description: description + - links: links + - enabled: enabled + - domain_id: domain_id + - parent_id: parent_id + - id: id + - projects: projects + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/admin/projects-list-response.json + :language: javascript + + + + + + + + + + + +Create project +============== + +.. rest_method:: POST /v3/projects + +Creates a project. + +Error response codes:201,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - is_domain: is_domain + - description: description + - enabled: enabled + - project: project + - parent_id: parent_id + - domain_id: domain_id + - name: name + +Request Example +--------------- + +.. literalinclude:: ../samples/admin/project-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - is_domain: is_domain + - description: description + - links: links + - enabled: enabled + - domain_id: domain_id + - project: project + - parent_id: parent_id + - id: id + - name: name + + + + + + + + + + + + + + +Show project details +==================== + +.. rest_method:: GET /v3/projects/{project_id} + +Shows details for a project. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - project_id: project_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - is_domain: is_domain + - description: description + - links: links + - enabled: enabled + - domain_id: domain_id + - project: project + - parent_id: parent_id + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/admin/project-show-response.json + :language: javascript + + + + + + + + + + + +Update project +============== + +.. rest_method:: PATCH /v3/projects/{project_id} + +Updates a project. + + +Normal response codes: 200 +Error response codes:413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - description: description + - enabled: enabled + - project: project + - parent_id: parent_id + - domain_id: domain_id + - name: name + - project_id: project_id + +Request Example +--------------- + +.. literalinclude:: ../samples/admin/project-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - is_domain: is_domain + - description: description + - links: links + - enabled: enabled + - domain_id: domain_id + - project: project + - parent_id: parent_id + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/admin/project-update-response.json + :language: javascript + + + + + + + + + + + + + +Delete project +============== + +.. rest_method:: DELETE /v3/projects/{project_id} + +Deletes a project. + +Error response codes:204,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - project_id: project_id + + + + + + + + + + + + + + + +Enable or disable project and its subtree +========================================= + +.. rest_method:: PATCH /v3/projects/{project_id}/cascade + +(Since v3.6) Enables or disables a project and its entire subtree. + +A project subtree includes all projects beneath the parent project +in the hierarchy. + +If you include attributes other than the ``enabled`` attribute, +this call fails and returns the ``Bad Request (400)`` response +code. + +If you perform this action against a project that acts as a domain +(``is_domain`` is set to ``true``, this call fails and returns the +``Forbidden (403)`` response code. + + +Normal response codes: 200 +Error response codes:413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - project: project + - enabled: enabled + - project_id: project_id + +Request Example +--------------- + +.. literalinclude:: ../samples/admin/project-enable-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - is_domain: is_domain + - description: description + - links: links + - enabled: enabled + - domain_id: domain_id + - project: project + - parent_id: parent_id + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/admin/project-update-response.json + :language: javascript + + + + + + + + + + + + + +Delete project subtree +====================== + +.. rest_method:: DELETE /v3/projects/{project_id}/cascade + +(Since v3.6) Deletes a project and its entire subtree. + +A project subtree includes all projects beneath the parent project +in the hierarchy. You must disable the projects in the subtree +before you perform this operation. + +Error response codes:204,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - project_id: project_id + + + + + + + + + + + + + + diff --git a/api-ref/source/identity/v3/regions-v3.inc b/api-ref/source/identity/v3/regions-v3.inc new file mode 100644 index 000000000..886128577 --- /dev/null +++ b/api-ref/source/identity/v3/regions-v3.inc @@ -0,0 +1,285 @@ +.. -*- rst -*- + +============================== +Regions (regions) (since v3.2) +============================== + +A region is a general division of an OpenStack deployment. You can +associate zero or more sub-regions with a region to create a tree- +like structured hierarchy. + +Although a region does not have a geographical connotation, a +deployment can use a geographical name for a region, such as ``us- +east``. + +You can list, create, update, show details for, and delete regions. + + +Show region details +=================== + +.. rest_method:: GET /v3/regions/{region_id} + +Shows details for a region, by ID. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - region_id: region_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - parent_region_id: parent_region_id + - region: region + - description: description + - links: links + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/admin/region-show-response.json + :language: javascript + + + + + + + + + + + +Update region +============= + +.. rest_method:: PATCH /v3/regions/{region_id} + +Updates a region. + +You can update the description or parent region ID for a region. +You cannot update the region ID. + +The following error might occur: + +- ``Not Found (404)``. The parent region ID does not exist. + + +Normal response codes: 200 +Error response codes:413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - parent_region_id: parent_region_id + - region: region + - description: description + - region_id: region_id + +Request Example +--------------- + +.. literalinclude:: ../samples/admin/region-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - parent_region_id: parent_region_id + - region: region + - description: description + - links: links + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/admin/region-update-response.json + :language: javascript + + + + + + + + + + + + + +Delete region +============= + +.. rest_method:: DELETE /v3/regions/{region_id} + +Deletes a region. + +The following error might occur: + +- ``Conflict (409)``. The region cannot be deleted because it has + child regions. + +Error response codes:204,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - region_id: region_id + + + + + + + + + + + + + + + +List regions +============ + +.. rest_method:: GET /v3/regions + +Lists regions. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - parent_region_id: parent_region_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - regions: regions + - parent_region_id: parent_region_id + - description: description + - links: links + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/admin/regions-list-response.json + :language: javascript + + + + + + + + + + + +Create region +============= + +.. rest_method:: POST /v3/regions + +Creates a region. + +When you create the region, you can optionally specify a region ID. +If you include characters in the region ID that are not allowed in +a URI, you must URL-encode the ID. If you omit an ID, the API +assigns an ID to the region. + +The following errors might occur: + +- ``Not Found (404)``. The parent region ID does not exist. + +- ``Conflict (409)``. The parent region ID would form a circular + relationship. + +- ``Conflict (409)``. The user-defined region ID is not unique to + the OpenStack deployment. + +Error response codes:201,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - parent_region_id: parent_region_id + - region: region + - description: description + - id: id + +Request Example +--------------- + +.. literalinclude:: ../samples/admin/region-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - parent_region_id: parent_region_id + - region: region + - description: description + - links: links + - id: id + + + + + + + + + + + + + diff --git a/api-ref/source/identity/v3/roles.inc b/api-ref/source/identity/v3/roles.inc new file mode 100644 index 000000000..75a3884d8 --- /dev/null +++ b/api-ref/source/identity/v3/roles.inc @@ -0,0 +1,898 @@ +.. -*- rst -*- + +============= +Roles (roles) +============= + +Roles grant a user a set of permitted actions for either a specific +project or an entire domain. + +You can grant roles to a user on a project, including projects +owned by other domains. + +You can create, list, and delete roles. You can also list roles +assigned to a specified domain, project, or user. + +You can list role assignments and, since v3.6, all role assignments +within a tree of projects. Use the query parameters to filter the +list because the role assignments list can be long. Some typical +examples are: + +- List role assignments for the specified user: + + :: GET /role_assignments?user.id={user_id} + +- List role assignments for the specified project: + + :: GET /role_assignments?scope.project.id={project_id} + +- List all role assignments for a specified project and its sub- + projects: + + :: GET /role_assignments?scope.project.id={project_id}?includ + e_subtree=true + + If you specify ``include_subtree=true``, you must also specify + the ``scope.project.id``. Otherwise, this call returns the ``Bad + Request (400)`` response code. + +Each role assignment entity in the collection contains a link to +the assignment that created the entity. + +Use the ``effective`` query parameter to list effective assignments +at the user, project, and domain level. This parameter allows for +the effects of group membership. The group role assignment entities +themselves are not returned in the collection. This represents the +effective role assignments that would be included in a scoped +token. + +In the response, the ``links`` entity section for entities for +group members also contains a URL that enables access to the +membership of the group. + +You can use the other query parameters with the ``effective`` +parameter, such as: + +- Determine what a user can actually do: + + :: GET /role_assignments?user.id={user_id} & effective + +- Get the equivalent set of role assignments that are included in a + project-scoped token response: + + :: GET /role_assignments?user.id={user_id} & + scope.project.id={project_id} & effective + + +Grant role to group on project +============================== + +.. rest_method:: PUT /v3/projects/{project_id}/groups/{group_id}/roles/{role_id} + +Grants a role to a group on a project. + +Error response codes:204,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - role_id: role_id + - project_id: project_id + - group_id: group_id + + + + + + + + + + + + + + + +Check whether group has role on project +======================================= + +.. rest_method:: HEAD /v3/projects/{project_id}/groups/{group_id}/roles/{role_id} + +Validates that a group has a role on a project. + +Error response codes:204,413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - role_id: role_id + - project_id: project_id + - group_id: group_id + + + + + + + + + + + + + +Revoke role from group on project +================================= + +.. rest_method:: DELETE /v3/projects/{project_id}/groups/{group_id}/roles/{role_id} + +Revokes a role from a group on a project. + +Error response codes:204,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - role_id: role_id + - project_id: project_id + - group_id: group_id + + + + + + + + + + + + + + + +Grant role to user on project +============================= + +.. rest_method:: PUT /v3/projects/{project_id}/users/{user_id}/roles/{role_id} + +Grants a role to a user on a project. + +Error response codes:204,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - role_id: role_id + - project_id: project_id + - user_id: user_id + + + + + + + + + + + + + + + +Check whether user has role on project +====================================== + +.. rest_method:: HEAD /v3/projects/{project_id}/users/{user_id}/roles/{role_id} + +Validates that a user has a role on a project. + +Error response codes:204,413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - role_id: role_id + - project_id: project_id + - user_id: user_id + + + + + + + + + + + + + +Revoke role from user on project +================================ + +.. rest_method:: DELETE /v3/projects/{project_id}/users/{user_id}/roles/{role_id} + +Revokes a role from a user on a project. + +Error response codes:204,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - role_id: role_id + - project_id: project_id + - user_id: user_id + + + + + + + + + + + + + + + +List roles for user on project +============================== + +.. rest_method:: GET /v3/projects/{project_id}/users/{user_id}/roles + +Lists roles for a user on a project. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - project_id: project_id + - user_id: user_id + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/admin/project-user-roles-list-response.json + :language: javascript + + + + + + + + + + + +List roles for group on project +=============================== + +.. rest_method:: GET /v3/projects/{project_id}/groups/{group_id}/roles + +Lists roles for a group on a project. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - project_id: project_id + - group_id: group_id + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/admin/project-group-roles-list-response.json + :language: javascript + + + + + + + + + + + +Grant role to group on domain +============================= + +.. rest_method:: PUT /v3/domains/{domain_id}/groups/{group_id}/roles/{role_id} + +Grants a role to a group on a domain. + +Error response codes:204,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - domain_id: domain_id + - role_id: role_id + - group_id: group_id + + + + + + + + + + + + + + + +Check whether group has role on domain +====================================== + +.. rest_method:: HEAD /v3/domains/{domain_id}/groups/{group_id}/roles/{role_id} + +Validates that a group has a role on a domain. + +Error response codes:204,413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - domain_id: domain_id + - role_id: role_id + - group_id: group_id + + + + + + + + + + + + + +Revoke role from group on domain +================================ + +.. rest_method:: DELETE /v3/domains/{domain_id}/groups/{group_id}/roles/{role_id} + +Revokes a role from a group on a domain. + +Error response codes:204,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - domain_id: domain_id + - role_id: role_id + - group_id: group_id + + + + + + + + + + + + + + + +List roles for user on domain +============================= + +.. rest_method:: GET /v3/domains/{domain_id}/users/{user_id}/roles + +Lists roles for a user on a domain. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - domain_id: domain_id + - user_id: user_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - roles: roles + - id: id + - links: links + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/admin/domain-user-roles-list-response.json + :language: javascript + + + + + + + + + + + +List roles +========== + +.. rest_method:: GET /v3/roles + +Lists roles. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - name: name + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - roles: roles + - id: id + - links: links + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/admin/roles-list-response.json + :language: javascript + + + + + + + + + + + +Create role +=========== + +.. rest_method:: POST /v3/roles + +Creates a role. + +Error response codes:201,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - role: role + - name: name + +Request Example +--------------- + +.. literalinclude:: ../samples/admin/role-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - role: role + - id: id + - links: links + - name: name + + + + + + + + + + + + + + +Grant role to user on domain +============================ + +.. rest_method:: PUT /v3/domains/{domain_id}/users/{user_id}/roles/{role_id} + +Grants a role to a user on a domain. + +Error response codes:204,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - domain_id: domain_id + - role_id: role_id + - user_id: user_id + + + + + + + + + + + + + + + +Check whether user has role on domain +===================================== + +.. rest_method:: HEAD /v3/domains/{domain_id}/users/{user_id}/roles/{role_id} + +Validates that a user has a role on a domain. + +Error response codes:204,413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - domain_id: domain_id + - role_id: role_id + - user_id: user_id + + + + + + + + + + + + + +Revoke role from user on domain +=============================== + +.. rest_method:: DELETE /v3/domains/{domain_id}/users/{user_id}/roles/{role_id} + +Revokes a role from a user on a domain. + +Error response codes:204,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - domain_id: domain_id + - role_id: role_id + - user_id: user_id + + + + + + + + + + + + + + + +List role assignments +===================== + +.. rest_method:: GET /v3/role_assignments + +Lists role assignments. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - role_assignments: role_assignments + + + +Response Example +---------------- + +.. literalinclude:: ../samples/admin/role-assignments-list-response.json + :language: javascript + + + + + + + + + + + +Show role details +================= + +.. rest_method:: GET /v3/roles/{role_id} + +Shows details for a role. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - role_id: role_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - role: role + - id: id + - links: links + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/admin/role-show-response.json + :language: javascript + + + + + + + + + + + +Update role +=========== + +.. rest_method:: PATCH /v3/roles/{role_id} + +Updates a role. + + +Normal response codes: 200 +Error response codes:413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - role: role + - name: name + - role_id: role_id + +Request Example +--------------- + +.. literalinclude:: ../samples/admin/role-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - role: role + - id: id + - links: links + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/admin/role-update-response.json + :language: javascript + + + + + + + + + + + + + +Delete role +=========== + +.. rest_method:: DELETE /v3/roles/{role_id} + +Deletes a role. + +Error response codes:204,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - role_id: role_id + + + + + + + + + + + + + + + +List roles for group on domain +============================== + +.. rest_method:: GET /v3/domains/{domain_id}/groups/{group_id}/roles + +Lists roles for a group on a domain. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - domain_id: domain_id + - group_id: group_id + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/admin/domain-group-roles-list-response.json + :language: javascript + + + + + + + + + + diff --git a/api-ref/source/identity/v3/samples/OS-ENDPOINT-POLICY/policy-endpoint-associations-list-response.json b/api-ref/source/identity/v3/samples/OS-ENDPOINT-POLICY/policy-endpoint-associations-list-response.json new file mode 100644 index 000000000..e626ff169 --- /dev/null +++ b/api-ref/source/identity/v3/samples/OS-ENDPOINT-POLICY/policy-endpoint-associations-list-response.json @@ -0,0 +1,29 @@ +{ + "endpoints": [ + { + "id": "1", + "interface": "public", + "links": { + "self": "http://identity:35357/v3/endpoints/1" + }, + "region": "north", + "service_id": "9242e05f0c23467bbd1cf1f7a6e5e596", + "url": "http://identity:35357/" + }, + { + "id": "1", + "interface": "internal", + "links": { + "self": "http://identity:35357/v3/endpoints/1" + }, + "region": "south", + "service_id": "9242e05f0c23467bbd1cf1f7a6e5e596", + "url": "http://identity:35357/" + } + ], + "links": { + "next": null, + "previous": null, + "self": "http://identity:35357/v3/OS-ENDPOINT-POLICY/policies/13c92821e4c4476a878d3aae7444f52f/endpoints" + } +} diff --git a/api-ref/source/identity/v3/samples/OS-ENDPOINT-POLICY/policy-show-response.json b/api-ref/source/identity/v3/samples/OS-ENDPOINT-POLICY/policy-show-response.json new file mode 100644 index 000000000..a25a038da --- /dev/null +++ b/api-ref/source/identity/v3/samples/OS-ENDPOINT-POLICY/policy-show-response.json @@ -0,0 +1,14 @@ +{ + "policy": { + "blob": { + "foobar_user": [ + "role:compute-user" + ] + }, + "id": "13c92821e4c4476a878d3aae7444f52f", + "links": { + "self": "http://identity:35357/v3/policies/13c92821e4c4476a878d3aae7444f52f" + }, + "type": "application/json" + } +} diff --git a/api-ref/source/identity/v3/samples/OS-INHERIT/group-roles-domain-list-response.json b/api-ref/source/identity/v3/samples/OS-INHERIT/group-roles-domain-list-response.json new file mode 100644 index 000000000..fcc023bea --- /dev/null +++ b/api-ref/source/identity/v3/samples/OS-INHERIT/group-roles-domain-list-response.json @@ -0,0 +1,23 @@ +{ + "roles": [ + { + "id": "91011", + "links": { + "self": "http://identity:35357/v3/roles/91011" + }, + "name": "admin" + }, + { + "id": "91011", + "links": { + "self": "http://identity:35357/v3/roles/91011" + }, + "name": "admin" + } + ], + "links": { + "self": "http://identity:35357/v3/OS-INHERIT/domains/1234/groups/5678/roles/inherited_to_projects", + "previous": null, + "next": null + } +} diff --git a/api-ref/source/identity/v3/samples/OS-INHERIT/group-roles-list-response.json b/api-ref/source/identity/v3/samples/OS-INHERIT/group-roles-list-response.json new file mode 100644 index 000000000..73962e438 --- /dev/null +++ b/api-ref/source/identity/v3/samples/OS-INHERIT/group-roles-list-response.json @@ -0,0 +1,23 @@ +{ + "roles": [ + { + "id": "91011", + "links": { + "self": "http://identity:35357/v3/roles/91011" + }, + "name": "admin" + }, + { + "id": "91011", + "links": { + "self": "http://identity:35357/v3/roles/91011" + }, + "name": "admin" + } + ], + "links": { + "self": "http://identity:35357/v3/OS-INHERIT/projects/1234/groups/5678/roles/inherited_to_projects", + "previous": null, + "next": null + } +} diff --git a/api-ref/source/identity/v3/samples/OS-INHERIT/role-assignments-effective-list-response.json b/api-ref/source/identity/v3/samples/OS-INHERIT/role-assignments-effective-list-response.json new file mode 100644 index 000000000..4e195d2db --- /dev/null +++ b/api-ref/source/identity/v3/samples/OS-INHERIT/role-assignments-effective-list-response.json @@ -0,0 +1,42 @@ +{ + "role_assignments": [ + { + "links": { + "assignment": "http://identity:35357/v3/OS-INHERIT/domains/12131/users/41516/roles/91011/inherited_to_projects" + }, + "role": { + "id": "91011" + }, + "scope": { + "project": { + "id": "1234" + } + }, + "user": { + "id": "41516" + } + }, + { + "links": { + "assignment": "http://identity:35357/v3/projects/1234/groups/5678/roles/91011", + "membership": "http://identity:35357/v3/groups/5678/users/41516" + }, + "role": { + "id": "91011" + }, + "scope": { + "project": { + "id": "1234" + } + }, + "user": { + "id": "41516" + } + } + ], + "links": { + "self": "http://identity:35357/v3/role_assignments?effective", + "previous": null, + "next": null + } +} diff --git a/api-ref/source/identity/v3/samples/OS-INHERIT/role-assignments-list-response.json b/api-ref/source/identity/v3/samples/OS-INHERIT/role-assignments-list-response.json new file mode 100644 index 000000000..c49479374 --- /dev/null +++ b/api-ref/source/identity/v3/samples/OS-INHERIT/role-assignments-list-response.json @@ -0,0 +1,42 @@ +{ + "role_assignments": [ + { + "links": { + "assignment": "http://identity:35357/v3/OS-INHERIT/domains/1234/users/5678/roles/91011/inherited_to_projects" + }, + "role": { + "id": "91011" + }, + "scope": { + "domain": { + "id": "1234" + }, + "OS-INHERIT:inherited_to": "projects" + }, + "user": { + "id": "5678" + } + }, + { + "group": { + "id": "5678" + }, + "links": { + "assignment": "http://identity:35357/v3/projects/1234/groups/5678/roles/91011" + }, + "role": { + "id": "91011" + }, + "scope": { + "project": { + "id": "1234" + } + } + } + ], + "links": { + "self": "http://identity:35357/v3/role_assignments", + "previous": null, + "next": null + } +} diff --git a/api-ref/source/identity/v3/samples/OS-INHERIT/user-roles-domain-list-response.json b/api-ref/source/identity/v3/samples/OS-INHERIT/user-roles-domain-list-response.json new file mode 100644 index 000000000..36613cbe1 --- /dev/null +++ b/api-ref/source/identity/v3/samples/OS-INHERIT/user-roles-domain-list-response.json @@ -0,0 +1,23 @@ +{ + "roles": [ + { + "id": "91011", + "links": { + "self": "http://identity:35357/v3/roles/91011" + }, + "name": "admin" + }, + { + "id": "91011", + "links": { + "self": "http://identity:35357/v3/roles/91011" + }, + "name": "admin" + } + ], + "links": { + "self": "http://identity:35357/v3/OS-INHERIT/domains/1234/users/5678/roles/inherited_to_projects", + "previous": null, + "next": null + } +} diff --git a/api-ref/source/identity/v3/samples/OS-INHERIT/user-roles-list-response.json b/api-ref/source/identity/v3/samples/OS-INHERIT/user-roles-list-response.json new file mode 100644 index 000000000..fc8481796 --- /dev/null +++ b/api-ref/source/identity/v3/samples/OS-INHERIT/user-roles-list-response.json @@ -0,0 +1,23 @@ +{ + "roles": [ + { + "id": "91011", + "links": { + "self": "http://identity:35357/v3/roles/91011" + }, + "name": "admin" + }, + { + "id": "91011", + "links": { + "self": "http://identity:35357/v3/roles/91011" + }, + "name": "admin" + } + ], + "links": { + "self": "http://identity:35357/v3/OS-INHERIT/projects/1234/users/5678/roles/inherited_to_projects", + "previous": null, + "next": null + } +} diff --git a/api-ref/source/identity/v3/samples/OS-KDS/group-create-request.json b/api-ref/source/identity/v3/samples/OS-KDS/group-create-request.json new file mode 100644 index 000000000..647acfb64 --- /dev/null +++ b/api-ref/source/identity/v3/samples/OS-KDS/group-create-request.json @@ -0,0 +1,3 @@ +{ + "key": "TXkgcHJlY2lvdXNzcy4u..." +} diff --git a/api-ref/source/identity/v3/samples/OS-KDS/group-create-response.json b/api-ref/source/identity/v3/samples/OS-KDS/group-create-response.json new file mode 100644 index 000000000..d6bc9e395 --- /dev/null +++ b/api-ref/source/identity/v3/samples/OS-KDS/group-create-response.json @@ -0,0 +1,3 @@ +{ + "name": "--group-name--" +} diff --git a/api-ref/source/identity/v3/samples/OS-KDS/group-key-show-response.json b/api-ref/source/identity/v3/samples/OS-KDS/group-key-show-response.json new file mode 100644 index 000000000..d6bc9e395 --- /dev/null +++ b/api-ref/source/identity/v3/samples/OS-KDS/group-key-show-response.json @@ -0,0 +1,3 @@ +{ + "name": "--group-name--" +} diff --git a/api-ref/source/identity/v3/samples/OS-KDS/key-create-request.json b/api-ref/source/identity/v3/samples/OS-KDS/key-create-request.json new file mode 100644 index 000000000..647acfb64 --- /dev/null +++ b/api-ref/source/identity/v3/samples/OS-KDS/key-create-request.json @@ -0,0 +1,3 @@ +{ + "key": "TXkgcHJlY2lvdXNzcy4u..." +} diff --git a/api-ref/source/identity/v3/samples/OS-KDS/key-create-response.json b/api-ref/source/identity/v3/samples/OS-KDS/key-create-response.json new file mode 100644 index 000000000..ae69f9741 --- /dev/null +++ b/api-ref/source/identity/v3/samples/OS-KDS/key-create-response.json @@ -0,0 +1,4 @@ +{ + "name": "TXkgcHJlY2lvdXNzcy4u...", + "generation": 2 +} diff --git a/api-ref/source/identity/v3/samples/OS-KDS/ticket-generate-request.json b/api-ref/source/identity/v3/samples/OS-KDS/ticket-generate-request.json new file mode 100644 index 000000000..7aeabacab --- /dev/null +++ b/api-ref/source/identity/v3/samples/OS-KDS/ticket-generate-request.json @@ -0,0 +1,4 @@ +{ + "metadata": "Zhn8yhasf8hihkf...", + "signature": "c2lnbmF0dXJl..." +} diff --git a/api-ref/source/identity/v3/samples/OS-KDS/ticket-generate-response.json b/api-ref/source/identity/v3/samples/OS-KDS/ticket-generate-response.json new file mode 100644 index 000000000..f1f68ce7d --- /dev/null +++ b/api-ref/source/identity/v3/samples/OS-KDS/ticket-generate-response.json @@ -0,0 +1,6 @@ +{ + "source": "scheduler.host.example.com", + "destination": "compute.host.example.com", + "timestamp": "2012-03-26T10:01:01.720000", + "nonce": 1234567890 +} diff --git a/api-ref/source/identity/v3/samples/OS-OAUTH1/access-token-create-response.txt b/api-ref/source/identity/v3/samples/OS-OAUTH1/access-token-create-response.txt new file mode 100644 index 000000000..6e7838a8c --- /dev/null +++ b/api-ref/source/identity/v3/samples/OS-OAUTH1/access-token-create-response.txt @@ -0,0 +1 @@ +oauth_token=accd36&oauth_token_secret=aa47da&oauth_expires_at=2013-09-11T06:07:51.501805Z \ No newline at end of file diff --git a/api-ref/source/identity/v3/samples/OS-OAUTH1/access-token-show-response.json b/api-ref/source/identity/v3/samples/OS-OAUTH1/access-token-show-response.json new file mode 100644 index 000000000..cea1fed99 --- /dev/null +++ b/api-ref/source/identity/v3/samples/OS-OAUTH1/access-token-show-response.json @@ -0,0 +1,13 @@ +{ + "access_token": { + "consumer_id": "7fea2d", + "id": "6be26a", + "expires_at": "2013-09-11T06:07:51.501805Z", + "links": { + "roles": "http://identity:35357/v3/users/ce9e07/OS-OAUTH1/access_tokens/6be26a/roles", + "self": "http://identity:35357/v3/users/ce9e07/OS-OAUTH1/access_tokens/6be26a" + }, + "project_id": "b9fca3", + "authorizing_user_id": "ce9e07" + } +} diff --git a/api-ref/source/identity/v3/samples/OS-OAUTH1/access-tokens-list-response.json b/api-ref/source/identity/v3/samples/OS-OAUTH1/access-tokens-list-response.json new file mode 100644 index 000000000..b7524a098 --- /dev/null +++ b/api-ref/source/identity/v3/samples/OS-OAUTH1/access-tokens-list-response.json @@ -0,0 +1,20 @@ +{ + "access_tokens": [ + { + "consumer_id": "7fea2d", + "id": "6be26a", + "expires_at": "2013-09-11T06:07:51.501805Z", + "links": { + "roles": "http://identity:35357/v3/users/ce9e07/OS-OAUTH1/access_tokens/6be26a/roles", + "self": "http://identity:35357/v3/users/ce9e07/OS-OAUTH1/access_tokens/6be26a" + }, + "project_id": "b9fca3", + "authorizing_user_id": "ce9e07" + } + ], + "links": { + "next": null, + "previous": null, + "self": "http://identity:35357/v3/users/ce9e07/OS-OAUTH1/access_tokens" + } +} diff --git a/api-ref/source/identity/v3/samples/OS-OAUTH1/authorize-update-response.json b/api-ref/source/identity/v3/samples/OS-OAUTH1/authorize-update-response.json new file mode 100644 index 000000000..eca11fd65 --- /dev/null +++ b/api-ref/source/identity/v3/samples/OS-OAUTH1/authorize-update-response.json @@ -0,0 +1,5 @@ +{ + "token": { + "oauth_verifier": "8171" + } +} diff --git a/api-ref/source/identity/v3/samples/OS-OAUTH1/consumer-show-response.json b/api-ref/source/identity/v3/samples/OS-OAUTH1/consumer-show-response.json new file mode 100644 index 000000000..c006d0ead --- /dev/null +++ b/api-ref/source/identity/v3/samples/OS-OAUTH1/consumer-show-response.json @@ -0,0 +1,9 @@ +{ + "consumer": { + "id": "7fea2d", + "description": "My consumer", + "links": { + "self": "http://identity:35357/v3/OS-OAUTH1/consumers/7fea2d" + } + } +} diff --git a/api-ref/source/identity/v3/samples/OS-OAUTH1/consumer-update-request.json b/api-ref/source/identity/v3/samples/OS-OAUTH1/consumer-update-request.json new file mode 100644 index 000000000..f3a8c34bf --- /dev/null +++ b/api-ref/source/identity/v3/samples/OS-OAUTH1/consumer-update-request.json @@ -0,0 +1,5 @@ +{ + "consumer": { + "description": "My new consumer" + } +} diff --git a/api-ref/source/identity/v3/samples/OS-OAUTH1/consumer-update-response.json b/api-ref/source/identity/v3/samples/OS-OAUTH1/consumer-update-response.json new file mode 100644 index 000000000..5f9b14d2d --- /dev/null +++ b/api-ref/source/identity/v3/samples/OS-OAUTH1/consumer-update-response.json @@ -0,0 +1,9 @@ +{ + "consumer": { + "description": "My new consumer", + "id": "7fea2d", + "links": { + "self": "http://identity:35357/v3/OS-OAUTH1/consumers/7fea2d" + } + } +} diff --git a/api-ref/source/identity/v3/samples/OS-OAUTH1/consumers-create-request.json b/api-ref/source/identity/v3/samples/OS-OAUTH1/consumers-create-request.json new file mode 100644 index 000000000..88cd0b7ed --- /dev/null +++ b/api-ref/source/identity/v3/samples/OS-OAUTH1/consumers-create-request.json @@ -0,0 +1,5 @@ +{ + "consumer": { + "description": "My consumer" + } +} diff --git a/api-ref/source/identity/v3/samples/OS-OAUTH1/consumers-create-response.json b/api-ref/source/identity/v3/samples/OS-OAUTH1/consumers-create-response.json new file mode 100644 index 000000000..c81bfd648 --- /dev/null +++ b/api-ref/source/identity/v3/samples/OS-OAUTH1/consumers-create-response.json @@ -0,0 +1,10 @@ +{ + "consumer": { + "secret": "secretsecret", + "description": "My consumer", + "id": "7fea2d", + "links": { + "self": "http://identity:35357/v3/OS-OAUTH1/consumers/7fea2d" + } + } +} diff --git a/api-ref/source/identity/v3/samples/OS-OAUTH1/consumers-list-response.json b/api-ref/source/identity/v3/samples/OS-OAUTH1/consumers-list-response.json new file mode 100644 index 000000000..a37e8cf49 --- /dev/null +++ b/api-ref/source/identity/v3/samples/OS-OAUTH1/consumers-list-response.json @@ -0,0 +1,22 @@ +{ + "consumers": [ + { + "id": "0c2a74", + "links": { + "self": "http://identity:35357/v3/OS-OAUTH1/consumers/0c2a74" + } + }, + { + "description": "My consumer", + "id": "7fea2d", + "links": { + "self": "http://identity:35357/v3/OS-OAUTH1/consumers/7fea2d" + } + } + ], + "links": { + "next": null, + "previous": null, + "self": "http://identity:35357/v3/OS-OAUTH1/consumers" + } +} diff --git a/api-ref/source/identity/v3/samples/OS-OAUTH1/request-token-create-response.txt b/api-ref/source/identity/v3/samples/OS-OAUTH1/request-token-create-response.txt new file mode 100644 index 000000000..03928d0aa --- /dev/null +++ b/api-ref/source/identity/v3/samples/OS-OAUTH1/request-token-create-response.txt @@ -0,0 +1 @@ +oauth_token=29971f&oauth_token_secret=238eb8&oauth_expires_at=2013-09-11T06:07:51.501805Z \ No newline at end of file diff --git a/api-ref/source/identity/v3/samples/OS-TRUST/trust-create-request.json b/api-ref/source/identity/v3/samples/OS-TRUST/trust-create-request.json new file mode 100644 index 000000000..08b18d313 --- /dev/null +++ b/api-ref/source/identity/v3/samples/OS-TRUST/trust-create-request.json @@ -0,0 +1,14 @@ +{ + "trust": { + "expires_at": "2014-12-30T23:59:59.999999Z", + "impersonation": false, + "project_id": "'$PROJECT_ID'", + "roles": [ + { + "name": "admin" + } + ], + "trustee_user_id": "'$DEMO_USER_ID'", + "trustor_user_id": "'$ADMIN_USER_ID'" + } +} diff --git a/api-ref/source/identity/v3/samples/OS-TRUST/trust-create-response.json b/api-ref/source/identity/v3/samples/OS-TRUST/trust-create-response.json new file mode 100644 index 000000000..0bb354599 --- /dev/null +++ b/api-ref/source/identity/v3/samples/OS-TRUST/trust-create-response.json @@ -0,0 +1,28 @@ +{ + "trust": { + "expires_at": "2014-12-30T23:59:59.999999Z", + "id": "394998fa61f14736b1f0c1f322882949", + "impersonation": false, + "links": { + "self": "http://localhost:5000/v3/OS-TRUST/trusts/394998fa61f14736b1f0c1f322882949" + }, + "project_id": "3d4c2c82bd5948f0bcab0cf3a7c9b48c", + "remaining_uses": null, + "roles": [ + { + "id": "c703057be878458588961ce9a0ce686b", + "links": { + "self": "http://localhost:5000/v3/roles/c703057be878458588961ce9a0ce686b" + }, + "name": "admin" + } + ], + "roles_links": { + "next": null, + "previous": null, + "self": "http: //localhost:5000/v3/OS-TRUST/trusts/394998fa61f14736b1f0c1f322882949/roles" + }, + "trustee_user_id": "269348fdd9374b8885da1418e0730af1", + "trustor_user_id": "3ec3164f750146be97f21559ee4d9c51" + } +} diff --git a/api-ref/source/identity/v3/samples/admin/auth-password-explicit-unscoped-request.json b/api-ref/source/identity/v3/samples/admin/auth-password-explicit-unscoped-request.json new file mode 100644 index 000000000..17c778a24 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/auth-password-explicit-unscoped-request.json @@ -0,0 +1,16 @@ +{ + "auth": { + "identity": { + "methods": [ + "password" + ], + "password": { + "user": { + "id": "ee4dfb6e5540447cb3741905149d9b6e", + "password": "devstacker" + } + } + }, + "scope": "unscoped" + } +} diff --git a/api-ref/source/identity/v3/samples/admin/auth-password-explicit-unscoped-response.json b/api-ref/source/identity/v3/samples/admin/auth-password-explicit-unscoped-response.json new file mode 100644 index 000000000..b50d0f4af --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/auth-password-explicit-unscoped-response.json @@ -0,0 +1,21 @@ +{ + "token": { + "methods": [ + "password" + ], + "expires_at": "2015-11-09T01:42:57.527363Z", + "extras": {}, + "user": { + "domain": { + "id": "default", + "name": "Default" + }, + "id": "ee4dfb6e5540447cb3741905149d9b6e", + "name": "admin" + }, + "audit_ids": [ + "lC2Wj1jbQe-dLjLyOx4qPQ" + ], + "issued_at": "2015-11-09T00:42:57.527404Z" + } +} diff --git a/api-ref/source/identity/v3/samples/admin/auth-password-project-scoped-request.json b/api-ref/source/identity/v3/samples/admin/auth-password-project-scoped-request.json new file mode 100644 index 000000000..3e75c9790 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/auth-password-project-scoped-request.json @@ -0,0 +1,20 @@ +{ + "auth": { + "identity": { + "methods": [ + "password" + ], + "password": { + "user": { + "id": "ee4dfb6e5540447cb3741905149d9b6e", + "password": "devstacker" + } + } + }, + "scope": { + "project": { + "id": "a6944d763bf64ee6a275f1263fae0352" + } + } + } +} diff --git a/api-ref/source/identity/v3/samples/admin/auth-password-project-scoped-response.json b/api-ref/source/identity/v3/samples/admin/auth-password-project-scoped-response.json new file mode 100644 index 000000000..a83d4166e --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/auth-password-project-scoped-response.json @@ -0,0 +1,401 @@ +{ + "token": { + "methods": [ + "password" + ], + "roles": [ + { + "id": "51cc68287d524c759f47c811e6463340", + "name": "admin" + } + ], + "expires_at": "2015-11-07T02:58:43.578887Z", + "project": { + "domain": { + "id": "default", + "name": "Default" + }, + "id": "a6944d763bf64ee6a275f1263fae0352", + "name": "admin" + }, + "catalog": [ + { + "endpoints": [ + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:5000/v2.0", + "region": "RegionOne", + "interface": "public", + "id": "068d1b359ee84b438266cb736d81de97" + }, + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:35357/v2.0", + "region": "RegionOne", + "interface": "admin", + "id": "8bfc846841ab441ca38471be6d164ced" + }, + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:5000/v2.0", + "region": "RegionOne", + "interface": "internal", + "id": "beb6d358c3654b4bada04d4663b640b9" + } + ], + "type": "identity", + "id": "050726f278654128aba89757ae25950c", + "name": "keystone" + }, + { + "endpoints": [ + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:8774/v2/a6944d763bf64ee6a275f1263fae0352", + "region": "RegionOne", + "interface": "admin", + "id": "ae36c0dbb0634e1dbf711f9fc2359975" + }, + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:8774/v2/a6944d763bf64ee6a275f1263fae0352", + "region": "RegionOne", + "interface": "internal", + "id": "d286b51530144d90a4de52d214d3ad1e" + }, + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:8774/v2/a6944d763bf64ee6a275f1263fae0352", + "region": "RegionOne", + "interface": "public", + "id": "d6e681dd4aab4ae5a0937ed60bb4ae33" + } + ], + "type": "compute_legacy", + "id": "1c4bfbabe3b346b1bbe27a4b3258964f", + "name": "nova_legacy" + }, + { + "endpoints": [ + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:8776/v2/a6944d763bf64ee6a275f1263fae0352", + "region": "RegionOne", + "interface": "internal", + "id": "2dce7429526e44808235fe918063a914" + }, + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:8776/v2/a6944d763bf64ee6a275f1263fae0352", + "region": "RegionOne", + "interface": "public", + "id": "a9a9929e6dc645c882ac1abd8bf73d38" + }, + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:8776/v2/a6944d763bf64ee6a275f1263fae0352", + "region": "RegionOne", + "interface": "admin", + "id": "c7d5f958df7f4c8da84db91094bdc198" + } + ], + "type": "volumev2", + "id": "202382a1b8a94210bb3120af958092c4", + "name": "cinderv2" + }, + { + "endpoints": [ + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:8080", + "region": "RegionOne", + "interface": "admin", + "id": "29b58f1406804c8180ccc01793ff8038" + }, + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:8080/v1/AUTH_a6944d763bf64ee6a275f1263fae0352", + "region": "RegionOne", + "interface": "public", + "id": "4c2c2968008c4e77973a5922e192d982" + }, + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:8080/v1/AUTH_a6944d763bf64ee6a275f1263fae0352", + "region": "RegionOne", + "interface": "internal", + "id": "f6e7b28008bf41eaa114176a15ac1410" + } + ], + "type": "object-store", + "id": "52fecdef9ad543779c1312392cc2b115", + "name": "swift" + }, + { + "endpoints": [ + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:9696/", + "region": "RegionOne", + "interface": "public", + "id": "6a2840dc63bf433592cd8bca2183eb3c" + }, + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:9696/", + "region": "RegionOne", + "interface": "internal", + "id": "7967cf45f8ab439a80cf24420e5ffd0e" + }, + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:9696/", + "region": "RegionOne", + "interface": "admin", + "id": "84943ce595264303bd44e5d6d79bea7b" + } + ], + "type": "network", + "id": "67b993549db94296a853d635b48db3c9", + "name": "neutron" + }, + { + "endpoints": [ + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:8888", + "region": "RegionOne", + "interface": "public", + "id": "2896609ef89741148bbd8c93babf5a12" + }, + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:8888", + "region": "RegionOne", + "interface": "internal", + "id": "30de385478fe4325849f98d1e45bc5e6" + }, + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:8888", + "region": "RegionOne", + "interface": "admin", + "id": "41256dc4b3c942daa383f940a9a56536" + } + ], + "type": "messaging", + "id": "6fc9cc3e6b3843b899478554f9e297d3", + "name": "zaqar" + }, + { + "endpoints": [ + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:9000", + "region": "RegionOne", + "interface": "admin", + "id": "07ea5fe3ae784001a73f131fb1764bf4" + }, + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:9000", + "region": "RegionOne", + "interface": "internal", + "id": "31e709ecb15d4881806dbced4eb3e60e" + }, + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:9000", + "region": "RegionOne", + "interface": "public", + "id": "a0c2a150a6ae4bbc85f1d428b9d78a1b" + } + ], + "type": "messaging-websocket", + "id": "816031f798cc4ac7879eda0cf9cf033a", + "name": "zaqar-websocket" + }, + { + "endpoints": [ + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:8773/", + "region": "RegionOne", + "interface": "internal", + "id": "24df0277c2b6499ea6051bea8c59ff74" + }, + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:8773/", + "region": "RegionOne", + "interface": "public", + "id": "438f4b3f3c314bbf988f1442cc3ddfa5" + }, + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:8773/", + "region": "RegionOne", + "interface": "admin", + "id": "90a1c9fab54c452fa02a59ff87165029" + } + ], + "type": "ec2", + "id": "915e2a8b1f314d55bba28432c9d5c1de", + "name": "ec2" + }, + { + "endpoints": [ + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:8774/v2.1/a6944d763bf64ee6a275f1263fae0352", + "region": "RegionOne", + "interface": "admin", + "id": "2511589f262a407bb0071a814a480af4" + }, + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:8774/v2.1/a6944d763bf64ee6a275f1263fae0352", + "region": "RegionOne", + "interface": "internal", + "id": "9cf9209ae4fc4673a7295611001cf0ae" + }, + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:8774/v2.1/a6944d763bf64ee6a275f1263fae0352", + "region": "RegionOne", + "interface": "public", + "id": "d200b2509e1343e3887dcc465b4fa534" + } + ], + "type": "compute", + "id": "a226b3eeb5594f50bf8b6df94636ed28", + "name": "nova" + }, + { + "endpoints": [ + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:8004/v1/a6944d763bf64ee6a275f1263fae0352", + "region": "RegionOne", + "interface": "internal", + "id": "bf2fe80c2a614e438d3e55b00e85b9ff" + }, + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:8004/v1/a6944d763bf64ee6a275f1263fae0352", + "region": "RegionOne", + "interface": "admin", + "id": "bfc9615fc24e4045aaf719f060984bf1" + }, + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:8004/v1/a6944d763bf64ee6a275f1263fae0352", + "region": "RegionOne", + "interface": "public", + "id": "c76cf9930b0f4ccea6b1157f80119cfc" + } + ], + "type": "orchestration", + "id": "a5f7070bda40443fa3819fbdf1689af1", + "name": "heat" + }, + { + "endpoints": [ + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:8776/v1/a6944d763bf64ee6a275f1263fae0352", + "region": "RegionOne", + "interface": "internal", + "id": "3e321c2c6fa04152b3e86c18b91b93ae" + }, + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:8776/v1/a6944d763bf64ee6a275f1263fae0352", + "region": "RegionOne", + "interface": "admin", + "id": "55aef0f2557449d4946dc9461b73a63b" + }, + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:8776/v1/a6944d763bf64ee6a275f1263fae0352", + "region": "RegionOne", + "interface": "public", + "id": "7c91a66a200e458ca6e4e00fddf4d98b" + } + ], + "type": "volume", + "id": "b6b5edc3fc384b6787149e91b3b31988", + "name": "cinder" + }, + { + "endpoints": [ + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:9292", + "region": "RegionOne", + "interface": "public", + "id": "512c10d230874ad295662157eeab0135" + }, + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:9292", + "region": "RegionOne", + "interface": "internal", + "id": "614b1ab241da47a8b3a4e8f67b771446" + }, + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:9292", + "region": "RegionOne", + "interface": "admin", + "id": "9cef78a4286c42f3b977fbe4d5f927a6" + } + ], + "type": "image", + "id": "d512f8860c0f45cf99b1c3cef86cfd97", + "name": "glance" + }, + { + "endpoints": [ + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:8000/v1", + "region": "RegionOne", + "interface": "internal", + "id": "7f776d5a83d346b48e519555362b1da6" + }, + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:8000/v1", + "region": "RegionOne", + "interface": "public", + "id": "8303a7225a2d439fa39905c6a20202c3" + }, + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:8000/v1", + "region": "RegionOne", + "interface": "admin", + "id": "942fa998d1c644e0b0c085d5a0995a13" + } + ], + "type": "cloudformation", + "id": "ed0805af6ee54a19ad7e5add8465ac41", + "name": "heat-cfn" + } + ], + "extras": {}, + "user": { + "domain": { + "id": "default", + "name": "Default" + }, + "id": "ee4dfb6e5540447cb3741905149d9b6e", + "name": "admin" + }, + "audit_ids": [ + "3T2dc1CGQxyJsHdDu1xkcw" + ], + "issued_at": "2015-11-07T01:58:43.578929Z" + } +} diff --git a/api-ref/source/identity/v3/samples/admin/auth-password-unscoped-request-with-domain.json b/api-ref/source/identity/v3/samples/admin/auth-password-unscoped-request-with-domain.json new file mode 100644 index 000000000..47044d4f3 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/auth-password-unscoped-request-with-domain.json @@ -0,0 +1,18 @@ +{ + "auth": { + "identity": { + "methods": [ + "password" + ], + "password": { + "user": { + "name": "admin", + "domain": { + "id": "default" + }, + "password": "devstacker" + } + } + } + } +} diff --git a/api-ref/source/identity/v3/samples/admin/auth-password-unscoped-request.json b/api-ref/source/identity/v3/samples/admin/auth-password-unscoped-request.json new file mode 100644 index 000000000..e64944f4b --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/auth-password-unscoped-request.json @@ -0,0 +1,15 @@ +{ + "auth": { + "identity": { + "methods": [ + "password" + ], + "password": { + "user": { + "id": "423f19a4ac1e4f48bbb4180756e6eb6c", + "password": "devstacker" + } + } + } + } +} diff --git a/api-ref/source/identity/v3/samples/admin/auth-password-unscoped-response.json b/api-ref/source/identity/v3/samples/admin/auth-password-unscoped-response.json new file mode 100644 index 000000000..c012a3ee9 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/auth-password-unscoped-response.json @@ -0,0 +1,21 @@ +{ + "token": { + "methods": [ + "password" + ], + "expires_at": "2015-11-06T15:32:17.893769Z", + "extras": {}, + "user": { + "domain": { + "id": "default", + "name": "Default" + }, + "id": "423f19a4ac1e4f48bbb4180756e6eb6c", + "name": "admin" + }, + "audit_ids": [ + "ZzZwkUflQfygX7pdYDBCQQ" + ], + "issued_at": "2015-11-06T14:32:17.893797Z" + } +} diff --git a/api-ref/source/identity/v3/samples/admin/auth-password-user-name-unscoped-request.json b/api-ref/source/identity/v3/samples/admin/auth-password-user-name-unscoped-request.json new file mode 100644 index 000000000..47044d4f3 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/auth-password-user-name-unscoped-request.json @@ -0,0 +1,18 @@ +{ + "auth": { + "identity": { + "methods": [ + "password" + ], + "password": { + "user": { + "name": "admin", + "domain": { + "id": "default" + }, + "password": "devstacker" + } + } + } + } +} diff --git a/api-ref/source/identity/v3/samples/admin/auth-password-user-name-unscoped-response-HTTP.txt b/api-ref/source/identity/v3/samples/admin/auth-password-user-name-unscoped-response-HTTP.txt new file mode 100644 index 000000000..b6031e303 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/auth-password-user-name-unscoped-response-HTTP.txt @@ -0,0 +1,8 @@ +HTTP/1.1 201 Created +Date: Fri, 06 Nov 2015 14:29:56 GMT +Server: Apache/2.4.7 (Ubuntu) +X-Subject-Token: ffe47524401e4d61adc7310f7e5b6191 +Vary: X-Auth-Token +x-openstack-request-id: req-f2f3f6ca-e342-4cd8-bc12-71a5436ef5fc +Content-Length: 297 +Content-Type: application/json diff --git a/api-ref/source/identity/v3/samples/admin/auth-token-scoped-request.json b/api-ref/source/identity/v3/samples/admin/auth-token-scoped-request.json new file mode 100644 index 000000000..045b9489e --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/auth-token-scoped-request.json @@ -0,0 +1,17 @@ +{ + "auth": { + "identity": { + "methods": [ + "token" + ], + "token": { + "id": "'$OS_TOKEN'" + } + }, + "scope": { + "project": { + "id": "5b50efd009b540559104ee3c03bbb2b7" + } + } + } +} diff --git a/api-ref/source/identity/v3/samples/admin/auth-token-scoped-response.json b/api-ref/source/identity/v3/samples/admin/auth-token-scoped-response.json new file mode 100644 index 000000000..2692684a8 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/auth-token-scoped-response.json @@ -0,0 +1,401 @@ +{ + "token": { + "methods": [ + "token" + ], + "roles": [ + { + "id": "5090055d6bd547dc83e0e8f070803708", + "name": "admin" + } + ], + "expires_at": "2015-11-05T22:00:11.000000Z", + "project": { + "domain": { + "id": "default", + "name": "Default" + }, + "id": "5b50efd009b540559104ee3c03bbb2b7", + "name": "admin" + }, + "catalog": [ + { + "endpoints": [ + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:9292", + "region": "RegionOne", + "interface": "admin", + "id": "b2605da9b25943beb49b2bd86aca2202" + }, + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:9292", + "region": "RegionOne", + "interface": "public", + "id": "c4d1184caf8c4351bff4bf502a09684e" + }, + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:9292", + "region": "RegionOne", + "interface": "internal", + "id": "cd73bda89e3948738c2721a8c3acac54" + } + ], + "type": "image", + "id": "495df2483dc145dbb6b34bfbdd787aae", + "name": "glance" + }, + { + "endpoints": [ + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:8773/", + "region": "RegionOne", + "interface": "internal", + "id": "7d03218a7f4246e8b9e3992318bf5397" + }, + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:8773/", + "region": "RegionOne", + "interface": "public", + "id": "9ad7f8ce438c4212b8aac930bca04c86" + }, + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:8773/", + "region": "RegionOne", + "interface": "admin", + "id": "d84aad1a45c44e4da09b719167383049" + } + ], + "type": "ec2", + "id": "54204024bb7d4665a8efc34fc758f1f7", + "name": "ec2" + }, + { + "endpoints": [ + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:9000", + "region": "RegionOne", + "interface": "admin", + "id": "1077687c18514490a3ec980eadd1bd13" + }, + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:9000", + "region": "RegionOne", + "interface": "public", + "id": "1e86d8bef1514c3fba8d157a22ccce88" + }, + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:9000", + "region": "RegionOne", + "interface": "internal", + "id": "f6a6b7bbba66443ead3a0e31a008c271" + } + ], + "type": "messaging-websocket", + "id": "6b8655af7d044a15bec3cdca4f2919f8", + "name": "zaqar-websocket" + }, + { + "endpoints": [ + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:8004/v1/5b50efd009b540559104ee3c03bbb2b7", + "region": "RegionOne", + "interface": "admin", + "id": "083663fd231e40ad97384ad3efb9f1b7" + }, + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:8004/v1/5b50efd009b540559104ee3c03bbb2b7", + "region": "RegionOne", + "interface": "internal", + "id": "0f4b7054ea27450eac43f685a4fc1d2c" + }, + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:8004/v1/5b50efd009b540559104ee3c03bbb2b7", + "region": "RegionOne", + "interface": "public", + "id": "5f3ea39df2e44378b1802a1a87ef9ac4" + } + ], + "type": "orchestration", + "id": "6d6346ff2ca842e5968373fbb93e231f", + "name": "heat" + }, + { + "endpoints": [ + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:8774/v2.1/5b50efd009b540559104ee3c03bbb2b7", + "region": "RegionOne", + "interface": "public", + "id": "bc2230a70d6a444e9fba75b85fbda41b" + }, + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:8774/v2.1/5b50efd009b540559104ee3c03bbb2b7", + "region": "RegionOne", + "interface": "internal", + "id": "d8102dc2b9984d04b30b91b0a6037470" + }, + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:8774/v2.1/5b50efd009b540559104ee3c03bbb2b7", + "region": "RegionOne", + "interface": "admin", + "id": "f8253a53edd749bf8b107a53a5d47a82" + } + ], + "type": "compute", + "id": "75df965385cc4120a17110c1fde00182", + "name": "nova" + }, + { + "endpoints": [ + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:35357/v2.0", + "region": "RegionOne", + "interface": "admin", + "id": "0ceeb58592274caea5bc942a07d5473f" + }, + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:5000/v2.0", + "region": "RegionOne", + "interface": "internal", + "id": "8126f2c7021d413e9c98ec3a0ba0fd58" + }, + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:5000/v2.0", + "region": "RegionOne", + "interface": "public", + "id": "c693879254544e3fb502e795a3f6acc8" + } + ], + "type": "identity", + "id": "78aad571d38049e69c866c2abac76af6", + "name": "keystone" + }, + { + "endpoints": [ + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:8776/v1/5b50efd009b540559104ee3c03bbb2b7", + "region": "RegionOne", + "interface": "admin", + "id": "3654138dc64a45aeb5a8153f2a089c74" + }, + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:8776/v1/5b50efd009b540559104ee3c03bbb2b7", + "region": "RegionOne", + "interface": "internal", + "id": "7a0d12d0b7314afd9b53d1618ab546ea" + }, + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:8776/v1/5b50efd009b540559104ee3c03bbb2b7", + "region": "RegionOne", + "interface": "public", + "id": "82b68ff3aedb43e2acc8307234d3fd0b" + } + ], + "type": "volume", + "id": "80491007c0ab462daaa9087250325f59", + "name": "cinder" + }, + { + "endpoints": [ + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:8000/v1", + "region": "RegionOne", + "interface": "internal", + "id": "24dfa252fba64469b8b1a832f04bded9" + }, + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:8000/v1", + "region": "RegionOne", + "interface": "public", + "id": "e0a01d6cd3be4f6abcc72367b2d87993" + }, + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:8000/v1", + "region": "RegionOne", + "interface": "admin", + "id": "f33f79d42df247e1bf6daf43a548b014" + } + ], + "type": "cloudformation", + "id": "ac5cc6e3c62840818ab338c981d5603f", + "name": "heat-cfn" + }, + { + "endpoints": [ + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:9696/", + "region": "RegionOne", + "interface": "admin", + "id": "3e78c357b3c8469fbea12eb681f88a0c" + }, + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:9696/", + "region": "RegionOne", + "interface": "public", + "id": "89d2aad3dc8e478fbabb21dd7db0962a" + }, + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:9696/", + "region": "RegionOne", + "interface": "internal", + "id": "b6d4a8cf5e4042848a749a3116497e55" + } + ], + "type": "network", + "id": "b33660edd1eb45e485f7e5f14401a739", + "name": "neutron" + }, + { + "endpoints": [ + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:8888", + "region": "RegionOne", + "interface": "public", + "id": "1f8287cf963948778ab0eb109d9f857d" + }, + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:8888", + "region": "RegionOne", + "interface": "internal", + "id": "3adf5f9cc5184d92af5ff0fdef043e4a" + }, + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:8888", + "region": "RegionOne", + "interface": "admin", + "id": "f747223060b3414f947fdcdca2ce8714" + } + ], + "type": "messaging", + "id": "cf3e38e9aed54e2d84ea64485317d7a0", + "name": "zaqar" + }, + { + "endpoints": [ + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:8774/v2/5b50efd009b540559104ee3c03bbb2b7", + "region": "RegionOne", + "interface": "public", + "id": "08f507ccb552476b98f3af7718f25557" + }, + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:8774/v2/5b50efd009b540559104ee3c03bbb2b7", + "region": "RegionOne", + "interface": "admin", + "id": "d20091ba591347b2b419e5fbde9b7976" + }, + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:8774/v2/5b50efd009b540559104ee3c03bbb2b7", + "region": "RegionOne", + "interface": "internal", + "id": "e6b667776e7245dea6e39f2820e080b0" + } + ], + "type": "compute_legacy", + "id": "d442e96b273a48018567aeec5800c3e0", + "name": "nova_legacy" + }, + { + "endpoints": [ + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:8776/v2/5b50efd009b540559104ee3c03bbb2b7", + "region": "RegionOne", + "interface": "internal", + "id": "012c78a6694a494995c58d5955fb7822" + }, + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:8776/v2/5b50efd009b540559104ee3c03bbb2b7", + "region": "RegionOne", + "interface": "admin", + "id": "802d5de210874f068ba31c7e27c29d70" + }, + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:8776/v2/5b50efd009b540559104ee3c03bbb2b7", + "region": "RegionOne", + "interface": "public", + "id": "b37ada66e02e44c9a9a7976d77365503" + } + ], + "type": "volumev2", + "id": "d93e78c7967f49acbdd732b9dd97e0d0", + "name": "cinderv2" + }, + { + "endpoints": [ + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:8080/v1/AUTH_5b50efd009b540559104ee3c03bbb2b7", + "region": "RegionOne", + "interface": "public", + "id": "265ce88a0e1642fc90b2ec20ccb279ff" + }, + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:8080", + "region": "RegionOne", + "interface": "admin", + "id": "500b7f066d39492faff8a3f710fb5a2f" + }, + { + "region_id": "RegionOne", + "url": "http://23.253.248.171:8080/v1/AUTH_5b50efd009b540559104ee3c03bbb2b7", + "region": "RegionOne", + "interface": "internal", + "id": "a33b0684f817405280df1f5600777a75" + } + ], + "type": "object-store", + "id": "da1b1b5c529946fcb3ee3abdcf376fcb", + "name": "swift" + } + ], + "extras": {}, + "user": { + "domain": { + "id": "default", + "name": "Default" + }, + "id": "10a2e6e717a245d9acad3e5f97aeca3d", + "name": "admin" + }, + "audit_ids": [ + "wLc7nDMsQiKqf8VFU4ySpg" + ], + "issued_at": "2015-11-05T21:32:30.505384Z" + } +} diff --git a/api-ref/source/identity/v3/samples/admin/auth-token-unscoped-request.json b/api-ref/source/identity/v3/samples/admin/auth-token-unscoped-request.json new file mode 100644 index 000000000..93b293f35 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/auth-token-unscoped-request.json @@ -0,0 +1,12 @@ +{ + "auth": { + "identity": { + "methods": [ + "token" + ], + "token": { + "id": "'$OS_TOKEN'" + } + } + } +} diff --git a/api-ref/source/identity/v3/samples/admin/auth-token-unscoped-response.json b/api-ref/source/identity/v3/samples/admin/auth-token-unscoped-response.json new file mode 100644 index 000000000..3224a0e53 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/auth-token-unscoped-response.json @@ -0,0 +1,21 @@ +{ + "token": { + "methods": [ + "token" + ], + "expires_at": "2015-11-05T22:00:11.000000Z", + "extras": {}, + "user": { + "domain": { + "id": "default", + "name": "Default" + }, + "id": "10a2e6e717a245d9acad3e5f97aeca3d", + "name": "admin" + }, + "audit_ids": [ + "mAjXQhiYRyKwkB4qygdLVg" + ], + "issued_at": "2015-11-05T21:00:33.819948Z" + } +} diff --git a/api-ref/source/identity/v3/samples/admin/credential-create-request.json b/api-ref/source/identity/v3/samples/admin/credential-create-request.json new file mode 100644 index 000000000..50c9e77f2 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/credential-create-request.json @@ -0,0 +1,8 @@ +{ + "credential": { + "blob": "{\"access\":\"181920\",\"secret\":\"secretKey\"}", + "project_id": "731fc6f265cd486d900f16e84c5cb594", + "type": "ec2", + "user_id": "bb5476fd12884539b41d5a88f838d773" + } +} diff --git a/api-ref/source/identity/v3/samples/admin/credential-create-response.json b/api-ref/source/identity/v3/samples/admin/credential-create-response.json new file mode 100644 index 000000000..c46c2f994 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/credential-create-response.json @@ -0,0 +1,12 @@ +{ + "credential": { + "user_id": "bb5476fd12884539b41d5a88f838d773", + "links": { + "self": "http://localhost:5000/v3/credentials/3d3367228f9c7665266604462ec60029bcd83ad89614021a80b2eb879c572510" + }, + "blob": "{\"access\":\"181920\",\"secret\":\"secretKey\"}", + "project_id": "731fc6f265cd486d900f16e84c5cb594", + "type": "ec2", + "id": "3d3367228f9c7665266604462ec60029bcd83ad89614021a80b2eb879c572510" + } +} diff --git a/api-ref/source/identity/v3/samples/admin/credential-show-response.json b/api-ref/source/identity/v3/samples/admin/credential-show-response.json new file mode 100644 index 000000000..4d5385ac5 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/credential-show-response.json @@ -0,0 +1,12 @@ +{ + "credential": { + "user_id": "bb5476fd12884539b41d5a88f838d773", + "links": { + "self": "http://localhost:5000/v3/credentials/207e9b76935efc03804d3dd6ab52d22e9b22a0711e4ada4ff8b76165a07311d7" + }, + "blob": "{\"access\": \"a42a27755ce6442596b049bd7dd8a563\", \"secret\": \"71faf1d40bb24c82b479b1c6fbbd9f0c\", \"trust_id\": null}", + "project_id": "6e01855f345f4c59812999b5e459137d", + "type": "ec2", + "id": "207e9b76935efc03804d3dd6ab52d22e9b22a0711e4ada4ff8b76165a07311d7" + } +} diff --git a/api-ref/source/identity/v3/samples/admin/credential-update-request.json b/api-ref/source/identity/v3/samples/admin/credential-update-request.json new file mode 100644 index 000000000..2da3a1c3d --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/credential-update-request.json @@ -0,0 +1,8 @@ +{ + "credential": { + "blob": "{\"access\":\"181920\",\"secrete\":\"secretKey\"}", + "project_id": "731fc6f265cd486d900f16e84c5cb594", + "type": "ec2", + "user_id": "bb5476fd12884539b41d5a88f838d773" + } +} diff --git a/api-ref/source/identity/v3/samples/admin/credential-update-response.json b/api-ref/source/identity/v3/samples/admin/credential-update-response.json new file mode 100644 index 000000000..5a65b5b19 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/credential-update-response.json @@ -0,0 +1,12 @@ +{ + "credential": { + "user_id": "bb5476fd12884539b41d5a88f838d773", + "links": { + "self": "http://localhost:5000/v3/credentials/207e9b76935efc03804d3dd6ab52d22e9b22a0711e4ada4ff8b76165a07311d7" + }, + "blob": "{\"access\":\"181920\",\"secrete\":\"secretKey\"}", + "project_id": "731fc6f265cd486d900f16e84c5cb594", + "type": "ec2", + "id": "207e9b76935efc03804d3dd6ab52d22e9b22a0711e4ada4ff8b76165a07311d7" + } +} diff --git a/api-ref/source/identity/v3/samples/admin/credentials-list-response.json b/api-ref/source/identity/v3/samples/admin/credentials-list-response.json new file mode 100644 index 000000000..c6b8a1901 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/credentials-list-response.json @@ -0,0 +1,109 @@ +{ + "credentials": [ + { + "user_id": "bb5476fd12884539b41d5a88f838d773", + "links": { + "self": "http://localhost:5000/v3/credentials/207e9b76935efc03804d3dd6ab52d22e9b22a0711e4ada4ff8b76165a07311d7" + }, + "blob": "{\"access\": \"a42a27755ce6442596b049bd7dd8a563\", \"secret\": \"71faf1d40bb24c82b479b1c6fbbd9f0c\", \"trust_id\": null}", + "project_id": "6e01855f345f4c59812999b5e459137d", + "type": "ec2", + "id": "207e9b76935efc03804d3dd6ab52d22e9b22a0711e4ada4ff8b76165a07311d7" + }, + { + "user_id": "6f556708d04b4ea6bc72d7df2296b71a", + "links": { + "self": "http://localhost:5000/v3/credentials/2441494e52ab6d594a34d74586075cb299489bdd1e9389e3ab06467a4f460609" + }, + "blob": "{\"access\": \"7da79ff0aa364e1396f067e352b9b79a\", \"secret\": \"7a18d68ba8834b799d396f3ff6f1e98c\", \"trust_id\": null}", + "project_id": "1a1d14690f3c4ec5bf5f321c5fde3c16", + "type": "ec2", + "id": "2441494e52ab6d594a34d74586075cb299489bdd1e9389e3ab06467a4f460609" + }, + { + "user_id": "c14107e65d5c4a7f8894fc4b3fc209ff", + "links": { + "self": "http://localhost:5000/v3/credentials/3397b204b5f04c495bcdc8f34c8a39996f280f9172658241873e15f070ec79d7" + }, + "blob": "{\"access\": \"db9c58a558534a10a070110de4f9f20c\", \"secret\": \"973e790b88db447ba6f93bca02bc745b\", \"trust_id\": null}", + "project_id": "7396e43183db40dcbf40dd727637b548", + "type": "ec2", + "id": "3397b204b5f04c495bcdc8f34c8a39996f280f9172658241873e15f070ec79d7" + }, + { + "user_id": "915cc5f8cca6466aba6c6be06cbabfdf", + "links": { + "self": "http://localhost:5000/v3/credentials/352d5dd7a4aa19c4f2f23ee288bf65dc23a0bc293f40ffd2128ffe6a8cf3e871" + }, + "blob": "{\"access\": \"817c6c3487a440c1a0b1d3f92b30ca37\", \"secret\": \"47d681117d1c46e69a0c9ec811dae2e9\", \"trust_id\": null}", + "project_id": "2bf9767f9db949ee8364262a28a23062", + "type": "ec2", + "id": "352d5dd7a4aa19c4f2f23ee288bf65dc23a0bc293f40ffd2128ffe6a8cf3e871" + }, + { + "user_id": "bb5476fd12884539b41d5a88f838d773", + "links": { + "self": "http://localhost:5000/v3/credentials/3d3367228f9c7665266604462ec60029bcd83ad89614021a80b2eb879c572510" + }, + "blob": "{\"access\":\"181920\",\"secret\":\"secretKey\"}", + "project_id": "731fc6f265cd486d900f16e84c5cb594", + "type": "ec2", + "id": "3d3367228f9c7665266604462ec60029bcd83ad89614021a80b2eb879c572510" + }, + { + "user_id": "bb5476fd12884539b41d5a88f838d773", + "links": { + "self": "http://localhost:5000/v3/credentials/6b7d803fc03b85866904b6b79e0a8fa1f4013b584163b4477eed96717eb402c0" + }, + "blob": "{\"access\": \"f2ba45670b504a518b46e920d760fde2\", \"secret\": \"bf7fff2b3a844730b2db793411756e55\", \"trust_id\": null}", + "project_id": "731fc6f265cd486d900f16e84c5cb594", + "type": "ec2", + "id": "6b7d803fc03b85866904b6b79e0a8fa1f4013b584163b4477eed96717eb402c0" + }, + { + "user_id": "2b657f6742ac416697e6821b3b2ee785", + "links": { + "self": "http://localhost:5000/v3/credentials/7d391b869631e5c4836708ea3bb3e0a5cbe0481201b5f0ddd5685ad3b3faa564" + }, + "blob": "{\"access\": \"a1525da4e7c0438ebf3058372d637b59\", \"secret\": \"c9165d2542b141e8b2a1ff61a5f5487c\", \"trust_id\": null}", + "project_id": "2bf9767f9db949ee8364262a28a23062", + "type": "ec2", + "id": "7d391b869631e5c4836708ea3bb3e0a5cbe0481201b5f0ddd5685ad3b3faa564" + }, + { + "user_id": "bb5476fd12884539b41d5a88f838d773", + "links": { + "self": "http://localhost:5000/v3/credentials/7ef4faa904ae7b8b4ddc7bad15b05ee359dad7d7a9b82861d4ad92fdbbb2eb4e" + }, + "blob": "{\"access\": \"7d7559359b57419eb5f5f5dcd65ab57d\", \"secret\": \"570652bcf8c2483c86eb29e9734eed3c\", \"trust_id\": null}", + "project_id": "731fc6f265cd486d900f16e84c5cb594", + "type": "ec2", + "id": "7ef4faa904ae7b8b4ddc7bad15b05ee359dad7d7a9b82861d4ad92fdbbb2eb4e" + }, + { + "user_id": "aedb193e9bb8400485f8d8426f7a031f", + "links": { + "self": "http://localhost:5000/v3/credentials/9c1c428d8e0e8338a5e16489ecfff9962f2b00f984ce4c7e9015e4003f478df8" + }, + "blob": "{\"access\": \"b3a6e5f4427c47e9b202264d91a19e49\", \"secret\": \"d9eb470f503f4b46932de38db7a79402\", \"trust_id\": null}", + "project_id": "a2672ecf9dd34c6980448b25a47e0947", + "type": "ec2", + "id": "9c1c428d8e0e8338a5e16489ecfff9962f2b00f984ce4c7e9015e4003f478df8" + }, + { + "user_id": "c14107e65d5c4a7f8894fc4b3fc209ff", + "links": { + "self": "http://localhost:5000/v3/credentials/e2c35ac2becb0fca3c3c2f035692a4f46a9cbf3b6e86c8a47f5aafe837d78a05" + }, + "blob": "{\"access\": \"1ed843b1bd4a409f9562400085adbaa4\", \"secret\": \"236ab24db1f04ec995fcf618ed4fc0f5\", \"trust_id\": null}", + "project_id": "6e01855f345f4c59812999b5e459137d", + "type": "ec2", + "id": "e2c35ac2becb0fca3c3c2f035692a4f46a9cbf3b6e86c8a47f5aafe837d78a05" + } + ], + "links": { + "self": "http://localhost:5000/v3/credentials", + "previous": null, + "next": null + } +} diff --git a/api-ref/source/identity/v3/samples/admin/domain-config-group-option-show-response.json b/api-ref/source/identity/v3/samples/admin/domain-config-group-option-show-response.json new file mode 100644 index 000000000..fc4c140e5 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/domain-config-group-option-show-response.json @@ -0,0 +1,3 @@ +{ + "url": "http://myldap/root" +} diff --git a/api-ref/source/identity/v3/samples/admin/domain-config-group-option-update-request.json b/api-ref/source/identity/v3/samples/admin/domain-config-group-option-update-request.json new file mode 100644 index 000000000..3c4642dd9 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/domain-config-group-option-update-request.json @@ -0,0 +1,3 @@ +{ + "url": "http://myldap/my_other_root" +} diff --git a/api-ref/source/identity/v3/samples/admin/domain-config-group-option-update-response.json b/api-ref/source/identity/v3/samples/admin/domain-config-group-option-update-response.json new file mode 100644 index 000000000..6367de344 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/domain-config-group-option-update-response.json @@ -0,0 +1,11 @@ +{ + "config": { + "identity": { + "driver": "keystone.identity.backends.ldap.Identity" + }, + "ldap": { + "url": "http://myldap/my_other_root", + "user_tree_dn": "ou=Users,dc=my_new_root,dc=org" + } + } +} diff --git a/api-ref/source/identity/v3/samples/admin/domain-config-group-show-response.json b/api-ref/source/identity/v3/samples/admin/domain-config-group-show-response.json new file mode 100644 index 000000000..b03ba8363 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/domain-config-group-show-response.json @@ -0,0 +1,6 @@ +{ + "ldap": { + "url": "http://myldap/root", + "user_tree_dn": "ou=Users,dc=root,dc=org" + } +} diff --git a/api-ref/source/identity/v3/samples/admin/domain-config-group-update-request.json b/api-ref/source/identity/v3/samples/admin/domain-config-group-update-request.json new file mode 100644 index 000000000..b0a840976 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/domain-config-group-update-request.json @@ -0,0 +1,8 @@ +{ + "config": { + "ldap": { + "url": "http://myldap/my_new_root", + "user_tree_dn": "ou=Users,dc=my_new_root,dc=org" + } + } +} diff --git a/api-ref/source/identity/v3/samples/admin/domain-config-group-update-response.json b/api-ref/source/identity/v3/samples/admin/domain-config-group-update-response.json new file mode 100644 index 000000000..fa2259e31 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/domain-config-group-update-response.json @@ -0,0 +1,11 @@ +{ + "config": { + "identity": { + "driver": "keystone.identity.backends.ldap.Identity" + }, + "ldap": { + "url": "http://myldap/my_new_root", + "user_tree_dn": "ou=Users,dc=my_new_root,dc=org" + } + } +} diff --git a/api-ref/source/identity/v3/samples/admin/domain-config-show-response.json b/api-ref/source/identity/v3/samples/admin/domain-config-show-response.json new file mode 100644 index 000000000..60f10084e --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/domain-config-show-response.json @@ -0,0 +1,11 @@ +{ + "config": { + "identity": { + "driver": "keystone.identity.backends.ldap.Identity" + }, + "ldap": { + "url": "http://myldap/root", + "user_tree_dn": "ou=Users,dc=root,dc=org" + } + } +} diff --git a/api-ref/source/identity/v3/samples/admin/domain-config-update-request.json b/api-ref/source/identity/v3/samples/admin/domain-config-update-request.json new file mode 100644 index 000000000..b0a840976 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/domain-config-update-request.json @@ -0,0 +1,8 @@ +{ + "config": { + "ldap": { + "url": "http://myldap/my_new_root", + "user_tree_dn": "ou=Users,dc=my_new_root,dc=org" + } + } +} diff --git a/api-ref/source/identity/v3/samples/admin/domain-config-update-response.json b/api-ref/source/identity/v3/samples/admin/domain-config-update-response.json new file mode 100644 index 000000000..fa2259e31 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/domain-config-update-response.json @@ -0,0 +1,11 @@ +{ + "config": { + "identity": { + "driver": "keystone.identity.backends.ldap.Identity" + }, + "ldap": { + "url": "http://myldap/my_new_root", + "user_tree_dn": "ou=Users,dc=my_new_root,dc=org" + } + } +} diff --git a/api-ref/source/identity/v3/samples/admin/domain-create-request.json b/api-ref/source/identity/v3/samples/admin/domain-create-request.json new file mode 100644 index 000000000..d1439bf3d --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/domain-create-request.json @@ -0,0 +1,7 @@ +{ + "domain": { + "description": "Domain description", + "enabled": true, + "name": "myDomain" + } +} diff --git a/api-ref/source/identity/v3/samples/admin/domain-create-response.json b/api-ref/source/identity/v3/samples/admin/domain-create-response.json new file mode 100644 index 000000000..56eae571f --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/domain-create-response.json @@ -0,0 +1,11 @@ +{ + "domain": { + "description": "Domain description", + "enabled": true, + "id": "161718", + "links": { + "self": "http://identity:35357/v3/domains/161718" + }, + "name": "myDomain" + } +} diff --git a/api-ref/source/identity/v3/samples/admin/domain-group-roles-list-response.json b/api-ref/source/identity/v3/samples/admin/domain-group-roles-list-response.json new file mode 100644 index 000000000..161c5ddaf --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/domain-group-roles-list-response.json @@ -0,0 +1,23 @@ +{ + "roles": [ + { + "id": "123456", + "links": { + "self": "http://identity:35357/v3/roles/123456" + }, + "name": "admin" + }, + { + "id": "123457", + "links": { + "self": "http://identity:35357/v3/roles/123457" + }, + "name": "manager" + } + ], + "links": { + "self": "http://identity:35357/v3/domains/161718/groups/101112/roles", + "previous": null, + "next": null + } +} diff --git a/api-ref/source/identity/v3/samples/admin/domain-group-update-request.json b/api-ref/source/identity/v3/samples/admin/domain-group-update-request.json new file mode 100644 index 000000000..b0a840976 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/domain-group-update-request.json @@ -0,0 +1,8 @@ +{ + "config": { + "ldap": { + "url": "http://myldap/my_new_root", + "user_tree_dn": "ou=Users,dc=my_new_root,dc=org" + } + } +} diff --git a/api-ref/source/identity/v3/samples/admin/domain-show-response.json b/api-ref/source/identity/v3/samples/admin/domain-show-response.json new file mode 100644 index 000000000..1106b1973 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/domain-show-response.json @@ -0,0 +1,11 @@ +{ + "domain": { + "description": "Owns users and tenants (i.e. projects) available on Identity API v2.", + "enabled": true, + "id": "default", + "links": { + "self": "http://localhost:5000/v3/domains/default" + }, + "name": "Default" + } +} diff --git a/api-ref/source/identity/v3/samples/admin/domain-update-request.json b/api-ref/source/identity/v3/samples/admin/domain-update-request.json new file mode 100644 index 000000000..34c834aa7 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/domain-update-request.json @@ -0,0 +1,5 @@ +{ + "domain": { + "description": "Owns users and projects on Identity API v2." + } +} diff --git a/api-ref/source/identity/v3/samples/admin/domain-update-response.json b/api-ref/source/identity/v3/samples/admin/domain-update-response.json new file mode 100644 index 000000000..fe1034bb5 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/domain-update-response.json @@ -0,0 +1,11 @@ +{ + "domain": { + "links": { + "self": "http://localhost:5000/v3/domains/default" + }, + "enabled": true, + "description": "Owns users and projects on Identity API v2.", + "name": "Default", + "id": "default" + } +} diff --git a/api-ref/source/identity/v3/samples/admin/domain-user-roles-list-response.json b/api-ref/source/identity/v3/samples/admin/domain-user-roles-list-response.json new file mode 100644 index 000000000..1d27b4648 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/domain-user-roles-list-response.json @@ -0,0 +1,23 @@ +{ + "roles": [ + { + "id": "123456", + "links": { + "self": "http://identity:35357/v3/roles/123456" + }, + "name": "admin" + }, + { + "id": "123457", + "links": { + "self": "http://identity:35357/v3/roles/123457" + }, + "name": "manager" + } + ], + "links": { + "self": "http://identity:35357/v3/domains/161718/users/313233/roles", + "previous": null, + "next": null + } +} diff --git a/api-ref/source/identity/v3/samples/admin/domains-list-response.json b/api-ref/source/identity/v3/samples/admin/domains-list-response.json new file mode 100644 index 000000000..945c86458 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/domains-list-response.json @@ -0,0 +1,27 @@ +{ + "domains": [ + { + "description": "Used for swift functional testing", + "enabled": true, + "id": "5a75994a383c449184053ff7270c4e91", + "links": { + "self": "http://localhost:5000/v3/domains/5a75994a383c449184053ff7270c4e91" + }, + "name": "swift_test" + }, + { + "description": "Owns users and tenants (i.e. projects) available on Identity API v2.", + "enabled": true, + "id": "default", + "links": { + "self": "http://localhost:5000/v3/domains/default" + }, + "name": "Default" + } + ], + "links": { + "next": null, + "previous": null, + "self": "http://localhost:5000/v3/domains" + } +} diff --git a/api-ref/source/identity/v3/samples/admin/endpoint-create-request.json b/api-ref/source/identity/v3/samples/admin/endpoint-create-request.json new file mode 100644 index 000000000..6d0890992 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/endpoint-create-request.json @@ -0,0 +1,9 @@ +{ + "endpoint": { + "interface": "public", + "name": "ec2-2", + "region_id": "RegionOne", + "url": "http://identity:35357/v3/endpoints/828384", + "service_id": "9242e05f0c23467bbd1cf1f7a6e5e596" + } +} diff --git a/api-ref/source/identity/v3/samples/admin/endpoint-create-response.json b/api-ref/source/identity/v3/samples/admin/endpoint-create-response.json new file mode 100644 index 000000000..daad8538d --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/endpoint-create-response.json @@ -0,0 +1,15 @@ +{ + "endpoint": { + "region_id": "RegionOne", + "links": { + "self": "http://localhost:5000/v3/endpoints/e9b475a8742d4ff1a81b353c5a37e138" + }, + "url": "http://identity:35357/v3/endpoints/828384", + "region": "RegionOne", + "enabled": true, + "interface": "public", + "service_id": "9242e05f0c23467bbd1cf1f7a6e5e596", + "id": "e9b475a8742d4ff1a81b353c5a37e138", + "name": "ec2-2" + } +} diff --git a/api-ref/source/identity/v3/samples/admin/endpoint-show-response.json b/api-ref/source/identity/v3/samples/admin/endpoint-show-response.json new file mode 100644 index 000000000..cc0ff650c --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/endpoint-show-response.json @@ -0,0 +1,14 @@ +{ + "endpoint": { + "enabled": true, + "id": "01c3d5b92f7841ac83fb4b26173c12c7", + "interface": "admin", + "links": { + "self": "http://localhost:5000/v3/endpoints/01c3d5b92f7841ac83fb4b26173c12c7" + }, + "region": "RegionOne", + "region_id": "RegionOne", + "service_id": "3b2d6ad7e02c4cde8498a547601f1b8f", + "url": "http://23.253.211.234:9696/" + } +} diff --git a/api-ref/source/identity/v3/samples/admin/endpoint-update-request.json b/api-ref/source/identity/v3/samples/admin/endpoint-update-request.json new file mode 100644 index 000000000..5f6c82be4 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/endpoint-update-request.json @@ -0,0 +1,9 @@ +{ + "endpoint": { + "interface": "public", + "name": "Name", + "region_id": "north", + "url": "http://identity:35357/v3/endpoints/828384", + "service_id": "345678" + } +} diff --git a/api-ref/source/identity/v3/samples/admin/endpoint-update-response.json b/api-ref/source/identity/v3/samples/admin/endpoint-update-response.json new file mode 100644 index 000000000..5a84dd72f --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/endpoint-update-response.json @@ -0,0 +1,13 @@ +{ + "endpoint": { + "id": "828384", + "interface": "internal", + "links": { + "self": "http://identity:35357/v3/endpoints/828384" + }, + "name": "the internal volume endpoint", + "region_id": "north", + "service_id": "686766", + "url": "http://identity:35357/v3/endpoints/828384" + } +} diff --git a/api-ref/source/identity/v3/samples/admin/endpoints-list-response.json b/api-ref/source/identity/v3/samples/admin/endpoints-list-response.json new file mode 100644 index 000000000..ed35c76ef --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/endpoints-list-response.json @@ -0,0 +1,333 @@ +{ + "endpoints": [ + { + "enabled": true, + "id": "0649c5be323f4792afbc1efdd480847d", + "interface": "internal", + "links": { + "self": "http://localhost:5000/v3/endpoints/0649c5be323f4792afbc1efdd480847d" + }, + "region": "RegionOne", + "region_id": "RegionOne", + "service_id": "ef6b15e425814dc69d830361baae0e33", + "url": "http://23.253.211.234:8080/v1/AUTH_$(tenant_id)s" + }, + { + "enabled": true, + "id": "06b85ed2aa57413ca0b1813daed329a9", + "interface": "internal", + "links": { + "self": "http://localhost:5000/v3/endpoints/06b85ed2aa57413ca0b1813daed329a9" + }, + "region": "RegionOne", + "region_id": "RegionOne", + "service_id": "98cfd5347fb84601b2f88f3afd8dddd4", + "url": "http://23.253.211.234:8776/v1/$(tenant_id)s" + }, + { + "enabled": true, + "id": "070102f162e04f91a52c7887d0604163", + "interface": "admin", + "links": { + "self": "http://localhost:5000/v3/endpoints/070102f162e04f91a52c7887d0604163" + }, + "region": "RegionOne", + "region_id": "RegionOne", + "service_id": "312f401c14d143d8b3e3f4daf0418add", + "url": "http://23.253.211.234:8774/v2.1/$(tenant_id)s" + }, + { + "enabled": true, + "id": "0fd73b621e424cc0a172853264519cbc", + "interface": "admin", + "links": { + "self": "http://localhost:5000/v3/endpoints/0fd73b621e424cc0a172853264519cbc" + }, + "region": "RegionOne", + "region_id": "RegionOne", + "service_id": "17a877162c8e405b81d563d95ec4e3f8", + "url": "http://23.253.211.234:8776/v2/$(tenant_id)s" + }, + { + "enabled": true, + "id": "1899667a3b1544ccb355fdfc4184d7d7", + "interface": "public", + "links": { + "self": "http://localhost:5000/v3/endpoints/1899667a3b1544ccb355fdfc4184d7d7" + }, + "region": "RegionOne", + "region_id": "RegionOne", + "service_id": "9b67aed49e0d4c2fb46ca9476a3b9243", + "url": "http://23.253.211.234:9292" + }, + { + "enabled": true, + "id": "3b3611ea2e554ee7b85e7f2213b02c33", + "interface": "admin", + "links": { + "self": "http://localhost:5000/v3/endpoints/3b3611ea2e554ee7b85e7f2213b02c33" + }, + "region": "RegionOne", + "region_id": "RegionOne", + "service_id": "2a662f90700b4478929d4b24cc6a320b", + "url": "http://23.253.211.234:9696/" + }, + { + "enabled": true, + "id": "3ea2b420306f48c6bf0cf51c2fefea03", + "interface": "internal", + "links": { + "self": "http://localhost:5000/v3/endpoints/3ea2b420306f48c6bf0cf51c2fefea03" + }, + "region": "RegionOne", + "region_id": "RegionOne", + "service_id": "736fb9bb21ef498287db9abcc55b20d9", + "url": "http://23.253.211.234:8774/v2/$(tenant_id)s" + }, + { + "enabled": true, + "id": "41b122182f574a44b0e246aff6ca29c5", + "interface": "admin", + "links": { + "self": "http://localhost:5000/v3/endpoints/41b122182f574a44b0e246aff6ca29c5" + }, + "region": "RegionOne", + "region_id": "RegionOne", + "service_id": "9b67aed49e0d4c2fb46ca9476a3b9243", + "url": "http://23.253.211.234:9292" + }, + { + "enabled": true, + "id": "44a736dd5eeb4347acec66b5f11c8f80", + "interface": "internal", + "links": { + "self": "http://localhost:5000/v3/endpoints/44a736dd5eeb4347acec66b5f11c8f80" + }, + "region": "RegionOne", + "region_id": "RegionOne", + "service_id": "2a662f90700b4478929d4b24cc6a320b", + "url": "http://23.253.211.234:9696/" + }, + { + "enabled": true, + "id": "499e8f6718ef466ba3fb315fa8f9e0b8", + "interface": "internal", + "links": { + "self": "http://localhost:5000/v3/endpoints/499e8f6718ef466ba3fb315fa8f9e0b8" + }, + "region": "RegionOne", + "region_id": "RegionOne", + "service_id": "312f401c14d143d8b3e3f4daf0418add", + "url": "http://23.253.211.234:8774/v2.1/$(tenant_id)s" + }, + { + "enabled": true, + "id": "545b1e9f126248428c5cdbec7420c353", + "interface": "public", + "links": { + "self": "http://localhost:5000/v3/endpoints/545b1e9f126248428c5cdbec7420c353" + }, + "region": "RegionOne", + "region_id": "RegionOne", + "service_id": "736fb9bb21ef498287db9abcc55b20d9", + "url": "http://23.253.211.234:8774/v2/$(tenant_id)s" + }, + { + "enabled": true, + "id": "629dc5a64e954ad09a45e87bc48299ba", + "interface": "public", + "links": { + "self": "http://localhost:5000/v3/endpoints/629dc5a64e954ad09a45e87bc48299ba" + }, + "region": "RegionOne", + "region_id": "RegionOne", + "service_id": "2a662f90700b4478929d4b24cc6a320b", + "url": "http://23.253.211.234:9696/" + }, + { + "enabled": true, + "id": "642a329a660544fdaab2420c0da7d49b", + "interface": "public", + "links": { + "self": "http://localhost:5000/v3/endpoints/642a329a660544fdaab2420c0da7d49b" + }, + "region": "RegionOne", + "region_id": "RegionOne", + "service_id": "ef6b15e425814dc69d830361baae0e33", + "url": "http://23.253.211.234:8080/v1/AUTH_$(tenant_id)s" + }, + { + "enabled": true, + "id": "72f8fc8536e44a19bc3388218efcc741", + "interface": "internal", + "links": { + "self": "http://localhost:5000/v3/endpoints/72f8fc8536e44a19bc3388218efcc741" + }, + "region": "RegionOne", + "region_id": "RegionOne", + "service_id": "9b67aed49e0d4c2fb46ca9476a3b9243", + "url": "http://23.253.211.234:9292" + }, + { + "enabled": true, + "id": "74121e71962e4947ac622c41706f0ee7", + "interface": "public", + "links": { + "self": "http://localhost:5000/v3/endpoints/74121e71962e4947ac622c41706f0ee7" + }, + "region": "RegionOne", + "region_id": "RegionOne", + "service_id": "17a877162c8e405b81d563d95ec4e3f8", + "url": "http://23.253.211.234:8776/v2/$(tenant_id)s" + }, + { + "enabled": true, + "id": "7431a4f971dc4abb8d0e387434a06817", + "interface": "admin", + "links": { + "self": "http://localhost:5000/v3/endpoints/7431a4f971dc4abb8d0e387434a06817" + }, + "region": "RegionOne", + "region_id": "RegionOne", + "service_id": "9242e05f0c23467bbd1cf1f7a6e5e596", + "url": "http://23.253.211.234:8773/" + }, + { + "enabled": true, + "id": "7cffc75a14ca4334b458e475750bd84f", + "interface": "public", + "links": { + "self": "http://localhost:5000/v3/endpoints/7cffc75a14ca4334b458e475750bd84f" + }, + "region": "RegionOne", + "region_id": "RegionOne", + "service_id": "efeb249cbcd3412496bc4b194ea058da", + "url": "http://23.253.211.234:5000/v2.0" + }, + { + "enabled": true, + "id": "a422a6fa163b4a6ba8309e067ce3750b", + "interface": "public", + "links": { + "self": "http://localhost:5000/v3/endpoints/a422a6fa163b4a6ba8309e067ce3750b" + }, + "region": "RegionOne", + "region_id": "RegionOne", + "service_id": "312f401c14d143d8b3e3f4daf0418add", + "url": "http://23.253.211.234:8774/v2.1/$(tenant_id)s" + }, + { + "enabled": true, + "id": "ac6a74efe9944afdb129d4df70cde0ec", + "interface": "public", + "links": { + "self": "http://localhost:5000/v3/endpoints/ac6a74efe9944afdb129d4df70cde0ec" + }, + "region": "RegionOne", + "region_id": "RegionOne", + "service_id": "9242e05f0c23467bbd1cf1f7a6e5e596", + "url": "http://23.253.211.234:8773/" + }, + { + "enabled": true, + "id": "adf43d7ff0d14d0fa1e8a5187f40e1af", + "interface": "internal", + "links": { + "self": "http://localhost:5000/v3/endpoints/adf43d7ff0d14d0fa1e8a5187f40e1af" + }, + "region": "RegionOne", + "region_id": "RegionOne", + "service_id": "efeb249cbcd3412496bc4b194ea058da", + "url": "http://23.253.211.234:5000/v2.0" + }, + { + "enabled": true, + "id": "b18be64a118244d39217db72534f8b33", + "interface": "admin", + "links": { + "self": "http://localhost:5000/v3/endpoints/b18be64a118244d39217db72534f8b33" + }, + "region": "RegionOne", + "region_id": "RegionOne", + "service_id": "736fb9bb21ef498287db9abcc55b20d9", + "url": "http://23.253.211.234:8774/v2/$(tenant_id)s" + }, + { + "enabled": true, + "id": "c828983c9c214d819674649aa693cdff", + "interface": "public", + "links": { + "self": "http://localhost:5000/v3/endpoints/c828983c9c214d819674649aa693cdff" + }, + "region": "RegionOne", + "region_id": "RegionOne", + "service_id": "98cfd5347fb84601b2f88f3afd8dddd4", + "url": "http://23.253.211.234:8776/v1/$(tenant_id)s" + }, + { + "enabled": true, + "id": "d062ebdb244f447498768fc0ced32e2d", + "interface": "admin", + "links": { + "self": "http://localhost:5000/v3/endpoints/d062ebdb244f447498768fc0ced32e2d" + }, + "region": "RegionOne", + "region_id": "RegionOne", + "service_id": "98cfd5347fb84601b2f88f3afd8dddd4", + "url": "http://23.253.211.234:8776/v1/$(tenant_id)s" + }, + { + "enabled": true, + "id": "d281219ec0df4cf2b7c681463d5dcf51", + "interface": "internal", + "links": { + "self": "http://localhost:5000/v3/endpoints/d281219ec0df4cf2b7c681463d5dcf51" + }, + "region": "RegionOne", + "region_id": "RegionOne", + "service_id": "17a877162c8e405b81d563d95ec4e3f8", + "url": "http://23.253.211.234:8776/v2/$(tenant_id)s" + }, + { + "enabled": true, + "id": "d8e0824a17404431b5d978a87ac1bede", + "interface": "admin", + "links": { + "self": "http://localhost:5000/v3/endpoints/d8e0824a17404431b5d978a87ac1bede" + }, + "region": "RegionOne", + "region_id": "RegionOne", + "service_id": "efeb249cbcd3412496bc4b194ea058da", + "url": "http://23.253.211.234:35357/v2.0" + }, + { + "enabled": true, + "id": "d9b54bdc063046828ac3c6487bea8047", + "interface": "internal", + "links": { + "self": "http://localhost:5000/v3/endpoints/d9b54bdc063046828ac3c6487bea8047" + }, + "region": "RegionOne", + "region_id": "RegionOne", + "service_id": "9242e05f0c23467bbd1cf1f7a6e5e596", + "url": "http://23.253.211.234:8773/" + }, + { + "enabled": true, + "id": "ea74f9771dec475eabfc2cdff5364413", + "interface": "admin", + "links": { + "self": "http://localhost:5000/v3/endpoints/ea74f9771dec475eabfc2cdff5364413" + }, + "region": "RegionOne", + "region_id": "RegionOne", + "service_id": "ef6b15e425814dc69d830361baae0e33", + "url": "http://23.253.211.234:8080" + } + ], + "links": { + "next": null, + "previous": null, + "self": "http://localhost:5000/v3/endpoints" + } +} diff --git a/api-ref/source/identity/v3/samples/admin/group-create-request.json b/api-ref/source/identity/v3/samples/admin/group-create-request.json new file mode 100644 index 000000000..4c35eb48e --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/group-create-request.json @@ -0,0 +1,7 @@ +{ + "group": { + "description": "Contract developers", + "domain_id": "default", + "name": "Contract developers" + } +} diff --git a/api-ref/source/identity/v3/samples/admin/group-create-response.json b/api-ref/source/identity/v3/samples/admin/group-create-response.json new file mode 100644 index 000000000..112218d48 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/group-create-response.json @@ -0,0 +1,11 @@ +{ + "group": { + "domain_id": "default", + "description": "Contract developers", + "id": "c0d675eac29945ad9dfd08aa1bb75751", + "links": { + "self": "http://localhost:5000/v3/groups/c0d675eac29945ad9dfd08aa1bb75751" + }, + "name": "Contract developers" + } +} diff --git a/api-ref/source/identity/v3/samples/admin/group-show-response.json b/api-ref/source/identity/v3/samples/admin/group-show-response.json new file mode 100644 index 000000000..112218d48 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/group-show-response.json @@ -0,0 +1,11 @@ +{ + "group": { + "domain_id": "default", + "description": "Contract developers", + "id": "c0d675eac29945ad9dfd08aa1bb75751", + "links": { + "self": "http://localhost:5000/v3/groups/c0d675eac29945ad9dfd08aa1bb75751" + }, + "name": "Contract developers" + } +} diff --git a/api-ref/source/identity/v3/samples/admin/group-update-request.json b/api-ref/source/identity/v3/samples/admin/group-update-request.json new file mode 100644 index 000000000..961838b57 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/group-update-request.json @@ -0,0 +1,6 @@ +{ + "group": { + "description": "Contract developers 2016", + "name": "Contract developers 2016" + } +} diff --git a/api-ref/source/identity/v3/samples/admin/group-update-response.json b/api-ref/source/identity/v3/samples/admin/group-update-response.json new file mode 100644 index 000000000..6a3ee3395 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/group-update-response.json @@ -0,0 +1,11 @@ +{ + "group": { + "domain_id": "default", + "description": "Contract developers 2016", + "id": "c0d675eac29945ad9dfd08aa1bb75751", + "links": { + "self": "http://localhost:5000/v3/groups/c0d675eac29945ad9dfd08aa1bb75751" + }, + "name": "Contract developers 2016" + } +} diff --git a/api-ref/source/identity/v3/samples/admin/group-users-list-response.json b/api-ref/source/identity/v3/samples/admin/group-users-list-response.json new file mode 100644 index 000000000..68bef1237 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/group-users-list-response.json @@ -0,0 +1,19 @@ +{ + "users": [ + { + "name": "admin", + "links": { + "self": "http://localhost:5000/v3/users/fff603a0829d41e48bc0dd0d72ad61ce" + }, + "domain_id": "default", + "enabled": true, + "email": null, + "id": "fff603a0829d41e48bc0dd0d72ad61ce" + } + ], + "links": { + "self": "http://localhost:5000/v3/groups/9ce0ad4e58a84d7a97b92f7955d10c92/users", + "previous": null, + "next": null + } +} diff --git a/api-ref/source/identity/v3/samples/admin/groups-list-response.json b/api-ref/source/identity/v3/samples/admin/groups-list-response.json new file mode 100644 index 000000000..4984bc600 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/groups-list-response.json @@ -0,0 +1,27 @@ +{ + "links": { + "self": "http://localhost:5000/v3/groups", + "previous": null, + "next": null + }, + "groups": [ + { + "domain_id": "default", + "description": "non-admin group", + "id": "96372bbb152f475aa37e9a76a25a029c", + "links": { + "self": "http://localhost:5000/v3/groups/96372bbb152f475aa37e9a76a25a029c" + }, + "name": "nonadmins" + }, + { + "domain_id": "default", + "description": "openstack admin group", + "id": "9ce0ad4e58a84d7a97b92f7955d10c92", + "links": { + "self": "http://localhost:5000/v3/groups/9ce0ad4e58a84d7a97b92f7955d10c92" + }, + "name": "admins" + } + ] +} diff --git a/api-ref/source/identity/v3/samples/admin/identity-version-response.json b/api-ref/source/identity/v3/samples/admin/identity-version-response.json new file mode 100644 index 000000000..0f1d5eaa6 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/identity-version-response.json @@ -0,0 +1,19 @@ +{ + "version": { + "id": "v3.4", + "links": [ + { + "href": "http://localhost:5000/v3/", + "rel": "self" + } + ], + "media-types": [ + { + "base": "application/json", + "type": "application/vnd.openstack.identity-v3+json" + } + ], + "status": "stable", + "updated": "2015-03-30T00:00:00Z" + } +} diff --git a/api-ref/source/identity/v3/samples/admin/identity-versions-response.json b/api-ref/source/identity/v3/samples/admin/identity-versions-response.json new file mode 100644 index 000000000..5cbc45adc --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/identity-versions-response.json @@ -0,0 +1,45 @@ +{ + "versions": { + "values": [ + { + "id": "v3.4", + "links": [ + { + "href": "http://localhost:5000/v3/", + "rel": "self" + } + ], + "media-types": [ + { + "base": "application/json", + "type": "application/vnd.openstack.identity-v3+json" + } + ], + "status": "stable", + "updated": "2015-03-30T00:00:00Z" + }, + { + "id": "v2.0", + "links": [ + { + "href": "http://localhost:5000/v2.0/", + "rel": "self" + }, + { + "href": "http://docs.openstack.org/", + "rel": "describedby", + "type": "text/html" + } + ], + "media-types": [ + { + "base": "application/json", + "type": "application/vnd.openstack.identity-v2.0+json" + } + ], + "status": "stable", + "updated": "2014-04-17T00:00:00Z" + } + ] + } +} diff --git a/api-ref/source/identity/v3/samples/admin/policies-list-response.json b/api-ref/source/identity/v3/samples/admin/policies-list-response.json new file mode 100644 index 000000000..3a2ae7158 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/policies-list-response.json @@ -0,0 +1,37 @@ +{ + "links": { + "next": null, + "previous": null, + "self": "http://localhost:5000/v3/policies" + }, + "policies": [ + { + "blob": { + "foobar_user": [ + "role:compute-user" + ] + }, + "id": "717273", + "links": { + "self": "http://identity:35357/v3/policies/717273" + }, + "project_id": "456789", + "type": "application/json", + "user_id": "616263" + }, + { + "blob": { + "foobar_user": [ + "role:compute-user" + ] + }, + "id": "717274", + "links": { + "self": "http://identity:35357/v3/policies/717274" + }, + "project_id": "456789", + "type": "application/json", + "user_id": "616263" + } + ] +} diff --git a/api-ref/source/identity/v3/samples/admin/policy-create-request.json b/api-ref/source/identity/v3/samples/admin/policy-create-request.json new file mode 100644 index 000000000..20293393c --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/policy-create-request.json @@ -0,0 +1,8 @@ +{ + "policy": { + "blob": "{'foobar_user': 'role:compute-user'}", + "project_id": "0426ac1e48f642ef9544c2251e07e261", + "type": "application/json", + "user_id": "0ffd248c55b443eaac5253b4e9cbf9b5" + } +} diff --git a/api-ref/source/identity/v3/samples/admin/policy-create-response.json b/api-ref/source/identity/v3/samples/admin/policy-create-response.json new file mode 100644 index 000000000..5b62c1b0a --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/policy-create-response.json @@ -0,0 +1,12 @@ +{ + "policy": { + "user_id": "0ffd248c55b443eaac5253b4e9cbf9b5", + "links": { + "self": "http://identity:35357/v3/policies/88f5b83f8f8e41daba4c25eed1a7bbc6" + }, + "blob": "{'foobar_user': 'role:compute-user'}", + "project_id": "0426ac1e48f642ef9544c2251e07e261", + "type": "application/json", + "id": "88f5b83f8f8e41daba4c25eed1a7bbc6" + } +} diff --git a/api-ref/source/identity/v3/samples/admin/policy-show-response.json b/api-ref/source/identity/v3/samples/admin/policy-show-response.json new file mode 100644 index 000000000..245c774aa --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/policy-show-response.json @@ -0,0 +1,16 @@ +{ + "policy": { + "blob": { + "foobar_user": [ + "role:compute-user" + ] + }, + "id": "717273", + "links": { + "self": "http://identity:35357/v3/policies/717273" + }, + "project_id": "456789", + "type": "application/json", + "user_id": "616263" + } +} diff --git a/api-ref/source/identity/v3/samples/admin/policy-update-request.json b/api-ref/source/identity/v3/samples/admin/policy-update-request.json new file mode 100644 index 000000000..a10f6362b --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/policy-update-request.json @@ -0,0 +1,12 @@ +{ + "policy": { + "blob": { + "foobar_user": [ + "role:compute-user" + ] + }, + "project_id": "456789", + "type": "application/json", + "user_id": "616263" + } +} diff --git a/api-ref/source/identity/v3/samples/admin/policy-update-response.json b/api-ref/source/identity/v3/samples/admin/policy-update-response.json new file mode 100644 index 000000000..245c774aa --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/policy-update-response.json @@ -0,0 +1,16 @@ +{ + "policy": { + "blob": { + "foobar_user": [ + "role:compute-user" + ] + }, + "id": "717273", + "links": { + "self": "http://identity:35357/v3/policies/717273" + }, + "project_id": "456789", + "type": "application/json", + "user_id": "616263" + } +} diff --git a/api-ref/source/identity/v3/samples/admin/project-create-request.json b/api-ref/source/identity/v3/samples/admin/project-create-request.json new file mode 100644 index 000000000..76c941155 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/project-create-request.json @@ -0,0 +1,9 @@ +{ + "project": { + "description": "My new project", + "domain_id": "default", + "enabled": true, + "is_domain": true, + "name": "myNewProject" + } +} diff --git a/api-ref/source/identity/v3/samples/admin/project-create-response.json b/api-ref/source/identity/v3/samples/admin/project-create-response.json new file mode 100644 index 000000000..e1e3ba677 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/project-create-response.json @@ -0,0 +1,14 @@ +{ + "project": { + "is_domain": true, + "description": "My new project", + "links": { + "self": "http://localhost:5000/v3/projects/93ebbcc35335488b96ff9cd7d18cbb2e" + }, + "enabled": true, + "id": "93ebbcc35335488b96ff9cd7d18cbb2e", + "parent_id": null, + "domain_id": "default", + "name": "myNewProject" + } +} diff --git a/api-ref/source/identity/v3/samples/admin/project-enable-request.json b/api-ref/source/identity/v3/samples/admin/project-enable-request.json new file mode 100644 index 000000000..ed87ef842 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/project-enable-request.json @@ -0,0 +1,5 @@ +{ + "project": { + "enabled": true + } +} diff --git a/api-ref/source/identity/v3/samples/admin/project-group-roles-list-response.json b/api-ref/source/identity/v3/samples/admin/project-group-roles-list-response.json new file mode 100644 index 000000000..e89caa0e3 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/project-group-roles-list-response.json @@ -0,0 +1,23 @@ +{ + "roles": [ + { + "id": "123456", + "links": { + "self": "http://identity:35357/v3/roles/123456" + }, + "name": "admin" + }, + { + "id": "123457", + "links": { + "self": "http://identity:35357/v3/roles/123457" + }, + "name": "manager" + } + ], + "links": { + "self": "http://identity:35357/v3/projects/456789/groups/101112/roles", + "previous": null, + "next": null + } +} diff --git a/api-ref/source/identity/v3/samples/admin/project-show-response.json b/api-ref/source/identity/v3/samples/admin/project-show-response.json new file mode 100644 index 000000000..7fc8ca5c2 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/project-show-response.json @@ -0,0 +1,13 @@ +{ + "project": { + "description": null, + "domain_id": "default", + "enabled": true, + "id": "0c4e939acacf4376bdcd1129f1a054ad", + "links": { + "self": "http://localhost:5000/v3/projects/0c4e939acacf4376bdcd1129f1a054ad" + }, + "name": "admin", + "parent_id": null + } +} diff --git a/api-ref/source/identity/v3/samples/admin/project-update-request.json b/api-ref/source/identity/v3/samples/admin/project-update-request.json new file mode 100644 index 000000000..6cc0bdb34 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/project-update-request.json @@ -0,0 +1,8 @@ +{ + "project": { + "description": "My updated project", + "domain_id": "default", + "enabled": true, + "name": "myUpdatedProject" + } +} diff --git a/api-ref/source/identity/v3/samples/admin/project-update-response.json b/api-ref/source/identity/v3/samples/admin/project-update-response.json new file mode 100644 index 000000000..c56eb4a2a --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/project-update-response.json @@ -0,0 +1,17 @@ +{ + "project": { + "is_domain": true, + "description": "My updated project", + "links": { + "self": "http://localhost:5000/v3/projects/93ebbcc35335488b96ff9cd7d18cbb2e" + }, + "extra": { + "is_domain": true + }, + "enabled": true, + "id": "93ebbcc35335488b96ff9cd7d18cbb2e", + "parent_id": null, + "domain_id": "default", + "name": "myUpdatedProject" + } +} diff --git a/api-ref/source/identity/v3/samples/admin/project-user-roles-list-response.json b/api-ref/source/identity/v3/samples/admin/project-user-roles-list-response.json new file mode 100644 index 000000000..2704f65a6 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/project-user-roles-list-response.json @@ -0,0 +1,16 @@ +{ + "links": { + "self": "http://localhost:5000/v3/projects/9e5a15e2c0dd42aab0990a463e839ac1/users/b964a9e51c0046a4a84d3f83a135a97c/roles", + "previous": null, + "next": null + }, + "roles": [ + { + "id": "3b5347fa7a144008ba57c0acea469cc3", + "links": { + "self": "http://localhost:5000/v3/roles/3b5347fa7a144008ba57c0acea469cc3" + }, + "name": "admin" + } + ] +} diff --git a/api-ref/source/identity/v3/samples/admin/projects-list-response.json b/api-ref/source/identity/v3/samples/admin/projects-list-response.json new file mode 100644 index 000000000..0a770030a --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/projects-list-response.json @@ -0,0 +1,97 @@ +{ + "links": { + "next": null, + "previous": null, + "self": "http://localhost:5000/v3/projects" + }, + "projects": [ + { + "description": null, + "domain_id": "default", + "enabled": true, + "id": "0c4e939acacf4376bdcd1129f1a054ad", + "links": { + "self": "http://localhost:5000/v3/projects/0c4e939acacf4376bdcd1129f1a054ad" + }, + "name": "admin", + "parent_id": null + }, + { + "description": null, + "domain_id": "default", + "enabled": true, + "id": "0cbd49cbf76d405d9c86562e1d579bd3", + "links": { + "self": "http://localhost:5000/v3/projects/0cbd49cbf76d405d9c86562e1d579bd3" + }, + "name": "demo", + "parent_id": null + }, + { + "description": null, + "domain_id": "default", + "enabled": true, + "id": "2db68fed84324f29bb73130c6c2094fb", + "links": { + "self": "http://localhost:5000/v3/projects/2db68fed84324f29bb73130c6c2094fb" + }, + "name": "swifttenanttest2", + "parent_id": null + }, + { + "description": null, + "domain_id": "default", + "enabled": true, + "id": "3d594eb0f04741069dbbb521635b21c7", + "links": { + "self": "http://localhost:5000/v3/projects/3d594eb0f04741069dbbb521635b21c7" + }, + "name": "service", + "parent_id": null + }, + { + "description": null, + "domain_id": "default", + "enabled": true, + "id": "43ebde53fc314b1c9ea2b8c5dc744927", + "links": { + "self": "http://localhost:5000/v3/projects/43ebde53fc314b1c9ea2b8c5dc744927" + }, + "name": "swifttenanttest1", + "parent_id": null + }, + { + "description": "", + "domain_id": "1bc2169ca88e4cdaaba46d4c15390b65", + "enabled": true, + "id": "4b1eb781a47440acb8af9850103e537f", + "links": { + "self": "http://localhost:5000/v3/projects/4b1eb781a47440acb8af9850103e537f" + }, + "name": "swifttenanttest4", + "parent_id": null + }, + { + "description": null, + "domain_id": "default", + "enabled": true, + "id": "5961c443439d4fcebe42643723755e9d", + "links": { + "self": "http://localhost:5000/v3/projects/5961c443439d4fcebe42643723755e9d" + }, + "name": "invisible_to_admin", + "parent_id": null + }, + { + "description": null, + "domain_id": "default", + "enabled": true, + "id": "fdb8424c4e4f4c0ba32c52e2de3bd80e", + "links": { + "self": "http://localhost:5000/v3/projects/fdb8424c4e4f4c0ba32c52e2de3bd80e" + }, + "name": "alt_demo", + "parent_id": null + } + ] +} diff --git a/api-ref/source/identity/v3/samples/admin/region-create-request.json b/api-ref/source/identity/v3/samples/admin/region-create-request.json new file mode 100644 index 000000000..c20f1ed63 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/region-create-request.json @@ -0,0 +1,7 @@ +{ + "region": { + "description": "My subregion", + "id": "RegionOneSubRegion", + "parent_region_id": "RegionOne" + } +} diff --git a/api-ref/source/identity/v3/samples/admin/region-create-response.json b/api-ref/source/identity/v3/samples/admin/region-create-response.json new file mode 100644 index 000000000..ad37413ec --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/region-create-response.json @@ -0,0 +1,10 @@ +{ + "region": { + "parent_region_id": "RegionOne", + "id": "RegionOneSubRegion", + "links": { + "self": "http://localhost:5000/v3/regions/RegionOneSubRegion" + }, + "description": "My subregion" + } +} diff --git a/api-ref/source/identity/v3/samples/admin/region-show-response.json b/api-ref/source/identity/v3/samples/admin/region-show-response.json new file mode 100644 index 000000000..512130d41 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/region-show-response.json @@ -0,0 +1,10 @@ +{ + "region": { + "description": "My subregion 3", + "id": "RegionThree", + "links": { + "self": "http://localhost:5000/v3/regions/RegionThree" + }, + "parent_region_id": "RegionOne" + } +} diff --git a/api-ref/source/identity/v3/samples/admin/region-update-request.json b/api-ref/source/identity/v3/samples/admin/region-update-request.json new file mode 100644 index 000000000..9b8f1c0c8 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/region-update-request.json @@ -0,0 +1,5 @@ +{ + "region": { + "description": "My subregion 3" + } +} diff --git a/api-ref/source/identity/v3/samples/admin/region-update-response.json b/api-ref/source/identity/v3/samples/admin/region-update-response.json new file mode 100644 index 000000000..bb644b1dd --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/region-update-response.json @@ -0,0 +1,10 @@ +{ + "region": { + "parent_region_id": "RegionOne", + "id": "RegionThree", + "links": { + "self": "http://localhost:5000/v3/regions/RegionThree" + }, + "description": "My subregion 3" + } +} diff --git a/api-ref/source/identity/v3/samples/admin/regions-list-response.json b/api-ref/source/identity/v3/samples/admin/regions-list-response.json new file mode 100644 index 000000000..24ca02e9c --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/regions-list-response.json @@ -0,0 +1,17 @@ +{ + "links": { + "next": null, + "previous": null, + "self": "http://localhost:5000/v3/regions" + }, + "regions": [ + { + "description": "", + "id": "RegionOne", + "links": { + "self": "http://localhost:5000/v3/regions/RegionOne" + }, + "parent_region_id": null + } + ] +} diff --git a/api-ref/source/identity/v3/samples/admin/role-assignments-effective-list-response.json b/api-ref/source/identity/v3/samples/admin/role-assignments-effective-list-response.json new file mode 100644 index 000000000..42c4067e9 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/role-assignments-effective-list-response.json @@ -0,0 +1,42 @@ +{ + "role_assignments": [ + { + "links": { + "assignment": "http://identity:35357/v3/domains/161718/users/313233/roles/123456" + }, + "role": { + "id": "123456" + }, + "scope": { + "domain": { + "id": "161718" + } + }, + "user": { + "id": "313233" + } + }, + { + "links": { + "assignment": "http://identity:35357/v3/projects/456789/groups/101112/roles/123456", + "membership": "http://identity:35357/v3/groups/101112/users/313233" + }, + "role": { + "id": "123456" + }, + "scope": { + "project": { + "id": "456789" + } + }, + "user": { + "id": "313234" + } + } + ], + "links": { + "self": "http://identity:35357/v3/role_assignments?effective", + "previous": null, + "next": null + } +} diff --git a/api-ref/source/identity/v3/samples/admin/role-assignments-effective-list-response.txt b/api-ref/source/identity/v3/samples/admin/role-assignments-effective-list-response.txt new file mode 100644 index 000000000..d7fd10369 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/role-assignments-effective-list-response.txt @@ -0,0 +1 @@ +GET /role_assignments?user.id={user_id}&scope.project.id={project_id}&effective diff --git a/api-ref/source/identity/v3/samples/admin/role-assignments-list-response.json b/api-ref/source/identity/v3/samples/admin/role-assignments-list-response.json new file mode 100644 index 000000000..a6372b2ef --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/role-assignments-list-response.json @@ -0,0 +1,41 @@ +{ + "role_assignments": [ + { + "links": { + "assignment": "http://identity:35357/v3/domains/161718/users/313233/roles/123456" + }, + "role": { + "id": "123456" + }, + "scope": { + "domain": { + "id": "161718" + } + }, + "user": { + "id": "313233" + } + }, + { + "group": { + "id": "101112" + }, + "links": { + "assignment": "http://identity:35357/v3/projects/456789/groups/101112/roles/123456" + }, + "role": { + "id": "123456" + }, + "scope": { + "project": { + "id": "456789" + } + } + } + ], + "links": { + "self": "http://identity:35357/v3/role_assignments", + "previous": null, + "next": null + } +} diff --git a/api-ref/source/identity/v3/samples/admin/role-assignments-list-response.txt b/api-ref/source/identity/v3/samples/admin/role-assignments-list-response.txt new file mode 100644 index 000000000..d7fd10369 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/role-assignments-list-response.txt @@ -0,0 +1 @@ +GET /role_assignments?user.id={user_id}&scope.project.id={project_id}&effective diff --git a/api-ref/source/identity/v3/samples/admin/role-create-request.json b/api-ref/source/identity/v3/samples/admin/role-create-request.json new file mode 100644 index 000000000..67e4099eb --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/role-create-request.json @@ -0,0 +1,5 @@ +{ + "role": { + "name": "developer" + } +} diff --git a/api-ref/source/identity/v3/samples/admin/role-create-response.json b/api-ref/source/identity/v3/samples/admin/role-create-response.json new file mode 100644 index 000000000..a78cdf3c8 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/role-create-response.json @@ -0,0 +1,9 @@ +{ + "role": { + "id": "1e443fa8cee3482a8a2b6954dd5c8f12", + "links": { + "self": "http://localhost:5000/v3/roles/1e443fa8cee3482a8a2b6954dd5c8f12" + }, + "name": "developer" + } +} diff --git a/api-ref/source/identity/v3/samples/admin/role-show-response.json b/api-ref/source/identity/v3/samples/admin/role-show-response.json new file mode 100644 index 000000000..c435f1393 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/role-show-response.json @@ -0,0 +1,9 @@ +{ + "role": { + "id": "1e443fa8cee3482a8a2b6954dd5c8f12", + "links": { + "self": "http://localhost:5000/v3/roles/1e443fa8cee3482a8a2b6954dd5c8f12" + }, + "name": "Developer" + } +} diff --git a/api-ref/source/identity/v3/samples/admin/role-update-request.json b/api-ref/source/identity/v3/samples/admin/role-update-request.json new file mode 100644 index 000000000..9a13ea724 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/role-update-request.json @@ -0,0 +1,5 @@ +{ + "role": { + "name": "Developer" + } +} diff --git a/api-ref/source/identity/v3/samples/admin/role-update-response.json b/api-ref/source/identity/v3/samples/admin/role-update-response.json new file mode 100644 index 000000000..c435f1393 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/role-update-response.json @@ -0,0 +1,9 @@ +{ + "role": { + "id": "1e443fa8cee3482a8a2b6954dd5c8f12", + "links": { + "self": "http://localhost:5000/v3/roles/1e443fa8cee3482a8a2b6954dd5c8f12" + }, + "name": "Developer" + } +} diff --git a/api-ref/source/identity/v3/samples/admin/roles-list-response.json b/api-ref/source/identity/v3/samples/admin/roles-list-response.json new file mode 100644 index 000000000..3ec474398 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/roles-list-response.json @@ -0,0 +1,51 @@ +{ + "links": { + "next": null, + "previous": null, + "self": "http://localhost:5000/v3/roles" + }, + "roles": [ + { + "id": "5318e65d75574c17bf5339d3df33a5a3", + "links": { + "self": "http://localhost:5000/v3/roles/5318e65d75574c17bf5339d3df33a5a3" + }, + "name": "admin" + }, + { + "id": "642bcfc75c384fd181adf34d9b2df897", + "links": { + "self": "http://localhost:5000/v3/roles/642bcfc75c384fd181adf34d9b2df897" + }, + "name": "anotherrole" + }, + { + "id": "779a76d74f544224a7ef8762ca0de627", + "links": { + "self": "http://localhost:5000/v3/roles/779a76d74f544224a7ef8762ca0de627" + }, + "name": "Member" + }, + { + "id": "9fe2ff9ee4384b1894a90878d3e92bab", + "links": { + "self": "http://localhost:5000/v3/roles/9fe2ff9ee4384b1894a90878d3e92bab" + }, + "name": "_member_" + }, + { + "id": "ba2dfba61c934ee89e3110de36273229", + "links": { + "self": "http://localhost:5000/v3/roles/ba2dfba61c934ee89e3110de36273229" + }, + "name": "ResellerAdmin" + }, + { + "id": "f127b97616f24d3ebceb7be840210adc", + "links": { + "self": "http://localhost:5000/v3/roles/f127b97616f24d3ebceb7be840210adc" + }, + "name": "service" + } + ] +} diff --git a/api-ref/source/identity/v3/samples/admin/service-create-request.json b/api-ref/source/identity/v3/samples/admin/service-create-request.json new file mode 100644 index 000000000..b09f3319f --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/service-create-request.json @@ -0,0 +1,7 @@ +{ + "service": { + "type": "compute", + "name": "compute2", + "description": "Compute service 2" + } +} diff --git a/api-ref/source/identity/v3/samples/admin/service-create-response.json b/api-ref/source/identity/v3/samples/admin/service-create-response.json new file mode 100644 index 000000000..445f2e899 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/service-create-response.json @@ -0,0 +1,12 @@ +{ + "service": { + "name": "compute2", + "links": { + "self": "http://localhost:5000/v3/services/3f552eb79c48436db2868e948d8cf330" + }, + "enabled": true, + "type": "compute", + "id": "3f552eb79c48436db2868e948d8cf330", + "description": "Compute service 2" + } +} diff --git a/api-ref/source/identity/v3/samples/admin/service-show-response.json b/api-ref/source/identity/v3/samples/admin/service-show-response.json new file mode 100644 index 000000000..56c93b639 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/service-show-response.json @@ -0,0 +1,12 @@ +{ + "service": { + "description": "Keystone Identity Service", + "enabled": true, + "id": "686766", + "links": { + "self": "http://identity:5000/v3/services/686766" + }, + "name": "keystone", + "type": "identity" + } +} diff --git a/api-ref/source/identity/v3/samples/admin/service-update-request.json b/api-ref/source/identity/v3/samples/admin/service-update-request.json new file mode 100644 index 000000000..e5152dc0b --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/service-update-request.json @@ -0,0 +1,5 @@ +{ + "service": { + "description": "Block Storage Service V2" + } +} diff --git a/api-ref/source/identity/v3/samples/admin/service-update-response.json b/api-ref/source/identity/v3/samples/admin/service-update-response.json new file mode 100644 index 000000000..f104d9532 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/service-update-response.json @@ -0,0 +1,12 @@ +{ + "service": { + "name": "cinderv2", + "links": { + "self": "http://localhost:5000/v3/services/5789da9864004dd088fce14c1c626a4b" + }, + "enabled": true, + "type": "volumev2", + "id": "5789da9864004dd088fce14c1c626a4b", + "description": "Block Storage Service V2" + } +} diff --git a/api-ref/source/identity/v3/samples/admin/services-list-response.json b/api-ref/source/identity/v3/samples/admin/services-list-response.json new file mode 100644 index 000000000..f7a694ee3 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/services-list-response.json @@ -0,0 +1,99 @@ +{ + "links": { + "next": null, + "previous": null, + "self": "http://localhost:5000/v3/services" + }, + "services": [ + { + "description": "Nova Compute Service", + "enabled": true, + "id": "1999c3a858c7408fb586817620695098", + "links": { + "self": "http://localhost:5000/v3/services/1999c3a858c7408fb586817620695098" + }, + "name": "nova", + "type": "compute" + }, + { + "description": "Cinder Volume Service V2", + "enabled": true, + "id": "39216610e75547f1883037e11976fc0f", + "links": { + "self": "http://localhost:5000/v3/services/39216610e75547f1883037e11976fc0f" + }, + "name": "cinderv2", + "type": "volumev2" + }, + { + "description": "Neutron Service", + "enabled": true, + "id": "4fe41a27de3341af9100123f765eac0d", + "links": { + "self": "http://localhost:5000/v3/services/4fe41a27de3341af9100123f765eac0d" + }, + "name": "neutron", + "type": "network" + }, + { + "description": "EC2 Compatibility Layer", + "enabled": true, + "id": "61d3d05bdd1449f18923c83f52a4d762", + "links": { + "self": "http://localhost:5000/v3/services/61d3d05bdd1449f18923c83f52a4d762" + }, + "name": "ec2", + "type": "ec2" + }, + { + "description": "Glance Image Service", + "enabled": true, + "id": "69afa3d57d1948ea988beeb252bbaa5d", + "links": { + "self": "http://localhost:5000/v3/services/69afa3d57d1948ea988beeb252bbaa5d" + }, + "name": "glance", + "type": "image" + }, + { + "description": "Nova Compute Service V2.1", + "enabled": true, + "id": "79b691ee7be649d9bf8613efc0960206", + "links": { + "self": "http://localhost:5000/v3/services/79b691ee7be649d9bf8613efc0960206" + }, + "name": "novav21", + "type": "computev21" + }, + { + "description": "Swift Service", + "enabled": true, + "id": "92419b70ebe64c6c873bd20b14360e6b", + "links": { + "self": "http://localhost:5000/v3/services/92419b70ebe64c6c873bd20b14360e6b" + }, + "name": "swift", + "type": "object-store" + }, + { + "description": "Keystone Identity Service", + "enabled": true, + "id": "b8f8454fc07b46b781204d2a436f9d1c", + "links": { + "self": "http://localhost:5000/v3/services/b8f8454fc07b46b781204d2a436f9d1c" + }, + "name": "keystone", + "type": "identity" + }, + { + "description": "Cinder Volume Service", + "enabled": true, + "id": "cdda3bea0742407f95e70f4758f46558", + "links": { + "self": "http://localhost:5000/v3/services/cdda3bea0742407f95e70f4758f46558" + }, + "name": "cinder", + "type": "volume" + } + ] +} diff --git a/api-ref/source/identity/v3/samples/admin/token-validate-request.txt b/api-ref/source/identity/v3/samples/admin/token-validate-request.txt new file mode 100644 index 000000000..6181da9e8 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/token-validate-request.txt @@ -0,0 +1,3 @@ +Headers: +X-Auth-Token: 1dd7e3 +X-Subject-Token: c67580 diff --git a/api-ref/source/identity/v3/samples/admin/user-create-request.json b/api-ref/source/identity/v3/samples/admin/user-create-request.json new file mode 100644 index 000000000..d03f98825 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/user-create-request.json @@ -0,0 +1,11 @@ +{ + "user": { + "default_project_id": "263fd9", + "description": "James Doe user", + "domain_id": "1789d1", + "email": "jdoe@example.com", + "enabled": true, + "name": "James Doe", + "password": "secretsecret" + } +} diff --git a/api-ref/source/identity/v3/samples/admin/user-create-response.json b/api-ref/source/identity/v3/samples/admin/user-create-response.json new file mode 100644 index 000000000..d90134ea6 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/user-create-response.json @@ -0,0 +1,14 @@ +{ + "user": { + "default_project_id": "263fd9", + "description": "James Doe user", + "domain_id": "1789d1", + "email": "jdoe@example.com", + "enabled": true, + "id": "ff4e51", + "links": { + "self": "https://identity:35357/v3/users/ff4e51" + }, + "name": "James Doe" + } +} diff --git a/api-ref/source/identity/v3/samples/admin/user-groups-list-response.json b/api-ref/source/identity/v3/samples/admin/user-groups-list-response.json new file mode 100644 index 000000000..2a2c4ce28 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/user-groups-list-response.json @@ -0,0 +1,27 @@ +{ + "groups": [ + { + "description": "Developers cleared for work on all general projects", + "domain_id": "1789d1", + "id": "ea167b", + "links": { + "self": "https://identity:35357/v3/groups/ea167b" + }, + "name": "Developers" + }, + { + "description": "Developers cleared for work on secret projects", + "domain_id": "1789d1", + "id": "a62db1", + "links": { + "self": "https://identity:35357/v3/groups/a62db1" + }, + "name": "Secure Developers" + } + ], + "links": { + "self": "http://identity:35357/v3/users/9fe1d3/groups", + "previous": null, + "next": null + } +} diff --git a/api-ref/source/identity/v3/samples/admin/user-password-update-request.json b/api-ref/source/identity/v3/samples/admin/user-password-update-request.json new file mode 100644 index 000000000..592b99be1 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/user-password-update-request.json @@ -0,0 +1,6 @@ +{ + "user": { + "password": "old_secretsecret", + "original_password": "secretsecret" + } +} diff --git a/api-ref/source/identity/v3/samples/admin/user-projects-list-response.json b/api-ref/source/identity/v3/samples/admin/user-projects-list-response.json new file mode 100644 index 000000000..5f8da932c --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/user-projects-list-response.json @@ -0,0 +1,31 @@ +{ + "projects": [ + { + "description": "description of this project", + "domain_id": "161718", + "enabled": true, + "id": "456788", + "parent_id": "212223", + "links": { + "self": "http://identity:35357/v3/projects/456788" + }, + "name": "a project name" + }, + { + "description": "description of this project", + "domain_id": "161718", + "enabled": true, + "id": "456789", + "parent_id": "212223", + "links": { + "self": "http://identity:35357/v3/projects/456789" + }, + "name": "another domain" + } + ], + "links": { + "self": "http://identity:35357/v3/users/313233/projects", + "previous": null, + "next": null + } +} diff --git a/api-ref/source/identity/v3/samples/admin/user-show-response.json b/api-ref/source/identity/v3/samples/admin/user-show-response.json new file mode 100644 index 000000000..3df411e1d --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/user-show-response.json @@ -0,0 +1,14 @@ +{ + "user": { + "default_project_id": "263fd9", + "description": "John Smith's user", + "domain_id": "1789d1", + "email": "jsmith@example.com", + "enabled": true, + "id": "9fe1d3", + "links": { + "self": "https://identity:35357/v3/users/9fe1d3" + }, + "name": "jsmith" + } +} diff --git a/api-ref/source/identity/v3/samples/admin/user-update-request.json b/api-ref/source/identity/v3/samples/admin/user-update-request.json new file mode 100644 index 000000000..74962f1cf --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/user-update-request.json @@ -0,0 +1,8 @@ +{ + "user": { + "default_project_id": "263fd9", + "description": "James Doe's user", + "email": "jamesdoe@example.com", + "enabled": true + } +} diff --git a/api-ref/source/identity/v3/samples/admin/user-update-response.json b/api-ref/source/identity/v3/samples/admin/user-update-response.json new file mode 100644 index 000000000..f93bfdf5f --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/user-update-response.json @@ -0,0 +1,14 @@ +{ + "user": { + "default_project_id": "263fd9", + "description": "James Doe's user", + "domain_id": "1789d1", + "email": "jamesdoe@example.com", + "enabled": true, + "id": "ff4e51", + "links": { + "self": "https://identity:35357/v3/users/ff4e51" + }, + "name": "jamesdoe" + } +} diff --git a/api-ref/source/identity/v3/samples/admin/users-list-response.json b/api-ref/source/identity/v3/samples/admin/users-list-response.json new file mode 100644 index 000000000..08c3e6a51 --- /dev/null +++ b/api-ref/source/identity/v3/samples/admin/users-list-response.json @@ -0,0 +1,139 @@ +{ + "links": { + "next": null, + "previous": null, + "self": "http://localhost:5000/v3/users" + }, + "users": [ + { + "domain_id": "default", + "email": null, + "enabled": true, + "id": "2844b2a08be147a08ef58317d6471f1f", + "links": { + "self": "http://localhost:5000/v3/users/2844b2a08be147a08ef58317d6471f1f" + }, + "name": "glance" + }, + { + "domain_id": "default", + "email": "test@example.com", + "enabled": true, + "id": "4ab84ab39de54f4d96eaff8f2145a7cd", + "links": { + "self": "http://localhost:5000/v3/users/4ab84ab39de54f4d96eaff8f2145a7cd" + }, + "name": "swiftusertest1" + }, + { + "domain_id": "default", + "email": null, + "enabled": true, + "id": "56696a9a04864d63877a3d06a6f0b24b", + "links": { + "self": "http://localhost:5000/v3/users/56696a9a04864d63877a3d06a6f0b24b" + }, + "name": "swift" + }, + { + "domain_id": "default", + "email": "alt_demo@example.com", + "enabled": true, + "id": "5acb638d15da44fc8de41b9a4bd41875", + "links": { + "self": "http://localhost:5000/v3/users/5acb638d15da44fc8de41b9a4bd41875" + }, + "name": "alt_demo" + }, + { + "domain_id": "default", + "email": "demo@example.com", + "enabled": true, + "id": "7596e862b1af473c8ed6ae99d35b51e3", + "links": { + "self": "http://localhost:5000/v3/users/7596e862b1af473c8ed6ae99d35b51e3" + }, + "name": "demo" + }, + { + "domain_id": "default", + "email": null, + "enabled": true, + "id": "802edb2141b44e77bbde241417450749", + "links": { + "self": "http://localhost:5000/v3/users/802edb2141b44e77bbde241417450749" + }, + "name": "nova" + }, + { + "domain_id": "592ab0800d3745baaf45c610fa41950a", + "email": "test4@example.com", + "enabled": true, + "id": "9aca3883784647fe9aff3a50d922489a", + "links": { + "self": "http://localhost:5000/v3/users/9aca3883784647fe9aff3a50d922489a" + }, + "name": "swiftusertest4" + }, + { + "domain_id": "default", + "email": "test3@example.com", + "enabled": true, + "id": "a1251b011f9345e68c2458b841152034", + "links": { + "self": "http://localhost:5000/v3/users/a1251b011f9345e68c2458b841152034" + }, + "name": "swiftusertest3" + }, + { + "domain_id": "default", + "email": null, + "enabled": true, + "id": "a43f46eb318041f6b712143862e3ad70", + "links": { + "self": "http://localhost:5000/v3/users/a43f46eb318041f6b712143862e3ad70" + }, + "name": "neutron" + }, + { + "domain_id": "default", + "email": null, + "enabled": true, + "id": "b964a9e51c0046a4a84d3f83a135a97c", + "links": { + "self": "http://localhost:5000/v3/users/b964a9e51c0046a4a84d3f83a135a97c" + }, + "name": "admin" + }, + { + "domain_id": "default", + "email": null, + "enabled": true, + "id": "dc87e591c0d247d5ac04e873bd8a1646", + "links": { + "self": "http://localhost:5000/v3/users/dc87e591c0d247d5ac04e873bd8a1646" + }, + "name": "cinder" + }, + { + "domain_id": "default", + "email": "glance-swift@example.com", + "enabled": true, + "id": "ed214dc1c2c6468b926c96eca6c8aee9", + "links": { + "self": "http://localhost:5000/v3/users/ed214dc1c2c6468b926c96eca6c8aee9" + }, + "name": "glance-swift" + }, + { + "domain_id": "default", + "email": "test2@example.com", + "enabled": true, + "id": "f4f6587b058a4f46a00242549b430d37", + "links": { + "self": "http://localhost:5000/v3/users/f4f6587b058a4f46a00242549b430d37" + }, + "name": "swiftusertest2" + } + ] +} diff --git a/api-ref/source/identity/v3/service-catalog.inc b/api-ref/source/identity/v3/service-catalog.inc new file mode 100644 index 000000000..a490f7cd5 --- /dev/null +++ b/api-ref/source/identity/v3/service-catalog.inc @@ -0,0 +1,541 @@ +.. -*- rst -*- + +=================================================== +Service catalog and endpoints (services, endpoints) +=================================================== + +A service is an OpenStack web service that you can access through a +URL, or endpoint. + +A service catalog lists the services that are available to the +caller based upon the current authorization. + +You can create, list, show details for, update, and delete +services. When you create or update a service, you can enable the +service, which causes it and its endpoints to appear in the service +catalog. + +You can create, list, show details for, update, and delete +endpoints. + + +List services +============= + +.. rest_method:: GET /v3/services + +Lists all services. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - type: type + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - name: name + - links: links + - enabled: enabled + - services: services + - type: type + - id: id + - description: description + + + +Response Example +---------------- + +.. literalinclude:: ../samples/admin/services-list-response.json + :language: javascript + + + + + + + + + + + +Create service +============== + +.. rest_method:: POST /v3/services + +Creates a service. + +Error response codes:201,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - description: description + - service: service + - enabled: enabled + - service_id: service_id + - type: type + - name: name + +Request Example +--------------- + +.. literalinclude:: ../samples/admin/service-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - name: name + - service: service + - links: links + - type: type + - id: id + - description: description + + + + + + + + + + + + + + +Show endpoint details +===================== + +.. rest_method:: GET /v3/endpoints/{endpoint_id} + +Shows details for an endpoint. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - endpoint_id: endpoint_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - endpoint: endpoint + - name: name + - links: links + - url: url + - region: region + - interface: interface + - service_id: service_id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/admin/endpoint-show-response.json + :language: javascript + + + + + + + + + + + +Update endpoint +=============== + +.. rest_method:: PATCH /v3/endpoints/{endpoint_id} + +Updates an endpoint. + + +Normal response codes: 200 +Error response codes:413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - endpoint: endpoint + - name: name + - url: url + - region: region + - interface: interface + - service_id: service_id + - endpoint_id: endpoint_id + +Request Example +--------------- + +.. literalinclude:: ../samples/admin/endpoint-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - endpoint: endpoint + - name: name + - links: links + - url: url + - region: region + - interface: interface + - service_id: service_id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/admin/endpoint-update-response.json + :language: javascript + + + + + + + + + + + + + +Delete endpoint +=============== + +.. rest_method:: DELETE /v3/endpoints/{endpoint_id} + +Deletes an endpoint. + +Error response codes:204,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - endpoint_id: endpoint_id + + + + + + + + + + + + + + + +List endpoints +============== + +.. rest_method:: GET /v3/endpoints + +Lists all available endpoints. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - interface: interface + - service_id: service_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - region_id: region_id + - links: links + - url: url + - region: region + - enabled: enabled + - interface: interface + - service_id: service_id + - endpoints: endpoints + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/admin/endpoints-list-response.json + :language: javascript + + + + + + + + + + + +Create endpoint +=============== + +.. rest_method:: POST /v3/endpoints + +Creates an endpoint. + +Error response codes:201,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - endpoint: endpoint + - name: name + - url: url + - enabled: enabled + - interface: interface + - service_id: service_id + - region_id: region_id + +Request Example +--------------- + +.. literalinclude:: ../samples/admin/endpoint-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - endpoint: endpoint + - name: name + - links: links + - url: url + - region: region + - enabled: enabled + - interface: interface + - service_id: service_id + - id: id + - region_id: region_id + + + + + + + + + + + + + + +Show service details +==================== + +.. rest_method:: GET /v3/services/{service_id} + +Shows details for a service. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - service_id: service_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - name: name + - service: service + - links: links + - type: type + - id: id + - description: description + + + +Response Example +---------------- + +.. literalinclude:: ../samples/admin/service-show-response.json + :language: javascript + + + + + + + + + + + +Update service +============== + +.. rest_method:: PATCH /v3/services/{service_id} + +Updates a service. + +The request body is the same as the create service request body, +except that you include only those attributes that you want to +update. + + +Normal response codes: 200 +Error response codes:413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - type: type + - enabled: enabled + - description: description + - service: service + - name: name + - service_id: service_id + +Request Example +--------------- + +.. literalinclude:: ../samples/admin/service-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - name: name + - service: service + - links: links + - type: type + - id: id + - description: description + + + +Response Example +---------------- + +.. literalinclude:: ../samples/admin/service-update-response.json + :language: javascript + + + + + + + + + + + + + +Delete service +============== + +.. rest_method:: DELETE /v3/services/{service_id} + +Deletes a service. + +If you try to delete a service that still has associated endpoints, +this call either deletes all associated endpoints or fails until +all endpoints are deleted. + +Error response codes:204,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - service_id: service_id + + + + + + + + + + + + + + diff --git a/api-ref/source/identity/v3/users.inc b/api-ref/source/identity/v3/users.inc new file mode 100644 index 000000000..8ddfb0efe --- /dev/null +++ b/api-ref/source/identity/v3/users.inc @@ -0,0 +1,406 @@ +.. -*- rst -*- + +====================================== +Users (users, groups, projects, roles) +====================================== + +A user is an individual API consumer that is owned by a domain. A +role explicitly associates a user with projects or domains. A user +with no assigned roles has no access to OpenStack resources. + +You can list, create, show details for, update, delete, and change +the password for users. + +You can also list groups, projects, and roles for a specified user. +To list user roles, see `Roles `_. + + +Show user details +================= + +.. rest_method:: GET /v3/users/{user_id} + +Shows details for a user. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - user_id: user_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - links: links + - user: user + - enabled: enabled + - email: email + - default_project_id: default_project_id + - id: id + - domain_id: domain_id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/admin/user-show-response.json + :language: javascript + + + + + + + + + + + +Update user +=========== + +.. rest_method:: PATCH /v3/users/{user_id} + +Updates the password for or enables or disables a user. + +If the back-end driver does not support this functionality, this +call might return the HTTP ``Not Implemented (501)`` response code. + + +Normal response codes: 200 +Error response codes:413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - name: name + - user: user + - enabled: enabled + - email: email + - default_project_id: default_project_id + - password: password + - domain_id: domain_id + - description: description + - user_id: user_id + +Request Example +--------------- + +.. literalinclude:: ../samples/admin/user-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - links: links + - user: user + - enabled: enabled + - email: email + - default_project_id: default_project_id + - id: id + - domain_id: domain_id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/admin/user-update-response.json + :language: javascript + + + + + + + + + + + + + +Delete user +=========== + +.. rest_method:: DELETE /v3/users/{user_id} + +Deletes a user. + +Error response codes:204,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - user_id: user_id + + + + + + + + + + + + + + + +List groups to which a user belongs +=================================== + +.. rest_method:: GET /v3/users/{user_id}/groups + +Lists groups to which a user belongs. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - user_id: user_id + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/admin/user-groups-list-response.json + :language: javascript + + + + + + + + + + + +Change password for user +======================== + +.. rest_method:: POST /v3/users/{user_id}/password + +Changes the password for a user. + +Error response codes:204,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - original_password: original_password + - password: password + - user: user + - user_id: user_id + +Request Example +--------------- + +.. literalinclude:: ../samples/admin/user-password-update-request.json + :language: javascript + + + + + + + + + + + + + + + + +Create user +=========== + +.. rest_method:: POST /v3/users + +Creates a user. + +Error response codes:201,413,415,405,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - name: name + - user: user + - enabled: enabled + - email: email + - default_project_id: default_project_id + - password: password + - domain_id: domain_id + - description: description + +Request Example +--------------- + +.. literalinclude:: ../samples/admin/user-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - links: links + - user: user + - enabled: enabled + - email: email + - default_project_id: default_project_id + - id: id + - domain_id: domain_id + - name: name + + + + + + + + + + + + + + +List users +========== + +.. rest_method:: GET /v3/users + +Lists users. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - domain_id: domain_id + - name: name + - enabled: enabled + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - links: links + - enabled: enabled + - email: email + - default_project_id: default_project_id + - id: id + - users: users + - domain_id: domain_id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/admin/users-list-response.json + :language: javascript + + + + + + + + + + + +List projects for user +====================== + +.. rest_method:: GET /v3/users/{user_id}/projects + +List projects for a user. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - user_id: user_id + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/admin/user-projects-list-response.json + :language: javascript + + + + + + + + + + diff --git a/api-ref/source/image/v1/images-images-v1.inc b/api-ref/source/image/v1/images-images-v1.inc new file mode 100644 index 000000000..517990ca2 --- /dev/null +++ b/api-ref/source/image/v1/images-images-v1.inc @@ -0,0 +1,299 @@ +.. -*- rst -*- + +====== +Images +====== + + + + +Create image +============ + +.. rest_method:: POST /v1/images + +Registers a virtual machine (VM) image. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - createImage: createImage + - container_format: container_format + - disk_format: disk_format + - name: name + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - location: location + + + + + +List images +=========== + +.. rest_method:: GET /v1/images + +Lists all public VM images. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - name: name + - container_format: container_format + - disk_format: disk_format + - status: status + - size_min: size_min + - size_max: size_max + - changes-since: changes-since + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - name: name + - container_format: container_format + - disk_format: disk_format + - uri: uri + - images: images + - size: size + + + +Response Example +---------------- + +.. literalinclude:: ../samples/images-list-response.json + :language: javascript + + + + +Update image +============ + +.. rest_method:: PUT /v1/images/{image_id} + +Updates an image, uploads an image file, or updates metadata for an image. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - image_id: image_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - location: location + + + +Response Example +---------------- + +.. literalinclude:: + :language: javascript + + + + +Show image details and image binary +=================================== + +.. rest_method:: GET /v1/images/{image_id} + +Shows the image details as headers and the image binary in the body of the response. + + +Normal response codes: 200 +Error response codes:403, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - image_id: image_id + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/images-list-details-response.json + :language: javascript + + + + + +Show image metadata +=================== + +.. rest_method:: HEAD /v1/images/{image_id} + +Shows the image metadata information in the body of the response. + +The Image system does not return a response body for the HEAD +operation. + +Example requests and responses: + +- Show image metadata: + + :: + + http://glance.example.com/v1/images/03bc0a8b-659c-4de9-b6bd-13c6e86e6455 + + + + + :: + + X-Image-Meta-Checksum → 8a40c862b5735975d82605c1dd395796 + X-Image-Meta-Container_format → aki + X-Image-Meta-Created_at → 2016-01-06T03:22:20.000000 + X-Image-Meta-Deleted → false + X-Image-Meta-Disk_format → aki + X-Image-Meta-Id → 03bc0a8b-659c-4de9-b6bd-13c6e86e6455 + X-Image-Meta-Is_public → true + X-Image-Meta-Min_disk → 0 + X-Image-Meta-Min_ram → 0 + X-Image-Meta-Name → cirros-0.3.4-x86_64-uec-kernel + X-Image-Meta-Owner → 13cc6052265b41529e2fd0fc461fa8ef + X-Image-Meta-Protected → false + X-Image-Meta-Size → 4979632 + X-Image-Meta-Status → deactivated + X-Image-Meta-Updated_at → 2016-02-25T03:02:05.000000 + X-Openstack-Request-Id → req-d5208320-28ed-4c22-b628-12dc6456d983 + + +If the request succeeds, the operation returns the ``200`` response +code. + +If there is an image size mismatch detected with the ``X-Image- +Meta-Size``, the operation returns a ``409`` response code. + + +Normal response codes: 200 +Error response codes:404,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - image_id: image_id + + + + +Response Example +---------------- + +.. literalinclude:: + :language: javascript + + + + + + +Delete image +============ + +.. rest_method:: DELETE /v1/images/{image_id} + +Deletes an image. + +Error response codes:204, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - image_id: image_id + + + + + + +List images with details +======================== + +.. rest_method:: GET /v1/images/detail + +Lists all available images with details. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - name: name + - container_format: container_format + - disk_format: disk_format + - status: status + - size_min: size_min + - size_max: size_max + - changes-since: changes-since + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - previous: previous + - next: next + + + +Response Example +---------------- + +.. literalinclude:: ../samples/images-list-details-response.json + :language: javascript + + + diff --git a/api-ref/source/image/v1/members.inc b/api-ref/source/image/v1/members.inc new file mode 100644 index 000000000..cddbc5cff --- /dev/null +++ b/api-ref/source/image/v1/members.inc @@ -0,0 +1,98 @@ +.. -*- rst -*- + +======= +Members +======= + + + + +Add members to image +==================== + +.. rest_method:: PUT /v1/images/{image_id}/members/{owner_id} + +Adds one or more members to an image. + +If you omit the request body, this call adds the membership to the +image, leaves the existing memberships unmodified, and sets the +``can_share`` attribute to ``false`` for new memberships. + +Error response codes:204, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - can_share: can_share + - image_id: image_id + - owner_id: owner_id + +Request Example +--------------- + +.. literalinclude:: ../samples/image-members-add-request.json + :language: javascript + + + + + + + +Remove member +============= + +.. rest_method:: DELETE /v1/images/{image_id}/members/{owner_id} + +Removes a member from an image. + +Error response codes:204, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - member_id: member_id + - image_id: image_id + - owner_id: owner_id + + + + + + +Replace member +============== + +.. rest_method:: PUT /v1/images/{image_id}/members + +Replaces a membership list for an image. + +Error response codes:204, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - memberships: memberships + - can_share: can_share + - image_id: image_id + +Request Example +--------------- + +.. literalinclude:: ../samples/image-members-add-request.json + :language: javascript + + + + + + diff --git a/api-ref/source/image/v1/parameters.yaml b/api-ref/source/image/v1/parameters.yaml new file mode 100644 index 000000000..205c5872f --- /dev/null +++ b/api-ref/source/image/v1/parameters.yaml @@ -0,0 +1,188 @@ +# variables in header +{} + +# variables in path +image_id: + description: | + Image ID stored through the image API. Typically + a UUID. + in: path + required: false + type: string +owner_id: + description: | + Owner ID, which is the tenant ID. + in: path + required: false + type: string + +# variables in query +changes-since: + description: | + Filters the image list to those images that have + changed since a time stamp value. + in: query + required: false + type: string +container_format_1: + description: | + Filters the image list by a container format. A + valid value is ``aki``, ``ami``, ``ari``, ``bare``, ``docker``, + ``ova``, or ``ovf``. + in: query + required: false + type: string +disk_format_1: + description: | + Filters the image list by a disk format. A valid + value is ``aki``, ``ami``, ``ari``, ``iso``, ``qcow2``, ``raw``, + ``vhd``, ``vdi``, or ``vmdk``. + in: query + required: false + type: string +name_1: + description: | + Filters the image list by an image name, in + string format. + in: query + required: false + type: string +size_max: + description: | + Filters the image list by a maximum image size, + in bytes. + in: query + required: false + type: string +size_min: + description: | + Filters the image list by a minimum image size, + in bytes. + in: query + required: false + type: string +status: + description: | + Filters the image list by a status. A valid value + is ``queued``, ``saving``, ``active``, ``killed``, ``deleted``, or + ``pending_delete``. + in: query + required: false + type: string + +# variables in body +can_share: + description: | + Indicates whether the owner is authorized to + share the image. If the owner can share the image, this value is + ``true``. Otherwise, this value is ``false``. Specify the owner + ID, which is the tenant ID, is in the request URI. + in: body + required: true + type: boolean +container_format: + description: | + A container format defines the file format of the + file that contains the image and metadata about the actual VM. + For a VM image with a ``bare`` container format, the image is a + blob of unstructured data. You can set the container format to + one of these values: - ``aki`` Amazon kernel image. - ``ami`` + Amazon machine image. - ``ari`` Amazon ramdisk image. - + ``bare`` No container or metadata envelope for the image. - + ``docker`` Docker tar archive of the container filesystem. - + ``ova`` OVA container format. - ``ovf`` OVF container + format. + in: body + required: true + type: string +createImage: + description: | + Local file path where the image is stored. + in: body + required: false + type: string +disk_format: + description: | + The disk format of a VM image is the format of + the underlying disk image. Virtual appliance vendors have + different formats for laying out the information contained in a VM + disk image. You can set the disk format for your image to one of + these values: - ``aki`` An Amazon kernel image. - ``ami`` + An Amazon machine image. - ``ari`` An Amazon ramdisk image. - + ``iso`` An archive format for the data contents of an optical + disc, such as CDROM. - ``qcow2`` Supported by the QEMU + emulator that can expand dynamically and supports Copy on Write. + - ``raw`` Unstructured disk image format. - ``vhd`` VHD + disk format, a common disk format used by VM monitors from + VMWare, Xen, Microsoft, VirtualBox, and others. - ``vdi`` + Supported by VirtualBox VM monitor and the QEMU emulator. - + ``vmdk`` A common disk format that supported by many VM + monitors. + in: body + required: true + type: string +images: + description: | + A list of ``image`` objects. + in: body + required: true + type: array +location: + description: | + A URI location for the image. + format: uri + in: body + required: true + type: string +location_1: + format: uri + in: body + required: true + type: string +member_id: + description: | + The UUID of the member with which an image is + shared. + in: body + required: true + type: string +memberships: + in: body + required: true + type: string +name: + description: | + Name for the image. Note that the name of an + image is not unique to an Image service node. The API cannot + expect users to know the names of images that other users own. + in: body + required: true + type: string +next: + description: | + Show the next item in the list. + format: uri + in: body + required: false + type: string +previous: + description: | + Show the previous item in the list. + format: uri + in: body + required: false + type: string +size: + description: | + The size of the image, in bytes. + in: body + required: true + type: string +uri: + description: | + The exact location needed to get the metadata for + the image. + in: body + required: true + type: string + diff --git a/api-ref/source/image/v1/samples/image-members-add-request.json b/api-ref/source/image/v1/samples/image-members-add-request.json new file mode 100644 index 000000000..de4f6dcc3 --- /dev/null +++ b/api-ref/source/image/v1/samples/image-members-add-request.json @@ -0,0 +1,12 @@ +{ + "members": [ + { + "member_id": "tenant1", + "can_share": false + }, + { + "member_id": "tenant2", + "can_share": false + } + ] +} diff --git a/api-ref/source/image/v1/samples/image-memberships-list-response.json b/api-ref/source/image/v1/samples/image-memberships-list-response.json new file mode 100644 index 000000000..92bb003ae --- /dev/null +++ b/api-ref/source/image/v1/samples/image-memberships-list-response.json @@ -0,0 +1,11 @@ +{ + "memberships": [ + { + "member_id": "tenant1", + "can_share": false + }, + { + "...": "..." + } + ] +} diff --git a/api-ref/source/image/v1/samples/image-versions-response.json b/api-ref/source/image/v1/samples/image-versions-response.json new file mode 100644 index 000000000..0d5a6fda4 --- /dev/null +++ b/api-ref/source/image/v1/samples/image-versions-response.json @@ -0,0 +1,74 @@ +{ + "versions": [ + { + "status": "EXPERIMENTAL", + "id": "v3.0", + "links": [ + { + "href": "http://23.253.228.211:9292/v3/", + "rel": "self" + } + ] + }, + { + "status": "CURRENT", + "id": "v2.3", + "links": [ + { + "href": "http://23.253.228.211:9292/v2/", + "rel": "self" + } + ] + }, + { + "status": "SUPPORTED", + "id": "v2.2", + "links": [ + { + "href": "http://23.253.228.211:9292/v2/", + "rel": "self" + } + ] + }, + { + "status": "SUPPORTED", + "id": "v2.1", + "links": [ + { + "href": "http://23.253.228.211:9292/v2/", + "rel": "self" + } + ] + }, + { + "status": "SUPPORTED", + "id": "v2.0", + "links": [ + { + "href": "http://23.253.228.211:9292/v2/", + "rel": "self" + } + ] + }, + { + "status": "SUPPORTED", + "id": "v1.1", + "links": [ + { + "href": "http://23.253.228.211:9292/v1/", + "rel": "self" + } + ] + }, + { + "status": "SUPPORTED", + "id": "v1.0", + "links": [ + { + "href": "http://23.253.228.211:9292/v1/", + "rel": "self" + } + ] + } + ] +} diff --git a/api-ref/source/image/v1/samples/images-list-details-response.json b/api-ref/source/image/v1/samples/images-list-details-response.json new file mode 100644 index 000000000..5c506f290 --- /dev/null +++ b/api-ref/source/image/v1/samples/images-list-details-response.json @@ -0,0 +1,26 @@ +{ + "images": [ + { + "uri": "http://glance.example.com/images/71c675ab-d94f-49cd-a114-e12490b328d9", + "name": "Ubuntu 10.04 Plain 5GB", + "disk_format": "vhd", + "container_format": "ovf", + "size": "5368709120", + "checksum": "c2e5db72bd7fd153f53ede5da5a06de3", + "created_at": "2010-02-03 09:34:01", + "updated_at": "2010-02-03 09:34:01", + "deleted_at": "", + "status": "active", + "is_public": true, + "min_ram": 256, + "min_disk": 5, + "owner": null, + "properties": { + "distro": "Ubuntu 10.04 LTS" + } + }, + { + "...": "..." + } + ] +} diff --git a/api-ref/source/image/v1/samples/images-list-response.json b/api-ref/source/image/v1/samples/images-list-response.json new file mode 100644 index 000000000..6cd98315b --- /dev/null +++ b/api-ref/source/image/v1/samples/images-list-response.json @@ -0,0 +1,14 @@ +{ + "images": [ + { + "uri": "http://glance.example.com/images/71c675ab-d94f-49cd-a114-e12490b328d9", + "name": "Ubuntu 10.04 Plain", + "disk_format": "vhd", + "container_format": "ovf", + "size": "5368709120" + }, + { + "...": "..." + } + ] +} diff --git a/api-ref/source/image/v1/samples/shared-images-list-response.json b/api-ref/source/image/v1/samples/shared-images-list-response.json new file mode 100644 index 000000000..13b834cd2 --- /dev/null +++ b/api-ref/source/image/v1/samples/shared-images-list-response.json @@ -0,0 +1,11 @@ +{ + "shared_images": [ + { + "image_id": "71c675ab-d94f-49cd-a114-e12490b328d9", + "can_share": false + }, + { + "...": "..." + } + ] +} diff --git a/api-ref/source/image/v1/shared-images.inc b/api-ref/source/image/v1/shared-images.inc new file mode 100644 index 000000000..232e97fea --- /dev/null +++ b/api-ref/source/image/v1/shared-images.inc @@ -0,0 +1,46 @@ +.. -*- rst -*- + +============= +Shared images +============= + + + + +List shared images +================== + +.. rest_method:: GET /v1/shared-images/{owner_id} + +Lists the VM images that an owner shares. The owner ID is the tenant ID. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - owner_id: owner_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - can_share: can_share + + + +Response Example +---------------- + +.. literalinclude:: ../samples/shared-images-list-response.json + :language: javascript + + + diff --git a/api-ref/source/image/v1/versions.inc b/api-ref/source/image/v1/versions.inc new file mode 100644 index 000000000..63f44afa5 --- /dev/null +++ b/api-ref/source/image/v1/versions.inc @@ -0,0 +1,59 @@ +.. -*- rst -*- + +============ +API versions +============ + + + + +List API versions +================= + +.. rest_method:: GET /versions + +Shows details for the Image service API v1. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/image-versions-response.json + :language: javascript + + + + +List API versions +================= + +.. rest_method:: GET / + +Lists information about all Image service API versions. + +Error response codes:300, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + + diff --git a/api-ref/source/image/v2/image-data.inc b/api-ref/source/image/v2/image-data.inc new file mode 100644 index 000000000..93a5477cf --- /dev/null +++ b/api-ref/source/image/v2/image-data.inc @@ -0,0 +1,135 @@ +.. -*- rst -*- + +========================= +Image data (images, file) +========================= + +Uploads and downloads raw image data. + + +Upload binary image data +======================== + +.. rest_method:: PUT /v2/images/{image_id}/file + +(Since Image API v2.0) Uploads binary image data. + +Set the ``Content-Type`` request header to ``application/octet- +stream``. + +Example call: + +:: + + curl -i -X PUT -H "X-Auth-Token: $token" -H "Content-Type: application/octet-stream" \ + -d @/home/glance/ubuntu-12.10.qcow2 $image_url/v2/images/{image_id}/file + +Preconditions + +Before you can store binary image data, you must meet the following +preconditions: + +- The image must exist. + +- You must set the disk and container formats in the image. + +- The image status must be ``queued``. + +- Your image storage quota must be sufficient. + +- The size of the data that you want to store must not exceed the + size that the OpenStack Image service allows. + +Synchronous Postconditions + +- With correct permissions, you can see the image status as + ``active`` through API calls. + +- With correct access, you can see the stored data in the storage + system that OpenStack Image service manages. + +Troubleshooting + +- If you cannot store the data, either your request lacks required + information or you exceeded your allotted quota. Ensure that you + meet the preconditions and run the request again. If the request + fails again, review your API request. + +- The storage back ends for storing the data must have enough free + storage space to accommodate the size of the data. + +Error response codes:204, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - image_id: image_id + + + + + + +Download binary image data +========================== + +.. rest_method:: GET /v2/images/{image_id}/file + +(Since Image API v2.0) Downloads binary image data. + +Example call: ``curl -i -X GET -H "X-Auth-Token: $token" +$image_url/v2/images/{image_id}/file`` + +The response body contains the raw binary data that represents the +actual virtual disk. The ``Content-Type`` header contains the +``application/octet-stream`` value. The ``Content-MD5`` header +contains an MD5 checksum of the image data. Use this checksum to +verify the integrity of the image data. + + + +Preconditions + +- The images must exist. + +Synchronous Postconditions + +- You can download the binary image data in your machine if the + image has image data. + +- If image data exists, the call returns the HTTP ``200`` response + code. + +- If no image data exists, the call returns the HTTP ``204`` + response code. + + +Normal response codes: 200 +Error response codes:404,403,204, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - image_id: image_id + - Content-Range: Content-Range + + + + +Response Example +---------------- + +.. literalinclude:: + :language: javascript + + + + + + diff --git a/api-ref/source/image/v2/image-schemas.inc b/api-ref/source/image/v2/image-schemas.inc new file mode 100644 index 000000000..ec8ae5326 --- /dev/null +++ b/api-ref/source/image/v2/image-schemas.inc @@ -0,0 +1,145 @@ +.. -*- rst -*- + +======================================================= +Image schemas (schemas, image, images, member, members) +======================================================= + +Gets a JSON-schema document that represents an images or image +entity. + + +Show images schema +================== + +.. rest_method:: GET /v2/schemas/images + +(Since Images v2.0) Shows a JSON schema document that represents an images entity. + +An images entity is a container of image entities. + +The following schema is solely an example. Consider only the +response to the API call as authoritative. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/schemas-images-list-response.json + :language: javascript + + + + +Show image member schema +======================== + +.. rest_method:: GET /v2/schemas/member + +(Since Images v2.1) Shows a JSON schema document that represents an image member entity. + +The following schema is solely an example. Consider only the +response to the API call as authoritative. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/schema-image-member-show-response.json + :language: javascript + + + + +Show image members schema +========================= + +.. rest_method:: GET /v2/schemas/members + +(Since Images v2.1) Shows a JSON schema document that represents an image members entity. + +An image members entity is a container of image member entities. + +The following schema is solely an example. Consider only the +response to the API call as authoritative. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/schemas-image-members-list-response.json + :language: javascript + + + + +Show image schema +================= + +.. rest_method:: GET /v2/schemas/image + +(Since Images v2.0) Shows a JSON schema document that represents an image entity. + +The following schema is solely an example. Consider only the +response to the API call as authoritative. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/schema-image-show-response.json + :language: javascript + + + diff --git a/api-ref/source/image/v2/image-tags.inc b/api-ref/source/image/v2/image-tags.inc new file mode 100644 index 000000000..c258ac18c --- /dev/null +++ b/api-ref/source/image/v2/image-tags.inc @@ -0,0 +1,56 @@ +.. -*- rst -*- + +========================= +Image tags (images, tags) +========================= + +Adds and deletes image tags. + + +Add image tag +============= + +.. rest_method:: PUT /v2/images/{image_id}/tags/{tag} + +(Since Image API v2.0) Adds a tag to an image. + +Error response codes:404,204, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - image_id: image_id + - tag: tag + + + + + + + +Delete image tag +================ + +.. rest_method:: DELETE /v2/images/{image_id}/tags/{tag} + +(Since Image API v2.0) Deletes a tag from an image. + +Error response codes:404,204, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - image_id: image_id + - tag: tag + + + + + + diff --git a/api-ref/source/image/v2/images-images-v2.inc b/api-ref/source/image/v2/images-images-v2.inc new file mode 100644 index 000000000..ed3771abb --- /dev/null +++ b/api-ref/source/image/v2/images-images-v2.inc @@ -0,0 +1,585 @@ +.. -*- rst -*- + +=============== +Images (images) +=============== + +Creates, lists, updates, and deletes images. + +Image operations show all fields in the response body. Any field +with no value is set to ``null`` value (JSON null data type). + +The possible status values for images are: + +**Image status** + ++----------------+---------------------------------------------------------------------+ +| Status | Description | ++----------------+---------------------------------------------------------------------+ +| queued | The Image service reserved an image ID for the image in the | +| | registry but did not yet upload any image data. | ++----------------+---------------------------------------------------------------------+ +| saving | The Image service is currently uploading the raw data for the | +| | image. | ++----------------+---------------------------------------------------------------------+ +| active | The image is active and fully available in the Image service. | ++----------------+---------------------------------------------------------------------+ +| killed | An image data upload error occurred. | ++----------------+---------------------------------------------------------------------+ +| deleted | The Image service retains information about the image but the image | +| | is no longer available for use. | ++----------------+---------------------------------------------------------------------+ +| pending_delete | Similar to the ``deleted`` status. An image in this state is not | +| | recoverable. | ++----------------+---------------------------------------------------------------------+ + + +Update image +============ + +.. rest_method:: PATCH /v2/images/{image_id} + +(Since Image API v2.0) Updates an image. + +Depending on the referenced target location, this operation +performs one of these actions: + +**Image update actions** + ++--------------------------------------+----------------------------------------------------------+ +| Target location | Update action | ++--------------------------------------+----------------------------------------------------------+ +| An array index | The API inserts a new value into the array at the index. | ++--------------------------------------+----------------------------------------------------------+ +| An object member that does not exist | The API adds a member to the object. | ++--------------------------------------+----------------------------------------------------------+ +| An object member that exists | The member value is replaced. | ++--------------------------------------+----------------------------------------------------------+ + +The operation object must contain a ``value`` member that contains +the value to add. For example: + +.. code-block:: json + + { + "op": "add", + "path": "/a/b/c", + "value": [ + "foo", + "bar" + ] + } + +The target location must reference one of these values: + +- The root of the target document. The value is the entire content + of the target document. + +- A member value to add to an object. The API adds the value to the + object at the location. If the member already exists, the API + replaces it with the value. + +- An element to add to the array. The API adds the element value to + the array at the location. The API shifts any element that is at + or above the index one position to the right. The index must not + be greater than the number of elements in the array. If you use + the hyphen (-) character to index the end of the array, the API + appends the value to the array. See `JavaScript Object Notation + (JSON) Pointer `_. + +Because this operation adds to existing objects and arrays, its +target location often does not exist. + +The request body must conform to one of these media types: + +- ``application/openstack-images-v2.0-json-patch`` + +- ``application/openstack-images-v2.1-json-patch`` (since Image API + v2.2) + +You can also use the PATCH method to add or remove image +properties. + +For information about the PATCH method and the available media +types, see `Image API v2 HTTP PATCH media types +`_. + +Preconditions + +- When you add a location to or replace a location in the image, you + must set the ``disk_format`` and ``container_format`` parameters + in the image. + +- When you replace a location, that location must be previously set + in the image. + +Synchronous Postconditions + +- With correct permissions, you can view the updated values of the + attributes of the image. + +- After you add a location to an image that had no location and with + correct permissions, you can use API calls to view the image + status as ``active``. + +- After you remove all locations from the image and with correct + permissions, you can use API calls to view the image status as + ``queued``. + +Troubleshooting + +- If you cannot update locations, your request might be missing some + information. Make sure that you meet the preconditions and run + the request again. If the request fails again, review your API + request. + + +Normal response codes: 200 +Error response codes:404, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - url: url + - path: path + - op: op + - value: value + - metadata: metadata + - image_id: image_id + +Request Example +--------------- + +.. literalinclude:: ../samples/image-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - container_format: container_format + - min_ram: min_ram + - updated_at: updated_at + - file: file + - owner: owner + - id: id + - size: size + - self: self + - disk_format: disk_format + - direct_url: direct_url + - schema: schema + - status: status + - tags: tags + - visibility: visibility + - locations: locations + - min_disk: min_disk + - properties: properties + - name: name + - checksum: checksum + - created_at: created_at + - protected: protected + - metadata: metadata + + + +Response Example +---------------- + +.. literalinclude:: ../samples/image-update-response.json + :language: javascript + + + + + +Show image details +================== + +.. rest_method:: GET /v2/images/{image_id} + +(Since Image API v2.0) Shows details for an image. + +The response body contains a single image entity. + +Preconditions + +- The image must exist. + + +Normal response codes: 200 +Error response codes:404, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - image_id: image_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - container_format: container_format + - min_ram: min_ram + - updated_at: updated_at + - file: file + - owner: owner + - id: id + - size: size + - self: self + - disk_format: disk_format + - direct_url: direct_url + - schema: schema + - status: status + - tags: tags + - visibility: visibility + - locations: locations + - min_disk: min_disk + - properties: properties + - name: name + - checksum: checksum + - created_at: created_at + - protected: protected + - metadata: metadata + + + +Response Example +---------------- + +.. literalinclude:: ../samples/image-show-response.json + :language: javascript + + + + + +Delete image +============ + +.. rest_method:: DELETE /v2/images/{image_id} + +(Since Image API v2.0) Deletes an image. + +You cannot delete images with the ``protected`` attribute set to +``true`` (boolean). + +Preconditions + +- You can delete an image in any status except ``deleted``. + +- First, set the ``protected`` attribute to ``false`` (boolean). + Then, perform the delete. + +Synchronous Postconditions + +- The response is empty and returns the HTTP ``204`` response code. + +- The API deletes the image from the images index. + +- If the image stores binary image data in the storage node, the + OpenStack Image service deletes the data from the node. + +Troubleshooting + +- The call returns the HTTP ``403`` response code when the + ``protected`` attribute is set to ``true`` even if you have + correct permissions. Ensure that you meet the preconditions and + run the request again. If the request fails again, review your + API request. + +Error response codes:404,403,204, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - image_id: image_id + + + + + + + + +Reactivate image +================ + +.. rest_method:: POST /v2/images/{image_id}/actions/reactivate + +(Since Image API v2.0) Reactivates an image. + +The reactivate operation returns an error if the image status is +not ``active`` or ``deactivated``. + +Preconditions + +- The image must exist. + +Error response codes:404,204, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - image_id: image_id + + + + + + + +List images +=========== + +.. rest_method:: GET /v2/images + +(Since Image API v2.0) Lists public virtual machine (VM) images. + +Returns a subset of the larger collection of images and a link that +you can use to get the next set of images. You should always check +for the presence of a ``next`` link and use it as the URI in a +subsequent HTTP GET request. You should follow this pattern until a +``next`` link is no longer provided. The next link preserves any +query parameters that you send in your initial request. You can use +the ``first`` link to jump back to the first page of the +collection. If you prefer to paginate through images manually, use +the ``limit`` and ``marker`` parameters. + +The list operation accepts query parameters to filter the response. + +A client can provide direct comparison filters by using most image +attributes, such as ``name=Ubuntu``, ``visibility=public``, and so +on. A client cannot use tags or any ``link`` in the json-schema, +such as self, file, or schema, to filter the response. + +You can use the ``size_min`` and ``size_max`` query parameters to +filter images that are greater than or less than the image size. +The size, in bytes, is the size of an image on disk. + +For example, to filter the container to include only images that +are from 1 to 4 MB, set the ``size_min`` query parameter to +``1048576`` and the ``size_max`` query parameter to ``4194304``. + +You can list VM images that have a status of ``active``, +``queued``, or ``saving``. + +You can use query parameters to sort the results of this operation. + +- ``sort_key``. Sorts by an image attribute. Sorts in the natural + sorting direction of the image attribute. + +- ``sort_dir``. Sorts in a sort direction. + +- ``sort``. Sorts by one or more sets of attribute and sort + direction combinations. If you omit the sort direction in a set, + the default is ``desc``. + +To sort the response, use the ``sort_key`` and ``sort_dir`` query +parameters: + +.. code-block:: json + + GET /v2/images?sort_key=name + & + sort_dir=asc + & + sort_key=status + & + sort_dir=desc + +Alternatively, specify the ``sort`` query parameter: + +.. code-block:: json + + GET /v2/images?sort=name:asc,status:desc + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - limit: limit + - marker: marker + - name: name + - visibility: visibility + - member_status: member_status + - owner: owner + - status: status + - size_min: size_min + - size_max: size_max + - sort_key: sort_key + - sort_dir: sort_dir + - sort: sort + - tag: tag + - created_at: created_at + - updated_at: updated_at + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - min_ram: min_ram + - status: status + - virtual_size: virtual_size + - name: name + - tags: tags + - checksum: checksum + - created_at: created_at + - size: size + - disk_format: disk_format + - updated_at: updated_at + - owner: owner + - self: self + - min_disk: min_disk + - protected: protected + - visibility: visibility + - file: file + - container_format: container_format + - images: images + - schema: schema + - id: id + - first: first + + + +Response Example +---------------- + +.. literalinclude:: ../samples/images-list-response.json + :language: javascript + + + + +Create image +============ + +.. rest_method:: POST /v2/images + +(Since Image API v2.0) Creates a virtual machine (VM) image. + +The ``Location`` response header contains the URI for the image. +The response body contains the new image entity. + +Synchronous Postconditions + +- With correct permissions, you can see the image status as + ``queued`` through API calls. + +Error response codes:201, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - name: name + - tags: tags + - container_format: container_format + - min_ram: min_ram + - disk_format: disk_format + - visibility: visibility + - properties: properties + - protected: protected + - min_disk: min_disk + - id: id + +Request Example +--------------- + +.. literalinclude:: ../samples/image-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - min_ram: min_ram + - status: status + - virtual_size: virtual_size + - name: name + - tags: tags + - updated_at: updated_at + - checksum: checksum + - created_at: created_at + - disk_format: disk_format + - locations: locations + - visibility: visibility + - properties: properties + - self: self + - owner: owner + - protected: protected + - file: file + - container_format: container_format + - min_disk: min_disk + - size: size + - id: id + - schema: schema + + + + + +Deactivate image +================ + +.. rest_method:: POST /v2/images/{image_id}/actions/deactivate + +(Since Image API v2.0) Deactivates an image. + +If you try to download a deactivated image, the call returns the +``Forbidden (403)`` response code. Also, only administrative users +can view image locations for deactivated images. + +The deactivate operation returns an error if the image status is +not ``active`` or ``deactivated``. + +Preconditions + +- The image must exist. + +Error response codes:404,403,204, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - image_id: image_id + + + + + + + diff --git a/api-ref/source/image/v2/members.inc b/api-ref/source/image/v2/members.inc new file mode 100644 index 000000000..0448c6abb --- /dev/null +++ b/api-ref/source/image/v2/members.inc @@ -0,0 +1,307 @@ +.. -*- rst -*- + +========================= +Members (images, members) +========================= + +Creates, lists, updates, and deletes image members. + + +Show image member details +========================= + +.. rest_method:: GET /v2/images/{image_id}/members/{member_id} + +(Since Image API v2.2) Shows image member details. + +Response body is a single image member entity. + +Preconditions + +- The image must exist. + +- You must be the owner or a member of the image. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - image_id: image_id + - member_id: member_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - created_at: created_at + - updated_at: updated_at + - image_id: image_id + - member_id: member_id + - schema: schema + + + +Response Example +---------------- + +.. literalinclude:: ../samples/image-member-details-response.json + :language: javascript + + + + +Update image member +=================== + +.. rest_method:: PUT /v2/images/{image_id}/members/{member_id} + +(Since Image API v2.1) Sets the status for an image member. + +Preconditions + +- The images must exist. + +- You must be a member of the image. + +Synchronous Postconditions + +- If you update the member status to ``accepted`` and have the + correct permissions, you see the image in list images responses. + +- With correct permissions, you can make API calls to see the + updated member status of the image. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - status: status + - image_id: image_id + - member_id: member_id + +Request Example +--------------- + +.. literalinclude:: ../samples/image-member-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - created_at: created_at + - schema: schema + - updated_at: updated_at + - member_id: member_id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/image-member-update-response.json + :language: javascript + + + + +Delete image member +=================== + +.. rest_method:: DELETE /v2/images/{image_id}/members/{member_id} + +(Since Image API v2.1) Deletes a tenant ID from the member list of an image. + +Preconditions + +- The image must exist. + +- You must be the owner of the image. + +Synchronous Postconditions + +- The API removes the member from the image members. + +Troubleshooting + +- Even if you have correct permissions, if you are not the owner of + the image or you specify an incorrect image ID or member ID, the + call returns the HTTP ``403`` or ``404`` response code. Ensure + that you meet the preconditions and run the request again. If the + request fails again, review your API request URI. + +Error response codes:404,403,204, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - image_id: image_id + - member_id: member_id + + + + + + + + +List image members +================== + +.. rest_method:: GET /v2/images/{image_id}/members + +(Since Image API v2.1) Lists the tenants that share this image. + +If a user who shares this image makes this call, the member list +contains only information for that user. + +If a user who does not share this image makes this call, the call +returns the HTTP ``404`` response code. + +Preconditions + +- The image must exist. + +- You must be the owner or a member of the image. + + +Normal response codes: 200 +Error response codes:404, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - image_id: image_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - created_at: created_at + - updated_at: updated_at + - members: members + - schema: schema + + + +Response Example +---------------- + +.. literalinclude:: ../samples/image-members-list-response.json + :language: javascript + + + + + +Create image member +=================== + +.. rest_method:: POST /v2/images/{image_id}/members + +(Since Image API v2.1) Adds a tenant ID as an image member. + +This call accepts either the ``member_id`` or ``member`` attribute +in the request body. If you specify both attributes, the API uses +the ``member_id`` value and ignores the ``member`` value. Use of +the ``member`` attribute is supported but deprecated. Use of the +``member_id`` attribute is preferred. + +Preconditions + +- The images must exist. + +- You can add a member to a private image. + +- You must be the owner of the image. + +Synchronous Postconditions + +- With correct permissions, you can see the member status of the + image as ``pending`` through API calls. + +Troubleshooting + +- Even if you have correct permissions, if the ``visibility`` + attribute is set to ``public``, the request returns the HTTP + ``403`` response code. Ensure that you meet the preconditions and + run the request again. If the request fails again, review your + API request. + +- If the member is already a member for the image, the service + returns the ``Conflict (409)`` response code. If you meant to + specify a different member, run the request again. + + +Normal response codes: 200 +Error response codes:403,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - member: member + - member_id: member_id + - image_id: image_id + +Request Example +--------------- + +.. literalinclude:: ../samples/image-member-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - created_at: created_at + - schema: schema + - updated_at: updated_at + - member_id: member_id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/image-member-create-response.json + :language: javascript + + + + + diff --git a/api-ref/source/image/v2/metadef-resourcetype.inc b/api-ref/source/image/v2/metadef-resourcetype.inc new file mode 100644 index 000000000..5c218f5bb --- /dev/null +++ b/api-ref/source/image/v2/metadef-resourcetype.inc @@ -0,0 +1,169 @@ +.. -*- rst -*- + +========================================================================================== +Metadata definition resource types (since API v2.0) (metadefs, namespaces, resource_types) +========================================================================================== + +Lists resource types. Also, creates, lists, and removes resource +type associations in a namespace. + + +List resource types +=================== + +.. rest_method:: GET /v2/metadefs/resource_types + +Lists all resource types. + +You can assign metadata definition namespaces to these resource +types. See the metadata definition resource types section. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - created_at: created_at + - name: name + - updated_at: updated_at + + + +Response Example +---------------- + +.. literalinclude:: ../samples/metadef-resource-types-list-response.json + :language: javascript + + + + +Create resource type association +================================ + +.. rest_method:: POST /v2/metadefs/namespaces/{namespace_id}/resource_types + +Creates a resource type association in a namespace. + +Error response codes:201, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - prefix: prefix + - properties_target: properties_target + - name: name + - namespace_id: namespace_id + +Request Example +--------------- + +.. literalinclude:: ../samples/metadef-resource-type-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - created_at: created_at + - prefix: prefix + - properties_target: properties_target + - name: name + - updated_at: updated_at + + + + + +List resource type associations +=============================== + +.. rest_method:: GET /v2/metadefs/namespaces/{namespace_id}/resource_types + +Lists resource type associations in a namespace. + +The response body lists resource type association entities. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - namespace_id: namespace_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - created_at: created_at + - name: name + - updated_at: updated_at + + + +Response Example +---------------- + +.. literalinclude:: ../samples/metadef-resource-types-list-response.json + :language: javascript + + + + +Remove resource type association +================================ + +.. rest_method:: DELETE /v2/metadefs/namespaces/{namespace_id}/resource_types/{name} + +Removes a resource type association in a namespace. + +To remove an association, first make an update namespace request to +set the ``protected`` attribute to false (boolean) on the +namespace. Then, remove the association. If the operation succeeds, +the response returns the HTTP 204 status code. + +If you try to remove resource type associations in a namespace with +the ``protected`` attribute set to true (boolean), the operation +fails and the response returns the HTTP 403 error code. + +Error response codes:403,204, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - namespace_id: namespace_id + - name: name + + + + + + diff --git a/api-ref/source/image/v2/metadefs-namespaces-objects-v2.inc b/api-ref/source/image/v2/metadefs-namespaces-objects-v2.inc new file mode 100644 index 000000000..bccbe081b --- /dev/null +++ b/api-ref/source/image/v2/metadefs-namespaces-objects-v2.inc @@ -0,0 +1,236 @@ +.. -*- rst -*- + +============================================================================ +Metadata definition objects (since API v2.0) (metadefs, namespaces, objects) +============================================================================ + +Creates, lists, shows details for, updates, and deletes metadata +definition objects. + + +Show object definition +====================== + +.. rest_method:: GET /v2/metadefs/namespaces/{namespace_id}/objects/{object_name} + +Shows the definition for an object. + +The response body shows a single object entity. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - object_name: object_name + - namespace_id: namespace_id + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/metadef-object-details-response.json + :language: javascript + + + + +Update object definition +======================== + +.. rest_method:: PUT /v2/metadefs/namespaces/{namespace_id}/objects/{object_name} + +Updates an object definition in a namespace. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - object_name: object_name + - namespace_id: namespace_id + +Request Example +--------------- + +.. literalinclude:: ../samples/metadef-object-update-request.json + :language: javascript + + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/metadef-object-update-response.json + :language: javascript + + + + +Delete property definition +========================== + +.. rest_method:: DELETE /v2/metadefs/namespaces/{namespace_id}/objects/{object_name} + +Deletes an object definition from a namespace. + +To delete a protected object from a namespace, you must first set +the ``protected`` attribute to false (boolean) on the namespace and +then perform the delete. If you try to delete a protected object, +the call returns the ``403`` response code. + +When you successfully delete an object from a namespace, the +response is empty and the response code is ``204``. + +Error response codes:403,204, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - object_name: object_name + - namespace_id: namespace_id + + + + + + + +Create object +============= + +.. rest_method:: POST /v2/metadefs/namespaces/{namespace_id}/objects + +Creates an object definition in a namespace. + +Error response codes:201, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - display_name: display_name + - description: description + - objects: objects + - namespace: namespace + - visibility: visibility + - protected: protected + - resource_type_associations: resource_type_associations + - properties: properties + - namespace_id: namespace_id + +Request Example +--------------- + +.. literalinclude:: ../samples/metadef-object-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - display_name: display_name + - description: description + - objects: objects + - namespace: namespace + - visibility: visibility + - protected: protected + - resource_type_associations: resource_type_associations + - properties: properties + + + + + +List object definitions +======================= + +.. rest_method:: GET /v2/metadefs/namespaces/{namespace_id}/objects + +Lists object definitions in a namespace. + +Returns a subset of the larger collection of namespaces and a link +that you can use to get the next set of namespaces. You should +always check for the presence of a ``next`` link and use it as the +URI in a subsequent HTTP GET request. You should follow this +pattern until a ``next`` link is no longer provided. The next link +preserves any query parameters that you send in your initial +request. You can use the ``first`` link to jump back to the first +page of the collection. If you prefer to paginate through +namespaces manually, use the ``limit`` and ``marker`` parameters. + +Use the ``resource_types`` and ``visibility`` query parameters to +filter the response. + +For example, set the ``resource_types`` query parameter to +``OS::Glance::Image,OS::Nova::Flavor`` to filter the response to +include only namespaces that are associated with the given resource +types. + +You can sort the results of this operation by using the +``sort_key`` and ``sort_dir`` parameters. The API uses the natural +sorting of whatever namespace attribute is provided as the +``sort_key``. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - namespace_id: namespace_id + - visibility: visibility + - resource_types: resource_types + - sort_key: sort_key + - sort_dir: sort_dir + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - display_name: display_name + - description: description + - namespace: namespace + - visibility: visibility + - protected: protected + - namespaces: namespaces + - resource_type_associations: resource_type_associations + + + +Response Example +---------------- + +.. literalinclude:: ../samples/metadef-objects-list-response.json + :language: javascript + + + diff --git a/api-ref/source/image/v2/metadefs-namespaces-properties-v2.inc b/api-ref/source/image/v2/metadefs-namespaces-properties-v2.inc new file mode 100644 index 000000000..78adf2bd5 --- /dev/null +++ b/api-ref/source/image/v2/metadefs-namespaces-properties-v2.inc @@ -0,0 +1,318 @@ +.. -*- rst -*- + +================================================================================== +Metadata definition properties (since API v2.0) (metadefs, namespaces, properties) +================================================================================== + +Creates, lists, shows details for, updates, and deletes metadata +definition properties. + + +Show property definition +======================== + +.. rest_method:: GET /v2/metadefs/namespaces/{namespace_id}/properties/{property_name} + +Shows the definition for a property. + +If you use the ``resource_type`` query parameter, the API removes +the prefix of the resource type from the property name before it +submits the query. This enables you to look for a property name +that starts with a prefix from an associated resource type. + +The response body shows a single property entity. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - property_name: property_name + - namespace_id: namespace_id + - property_name: property_name + - resource_type: resource_type + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - additionalItems: additionalItems + - description: description + - title: title + - default: default + - items: items + - operators: operators + - enum: enum + - maximum: maximum + - minItems: minItems + - readonly: readonly + - minimum: minimum + - maxItems: maxItems + - maxLength: maxLength + - uniqueItems: uniqueItems + - pattern: pattern + - type: type + - minLength: minLength + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/metadef-property-details-response.json + :language: javascript + + + + +Update property definition +========================== + +.. rest_method:: PUT /v2/metadefs/namespaces/{namespace_id}/properties/{property_name} + +Updates a property definition. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - additionalItems: additionalItems + - description: description + - title: title + - default: default + - items: items + - operators: operators + - enum: enum + - maximum: maximum + - minItems: minItems + - readonly: readonly + - minimum: minimum + - property_name: property_name + - maxItems: maxItems + - maxLength: maxLength + - uniqueItems: uniqueItems + - pattern: pattern + - type: type + - minLength: minLength + - namespace_id: namespace_id + - property_name: property_name + +Request Example +--------------- + +.. literalinclude:: ../samples/metadef-property-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - additionalItems: additionalItems + - description: description + - title: title + - default: default + - items: items + - operators: operators + - enum: enum + - maximum: maximum + - minItems: minItems + - readonly: readonly + - minimum: minimum + - maxItems: maxItems + - maxLength: maxLength + - uniqueItems: uniqueItems + - pattern: pattern + - type: type + - minLength: minLength + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/metadef-property-update-response.json + :language: javascript + + + + +Remove property definition +========================== + +.. rest_method:: DELETE /v2/metadefs/namespaces/{namespace_id}/properties/{property_name} + +Removes a property definition in a namespace. + +To remove a property, first make an update namespace request to set +the ``protected`` attribute to false (boolean) on the namespace. +Then, remove the property. If the operation succeeds, the response +returns the HTTP 204 status code. + +If you try to remove a property in a namespace with the +``protected`` attribute set to true (boolean), the operation fails +and the response returns the HTTP 403 error code. + +Error response codes:403,204, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - property_name: property_name + - namespace_id: namespace_id + - property_name: property_name + + + + + + + +Create property +=============== + +.. rest_method:: POST /v2/metadefs/namespaces/{namespace_id}/properties + +Creates a property definition in a namespace. + +The schema is a subset of the JSON property definition schema. + +Error response codes:201, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - additionalItems: additionalItems + - description: description + - title: title + - default: default + - items: items + - operators: operators + - enum: enum + - maximum: maximum + - minItems: minItems + - readonly: readonly + - minimum: minimum + - maxItems: maxItems + - maxLength: maxLength + - uniqueItems: uniqueItems + - pattern: pattern + - type: type + - minLength: minLength + - name: name + - namespace_id: namespace_id + +Request Example +--------------- + +.. literalinclude:: ../samples/metadef-property-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - additionalItems: additionalItems + - description: description + - title: title + - default: default + - items: items + - operators: operators + - enum: enum + - maximum: maximum + - minItems: minItems + - readonly: readonly + - minimum: minimum + - maxItems: maxItems + - maxLength: maxLength + - uniqueItems: uniqueItems + - pattern: pattern + - type: type + - minLength: minLength + - name: name + + + + + +List property definitions +========================= + +.. rest_method:: GET /v2/metadefs/namespaces/{namespace_id}/properties + +Lists property definitions in a namespace. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - namespace_id: namespace_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - additionalItems: additionalItems + - description: description + - title: title + - default: default + - items: items + - operators: operators + - enum: enum + - maximum: maximum + - minItems: minItems + - readonly: readonly + - minimum: minimum + - maxItems: maxItems + - maxLength: maxLength + - uniqueItems: uniqueItems + - pattern: pattern + - type: type + - properties: properties + - minLength: minLength + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/metadef-properties-list-response.json + :language: javascript + + + diff --git a/api-ref/source/image/v2/metadefs-namespaces-tags-v2.inc b/api-ref/source/image/v2/metadefs-namespaces-tags-v2.inc new file mode 100644 index 000000000..c23252d24 --- /dev/null +++ b/api-ref/source/image/v2/metadefs-namespaces-tags-v2.inc @@ -0,0 +1,276 @@ +.. -*- rst -*- + +====================================================================== +Metadata definition tags (since API v2.0) (metadefs, namespaces, tags) +====================================================================== + +Creates, lists, shows details for, updates, and deletes metadata +definition tags. + + +Add tag definition +================== + +.. rest_method:: POST /v2/metadefs/namespaces/tags/{namespace_id}/{tag_name} + +Adds a tag to the list of namespace tag definitions. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tag_name: tag_name + - namespace_id: namespace_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/metadef-tag-add-response.json + :language: javascript + + + + +Get tag definition +================== + +.. rest_method:: GET /v2/metadefs/namespaces/tags/{namespace_id}/{tag_name} + +Gets a definition for a tag. + +The response body shows a single tag entity. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tag_name: tag_name + - namespace_id: namespace_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/metadef-tag-details-response.json + :language: javascript + + + + +Update tag definition +===================== + +.. rest_method:: PUT /v2/metadefs/namespaces/tags/{namespace_id}/{tag_name} + +Renames a tag definition. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tag_name: tag_name + - namespace_id: namespace_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/metadef-tag-update-response.json + :language: javascript + + + + +Delete tag definition +===================== + +.. rest_method:: DELETE /v2/metadefs/namespaces/tags/{namespace_id}/{tag_name} + +Deletes a tag definition within a namespace. + +You cannot delete tags in a namespace with the 'protected' +attribute set to true (boolean); the response returns the HTTP 403 +status code. + +You must first set the ``protected`` attribute to false (boolean) +on the namespace and then perform the delete. The response is empty +and returns the HTTP 204 status code. + +Error response codes:403,204, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tag_name: tag_name + - namespace_id: namespace_id + + + + + + + +Create tags +=========== + +.. rest_method:: POST /v2/metadefs/namespaces/tags/{namespace_id} + +Creates one or more tag definitions in a namespace. + +Error response codes:201, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - namespace: namespace + - name: name + - tags: tags + - namespace_id: namespace_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - name: name + - tags: tags + + + + + +List tags +========= + +.. rest_method:: GET /v2/metadefs/namespaces/tags/{namespace_id} + +Lists the tag definitions within a namespace. + +To manually paginate through the list of tags, use the ``limit`` +and ``marker`` parameters. + +To sort the results of this operation use the ``sort_key`` and +``sort_dir`` parameters. The API uses the natural sort order of the +tag attribute of the ``sort_key`` parameter. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - namespace: namespace + - namespace_id: namespace_id + - limit: limit + - marker: marker + - sort_key: sort_key + - sort_dir: sort_dir + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - name: name + - tags: tags + + + +Response Example +---------------- + +.. literalinclude:: ../samples/metadef-tags-list-response.json + :language: javascript + + + + +Delete all tag definitions +========================== + +.. rest_method:: DELETE /v2/metadefs/namespaces/tags/{namespace_id} + +Deletes all tag definitions within a namespace. + +You cannot delete tags in a namespace with the 'protected' +attribute set to true (boolean); the response returns the HTTP 403 +status code. + +You must first set the ``protected`` attribute to false (boolean) +on the namespace and then perform the delete. The response is empty +and returns the HTTP 204 status code. + +Error response codes:403,204, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - namespace: namespace + - namespace_id: namespace_id + + + + + + diff --git a/api-ref/source/image/v2/metadefs-namespaces-v2.inc b/api-ref/source/image/v2/metadefs-namespaces-v2.inc new file mode 100644 index 000000000..7bc28d638 --- /dev/null +++ b/api-ref/source/image/v2/metadefs-namespaces-v2.inc @@ -0,0 +1,234 @@ +.. -*- rst -*- + +====================================================================== +Metadata definition namespaces (since API v2.0) (metadefs, namespaces) +====================================================================== + +Creates, lists, shows details for, updates, and deletes metadata +definition namespaces. Defines namespaces that can contain property +definitions, object definitions, and resource type associations. + + +Create namespace +================ + +.. rest_method:: POST /v2/metadefs/namespaces + +Creates a namespace. + +The ``Location`` response header contains the newly-created URI for +the namespace. + +Error response codes:201, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + +Request Example +--------------- + +.. literalinclude:: ../samples/metadef-namespace-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - display_name: display_name + - description: description + - hypervisor_type: hypervisor_type + - enum: enum + - namespace: namespace + - visibility: visibility + - objects: objects + - protected: protected + - resource_type_associations: resource_type_associations + - properties: properties + + + + + +List namespaces +=============== + +.. rest_method:: GET /v2/metadefs/namespaces + +Lists public namespaces. + +Returns a subset in the larger collection of namespaces and a link +that you can use to get the next set of namespaces. Check for the +presence of a ``next`` link and use it as the URI in a subsequent +HTTP GET request. Follow this pattern until a ``next`` link is no +longer provided. The ``next`` link preserves any query parameters +that you send in your initial request. You can use the ``first`` +link to return to the first page in the collection. If you prefer +to paginate through namespaces manually, use the ``limit`` and +``marker`` parameters. + +The list operation accepts the ``resource_types`` and +``visibility`` query parameters, which you can use to filter the +response. + +To sort the results of this operation, use the ``sort_key`` and +``sort_dir`` parameters. The API uses the natural sorting order in +the namespace attribute that you provide as the ``sort_key`` +parameter. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - limit: limit + - marker: marker + - visibility: visibility + - resource_types: resource_types + - sort_key: sort_key + - sort_dir: sort_dir + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - display_name: display_name + - description: description + - namespace: namespace + - visibility: visibility + - protected: protected + - namespaces: namespaces + - resource_type_associations: resource_type_associations + + + +Response Example +---------------- + +.. literalinclude:: ../samples/metadef-namespaces-list-response.json + :language: javascript + + + + +Get namespaces details +====================== + +.. rest_method:: GET /v2/metadefs/namespaces/{namespace_id} + +Gets details for a namespace. + +The response body shows a single namespace entity with all details +including properties and objects. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - namespace_id: namespace_id + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/metadef-namespace-details-response.json + :language: javascript + + + + +Update namespace +================ + +.. rest_method:: PUT /v2/metadefs/namespaces/{namespace_id} + +Updates a namespace. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - namespace_id: namespace_id + +Request Example +--------------- + +.. literalinclude:: ../samples/metadef-namespace-update-request.json + :language: javascript + + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/metadef-namespace-update-response.json + :language: javascript + + + + +Delete namespace +================ + +.. rest_method:: DELETE /v2/metadefs/namespaces/{namespace_id} + +Deletes a namespace and its properties, objects, and any resource type associations. + +You cannot delete namespaces with the ``protected`` attribute set +to ``true`` (boolean); the response returns the HTTP ``403`` +response code. + +To delete a namespace, you must first make an update namespace +request to set the ``protected`` attribute to false (boolean) on +the namespace. Then, delete the namespace. + +A successful operation returns the HTTP ``204`` response code. + +If you try to remove a namespace with the ``protected`` attribute +set to true (boolean), the operation fails and the response returns +the HTTP ``403`` response code. + +Error response codes:403,204, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - namespace_id: namespace_id + + + + + + diff --git a/api-ref/source/image/v2/os-tasks-v2.inc b/api-ref/source/image/v2/os-tasks-v2.inc new file mode 100644 index 000000000..fd5d4b8d7 --- /dev/null +++ b/api-ref/source/image/v2/os-tasks-v2.inc @@ -0,0 +1,120 @@ +.. -*- rst -*- + +============================== +Tasks (since API v2.2) (tasks) +============================== + +Creates, lists, and shows details for tasks. + + +List tasks +========== + +.. rest_method:: GET /v2/tasks + +Lists tasks. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - sort_dir: sort_dir + - sort_key: sort_key + - type: type + - status: status + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - tasks: tasks + - type: type + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/tasks-list-response.json + :language: javascript + + + + +Create task +=========== + +.. rest_method:: POST /v2/tasks + +Creates a task. + +Error response codes:201, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + +Request Example +--------------- + +.. literalinclude:: ../samples/task-create-request.json + :language: javascript + + + + + + + +Show task details +================= + +.. rest_method:: GET /v2/tasks/{task_id} + +Shows details for a task. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - task_id: task_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - type: type + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/task-show-response.json + :language: javascript + + + diff --git a/api-ref/source/image/v2/parameters.yaml b/api-ref/source/image/v2/parameters.yaml new file mode 100644 index 000000000..fa7474f81 --- /dev/null +++ b/api-ref/source/image/v2/parameters.yaml @@ -0,0 +1,1039 @@ +# variables in header +Content-Range: + description: | + The content range of image data. For details, see + `Hypertext Transfer Protocol (HTTP/1.1): Range Requests + `_. + in: header + required: false + type: string +location: + description: | + The URL to access the image file from the + external store. + in: header + required: true + type: string + +# variables in path +image_id: + description: | + The UUID of the image. + in: path + required: false + type: string +member_id_1: + description: | + The ID of the image member. An image member is a + tenant with whom the image is shared. + in: path + required: false + type: string +name_4: + description: | + Name of the resource type. + in: path + required: false + type: string +namespace_id: + description: | + The UUID of the namespace. + in: path + required: false + type: string +object_name: + description: | + The name of the object. + in: path + required: false + type: string +property_name: + description: | + The name of the property. + in: path + required: false + type: string +tag: + description: | + The image tag. + in: path + required: false + type: string +tag_name: + description: | + The name of the tag. + in: path + required: false + type: string +task_id: + description: | + The UUID of the task. + in: path + required: false + type: string + +# variables in query +created_at_1: + description: | + Filters the response by the date and time when the resource 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``. + + If you omit the ``created_at`` date and time stamp, its value is + ``null``. + in: query + required: false + type: string +limit: + description: | + Requests a page size of items. Returns a number + of items up to a limit value. Use the ``limit`` parameter to make + an initial limited request and use the ID of the last-seen item + from the response as the ``marker`` parameter value in a + subsequent limited request. + in: query + required: false + type: integer +marker: + description: | + The ID of the last-seen item. Use the ``limit`` + parameter to make an initial limited request and use the ID of the + last-seen item from the response as the ``marker`` parameter value + in a subsequent limited request. + in: query + required: false + type: string +member_status: + description: | + Filters the response by a member status. A valid + value is ``accepted``, ``pending``, ``rejected``, or ``all``. + Default is ``accepted``. + in: query + required: false + type: string +name_5: + description: | + Filters the response by a name, as a string. A + valid value is the name of an image. + in: query + required: false + type: string +owner_1: + description: | + Filters the response by a tenant ID. Shows only + images that are shared with this tenant owner. + in: query + required: false + type: string +resource_type: + description: | + Filters the response by property names that start + with a prefix from an associated resource type. The API removes + the prefix of the resource type from the property name in the + response. + in: query + required: false + type: integer +resource_types: + description: | + Filters the response by a resource type or types. + Use the comma (``,``) character to separate multiple values. For + example, ``OS::Glance::Image,OS::Nova::Flavor`` shows only + namespaces for these resource types. + in: query + required: false + type: integer +size_max: + description: | + Filters the response by a maximum image size, in + bytes. + in: query + required: false + type: string +size_min: + description: | + Filters the response by a minimum image size, in + bytes. + in: query + required: false + type: string +sort: + description: | + Sorts the response by one or more attribute and sort direction + combinations. You can also set multiple sort keys and directions. + Default direction is ``desc``. + + Use the comma (``,``) character to separate multiple values. For + example: + + .. code-block:: json + + GET /v2/images?sort=name:asc,status:desc + in: query + required: false + type: string +sort_dir: + description: | + Sorts the response by a set of one or more sort + direction and attribute (``sort_key``) combinations. A valid value + for the sort direction is ``asc`` (ascending) or ``desc`` + (descending). If you omit the sort direction in a set, the default + is ``desc``. + in: query + required: false + type: string +sort_key: + description: | + Sorts the response by an attribute, such as + ``name``, ``id``, or ``updated_at``. Default is ``created_at``. + The API uses the natural sorting direction of the ``sort_key`` + image attribute. + in: query + required: false + type: string +status_1: + description: | + Filters the response by an image status. A valid + value is ``queued``, ``saving``, ``active``, ``killed``, + ``deleted``, or ``pending_delete``. + in: query + required: false + type: integer +status_2: + description: | + Filters the response by a task status. A valid + value is ``pending``, ``processing``, ``success``, or ``failure``. + in: query + required: false + type: string +tag_1: + description: | + Filters the response by an image tag. For + example, ``?tag="cirros"``. + in: query + required: false + type: string +type_1: + description: | + Filters the response by a task type. A valid + value is ``import``. + in: query + required: false + type: string +updated_at_1: + description: | + Filters the response by the date and time when the resource was + updated. + + The date and time stamp format is `ISO 8601 + `_: + + :: + + CCYY-MM-DDThh:mm:ss±hh:mm + + The ``±hh:mm`` value, if included, is the time zone as an offset + from UTC. + + For example, ``2015-08-27T09:49:58-05:00``. + + If you omit the time zone, the UTC time zone is assumed. + + If you omit the ``updated_at`` date and time stamp, its value is + ``null``. + in: query + required: false + type: string +visibility_3: + description: | + Filters the response by an image visibility value + or values. Use the comma (``,``) character to separate multiple + values. A valid value is ``public``, ``private``, or ``shared``. + If you omit this parameter, the response shows ``public``, + ``private``, and ``shared`` images with a member status of + ``accepted``. + in: query + required: false + type: string +visibility_4: + description: | + Filters the response by a namespace visibility + value. A valid value is ``public`` or ``private``. If you omit + this parameter, the response shows ``public`` and ``private`` + namespaces. + in: query + required: false + type: string + +# variables in body +additionalItems: + description: | + Describes extra items, if you use tuple typing . + If the value of ``items`` is an array (tuple typing) and the + instance is longer than the list of schemas in ``items``, the + additional items are described by the schema in this property. If + this value is ``false``, the instance cannot be longer than the + list of schemas in ``items``. If this value is ``true``, that is + equivalent to the empty schema (anything goes). + in: body + required: false + type: string +additionalItems_1: + description: | + Describes extra items, if you use tuple typing . + If the value of ``items`` is an array (tuple typing) and the + instance is longer than the list of schemas in ``items``, the + additional items are described by the schema in this property. If + this value is ``false``, the instance cannot be longer than the + list of schemas in ``items``. If this value is ``true``, that is + equivalent to the empty schema (anything goes). + in: body + required: true + type: string +checksum: + description: | + Hash that is used over the image data. The Image + service uses this value for verification. The value might be + ``null`` (JSON null data type). + in: body + required: true + type: string +container_format: + description: | + Format of the container. A valid value is + ``ami``, ``ari``, ``aki``, ``bare``, ``ovf``, ``ova``, or + ``docker``. + in: body + required: false + type: string +container_format_1: + description: | + The container format of the image. The value + might be ``null`` (JSON null data type). + in: body + required: true + type: string +created_at: + description: | + The date and time when the resource was created. + + The date and time stamp format is `ISO 8601 + `_: + + :: + + CCYY-MM-DDThh:mm:ss±hh:mm + + For example, ``2015-08-27T09:49:58-05:00``. + + The ``±hh:mm`` value, if included, is the time zone as an offset + from UTC. + in: body + required: true + type: string +default: + description: | + Default property description. + in: body + required: false + type: string +default_1: + description: | + Default property description. + in: body + required: true + type: string +description: + description: | + The description of the namespace. + in: body + required: true + type: string +description_1: + description: | + Detailed description for the namespace. + in: body + required: false + type: string +description_2: + description: | + The description of the property. + in: body + required: false + type: string +description_3: + description: | + The description of the property. + in: body + required: true + type: string +direct_url: + description: | + The URL to access the image file kept in external + store. It appears when you set the ``show_image_direct_url`` + option to ``true`` in the Image service ' s configuration file. + in: body + required: true + type: string +disk_format: + description: | + The format of the disk. A valid value is ``ami``, + ``ari``, ``aki``, ``vhd``, ``vmdk``, ``raw``, ``qcow2``, ``vdi``, + or ``iso``. + in: body + required: false + type: string +disk_format_1: + description: | + The disk format of the image. The value might be + ``null`` (JSON null data type). + in: body + required: true + type: string +display_name: + description: | + User-friendly name to use in a UI to display the + namespace name. + in: body + required: true + type: string +display_name_1: + description: | + User-friendly name to use in a UI to display the + namespace name. + in: body + required: false + type: string +enum: + description: | + Enumerated list of property values. + in: body + required: true + type: array +enum_1: + description: | + Enumerated list of property values. + in: body + required: false + type: array +file: + description: | + The URL for the virtual machine image file. + in: body + required: true + type: string +first: + description: | + The URL for the first page of response. + in: body + required: true + type: string +hypervisor_type: + description: | + Hypervisor type of property values. + in: body + required: true + type: object +id: + description: | + A unique, user-defined image UUID, in the format: + + :: + + nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnnn + + Where **n** is a hexadecimal digit from 0 to f, or F. + + For example: + + :: + + b2173dd3-7ad6-4362-baa6-a68bce3565cb + + If you omit this value, the API generates a UUID for the image. + in: body + required: false + type: string +id_1: + description: | + The UUID of the image. + in: body + required: true + type: string +id_2: + description: | + The UUID of the task. + in: body + required: true + type: string +images: + description: | + A list of ``image`` objects. + in: body + required: true + type: array +items: + description: | + Schema for the items in an array. + in: body + required: false + type: string +items_1: + description: | + Schema for the items in an array. + in: body + required: true + type: string +locations: + description: | + A list of URLs to access the image file in + external store. This list appears if the + ``show_multiple_locations`` option is set to ``true`` in the Image + service ' s configuration file. + in: body + required: true + type: array +maxItems: + description: | + Maximum length of an array. + in: body + required: false + type: string +maxItems_1: + description: | + Maximum length of an array. + in: body + required: true + type: string +maxLength: + description: | + Maximum allowed string length. + in: body + required: false + type: string +maxLength_1: + description: | + Maximum allowed string length. + in: body + required: true + type: string +maximum: + description: | + Maximum allowed numerical value. + in: body + required: false + type: string +maximum_1: + description: | + Maximum allowed numerical value. + in: body + required: true + type: string +member: + description: | + The ID of the image member. An image member is a + tenant with whom the image is shared. This call accepts either + the ``member_id`` or ``member`` attribute in the request body. If + you specify both attributes, the API uses the ``member_id`` value + and ignores the ``member`` value. Use of the ``member`` attribute + is supported but deprecated. Use of the ``member_id`` attribute is + preferred. + in: body + required: false + type: string +member_id: + description: | + The ID of the image member. An image member is a + tenant with whom the image is shared. This call accepts either + the ``member_id`` or ``member`` attribute in the request body. If + you specify both attributes, the API uses the ``member_id`` value + and ignores the ``member`` value. Use of the ``member`` attribute + is supported but deprecated. Use of the ``member_id`` attribute is + preferred. + in: body + required: false + type: string +members: + description: | + A list of ``member`` objects. Each ``member`` + object describes a member with whom this image is being shared. + in: body + required: true + type: array +metadata: + description: | + The location metadata. + in: body + required: true + type: object +minItems: + description: | + Minimum length of an array. + in: body + required: false + type: string +minItems_1: + description: | + Minimum length of an array. + in: body + required: true + type: string +minLength: + description: | + Minimum allowed string length. + in: body + required: false + type: string +minLength_1: + description: | + Minimum allowed string length. + in: body + required: true + type: string +min_disk: + description: | + Amount of disk space in GB that is required to + boot the image. + in: body + required: false + type: integer +min_disk_1: + description: | + The minimum disk size in GB that is required to + boot the image. The value might be ``null`` (JSON null data + type). + in: body + required: true + type: integer +min_ram: + description: | + Amount of RAM in MB that is required to boot the + image. + in: body + required: false + type: integer +min_ram_1: + description: | + The minimum amount of RAM in MB that is required + to boot the image. The value might be ``null`` (JSON null data + type). + in: body + required: true + type: integer +minimum: + description: | + Minimum allowed numerical value. + in: body + required: false + type: string +minimum_1: + description: | + Minimum allowed numerical value. + in: body + required: true + type: string +name: + description: | + The name of the tag. + in: body + required: true + type: string +name_1: + description: | + Name for the image. Note that the name of an + image is not unique to an Image service node. The API cannot + expect users to know the names of images that other users own. + in: body + required: false + type: string +name_2: + description: | + The name of the property. + in: body + required: true + type: string +name_3: + description: | + Name of the resource type. + in: body + required: true + type: string +name_6: + description: | + The name of the resource type. + in: body + required: true + type: string +name_7: + description: | + The name of the image. Value might be ``null`` + (JSON null data type). + in: body + required: true + type: string +namespace: + description: | + The namespace is unique across all users. + in: body + required: true + type: string +namespaces: + description: | + A list of ``namespace`` objects. + in: body + required: true + type: array +objects: + description: | + One or more object definitions of the namespace. + in: body + required: true + type: string +objects_1: + description: | + Namespace object definitions, if any. + in: body + required: false + type: object +op: + description: | + The operation. A valid value is: - ``add``. Adds + a property or location in the image. - ``remove``. Removes an + image ' s property or location. - ``replace``. Replaces the value + of an image ' s property or location. + in: body + required: true + type: string +operators: + description: | + Operators property description. + in: body + required: false + type: string +operators_1: + description: | + Operators property description. + in: body + required: true + type: string +owner: + description: | + The ID of the owner, or tenant, of the image. + The value might be ``null`` (JSON null data type). + in: body + required: true + type: string +path: + description: | + An image property. + in: body + required: true + type: string +pattern: + description: | + A regular expression ( `ECMA 262 + `_ ) that a + string value must match. + in: body + required: false + type: string +pattern_1: + description: | + A regular expression (ECMA 262) that a string + value must match. + in: body + required: true + type: string +prefix: + description: | + Prefix for any properties in the namespace that + you want to apply to the resource type. If you specify a prefix, + you must append a prefix separator, such as the colon (``:``) + character. + in: body + required: false + type: string +properties: + description: | + The image properties, if any. + in: body + required: false + type: object +properties_1: + description: | + One or more property definitions for the + namespace. + in: body + required: true + type: object +properties_2: + description: | + Namespace property definitions, if any. + in: body + required: false + type: object +properties_3: + description: | + A list of ``property`` objects. + in: body + required: true + type: array +properties_4: + description: | + The image properties, if any. + in: body + required: true + type: object +properties_target: + description: | + Some resource types allow more than one key and + value pair for each instance. For example, the Image service + allows both user and image metadata on volumes. The + ``properties_target`` parameter enables a namespace target to + remove the ambiguity. + in: body + required: false + type: string +protected: + description: | + Image protection for deletion. Valid value is + ``true`` or ``false``. Default is ``false``. + in: body + required: false + type: boolean +protected_1: + description: | + Namespace protection for deletion. A valid value + is ``true`` or ``false``. Default is ``false``. + in: body + required: true + type: string +protected_2: + description: | + Namespace protection for deletion. Valid value is + ``true`` or ``false``. Default is ``false``. + in: body + required: false + type: boolean +protected_3: + description: | + Image protection for deletion. A valid value is + ``true`` or ``false``. Default is ``false``. + in: body + required: true + type: boolean +readonly: + description: | + Indicates whether this is a read-only property. + in: body + required: false + type: boolean +readonly_1: + description: | + Indicates whether this is a read-only property. + in: body + required: true + type: boolean +resource_type_associations: + description: | + One or more namespace resource types. + in: body + required: true + type: string +resource_type_associations_1: + description: | + Namespace resource types, if any. + in: body + required: false + type: object +schema: + description: | + The URL for schema of the member. + in: body + required: true + type: string +schema_1: + description: | + The URL for schema of the virtual machine image. + in: body + required: true + type: string +schema_2: + description: | + The URL for schema of the members. + in: body + required: true + type: string +schema_3: + description: | + The URL for schema of the virtual machine images. + in: body + required: true + type: string +self: + description: | + The URL for the virtual machine image. + in: body + required: true + type: string +size: + description: | + The size of the image data, in bytes. The value + might be ``null`` (JSON null data type). + in: body + required: true + type: integer +status: + description: | + The image status. + in: body + required: true + type: string +status_3: + description: | + The current status of this task. The value can be + "pending", "processing", "success" or "failure". + in: body + required: true + type: string +status_4: + description: | + The status of this image member. + in: body + required: true + type: string +tags: + description: | + Image tags. + in: body + required: false + type: array +tags_1: + description: | + A list of ``tag`` objects. + in: body + required: true + type: array +tasks: + description: | + A list of ``task`` objects. + in: body + required: true + type: array +title: + description: | + The title of the property. + in: body + required: true + type: string +type: + description: | + The property type. + in: body + required: true + type: string +type_2: + description: | + The type of task represented by this content. + in: body + required: true + type: string +uniqueItems: + description: | + Indicates whether all values in the array must be + distinct. + in: body + required: false + type: string +uniqueItems_1: + description: | + Indicates whether all values in the array must be + distinct. + in: body + required: true + type: string +updated_at: + description: | + The date and time when the resource was updated. + + The date and time stamp format is `ISO 8601 + `_: + + :: + + CCYY-MM-DDThh:mm:ss±hh:mm + + For example, ``2015-08-27T09:49:58-05:00``. + + The ``±hh:mm`` value, if included, is the time zone as an offset + from UTC. In the previous example, the offset value is ``-05:00``. + + If the ``updated_at`` date and time stamp is not set, its value is + ``null``. + in: body + required: true + type: string +url: + description: | + The URL to access the image file kept in external + store. + in: body + required: true + type: string +value: + description: | + Value of image property used in add or replace + operations expressed in JSON notation. For example, you must + enclose strings in quotation marks, and you do not enclose numeric + values in quotation marks. + in: body + required: true + type: string +virtual_size: + description: | + The virtual size of the image. The value might + be ``null`` (JSON null data type). + in: body + required: true + type: integer +visibility: + description: | + Image visibility. Valid value is ``public`` or + ``private``. Default is ``public``. + in: body + required: false + type: string +visibility_1: + description: | + The namespace visibility. A valid value is + ``public`` or ``private``. Default is ``private``. + in: body + required: true + type: string +visibility_2: + description: | + Namespace visibility. Valid value is ``public`` + or ``private``. Default is ``private``. + in: body + required: false + type: string +visibility_5: + description: | + The image visibility. A valid value is ``public`` + or ``private``. Default is ``private``. + in: body + required: true + type: string + diff --git a/api-ref/source/image/v2/samples/image-create-request.json b/api-ref/source/image/v2/samples/image-create-request.json new file mode 100644 index 000000000..bcb480b68 --- /dev/null +++ b/api-ref/source/image/v2/samples/image-create-request.json @@ -0,0 +1,6 @@ +{ + "container_format": "bare", + "disk_format": "raw", + "name": "Ubuntu", + "id": "b2173dd3-7ad6-4362-baa6-a68bce3565cb" +} diff --git a/api-ref/source/image/v2/samples/image-create-response.json b/api-ref/source/image/v2/samples/image-create-response.json new file mode 100644 index 000000000..dd2289ee2 --- /dev/null +++ b/api-ref/source/image/v2/samples/image-create-response.json @@ -0,0 +1,22 @@ +{ + "status": "queued", + "name": "Ubuntu", + "tags": [], + "container_format": "bare", + "created_at": "2015-11-29T22:21:42Z", + "size": null, + "disk_format": "raw", + "updated_at": "2015-11-29T22:21:42Z", + "visibility": "private", + "locations": [], + "self": "/v2/images/b2173dd3-7ad6-4362-baa6-a68bce3565cb", + "min_disk": 0, + "protected": false, + "id": "b2173dd3-7ad6-4362-baa6-a68bce3565cb", + "file": "/v2/images/b2173dd3-7ad6-4362-baa6-a68bce3565cb/file", + "checksum": null, + "owner": "bab7d5c60cd041a0a36f7c4b6e1dd978", + "virtual_size": null, + "min_ram": 0, + "schema": "/v2/schemas/image" +} diff --git a/api-ref/source/image/v2/samples/image-details-deactivate-response.json b/api-ref/source/image/v2/samples/image-details-deactivate-response.json new file mode 100644 index 000000000..43d41c335 --- /dev/null +++ b/api-ref/source/image/v2/samples/image-details-deactivate-response.json @@ -0,0 +1,21 @@ +{ + "status": "deactivated", + "name": "cirros-0.3.2-x86_64-disk", + "tags": [], + "container_format": "bare", + "created_at": "2014-05-05T17:15:10Z", + "disk_format": "qcow2", + "updated_at": "2014-05-05T17:15:11Z", + "visibility": "public", + "self": "/v2/images/1bea47ed-f6a9-463b-b423-14b9cca9ad27", + "min_disk": 0, + "protected": false, + "id": "1bea47ed-f6a9-463b-b423-14b9cca9ad27", + "file": "/v2/images/1bea47ed-f6a9-463b-b423-14b9cca9ad27/file", + "checksum": "64d7c1cd2b6f60c92c14662941cb7913", + "owner": "5ef70662f8b34079a6eddb8da9d75fe8", + "size": 13167616, + "min_ram": 0, + "schema": "/v2/schemas/image", + "virtual_size": null +} diff --git a/api-ref/source/image/v2/samples/image-member-create-request.json b/api-ref/source/image/v2/samples/image-member-create-request.json new file mode 100644 index 000000000..06ad8fe9a --- /dev/null +++ b/api-ref/source/image/v2/samples/image-member-create-request.json @@ -0,0 +1,3 @@ +{ + "member": "8989447062e04a818baf9e073fd04fa7" +} diff --git a/api-ref/source/image/v2/samples/image-member-create-response.json b/api-ref/source/image/v2/samples/image-member-create-response.json new file mode 100644 index 000000000..d6946dd93 --- /dev/null +++ b/api-ref/source/image/v2/samples/image-member-create-response.json @@ -0,0 +1,8 @@ +{ + "created_at": "2013-09-20T19:22:19Z", + "image_id": "a96be11e-8536-4910-92cb-de50aa19dfe6", + "member_id": "8989447062e04a818baf9e073fd04fa7", + "schema": "/v2/schemas/member", + "status": "pending", + "updated_at": "2013-09-20T19:25:31Z" +} diff --git a/api-ref/source/image/v2/samples/image-member-details-response.json b/api-ref/source/image/v2/samples/image-member-details-response.json new file mode 100644 index 000000000..870417fbd --- /dev/null +++ b/api-ref/source/image/v2/samples/image-member-details-response.json @@ -0,0 +1,8 @@ +{ + "status": "pending", + "created_at": "2013-11-26T07:21:21Z", + "updated_at": "2013-11-26T07:21:21Z", + "image_id": "0ae74cc5-5147-4239-9ce2-b0c580f7067e", + "member_id": "8989447062e04a818baf9e073fd04fa7", + "schema": "/v2/schemas/member" +} diff --git a/api-ref/source/image/v2/samples/image-member-update-request.json b/api-ref/source/image/v2/samples/image-member-update-request.json new file mode 100644 index 000000000..4ec147f04 --- /dev/null +++ b/api-ref/source/image/v2/samples/image-member-update-request.json @@ -0,0 +1,3 @@ +{ + "status": "accepted" +} diff --git a/api-ref/source/image/v2/samples/image-member-update-response.json b/api-ref/source/image/v2/samples/image-member-update-response.json new file mode 100644 index 000000000..75ed4bed2 --- /dev/null +++ b/api-ref/source/image/v2/samples/image-member-update-response.json @@ -0,0 +1,8 @@ +{ + "created_at": "2013-09-20T19:22:19Z", + "image_id": "a96be11e-8536-4910-92cb-de50aa19dfe6", + "member_id": "8989447062e04a818baf9e073fd04fa7", + "schema": "/v2/schemas/member", + "status": "accepted", + "updated_at": "2013-09-20T20:15:31Z" +} diff --git a/api-ref/source/image/v2/samples/image-members-list-response.json b/api-ref/source/image/v2/samples/image-members-list-response.json new file mode 100644 index 000000000..3b55ad0f5 --- /dev/null +++ b/api-ref/source/image/v2/samples/image-members-list-response.json @@ -0,0 +1,21 @@ +{ + "members": [ + { + "created_at": "2013-10-07T17:58:03Z", + "image_id": "dbc999e3-c52f-4200-bedd-3b18fe7f87fe", + "member_id": "123456789", + "schema": "/v2/schemas/member", + "status": "pending", + "updated_at": "2013-10-07T17:58:03Z" + }, + { + "created_at": "2013-10-07T17:58:55Z", + "image_id": "dbc999e3-c52f-4200-bedd-3b18fe7f87fe", + "member_id": "987654321", + "schema": "/v2/schemas/member", + "status": "accepted", + "updated_at": "2013-10-08T12:08:55Z" + } + ], + "schema": "/v2/schemas/members" +} diff --git a/api-ref/source/image/v2/samples/image-show-response.json b/api-ref/source/image/v2/samples/image-show-response.json new file mode 100644 index 000000000..07055355c --- /dev/null +++ b/api-ref/source/image/v2/samples/image-show-response.json @@ -0,0 +1,21 @@ +{ + "status": "active", + "name": "cirros-0.3.2-x86_64-disk", + "tags": [], + "container_format": "bare", + "created_at": "2014-05-05T17:15:10Z", + "disk_format": "qcow2", + "updated_at": "2014-05-05T17:15:11Z", + "visibility": "public", + "self": "/v2/images/1bea47ed-f6a9-463b-b423-14b9cca9ad27", + "min_disk": 0, + "protected": false, + "id": "1bea47ed-f6a9-463b-b423-14b9cca9ad27", + "file": "/v2/images/1bea47ed-f6a9-463b-b423-14b9cca9ad27/file", + "checksum": "64d7c1cd2b6f60c92c14662941cb7913", + "owner": "5ef70662f8b34079a6eddb8da9d75fe8", + "size": 13167616, + "min_ram": 0, + "schema": "/v2/schemas/image", + "virtual_size": null +} diff --git a/api-ref/source/image/v2/samples/image-update-request.json b/api-ref/source/image/v2/samples/image-update-request.json new file mode 100644 index 000000000..9bbc50b20 --- /dev/null +++ b/api-ref/source/image/v2/samples/image-update-request.json @@ -0,0 +1,15 @@ +[ + { + "op": "replace", + "path": "/name", + "value": "Fedora 17" + }, + { + "op": "replace", + "path": "/tags", + "value": [ + "fedora", + "beefy" + ] + } +] diff --git a/api-ref/source/image/v2/samples/image-update-response.json b/api-ref/source/image/v2/samples/image-update-response.json new file mode 100644 index 000000000..2fdcdd90f --- /dev/null +++ b/api-ref/source/image/v2/samples/image-update-response.json @@ -0,0 +1,23 @@ +{ + "id": "da3b75d9-3f4a-40e7-8a2c-bfab23927dea", + "name": "Fedora 17", + "status": "active", + "visibility": "public", + "size": 2254249, + "checksum": "2cec138d7dae2aa59038ef8c9aec2390", + "tags": [ + "fedora", + "beefy" + ], + "created_at": "2012-08-10T19:23:50Z", + "updated_at": "2012-08-12T11:11:33Z", + "self": "/v2/images/da3b75d9-3f4a-40e7-8a2c-bfab23927dea", + "file": "/v2/images/da3b75d9-3f4a-40e7-8a2c-bfab23927dea/file", + "schema": "/v2/schemas/image", + "owner": null, + "min_ram": null, + "min_disk": null, + "disk_format": null, + "virtual_size": null, + "container_format": null +} diff --git a/api-ref/source/image/v2/samples/image-versions-response.json b/api-ref/source/image/v2/samples/image-versions-response.json new file mode 100644 index 000000000..0d5a6fda4 --- /dev/null +++ b/api-ref/source/image/v2/samples/image-versions-response.json @@ -0,0 +1,74 @@ +{ + "versions": [ + { + "status": "EXPERIMENTAL", + "id": "v3.0", + "links": [ + { + "href": "http://23.253.228.211:9292/v3/", + "rel": "self" + } + ] + }, + { + "status": "CURRENT", + "id": "v2.3", + "links": [ + { + "href": "http://23.253.228.211:9292/v2/", + "rel": "self" + } + ] + }, + { + "status": "SUPPORTED", + "id": "v2.2", + "links": [ + { + "href": "http://23.253.228.211:9292/v2/", + "rel": "self" + } + ] + }, + { + "status": "SUPPORTED", + "id": "v2.1", + "links": [ + { + "href": "http://23.253.228.211:9292/v2/", + "rel": "self" + } + ] + }, + { + "status": "SUPPORTED", + "id": "v2.0", + "links": [ + { + "href": "http://23.253.228.211:9292/v2/", + "rel": "self" + } + ] + }, + { + "status": "SUPPORTED", + "id": "v1.1", + "links": [ + { + "href": "http://23.253.228.211:9292/v1/", + "rel": "self" + } + ] + }, + { + "status": "SUPPORTED", + "id": "v1.0", + "links": [ + { + "href": "http://23.253.228.211:9292/v1/", + "rel": "self" + } + ] + } + ] +} diff --git a/api-ref/source/image/v2/samples/images-list-response.json b/api-ref/source/image/v2/samples/images-list-response.json new file mode 100644 index 000000000..8e2097a09 --- /dev/null +++ b/api-ref/source/image/v2/samples/images-list-response.json @@ -0,0 +1,48 @@ +{ + "images": [ + { + "status": "active", + "name": "cirros-0.3.2-x86_64-disk", + "tags": [], + "container_format": "bare", + "created_at": "2014-11-07T17:07:06Z", + "disk_format": "qcow2", + "updated_at": "2014-11-07T17:19:09Z", + "visibility": "public", + "self": "/v2/images/1bea47ed-f6a9-463b-b423-14b9cca9ad27", + "min_disk": 0, + "protected": false, + "id": "1bea47ed-f6a9-463b-b423-14b9cca9ad27", + "file": "/v2/images/1bea47ed-f6a9-463b-b423-14b9cca9ad27/file", + "checksum": "64d7c1cd2b6f60c92c14662941cb7913", + "owner": "5ef70662f8b34079a6eddb8da9d75fe8", + "size": 13167616, + "min_ram": 0, + "schema": "/v2/schemas/image", + "virtual_size": null + }, + { + "status": "active", + "name": "F17-x86_64-cfntools", + "tags": [], + "container_format": "bare", + "created_at": "2014-10-30T08:23:39Z", + "disk_format": "qcow2", + "updated_at": "2014-11-03T16:40:10Z", + "visibility": "public", + "self": "/v2/images/781b3762-9469-4cec-b58d-3349e5de4e9c", + "min_disk": 0, + "protected": false, + "id": "781b3762-9469-4cec-b58d-3349e5de4e9c", + "file": "/v2/images/781b3762-9469-4cec-b58d-3349e5de4e9c/file", + "checksum": "afab0f79bac770d61d24b4d0560b5f70", + "owner": "5ef70662f8b34079a6eddb8da9d75fe8", + "size": 476704768, + "min_ram": 0, + "schema": "/v2/schemas/image", + "virtual_size": null + } + ], + "schema": "/v2/schemas/images", + "first": "/v2/images" +} diff --git a/api-ref/source/image/v2/samples/metadef-namespace-create-request.json b/api-ref/source/image/v2/samples/metadef-namespace-create-request.json new file mode 100644 index 000000000..3c2729292 --- /dev/null +++ b/api-ref/source/image/v2/samples/metadef-namespace-create-request.json @@ -0,0 +1,39 @@ +{ + "description": "Choose capabilities that should be provided by the Compute Host. This provides the ability to fine tune the hardware specification required when a new vm is requested.", + "display_name": "Hypervisor Selection", + "namespace": "OS::Compute::Hypervisor", + "properties": { + "hypervisor_type": { + "description": "The hypervisor type.", + "enum": [ + "xen", + "qemu", + "kvm", + "lxc", + "uml", + "vmware", + "hyperv" + ], + "title": "Hypervisor Type", + "type": "string" + }, + "vm_mode": { + "description": "The virtual machine mode.", + "enum": [ + "hvm", + "xen", + "uml", + "exe" + ], + "title": "VM Mode", + "type": "string" + } + }, + "protected": true, + "resource_type_associations": [ + { + "name": "OS::Glance::Image" + } + ], + "visibility": "public" +} diff --git a/api-ref/source/image/v2/samples/metadef-namespace-create-response.json b/api-ref/source/image/v2/samples/metadef-namespace-create-response.json new file mode 100644 index 000000000..24384535a --- /dev/null +++ b/api-ref/source/image/v2/samples/metadef-namespace-create-response.json @@ -0,0 +1,41 @@ +{ + "description": "Choose capabilities that should be provided by the Compute Host. This provides the ability to fine tune the hardware specification required when a new vm is requested.", + "display_name": "Hypervisor Selection", + "namespace": "OS::Compute::Hypervisor", + "properties": { + "hypervisor_type": { + "description": "The hypervisor type.", + "enum": [ + "xen", + "qemu", + "kvm", + "lxc", + "uml", + "vmware", + "hyperv" + ], + "title": "Hypervisor Type", + "type": "string" + }, + "vm_mode": { + "description": "The virtual machine mode.", + "enum": [ + "hvm", + "xen", + "uml", + "exe" + ], + "title": "VM Mode", + "type": "string" + } + }, + "protected": true, + "resource_type_associations": [ + { + "name": "OS::Glance::Image" + } + ], + "schema": "/v2/schemas/metadefs/namespace", + "self": "/v2/metadefs/namespaces/OS::Compute::Hypervisor", + "visibility": "public" +} diff --git a/api-ref/source/image/v2/samples/metadef-namespace-details-response.json b/api-ref/source/image/v2/samples/metadef-namespace-details-response.json new file mode 100644 index 000000000..9e42b9d76 --- /dev/null +++ b/api-ref/source/image/v2/samples/metadef-namespace-details-response.json @@ -0,0 +1,103 @@ +{ + "created_at": "2014-08-28T17:13:06Z", + "description": "The libvirt compute driver options. These are properties specific to compute drivers. For a list of all hypervisors, see here: https://wiki.openstack.org/wiki/HypervisorSupportMatrix.", + "display_name": "libvirt Driver Options", + "namespace": "OS::Compute::Libvirt", + "owner": "admin", + "properties": { + "hw_disk_bus": { + "description": "Specifies the type of disk controller to attach disk devices to.", + "enum": [ + "scsi", + "virtio", + "uml", + "xen", + "ide", + "usb" + ], + "title": "Disk Bus", + "type": "string" + }, + "hw_machine_type": { + "description": "Enables booting an ARM system using the specified machine type. By default, if an ARM image is used and its type is not specified, Compute uses vexpress-a15 (for ARMv7) or virt (for AArch64) machine types. Valid types can be viewed by using the virsh capabilities command (machine types are displayed in the machine tag).", + "title": "Machine Type", + "type": "string" + }, + "hw_qemu_guest_agent": { + "description": "It is a daemon program running inside the domain which is supposed to help management applications with executing functions which need assistance of the guest OS. For example, freezing and thawing filesystems, entering suspend. However, guest agent (GA) is not bullet proof, and hostile guest OS can send spurious replies.", + "enum": [ + "yes", + "no" + ], + "title": "QEMU Guest Agent", + "type": "string" + }, + "hw_rng_model": { + "default": "virtio", + "description": "Adds a random-number generator device to the image's instances. The cloud administrator can enable and control device behavior by configuring the instance's flavor. By default: The generator device is disabled. /dev/random is used as the default entropy source. To specify a physical HW RNG device, use the following option in the nova.conf file: rng_dev_path=/dev/hwrng", + "title": "Random Number Generator Device", + "type": "string" + }, + "hw_scsi_model": { + "default": "virtio-scsi", + "description": "Enables the use of VirtIO SCSI (virtio-scsi) to provide block device access for compute instances; by default, instances use VirtIO Block (virtio-blk). VirtIO SCSI is a para-virtualized SCSI controller device that provides improved scalability and performance, and supports advanced SCSI hardware.", + "title": "SCSI Model", + "type": "string" + }, + "hw_video_model": { + "description": "The video image driver used.", + "enum": [ + "vga", + "cirrus", + "vmvga", + "xen", + "qxl" + ], + "title": "Video Model", + "type": "string" + }, + "hw_video_ram": { + "description": "Maximum RAM for the video image. Used only if a hw_video:ram_max_mb value has been set in the flavor's extra_specs and that value is higher than the value set in hw_video_ram.", + "title": "Max Video Ram", + "type": "integer" + }, + "hw_vif_model": { + "description": "Specifies the model of virtual network interface device to use. The valid options depend on the configured hypervisor. KVM and QEMU: e1000, ne2k_pci, pcnet, rtl8139, and virtio. VMware: e1000, e1000e, VirtualE1000, VirtualE1000e, VirtualPCNet32, VirtualSriovEthernetCard, and VirtualVmxnet. Xen: e1000, netfront, ne2k_pci, pcnet, and rtl8139.", + "enum": [ + "e1000", + "ne2k_pci", + "pcnet", + "rtl8139", + "virtio", + "e1000", + "e1000e", + "VirtualE1000", + "VirtualE1000e", + "VirtualPCNet32", + "VirtualSriovEthernetCard", + "VirtualVmxnet", + "netfront", + "ne2k_pci" + ], + "title": "Virtual Network Interface", + "type": "string" + }, + "os_command_line": { + "description": "The kernel command line to be used by the libvirt driver, instead of the default. For linux containers (LXC), the value is used as arguments for initialization. This key is valid only for Amazon kernel, ramdisk, or machine images (aki, ari, or ami).", + "title": "Kernel Command Line", + "type": "string" + } + }, + "protected": true, + "resource_type_associations": [ + { + "created_at": "2014-08-28T17:13:06Z", + "name": "OS::Glance::Image", + "updated_at": "2014-08-28T17:13:06Z" + } + ], + "schema": "/v2/schemas/metadefs/namespace", + "self": "/v2/metadefs/namespaces/OS::Compute::Libvirt", + "updated_at": "2014-08-28T17:13:06Z", + "visibility": "public" +} diff --git a/api-ref/source/image/v2/samples/metadef-namespace-update-request.json b/api-ref/source/image/v2/samples/metadef-namespace-update-request.json new file mode 100644 index 000000000..d06a41c4d --- /dev/null +++ b/api-ref/source/image/v2/samples/metadef-namespace-update-request.json @@ -0,0 +1,7 @@ +{ + "description": "Choose capabilities that should be provided by the Compute Host. This provides the ability to fine tune the hardware specification required when a new vm is requested.", + "display_name": "Hypervisor Selection", + "namespace": "OS::Compute::Hypervisor", + "protected": false, + "visibility": "public" +} diff --git a/api-ref/source/image/v2/samples/metadef-namespace-update-response.json b/api-ref/source/image/v2/samples/metadef-namespace-update-response.json new file mode 100644 index 000000000..d504c0c76 --- /dev/null +++ b/api-ref/source/image/v2/samples/metadef-namespace-update-response.json @@ -0,0 +1,12 @@ +{ + "created_at": "2014-09-19T13:31:37Z", + "description": "Choose capabilities that should be provided by the Compute Host. This provides the ability to fine tune the harware specification required when a new vm is requested.", + "display_name": "Hypervisor Selection", + "namespace": "OS::Compute::Hypervisor", + "owner": "7ec22942411e427692e8a3436be1031a", + "protected": false, + "schema": "/v2/schemas/metadefs/namespace", + "self": "/v2/metadefs/namespaces/OS::Compute::Hypervisor", + "updated_at": "2014-09-19T13:31:37Z", + "visibility": "public" +} diff --git a/api-ref/source/image/v2/samples/metadef-namespaces-list-response.json b/api-ref/source/image/v2/samples/metadef-namespaces-list-response.json new file mode 100644 index 000000000..44462d4db --- /dev/null +++ b/api-ref/source/image/v2/samples/metadef-namespaces-list-response.json @@ -0,0 +1,96 @@ +{ + "first": "/v2/metadefs/namespaces?sort_key=created_at&sort_dir=asc", + "namespaces": [ + { + "created_at": "2014-08-28T17:13:06Z", + "description": "The libvirt compute driver options. These are properties specific to compute drivers. For a list of all hypervisors, see here: https://wiki.openstack.org/wiki/HypervisorSupportMatrix.", + "display_name": "libvirt Driver Options", + "namespace": "OS::Compute::Libvirt", + "owner": "admin", + "protected": true, + "resource_type_associations": [ + { + "created_at": "2014-08-28T17:13:06Z", + "name": "OS::Glance::Image", + "updated_at": "2014-08-28T17:13:06Z" + } + ], + "schema": "/v2/schemas/metadefs/namespace", + "self": "/v2/metadefs/namespaces/OS::Compute::Libvirt", + "updated_at": "2014-08-28T17:13:06Z", + "visibility": "public" + }, + { + "created_at": "2014-08-28T17:13:06Z", + "description": "Compute drivers may enable quotas on CPUs available to a VM, disk tuning, bandwidth I/O, and instance VIF traffic control. See: http://docs.openstack.org/admin-guide-cloud/compute-flavors.html", + "display_name": "Flavor Quota", + "namespace": "OS::Compute::Quota", + "owner": "admin", + "protected": true, + "resource_type_associations": [ + { + "created_at": "2014-08-28T17:13:06Z", + "name": "OS::Nova::Flavor", + "updated_at": "2014-08-28T17:13:06Z" + } + ], + "schema": "/v2/schemas/metadefs/namespace", + "self": "/v2/metadefs/namespaces/OS::Compute::Quota", + "updated_at": "2014-08-28T17:13:06Z", + "visibility": "public" + }, + { + "created_at": "2014-08-28T17:13:06Z", + "description": "Trusted compute pools with Intel\u00ae Trusted Execution Technology (Intel\u00ae TXT) support IT compliance by protecting virtualized data centers - private, public, and hybrid clouds against attacks toward hypervisor and BIOS, firmware, and other pre-launch software components.", + "display_name": "Trusted Compute Pools (Intel\u00ae TXT)", + "namespace": "OS::Compute::Trust", + "owner": "admin", + "protected": true, + "resource_type_associations": [ + { + "created_at": "2014-08-28T17:13:06Z", + "name": "OS::Nova::Flavor", + "updated_at": "2014-08-28T17:13:06Z" + } + ], + "schema": "/v2/schemas/metadefs/namespace", + "self": "/v2/metadefs/namespaces/OS::Compute::Trust", + "updated_at": "2014-08-28T17:13:06Z", + "visibility": "public" + }, + { + "created_at": "2014-08-28T17:13:06Z", + "description": "This provides the preferred socket/core/thread counts for the virtual CPU instance exposed to guests. This enables the ability to avoid hitting limitations on vCPU topologies that OS vendors place on their products. See also: http://git.openstack.org/cgit/openstack/nova-specs/tree/specs/juno/virt-driver-vcpu-topology.rst", + "display_name": "Virtual CPU Topology", + "namespace": "OS::Compute::VirtCPUTopology", + "owner": "admin", + "protected": true, + "resource_type_associations": [ + { + "created_at": "2014-08-28T17:13:06Z", + "name": "OS::Glance::Image", + "prefix": "hw_", + "updated_at": "2014-08-28T17:13:06Z" + }, + { + "created_at": "2014-08-28T17:13:06Z", + "name": "OS::Cinder::Volume", + "prefix": "hw_", + "properties_target": "image", + "updated_at": "2014-08-28T17:13:06Z" + }, + { + "created_at": "2014-08-28T17:13:06Z", + "name": "OS::Nova::Flavor", + "prefix": "hw:", + "updated_at": "2014-08-28T17:13:06Z" + } + ], + "schema": "/v2/schemas/metadefs/namespace", + "self": "/v2/metadefs/namespaces/OS::Compute::VirtCPUTopology", + "updated_at": "2014-08-28T17:13:06Z", + "visibility": "public" + } + ], + "schema": "/v2/schemas/metadefs/namespaces" +} diff --git a/api-ref/source/image/v2/samples/metadef-object-create-request.json b/api-ref/source/image/v2/samples/metadef-object-create-request.json new file mode 100644 index 000000000..2aefab80c --- /dev/null +++ b/api-ref/source/image/v2/samples/metadef-object-create-request.json @@ -0,0 +1,24 @@ +{ + "description": "You can configure the CPU limits with control parameters.", + "name": "CPU Limits", + "properties": { + "quota:cpu_period": { + "description": "Specifies the enforcement interval (unit: microseconds) for QEMU and LXC hypervisors. Within a period, each VCPU of the domain is not allowed to consume more than the quota worth of runtime. The value should be in range [1000, 1000000]. A period with value 0 means no value.", + "maximum": 1000000, + "minimum": 1000, + "title": "Quota: CPU Period", + "type": "integer" + }, + "quota:cpu_quota": { + "description": "Specifies the maximum allowed bandwidth (unit: microseconds). A domain with a negative-value quota indicates that the domain has infinite bandwidth, which means that it is not bandwidth controlled. The value should be in range [1000, 18446744073709551] or less than 0. A quota with value 0 means no value. You can use this feature to ensure that all vCPUs run at the same speed.", + "title": "Quota: CPU Quota", + "type": "integer" + }, + "quota:cpu_shares": { + "description": "Specifies the proportional weighted share for the domain. If this element is omitted, the service defaults to the OS provided defaults. There is no unit for the value; it is a relative measure based on the setting of other VMs. For example, a VM configured with value 2048 gets twice as much CPU time as a VM configured with value 1024.", + "title": "Quota: CPU Shares", + "type": "integer" + } + }, + "required": [] +} diff --git a/api-ref/source/image/v2/samples/metadef-object-create-response.json b/api-ref/source/image/v2/samples/metadef-object-create-response.json new file mode 100644 index 000000000..d0184bd9a --- /dev/null +++ b/api-ref/source/image/v2/samples/metadef-object-create-response.json @@ -0,0 +1,28 @@ +{ + "created_at": "2014-09-19T18:20:56Z", + "description": "You can configure the CPU limits with control parameters.", + "name": "CPU Limits", + "properties": { + "quota:cpu_period": { + "description": "Specifies the enforcement interval (unit: microseconds) for QEMU and LXC hypervisors. Within a period, each VCPU of the domain is not allowed to consume more than the quota worth of runtime. The value should be in range [1000, 1000000]. A period with value 0 means no value.", + "maximum": 1000000, + "minimum": 1000, + "title": "Quota: CPU Period", + "type": "integer" + }, + "quota:cpu_quota": { + "description": "Specifies the maximum allowed bandwidth (unit: microseconds). A domain with a negative-value quota indicates that the domain has infinite bandwidth, which means that it is not bandwidth controlled. The value should be in range [1000, 18446744073709551] or less than 0. A quota with value 0 means no value. You can use this feature to ensure that all vCPUs run at the same speed.", + "title": "Quota: CPU Quota", + "type": "integer" + }, + "quota:cpu_shares": { + "description": "Specifies the proportional weighted share for the domain. If this element is omitted, the service defaults to the OS provided defaults. There is no unit for the value; it is a relative measure based on the setting of other VMs. For example, a VM configured with value 2048 gets twice as much CPU time as a VM configured with value 1024.", + "title": "Quota: CPU Shares", + "type": "integer" + } + }, + "required": [], + "schema": "/v2/schemas/metadefs/object", + "self": "/v2/metadefs/namespaces/OS::Compute::Quota/objects/CPU Limits", + "updated_at": "2014-09-19T18:20:56Z" +} diff --git a/api-ref/source/image/v2/samples/metadef-object-details-response.json b/api-ref/source/image/v2/samples/metadef-object-details-response.json new file mode 100644 index 000000000..d0184bd9a --- /dev/null +++ b/api-ref/source/image/v2/samples/metadef-object-details-response.json @@ -0,0 +1,28 @@ +{ + "created_at": "2014-09-19T18:20:56Z", + "description": "You can configure the CPU limits with control parameters.", + "name": "CPU Limits", + "properties": { + "quota:cpu_period": { + "description": "Specifies the enforcement interval (unit: microseconds) for QEMU and LXC hypervisors. Within a period, each VCPU of the domain is not allowed to consume more than the quota worth of runtime. The value should be in range [1000, 1000000]. A period with value 0 means no value.", + "maximum": 1000000, + "minimum": 1000, + "title": "Quota: CPU Period", + "type": "integer" + }, + "quota:cpu_quota": { + "description": "Specifies the maximum allowed bandwidth (unit: microseconds). A domain with a negative-value quota indicates that the domain has infinite bandwidth, which means that it is not bandwidth controlled. The value should be in range [1000, 18446744073709551] or less than 0. A quota with value 0 means no value. You can use this feature to ensure that all vCPUs run at the same speed.", + "title": "Quota: CPU Quota", + "type": "integer" + }, + "quota:cpu_shares": { + "description": "Specifies the proportional weighted share for the domain. If this element is omitted, the service defaults to the OS provided defaults. There is no unit for the value; it is a relative measure based on the setting of other VMs. For example, a VM configured with value 2048 gets twice as much CPU time as a VM configured with value 1024.", + "title": "Quota: CPU Shares", + "type": "integer" + } + }, + "required": [], + "schema": "/v2/schemas/metadefs/object", + "self": "/v2/metadefs/namespaces/OS::Compute::Quota/objects/CPU Limits", + "updated_at": "2014-09-19T18:20:56Z" +} diff --git a/api-ref/source/image/v2/samples/metadef-object-update-request.json b/api-ref/source/image/v2/samples/metadef-object-update-request.json new file mode 100644 index 000000000..35b41e345 --- /dev/null +++ b/api-ref/source/image/v2/samples/metadef-object-update-request.json @@ -0,0 +1,12 @@ +{ + "description": "You can configure the CPU limits with control parameters.", + "name": "CPU Limits", + "properties": { + "quota:cpu_shares": { + "description": "Specifies the proportional weighted share for the domain. If this element is omitted, the service defaults to the OS provided defaults. There is no unit for the value; it is a relative measure based on the setting of other VMs. For example, a VM configured with value 2048 gets twice as much CPU time as a VM configured with value 1024.", + "title": "Quota: CPU Shares", + "type": "integer" + } + }, + "required": [] +} diff --git a/api-ref/source/image/v2/samples/metadef-object-update-response.json b/api-ref/source/image/v2/samples/metadef-object-update-response.json new file mode 100644 index 000000000..79db6272c --- /dev/null +++ b/api-ref/source/image/v2/samples/metadef-object-update-response.json @@ -0,0 +1,16 @@ +{ + "created_at": "2014-09-19T19:20:56Z", + "description": "You can configure the CPU limits with control parameters.", + "name": "CPU Limits", + "properties": { + "quota:cpu_shares": { + "description": "Specifies the proportional weighted share for the domain. If this element is omitted, the service defaults to the OS provided defaults. There is no unit for the value; it is a relative measure based on the setting of other VMs. For example, a VM configured with value 2048 gets twice as much CPU time as a VM configured with value 1024.", + "title": "Quota: CPU Shares", + "type": "integer" + } + }, + "required": [], + "schema": "/v2/schemas/metadefs/object", + "self": "/v2/metadefs/namespaces/OS::Compute::Quota/objects/CPU Limits", + "updated_at": "2014-09-19T19:20:56Z" +} diff --git a/api-ref/source/image/v2/samples/metadef-objects-list-response.json b/api-ref/source/image/v2/samples/metadef-objects-list-response.json new file mode 100644 index 000000000..067460225 --- /dev/null +++ b/api-ref/source/image/v2/samples/metadef-objects-list-response.json @@ -0,0 +1,112 @@ +{ + "objects": [ + { + "created_at": "2014-09-18T18:16:35Z", + "description": "You can configure the CPU limits with control parameters.", + "name": "CPU Limits", + "properties": { + "quota:cpu_period": { + "description": "Specifies the enforcement interval (unit: microseconds) for QEMU and LXC hypervisors. Within a period, each VCPU of the domain is not allowed to consume more than the quota worth of runtime. The value should be in range [1000, 1000000]. A period with value 0 means no value.", + "maximum": 1000000, + "minimum": 1000, + "title": "Quota: CPU Period", + "type": "integer" + }, + "quota:cpu_quota": { + "description": "Specifies the maximum allowed bandwidth (unit: microseconds). A domain with a negative-value quota indicates that the domain has infinite bandwidth, which means that it is not bandwidth controlled. The value should be in range [1000, 18446744073709551] or less than 0. A quota with value 0 means no value. You can use this feature to ensure that all vCPUs run at the same speed.", + "title": "Quota: CPU Quota", + "type": "integer" + }, + "quota:cpu_shares": { + "description": "Specifies the proportional weighted share for the domain. If this element is omitted, the service defaults to the OS provided defaults. There is no unit for the value; it is a relative measure based on the setting of other VMs. For example, a VM configured with value 2048 gets twice as much CPU time as a VM configured with value 1024.", + "title": "Quota: CPU Shares", + "type": "integer" + } + }, + "required": [], + "schema": "/v2/schemas/metadefs/object", + "self": "/v2/metadefs/namespaces/OS::Compute::Quota/objects/CPU Limits" + }, + { + "created_at": "2014-09-18T18:16:35Z", + "description": "Using disk I/O quotas, you can set maximum disk write to 10 MB per second for a VM user.", + "name": "Disk QoS", + "properties": { + "quota:disk_read_bytes_sec": { + "description": "Sets disk I/O quota for disk read bytes / sec.", + "title": "Quota: Disk read bytes / sec", + "type": "integer" + }, + "quota:disk_read_iops_sec": { + "description": "Sets disk I/O quota for disk read IOPS / sec.", + "title": "Quota: Disk read IOPS / sec", + "type": "integer" + }, + "quota:disk_total_bytes_sec": { + "description": "Sets disk I/O quota for total disk bytes / sec.", + "title": "Quota: Disk Total Bytes / sec", + "type": "integer" + }, + "quota:disk_total_iops_sec": { + "description": "Sets disk I/O quota for disk total IOPS / sec.", + "title": "Quota: Disk Total IOPS / sec", + "type": "integer" + }, + "quota:disk_write_bytes_sec": { + "description": "Sets disk I/O quota for disk write bytes / sec.", + "title": "Quota: Disk Write Bytes / sec", + "type": "integer" + }, + "quota:disk_write_iops_sec": { + "description": "Sets disk I/O quota for disk write IOPS / sec.", + "title": "Quota: Disk Write IOPS / sec", + "type": "integer" + } + }, + "required": [], + "schema": "/v2/schemas/metadefs/object", + "self": "/v2/metadefs/namespaces/OS::Compute::Quota/objects/Disk QoS" + }, + { + "created_at": "2014-09-18T18:16:35Z", + "description": "Bandwidth QoS tuning for instance virtual interfaces (VIFs) may be specified with these properties. Incoming and outgoing traffic can be shaped independently. If not specified, no quality of service (QoS) is applied on that traffic direction. So, if you want to shape only the network's incoming traffic, use inbound only (and vice versa). The OpenStack Networking service abstracts the physical implementation of the network, allowing plugins to configure and manage physical resources. Virtual Interfaces (VIF) in the logical model are analogous to physical network interface cards (NICs). VIFs are typically owned a managed by an external service; for instance when OpenStack Networking is used for building OpenStack networks, VIFs would be created, owned, and managed in Nova. VIFs are connected to OpenStack Networking networks via ports. A port is analogous to a port on a network switch, and it has an administrative state. When a VIF is attached to a port the OpenStack Networking API creates an attachment object, which specifies the fact that a VIF with a given identifier is plugged into the port.", + "name": "Virtual Interface QoS", + "properties": { + "quota:vif_inbound_average": { + "description": "Network Virtual Interface (VIF) inbound average in kilobytes per second. Specifies average bit rate on the interface being shaped.", + "title": "Quota: VIF Inbound Average", + "type": "integer" + }, + "quota:vif_inbound_burst": { + "description": "Network Virtual Interface (VIF) inbound burst in total kilobytes. Specifies the amount of bytes that can be burst at peak speed.", + "title": "Quota: VIF Inbound Burst", + "type": "integer" + }, + "quota:vif_inbound_peak": { + "description": "Network Virtual Interface (VIF) inbound peak in kilobytes per second. Specifies maximum rate at which an interface can receive data.", + "title": "Quota: VIF Inbound Peak", + "type": "integer" + }, + "quota:vif_outbound_average": { + "description": "Network Virtual Interface (VIF) outbound average in kilobytes per second. Specifies average bit rate on the interface being shaped.", + "title": "Quota: VIF Outbound Average", + "type": "integer" + }, + "quota:vif_outbound_burst": { + "description": "Network Virtual Interface (VIF) outbound burst in total kilobytes. Specifies the amount of bytes that can be burst at peak speed.", + "title": "Quota: VIF Outbound Burst", + "type": "integer" + }, + "quota:vif_outbound_peak": { + "description": "Network Virtual Interface (VIF) outbound peak in kilobytes per second. Specifies maximum rate at which an interface can send data.", + "title": "Quota: VIF Outbound Burst", + "type": "integer" + } + }, + "required": [], + "schema": "/v2/schemas/metadefs/object", + "self": "/v2/metadefs/namespaces/OS::Compute::Quota/objects/Virtual Interface QoS" + } + ], + "schema": "v2/schemas/metadefs/objects" +} diff --git a/api-ref/source/image/v2/samples/metadef-properties-list-response.json b/api-ref/source/image/v2/samples/metadef-properties-list-response.json new file mode 100644 index 000000000..aeb4a5da9 --- /dev/null +++ b/api-ref/source/image/v2/samples/metadef-properties-list-response.json @@ -0,0 +1,86 @@ +{ + "properties": { + "hw_disk_bus": { + "description": "Specifies the type of disk controller to attach disk devices to.", + "enum": [ + "scsi", + "virtio", + "uml", + "xen", + "ide", + "usb" + ], + "title": "Disk Bus", + "type": "string" + }, + "hw_machine_type": { + "description": "Enables booting an ARM system using the specified machine type. By default, if an ARM image is used and its type is not specified, Compute uses vexpress-a15 (for ARMv7) or virt (for AArch64) machine types. Valid types can be viewed by using the virsh capabilities command (machine types are displayed in the machine tag).", + "title": "Machine Type", + "type": "string" + }, + "hw_qemu_guest_agent": { + "description": "It is a daemon program running inside the domain which is supposed to help management applications with executing functions which need assistance of the guest OS. For example, freezing and thawing filesystems, entering suspend. However, guest agent (GA) is not bullet proof, and hostile guest OS can send spurious replies.", + "enum": [ + "yes", + "no" + ], + "title": "QEMU Guest Agent", + "type": "string" + }, + "hw_rng_model": { + "default": "virtio", + "description": "Adds a random-number generator device to the image's instances. The cloud administrator can enable and control device behavior by configuring the instance's flavor. By default: The generator device is disabled. /dev/random is used as the default entropy source. To specify a physical HW RNG device, use the following option in the nova.conf file: rng_dev_path=/dev/hwrng", + "title": "Random Number Generator Device", + "type": "string" + }, + "hw_scsi_model": { + "default": "virtio-scsi", + "description": "Enables the use of VirtIO SCSI (virtio-scsi) to provide block device access for compute instances; by default, instances use VirtIO Block (virtio-blk). VirtIO SCSI is a para-virtualized SCSI controller device that provides improved scalability and performance, and supports advanced SCSI hardware.", + "title": "SCSI Model", + "type": "string" + }, + "hw_video_model": { + "description": "The video image driver used.", + "enum": [ + "vga", + "cirrus", + "vmvga", + "xen", + "qxl" + ], + "title": "Video Model", + "type": "string" + }, + "hw_video_ram": { + "description": "Maximum RAM for the video image. Used only if a hw_video:ram_max_mb value has been set in the flavor's extra_specs and that value is higher than the value set in hw_video_ram.", + "title": "Max Video Ram", + "type": "integer" + }, + "hw_vif_model": { + "description": "Specifies the model of virtual network interface device to use. The valid options depend on the configured hypervisor. KVM and QEMU: e1000, ne2k_pci, pcnet, rtl8139, and virtio. VMware: e1000, e1000e, VirtualE1000, VirtualE1000e, VirtualPCNet32, VirtualSriovEthernetCard, and VirtualVmxnet. Xen: e1000, netfront, ne2k_pci, pcnet, and rtl8139.", + "enum": [ + "e1000", + "ne2k_pci", + "pcnet", + "rtl8139", + "virtio", + "e1000", + "e1000e", + "VirtualE1000", + "VirtualE1000e", + "VirtualPCNet32", + "VirtualSriovEthernetCard", + "VirtualVmxnet", + "netfront", + "ne2k_pci" + ], + "title": "Virtual Network Interface", + "type": "string" + }, + "os_command_line": { + "description": "The kernel command line to be used by the libvirt driver, instead of the default. For linux containers (LXC), the value is used as arguments for initialization. This key is valid only for Amazon kernel, ramdisk, or machine images (aki, ari, or ami).", + "title": "Kernel Command Line", + "type": "string" + } + } +} diff --git a/api-ref/source/image/v2/samples/metadef-property-create-request.json b/api-ref/source/image/v2/samples/metadef-property-create-request.json new file mode 100644 index 000000000..0b4b314ab --- /dev/null +++ b/api-ref/source/image/v2/samples/metadef-property-create-request.json @@ -0,0 +1,15 @@ +{ + "description": "The hypervisor type. It may be used by the host properties filter for scheduling. The ImagePropertiesFilter filters compute nodes that satisfy any architecture, hypervisor type, or virtual machine mode properties specified on the instance's image properties. Image properties are contained in the image dictionary in the request_spec.", + "enum": [ + "xen", + "qemu", + "kvm", + "lxc", + "uml", + "vmware", + "hyperv" + ], + "name": "hypervisor_type", + "title": "Hypervisor Type", + "type": "string" +} diff --git a/api-ref/source/image/v2/samples/metadef-property-create-response.json b/api-ref/source/image/v2/samples/metadef-property-create-response.json new file mode 100644 index 000000000..0b4b314ab --- /dev/null +++ b/api-ref/source/image/v2/samples/metadef-property-create-response.json @@ -0,0 +1,15 @@ +{ + "description": "The hypervisor type. It may be used by the host properties filter for scheduling. The ImagePropertiesFilter filters compute nodes that satisfy any architecture, hypervisor type, or virtual machine mode properties specified on the instance's image properties. Image properties are contained in the image dictionary in the request_spec.", + "enum": [ + "xen", + "qemu", + "kvm", + "lxc", + "uml", + "vmware", + "hyperv" + ], + "name": "hypervisor_type", + "title": "Hypervisor Type", + "type": "string" +} diff --git a/api-ref/source/image/v2/samples/metadef-property-details-response.json b/api-ref/source/image/v2/samples/metadef-property-details-response.json new file mode 100644 index 000000000..0b4b314ab --- /dev/null +++ b/api-ref/source/image/v2/samples/metadef-property-details-response.json @@ -0,0 +1,15 @@ +{ + "description": "The hypervisor type. It may be used by the host properties filter for scheduling. The ImagePropertiesFilter filters compute nodes that satisfy any architecture, hypervisor type, or virtual machine mode properties specified on the instance's image properties. Image properties are contained in the image dictionary in the request_spec.", + "enum": [ + "xen", + "qemu", + "kvm", + "lxc", + "uml", + "vmware", + "hyperv" + ], + "name": "hypervisor_type", + "title": "Hypervisor Type", + "type": "string" +} diff --git a/api-ref/source/image/v2/samples/metadef-property-update-request.json b/api-ref/source/image/v2/samples/metadef-property-update-request.json new file mode 100644 index 000000000..0b4b314ab --- /dev/null +++ b/api-ref/source/image/v2/samples/metadef-property-update-request.json @@ -0,0 +1,15 @@ +{ + "description": "The hypervisor type. It may be used by the host properties filter for scheduling. The ImagePropertiesFilter filters compute nodes that satisfy any architecture, hypervisor type, or virtual machine mode properties specified on the instance's image properties. Image properties are contained in the image dictionary in the request_spec.", + "enum": [ + "xen", + "qemu", + "kvm", + "lxc", + "uml", + "vmware", + "hyperv" + ], + "name": "hypervisor_type", + "title": "Hypervisor Type", + "type": "string" +} diff --git a/api-ref/source/image/v2/samples/metadef-property-update-response.json b/api-ref/source/image/v2/samples/metadef-property-update-response.json new file mode 100644 index 000000000..0b4b314ab --- /dev/null +++ b/api-ref/source/image/v2/samples/metadef-property-update-response.json @@ -0,0 +1,15 @@ +{ + "description": "The hypervisor type. It may be used by the host properties filter for scheduling. The ImagePropertiesFilter filters compute nodes that satisfy any architecture, hypervisor type, or virtual machine mode properties specified on the instance's image properties. Image properties are contained in the image dictionary in the request_spec.", + "enum": [ + "xen", + "qemu", + "kvm", + "lxc", + "uml", + "vmware", + "hyperv" + ], + "name": "hypervisor_type", + "title": "Hypervisor Type", + "type": "string" +} diff --git a/api-ref/source/image/v2/samples/metadef-resource-type-assoc-create-response.json b/api-ref/source/image/v2/samples/metadef-resource-type-assoc-create-response.json new file mode 100644 index 000000000..9176e9a2c --- /dev/null +++ b/api-ref/source/image/v2/samples/metadef-resource-type-assoc-create-response.json @@ -0,0 +1,7 @@ +{ + "created_at": "2014-09-19T16:09:13Z", + "name": "OS::Cinder::Volume", + "prefix": "hw_", + "properties_target": "image", + "updated_at": "2014-09-19T16:09:13Z" +} diff --git a/api-ref/source/image/v2/samples/metadef-resource-type-create-request.json b/api-ref/source/image/v2/samples/metadef-resource-type-create-request.json new file mode 100644 index 000000000..ec5225ecf --- /dev/null +++ b/api-ref/source/image/v2/samples/metadef-resource-type-create-request.json @@ -0,0 +1,5 @@ +{ + "name": "OS::Cinder::Volume", + "prefix": "hw_", + "properties_target": "image" +} diff --git a/api-ref/source/image/v2/samples/metadef-resource-types-list-response.json b/api-ref/source/image/v2/samples/metadef-resource-types-list-response.json new file mode 100644 index 000000000..d2dc34a98 --- /dev/null +++ b/api-ref/source/image/v2/samples/metadef-resource-types-list-response.json @@ -0,0 +1,29 @@ +{ + "resource_types": [ + { + "created_at": "2014-08-28T18:13:04Z", + "name": "OS::Glance::Image", + "updated_at": "2014-08-28T18:13:04Z" + }, + { + "created_at": "2014-08-28T18:13:04Z", + "name": "OS::Cinder::Volume", + "updated_at": "2014-08-28T18:13:04Z" + }, + { + "created_at": "2014-08-28T18:13:04Z", + "name": "OS::Nova::Flavor", + "updated_at": "2014-08-28T18:13:04Z" + }, + { + "created_at": "2014-08-28T18:13:04Z", + "name": "OS::Nova::Aggregate", + "updated_at": "2014-08-28T18:13:04Z" + }, + { + "created_at": "2014-08-28T18:13:04Z", + "name": "OS::Nova::Instance", + "updated_at": "2014-08-28T18:13:04Z" + } + ] +} diff --git a/api-ref/source/image/v2/samples/metadef-tag-add-response.json b/api-ref/source/image/v2/samples/metadef-tag-add-response.json new file mode 100644 index 000000000..298e344bf --- /dev/null +++ b/api-ref/source/image/v2/samples/metadef-tag-add-response.json @@ -0,0 +1,5 @@ +{ + "created_at": "2015-05-09T01:12:31Z", + "name": "added-sample-tag", + "updated_at": "2015-05-09T01:12:31Z" +} diff --git a/api-ref/source/image/v2/samples/metadef-tag-create-request.json b/api-ref/source/image/v2/samples/metadef-tag-create-request.json new file mode 100644 index 000000000..facd34af5 --- /dev/null +++ b/api-ref/source/image/v2/samples/metadef-tag-create-request.json @@ -0,0 +1,13 @@ +{ + "tags": [ + { + "name": "sample-tag1" + }, + { + "name": "sample-tag2" + }, + { + "name": "sample-tag3" + } + ] +} diff --git a/api-ref/source/image/v2/samples/metadef-tag-create-response.json b/api-ref/source/image/v2/samples/metadef-tag-create-response.json new file mode 100644 index 000000000..facd34af5 --- /dev/null +++ b/api-ref/source/image/v2/samples/metadef-tag-create-response.json @@ -0,0 +1,13 @@ +{ + "tags": [ + { + "name": "sample-tag1" + }, + { + "name": "sample-tag2" + }, + { + "name": "sample-tag3" + } + ] +} diff --git a/api-ref/source/image/v2/samples/metadef-tag-details-response.json b/api-ref/source/image/v2/samples/metadef-tag-details-response.json new file mode 100644 index 000000000..0fc7197e9 --- /dev/null +++ b/api-ref/source/image/v2/samples/metadef-tag-details-response.json @@ -0,0 +1,5 @@ +{ + "created_at": "2015-05-06T23:16:12Z", + "name": "sample-tag2", + "updated_at": "2015-05-06T23:16:12Z" +} diff --git a/api-ref/source/image/v2/samples/metadef-tag-update-request.json b/api-ref/source/image/v2/samples/metadef-tag-update-request.json new file mode 100644 index 000000000..f2edbd4a3 --- /dev/null +++ b/api-ref/source/image/v2/samples/metadef-tag-update-request.json @@ -0,0 +1,3 @@ +{ + "name": "new-tag-name" +} diff --git a/api-ref/source/image/v2/samples/metadef-tag-update-response.json b/api-ref/source/image/v2/samples/metadef-tag-update-response.json new file mode 100644 index 000000000..f2edbd4a3 --- /dev/null +++ b/api-ref/source/image/v2/samples/metadef-tag-update-response.json @@ -0,0 +1,3 @@ +{ + "name": "new-tag-name" +} diff --git a/api-ref/source/image/v2/samples/metadef-tags-list-response.json b/api-ref/source/image/v2/samples/metadef-tags-list-response.json new file mode 100644 index 000000000..facd34af5 --- /dev/null +++ b/api-ref/source/image/v2/samples/metadef-tags-list-response.json @@ -0,0 +1,13 @@ +{ + "tags": [ + { + "name": "sample-tag1" + }, + { + "name": "sample-tag2" + }, + { + "name": "sample-tag3" + } + ] +} diff --git a/api-ref/source/image/v2/samples/schema-image-member-show-response.json b/api-ref/source/image/v2/samples/schema-image-member-show-response.json new file mode 100644 index 000000000..5ad359d7d --- /dev/null +++ b/api-ref/source/image/v2/samples/schema-image-member-show-response.json @@ -0,0 +1,34 @@ +{ + "name": "member", + "properties": { + "created_at": { + "description": "Date and time of image member creation", + "type": "string" + }, + "image_id": { + "description": "An identifier for the image", + "pattern": "^([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}$", + "type": "string" + }, + "member_id": { + "description": "An identifier for the image member (tenantId)", + "type": "string" + }, + "schema": { + "type": "string" + }, + "status": { + "description": "The status of this image member", + "enum": [ + "pending", + "accepted", + "rejected" + ], + "type": "string" + }, + "updated_at": { + "description": "Date and time of last modification of image member", + "type": "string" + } + } +} diff --git a/api-ref/source/image/v2/samples/schema-image-show-response.json b/api-ref/source/image/v2/samples/schema-image-show-response.json new file mode 100644 index 000000000..52279a835 --- /dev/null +++ b/api-ref/source/image/v2/samples/schema-image-show-response.json @@ -0,0 +1,216 @@ +{ + "additionalProperties": { + "type": "string" + }, + "links": [ + { + "href": "{self}", + "rel": "self" + }, + { + "href": "{file}", + "rel": "enclosure" + }, + { + "href": "{schema}", + "rel": "describedby" + } + ], + "name": "image", + "properties": { + "architecture": { + "description": "Operating system architecture as specified in http://docs.openstack.org/trunk/openstack-compute/admin/content/adding-images.html", + "is_base": false, + "type": "string" + }, + "checksum": { + "description": "md5 hash of image contents. (READ-ONLY)", + "maxLength": 32, + "type": [ + "null", + "string" + ] + }, + "container_format": { + "description": "Format of the container", + "enum": [ + null, + "ami", + "ari", + "aki", + "bare", + "ovf", + "ova" + ], + "type": [ + "null", + "string" + ] + }, + "created_at": { + "description": "Date and time of image registration (READ-ONLY)", + "type": "string" + }, + "direct_url": { + "description": "URL to access the image file kept in external store (READ-ONLY)", + "type": "string" + }, + "disk_format": { + "description": "Format of the disk", + "enum": [ + null, + "ami", + "ari", + "aki", + "vhd", + "vmdk", + "raw", + "qcow2", + "vdi", + "iso" + ], + "type": [ + "null", + "string" + ] + }, + "file": { + "description": "(READ-ONLY)", + "type": "string" + }, + "id": { + "description": "An identifier for the image", + "pattern": "^([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}$", + "type": "string" + }, + "instance_uuid": { + "description": "ID of instance used to create this image.", + "is_base": false, + "type": "string" + }, + "kernel_id": { + "description": "ID of image stored in Glance that should be used as the kernel when booting an AMI-style image.", + "is_base": false, + "pattern": "^([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}$", + "type": "string" + }, + "locations": { + "description": "A set of URLs to access the image file kept in external store", + "items": { + "properties": { + "metadata": { + "type": "object" + }, + "url": { + "maxLength": 255, + "type": "string" + } + }, + "required": [ + "url", + "metadata" + ], + "type": "object" + }, + "type": "array" + }, + "min_disk": { + "description": "Amount of disk space (in GB) required to boot image.", + "type": "integer" + }, + "min_ram": { + "description": "Amount of ram (in MB) required to boot image.", + "type": "integer" + }, + "name": { + "description": "Descriptive name for the image", + "maxLength": 255, + "type": [ + "null", + "string" + ] + }, + "os_distro": { + "description": "Common name of operating system distribution as specified in http://docs.openstack.org/trunk/openstack-compute/admin/content/adding-images.html", + "is_base": false, + "type": "string" + }, + "os_version": { + "description": "Operating system version as specified by the distributor", + "is_base": false, + "type": "string" + }, + "owner": { + "description": "Owner of the image", + "maxLength": 255, + "type": [ + "null", + "string" + ] + }, + "protected": { + "description": "If true, image will not be deletable.", + "type": "boolean" + }, + "ramdisk_id": { + "description": "ID of image stored in Glance that should be used as the ramdisk when booting an AMI-style image.", + "is_base": false, + "pattern": "^([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}$", + "type": "string" + }, + "schema": { + "description": "(READ-ONLY)", + "type": "string" + }, + "self": { + "description": "(READ-ONLY)", + "type": "string" + }, + "size": { + "description": "Size of image file in bytes (READ-ONLY)", + "type": [ + "null", + "integer" + ] + }, + "status": { + "description": "Status of the image (READ-ONLY)", + "enum": [ + "queued", + "saving", + "active", + "killed", + "deleted", + "pending_delete" + ], + "type": "string" + }, + "tags": { + "description": "List of strings related to the image", + "items": { + "maxLength": 255, + "type": "string" + }, + "type": "array" + }, + "updated_at": { + "description": "Date and time of the last image modification (READ-ONLY)", + "type": "string" + }, + "virtual_size": { + "description": "Virtual size of image in bytes (READ-ONLY)", + "type": [ + "null", + "integer" + ] + }, + "visibility": { + "description": "Scope of image accessibility", + "enum": [ + "public", + "private" + ], + "type": "string" + } + } +} diff --git a/api-ref/source/image/v2/samples/schema-metadef-namespace-show-response.json b/api-ref/source/image/v2/samples/schema-metadef-namespace-show-response.json new file mode 100644 index 000000000..f98e4e03a --- /dev/null +++ b/api-ref/source/image/v2/samples/schema-metadef-namespace-show-response.json @@ -0,0 +1,212 @@ +{ + "additionalProperties": false, + "definitions": { + "positiveInteger": { + "minimum": 0, + "type": "integer" + }, + "positiveIntegerDefault0": { + "allOf": [ + { + "$ref": "#/definitions/positiveInteger" + }, + { + "default": 0 + } + ] + }, + "property": { + "additionalProperties": { + "properties": { + "additionalItems": { + "type": "boolean" + }, + "default": {}, + "description": { + "type": "string" + }, + "enum": { + "type": "array" + }, + "items": { + "properties": { + "enum": { + "type": "array" + }, + "type": { + "enum": [ + "array", + "boolean", + "integer", + "number", + "object", + "string", + null + ], + "type": "string" + } + }, + "type": "object" + }, + "maxItems": { + "$ref": "#/definitions/positiveInteger" + }, + "maxLength": { + "$ref": "#/definitions/positiveInteger" + }, + "maximum": { + "type": "number" + }, + "minItems": { + "$ref": "#/definitions/positiveIntegerDefault0" + }, + "minLength": { + "$ref": "#/definitions/positiveIntegerDefault0" + }, + "minimum": { + "type": "number" + }, + "name": { + "type": "string" + }, + "pattern": { + "format": "regex", + "type": "string" + }, + "readonly": { + "type": "boolean" + }, + "required": { + "$ref": "#/definitions/stringArray" + }, + "title": { + "type": "string" + }, + "type": { + "enum": [ + "array", + "boolean", + "integer", + "number", + "object", + "string", + null + ], + "type": "string" + }, + "uniqueItems": { + "default": false, + "type": "boolean" + } + }, + "required": [ + "title", + "type" + ], + "type": "object" + }, + "type": "object" + }, + "stringArray": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "name": "namespace", + "properties": { + "created_at": { + "description": "Date and time of namespace creation (READ-ONLY)", + "format": "date-time", + "type": "string" + }, + "description": { + "description": "Provides a user friendly description of the namespace.", + "maxLength": 500, + "type": "string" + }, + "display_name": { + "description": "The user friendly name for the namespace. Used by UI if available.", + "maxLength": 80, + "type": "string" + }, + "namespace": { + "description": "The unique namespace text.", + "maxLength": 80, + "type": "string" + }, + "objects": { + "items": { + "properties": { + "description": { + "type": "string" + }, + "name": { + "type": "string" + }, + "properties": { + "$ref": "#/definitions/property" + }, + "required": { + "$ref": "#/definitions/stringArray" + } + }, + "type": "object" + }, + "type": "array" + }, + "owner": { + "description": "Owner of the namespace.", + "maxLength": 255, + "type": "string" + }, + "properties": { + "$ref": "#/definitions/property" + }, + "protected": { + "description": "If true, namespace will not be deletable.", + "type": "boolean" + }, + "resource_type_associations": { + "items": { + "properties": { + "name": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "properties_target": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "schema": { + "type": "string" + }, + "self": { + "type": "string" + }, + "updated_at": { + "description": "Date and time of the last namespace modification (READ-ONLY)", + "format": "date-time", + "type": "string" + }, + "visibility": { + "description": "Scope of namespace accessibility.", + "enum": [ + "public", + "private" + ], + "type": "string" + } + }, + "required": [ + "namespace" + ] +} diff --git a/api-ref/source/image/v2/samples/schema-metadef-namespaces-list-response.json b/api-ref/source/image/v2/samples/schema-metadef-namespaces-list-response.json new file mode 100644 index 000000000..5a93f5e4c --- /dev/null +++ b/api-ref/source/image/v2/samples/schema-metadef-namespaces-list-response.json @@ -0,0 +1,243 @@ +{ + "definitions": { + "positiveInteger": { + "minimum": 0, + "type": "integer" + }, + "positiveIntegerDefault0": { + "allOf": [ + { + "$ref": "#/definitions/positiveInteger" + }, + { + "default": 0 + } + ] + }, + "property": { + "additionalProperties": { + "properties": { + "additionalItems": { + "type": "boolean" + }, + "default": {}, + "description": { + "type": "string" + }, + "enum": { + "type": "array" + }, + "items": { + "properties": { + "enum": { + "type": "array" + }, + "type": { + "enum": [ + "array", + "boolean", + "integer", + "number", + "object", + "string", + null + ], + "type": "string" + } + }, + "type": "object" + }, + "maxItems": { + "$ref": "#/definitions/positiveInteger" + }, + "maxLength": { + "$ref": "#/definitions/positiveInteger" + }, + "maximum": { + "type": "number" + }, + "minItems": { + "$ref": "#/definitions/positiveIntegerDefault0" + }, + "minLength": { + "$ref": "#/definitions/positiveIntegerDefault0" + }, + "minimum": { + "type": "number" + }, + "name": { + "type": "string" + }, + "pattern": { + "format": "regex", + "type": "string" + }, + "readonly": { + "type": "boolean" + }, + "required": { + "$ref": "#/definitions/stringArray" + }, + "title": { + "type": "string" + }, + "type": { + "enum": [ + "array", + "boolean", + "integer", + "number", + "object", + "string", + null + ], + "type": "string" + }, + "uniqueItems": { + "default": false, + "type": "boolean" + } + }, + "required": [ + "title", + "type" + ], + "type": "object" + }, + "type": "object" + }, + "stringArray": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "links": [ + { + "href": "{first}", + "rel": "first" + }, + { + "href": "{next}", + "rel": "next" + }, + { + "href": "{schema}", + "rel": "describedby" + } + ], + "name": "namespaces", + "properties": { + "first": { + "type": "string" + }, + "namespaces": { + "items": { + "additionalProperties": false, + "name": "namespace", + "properties": { + "created_at": { + "description": "Date and time of namespace creation (READ-ONLY)", + "format": "date-time", + "type": "string" + }, + "description": { + "description": "Provides a user friendly description of the namespace.", + "maxLength": 500, + "type": "string" + }, + "display_name": { + "description": "The user friendly name for the namespace. Used by UI if available.", + "maxLength": 80, + "type": "string" + }, + "namespace": { + "description": "The unique namespace text.", + "maxLength": 80, + "type": "string" + }, + "objects": { + "items": { + "properties": { + "description": { + "type": "string" + }, + "name": { + "type": "string" + }, + "properties": { + "$ref": "#/definitions/property" + }, + "required": { + "$ref": "#/definitions/stringArray" + } + }, + "type": "object" + }, + "type": "array" + }, + "owner": { + "description": "Owner of the namespace.", + "maxLength": 255, + "type": "string" + }, + "properties": { + "$ref": "#/definitions/property" + }, + "protected": { + "description": "If true, namespace will not be deletable.", + "type": "boolean" + }, + "resource_type_associations": { + "items": { + "properties": { + "name": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "properties_target": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "schema": { + "type": "string" + }, + "self": { + "type": "string" + }, + "updated_at": { + "description": "Date and time of the last namespace modification (READ-ONLY)", + "format": "date-time", + "type": "string" + }, + "visibility": { + "description": "Scope of namespace accessibility.", + "enum": [ + "public", + "private" + ], + "type": "string" + } + }, + "required": [ + "namespace" + ] + }, + "type": "array" + }, + "next": { + "type": "string" + }, + "schema": { + "type": "string" + } + } +} diff --git a/api-ref/source/image/v2/samples/schema-metadef-object-show-response.json b/api-ref/source/image/v2/samples/schema-metadef-object-show-response.json new file mode 100644 index 000000000..ac42e8564 --- /dev/null +++ b/api-ref/source/image/v2/samples/schema-metadef-object-show-response.json @@ -0,0 +1,152 @@ +{ + "additionalProperties": false, + "definitions": { + "positiveInteger": { + "minimum": 0, + "type": "integer" + }, + "positiveIntegerDefault0": { + "allOf": [ + { + "$ref": "#/definitions/positiveInteger" + }, + { + "default": 0 + } + ] + }, + "property": { + "additionalProperties": { + "properties": { + "additionalItems": { + "type": "boolean" + }, + "default": {}, + "description": { + "type": "string" + }, + "enum": { + "type": "array" + }, + "items": { + "properties": { + "enum": { + "type": "array" + }, + "type": { + "enum": [ + "array", + "boolean", + "integer", + "number", + "object", + "string", + null + ], + "type": "string" + } + }, + "type": "object" + }, + "maxItems": { + "$ref": "#/definitions/positiveInteger" + }, + "maxLength": { + "$ref": "#/definitions/positiveInteger" + }, + "maximum": { + "type": "number" + }, + "minItems": { + "$ref": "#/definitions/positiveIntegerDefault0" + }, + "minLength": { + "$ref": "#/definitions/positiveIntegerDefault0" + }, + "minimum": { + "type": "number" + }, + "name": { + "type": "string" + }, + "pattern": { + "format": "regex", + "type": "string" + }, + "readonly": { + "type": "boolean" + }, + "required": { + "$ref": "#/definitions/stringArray" + }, + "title": { + "type": "string" + }, + "type": { + "enum": [ + "array", + "boolean", + "integer", + "number", + "object", + "string", + null + ], + "type": "string" + }, + "uniqueItems": { + "default": false, + "type": "boolean" + } + }, + "required": [ + "title", + "type" + ], + "type": "object" + }, + "type": "object" + }, + "stringArray": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "name": "object", + "properties": { + "created_at": { + "description": "Date and time of object creation (READ-ONLY)", + "format": "date-time", + "type": "string" + }, + "description": { + "type": "string" + }, + "name": { + "type": "string" + }, + "properties": { + "$ref": "#/definitions/property" + }, + "required": { + "$ref": "#/definitions/stringArray" + }, + "schema": { + "type": "string" + }, + "self": { + "type": "string" + }, + "updated_at": { + "description": "Date and time of the last object modification (READ-ONLY)", + "format": "date-time", + "type": "string" + } + }, + "required": [ + "name" + ] +} diff --git a/api-ref/source/image/v2/samples/schema-metadef-objects-list-response.json b/api-ref/source/image/v2/samples/schema-metadef-objects-list-response.json new file mode 100644 index 000000000..fb24c87a9 --- /dev/null +++ b/api-ref/source/image/v2/samples/schema-metadef-objects-list-response.json @@ -0,0 +1,183 @@ +{ + "definitions": { + "positiveInteger": { + "minimum": 0, + "type": "integer" + }, + "positiveIntegerDefault0": { + "allOf": [ + { + "$ref": "#/definitions/positiveInteger" + }, + { + "default": 0 + } + ] + }, + "property": { + "additionalProperties": { + "properties": { + "additionalItems": { + "type": "boolean" + }, + "default": {}, + "description": { + "type": "string" + }, + "enum": { + "type": "array" + }, + "items": { + "properties": { + "enum": { + "type": "array" + }, + "type": { + "enum": [ + "array", + "boolean", + "integer", + "number", + "object", + "string", + null + ], + "type": "string" + } + }, + "type": "object" + }, + "maxItems": { + "$ref": "#/definitions/positiveInteger" + }, + "maxLength": { + "$ref": "#/definitions/positiveInteger" + }, + "maximum": { + "type": "number" + }, + "minItems": { + "$ref": "#/definitions/positiveIntegerDefault0" + }, + "minLength": { + "$ref": "#/definitions/positiveIntegerDefault0" + }, + "minimum": { + "type": "number" + }, + "name": { + "type": "string" + }, + "pattern": { + "format": "regex", + "type": "string" + }, + "readonly": { + "type": "boolean" + }, + "required": { + "$ref": "#/definitions/stringArray" + }, + "title": { + "type": "string" + }, + "type": { + "enum": [ + "array", + "boolean", + "integer", + "number", + "object", + "string", + null + ], + "type": "string" + }, + "uniqueItems": { + "default": false, + "type": "boolean" + } + }, + "required": [ + "title", + "type" + ], + "type": "object" + }, + "type": "object" + }, + "stringArray": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "links": [ + { + "href": "{first}", + "rel": "first" + }, + { + "href": "{next}", + "rel": "next" + }, + { + "href": "{schema}", + "rel": "describedby" + } + ], + "name": "objects", + "properties": { + "first": { + "type": "string" + }, + "next": { + "type": "string" + }, + "objects": { + "items": { + "additionalProperties": false, + "name": "object", + "properties": { + "created_at": { + "description": "Date and time of object creation (READ-ONLY)", + "format": "date-time", + "type": "string" + }, + "description": { + "type": "string" + }, + "name": { + "type": "string" + }, + "properties": { + "$ref": "#/definitions/property" + }, + "required": { + "$ref": "#/definitions/stringArray" + }, + "schema": { + "type": "string" + }, + "self": { + "type": "string" + }, + "updated_at": { + "description": "Date and time of the last object modification (READ-ONLY)", + "format": "date-time", + "type": "string" + } + }, + "required": [ + "name" + ] + }, + "type": "array" + }, + "schema": { + "type": "string" + } + } +} diff --git a/api-ref/source/image/v2/samples/schema-metadef-properties-list-response.json b/api-ref/source/image/v2/samples/schema-metadef-properties-list-response.json new file mode 100644 index 000000000..915a9b9fb --- /dev/null +++ b/api-ref/source/image/v2/samples/schema-metadef-properties-list-response.json @@ -0,0 +1,145 @@ +{ + "definitions": { + "positiveInteger": { + "minimum": 0, + "type": "integer" + }, + "positiveIntegerDefault0": { + "allOf": [ + { + "$ref": "#/definitions/positiveInteger" + }, + { + "default": 0 + } + ] + }, + "stringArray": { + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "links": [ + { + "href": "{first}", + "rel": "first" + }, + { + "href": "{next}", + "rel": "next" + }, + { + "href": "{schema}", + "rel": "describedby" + } + ], + "name": "properties", + "properties": { + "first": { + "type": "string" + }, + "next": { + "type": "string" + }, + "properties": { + "additionalProperties": { + "additionalProperties": false, + "name": "property", + "properties": { + "additionalItems": { + "type": "boolean" + }, + "default": {}, + "description": { + "type": "string" + }, + "enum": { + "type": "array" + }, + "items": { + "properties": { + "enum": { + "type": "array" + }, + "type": { + "enum": [ + "array", + "boolean", + "integer", + "number", + "object", + "string", + null + ], + "type": "string" + } + }, + "type": "object" + }, + "maxItems": { + "$ref": "#/definitions/positiveInteger" + }, + "maxLength": { + "$ref": "#/definitions/positiveInteger" + }, + "maximum": { + "type": "number" + }, + "minItems": { + "$ref": "#/definitions/positiveIntegerDefault0" + }, + "minLength": { + "$ref": "#/definitions/positiveIntegerDefault0" + }, + "minimum": { + "type": "number" + }, + "name": { + "type": "string" + }, + "pattern": { + "format": "regex", + "type": "string" + }, + "readonly": { + "type": "boolean" + }, + "required": { + "$ref": "#/definitions/stringArray" + }, + "title": { + "type": "string" + }, + "type": { + "enum": [ + "array", + "boolean", + "integer", + "number", + "object", + "string", + null + ], + "type": "string" + }, + "uniqueItems": { + "default": false, + "type": "boolean" + } + }, + "required": [ + "type", + "title" + ] + }, + "type": "object" + }, + "schema": { + "type": "string" + } + } +} diff --git a/api-ref/source/image/v2/samples/schema-metadef-property-show-response.json b/api-ref/source/image/v2/samples/schema-metadef-property-show-response.json new file mode 100644 index 000000000..aad9ebcc1 --- /dev/null +++ b/api-ref/source/image/v2/samples/schema-metadef-property-show-response.json @@ -0,0 +1,115 @@ +{ + "additionalProperties": false, + "definitions": { + "positiveInteger": { + "minimum": 0, + "type": "integer" + }, + "positiveIntegerDefault0": { + "allOf": [ + { + "$ref": "#/definitions/positiveInteger" + }, + { + "default": 0 + } + ] + }, + "stringArray": { + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "name": "property", + "properties": { + "additionalItems": { + "type": "boolean" + }, + "default": {}, + "description": { + "type": "string" + }, + "enum": { + "type": "array" + }, + "items": { + "properties": { + "enum": { + "type": "array" + }, + "type": { + "enum": [ + "array", + "boolean", + "integer", + "number", + "object", + "string", + null + ], + "type": "string" + } + }, + "type": "object" + }, + "maxItems": { + "$ref": "#/definitions/positiveInteger" + }, + "maxLength": { + "$ref": "#/definitions/positiveInteger" + }, + "maximum": { + "type": "number" + }, + "minItems": { + "$ref": "#/definitions/positiveIntegerDefault0" + }, + "minLength": { + "$ref": "#/definitions/positiveIntegerDefault0" + }, + "minimum": { + "type": "number" + }, + "name": { + "type": "string" + }, + "pattern": { + "format": "regex", + "type": "string" + }, + "readonly": { + "type": "boolean" + }, + "required": { + "$ref": "#/definitions/stringArray" + }, + "title": { + "type": "string" + }, + "type": { + "enum": [ + "array", + "boolean", + "integer", + "number", + "object", + "string", + null + ], + "type": "string" + }, + "uniqueItems": { + "default": false, + "type": "boolean" + } + }, + "required": [ + "type", + "title", + "name" + ] +} diff --git a/api-ref/source/image/v2/samples/schema-metadef-resource-type-association-show-response.json b/api-ref/source/image/v2/samples/schema-metadef-resource-type-association-show-response.json new file mode 100644 index 000000000..45aa141b3 --- /dev/null +++ b/api-ref/source/image/v2/samples/schema-metadef-resource-type-association-show-response.json @@ -0,0 +1,34 @@ +{ + "additionalProperties": false, + "name": "resource_type_association", + "properties": { + "created_at": { + "description": "Date and time of resource type association (READ-ONLY)", + "format": "date-time", + "type": "string" + }, + "name": { + "description": "Resource type names should be aligned with Heat resource types whenever possible: http://docs.openstack.org/developer/heat/template_guide/openstack.html", + "maxLength": 80, + "type": "string" + }, + "prefix": { + "description": "Specifies the prefix to use for the given resource type. Any properties in the namespace should be prefixed with this prefix when being applied to the specified resource type. Must include prefix separator (e.g. a colon :). It is important to note that the same base property key can require different prefixes depending on the target resource type. For example: The desired virtual CPU topology can be set on both images and flavors via metadata. The keys have different prefixes on images than on flavors On flavors keys are prefixed with 'hw:', but on images the keys are prefixed with 'hw_'.", + "maxLength": 80, + "type": "string" + }, + "properties_target": { + "description": "Some resource types allow more than one key / value pair per instance. For example, Cinder allows user and image metadata on volumes. Only the image properties metadata is evaluated by Nova (scheduling or drivers). This property allows a namespace target to remove the ambiguity.", + "maxLength": 80, + "type": "string" + }, + "updated_at": { + "description": "Date and time of the last resource type association modification (READ-ONLY)", + "format": "date-time", + "type": "string" + } + }, + "required": [ + "name" + ] +} diff --git a/api-ref/source/image/v2/samples/schema-metadef-resource-type-associations-list-response.json b/api-ref/source/image/v2/samples/schema-metadef-resource-type-associations-list-response.json new file mode 100644 index 000000000..c63116824 --- /dev/null +++ b/api-ref/source/image/v2/samples/schema-metadef-resource-type-associations-list-response.json @@ -0,0 +1,65 @@ +{ + "links": [ + { + "href": "{first}", + "rel": "first" + }, + { + "href": "{next}", + "rel": "next" + }, + { + "href": "{schema}", + "rel": "describedby" + } + ], + "name": "resource_type_associations", + "properties": { + "first": { + "type": "string" + }, + "next": { + "type": "string" + }, + "resource_type_associations": { + "items": { + "additionalProperties": false, + "name": "resource_type_association", + "properties": { + "created_at": { + "description": "Date and time of resource type association (READ-ONLY)", + "format": "date-time", + "type": "string" + }, + "name": { + "description": "Resource type names should be aligned with Heat resource types whenever possible: http://docs.openstack.org/developer/heat/template_guide/openstack.html", + "maxLength": 80, + "type": "string" + }, + "prefix": { + "description": "Specifies the prefix to use for the given resource type. Any properties in the namespace should be prefixed with this prefix when being applied to the specified resource type. Must include prefix separator (e.g. a colon :). It is important to note that the same base property key can require different prefixes depending on the target resource type. For example: The desired virtual CPU topology can be set on both images and flavors via metadata. The keys have different prefixes on images than on flavors On flavors keys are prefixed with 'hw:', but on images the keys are prefixed with 'hw_'.", + "maxLength": 80, + "type": "string" + }, + "properties_target": { + "description": "Some resource types allow more than one key / value pair per instance. For example, Cinder allows user and image metadata on volumes. Only the image properties metadata is evaluated by Nova (scheduling or drivers). This property allows a namespace target to remove the ambiguity.", + "maxLength": 80, + "type": "string" + }, + "updated_at": { + "description": "Date and time of the last resource type association modification (READ-ONLY)", + "format": "date-time", + "type": "string" + } + }, + "required": [ + "name" + ] + }, + "type": "array" + }, + "schema": { + "type": "string" + } + } +} diff --git a/api-ref/source/image/v2/samples/schema-metadef-tag-show-response.json b/api-ref/source/image/v2/samples/schema-metadef-tag-show-response.json new file mode 100644 index 000000000..4e388d5b8 --- /dev/null +++ b/api-ref/source/image/v2/samples/schema-metadef-tag-show-response.json @@ -0,0 +1,22 @@ +{ + "additionalProperties": false, + "required": [ + "name" + ], + "name": "tag", + "properties": { + "created_at": { + "type": "string", + "description": "Date and time of tag creation (READ-ONLY)", + "format": "date-time" + }, + "name": { + "type": "string" + }, + "updated_at": { + "type": "string", + "description": "Date and time of the last tag modification (READ-ONLY)", + "format": "date-time" + } + } +} diff --git a/api-ref/source/image/v2/samples/schema-metadef-tags-list-response.json b/api-ref/source/image/v2/samples/schema-metadef-tags-list-response.json new file mode 100644 index 000000000..a74fa0e58 --- /dev/null +++ b/api-ref/source/image/v2/samples/schema-metadef-tags-list-response.json @@ -0,0 +1,53 @@ +{ + "name": "tags", + "links": [ + { + "href": "{first}", + "rel": "first" + }, + { + "href": "{next}", + "rel": "next" + }, + { + "href": "{schema}", + "rel": "describedby" + } + ], + "properties": { + "next": { + "type": "string" + }, + "schema": { + "type": "string" + }, + "first": { + "type": "string" + }, + "tags": { + "items": { + "additionalProperties": false, + "required": [ + "name" + ], + "name": "tag", + "properties": { + "created_at": { + "type": "string", + "description": "Date and time of tag creation (READ-ONLY)", + "format": "date-time" + }, + "name": { + "type": "string" + }, + "updated_at": { + "type": "string", + "description": "Date and time of the last tag modification (READ-ONLY)", + "format": "date-time" + } + } + }, + "type": "array" + } + } +} diff --git a/api-ref/source/image/v2/samples/schemas-image-members-list-response.json b/api-ref/source/image/v2/samples/schemas-image-members-list-response.json new file mode 100644 index 000000000..56a160266 --- /dev/null +++ b/api-ref/source/image/v2/samples/schemas-image-members-list-response.json @@ -0,0 +1,51 @@ +{ + "links": [ + { + "href": "{schema}", + "rel": "describedby" + } + ], + "name": "members", + "properties": { + "members": { + "items": { + "name": "member", + "properties": { + "created_at": { + "description": "Date and time of image member creation", + "type": "string" + }, + "image_id": { + "description": "An identifier for the image", + "pattern": "^([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}$", + "type": "string" + }, + "member_id": { + "description": "An identifier for the image member (tenantId)", + "type": "string" + }, + "schema": { + "type": "string" + }, + "status": { + "description": "The status of this image member", + "enum": [ + "pending", + "accepted", + "rejected" + ], + "type": "string" + }, + "updated_at": { + "description": "Date and time of last modification of image member", + "type": "string" + } + } + }, + "type": "array" + }, + "schema": { + "type": "string" + } + } +} diff --git a/api-ref/source/image/v2/samples/schemas-images-list-response.json b/api-ref/source/image/v2/samples/schemas-images-list-response.json new file mode 100644 index 000000000..2d148eb93 --- /dev/null +++ b/api-ref/source/image/v2/samples/schemas-images-list-response.json @@ -0,0 +1,247 @@ +{ + "links": [ + { + "href": "{first}", + "rel": "first" + }, + { + "href": "{next}", + "rel": "next" + }, + { + "href": "{schema}", + "rel": "describedby" + } + ], + "name": "images", + "properties": { + "first": { + "type": "string" + }, + "images": { + "items": { + "additionalProperties": { + "type": "string" + }, + "links": [ + { + "href": "{self}", + "rel": "self" + }, + { + "href": "{file}", + "rel": "enclosure" + }, + { + "href": "{schema}", + "rel": "describedby" + } + ], + "name": "image", + "properties": { + "architecture": { + "description": "Operating system architecture as specified in http://docs.openstack.org/trunk/openstack-compute/admin/content/adding-images.html", + "is_base": false, + "type": "string" + }, + "checksum": { + "description": "md5 hash of image contents. (READ-ONLY)", + "maxLength": 32, + "type": [ + "null", + "string" + ] + }, + "container_format": { + "description": "Format of the container", + "enum": [ + null, + "ami", + "ari", + "aki", + "bare", + "ovf", + "ova" + ], + "type": [ + "null", + "string" + ] + }, + "created_at": { + "description": "Date and time of image registration (READ-ONLY)", + "type": "string" + }, + "direct_url": { + "description": "URL to access the image file kept in external store (READ-ONLY)", + "type": "string" + }, + "disk_format": { + "description": "Format of the disk", + "enum": [ + null, + "ami", + "ari", + "aki", + "vhd", + "vmdk", + "raw", + "qcow2", + "vdi", + "iso" + ], + "type": [ + "null", + "string" + ] + }, + "file": { + "description": "(READ-ONLY)", + "type": "string" + }, + "id": { + "description": "An identifier for the image", + "pattern": "^([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}$", + "type": "string" + }, + "instance_uuid": { + "description": "ID of instance used to create this image.", + "is_base": false, + "type": "string" + }, + "kernel_id": { + "description": "ID of image stored in Glance that should be used as the kernel when booting an AMI-style image.", + "is_base": false, + "pattern": "^([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}$", + "type": "string" + }, + "locations": { + "description": "A set of URLs to access the image file kept in external store", + "items": { + "properties": { + "metadata": { + "type": "object" + }, + "url": { + "maxLength": 255, + "type": "string" + } + }, + "required": [ + "url", + "metadata" + ], + "type": "object" + }, + "type": "array" + }, + "min_disk": { + "description": "Amount of disk space (in GB) required to boot image.", + "type": "integer" + }, + "min_ram": { + "description": "Amount of ram (in MB) required to boot image.", + "type": "integer" + }, + "name": { + "description": "Descriptive name for the image", + "maxLength": 255, + "type": [ + "null", + "string" + ] + }, + "os_distro": { + "description": "Common name of operating system distribution as specified in http://docs.openstack.org/trunk/openstack-compute/admin/content/adding-images.html", + "is_base": false, + "type": "string" + }, + "os_version": { + "description": "Operating system version as specified by the distributor", + "is_base": false, + "type": "string" + }, + "owner": { + "description": "Owner of the image", + "maxLength": 255, + "type": [ + "null", + "string" + ] + }, + "protected": { + "description": "If true, image will not be deletable.", + "type": "boolean" + }, + "ramdisk_id": { + "description": "ID of image stored in Glance that should be used as the ramdisk when booting an AMI-style image.", + "is_base": false, + "pattern": "^([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}$", + "type": "string" + }, + "schema": { + "description": "(READ-ONLY)", + "type": "string" + }, + "self": { + "description": "(READ-ONLY)", + "type": "string" + }, + "size": { + "description": "Size of image file in bytes (READ-ONLY)", + "type": [ + "null", + "integer" + ] + }, + "status": { + "description": "Status of the image (READ-ONLY)", + "enum": [ + "queued", + "saving", + "active", + "killed", + "deleted", + "pending_delete" + ], + "type": "string" + }, + "tags": { + "description": "List of strings related to the image", + "items": { + "maxLength": 255, + "type": "string" + }, + "type": "array" + }, + "updated_at": { + "description": "Date and time of the last image modification (READ-ONLY)", + "type": "string" + }, + "virtual_size": { + "description": "Virtual size of image in bytes (READ-ONLY)", + "type": [ + "null", + "integer" + ] + }, + "visibility": { + "description": "Scope of image accessibility", + "enum": [ + "public", + "private" + ], + "type": "string" + } + } + }, + "type": "array" + }, + "next": { + "type": "string" + }, + "schema": { + "type": "string" + } + } +} diff --git a/api-ref/source/image/v2/samples/task-create-request.json b/api-ref/source/image/v2/samples/task-create-request.json new file mode 100644 index 000000000..de364fad0 --- /dev/null +++ b/api-ref/source/image/v2/samples/task-create-request.json @@ -0,0 +1,11 @@ +{ + "type": "import", + "input": { + "import_from": "http://example.com", + "import_from_format": "qcow2", + "image_properties": { + "disk_format": "vhd", + "container_format": "ovf" + } + } +} diff --git a/api-ref/source/image/v2/samples/task-show-response.json b/api-ref/source/image/v2/samples/task-show-response.json new file mode 100644 index 000000000..c6150dd12 --- /dev/null +++ b/api-ref/source/image/v2/samples/task-show-response.json @@ -0,0 +1,5 @@ +{ + "id": "e7e59ff6-fa2e-4075-87d3-1a1398a07dc3", + "type": "import", + "status": "pending" +} diff --git a/api-ref/source/image/v2/samples/tasks-list-response.json b/api-ref/source/image/v2/samples/tasks-list-response.json new file mode 100644 index 000000000..8012f56a5 --- /dev/null +++ b/api-ref/source/image/v2/samples/tasks-list-response.json @@ -0,0 +1,14 @@ +{ + "tasks": [ + { + "id": "cbc36478b0bd8e67e89469c7749d4127", + "type": "import", + "status": "pending" + }, + { + "id": "bbc36578b0bd8e67e89469c7749d4126", + "type": "import", + "status": "processing" + } + ] +} diff --git a/api-ref/source/image/v2/schemas-metadefs-v2.inc b/api-ref/source/image/v2/schemas-metadefs-v2.inc new file mode 100644 index 000000000..ff28d4434 --- /dev/null +++ b/api-ref/source/image/v2/schemas-metadefs-v2.inc @@ -0,0 +1,350 @@ +.. -*- rst -*- + +======================================================================================================================================================= +Metadata definition schemas (schemas, metadefs, namespace, namespaces, object, objects, property, properties, tag, tags, resource_type, resource_types) +======================================================================================================================================================= + +Gets a JSON-schema document that represents a metadata definition +entity. + + +Show metadata definition namespaces schema +========================================== + +.. rest_method:: GET /v2/schemas/metadefs/namespaces + +(Since API v2.1) Shows a JSON schema document that represents a metadata definition namespaces entity. + +A namespaces entity is a container for namespace entities. + +The following schema document is an example. The authoritative +response is the actual response to the API call. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/schema-metadef-namespaces-list-response.json + :language: javascript + + + + +Show metadata definition property schema +======================================== + +.. rest_method:: GET /v2/schemas/metadefs/property + +(Since API v2.1) Shows a JSON schema document that represents a metadata definition property entity. + +The following schema document is an example. The authoritative +response is the actual response to the API call. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/schema-metadef-property-show-response.json + :language: javascript + + + + +Show metadata definition object schema +====================================== + +.. rest_method:: GET /v2/schemas/metadefs/object + +(Since API v2.1) Shows a JSON schema document that represents a metadata definition object entity. + +The following schema document is an example. The authoritative +response is the actual response to the API call. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/schema-metadef-object-show-response.json + :language: javascript + + + + +Show metadata definition namespace resource type association schema +=================================================================== + +.. rest_method:: GET /v2/schemas/metadefs/resource_type + +(Since API v2.1) Shows a JSON schema document that represents a metadata definition namespace resource type association entity. + +The following schema document is an example. The authoritative +response is the actual response to the API call. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/schema-metadef-resource-type-association-show-response.json + :language: javascript + + + + +Show metadata definition tags schema +==================================== + +.. rest_method:: GET /v2/schemas/metadefs/tags + +(Since API v2.1) Shows a JSON schema document that represents a metadata definition tags entity. + +A tags entity is a container for tag entities. + +The following schema document is an example. The authoritative +response is the actual response to the API call. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/schema-metadef-tags-list-response.json + :language: javascript + + + + +Show metadata definition properties schema +========================================== + +.. rest_method:: GET /v2/schemas/metadefs/properties + +(Since API v2.1) Shows a JSON schema document that represents a metadata definition properties entity. + +A properties entity is a container for property entities. + +The following schema document is an example. The authoritative +response is the actual response to the API call. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/schema-metadef-properties-list-response.json + :language: javascript + + + + +Show metadata definition namespace resource type associations schema +==================================================================== + +.. rest_method:: GET /v2/schemas/metadefs/resource_types + +(Since API v2.1) Shows a JSON schema document that represents a metadata definition namespace resource type associations entity. + +A resource type associations entity is a container for resource +type association entities. + +The following schema document is an example. The authoritative +response is the actual response to the API call. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/schema-metadef-resource-type-associations-list-response.json + :language: javascript + + + + +Show metadata definition tag schema +=================================== + +.. rest_method:: GET /v2/schemas/metadefs/tag + +(Since API v2.1) Shows a JSON schema document that represents a metadata definition tag entity. + +The following schema document is an example. The authoritative +response is the actual response to the API call. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/schema-metadef-tag-show-response.json + :language: javascript + + + + +Show metadata definition namespace schema +========================================= + +.. rest_method:: GET /v2/schemas/metadefs/namespace + +(Since API v2.1) Shows a JSON schema document that represents a metadata definition namespace entity. + +The following schema document is an example. The authoritative +response is the actual response to the API call. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/schema-metadef-namespace-show-response.json + :language: javascript + + + + +Show metadata definition objects schema +======================================= + +.. rest_method:: GET /v2/schemas/metadefs/objects + +(Since API v2.1) Shows a JSON schema document that represents a metadata definition objects entity. + +An objects entity is a container for object entities. + +The following schema document is an example. The authoritative +response is the actual response to the API call. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/schema-metadef-objects-list-response.json + :language: javascript + + + diff --git a/api-ref/source/image/v2/versions-images.inc b/api-ref/source/image/v2/versions-images.inc new file mode 100644 index 000000000..ccd968547 --- /dev/null +++ b/api-ref/source/image/v2/versions-images.inc @@ -0,0 +1,29 @@ +.. -*- rst -*- + +============ +API versions +============ + + + + +List API versions +================= + +.. rest_method:: GET / + +Lists version information for all Image service API versions. + +Error response codes:300, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + + diff --git a/api-ref/source/networking/v2-ext/extensions.inc b/api-ref/source/networking/v2-ext/extensions.inc new file mode 100644 index 000000000..0cb2a1d94 --- /dev/null +++ b/api-ref/source/networking/v2-ext/extensions.inc @@ -0,0 +1,102 @@ +.. -*- rst -*- + +========== +Extensions +========== + +Lists available Networking API v2.0 extensions and shows details +for an extension. + + +List extensions +=============== + +.. rest_method:: GET /v2.0/extensions + +Lists available extensions. + +Extensions introduce features and vendor-specific functionality to +the API. + +The response shows the extension name and its alias. To show +details for an extension, you specify the alias. + + +Normal response codes: 200 +Error response codes:203, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - updated: updated + - description: description + - links: links + - alias: alias + - extension: extension + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/extensions/extensions-list-response.json + :language: javascript + + + + + +Show extension details +====================== + +.. rest_method:: GET /v2.0/extensions/{alias} + +Shows details for an extension, by alias. + + +Normal response codes: 200 +Error response codes:203, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - alias: alias + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - updated: updated + - description: description + - links: links + - alias: alias + - extension: extension + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/extensions/extension-show-response.json + :language: javascript + + + + diff --git a/api-ref/source/networking/v2-ext/extraroute.inc b/api-ref/source/networking/v2-ext/extraroute.inc new file mode 100644 index 000000000..4695e0bcf --- /dev/null +++ b/api-ref/source/networking/v2-ext/extraroute.inc @@ -0,0 +1,91 @@ +.. -*- rst -*- + +====================== +Extra routes (routers) +====================== + +Adds extra routes to the ``router`` resource. + +You can update a router to add a set of next hop IPs and +destination CIDRs. + +The next hop IP must be part of a subnet to which the router +interfaces are connected. You can configure the ``routes`` +attribute on only update operations. + + +Update extra routes +=================== + +.. rest_method:: PUT /v2.0/routers/{router_id} + +Updates extra routes on a router. + +The next hop IP address must be a part of one of the subnets to +which the router interfaces are connected. Otherwise, the server +responds with the ``Bad Request (400)`` error code. + +When a validation error is detected, such as a format error of IP +address or CIDR, the server responds with the ``Bad Request (400)`` +response code. + +When Networking receives a request to delete the router interface +for subnets that are used by one or more routes, it responds with a +``Conflict (409)`` response code. + + +Normal response codes: 200 +Error response codes:404,409,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - external_gateway_info: external_gateway_info + - destination: destination + - nexthop: nexthop + - routes: routes + - router: router + - external_fixed_ips: external_fixed_ips + - router_id: router_id + +Request Example +--------------- + +.. literalinclude:: ../samples/routers/router-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - external_gateway_info: external_gateway_info + - status: status + - enable_snat: enable_snat + - name: name + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - routes: routes + - router: router + - id: id + - external_fixed_ips: external_fixed_ips + + + +Response Example +---------------- + +.. literalinclude:: ../samples/routers/router-update-response.json + :language: javascript + + + + + + + diff --git a/api-ref/source/networking/v2-ext/flavors-framework-v2.0.inc b/api-ref/source/networking/v2-ext/flavors-framework-v2.0.inc new file mode 100644 index 000000000..6cc6caf66 --- /dev/null +++ b/api-ref/source/networking/v2-ext/flavors-framework-v2.0.inc @@ -0,0 +1,612 @@ +.. -*- rst -*- + +===================================================================== +Networking Flavors Framework v2.0 (CURRENT) (flavor, service_profile) +===================================================================== + +Extension that allows user selection of operator-curated flavors +during resource creation. + +Service ``q-flavors`` must be enabled in the configuration to use +this feature. + + +Disassociate a flavor. +====================== + +.. rest_method:: DELETE /v2.0/flavors/{flavor_id}/service_profiles/{profile_id} + +Disassociate a flavor from a service profile. + +Error response codes:404,403,204,401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - profile_id: profile_id + - flavor_id: flavor_id + + + + + + + + + +Show service profile details +============================ + +.. rest_method:: GET /v2.0/service_profiles/{profile_id} + +Shows details for a service profile. + +This operation returns a service profile object by ID. If you are +not an administrative user and the object is not visible to your +tenant account, the service returns the HTTP ``Forbidden (403)`` +response code. + + +Normal response codes: 200 +Error response codes:404,403,401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - profile_id: profile_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - driver: driver + - enabled: enabled + - metainfo: metainfo + - service_profile: service_profile + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/flavors/service-profile-show-response.json + :language: javascript + + + + + + + +Update service profile +====================== + +.. rest_method:: PUT /v2.0/service_profiles/{profile_id} + +Updates a service profile. + + +Normal response codes: 200 +Error response codes:404,403,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - service_profile: service_profile + - enabled: enabled + - driver: driver + - description: description + - metainfo: metainfo + - profile_id: profile_id + +Request Example +--------------- + +.. literalinclude:: ../samples/flavors/service-profile-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - driver: driver + - enabled: enabled + - metainfo: metainfo + - service_profile: service_profile + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/flavors/service-profile-update-response.json + :language: javascript + + + + + + + + +Delete service profile +====================== + +.. rest_method:: DELETE /v2.0/service_profiles/{profile_id} + +Deletes a service profile. + +Attempting to delete a service profile that is currently associated +with a flavor will return a ``Conflict 409`` with a response body +containing an in use message. + +Error response codes:409,404,403,204,401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - profile_id: profile_id + + + + + + + + + + +List service profiles +===================== + +.. rest_method:: GET /v2.0/service_profiles + +Lists all service profiles visible for the tenant account. + +The list can be empty. + +Standard query parameters are supported on the URI. + + +Normal response codes: 200 +Error response codes:401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - driver: driver + - enabled: enabled + - metainfo: metainfo + - service_profiles: service_profiles + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/flavors/service-profiles-list-response.json + :language: javascript + + + + + +Create service profile +====================== + +.. rest_method:: POST /v2.0/service_profiles + +Creates a service profile. + +This operation establishes a new service profile that can be +associated with one or more flavors. + +Either metadata or a driver is required. + +If a driver is specified but does not exist, call will return a +``Not found 404`` error with the response body explaining that the +driver could not be found. + +Creation currently limited to administrators. Other users will +receive a ``Forbidden 403`` response code with a response body +NeutronError message expressing that creation is disallowed by +policy. + +If the API cannot fulfill the request due to insufficient data or +data that is not valid, the service returns the HTTP ``Bad Request +(400)`` response code with information about the failure in the +response body. Validation errors require that you correct the error +and submit the request again. + +Error response codes:201,403,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - service_profile: service_profile + - enabled: enabled + - driver: driver + - description: description + - metainfo: metainfo + +Request Example +--------------- + +.. literalinclude:: ../samples/flavors/service-profile-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - driver: driver + - enabled: enabled + - metainfo: metainfo + - service_profile: service_profile + - id: id + + + + + + + + +List flavors +============ + +.. rest_method:: GET /v2.0/flavors + +Lists all flavors visible for the tenant account. + +The list can be empty. + +Standard query parameters are supported on the URI. For example, +``fields`` can be used to limit the returned response to just name +by appending ``?fields=name``. If Neutron configuration supports +pagination by overriding allow_pagination = false, the ``marker`` +query parameter can set the last element id the client has seen and +``limit`` set the maximum number of items to return. if Neutron +configuration has allow_sorting = true, ``sort_key`` and +``sort_dir`` pairs can be used where sort direction is 'asc' or +'desc'. + + +Normal response codes: 200 +Error response codes:401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - flavors: flavors + - description: description + - enabled: enabled + - service_profiles: service_profiles + - service_type: service_type + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/flavors/flavors-list-response.json + :language: javascript + + + + + +Create flavor +============= + +.. rest_method:: POST /v2.0/flavors + +Creates a flavor. + +This operation establishes a new flavor. + +The service_type to which the flavor applies is a required +parameter. The corresponding service plugin must have been +activated as part of the configuration. See `Service providers +`_ for how to see currently loaded service types. Additionally +the service plugin needs to support the use of flavors. For +example, the LOADBALANCERV2 service type using the LBaaSv2 API +currently supports Neutron service flavors. + +Creation currently limited to administrators. Other users will +receive a ``Forbidden 403`` response code with a response body +NeutronError message expressing that creation is disallowed by +policy. + +Until one or more service profiles are associated with the flavor +by the operator, attempts to use the flavor during resource +creations will currently return a ``Not Found 404`` with a response +body that indicates no service profile could be found. + +If the API cannot fulfill the request due to insufficient data or +data that is not valid, the service returns the HTTP ``Bad Request +(400)`` response code with information about the failure in the +response body. Validation errors require that you correct the error +and submit the request again. + +Error response codes:201,403,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - service_type: service_type + - flavor: flavor + - enabled: enabled + - description: description + - name: name + +Request Example +--------------- + +.. literalinclude:: ../samples/flavors/flavor-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - enabled: enabled + - service_profiles: service_profiles + - service_type: service_type + - flavor: flavor + - id: id + - name: name + + + + + + + + +Associate flavor +================ + +.. rest_method:: POST /v2.0/flavors/{flavor_id}/service_profiles + +Associate a flavor with a service profile. + +A flavor can be associated with more than one profile. + +Will return ``409 Conflict`` if association already exists. + +Error response codes:201,404,403,401,400,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - service_profile: service_profile + - id: id + - flavor_id: flavor_id + +Request Example +--------------- + +.. literalinclude:: ../samples/flavors/flavor-associate-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - service_profile: service_profile + - id: id + + + + + + + + + + +Show flavor details +=================== + +.. rest_method:: GET /v2.0/flavors/{flavor_id} + +Shows details for a flavor. + +This operation returns a flavor object by ID. If you are not an +administrative user and the flavor object is not visible to your +tenant account, the service returns the HTTP ``Forbidden (403)`` +response code. + + +Normal response codes: 200 +Error response codes:404,403,401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - flavor_id: flavor_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - enabled: enabled + - service_profiles: service_profiles + - service_type: service_type + - flavor: flavor + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/flavors/flavor-show-response.json + :language: javascript + + + + + + + +Update flavor +============= + +.. rest_method:: PUT /v2.0/flavors/{flavor_id} + +Updates a flavor. + +The service_type cannot be updated as there may be associated +service profiles and consumers depending on the value. + + +Normal response codes: 200 +Error response codes:404,403,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - flavor: flavor + - enabled: enabled + - description: description + - name: name + - flavor_id: flavor_id + +Request Example +--------------- + +.. literalinclude:: ../samples/flavors/flavor-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - enabled: enabled + - service_profiles: service_profiles + - service_type: service_type + - flavor: flavor + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/flavors/flavor-update-response.json + :language: javascript + + + + + + + + +Delete flavor +============= + +.. rest_method:: DELETE /v2.0/flavors/{flavor_id} + +Deletes a flavor. + +Error response codes:404,403,204,401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - flavor_id: flavor_id + + + + + + + + diff --git a/api-ref/source/networking/v2-ext/fwaas-v2.0.inc b/api-ref/source/networking/v2-ext/fwaas-v2.0.inc new file mode 100644 index 000000000..d8ad3b0ec --- /dev/null +++ b/api-ref/source/networking/v2-ext/fwaas-v2.0.inc @@ -0,0 +1,917 @@ +.. -*- rst -*- + +======================================================================= +FWaaS v2.0 (CURRENT) (fw, firewalls, firewall_policies, firewall_rules) +======================================================================= + +Use the Firewall-as-a-Service (FWaaS) v2.0 extension to deploy +firewalls to protect your networks. + +The FWaaS extension enables you to: + +- Apply firewall rules on traffic entering and leaving tenant + networks. + +- Apply TCP, UDP, ICMP, or protocol-agnostic rules. + +- Create and share firewall policies that hold an ordered collection + of the firewall rules. + +- Audit firewall rules and policies. + +This extension introduces these resources: + +- ``firewall``. A logical firewall resource that a tenant can + instantiate and manage. A firewall can have one firewall policy. + +- ``firewall_policy``. An ordered collection of firewall rules. You + can share a firewall policy across tenants. You can include a + firewall policy as part of an audit workflow so that an + authorized relevant entity can audit the firewall policy. This + entity can differ from the tenant who created, or the tenants + that use, the firewall policy. + +- ``firewall_rule``. A collection of attributes, such as ports and + IP addresses. These attributes define match criteria and an + action to take, such as allow or deny, on matched data traffic. + + +Insert rule into a firewall policy +================================== + +.. rest_method:: PUT /v2.0/fw/firewall_policies/{firewall_policy_id}/insert_rule + +Insert firewall rule into a policy. + +A firewall_rule_id is inserted relative to the position of the +firewall_rule_id set in ``insert_before`` or ``insert_after``. If +``insert_before`` is set, ``insert_after`` is ignored. If both +``insert_before`` and ``insert_after`` are not set, the new +firewall_rule_id is inserted at the top of the policy. + + +Normal response codes: 200 +Error response codes:404,409,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - insert_after: insert_after + - firewall_rule_id: firewall_rule_id + - insert_before: insert_before + - firewall_policy_id: firewall_policy_id + +Request Example +--------------- + +.. literalinclude:: ../samples/firewalls/firewall-policy-insert-rule-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - name: name + - firewall_rules: firewall_rules + - tenant_id: tenant_id + - firewall_list: firewall_list + - audited: audited + - shared: shared + - id: id + - description: description + + + +Response Example +---------------- + +.. literalinclude:: ../samples/firewalls/firewall-policy-insert-rule-response.json + :language: javascript + + + + + + + + +Show firewall policy details +============================ + +.. rest_method:: GET /v2.0/fw/firewall_policies/{firewall_policy_id} + +Shows details for a firewall policy. + +If the user is not an administrative user and the firewall policy +object does not belong to the tenant account, this call returns the +``Forbidden (403)`` response code. + + +Normal response codes: 200 +Error response codes:404,403,401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - firewall_policy_id: firewall_policy_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - firewall_policy: firewall_policy + - name: name + - firewall_rules: firewall_rules + - tenant_id: tenant_id + - audited: audited + - shared: shared + - id: id + - description: description + + + +Response Example +---------------- + +.. literalinclude:: ../samples/firewalls/firewall-policy-show-response.json + :language: javascript + + + + + + + +Update firewall policy +====================== + +.. rest_method:: PUT /v2.0/fw/firewall_policies/{firewall_policy_id} + +Updates a firewall policy. + + +Normal response codes: 200 +Error response codes:404,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - firewall_policy_id: firewall_policy_id + +Request Example +--------------- + +.. literalinclude:: ../samples/firewalls/firewall-policy-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - firewall_policy: firewall_policy + - name: name + - firewall_rules: firewall_rules + - tenant_id: tenant_id + - audited: audited + - shared: shared + - id: id + - description: description + + + +Response Example +---------------- + +.. literalinclude:: ../samples/firewalls/firewall-policy-update-response.json + :language: javascript + + + + + + + +Delete firewall policy +====================== + +.. rest_method:: DELETE /v2.0/fw/firewall_policies/{firewall_policy_id} + +Deletes a firewall policy. + +Error response codes:409,404,204,401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - firewall_policy_id: firewall_policy_id + + + + + + + + + +List firewall policies +====================== + +.. rest_method:: GET /v2.0/fw/firewall_policies + +Lists all firewall policies. + +The list might be empty. + + +Normal response codes: 200 +Error response codes:403,401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - name: name + - firewall_rules: firewall_rules + - tenant_id: tenant_id + - audited: audited + - firewall_policies: firewall_policies + - shared: shared + - id: id + - description: description + + + +Response Example +---------------- + +.. literalinclude:: ../samples/firewalls/firewall-policies-list-response.json + :language: javascript + + + + + + +Create firewall policy +====================== + +.. rest_method:: POST /v2.0/fw/firewall_policies + +Creates a firewall policy. + +Error response codes:201,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - firewall_rules_id: firewall_rules_id + - firewall_policy: firewall_policy + - name: name + - tenant_id: tenant_id + - shared: shared + - audited: audited + - description: description + +Request Example +--------------- + +.. literalinclude:: ../samples/firewalls/firewall-policy-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - firewall_policy: firewall_policy + - name: name + - firewall_rules: firewall_rules + - tenant_id: tenant_id + - audited: audited + - shared: shared + - id: id + - description: description + + + + + + + +Show firewall rule details +========================== + +.. rest_method:: GET /v2.0/fw/firewall_rules/{firewall_rule_id} + +Shows details for a firewall rule. + +If the user is not an administrative user and the firewall rule +object does not belong to the tenant account, this call returns the +``Forbidden (403)`` response code. + + +Normal response codes: 200 +Error response codes:404,403,401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - firewall_rule_id: firewall_rule_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - firewall_rule: firewall_rule + - description: description + - source_ip_address: source_ip_address + - tenant_id: tenant_id + - enabled: enabled + - protocol: protocol + - source_port: source_port + - ip_version: ip_version + - destination_ip_address: destination_ip_address + - firewall_policy_id: firewall_policy_id + - shared: shared + - action: action + - position: position + - destination_port: destination_port + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/firewalls/firewall-rule-show-response.json + :language: javascript + + + + + + + +Update firewall rule +==================== + +.. rest_method:: PUT /v2.0/fw/firewall_rules/{firewall_rule_id} + +Updates a firewall rule. + + +Normal response codes: 200 +Error response codes:404,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - firewall_rule: firewall_rule + - description: description + - tenant_id: tenant_id + - enabled: enabled + - ip_version: ip_version + - destination_ip_address: destination_ip_address + - source_port: source_port + - shared: shared + - action: action + - protocol: protocol + - destination_port: destination_port + - name: name + - firewall_rule_id: firewall_rule_id + +Request Example +--------------- + +.. literalinclude:: ../samples/firewalls/firewall-rule-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - firewall_rule: firewall_rule + - description: description + - source_ip_address: source_ip_address + - tenant_id: tenant_id + - enabled: enabled + - protocol: protocol + - source_port: source_port + - ip_version: ip_version + - destination_ip_address: destination_ip_address + - firewall_policy_id: firewall_policy_id + - shared: shared + - action: action + - position: position + - destination_port: destination_port + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/firewalls/firewall-rule-update-response.json + :language: javascript + + + + + + + +Delete firewall rule +==================== + +.. rest_method:: DELETE /v2.0/fw/firewall_rules/{firewall_rule_id} + +Deletes a firewall rule. + +Error response codes:409,404,204,401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - firewall_rule_id: firewall_rule_id + + + + + + + + + +Show firewall details +===================== + +.. rest_method:: GET /v2.0/fw/firewalls/{firewall_id} + +Shows details for a firewall. + +If the user is not an administrative user and the firewall object +does not belong to the tenant account, this call returns the +``Forbidden (403)`` response code. + + +Normal response codes: 200 +Error response codes:404,403,401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - firewall_id: firewall_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - router_ids: router_ids + - description: description + - admin_state_up: admin_state_up + - firewall: firewall + - tenant_id: tenant_id + - firewall_policy_id: firewall_policy_id + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/firewalls/firewall-show-response.json + :language: javascript + + + + + + + +Update firewall +=============== + +.. rest_method:: PUT /v2.0/fw/firewalls/{firewall_id} + +Updates a firewall. + +To update a service, the service status cannot be a ``PENDING_*`` +status. + + +Normal response codes: 200 +Error response codes:404,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - router_ids: router_ids + - description: description + - admin_state_up: admin_state_up + - firewall: firewall + - firewall_policy_id: firewall_policy_id + - name: name + - firewall_id: firewall_id + +Request Example +--------------- + +.. literalinclude:: ../samples/firewalls/firewall-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - router_ids: router_ids + - description: description + - admin_state_up: admin_state_up + - firewall: firewall + - tenant_id: tenant_id + - firewall_policy_id: firewall_policy_id + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/firewalls/firewall-update-response.json + :language: javascript + + + + + + + +Delete firewall +=============== + +.. rest_method:: DELETE /v2.0/fw/firewalls/{firewall_id} + +Deletes a firewall. + +Error response codes:409,404,204,401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - firewall_id: firewall_id + + + + + + + + + +List firewall rules +=================== + +.. rest_method:: GET /v2.0/fw/firewall_rules + +Lists all firewall rules. + +The list might be empty. + + +Normal response codes: 200 +Error response codes:403,401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - protocol: protocol + - description: description + - source_ip_address: source_ip_address + - tenant_id: tenant_id + - enabled: enabled + - id: id + - ip_version: ip_version + - destination_ip_address: destination_ip_address + - firewall_policy_id: firewall_policy_id + - shared: shared + - action: action + - position: position + - destination_port: destination_port + - source_port: source_port + - firewalls: firewalls + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/firewalls/firewall-rules-list-response.json + :language: javascript + + + + + + +Create firewall rule +==================== + +.. rest_method:: POST /v2.0/fw/firewall_rules + +Creates a firewall rule. + +Error response codes:201,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - firewall_rule: firewall_rule + - description: description + - tenant_id: tenant_id + - enabled: enabled + - ip_version: ip_version + - destination_ip_address: destination_ip_address + - source_port: source_port + - shared: shared + - action: action + - protocol: protocol + - destination_port: destination_port + - name: name + +Request Example +--------------- + +.. literalinclude:: ../samples/firewalls/firewall-rule-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - firewall_rule: firewall_rule + - description: description + - source_ip_address: source_ip_address + - tenant_id: tenant_id + - enabled: enabled + - protocol: protocol + - source_port: source_port + - ip_version: ip_version + - destination_ip_address: destination_ip_address + - firewall_policy_id: firewall_policy_id + - shared: shared + - action: action + - position: position + - destination_port: destination_port + - id: id + - name: name + + + + + + + +List firewalls +============== + +.. rest_method:: GET /v2.0/fw/firewalls + +Lists all firewalls. + +The list might be empty. + + +Normal response codes: 200 +Error response codes:403,401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - router_ids: router_ids + - description: description + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - firewall_policy_id: firewall_policy_id + - firewalls: firewalls + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/firewalls/firewalls-list-response.json + :language: javascript + + + + + + +Create firewall +=============== + +.. rest_method:: POST /v2.0/fw/firewalls + +Creates a firewall. + +The firewall must be associated with a firewall policy. + +If ``admin_state_up`` is ``false``, the firewall would block all +traffic. + +Error response codes:201,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - router_ids: router_ids + - description: description + - admin_state_up: admin_state_up + - firewall: firewall + - firewall_policy_id: firewall_policy_id + - name: name + +Request Example +--------------- + +.. literalinclude:: ../samples/firewalls/firewall-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - router_ids: router_ids + - description: description + - admin_state_up: admin_state_up + - firewall: firewall + - tenant_id: tenant_id + - firewall_policy_id: firewall_policy_id + - id: id + - name: name + + + + + + + +Remove rule from firewall policy +================================ + +.. rest_method:: PUT /v2.0/fw/firewall_policies/{firewall_policy_id}/remove_rule + +Remove firewall rule from a policy. + + +Normal response codes: 200 +Error response codes:404,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - firewall_rule_id: firewall_rule_id + - firewall_policy_id: firewall_policy_id + +Request Example +--------------- + +.. literalinclude:: ../samples/firewalls/firewall-policy-remove-rule-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - name: name + - firewall_rules: firewall_rules + - tenant_id: tenant_id + - firewall_list: firewall_list + - audited: audited + - shared: shared + - id: id + - description: description + + + +Response Example +---------------- + +.. literalinclude:: ../samples/firewalls/firewall-policy-remove-rule-response.json + :language: javascript + + + + + + diff --git a/api-ref/source/networking/v2-ext/layer3-ext.inc b/api-ref/source/networking/v2-ext/layer3-ext.inc new file mode 100644 index 000000000..f4168571f --- /dev/null +++ b/api-ref/source/networking/v2-ext/layer3-ext.inc @@ -0,0 +1,861 @@ +.. -*- rst -*- + +========================================= +Layer-3 networking (routers, floatingips) +========================================= + +Routes packets between subnets, forwards packets from internal +networks to external ones, and accesses instances from external +networks through floating IPs. + +This extension introduces these resources: + +- **router**. A logical entity for forwarding packets across + internal subnets and NATting them on external networks through an + appropriate external gateway. + +- **floatingip**. An external IP address that you map to a port in + an internal network. + + +List floating IPs +================= + +.. rest_method:: GET /v2.0/floatingips + +Lists floating IPs that are accessible to the tenant who submits the request. + +Default policy settings return only those floating IPs that are +owned by the tenant who submits the request, unless an admin user +submits the request. + +This example request lists floating IPs in JSON format: + +:: + + GET /v2.0/floatingips + Accept: application/json + +Use the ``fields`` query parameter to control which fields are +returned in the response body. Additionally, you can filter results +by using query string parameters. For information, see `Filtering +and Column Selection `_. + + +Normal response codes: 200 +Error response codes:401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - router_id: router_id + - status: status + - tenant_id: tenant_id + - floating_network_id: floating_network_id + - fixed_ip_address: fixed_ip_address + - floating_ip_address: floating_ip_address + - port_id: port_id + - id: id + - floatingips: floatingips + + + +Response Example +---------------- + +.. literalinclude:: ../samples/routers/floating-ips-list-response.json + :language: javascript + + + + + +Create floating IP +================== + +.. rest_method:: POST /v2.0/floatingips + +Creates a floating IP, and, if you specify port information, associates the floating IP with an internal port. + +To associate the floating IP with an internal port, specify the +port UUID attribute in the request body. If you do not specify a +port UUID in the request, you can issue a PUT request instead of a +POST request. + +Default policy settings enable only administrative users to set +floating IP addresses and some non-administrative users might +require a floating IP address. If you do not specify a floating IP +address in the request, the operation automatically allocates one. + +By default, this operation associates the floating IP address with +a single fixed IP address that is configured on an OpenStack +Networking port. If a port has multiple IP addresses, you must +specify the ``fixed_ip_address`` attribute in the request body to +associate a fixed IP address with the floating IP address. + +You can create floating IPs on only external networks. When you +create a floating IP, you must specify the UUID of the network on +which you want to create the floating IP. Alternatively, you can +create a floating IP on a subnet in the external network, based on +the costs and quality of that subnet. + +You must configure an IP address with the internal OpenStack +Networking port that is associated with the floating IP address. + +Error codes: + +- ``400`` The operation returns this error code for one of these + reasons: + + - The network is not external, such as ``router:external=False``. + + - The internal OpenStack Networking port is not associated with the + floating IP address. + + - The requested floating IP address does not fall in the subnet + range for the external network. + + - The fixed IP address is not valid. + +- ``401`` The operation is not authorized. + +- ``404`` The port UUID is not valid. + +- ``409`` The operation returns this error code for one of these + reasons: + + - The requested floating IP address is already in use. + + - The internal OpenStack Networking port and fixed IP address are + already associated with another floating IP. + +Error response codes:201,404,409,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - floatingip: floatingip + - tenant_id: tenant_id + - floating_network_id: floating_network_id + - fixed_ip_address: fixed_ip_address + - floating_ip_address: floating_ip_address + - port_id: port_id + +Request Example +--------------- + +.. literalinclude:: ../samples/routers/floatingip-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - router_id: router_id + - status: status + - floatingip: floatingip + - tenant_id: tenant_id + - floating_network_id: floating_network_id + - fixed_ip_address: fixed_ip_address + - floating_ip_address: floating_ip_address + - port_id: port_id + - id: id + + + + + + + + + +Add interface to router +======================= + +.. rest_method:: PUT /v2.0/routers/{router_id}/add_router_interface + +Adds an internal interface to a logical router. + +Attaches a subnet to an internal router interface. + +Specify the UUID of a subnet or port in the request body: + +- Subnet UUID. The gateway IP address for the subnet is used to + create the router interface. + +- Port UUID. The IP address associated with the port is used to + create the router interface. + +When you specify an IPv6 subnet, this operation adds the subnet to +an existing internal port with same network UUID, on the router. If +a port with the same network UUID does not exist, this operation +creates a port on the router for that subnet. + +The limitation of one IPv4 subnet per router port remains, though a +port can contain any number of IPv6 subnets that belong to the same +network UUID. + +When you use the ``port-create`` command to add a port and then +call ``router-interface-add`` with this port UUID, this operation +adds the port to the router if the following conditions are met: + +- The port has no more than one IPv4 subnet. + + The IPv6 subnets, if any, on the port do not have same network + UUID as the network UUID of IPv6 subnets on any other ports. + +If you specify both UUIDs, this operation returns the ``Bad Request +(400)`` response code. + +If the port is already in use, this operation returns the +``Conflict (409)`` response code. + +This operation returns a port UUID that is either: + +- The same UUID that is passed in the request body. + +- The UUID of a port that this operation creates to attach the + subnet to the router. + +After you run this operation, the operation sets: + +- The device UUID of this port to the router UUID. + +- The ``device_owner`` attribute to ``network:router_interface``. + + +Normal response codes: 200 +Error response codes:404,409,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - subnet_id: subnet_id + - port_id: port_id + - router_id: router_id + +Request Example +--------------- + +.. literalinclude:: ../samples/routers/router-add-interface-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - subnet_id: subnet_id + - tenant_id: tenant_id + - port_id: port_id + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/routers/router-add-interface-response.json + :language: javascript + + + + + + + + +Delete interface from router +============================ + +.. rest_method:: PUT /v2.0/routers/{router_id}/remove_router_interface + +Deletes an internal interface from a logical router. + +This operation deletes an internal router interface, which detaches +a subnet from the router. If this subnet UUID is the last subnet on +the port, this operation deletes the port itself. You must specify +either a subnet UUID or port UUID in the request body; the +operation uses this value to identify which router interface to +deletes. + +You can also specify both a subnet UUID and port UUID. If you +specify both UUIDs, the subnet UUID must correspond to the subnet +UUID of the first IP address on the port. Otherwise, this operation +returns the ``Conflict (409)`` response code with information about +the affected router and interface. + +If the router or the subnet and port do not exist or are not +visible to you, this operation returns the ``Not Found (404)`` +response code. As a consequence of this operation, the operation +removes the port connecting the router with the subnet from the +subnet for the network. + +This example deletes an interface from a router: + +:: + + PUT /v2.0/routers/{router_id}/remove_router_interface Accept: application/json + + +Normal response codes: 200 +Error response codes:404,409,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - subnet_id: subnet_id + - port_id: port_id + - router_id: router_id + +Request Example +--------------- + +.. literalinclude:: ../samples/routers/router-remove-interface-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - subnet_id: subnet_id + - tenant_id: tenant_id + - port_id: port_id + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/routers/router-remove-interface-response.json + :language: javascript + + + + + + + + +Show floating IP details +======================== + +.. rest_method:: GET /v2.0/floatingips/{floatingip_id} + +Shows details for a floating IP. + +Use the ``fields`` query parameter to control which fields are +returned in the response body. For information, see `Filtering and +Column Selection `_. + +This example request shows details for a floating IP in JSON +format. This example also filters the result by the +``fixed_ip_address`` and ``floating_ip_address`` fields. + +:: + + GET /v2.0/floatingips/{floatingip_id}?fields=fixed_ip_address + & + fields=floating_ip_address + Accept: application/json + + +Normal response codes: 200 +Error response codes:404,403,401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - floatingip_id: floatingip_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - router_id: router_id + - status: status + - floatingip: floatingip + - tenant_id: tenant_id + - floating_network_id: floating_network_id + - fixed_ip_address: fixed_ip_address + - floating_ip_address: floating_ip_address + - port_id: port_id + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/routers/floatingip-show-response.json + :language: javascript + + + + + + + +Update floating IP +================== + +.. rest_method:: PUT /v2.0/floatingips/{floatingip_id} + +Updates a floating IP and its association with an internal port. + +The association process is the same as the process for the create +floating IP operation. + +To disassociate a floating IP from a port, set the ``port_id`` +attribute to null or omit it from the request body. + +This example updates a floating IP: + +:: + + PUT /v2.0/floatingips/{floatingip_id} Accept: application/json + +Depending on the request body that you submit, this request +associates a port with or disassociates a port from a floating IP. + + +Normal response codes: 200 +Error response codes:404,409,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - port_id: port_id + - floatingip: floatingip + - floatingip_id: floatingip_id + +Request Example +--------------- + +.. literalinclude:: ../samples/routers/floatingip-disassociate-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - router_id: router_id + - status: status + - floatingip: floatingip + - tenant_id: tenant_id + - floating_network_id: floating_network_id + - fixed_ip_address: fixed_ip_address + - floating_ip_address: floating_ip_address + - port_id: port_id + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/routers/floatingip-disassociate-response.json + :language: javascript + + + + + + + + +Delete floating IP +================== + +.. rest_method:: DELETE /v2.0/floatingips/{floatingip_id} + +Deletes a floating IP and, if present, its associated port. + +This example deletes a floating IP: + +:: + + DELETE /v2.0/floatingips/{floatingip_id} Accept: application/json + +Error response codes:404,204,401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - floatingip_id: floatingip_id + + + + + + + + +Show router details +=================== + +.. rest_method:: GET /v2.0/routers/{router_id} + +Shows details for a router. + +This example request shows details for a router in JSON format: + +:: + + GET /v2.0/routers/{router_id} Accept: application/json + +Use the ``fields`` query parameter to control which fields are +returned in the response body. For information, see `Filtering and +Column Selection `_. + + +Normal response codes: 200 +Error response codes:404,403,401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - router_id: router_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - external_gateway_info: external_gateway_info + - status: status + - availability_zone_hints: availability_zone_hints + - availability_zones: availability_zones + - name: name + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - distributed: distributed + - enable_snat: enable_snat + - routes: routes + - router: router + - ha: ha + - id: id + - external_fixed_ips: external_fixed_ips + + + +Response Example +---------------- + +.. literalinclude:: ../samples/routers/router-show-response.json + :language: javascript + + + + + + + +Update router +============= + +.. rest_method:: PUT /v2.0/routers/{router_id} + +Updates a logical router. + +You can update the name, administrative state, and the external +gateway. For more information about how to set the external gateway +for a router, see the create router operation. This operation does +not enable the update of router interfaces. To update a router, use +the add router interface and remove router interface operations. + +This example updates the external gateway information for a router: + +:: + + PUT /v2.0/routers/{router_id} Accept: application/json + + +Normal response codes: 200 +Error response codes:404,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - external_gateway_info: external_gateway_info + - enable_snat: enable_snat + - name: name + - admin_state_up: admin_state_up + - router: router + - external_fixed_ips: external_fixed_ips + - router_id: router_id + +Request Example +--------------- + +.. literalinclude:: ../samples/routers/router-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - external_gateway_info: external_gateway_info + - status: status + - availability_zone_hints: availability_zone_hints + - availability_zones: availability_zones + - name: name + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - distributed: distributed + - enable_snat: enable_snat + - routes: routes + - router: router + - ha: ha + - id: id + - external_fixed_ips: external_fixed_ips + + + +Response Example +---------------- + +.. literalinclude:: ../samples/routers/router-update-response.json + :language: javascript + + + + + + + +Delete router +============= + +.. rest_method:: DELETE /v2.0/routers/{router_id} + +Deletes a logical router and, if present, its external gateway interface. + +This operation fails if the router has attached interfaces. + +Use the remove router interface operation to remove all router +interfaces before you delete the router. + +This example deletes a router: + +:: + + DELETE /v2.0/routers/{router_id} Accept: application/json + +Error response codes:409,404,204,401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - router_id: router_id + + + + + + + + + +List routers +============ + +.. rest_method:: GET /v2.0/routers + +Lists logical routers that the tenant who submits the request can access. + +Default policy settings return only those routers that the tenant +who submits the request owns, unless an administrative user submits +the request. + +This example request lists routers in JSON format: + +:: + + GET /v2.0/routers Accept: application/json + +Use the ``fields`` query parameter to control which fields are +returned in the response body. Additionally, you can filter results +by using query string parameters. For information, see `Filtering +and Column Selection `_. + + +Normal response codes: 200 +Error response codes:401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - external_gateway_info: external_gateway_info + - status: status + - availability_zone_hints: availability_zone_hints + - availability_zones: availability_zones + - name: name + - admin_state_up: admin_state_up + - routers: routers + - distributed: distributed + - enable_snat: enable_snat + - tenant_id: tenant_id + - routes: routes + - ha: ha + - id: id + - external_fixed_ips: external_fixed_ips + + + +Response Example +---------------- + +.. literalinclude:: ../samples/routers/routers-list-response.json + :language: javascript + + + + + +Create router +============= + +.. rest_method:: POST /v2.0/routers + +Creates a logical router. + +This operation creates a logical router. The logical router does +not have any internal interface and it is not associated with any +subnet. You can optionally specify an external gateway for a router +at create time. The external gateway for the router must be plugged +into an external network. An external network has its +``router:external`` extended field set to ``true``. To specify an +external gateway, the UUID of the external network must be passed +in the ``external_gateway_info`` attribute in the request body, as +follows: + +.. code-block:: json + + { + "router": { + "external_gateway_info": { + "network_id": "8ca37218-28ff-41cb-9b10-039601ea7e6b" + } + } + } + +Error response codes:201,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - external_gateway_info: external_gateway_info + - enable_snat: enable_snat + - name: name + - admin_state_up: admin_state_up + - router: router + - external_fixed_ips: external_fixed_ips + +Request Example +--------------- + +.. literalinclude:: ../samples/routers/router-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - external_gateway_info: external_gateway_info + - status: status + - availability_zone_hints: availability_zone_hints + - availability_zones: availability_zones + - name: name + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - distributed: distributed + - enable_snat: enable_snat + - routes: routes + - router: router + - ha: ha + - id: id + - external_fixed_ips: external_fixed_ips + + + + + + diff --git a/api-ref/source/networking/v2-ext/lbaas.inc b/api-ref/source/networking/v2-ext/lbaas.inc new file mode 100644 index 000000000..9f3a89d0d --- /dev/null +++ b/api-ref/source/networking/v2-ext/lbaas.inc @@ -0,0 +1,2977 @@ +.. -*- rst -*- + +================================================================== +LBaaS 1.0 (DEPRECATED) (lb, vips, health_monitors, pools, members) +================================================================== + +The Load-Balancer-as-a-Service (LBaaS) v1.0 extension pairs with +the Networking v2.0 API to enable OpenStack tenants to manage load +balancers for their VMs. With this extension, you can load-balance +client traffic from one network to application services, such as +VMs, on the same network. + +Use this extension to create and manage virtual IP addresses +(VIPs), pools, members of a pool, health monitors, and view status +of a resource. + +**Load balancer statuses** + ++----------------+--------------------------------------------------------------------+ +| Status | Description | ++----------------+--------------------------------------------------------------------+ +| ACTIVE | The resource is ready and active. | ++----------------+--------------------------------------------------------------------+ +| PENDING_CREATE | The resource is being created. | ++----------------+--------------------------------------------------------------------+ +| PENDING_UPDATE | The resource is being updated. | ++----------------+--------------------------------------------------------------------+ +| PENDING_DELETE | The resource is pending deletion. | ++----------------+--------------------------------------------------------------------+ +| INACTIVE | The resource is not active. | ++----------------+--------------------------------------------------------------------+ +| ERROR | An object within the service is not working. The ``error_details`` | +| | attribute provides an explanation for the error, its cause, and | +| | possibly a solution. | ++----------------+--------------------------------------------------------------------+ + + +List members +============ + +.. rest_method:: GET /v2.0/lb/members + +Lists members. + + +Normal response codes: 200 +Error response codes:400,401,413,503,500, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - status_description: status_description + - weight: weight + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - pool_id: pool_id + - members: members + - address: address + - protocol_port: protocol_port + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/lbaas/members-list-response.json + :language: javascript + + + + + + + + + +Create a load balancer member +============================= + +.. rest_method:: POST /v2.0/lb/members + +Creates a load balancer member. + +Error response codes:201,400,401,413,503,500, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - weight: weight + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - pool_id: pool_id + - member: member + - address: address + - protocol_port: protocol_port + +Request Example +--------------- + +.. literalinclude:: ../samples/lbaas/member-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - status_description: status_description + - weight: weight + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - pool_id: pool_id + - member: member + - address: address + - protocol_port: protocol_port + - id: id + + + + + + + + + + +Show load balancer status tree +============================== + +.. rest_method:: GET /v2.0/lbaas/loadbalancers/{loadbalancer_id}/statuses + +Shows the status tree for a load balancer. + +This operation returns a status tree for a load balancer object, by +load balancer ID. If you are not an administrative user and the +load balancer object does not belong to the tenant account, the API +returns the ``Forbidden (403)`` response code. + +If the operation succeeds, the returned element is a status tree +that contains the load balancer and all provisioning and operating +statuses for its children. + + +Normal response codes: 200 +Error response codes:403,401,413,503,500, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - provisioning_status: provisioning_status + - listeners: listeners + - healthmonitor: healthmonitor + - members: members + - pools: pools + - id: id + - operating_status: operating_status + + + +Response Example +---------------- + +.. literalinclude:: ../samples/lbaas/loadbalancer-status-tree.json + :language: javascript + + + + + + + + + +Show listener details +===================== + +.. rest_method:: GET /v2.0/lbaas/listeners/{listener_id} + +Shows details for a listener. + +This operation returns a listener object, by ID. If you are not an +administrative user and the listener object does not belong to your +account, the API returns the HTTP ``Forbidden (403)`` response +code. + +Example: Show listener details + + +Normal response codes: 200 +Error response codes:404,403,500,401,413,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - protocol_port: protocol_port + - protocol: protocol + - description: description + - default_tls_container_ref: default_tls_container_ref + - admin_state_up: admin_state_up + - loadbalancers: loadbalancers + - tenant_id: tenant_id + - sni_container_refs: sni_container_refs + - connection_limit: connection_limit + - listener: listener + - default_pool_id: default_pool_id + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/lbaas/listener-show-response.json + :language: javascript + + + + + + + + + + + +Update listener +=============== + +.. rest_method:: PUT /v2.0/lbaas/listeners/{listener_id} + +Updates a listener. + +This operation updates the attributes of a listener. Upon +successful validation of the request, the service returns the HTTP +``Accepted (202)`` response code. + +Note: You cannot update the ``listener_id``, ``tenant_id``, +``loadbalancer_id``, ``loadbalancers``, ``default_pool_id``, +``protocol``, and ``protocol_port`` attributes. Attempting to +update an immutable attribute results in the HTTP ``Immutable +(422)`` response code. + +Note: You cannot update a listener if the load balancer to which +the listener is attached does not have an ``ACTIVE`` provisioning +status. + + +Normal response codes: 200 +Error response codes:400,401,413,503,500, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - protocol_port: protocol_port + - protocol: protocol + - description: description + - default_tls_container_ref: default_tls_container_ref + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - sni_container_refs: sni_container_refs + - connection_limit: connection_limit + - listener: listener + - default_pool_id: default_pool_id + - loadbalancer_id: loadbalancer_id + - name: name + +Request Example +--------------- + +.. literalinclude:: ../samples/lbaas/listener-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - protocol_port: protocol_port + - protocol: protocol + - description: description + - default_tls_container_ref: default_tls_container_ref + - admin_state_up: admin_state_up + - loadbalancers: loadbalancers + - tenant_id: tenant_id + - sni_container_refs: sni_container_refs + - connection_limit: connection_limit + - listener: listener + - default_pool_id: default_pool_id + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/lbaas/listener-update-response.json + :language: javascript + + + + + + + + + +Remove listener +=============== + +.. rest_method:: DELETE /v2.0/lbaas/listeners/{listener_id} + +Removes a listener. + +This operation removes a listener and its associated configuration +from the tenant account. The API immediately purges any and all +configuration data. You cannot recover it. + +You cannot delete a listener if the load balancer to which it is +attached does not have an ``ACTIVE`` provisioning status. + +Example: Delete a listener + +Error response codes:204,400,409,401,413,503,500, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + + + + + + + + + +Show health monitor details +=========================== + +.. rest_method:: GET /v2.0/lbaas/health_monitors/{health_monitor_id} + +Shows details for a health monitor. + +This operation returns a health monitor object, by health monitor +ID. If you are not an administrative user and the health monitor +object does not belong to your tenant account, the service returns +the HTTP ``Forbidden (403)`` response code. + +Example: Show health monitor details + + +Normal response codes: 200 +Error response codes:404,403,500,401,413,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - health_monitor: health_monitor + - tenant_id: tenant_id + - admin_state_up: admin_state_up + - delay: delay + - expected_codes: expected_codes + - max_retries: max_retries + - http_method: http_method + - timeout: timeout + - pools: pools + - url_path: url_path + - type: type + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/lbaas/healthmonitor-show-response.json + :language: javascript + + + + + + + + + + + +Update health monitor +===================== + +.. rest_method:: PUT /v2.0/lbaas/health_monitors/{health_monitor_id} + +Updates a health monitor. + +Upon successful validation of the request, the service returns the +HTTP ``Accepted (202)`` response code. + +Note: The health monitor UUID, ``tenant_id``, ``pool_id``, and type +are immutable attributes and cannot be updated. If you specify an +unsupported attribute, the service returns the HTTP ``Immutable +(422)`` response code. + + +Normal response codes: 200 +Error response codes:400,401,413,503,500, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - health_monitor: health_monitor + - admin_state_up: admin_state_up + - delay: delay + - expected_codes: expected_codes + - max_retries: max_retries + - http_method: http_method + - timeout: timeout + - url_path: url_path + +Request Example +--------------- + +.. literalinclude:: ../samples/lbaas/healthmonitor-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - health_monitor: health_monitor + - tenant_id: tenant_id + - admin_state_up: admin_state_up + - delay: delay + - expected_codes: expected_codes + - max_retries: max_retries + - http_method: http_method + - timeout: timeout + - pools: pools + - url_path: url_path + - type: type + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/lbaas/healthmonitor-update-response.json + :language: javascript + + + + + + + + + +Remove health monitor +===================== + +.. rest_method:: DELETE /v2.0/lbaas/health_monitors/{health_monitor_id} + +Removes a health monitor and its associated configuration from the tenant account. + +The API immediately purges any and all configuration data. You +cannot recover it. + +You cannot delete a health monitor if the attached load balancer +does not have an ``ACTIVE`` provisioning status. + +Example: Delete a health monitor + +Error response codes:204,400,409,401,413,503,500, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + + + + + + + + + +Show member details +=================== + +.. rest_method:: GET /v2.0/lb/members/{member_id} + +Shows details for a member. + + +Normal response codes: 200 +Error response codes:400,401,413,503,500, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - member_id: member_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - status_description: status_description + - weight: weight + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - pool_id: pool_id + - member: member + - address: address + - protocol_port: protocol_port + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/lbaas/member-show-response.json + :language: javascript + + + + + + + + + +Update member +============= + +.. rest_method:: PUT /v2.0/lb/members/{member_id} + +Updates a load balancer member. + + +Normal response codes: 200 +Error response codes:400,401,413,503,500, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - member: member + - pool_id: pool_id + - weight: weight + - admin_state_up: admin_state_up + - member_id: member_id + +Request Example +--------------- + +.. literalinclude:: ../samples/lbaas/member-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - status_description: status_description + - weight: weight + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - pool_id: pool_id + - member: member + - address: address + - protocol_port: protocol_port + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/lbaas/member-update-response.json + :language: javascript + + + + + + + + + +Delete member +============= + +.. rest_method:: DELETE /v2.0/lb/members/{member_id} + +Deletes a load balancer member. + +Error response codes:204,400,401,413,503,500, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - member_id: member_id + + + + + + + + + + + +Show pool member details +======================== + +.. rest_method:: GET /v2.0/lbaas/pools/{pool_id}/members/{member_id} + +Shows details for a pool member. + +This operation returns a member object identified by ``member_id`` +that belongs to a pool object identified by ``pool_id``. If you are +not an administrative user and the pool or member object does not +belong to your tenant account, the service returns the HTTP +``Forbidden (403)`` response code. + +If this operation succeeds, it returns a pool element. + +Example: Show pool member details + + +Normal response codes: 200 +Error response codes:404,403,500,401,413,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - status_description: status_description + - weight: weight + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - pool_id: pool_id + - member: member + - address: address + - protocol_port: protocol_port + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/lbaas/member-show-response.json + :language: javascript + + + + + + + + + + + +Update pool member +================== + +.. rest_method:: PUT /v2.0/lbaas/pools/{pool_id}/members/{member_id} + +Updates attributes for a pool member. + +Upon successful validation of the request, the service returns the +HTTP ``OK (200)`` response code. + +Note: You cannot update the member UUID, ``tenant_id``, +``address``, ``protocol_port``, and ``subnet_id`` attributes. If +you attempt to update any of these attributes, the service returns +the HTTP ``Immutable (422)`` response code. + +Note: You cannot update a member if the attached load balancer does +not have an ``ACTIVE`` provisioning status. + + +Normal response codes: 200 +Error response codes:400,401,413,503,500, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - member: member + - pool_id: pool_id + - weight: weight + - admin_state_up: admin_state_up + +Request Example +--------------- + +.. literalinclude:: ../samples/lbaas/member-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - status_description: status_description + - weight: weight + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - pool_id: pool_id + - member: member + - address: address + - protocol_port: protocol_port + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/lbaas/member-update-response.json + :language: javascript + + + + + + + + + +Remove member from pool +======================= + +.. rest_method:: DELETE /v2.0/lbaas/pools/{pool_id}/members/{member_id} + +Removes a member from a pool and its associated configuration from the tenant account. + +The API immediately purges any and all configuration data. You +cannot recover it. + +You cannot delete a member if the attached load balancer does not +have an ``ACTIVE`` provisioning status. + +Example: Remove a member from a pool + +Error response codes:204,400,409,401,413,503,500, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + + + + + + + + + +Add member to pool +================== + +.. rest_method:: POST /v2.0/lbaas/pools/{pool_id}/members + +Adds a member to a pool. + +This operation provisions a member and adds it to a pool by using +the configuration that you define in the request object. After the +API validates the request and starts the provisioning process, it +returns a response object, which contains a unique ID. + +At a minimum, you must specify these pool attributes: + +- ``tenant_id``. Admin only. Required to create a pool for another + tenant. + +- ``address``. The IP address of the member to receive traffic from + the load balancer. + +- ``protocol_port`` The port on which the member listens for + traffic. + +Some attributes receive default values if you omit them from the +request: + +- ``admin_state_up``. Default is ``true``. + +- ``weight``. Default is ``1``. + +If you omit the ``subnet_id`` parameter, LBaaS uses the +``vip_subnet_id`` parameter value for the subnet UUID. + +If the request fails due to incorrect data, the service returns the +HTTP ``Bad Request (400)`` response code with information about the +failure in the response body. Validation errors require that you +correct the error and submit the request again. + +To configure all documented member features at creation time, +specify additional elements or attributes in the request. + +Administrative users can specify a tenant ID that is different than +their own to create members for other tenants. + +To update a member, the load balancer must have an ``ACTIVE`` +provisioning status. + +Error response codes:201,404,409,401,413,503,500, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - member: member + - subnet_id: subnet_id + - protocol_port: protocol_port + - tenant_id: tenant_id + - address: address + +Request Example +--------------- + +.. literalinclude:: ../samples/lbaas/member-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - weight: weight + - admin_state_up: admin_state_up + - subnet_id: subnet_id + - tenant_id: tenant_id + - member: member + - address: address + - protocol_port: protocol_port + - id: id + + + + + + + + + + + +List pool members +================= + +.. rest_method:: GET /v2.0/lbaas/pools/{pool_id}/members + +Lists members of a pool. + +Lists all members that are associated with a pool that is +associated with your tenant account. The list of members includes +only members that belong to the pool object identified by +``pool_id``. + +The list might be empty. + +Example: List pool members + + +Normal response codes: 200 +Error response codes:500,401,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - status_description: status_description + - weight: weight + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - pool_id: pool_id + - members: members + - address: address + - protocol_port: protocol_port + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/lbaas/pool-members-list-response.json + :language: javascript + + + + + + + +Show load balancer details +========================== + +.. rest_method:: GET /v2.0/lbaas/loadbalancers/{loadbalancer_id} + +Shows details for a load balancer. + +This operation returns a load balancer object, by ID. If you are +not an administrative user and the load balancer object does not +belong to your tenant account, the service returns the HTTP +``Forbidden (403)`` response code. + + +Normal response codes: 200 +Error response codes:404,403,500,401,413,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - provisioning_status: provisioning_status + - listeners: listeners + - vip_address: vip_address + - operating_status: operating_status + - provider: provider + - vip_subnet_id: vip_subnet_id + - flavor: flavor + - id: id + - loadbalancer: loadbalancer + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/lbaas/loadbalancer-show-response.json + :language: javascript + + + + + + + + + + + +Update load balancer +==================== + +.. rest_method:: PUT /v2.0/lbaas/loadbalancers/{loadbalancer_id} + +Updates a load balancer. + +If the request is valid, the service returns the ``Accepted (202)`` +response code. To confirm the update, check that the load balancer +provisioning status is ``ACTIVE``. If the status is +``PENDING_UPDATE``, use a GET operation to poll the load balancer +object for changes. + +This operation returns the updated load balancer object with the +``ACTIVE``, ``PENDING_UPDATE``, or ``ERROR`` provisioning status. + + +Normal response codes: 200 +Error response codes:400,401,413,503,500, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - name: name + - description: description + - loadbalancer: loadbalancer + - admin_state_up: admin_state_up + +Request Example +--------------- + +.. literalinclude:: ../samples/lbaas/loadbalancer-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - provisioning_status: provisioning_status + - listeners: listeners + - vip_address: vip_address + - operating_status: operating_status + - provider: provider + - vip_subnet_id: vip_subnet_id + - flavor: flavor + - id: id + - loadbalancer: loadbalancer + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/lbaas/loadbalancer-update-response.json + :language: javascript + + + + + + + + + +Remove load balancer +==================== + +.. rest_method:: DELETE /v2.0/lbaas/loadbalancers/{loadbalancer_id} + +Removes a load balancer and its associated configuration from the tenant account. + +The API immediately purges any and all configuration data. You +cannot recover it. + +Example: Delete a load balancer + +Error response codes:204,400,401,413,503,500, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + + + + + + + + +Show VIP details +================ + +.. rest_method:: GET /v2.0/lb/vips/{vip_id} + +Shows details for a VIP. + + +Normal response codes: 200 +Error response codes:404,403,500,401,413,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - vip_id: vip_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - status_description: status_description + - protocol: protocol + - description: description + - admin_state_up: admin_state_up + - subnet_id: subnet_id + - tenant_id: tenant_id + - connection_limit: connection_limit + - pool_id: pool_id + - session_persistence: session_persistence + - vip: vip + - address: address + - protocol_port: protocol_port + - port_id: port_id + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/lbaas/vip-show-response.json + :language: javascript + + + + + + + + + + + +Update VIP +========== + +.. rest_method:: PUT /v2.0/lb/vips/{vip_id} + +Updates a load balancer VIP. + + +Normal response codes: 200 +Error response codes:400,401,413,503,500, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - description: description + - admin_state_up: admin_state_up + - connection_limit: connection_limit + - pool_id: pool_id + - session_persistence: session_persistence + - vip: vip + - name: name + - vip_id: vip_id + +Request Example +--------------- + +.. literalinclude:: ../samples/lbaas/vip-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - status_description: status_description + - protocol: protocol + - description: description + - admin_state_up: admin_state_up + - subnet_id: subnet_id + - tenant_id: tenant_id + - connection_limit: connection_limit + - pool_id: pool_id + - session_persistence: session_persistence + - vip: vip + - address: address + - protocol_port: protocol_port + - port_id: port_id + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/lbaas/vip-update-response.json + :language: javascript + + + + + + + + + +Delete VIP +========== + +.. rest_method:: DELETE /v2.0/lb/vips/{vip_id} + +Deletes a load balancer VIP. + +Error response codes:204,400,401,413,503,500, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - vip_id: vip_id + + + + + + + + + + + +List load balancers +=================== + +.. rest_method:: GET /v2.0/lbaas/loadbalancers + +Lists all load balancers for the tenant account. + +The list might be empty. + + +Normal response codes: 200 +Error response codes:404,500,401,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - admin_state_up: admin_state_up + - loadbalancers: loadbalancers + - tenant_id: tenant_id + - provisioning_status: provisioning_status + - listeners: listeners + - vip_address: vip_address + - provider: provider + - vip_subnet_id: vip_subnet_id + - flavor: flavor + - id: id + - operating_status: operating_status + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/lbaas/loadbalancers-list-response.json + :language: javascript + + + + + + + + +Create load balancer +==================== + +.. rest_method:: POST /v2.0/lbaas/loadbalancers + +Creates a load balancer. + +This operation provisions a new load balancer by using the +configuration that you define in the request object. After the API +validates the request and starts the provisioning process, the API +returns a response object that contains a unique ID and the status +of provisioning the load balancer. + +In the response, the load balancer provisioning status is +``ACTIVE``, ``PENDING_CREATE``, or ``ERROR``. + +If the status is ``PENDING_CREATE``, issue GET +``/lbaas/loadbalancers/loadbalancer_id`` to view the progress of +the provisioning operation. When the load balancer status changes +to ``ACTIVE``, the load balancer is successfully provisioned and +operational for traffic handling. + +If the API cannot fulfill the request due to insufficient data or +data that is not valid, the service returns the HTTP ``Bad Request +(400)`` response code with information about the failure in the +response body. Validation errors require that you correct the error +and submit the request again. + +You can configure all documented features of the load balancer at +creation time by specifying the additional elements or attributes +in the request. + +Administrative users can specify a tenant ID that is different than +their own to create load balancers for other tenants. + +**Example: Create a load balancer** + +- ``tenant_id``. Admin only. Required to create a load balancer for + another tenant. + +- ``vip_subnet_id``. The network on which to allocate the VIP + address for the load balancer. A tenant can only create load + balancer VIPs on networks that the policy authorizes, such as her + own networks or shared or provider networks. + +Some attributes receive default values if you omit them from the +request: + +- ``admin_state_up``. Default is ``true``. + +- ``name``. Default is an empty string. + +- ``description``. Default is an empty string. + +If the API cannot fulfill the request due to insufficient data or +data that is not valid, the service returns the HTTP ``Bad Request +(400)`` response code with information about the failure in the +response body. Validation errors require that you correct the error +and submit the request again. + +You can configure all documented features of the load balancer at +creation time by specifying the additional elements or attributes +in the request. + +Administrative users can specify a tenant ID that is different than +their own to create load balancers for other tenants. + +If you own the subnet where you want to create the load balancer +VIP, you can specify a ``vip_address`` attribute. If you omit the +``vip_address`` attribute from the payload, the LBaaS service +allocates a VIP address from the subnet of the load balancer VIP. + +An optional ``flavor`` attribute can be passed to enable dynamic +selection of an appropriate provider if configured by the operator. +The basic selection algorithm chooses the provider in the first +service profile currently associated with flavor. + +You can also specify the ``provider`` attribute when you create a +load balancer. You can set this attribute to any service provider +with a ``LOADBALANCER`` service type. Setting both a flavor and a +provider will result in a conflict error. + +Example: Create a load balancer + +Error response codes:201,404,409,401,413,503,500, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - description: description + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - vip_address: vip_address + - provider: provider + - vip_subnet_id: vip_subnet_id + - flavor: flavor + - name: name + +Request Example +--------------- + +.. literalinclude:: ../samples/lbaas/loadbalancer-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - provisioning_status: provisioning_status + - listeners: listeners + - vip_address: vip_address + - operating_status: operating_status + - provider: provider + - vip_subnet_id: vip_subnet_id + - flavor: flavor + - id: id + - loadbalancer: loadbalancer + - name: name + + + + + + + + + + + +Associate health monitor with pool +================================== + +.. rest_method:: POST /v2.0/lb/pools/{pool_id}/health_monitors + +Associates a health monitor with a pool. + +Error response codes:201,400,401,413,503,500, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - id: id + - health_monitor: health_monitor + - pool_id: pool_id + +Request Example +--------------- + +.. literalinclude:: ../samples/lbaas/healthmonitor-associate-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - health_monitor: health_monitor + + + + + + + + + + +Show pool details +================= + +.. rest_method:: GET /v2.0/lbaas/pools/{pool_id} + +Shows details for a pool. + +This operation shows details for a pool, by ID. If you are not an +administrative user and the pool object does not belong to your +tenant account, the call returns the HTTP ``Forbidden (403)`` +response code. + +If this operation succeeds, it returns a ``pool`` element. + +Example: Show pool details + + +Normal response codes: 200 +Error response codes:404,403,500,401,413,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - lb_method: lb_method + - protocol: protocol + - description: description + - health_monitors: health_monitors + - subnet_id: subnet_id + - tenant_id: tenant_id + - admin_state_up: admin_state_up + - vip_id: vip_id + - members: members + - pools: pools + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/lbaas/pool-show-response.json + :language: javascript + + + + + + + + + + + +Update pool +=========== + +.. rest_method:: PUT /v2.0/lbaas/pools/{pool_id} + +Updates a pool. + +This operation updates the attributes of a pool. Upon successful +validation of the request, the service returns the HTTP ``Accepted +(202)`` response code. + +Note: You cannot update the pool UUID, ``tenant_id``, +``listener_id``, ``listeners``, ``health_monitor_id``, +``protocol``, and ``members`` immutable attributes. If you try to +update any of these attributes, the service returns the HTTP +``Immutable (422)`` response code. + +Note: You cannot update a pool if the load balancer to which it is +attached does not have an ``ACTIVE`` provisioning status. + + +Normal response codes: 200 +Error response codes:400,401,413,503,500, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - pool: pool + - lb_method: lb_method + - description: description + - name: name + - admin_state_up: admin_state_up + +Request Example +--------------- + +.. literalinclude:: ../samples/lbaas/pool-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - lb_method: lb_method + - protocol: protocol + - description: description + - health_monitors: health_monitors + - subnet_id: subnet_id + - tenant_id: tenant_id + - admin_state_up: admin_state_up + - vip_id: vip_id + - members: members + - pools: pools + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/lbaas/pool-update-response.json + :language: javascript + + + + + + + + + +Remove pool +=========== + +.. rest_method:: DELETE /v2.0/lbaas/pools/{pool_id} + +Removes a pool. + +This operation removes a pool and its associated configuration from +the tenant account. The API immediately purges any and all +configuration data. You cannot recover it. + +You cannot delete a pool if the load balancer to which it is +attached does not have an ``ACTIVE`` provisioning status. + +Error response codes:204,400,409,401,413,503,500, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + + + + + + + + + +Create health monitor +===================== + +.. rest_method:: POST /v2.0/lbaas/health_monitors + +Creates a health monitor. + +This operation provisions a health monitor by using the +configuration that you define in the request object. After the API +validates the request and start the provisioning process, it +returns a response object. The object contains a unique identifier. + +At a minimum, you must specify these health monitor attributes: + +- ``tenant_id``. Admin only. Required to create a health monitor for + another tenant. + +- ``type``. The type of health monitor. A valid value is ``TCP``, + ``HTTP``, or ``HTTPS``. + +- ``delay``. The interval, in seconds, between health checks. + +- ``timeout``. The time, in seconds, after which a health check + times out. + +- ``max_retries``. Number of failed health checks before marked as + OFFLINE. + +- ``pool_id``. The pool to monitor. + +Some attributes receive default values if you omit them from the +request, and are only useful when you specify a health monitor type +of HTTP(S): + +- ``http_method``. Default is ``GET``. + +- ``url_path``. Default is ``/``. + +- ``expected_codes``. The expected HTTP status codes to get from a + successful health check. Default is ``200``. + +- ``admin_state_up``. Default is ``true``. + +If the API cannot fulfill the request due to insufficient data or +data that is not valid, it returns the ``Bad Request (400)`` +response code with information about the nature of the failure in +the response body. Failures in the validation process are non- +recoverable and require that you correct the cause of the failure +and submit the request again. + +You can configure all documented features of the health monitor at +creation time by specifying the additional elements or attributes +in the request. + +Administrative users can specify a tenant ID that is different than +their own to create health monitors for other tenants. + +To update a health monitor, the load balancer to which to attach +must have an ``ACTIVE`` provisioning status. + +Error response codes:201,404,409,401,413,503,500, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - health_monitor: health_monitor + - tenant_id: tenant_id + - admin_state_up: admin_state_up + - delay: delay + - expected_codes: expected_codes + - max_retries: max_retries + - http_method: http_method + - timeout: timeout + - url_path: url_path + - type: type + +Request Example +--------------- + +.. literalinclude:: ../samples/lbaas/healthmonitor-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - health_monitor: health_monitor + - tenant_id: tenant_id + - admin_state_up: admin_state_up + - delay: delay + - expected_codes: expected_codes + - max_retries: max_retries + - http_method: http_method + - timeout: timeout + - pools: pools + - url_path: url_path + - type: type + - id: id + + + + + + + + + + + +List health monitors +==================== + +.. rest_method:: GET /v2.0/lbaas/health_monitors + +Lists health monitors. + +This operation lists all health monitors that are associated with +your tenant account. + +This operation returns a list, which might be empty. + + +Normal response codes: 200 +Error response codes:500,401,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - health_monitors: health_monitors + - tenant_id: tenant_id + - admin_state_up: admin_state_up + - delay: delay + - expected_codes: expected_codes + - max_retries: max_retries + - http_method: http_method + - timeout: timeout + - pools: pools + - url_path: url_path + - type: type + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/lbaas/healthmonitors-list-response.json + :language: javascript + + + + + + + +Create listener +=============== + +.. rest_method:: POST /v2.0/lbaas/listeners + +Creates a listener. + +This operation provisions a new listener by using the configuration +that you define in the request object. After the request is +validated and the provisioning process begins, a response object is +returned. The object contains a unique identifier. + +At a minimum, you must specify these listener attributes: + +- ``tenant_id``. Admin only. Required to create a listener for + another tenant. + +- ``loadbalancer_id``. The load balancer on which to provision this + listener. A tenant can only create listeners on load balancers + that the policy authorizes. For example, her own load balancers. + +- ``description``. The load balancer description. + +- ``protocol``. The protocol for which the front end listens. Must + be ``HTTP``, ``HTTPS``, ``TCP``, or ``TERMINATED_HTTPS``. + +Some attributes receive default values if you omit them from the +request: + +- ``protocol_port``. The port on which the front end listens. Must + be an integer from 1 to 65535. + +- ``default_tls_container_ref``. The reference to a container that + holds TLS secrets. If you also specify ``sni_container_refs``, + this container is the default. This parameter is required for the + ``TERMINATED_HTTPS`` protocol. + +- ``sni_container_refs``. A list of references to containers that + hold TLS secrets for server name indication (SNI). This parameter + is required for the ``TERMINATED_HTTPS`` protocol. + +- ``admin_state_up``. Default is ``true``. + +- ``name``. Default is an empty string. + +- ``description``. Default is an empty string. + +- ``connection_limit``. Default is ``-1``, which indicates an + infinite limit. + +If the API cannot fulfill the request due to insufficient data or +data that is not valid, the service returns the HTTP ``Bad Request +(400)`` response code with information about the failure in the +response body. Validation errors require that you correct the error +and submit the request again. + +You can configure all documented features of the listener at +creation time by specifying the additional elements or attributes +in the request. + +Administrative users can specify a tenant ID that is different than +their own to create listeners for other tenants. + +To update a listener, the load balancer to which to attach must +have an ``ACTIVE`` provisioning status. + +Error response codes:201,404,409,401,413,503,500, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - protocol_port: protocol_port + - protocol: protocol + - description: description + - default_tls_container_ref: default_tls_container_ref + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - sni_container_refs: sni_container_refs + - connection_limit: connection_limit + - listener: listener + - default_pool_id: default_pool_id + - loadbalancer_id: loadbalancer_id + - name: name + +Request Example +--------------- + +.. literalinclude:: ../samples/lbaas/listener-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - protocol_port: protocol_port + - protocol: protocol + - description: description + - default_tls_container_ref: default_tls_container_ref + - admin_state_up: admin_state_up + - loadbalancers: loadbalancers + - tenant_id: tenant_id + - sni_container_refs: sni_container_refs + - connection_limit: connection_limit + - listener: listener + - default_pool_id: default_pool_id + - id: id + - name: name + + + + + + + + + + + +List listeners +============== + +.. rest_method:: GET /v2.0/lbaas/listeners + +Lists all listeners. + +This operation lists all listeners that are associated with your +tenant account. + +The list might be empty. + +Example: List listeners + + +Normal response codes: 200 +Error response codes:500,401,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - protocol_port: protocol_port + - protocol: protocol + - description: description + - default_tls_container_ref: default_tls_container_ref + - admin_state_up: admin_state_up + - loadbalancers: loadbalancers + - tenant_id: tenant_id + - sni_container_refs: sni_container_refs + - connection_limit: connection_limit + - listeners: listeners + - default_pool_id: default_pool_id + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/lbaas/listeners-list-response.json + :language: javascript + + + + + + + +Create pool +=========== + +.. rest_method:: POST /v2.0/lbaas/pools + +Creates a pool. + +This operation provisions a pool by using the configuration that +you define in the request object. After the API validates the +request and starts the provisioning process, the API returns a +response object, which contains a unique ID. + +At a minimum, you must specify these pool attributes: + +- ``tenant_id``. Admin only. Required to create a pool for another + tenant. + +- ``protocol``. The protocol for which this pool and its members + listen. A valid value is ``TCP``, ``HTTP``, or ``HTTPS``. + +- ``lb_algorithm``. The load-balancer algorithm, such as + ``ROUND_ROBIN``, ``LEAST_CONNECTIONS``, and ``SOURCE_IP``, that + distributes traffic to the pool members. The load-balancer + provider must support this algorithm. + +- ``listener_id``. The UUID of the listener in which this pool + becomes the default pool. Each listener has only one default + pool. + +Some attributes receive default values if you omit them from the +request: + +- ``admin_state_up``. Default is ``true``. + +- ``name``. Default is an empty string. + +- ``description``. Default is an empty string. + +- ``session_persistence``. Default is an empty dictionary. + +If the API cannot fulfill the request due to insufficient data or +data that is not valid, the service returns the HTTP ``Bad Request +(400)`` response code with information about the failure in the +response body. Validation errors require that you correct the error +and submit the request again. + +Users can configure all documented features at creation time by +providing the additional elements or attributes in the request. + +Administrative users can specify a tenant ID that is different than +their own to create pools for other tenants. + +To update a pool, the load balancer to which to attach must have an +``ACTIVE`` provisioning status. + +Error response codes:201,404,409,401,413,503,500, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - lb_algorithm: lb_algorithm + - protocol: protocol + - description: description + - admin_state_up: admin_state_up + - subnet_id: subnet_id + - tenant_id: tenant_id + - listener_id: listener_id + - name: name + +Request Example +--------------- + +.. literalinclude:: ../samples/lbaas/pool-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - lb_algorithm: lb_algorithm + - status: status + - protocol: protocol + - description: description + - vip_id: vip_id + - admin_state_up: admin_state_up + - subnet_id: subnet_id + - tenant_id: tenant_id + - session_persistence: session_persistence + - healthmonitor_id: healthmonitor_id + - health_monitors_status: health_monitors_status + - members: members + - id: id + - pool: pool + - name: name + + + + + + + + + + + +List pools +========== + +.. rest_method:: GET /v2.0/lbaas/pools + +Lists all pools that are associated with your tenant account. + +The list might be empty. + +Example: List pools + + +Normal response codes: 200 +Error response codes:500,401,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - lb_method: lb_method + - protocol: protocol + - description: description + - health_monitors: health_monitors + - subnet_id: subnet_id + - tenant_id: tenant_id + - admin_state_up: admin_state_up + - vip_id: vip_id + - members: members + - pools: pools + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/lbaas/pools-list-response.json + :language: javascript + + + + + + + +Disassociate health monitor from pool +===================================== + +.. rest_method:: DELETE /v2.0/lb/pools/{pool_id}/health_monitors/{health_monitor_id} + +Disassociates a health monitor from a pool. + +Error response codes:204,400,401,413,503,500, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - health_monitor_id: health_monitor_id + - pool_id: pool_id + + + + + + + + + + + +Show health monitor details +=========================== + +.. rest_method:: GET /v2.0/lb/health_monitors/{health_monitor_id} + +Shows details for a health monitor. + + +Normal response codes: 200 +Error response codes:400,401,413,503,500, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - health_monitor_id: health_monitor_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - health_monitor: health_monitor + - tenant_id: tenant_id + - admin_state_up: admin_state_up + - delay: delay + - expected_codes: expected_codes + - max_retries: max_retries + - http_method: http_method + - timeout: timeout + - pools: pools + - url_path: url_path + - type: type + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/lbaas/healthmonitor-show-response.json + :language: javascript + + + + + + + + + +Update health monitor +===================== + +.. rest_method:: PUT /v2.0/lb/health_monitors/{health_monitor_id} + +Updates a load balancer health monitor. + + +Normal response codes: 200 +Error response codes:400,401,413,503,500, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - health_monitor: health_monitor + - admin_state_up: admin_state_up + - delay: delay + - expected_codes: expected_codes + - max_retries: max_retries + - http_method: http_method + - timeout: timeout + - url_path: url_path + - health_monitor_id: health_monitor_id + +Request Example +--------------- + +.. literalinclude:: ../samples/lbaas/healthmonitor-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - health_monitor: health_monitor + - tenant_id: tenant_id + - admin_state_up: admin_state_up + - delay: delay + - expected_codes: expected_codes + - max_retries: max_retries + - http_method: http_method + - timeout: timeout + - pools: pools + - url_path: url_path + - type: type + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/lbaas/healthmonitor-update-response.json + :language: javascript + + + + + + + + + +Delete health monitor +===================== + +.. rest_method:: DELETE /v2.0/lb/health_monitors/{health_monitor_id} + +Deletes a load balancer health monitor. + +Error response codes:204,400,401,413,503,500, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - health_monitor_id: health_monitor_id + + + + + + + + + + + +List pools +========== + +.. rest_method:: GET /v2.0/lb/pools + +Lists pools. + + +Normal response codes: 200 +Error response codes:400,401,413,503,500, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - lb_algorithm: lb_algorithm + - status: status + - protocol: protocol + - description: description + - health_monitors: health_monitors + - subnet_id: subnet_id + - tenant_id: tenant_id + - admin_state_up: admin_state_up + - vip_id: vip_id + - health_monitors_status: health_monitors_status + - members: members + - provider: provider + - pools: pools + - status_description: status_description + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/lbaas/pools-list-response.json + :language: javascript + + + + + + + + + +Create a load balancer pool +=========================== + +.. rest_method:: POST /v2.0/lb/pools + +Creates a load balancer pool. + +Error response codes:201,400,401,413,503,500, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - lb_method: lb_method + - protocol: protocol + - description: description + - admin_state_up: admin_state_up + - subnet_id: subnet_id + - tenant_id: tenant_id + - pool: pool + - name: name + +Request Example +--------------- + +.. literalinclude:: ../samples/lbaas/pool-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - lb_algorithm: lb_algorithm + - status: status + - protocol: protocol + - description: description + - health_monitors: health_monitors + - subnet_id: subnet_id + - tenant_id: tenant_id + - admin_state_up: admin_state_up + - vip_id: vip_id + - health_monitors_status: health_monitors_status + - members: members + - provider: provider + - status_description: status_description + - id: id + - pool: pool + - name: name + + + + + + + + + + +List health monitors +==================== + +.. rest_method:: GET /v2.0/lb/health_monitors + +Lists health monitors. + + +Normal response codes: 200 +Error response codes:400,401,413,503,500, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - health_monitors: health_monitors + - tenant_id: tenant_id + - admin_state_up: admin_state_up + - delay: delay + - expected_codes: expected_codes + - max_retries: max_retries + - http_method: http_method + - timeout: timeout + - pools: pools + - url_path: url_path + - type: type + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/lbaas/healthmonitors-list-response.json + :language: javascript + + + + + + + + + +Create a load balancer health monitor +===================================== + +.. rest_method:: POST /v2.0/lb/health_monitors + +Creates a load balancer health monitor. + +Error response codes:201,400,401,413,503,500, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - health_monitor: health_monitor + - tenant_id: tenant_id + - admin_state_up: admin_state_up + - delay: delay + - expected_codes: expected_codes + - max_retries: max_retries + - http_method: http_method + - timeout: timeout + - url_path: url_path + - type: type + +Request Example +--------------- + +.. literalinclude:: ../samples/lbaas/healthmonitor-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - health_monitor: health_monitor + - tenant_id: tenant_id + - admin_state_up: admin_state_up + - delay: delay + - expected_codes: expected_codes + - max_retries: max_retries + - http_method: http_method + - timeout: timeout + - pools: pools + - url_path: url_path + - type: type + - id: id + + + + + + + + + + +List VIPs +========= + +.. rest_method:: GET /v2.0/lb/vips + +Lists VIPs. + +The list might be empty. + + +Normal response codes: 200 +Error response codes:500,401,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - status_description: status_description + - protocol: protocol + - description: description + - admin_state_up: admin_state_up + - subnet_id: subnet_id + - tenant_id: tenant_id + - connection_limit: connection_limit + - pool_id: pool_id + - session_persistence: session_persistence + - address: address + - vips: vips + - protocol_port: protocol_port + - port_id: port_id + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/lbaas/vips-list-response.json + :language: javascript + + + + + + + +Create a load balancer VIP +========================== + +.. rest_method:: POST /v2.0/lb/vips + +Creates a load balancer VIP. + +Error response codes:201,400,404,500,401,413,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - protocol: protocol + - description: description + - admin_state_up: admin_state_up + - subnet_id: subnet_id + - tenant_id: tenant_id + - connection_limit: connection_limit + - pool_id: pool_id + - session_persistence: session_persistence + - vip: vip + - address: address + - protocol_port: protocol_port + - name: name + +Request Example +--------------- + +.. literalinclude:: ../samples/lbaas/vip-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - status_description: status_description + - protocol: protocol + - description: description + - admin_state_up: admin_state_up + - subnet_id: subnet_id + - tenant_id: tenant_id + - connection_limit: connection_limit + - pool_id: pool_id + - session_persistence: session_persistence + - vip: vip + - address: address + - protocol_port: protocol_port + - port_id: port_id + - id: id + - name: name + + + + + + + + + + + + +Show pool details +================= + +.. rest_method:: GET /v2.0/lb/pools/{pool_id} + +Shows details for a pool. + + +Normal response codes: 200 +Error response codes:400,401,413,503,500, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - pool_id: pool_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - lb_algorithm: lb_algorithm + - status: status + - protocol: protocol + - description: description + - health_monitors: health_monitors + - subnet_id: subnet_id + - tenant_id: tenant_id + - admin_state_up: admin_state_up + - vip_id: vip_id + - health_monitors_status: health_monitors_status + - members: members + - provider: provider + - status_description: status_description + - id: id + - pool: pool + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/lbaas/pool-show-response.json + :language: javascript + + + + + + + + + +Update pool +=========== + +.. rest_method:: PUT /v2.0/lb/pools/{pool_id} + +Updates a load balancer pool. + + +Normal response codes: 200 +Error response codes:400,401,413,503,500, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - pool: pool + - lb_method: lb_method + - description: description + - name: name + - admin_state_up: admin_state_up + - pool_id: pool_id + +Request Example +--------------- + +.. literalinclude:: ../samples/lbaas/pool-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - lb_algorithm: lb_algorithm + - status: status + - protocol: protocol + - description: description + - health_monitors: health_monitors + - subnet_id: subnet_id + - tenant_id: tenant_id + - admin_state_up: admin_state_up + - vip_id: vip_id + - health_monitors_status: health_monitors_status + - members: members + - provider: provider + - status_description: status_description + - id: id + - pool: pool + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/lbaas/pool-update-response.json + :language: javascript + + + + + + + + + +Delete pool +=========== + +.. rest_method:: DELETE /v2.0/lb/pools/{pool_id} + +Deletes a load balancer pool. + +Error response codes:204,400,401,413,503,500, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - pool_id: pool_id + + + + + + + + + + diff --git a/api-ref/source/networking/v2-ext/metering-labels-ext.inc b/api-ref/source/networking/v2-ext/metering-labels-ext.inc new file mode 100644 index 000000000..b6897eede --- /dev/null +++ b/api-ref/source/networking/v2-ext/metering-labels-ext.inc @@ -0,0 +1,334 @@ +.. -*- rst -*- + +================================================================= +Metering labels and rules (metering-labels, metering-label-rules) +================================================================= + +Creates, modifies, and deletes OpenStack Layer3 metering labels and +rules. + + +List metering labels +==================== + +.. rest_method:: GET /v2.0/metering/metering-labels + +Lists all L3 metering labels that belong to the tenant. + +The list shows the UUID for each metering label. + + +Normal response codes: 200 +Error response codes:401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - tenant_id: tenant_id + - metering_labels: metering_labels + - shared: shared + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/metering-labels/metering-labels-list-response.json + :language: javascript + + + + + +Create metering label +===================== + +.. rest_method:: POST /v2.0/metering/metering-labels + +Creates an L3 metering label. + +Error response codes:201,403,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - shared: shared + - metering_label: metering_label + - description: description + - name: name + +Request Example +--------------- + +.. literalinclude:: ../samples/metering-labels/metering-label-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - tenant_id: tenant_id + - metering_label: metering_label + - shared: shared + - id: id + - name: name + + + + + + + + +Show metering label details +=========================== + +.. rest_method:: GET /v2.0/metering/metering-labels/{metering-label-id} + +Shows details for a metering label. + +The response body shows the description, name, and UUID. + + +Normal response codes: 200 +Error response codes:404,401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - tenant_id: tenant_id + - metering_label: metering_label + - shared: shared + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/metering-labels/metering-label-show-response.json + :language: javascript + + + + + + +Delete metering label +===================== + +.. rest_method:: DELETE /v2.0/metering/metering-labels/{metering-label-id} + +Deletes an L3 metering label. + +Error response codes:404,204,401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + + + + + +List metering label rules +========================= + +.. rest_method:: GET /v2.0/metering/metering-label-rules + +Lists a summary of all L3 metering label rules that belong to the tenant. + +The list shows the UUID for each metering label rule. + + +Normal response codes: 200 +Error response codes:401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - direction: direction + - remote_ip_prefix: remote_ip_prefix + - metering_label_rules: metering_label_rules + - excluded : excluded + - metering_label_id: metering_label_id + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/metering-labels/metering-label-rules-list-response.json + :language: javascript + + + + + +Create metering label rule +========================== + +.. rest_method:: POST /v2.0/metering/metering-label-rules + +Creates an L3 metering label rule. + +Error response codes:201,404,403,401,400,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - remote_ip_prefix: remote_ip_prefix + - direction: direction + - metering_label_id: metering_label_id + - metering_label_rule: metering_label_rule + - excluded: excluded + +Request Example +--------------- + +.. literalinclude:: ../samples/metering-labels/metering-label-rule-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - direction: direction + - remote_ip_prefix: remote_ip_prefix + - excluded : excluded + - metering_label_id: metering_label_id + - metering_label_rule: metering_label_rule + - id: id + + + + + + + + + + +Show metering label rule details +================================ + +.. rest_method:: GET /v2.0/metering/metering-label-rules/{metering-label-rule-id} + +Shows details for a metering label rule. + +The response body shows this information for each metering label +rule: + +- ``direction``. Either ingress or egress. + +- ``excluded``. Either ``true`` or ``false``. + +- The UUID for the metering label rule. + +- The remote IP prefix. + +- The metering label ID for the metering label with which the rule + is associated. + + +Normal response codes: 200 +Error response codes:404,401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/metering-labels/metering-label-rule-show-response.json + :language: javascript + + + + + + +Delete metering label rule +========================== + +.. rest_method:: DELETE /v2.0/metering/metering-label-rules/{metering-label-rule-id} + +Deletes an L3 metering label rule. + +Error response codes:404,204,401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + + + + diff --git a/api-ref/source/networking/v2-ext/network-provider.inc b/api-ref/source/networking/v2-ext/network-provider.inc new file mode 100644 index 000000000..b9c0b86b9 --- /dev/null +++ b/api-ref/source/networking/v2-ext/network-provider.inc @@ -0,0 +1,285 @@ +.. -*- rst -*- + +================================================ +Networks provider extended attributes (networks) +================================================ + +Lists, creates, shows information for, updates, and deletes +networks. + +The provider extension decorates network resources with additional +attributes. These attributes are ``provider:network_type``, +``provider:physical_network``, and ``provider:segmentation_id``. +The validation rules for these attributes are the same as for the +`Networks multiple provider extension +`_ . You cannot use both extensions at +the same time. + + +Show network details +==================== + +.. rest_method:: GET /v2.0/networks/{network_id} + +Shows details for a network. + + +Normal response codes: 200 +Error response codes:404,401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - network_id: network_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - router:external: router:external + - availability_zone_hints: availability_zone_hints + - availability_zones: availability_zones + - name: name + - provider:physical_network: provider:physical_network + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - provider:segmentation_id: provider:segmentation_id + - mtu: mtu + - shared: shared + - subnets: subnets + - port_security_enabled: port_security_enabled + - provider:network_type: provider:network_type + - id: id + - network: network + + + +Response Example +---------------- + +.. literalinclude:: ../samples/networks/network-show-response.json + :language: javascript + + + + + + +Update network +============== + +.. rest_method:: PUT /v2.0/networks/{network_id} + +Updates a network. + + +Normal response codes: 200 +Error response codes:404,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - router:external: router:external + - availability_zone_hints: availability_zone_hints + - availability_zones: availability_zones + - network: network + - provider:physical_network: provider:physical_network + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - provider:network_type: provider:network_type + - shared: shared + - port_security_enabled: port_security_enabled + - provider:segmentation_id: provider:segmentation_id + - name: name + - network_id: network_id + +Request Example +--------------- + +.. literalinclude:: ../samples/networks/network-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - router:external: router:external + - subnets: subnets + - network: network + - provider:physical_network: provider:physical_network + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - provider:segmentation_id: provider:segmentation_id + - mtu: mtu + - shared: shared + - port_security_enabled: port_security_enabled + - provider:network_type: provider:network_type + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/networks/network-update-response.json + :language: javascript + + + + + + + +Delete network +============== + +.. rest_method:: DELETE /v2.0/networks/{network_id} + +Deletes a network. + +Error response codes:409,404,204,401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - network_id: network_id + + + + + + + + + +List networks +============= + +.. rest_method:: GET /v2.0/networks + +Lists networks that are accessible to the tenant who submits the request. + + +Normal response codes: 200 +Error response codes:401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - router:external: router:external + - availability_zone_hints: availability_zone_hints + - availability_zones: availability_zones + - name: name + - provider:physical_network: provider:physical_network + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - networks: networks + - mtu: mtu + - shared: shared + - subnets: subnets + - port_security_enabled: port_security_enabled + - provider:network_type: provider:network_type + - id: id + - provider:segmentation_id: provider:segmentation_id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/networks/networks-list-response.json + :language: javascript + + + + + +Create network +============== + +.. rest_method:: POST /v2.0/networks + +Creates a network. + +Error response codes:201,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - router:external: router:external + - network: network + - provider:physical_network: provider:physical_network + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - provider:network_type: provider:network_type + - shared: shared + - port_security_enabled: port_security_enabled + - provider:segmentation_id: provider:segmentation_id + - name: name + +Request Example +--------------- + +.. literalinclude:: ../samples/networks/network-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - router:external: router:external + - availability_zone_hints: availability_zone_hints + - network: network + - provider:physical_network: provider:physical_network + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - provider:segmentation_id: provider:segmentation_id + - mtu: mtu + - shared: shared + - subnets: subnets + - port_security_enabled: port_security_enabled + - provider:network_type: provider:network_type + - id: id + - name: name + + + + + + diff --git a/api-ref/source/networking/v2-ext/networking-ip-availability-ext.inc b/api-ref/source/networking/v2-ext/networking-ip-availability-ext.inc new file mode 100644 index 000000000..633f8fdaa --- /dev/null +++ b/api-ref/source/networking/v2-ext/networking-ip-availability-ext.inc @@ -0,0 +1,109 @@ +.. -*- rst -*- + +======================================= +Network IP availability and usage stats +======================================= + +List and show the network IP usage stats of all networks and a +specified network. These operations are available in the Mitaka +release (April 2016). + + +Show Network IP Availability +============================ + +.. rest_method:: GET /v2.0/network-ip-availabilities/{network_id} + +Shows network IP availability details for a network. + + +Normal response codes: 200 +Error response codes:403,401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - network_id: network_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - used_ips: used_ips + - subnet_ip_availability: subnet_ip_availability + - network_id: network_id + - tenant_id: tenant_id + - total_ips: total_ips + - network_ip_availability: network_ip_availability + - subnet_id: subnet_id + - subnet_name: subnet_name + - ip_version: ip_version + - cidr: cidr + - network_name: network_name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/network-ip-availability/network-ip-availability-show.json + :language: javascript + + + + + + +List Network IP Availability +============================ + +.. rest_method:: GET /v2.0/network-ip-availabilities + +Lists network IP availability of all networks. + + +Normal response codes: 200 +Error response codes:403,401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - used_ips: used_ips + - subnet_ip_availability: subnet_ip_availability + - network_id: network_id + - tenant_id: tenant_id + - total_ips: total_ips + - subnet_id: subnet_id + - subnet_name: subnet_name + - ip_version: ip_version + - cidr: cidr + - network_name: network_name + - network_ip_availabilities: network_ip_availabilities + + + +Response Example +---------------- + +.. literalinclude:: ../samples/network-ip-availability/network-ip-availability-list.json + :language: javascript + + + + + diff --git a/api-ref/source/networking/v2-ext/networks-multi-provider-ext.inc b/api-ref/source/networking/v2-ext/networks-multi-provider-ext.inc new file mode 100644 index 000000000..2fbe7a821 --- /dev/null +++ b/api-ref/source/networking/v2-ext/networks-multi-provider-ext.inc @@ -0,0 +1,198 @@ +.. -*- rst -*- + +=============================================== +Networks multiple provider extension (networks) +=============================================== + +Enables administrative users to define multiple physical bindings +for an OpenStack Networking network and list or show details for +networks with multiple physical bindings. + +You cannot update any ``provider`` attributes. If you try to do so, +an error occurs. + +To delete a network with multiple physical bindings, issue a normal +delete network request. + +To define multiple physical bindings for a network, include a +``segments`` list in the request body of a ``POST /v2.0/networks`` +request. Each element in the ``segments`` list has the same +structure as the provider network attributes. These attributes are +``provider:network_type``, ``provider:physical_network``, and +``provider:segmentation_id``. The validation rules for these +attributes are the same as for the `Networks provider extended +attributes `_ . You cannot use +both extensions at the same time. + +The NSX and ML2 plug-ins support this extension. With the ML2 plug- +in, you can specify multiple VLANs for a network, a VXLAN tunnel +ID, and a VLAN. + + +Show details for a network with multiple segments +================================================= + +.. rest_method:: GET /v2.0/networks/{network_id} + +Shows details for a network with multiple segments. + + +Normal response codes: 200 +Error response codes:404,401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - network_id: network_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - router:external: router:external + - subnets: subnets + - network: network + - provider:physical_network: provider:physical_network + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - segments: segments + - provider:segmentation_id: provider:segmentation_id + - mtu: mtu + - shared: shared + - port_security_enabled: port_security_enabled + - provider:network_type: provider:network_type + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/networks/networks-multi-show-response.json + :language: javascript + + + + + + +List networks +============= + +.. rest_method:: GET /v2.0/networks + +Lists networks that are accessible to the tenant who submits the request. Networks with multiple segments include the ``segments`` list in the response. + + +Normal response codes: 200 +Error response codes:401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - router:external: router:external + - subnets: subnets + - name: name + - provider:physical_network: provider:physical_network + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - segments: segments + - mtu: mtu + - shared: shared + - id: id + - port_security_enabled: port_security_enabled + - provider:network_type: provider:network_type + - networks: networks + - provider:segmentation_id: provider:segmentation_id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/networks/networks-multi-list-response.json + :language: javascript + + + + + +Create network with multiple segment mappings +============================================= + +.. rest_method:: POST /v2.0/networks + +Creates a network with multiple segment mappings. + +Error response codes:201,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - router:external: router:external + - network: network + - provider:physical_network: provider:physical_network + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - segments: segments + - provider:network_type: provider:network_type + - shared: shared + - port_security_enabled: port_security_enabled + - provider:segmentation_id: provider:segmentation_id + - name: name + +Request Example +--------------- + +.. literalinclude:: ../samples/networks/network-multi-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - router:external: router:external + - subnets: subnets + - network: network + - provider:physical_network: provider:physical_network + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - provider:segmentation_id: provider:segmentation_id + - mtu: mtu + - shared: shared + - port_security_enabled: port_security_enabled + - provider:network_type: provider:network_type + - id: id + - name: name + + + + + + diff --git a/api-ref/source/networking/v2-ext/networks-vlan-transparency-ext.inc b/api-ref/source/networking/v2-ext/networks-vlan-transparency-ext.inc new file mode 100644 index 000000000..660010706 --- /dev/null +++ b/api-ref/source/networking/v2-ext/networks-vlan-transparency-ext.inc @@ -0,0 +1,178 @@ +.. -*- rst -*- + +====================================== +VLAN transparency extension (networks) +====================================== + +Enables plug-ins that support VLAN transparency to deliver VLAN- +transparent trunk networks. If the service does not support VLAN +transparency and a user requests a VLAN-transparent network, the +plug-in refuses to create one and returns an appropriate error to +the user. + +You cannot update the ``vlan-transparent`` attribute. If you try to +do so, an error occurs. + +To delete a VLAN-transparent network, issue a normal delete network +request. + +The ML2 plug-in currently supports this extension. With the ML2 +plug-in, you can set the ``vlan-transparent`` attribute to either +``true`` or ``false``. + + +Show VLAN-transparent network details +===================================== + +.. rest_method:: GET /v2.0/networks/{network_id} + +Shows details for a VLAN-transparent network. + + +Normal response codes: 200 +Error response codes:404,401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - network_id: network_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - router:external: router:external + - subnets: subnets + - network: network + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - mtu: mtu + - shared: shared + - vlan_transparent: vlan_transparent + - port_security_enabled: port_security_enabled + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/networks/network-vlan-transparent-show-response.json + :language: javascript + + + + + + +List networks with VLAN transparency attribute +============================================== + +.. rest_method:: GET /v2.0/networks + +Lists networks. The response shows the VLAN transparency attribute. + + +Normal response codes: 200 +Error response codes:401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - router:external: router:external + - subnets: subnets + - name: name + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - mtu: mtu + - vlan_transparent: vlan_transparent + - shared: shared + - id: id + - port_security_enabled: port_security_enabled + - networks: networks + + + +Response Example +---------------- + +.. literalinclude:: ../samples/networks/networks-vlan-transparent-list-response.json + :language: javascript + + + + + +Create VLAN-transparent network +=============================== + +.. rest_method:: POST /v2.0/networks + +Creates a VLAN-transparent network. + +Error response codes:201,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - router:external: router:external + - network: network + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - shared: shared + - vlan_transparent: vlan_transparent + - port_security_enabled: port_security_enabled + - name: name + +Request Example +--------------- + +.. literalinclude:: ../samples/networks/network-vlan-transparent-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - router:external: router:external + - subnets: subnets + - network: network + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - mtu: mtu + - shared: shared + - vlan_transparent: vlan_transparent + - port_security_enabled: port_security_enabled + - id: id + - name: name + + + + + + diff --git a/api-ref/source/networking/v2-ext/parameters.yaml b/api-ref/source/networking/v2-ext/parameters.yaml new file mode 100644 index 000000000..65a2bdada --- /dev/null +++ b/api-ref/source/networking/v2-ext/parameters.yaml @@ -0,0 +1,3822 @@ +# variables in header +{} + +# variables in path +alias_1: + description: | + The alias of an extension. + in: path + required: false + type: string +connection_id: + description: | + The UUID of the IPSec site-to-site connection. + in: path + required: false + type: string +endpoint_group_id: + description: | + The UUID of the VPN endpoint group. + in: path + required: false + type: string +firewall_id: + description: | + The UUID of the firewall. + in: path + required: false + type: string +firewall_policy_id_2: + description: | + The UUID of the firewall policy. + in: path + required: false + type: string +firewall_rule_id: + description: | + The UUID for the firewall rule. + in: path + required: false + type: string +flavor_id: + description: | + The UUID of the flavor. + in: path + required: false + type: string +floatingip_id: + description: | + The UUID of the floating IP address. + in: path + required: false + type: string +health_monitor_id: + description: | + The UUID for the health monitor. + in: path + required: false + type: string +ikepolicy_id_1: + description: | + The UUID of the IKE policy. + in: path + required: false + type: string +ipsecpolicy_id_1: + description: | + The UUID of the IPSec policy. + in: path + required: false + type: string +member_id: + description: | + The UUID for the member. + in: path + required: false + type: string +network_id: + description: | + The UUID of the network. + in: path + required: false + type: string +policy_id: + description: | + The UUID of the policy. + in: path + required: false + type: string +pool_id: + description: | + The UUID for the pool. + in: path + required: false + type: string +port_id_3: + description: | + The UUID of the port. + in: path + required: false + type: string +profile_id: + description: | + The UUID of the profile. + in: path + required: false + type: string +resource_id: + description: | + The UUID of resource which the tag is set on. + in: path + required: false + type: string +resource_type: + description: | + The type of resource which the tag is set on. + in: path + required: false + type: string +router_id: + description: | + The UUID of the router. + in: path + required: false + type: string +rule_id: + description: | + The UUID of the rule. + in: path + required: false + type: string +security_group_id_2: + description: | + The UUID of the security group. + in: path + required: false + type: string +service_id: + description: | + The UUID of the VPN service. + in: path + required: false + type: string +subnetpool_id: + description: | + The UUID of the subnet pool. + in: path + required: false + type: string +tag: + description: | + The name for the tag. + in: path + required: false + type: string +tenant_id_33: + description: | + The UUID of the tenant. + in: path + required: false + type: string +vip_id_1: + description: | + The UUID for the VIP. + in: path + required: false + type: string + +# variables in query +fields: + description: | + The fields that you want the server to return. + in: query + required: false + type: string +verbose: + description: | + Show detailed information. + in: query + required: false + type: boolean + +# variables in body +action: + description: | + The action that the API performs on traffic that + matches the firewall rule. Valid value is ``allow`` or ``deny``. + Default is ``deny``. + in: body + required: false + type: string +action_1: + description: | + The dead peer detection (DPD) action. A valid + value is ``clear``, ``hold``, ``restart``, ``disabled``, or + ``restart-by-peer``. Default value is ``hold``. + in: body + required: false + type: string +action_2: + description: | + The action that the API performs on traffic that + matches the firewall rule. Value is ``allow`` or ``deny``. + in: body + required: true + type: string +action_3: + description: | + The dead peer detection (DPD) action. A valid + value is ``clear``, ``hold``, ``restart``, ``disabled``, or + ``restart-by-peer``. Default value is ``hold``. + in: body + required: true + type: string +address: + description: | + The IP address of the member. + format: ipv4 + in: body + required: true + type: string +address_1: + description: | + The IP address of the VIP. + format: ipv4 + in: body + required: false + type: string +address_2: + description: | + The IP address of the VIP. + format: ipv4 + in: body + required: true + type: string +address_scope_id: + description: | + An address scope to assign to the subnet pool. + in: body + required: false + type: string +address_scope_id_1: + description: | + The address scope. + in: body + required: true + type: string +admin_state_up: + description: | + The administrative state of the firewall, which + is up (``true``) or down (``false``). + in: body + required: false + type: boolean +admin_state_up_1: + description: | + The administrative state of the health monitor. A + valid value is up (``true``) or down (``false``). + in: body + required: false + type: boolean +admin_state_up_10: + description: | + The administrative state of the VIP. A valid + value is up (``true``) or down (``false``). + in: body + required: false + type: boolean +admin_state_up_11: + description: | + The administrative state of the VPN service, + which is up (``true``) or down (``false``). If down, connections + on service are not active. + in: body + required: false + type: boolean +admin_state_up_12: + description: | + The administrative state of the firewall, which + is up (``true``) or down (``false``). + in: body + required: true + type: boolean +admin_state_up_13: + description: | + The administrative state of the health monitor, + which is up (``true``) or down (``false``). + in: body + required: false + type: boolean +admin_state_up_14: + description: | + The administrative state of the IPSec connection, + which is up (``true``) or down (``false``). If down, the + connection does not forward packets. + in: body + required: true + type: boolean +admin_state_up_15: + description: | + The administrative state of the listener, which + is up (``true``) or down (``false``). + in: body + required: true + type: boolean +admin_state_up_16: + description: | + The administrative state of the load balancer, + which is up (``true``) or down (``false``). + in: body + required: true + type: boolean +admin_state_up_17: + description: | + The administrative state of the member. A valid + value is up (``true``) or down (``false``). + in: body + required: true + type: boolean +admin_state_up_18: + description: | + The administrative state of the network, which is + up (``true``) or down (``false``). + in: body + required: true + type: boolean +admin_state_up_19: + description: | + The administrative state of the pool, which is up + (``true``) or down (``false``). + in: body + required: true + type: boolean +admin_state_up_2: + description: | + The administrative state of the IPSec connection, + which is up (``true``) or down (``false``). If down, the + connection does not forward packets. + in: body + required: false + type: boolean +admin_state_up_20: + description: | + The administrative state of the router, which is + up (``true``) or down (``false``). + in: body + required: true + type: boolean +admin_state_up_21: + description: | + The administrative state of the VIP. A valid + value is up (``true``) or down (``false``). + in: body + required: true + type: boolean +admin_state_up_22: + description: | + The administrative state of the VPN service, + which is up (``true``) or down (``false``). If down, the port does + not forward packets. + in: body + required: true + type: boolean +admin_state_up_3: + description: | + The administrative state of the load balancer, + which is up (``true``) or down (``false``). Set this attribute to + ``false`` to create the listener in an administratively down + state. + in: body + required: false + type: boolean +admin_state_up_4: + description: | + The administrative state of the load balancer, + which is up (``true``) or down (``false``). + in: body + required: false + type: boolean +admin_state_up_5: + description: | + The administrative state of the member, which is + up (``true``) or down (``false``). + in: body + required: true + type: boolean +admin_state_up_6: + description: | + The administrative state of the member. A valid + value is up (``true``) or down (``false``). + in: body + required: false + type: boolean +admin_state_up_7: + description: | + The administrative state of the network, which is + up (``true``) or down (``false``). + in: body + required: false + type: boolean +admin_state_up_8: + description: | + The administrative state of the pool. A valid + value is up (``true``) or down (``false``). + in: body + required: false + type: boolean +admin_state_up_9: + description: | + The administrative state of the router, which is + up (``true``) or down (``false``). + in: body + required: false + type: boolean +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 +audited: + description: | + Each time that the firewall policy or its + associated rules are changed, the API sets this attribute to + ``false``. To audit the policy, explicitly set this attribute to + ``true``. + in: body + required: false + type: boolean +audited_1: + description: | + Indicates whether the policy has been audited. + Each time that the firewall policy or its associated rules are + changed, the API sets this attribute to ``false``. To audit the + policy, the policy owner must explicitly update the policy to set + this attribute to ``true``. + in: body + required: true + type: boolean +auth_algorithm: + description: | + The authentication hash algorithm. A valid value + is ``sha1``, which is the default. + in: body + required: false + type: string +auth_algorithm_1: + description: | + The authentication algorithm. A valid value is + ``sha1``, which is the default. + in: body + required: false + type: string +auth_algorithm_2: + description: | + The authentication hash algorithm. A valid value + is ``sha1``, which is the default. + in: body + required: true + type: string +auth_algorithm_3: + description: | + The authentication algorithm. A valid value is + ``sha1``, which is the default. + in: body + required: true + type: string +auth_mode: + description: | + The authentication mode. A valid value is + ``psk``, which is the default. + in: body + required: false + type: string +auth_mode_1: + description: | + The authentication mode. A valid value is + ``psk``, which is the default. + in: body + required: true + type: string +availability_zone_hints: + description: | + The availability zone candidate for the network. + in: body + required: true + type: array +availability_zones: + description: | + The availability zone for the network. + in: body + required: true + type: array +bandwidth_limit_rule: + description: | + A ``bandwidth_limit_rule`` object. + in: body + required: true + type: object +bandwidth_limit_rules: + description: | + A list of bandwidth limit rules associated with + the QoS policy. + in: body + required: true + type: array +cidr: + description: | + The CIDR of the subnet. + in: body + required: true + type: string +connection_limit: + description: | + The maximum number of connections permitted for + this load balancer. Default is infinite. + in: body + required: false + type: integer +connection_limit_1: + description: | + The maximum number of connections allowed for the + VIP. Value is ``-1`` if the limit is not set. + in: body + required: false + type: integer +connection_limit_2: + description: | + The maximum number of connections permitted for + this load balancer. Default is infinite. + in: body + required: true + type: integer +connection_limit_3: + description: | + The maximum number of connections allowed for the + VIP. Default is ``-1``, meaning no limit. + in: body + required: true + type: integer +created_at: + description: | + Time at which subnetpool has been created. + in: body + required: true + type: string +default_pool_id: + description: | + The UUID of default pool. Must have compatible + protocol with listener. + in: body + required: false + type: string +default_pool_id_1: + description: | + The UUID of default pool. Must have compatible + protocol with listener. + in: body + required: true + type: string +default_prefixlen: + description: | + The size of the prefix to allocate when the + ``cidr`` or ``prefixlen`` attributes are omitted when you create + the subnet. Default is ``min_prefixlen``. + in: body + required: false + type: integer +default_prefixlen_1: + description: | + The size of the prefix to allocate when the + ``cidr`` or ``prefixlen`` attributes are omitted when you create + the subnet. + in: body + required: true + type: integer +default_quota: + description: | + A per-tenant quota on the prefix space that can + be allocated from the subnet pool for tenant subnets. Default is + no quota is enforced on allocations from the subnet pool. For IPv4 + subnet pools, ``default_quota`` is measured in units of /32. For + IPv6 subnet pools, ``default_quota`` is measured units of /64. All + tenants that use the subnet pool have the same prefix quota + applied. + in: body + required: false + type: integer +default_quota_1: + description: | + A per-tenant quota on the prefix space that can + be allocated from the subnet pool for tenant subnets. For IPv4 + subnet pools, ``default_quota`` is measured in units of /32. For + IPv6 subnet pools, ``default_quota`` is measured units of /64. All + tenants that use the subnet pool have the same prefix quota + applied. + in: body + required: true + type: integer +default_quota_2: + description: | + A per-tenant quota on the prefix space that can + be allocated from the subnet pool for tenant subnets. Default is + no quota is enforced on allocations from the subnet pool. For IPv4 + subnet pools, ``default_quota`` is measured in units of /32. For + IPv6 subnet pools, ``default_quota`` is measured units of /64. All + tenants that use the subnet pool have the same prefix quota + applied. Updating this parameter has no effect on existing subnet + allocations. The existing subnet allocations for each tenant are + counted against the updated prefix space quota. + in: body + required: false + type: integer +default_tls_container_ref: + description: | + A reference to a container of TLS secrets. + in: body + required: false + type: string +default_tls_container_ref_1: + description: | + A reference to a container of TLS secrets. + in: body + required: true + type: string +delay: + description: | + The time, in seconds, between sending probes to + members. + in: body + required: true + type: integer +delay_1: + description: | + The amount of time, in seconds, between sending + probes to members. + in: body + required: true + type: integer +delay_2: + description: | + The amount of time, in seconds, between sending + probes to members. + in: body + required: false + type: integer +description: + description: | + The human-readable description for the firewall + policy. + in: body + required: false + type: string +description_1: + description: | + Human readable description for the firewall rule. + The maximum length is 1024 characters. No default. + in: body + required: false + type: string +description_10: + description: | + The QoS policy description. + in: body + required: false + type: string +description_11: + description: | + Human-readable description for the pool. + in: body + required: false + type: string +description_12: + description: | + The security group description. + in: body + required: false + type: string +description_13: + description: | + Human-readable description for the service + profile. + in: body + required: false + type: string +description_14: + description: | + Human-readable description for the VIP. + in: body + required: false + type: string +description_15: + description: | + Human-readable description for the VPN endpoint + group. + in: body + required: false + type: string +description_16: + description: | + Human-readable description for the VPN service. + in: body + required: false + type: string +description_17: + description: | + The human-readable description for the firewall + policy. + in: body + required: true + type: string +description_18: + description: | + The extension description. + in: body + required: true + type: string +description_19: + description: | + Human readable description for the firewall rule. + in: body + required: true + type: string +description_2: + description: | + Human-readable description for the firewall + service. + in: body + required: false + type: string +description_20: + description: | + The human-readable description for the firewall + service. + in: body + required: true + type: string +description_21: + description: | + Human-readable description for the flavor. + in: body + required: true + type: string +description_22: + description: | + Human-readable description for the IKE policy. + in: body + required: true + type: string +description_23: + description: | + Human-readable description for the IPSec + connection. + in: body + required: true + type: string +description_24: + description: | + Detailed description of the listener. + in: body + required: true + type: string +description_25: + description: | + The load balancer description. + in: body + required: true + type: string +description_26: + description: | + Description for the metering label. + in: body + required: true + type: string +description_27: + description: | + The description of the QoS policy. + in: body + required: true + type: string +description_28: + description: | + The description for the pool. + in: body + required: true + type: string +description_29: + description: | + The security group description. + in: body + required: true + type: string +description_3: + description: | + Human-readable description for the flavor. + in: body + required: false + type: string +description_30: + description: | + Human-readable description for the service + profile. + in: body + required: true + type: string +description_31: + description: | + Human-readable description for the VIP. + in: body + required: true + type: string +description_32: + description: | + Human-readable description for the VPN endpoint + group. + in: body + required: true + type: string +description_33: + description: | + Human-readable description for the VPN service. + in: body + required: true + type: string +description_34: + description: | + New human-readable description for the flavor. + in: body + required: false + type: string +description_35: + description: | + Security group description. + in: body + required: false + type: string +description_4: + description: | + Human-readable description for the IKE policy. + in: body + required: false + type: string +description_5: + description: | + Human-readable description for the IPSec policy. + in: body + required: true + type: string +description_6: + description: | + Human-readable description for the IPSec + connection. + in: body + required: false + type: string +description_7: + description: | + Detailed description of the listener. + in: body + required: false + type: string +description_8: + description: | + The load balancer description. + in: body + required: false + type: string +description_9: + description: | + The description for the metering label. + in: body + required: false + type: string +destination: + description: | + The destination CIDR. + in: body + required: false + type: string +destination_ip_address: + description: | + The destination IPv4 or IPv6 address or CIDR. No + default. + in: body + required: false + type: string +destination_ip_address_1: + description: | + The destination IPv4 or IPv6 address or CIDR. + in: body + required: true + type: string +destination_port: + description: | + The destination port or port range. A valid + value is a port number, as an integer, or a port range, in the + format of a ``:`` separated range. For a port range, include both + ends of the range. For example, ``80:90``. + in: body + required: false + type: string +destination_port_1: + description: | + The destination port or port range. + in: body + required: true + type: string +direction: + description: | + Ingress or egress, which is the direction in + which the metering rule is applied. + in: body + required: true + type: string +direction_1: + description: | + Ingress or egress: The direction in which the + security group rule is applied. For a compute instance, an ingress + security group rule is applied to incoming (ingress) traffic for + that instance. An egress rule is applied to traffic leaving the + instance. + in: body + required: true + type: string +direction_2: + description: | + Ingress or egress: the direction in which the + security group rule is applied. For a compute instance, an ingress + security group rule is applied to incoming (ingress) traffic for + that instance. An egress rule is applied to traffic leaving the + instance. + in: body + required: true + type: string +distributed: + description: | + If ``true``, indicates a distributed router. + in: body + required: true + type: boolean +dpd: + description: | + A dictionary with dead peer detection (DPD) + protocol controls. + in: body + required: false + type: object +dpd_1: + description: | + A dictionary with dead peer detection (DPD) + protocol controls. + in: body + required: true + type: object +driver: + description: | + Provider driver to use for this profile. Example: + ``neutron_lbaas.drivers.octavia.driver.OctaviaDriver`` + in: body + required: false + type: string +driver_1: + description: | + Driver to associate with profile. + in: body + required: true + type: string +driver_2: + description: | + Provider driver to use for this profile. Ex: + neutron_lbaas.drivers.octavia.driver.OctaviaDriver. + in: body + required: false + type: string +enable_snat: + description: | + Enable Source NAT (SNAT) attribute. Default is + ``true``. To persist this attribute value, set the + ``enable_snat_by_default`` option in the ``neutron.conf`` file. + in: body + required: false + type: boolean +enable_snat_1: + description: | + Enable Source NAT (SNAT) attribute, a part of + ext-gw-mode extension. When a gateway is attached to a router + using an L3 extension, Network Address Translation (NAT) is + enabled for traffic generated by subnets attached to the router. + in: body + required: true + type: boolean +enabled: + description: | + Set to ``false`` to disable this rule in the + firewall policy. Facilitates selectively turning off rules without + having to disassociate the rule from the firewall policy. Valid + value is ``true`` or ``false``. Default is ``true``. + in: body + required: false + type: boolean +enabled_1: + description: | + Indicates whether this flavor is enabled or + disabled. Default ``true``. + in: body + required: false + type: boolean +enabled_2: + description: | + Indicates whether this service profile is enabled + or disabled. Default ``true``. + in: body + required: false + type: boolean +enabled_3: + description: | + Indicates whether this rule is enabled or + disabled in the firewall policy. + in: body + required: true + type: boolean +enabled_4: + description: | + Indicates whether this flavor is enabled or + disabled. + in: body + required: true + type: boolean +enabled_5: + description: | + Indicates whether this service profile is enabled + or disabled. + in: body + required: true + type: boolean +enabled_6: + description: | + Indicates whether this flavor is enabled or + disabled. + in: body + required: false + type: boolean +enabled_7: + description: | + Indicates whether this service profile is enabled + or disabled. Default true. + in: body + required: false + type: boolean +encapsulation_mode: + description: | + The encapsulation mode. A valid value is + ``tunnel`` or ``transport``. Default is ``tunnel``. + in: body + required: false + type: string +encapsulation_mode_1: + description: | + The encapsulation mode. A valid value is + ``tunnel`` or ``transport``. Default is ``tunnel``. + in: body + required: true + type: string +encryption_algorithm: + description: | + The encryption algorithm. A valid value is + ``3des``, ``aes-128``, ``aes-192``, ``aes-256``, and so on. + Default is ``aes-128``. + in: body + required: false + type: string +encryption_algorithm_1: + description: | + The encryption algorithm. A valid value is + ``3des``, ``aes-128``, ``aes-192``, ``aes-256``, and so on. + Default is ``aes-128``. + in: body + required: true + type: string +endpoints: + description: | + List of endpoints of the same type, for the + endpoint group. The values will depend on type. + in: body + required: true + type: array +endpoints_1: + description: | + A list of endpoints of the same type for the + endpoint group. Theses values depend on the type. + in: body + required: true + type: array +ethertype: + description: | + Must be IPv4 or IPv6, and addresses represented + in CIDR must match the ingress or egress rules. + in: body + required: false + type: string +ethertype_1: + description: | + Must be IPv4 or IPv6, and addresses represented + in CIDR must match the ingress or egress rules. + in: body + required: true + type: string +excluded: + description: | + Indicates whether to count the traffic of a + specific IP address with the ``remote_ip_prefix`` value. Default + is ``false``. + in: body + required: false + type: boolean +'excluded ': + description: | + Indicates whether to count the traffic of a + specific IP address with the ``remote_ip_prefix`` value. Default + is ``false``. + in: body + required: true + type: boolean +expected_codes: + description: | + The list of HTTP status codes expected in + response from the member to declare it healthy. Specify one of the + following values: - A single value, such as 200. - A list, such + as 200, 202. - A range, such as 200-204. + in: body + required: false + type: string +expected_codes_1: + description: | + Expected HTTP codes for a passing HTTP(S) + monitor. + in: body + required: false + type: string +extension: + description: | + A list of ``extension`` object. + in: body + required: true + type: object +external_fixed_ips: + description: | + The IP address parameters. + in: body + required: false + type: array +external_fixed_ips_1: + description: | + The IP address parameters. + in: body + required: true + type: array +external_gateway_info: + description: | + The external gateway parameters, which include + the ``network_id``, ``enable_snat`` and ``external_fixed_ips`` + parameters. + in: body + required: false + type: object +external_gateway_info_1: + description: | + The external gateway parameters, which include + the ``network_id``, ``enable_snat`` and ``external_fixed_ips`` + parameters. + in: body + required: true + type: object +external_v4_ip: + description: | + Read-only external (public) IPv4 address that is + used for the VPN service. The VPN plugin sets this address if an + IPv4 interface is available. + in: body + required: true + type: string +external_v6_ip: + description: | + Read-only external (public) IPv6 address that is + used for the VPN service. The VPN plugin sets this address if an + IPv6 interface is available. + in: body + required: true + type: string +firewall: + description: | + A ``firewall`` object. + in: body + required: true + type: object +firewall_list: + description: | + A list of the UUIDs for firewall associated with + the firewall policy. + in: body + required: true + type: array +firewall_policies: + description: | + A list of ``firewall_policy`` objects. + in: body + required: true + type: array +firewall_policy: + description: | + A ``firewall_policy`` object. + in: body + required: true + type: object +firewall_policy_id: + description: | + Read-only attribute that the API populates with + the UUID of the firewall policy when you associate this firewall + rule with a policy. You can associate a firewall rule with one + policy at a time. You can update this association can to a + different firewall policy. If you do not associate the rule with + any policy, this attribute is ``null``. + in: body + required: true + type: string +firewall_policy_id_1: + description: | + The UUID of the policy that is associated with + the firewall. + in: body + required: true + type: string +firewall_policy_id_3: + description: | + The UUID of the policy that is associated with + the firewall. + in: body + required: false + type: string +firewall_rule: + description: | + A ``firewall_rule`` object. + in: body + required: true + type: object +firewall_rule_id_1: + description: | + The UUID of the firewall rule. + in: body + required: true + type: string +firewall_rules: + description: | + A list of the UUIDs for firewall rule associated + with the firewall policy. + in: body + required: true + type: array +firewall_rules_id: + description: | + A list of rules to associate with the firewall + policy. + in: body + required: false + type: array +firewalls: + description: | + A list of ``firewall_rule`` objects. + in: body + required: true + type: array +firewalls_1: + description: | + A list of ``firewall`` objects. + in: body + required: true + type: array +fixed_ip_address: + description: | + The fixed IP address that is associated with the + floating IP. To associate the floating IP with a fixed IP at + creation time, you must specify the identifier of the internal + port. If an internal port has multiple associated IP addresses, + the service chooses the first IP address unless you explicitly + define a fixed IP address in the ``fixed_ip_address`` parameter. + in: body + required: false + type: string +fixed_ip_address_1: + description: | + The fixed IP address that is associated with the + floating IP address. + in: body + required: true + type: string +flavor: + description: | + A ``flavor`` object. + in: body + required: true + type: object +flavor_1: + description: | + The UUID of a flavor. + in: body + required: false + type: string +flavor_2: + description: | + The UUID of a flavor if set. + in: body + required: false + type: string +flavors: + description: | + A list of ``flavor`` objects. + in: body + required: true + type: array +floating_ip_address: + description: | + The floating IP address. + in: body + required: false + type: string +floating_ip_address_1: + description: | + The floating IP address. + in: body + required: true + type: string +floating_network_id: + description: | + The UUID of the network associated with the + floating IP. + in: body + required: true + type: string +floatingip: + description: | + A ``floatingip`` object. When you associate a + floating IP address with a VM, the instance has the same public IP + address each time that it boots, basically to maintain a + consistent IP address for maintaining DNS assignment. + in: body + required: true + type: object +floatingip_1: + description: | + The number of floating IP addresses allowed for + each tenant. A value of ``-1`` means no limit. + in: body + required: true + type: integer +floatingip_2: + description: | + The number of floating IP addresses allowed for + each tenant. A value of ``-1`` means no limit. + in: body + required: false + type: integer +floatingips: + description: | + A list of ``floatingip`` objects. + in: body + required: true + type: array +ha: + description: | + If ``true``, indicates a highly-available router. + in: body + required: true + type: boolean +health_monitor: + description: | + A ``health_monitor`` object. + in: body + required: true + type: object +health_monitors: + description: | + List of health monitors that are associated with + the pool. + in: body + required: false + type: array +health_monitors_1: + description: | + A list of ``health_monitor`` objects. + in: body + required: true + type: array +health_monitors_2: + description: | + The UUID for the associated health monitor. + in: body + required: true + type: string +health_monitors_status: + description: | + The statuses of the health monitors that are + associated with the pool. + in: body + required: true + type: string +healthmonitor: + description: | + The associated healthmonitor, if any. + in: body + required: true + type: object +healthmonitor_id: + description: | + The UUID of the health monitor. + in: body + required: false + type: string +http_method: + description: | + The HTTP method that the monitor uses for + requests. + in: body + required: false + type: string +id: + description: | + The UUID of the router. + in: body + required: true + type: string +id_1: + description: | + The UUID of the service profile. + in: body + required: true + type: string +id_10: + description: | + The UUID for the IPSec policy. + in: body + required: true + type: string +id_11: + description: | + The UUID for the IPSec connection. + in: body + required: true + type: string +id_12: + description: | + The UUID of the listener. + in: body + required: true + type: string +id_13: + description: | + The UUID for the load balancer. + in: body + required: true + type: string +id_14: + description: | + The UUID for the member. + in: body + required: true + type: string +id_15: + description: | + The UUID for the metering label rule. + in: body + required: true + type: string +id_16: + description: | + The UUID of the metering label. + in: body + required: true + type: string +id_17: + description: | + The UUID of the network. + in: body + required: true + type: string +id_18: + description: | + The generated UUID of the QoS policy. + in: body + required: true + type: string +id_19: + description: | + The UUID for the pool. + in: body + required: true + type: string +id_2: + description: | + The UUID for the health monitor. + in: body + required: true + type: string +id_20: + description: | + The UUID of the security group rule. + in: body + required: true + type: string +id_21: + description: | + The UUID of the subnet pool. + in: body + required: true + type: string +id_22: + description: | + The UUID for the VIP. + in: body + required: true + type: string +id_23: + description: | + The UUID for the VPN endpoint group. + in: body + required: true + type: string +id_24: + description: | + The UUID for the VPN service. + in: body + required: true + type: string +id_25: + description: | + The UUID of network. + in: body + required: true + type: string +id_26: + description: | + The UUID of the security group. + in: body + required: true + type: string +id_3: + description: | + The UUID of the QoS policy rule. + in: body + required: true + type: string +id_4: + description: | + The UUID for the firewall policy. + in: body + required: true + type: string +id_5: + description: | + The generated UUID for the firewall rule object. + in: body + required: true + type: string +id_6: + description: | + The UUID for the firewall service. + in: body + required: true + type: string +id_7: + description: | + The UUID of the flavor. + in: body + required: true + type: string +id_8: + description: | + The UUID of the floating IP address. + in: body + required: true + type: string +id_9: + description: | + The UUID for the IKE policy. + in: body + required: true + type: string +ike_version: + description: | + The IKE version. A valid value is ``v1`` or + ``v2``. Default is ``v1``. + in: body + required: false + type: string +ike_version_1: + description: | + The IKE version. A valid value is ``v1`` or + ``v2``. Default is ``v1``. + in: body + required: true + type: string +ikepolicies: + description: | + A list of IKE policy objects. + in: body + required: true + type: array +ikepolicy: + description: | + An ``ikepolicy`` object. + in: body + required: true + type: object +ikepolicy_id: + description: | + The UUID of the IKE policy. + in: body + required: true + type: string +initiator: + description: | + Indicates whether this VPN can only respond to + connections or both respond to and initiate connections. A valid + value is ``response- only`` or ``bi-directional``. Default is + ``bi-directional``. + in: body + required: false + type: string +initiator_1: + description: | + Indicates whether this VPN can only respond to + connections or both respond to and initiate connections. A valid + value is ``response- only`` or ``bi-directional``. Default is + ``bi-directional``. + in: body + required: true + type: string +insert_after: + description: | + The UUID of the firewall_rule. A new + firewall_rule will be inserted after this firewall_rule. + in: body + required: false + type: string +insert_before: + description: | + The UUID of the firewall_rule. A new + firewall_rule will be inserted before this firewall_rule. + in: body + required: false + type: string +interval: + description: | + The dead peer detection (DPD) interval, in + seconds. A valid value is a positive integer. Default is 30. + in: body + required: false + type: integer +interval_1: + description: | + The dead peer detection (DPD) interval, in + seconds. A valid value is a positive integer. Default is 30. + in: body + required: true + type: integer +ip_version: + description: | + The IP protocol version. Valid value is ``4`` or + ``6``. Default is ``4``. + in: body + required: false + type: integer +ip_version_1: + description: | + The IP address family of the list of prefixes + passed to the ``prefixes`` attribute. + in: body + required: true + type: integer +ip_version_2: + description: | + The IP protocol version. Value is ``4`` or ``6``. + in: body + required: true + type: integer +ip_version_3: + description: | + The IP version (4 or 6) of the subnet. + in: body + required: true + type: integer +ipsec_site_connection: + description: | + An ``ipsec_site_connection`` object. + in: body + required: true + type: object +ipsecpolicies: + description: | + A list of IPSec policy objects. + in: body + required: true + type: array +ipsecpolicy: + description: | + An ``ipsecpolicy`` object. + in: body + required: true + type: object +ipsecpolicy_id: + description: | + The UUID of the IPSec policy. + in: body + required: true + type: string +lb_algorithm: + description: | + The load-balancer algorithm, which is round-robin + (``ROUND_ROBIN``), least-connections (``LEAST_CONNECTIONS``), + source IP (``SOURCE_IP``), and so on, that is used to distribute + traffic to the pool members. This value, which must be supported, + is dependent on the load-balancer provider. The round-robin + algorithm must be supported. + in: body + required: true + type: string +lb_method: + description: | + The load-balancer algorithm, which is round-robin + (``ROUND_ROBIN``), least-connections (``LEAST_CONNECTIONS``), + source IP (``SOURCE_IP``), and so on, that is used to distribute + traffic to the pool members. This value, which must be supported, + is dependent on the load-balancer provider. The round-robin + algorithm must be supported. + in: body + required: true + type: string +lb_method_1: + description: | + The load-balancer algorithm, which is round-robin + (``ROUND_ROBIN``), least-connections (``LEAST_CONNECTIONS``), + source IP (``SOURCE_IP``), and so on, that is used to distribute + traffic to the pool members. This value, which must be supported, + is dependent on the load-balancer provider. The round-robin + algorithm must be supported. + in: body + required: false + type: string +lifetime: + description: | + The lifetime of the security association. The + lifetime consists of a unit and integer value. You can omit either + the unit or value portion of the lifetime. Default unit is seconds + and default value is 3600. + in: body + required: false + type: object +lifetime_1: + description: | + The lifetime of the security association. The + lifetime consists of a unit and integer value. You can omit either + the unit or value portion of the lifetime. + in: body + required: false + type: object +lifetime_2: + description: | + The lifetime of the security association. The + lifetime consists of a unit and integer value. You can omit either + the unit or value portion of the lifetime. + in: body + required: true + type: object +links: + description: | + The share links. + in: body + required: true + type: array +listener: + description: | + A ``listener`` object. + in: body + required: true + type: object +listener_id: + description: | + The UUID of the listener. + in: body + required: false + type: string +listeners: + description: | + The associated listeners, if any. + in: body + required: true + type: array +listeners_1: + description: | + A ``listeners`` object. + in: body + required: true + type: array +loadbalancer: + description: | + A ``loadbalancer`` object. + in: body + required: true + type: object +loadbalancer_id: + description: | + The UUID of the load balancer. + in: body + required: true + type: string +loadbalancers: + description: | + A list of load balancer objects. + in: body + required: true + type: array +local_ep_group_id: + description: | + The UUID for the endpoint group that contains + private subnets for the local side of the connection. Yo must + specify this parameter with the ``peer_ep_group_id`` parameter + unless in backward- compatible mode where ``peer_cidrs`` is + provided with a ``subnet_id`` for the VPN service. + in: body + required: false + type: string +local_ep_group_id_1: + description: | + The UUID for the endpoint group that contains + private subnets for the local side of the connection. This value + is present with the ``peer_ep_group_id`` parameter unless in + backward-compatible mode, where ``peer_cidrs`` is shown. + in: body + required: true + type: string +max_burst_kbps: + description: | + The burst over the maximum KBPS value. Default is + ``0`` + in: body + required: false + type: integer +max_burst_kbps_1: + description: | + The burst over the maximum KBPS value. + in: body + required: true + type: integer +max_kbps: + description: | + The maximum KBPS value. If you specify this + value, must be greater than 0. Default is ``null``. + in: body + required: false + type: integer +max_kbps_1: + description: | + The maximum KBPS value. + in: body + required: true + type: integer +max_prefixlen: + description: | + The maximum prefix size that can be allocated + from the subnet pool. For IPv4 subnet pools, default is ``32``. + For IPv6 subnet pools, default is ``128``. + in: body + required: false + type: integer +max_prefixlen_1: + description: | + The maximum prefix size that can be allocated + from the subnet pool. + in: body + required: true + type: integer +max_retries: + description: | + The number of allowed connection failures before + changing the status of the member to ``INACTIVE``. A valid value + is from 1 to 10. + in: body + required: true + type: integer +member: + description: | + A ``member`` object. + in: body + required: true + type: object +members: + description: | + The list of members that belong to the pool. + in: body + required: true + type: array +members_1: + description: | + A list of ``member`` objects. + in: body + required: true + type: array +members_2: + description: | + The associated members, if any. + in: body + required: true + type: array +metainfo: + description: | + JSON-formatted meta information. + in: body + required: false + type: string +metainfo_1: + description: | + JSON metainfo to associate with profile. + in: body + required: true + type: string +metering_label: + description: | + A ``metering_label`` object. + in: body + required: true + type: object +metering_label_id: + description: | + The metering label UUID to associate with this + metering rule. + in: body + required: true + type: string +metering_label_rule: + description: | + A ``metering_label_rule`` object. + in: body + required: true + type: object +metering_label_rules: + description: | + A list of ``metering_label_rule`` objects. + in: body + required: true + type: array +metering_labels: + description: | + A list of ``metering_label`` objects. + in: body + required: true + type: array +min_prefixlen: + description: | + The smallest prefix that can be allocated from a + subnet pool. For IPv4 subnet pools, default is ``8``. For IPv6 + subnet pools, default is ``64``. + in: body + required: false + type: integer +min_prefixlen_1: + description: | + The smallest prefix that can be allocated from a + subnet pool. + in: body + required: true + type: integer +mtu: + description: | + The maximum transmission unit (MTU) value to + address fragmentation. Minimum value is 68 for IPv4, and 1280 for + IPv6. + in: body + required: false + type: integer +mtu_1: + description: | + The MTU of a network resource. + in: body + required: true + type: integer +mtu_2: + description: | + The maximum transmission unit (MTU) to address + fragmentation. The minimum value for IPv4 is 68. The minimum value + for IPv6 is 1280. + in: body + required: true + type: integer +name: + description: | + Human-readable name for the firewall policy. Does + not have to be unique. + in: body + required: false + type: string +name_1: + description: | + Human readable name for the firewall rule. + Maximum length is 255 characters. Does not have to be unique. No + default. + in: body + required: false + type: string +name_10: + description: | + The network name. + in: body + required: false + type: string +name_11: + description: | + The QoS policy name. + in: body + required: false + type: string +name_12: + description: | + The pool name. Does not have to be unique. + in: body + required: false + type: string +name_13: + description: | + The router name. + in: body + required: false + type: string +name_14: + description: | + A symbolic name for the security group. Does not + have to be unique. + in: body + required: true + type: string +name_15: + description: | + A name for the subnet pool. + in: body + required: true + type: string +name_16: + description: | + Human-readable name for the VIP. Does not have to + be unique. + in: body + required: false + type: string +name_17: + description: | + Human-readable name for the VPN endpoint group. + Does not have to be unique. + in: body + required: false + type: string +name_18: + description: | + Human-readable name for the VPN service. Does not + have to be unique. + in: body + required: false + type: string +name_19: + description: | + Human-readable name for the firewall policy. Does + not have to be unique. + in: body + required: true + type: string +name_2: + description: | + The human-readable name for the firewall service. + Does not have to be unique. + in: body + required: false + type: string +name_20: + description: | + The name of the extension. For example, "Fox In + Socks." + in: body + required: true + type: string +name_21: + description: | + Human readable name for the firewall rule. + in: body + required: true + type: string +name_22: + description: | + Human-readable name for the firewall service. + Does not have to be unique. + in: body + required: true + type: string +name_23: + description: | + Human-readable name for the flavor. Can be "" and + non-unique. + in: body + required: true + type: string +name_24: + description: | + Human-readable name for the IKE policy. Does not + have to be unique. + in: body + required: true + type: string +name_25: + description: | + Human-readable name for the IPSec connection. + Does not have to be unique. + in: body + required: true + type: string +name_26: + description: | + The load balancer name. + in: body + required: true + type: string +name_27: + description: | + The network name. + in: body + required: true + type: string +name_28: + description: | + The name of the subnet. + in: body + required: true + type: string +name_29: + description: | + The name of the QoS policy. + in: body + required: true + type: string +name_3: + description: | + Human-readable name for the flavor. Can be "" and + non-unique. + in: body + required: false + type: string +name_30: + description: | + The pool name. Does not have to be unique. + in: body + required: true + type: string +name_31: + description: | + The router name. + in: body + required: true + type: string +name_32: + description: | + The security group name. + in: body + required: true + type: string +name_33: + description: | + The subnet pool name. + in: body + required: true + type: string +name_34: + description: | + Human-readable name for the VIP. Does not have to + be unique. + in: body + required: true + type: string +name_35: + description: | + Human-readable name for the VPN endpoint group. + Does not have to be unique. + in: body + required: true + type: string +name_36: + description: | + Human-readable name for the VPN service. Does not + have to be unique. + in: body + required: true + type: string +name_37: + description: | + New human-readable name for the flavor. Can be "" + and non-unique. + in: body + required: false + type: string +name_38: + description: | + Human-readable name for the pool. Does not have + to be unique. + in: body + required: false + type: string +name_4: + description: | + Human-readable name for the IKE policy. Does not + have to be unique. + in: body + required: false + type: string +name_5: + description: | + Human-readable name for the IPSec policy. Does + not have to be unique. + in: body + required: true + type: string +name_6: + description: | + Human-readable name for the IPSec connection. + Does not have to be unique. + in: body + required: false + type: string +name_7: + description: | + The listener name. + in: body + required: true + type: string +name_8: + description: | + The load balancer name. Does not have to be + unique. + in: body + required: false + type: string +name_9: + description: | + The name of the metering label. + in: body + required: true + type: string +network: + description: | + A ``network`` object. + in: body + required: true + type: object +network_1: + description: | + The number of networks allowed for each tenant. + in: body + required: true + type: integer +network_2: + description: | + The number of networks allowed for each tenant. + in: body + required: false + type: integer +network_ip_availabilities: + description: | + The ``network_ip_availabilities`` object. + in: body + required: true + type: array +networks: + description: | + A list of ``network`` objects. + in: body + required: true + type: array +nexthop: + description: | + The IP address of the next hop. + in: body + required: false + type: string +operating_status: + description: | + The operating status of the load balancer. This + value is ``ONLINE`` or ``OFFLINE``. + in: body + required: true + type: string +peer_address: + description: | + The peer gateway public IPv4 or IPv6 address or + FQDN. + in: body + required: true + type: string +peer_address_1: + description: | + The peer gateway public IPv4 address, IPv6 + address, or FQDN. + in: body + required: true + type: string +peer_cidrs: + description: | + (Deprecated) Unique list of valid peer private + CIDRs in the form < net_address > / < prefix > . + in: body + required: false + type: array +peer_cidrs_1: + description: | + (Deprecated) Unique list of valid peer private + CIDRs in the form < net_address > / < prefix > . + in: body + required: true + type: array +peer_ep_group_id: + description: | + The UUID for the endpoint group that contains + private CIDRs in the form < net_address > / < prefix > for the + peer side of the connection. You must specify this parameter with + the ``local_ep_group_id`` parameter unless in backward-compatible + mode where ``peer_cidrs`` is provided with a ``subnet_id`` for the + VPN service. + in: body + required: false + type: string +peer_ep_group_id_1: + description: | + The UUID for the endpoint group that contains + private CIDRs in the form < net_address > / < prefix > for the + peer side of the connection. This value is present with the + ``local_ep_group_id`` parameter unless in backward-compatible + mode, where ``peer_cidrs`` is shown. + in: body + required: true + type: string +peer_id: + description: | + The peer router identity for authentication. A + valid value is an IPv4 address, IPv6 address, e-mail address, key + ID, or FQDN. Typically, this value matches the ``peer_address`` + value. + in: body + required: true + type: string +peer_id_1: + description: | + The peer router identity for authentication. Can + be an IPv4 address, IPv6 address, e-mail address, key ID, or FQDN. + Typically, this value matches the ``peer_address`` value. + in: body + required: true + type: string +pfs: + description: | + Perfect forward secrecy (PFS). A valid value is + ``Group2``, ``Group5``, ``Group14``, and so on. Default is + ``Group5``. + in: body + required: false + type: string +pfs_1: + description: | + Perfect forward secrecy (PFS). A valid value is + ``Group2``, ``Group5``, ``Group14``, and so on. Default is + ``Group5``. + in: body + required: true + type: string +phase1_negotiation_mode: + description: | + The IKE mode. A valid value is ``main``, which is + the default. + in: body + required: false + type: string +phase1_negotiation_mode_1: + description: | + The IKE mode. A valid value is ``main``, which is + the default. + in: body + required: true + type: string +policies: + description: | + A list of QoS ``policy`` objects. + in: body + required: true + type: array +policy: + description: | + A QoS ``policy`` object. + in: body + required: true + type: object +policy_id_1: + description: | + The UUID of the QoS policy that is associated + with the rule. + in: body + required: true + type: string +pool: + description: | + A ``pool`` object. + in: body + required: true + type: object +pool_id_1: + description: | + The UUID of the pool to which the member belongs. + in: body + required: true + type: string +pool_id_2: + description: | + The UUID of the pool with which the VIP is + associated. + in: body + required: true + type: string +pool_id_3: + description: | + The UUID of the pool to which the member belongs. + in: body + required: false + type: string +pool_id_4: + description: | + The UUID of the pool with which the VIP is + associated. + in: body + required: false + type: string +pools: + description: | + List of pools that are associated with the health + monitor. + in: body + required: true + type: array +pools_1: + description: | + A list of ``pool`` objects. + in: body + required: true + type: array +pools_2: + description: | + The associated pools, if any. + in: body + required: true + type: array +port: + description: | + The number of ports allowed for each tenant. + in: body + required: true + type: integer +port_1: + description: | + The number of ports allowed for each tenant. + in: body + required: false + type: integer +port_id: + description: | + The UUID of the port. + in: body + required: true + type: string +port_id_1: + description: | + The UUID of the port. + in: body + required: false + type: string +port_id_2: + description: | + The UUID of the VIP port. + in: body + required: true + type: string +port_range_max: + description: | + The maximum port number in the range that is + matched by the security group rule. The ``port_range_min`` + attribute constrains the ``port_range_max`` attribute. If the + protocol is ICMP, this value must be an ICMP type. + in: body + required: false + type: integer +port_range_max_1: + description: | + The maximum port number in the range that is + matched by the security group rule. The ``port_range_min`` + attribute constrains the ``port_range_max`` attribute. If the + protocol is ICMP, this value must be an ICMP type. + in: body + required: true + type: integer +port_range_min: + description: | + The minimum port number in the range that is + matched by the security group rule. If the protocol is TCP or UDP, + this value must be less than or equal to the ``port_range_max`` + attribute value. If the protocol is ICMP, this value must be an + ICMP type. + in: body + required: false + type: integer +port_range_min_1: + description: | + The minimum port number in the range that is + matched by the security group rule. If the protocol is TCP or UDP, + this value must be less than or equal to the ``port_range_max`` + attribute value. If the protocol is ICMP, this value must be an + ICMP type. + in: body + required: true + type: integer +port_security_enabled: + description: | + The port security status. A valid value is + enabled (``true``) or disabled (``false``). + in: body + required: false + type: boolean +port_security_enabled_1: + description: | + The port security status. A valid value is + enabled (``true``) or disabled (``false``). + in: body + required: true + type: boolean +position: + description: | + Read-only attribute that the API assigns to this + rule when it associates it with a firewall policy. This value + indicates the position of this rule in that firewall policy. This + position number starts at 1. If the firewall rule is not + associated with any policy, the position is ``null``. + in: body + required: true + type: integer +prefixes: + description: | + A list of subnet prefixes to assign to the subnet + pool. The API merges adjacent prefixes and treats them as a single + prefix. Each subnet prefix must be unique among all subnet + prefixes in all subnet pools that are associated with the address + scope. + in: body + required: true + type: array +prefixes_1: + description: | + A list of subnet prefixes that are assigned to + the subnet pool. The API merges adjacent prefixes and treats them + as a single prefix. + in: body + required: true + type: array +prefixes_2: + description: | + A list of subnet prefixes to assign to the subnet + pool. The API merges adjacent prefixes and treats them as a single + prefix. To update the subnet prefixes, pass a list that contains + the existing set of prefixes and the new set of prefixes. You + cannot shrink the prefix list of a subnet pool. You can only add + prefixes to it to expand it. Ensure that each subnet prefix is + unique among all subnet prefixes in all subnet pools that are + associated with the address scope. + in: body + required: true + type: array +protocol: + description: | + The IP protocol. Valid value is ``icmp``, + ``tcp``, ``udp``, or ``null``. No default. + in: body + required: false + type: string +protocol_1: + description: | + The protocol to load balance. A valid value is + ``HTTP``, ``HTTPS``, ``TCP``, or ``TERMINATED_HTTPS``. + in: body + required: true + type: string +protocol_2: + description: | + The protocol of the pool, which is ``TCP``, + ``HTTP``, or ``HTTPS``. + in: body + required: true + type: string +protocol_3: + description: | + The protocol that is matched by the security + group rule. Valid values are null, tcp, udp, and icmp. + in: body + required: false + type: string +protocol_4: + description: | + The protocol that is matched by the security + group rule. Value is ``null``, ``icmp``, ``icmpv6``, ``tcp``, or + ``udp``. + in: body + required: true + type: string +protocol_5: + description: | + The protocol of the virtual IP (VIP) address. A + valid value is ``TCP``, ``HTTP``, or ``HTTPS``. + in: body + required: true + type: string +protocol_6: + description: | + The IP protocol. Value is ``icmp``, ``tcp``, + ``udp``, or ``null``. + in: body + required: true + type: string +protocol_port: + description: | + The TCP or UDP port on which to listen. + in: body + required: true + type: integer +protocol_port_1: + description: | + The port where the application is hosted. + in: body + required: true + type: integer +protocol_port_2: + description: | + The port on which to listen to client traffic + that is associated with the virtual IP (VIP) address. A valid + value is from 0 to 65535. + in: body + required: true + type: integer +provider: + description: | + The name of the provider. + in: body + required: false + type: string +provider:network_type: + description: | + The type of physical network that maps to this + network resource. For example, ``flat``, ``vlan``, ``vxlan``, or + ``gre``. + in: body + required: false + type: string +provider:physical_network: + description: | + The physical network where this network object is + implemented. The Networking API v2.0 does not provide a way to + list available physical networks. For example, the Open vSwitch + plug-in configuration file defines a symbolic name that maps to + specific bridges on each Compute host. + in: body + required: false + type: string +provider:segmentation_id: + description: | + An isolated segment on the physical network. The + ``network_type`` attribute defines the segmentation model. For + example, if the ``network_type`` value is vlan, this ID is a vlan + identifier. If the ``network_type`` value is gre, this ID is a gre + key. + in: body + required: false + type: string +provider_1: + description: | + The load-balancer provider. + in: body + required: true + type: string +provider_2: + description: | + The name of the provider. + in: body + required: true + type: string +provisioning_status: + description: | + The provisioning status of the load balancer. + This value is ``ACTIVE``, ``PENDING_CREATE`` or ``ERROR``. + in: body + required: true + type: string +psk: + description: | + The pre-shared key. A valid value is any string. + in: body + required: true + type: string +quota: + description: | + A ``quota`` object. + in: body + required: true + type: object +quotas: + description: | + A list of quota objects. + in: body + required: true + type: array +rbac_policy: + description: | + The number of role-based access control (RBAC) + policies for each tenant. + in: body + required: true + type: integer +rbac_policy_1: + description: | + The number of role-based access control (RBAC) + policies for each tenant. + in: body + required: false + type: integer +remote_group_id: + description: | + The remote group UUID to associate with this + security group rule. You can specify either the + ``remote_group_id`` or ``remote_ip_prefix`` attribute in the + request body. + in: body + required: false + type: string +remote_group_id_1: + description: | + The remote group UUID to associate with this + security group rule. You can specify either the + ``remote_group_id`` or ``remote_ip_prefix`` attribute in the + request body. + in: body + required: true + type: string +remote_ip_prefix: + description: | + The remote IP prefix to associate with this + metering rule packet. + in: body + required: true + type: string +remote_ip_prefix_1: + description: | + The remote IP prefix to associate with this + security group rule. You can specify either the + ``remote_group_id`` or ``remote_ip_prefix`` attribute in the + request body. This attribute matches the IP prefix as the source + IP address of the IP packet. + in: body + required: false + type: string +remote_ip_prefix_2: + description: | + The remote IP prefix to associate with this + security group rule. You can specify either the + ``remote_group_id`` or ``remote_ip_prefix`` attribute in the + request body. This attribute value matches the IP prefix as the + source IP address of the IP packet. + in: body + required: true + type: string +route_mode: + description: | + The route mode. A valid value is ``static``, + which is the default. + in: body + required: false + type: string +route_mode_1: + description: | + The route mode. A valid value is ``static``, + which is the default. + in: body + required: true + type: string +router: + description: | + A ``router`` object. + in: body + required: true + type: object +router:external: + description: | + Indicates whether this network is externally + accessible. + in: body + required: false + type: boolean +router:external_1: + description: | + Indicates whether this network is externally + accessible. + in: body + required: true + type: boolean +router_1: + description: | + The number of routers allowed for each tenant. + in: body + required: true + type: integer +router_2: + description: | + The number of routers allowed for each tenant. + in: body + required: false + type: integer +router_id_1: + description: | + The UUID of the router. + in: body + required: true + type: string +router_id_2: + description: | + The UUID of the router to which the VPN service + is inserted. + in: body + required: true + type: string +router_id_3: + description: | + The UUID of the router into which the VPN service + is inserted. + in: body + required: true + type: string +router_ids: + description: | + A list of UUIDs for routers that are associated + with the firewall. + in: body + required: false + type: array +router_ids_1: + description: | + A list of UUIDs for routers that are associated + with the firewall. + in: body + required: true + type: array +routers: + description: | + A list of ``router`` objects. + in: body + required: true + type: array +routes: + description: | + The extra routes configuration for L3 router. + in: body + required: true + type: array +routes_1: + description: | + A list of dictionary pairs in this format: + + :: + + [ + { + "nexthop":"IPADDRESS", + "destination":"CIDR" + } + ] + in: body + required: false + type: object +security_group: + description: | + A ``security_group`` object. + in: body + required: true + type: object +security_group_1: + description: | + The number of security groups allowed for each + tenant. + in: body + required: true + type: integer +security_group_2: + description: | + The number of security groups allowed for each + tenant. + in: body + required: false + type: integer +security_group_id: + description: | + The security group UUID to associate with this + security group rule. + in: body + required: true + type: string +security_group_id_1: + description: | + The UUID of the security group. + in: body + required: true + type: string +security_group_rule: + description: | + A ``security_group_rule`` object. + in: body + required: true + type: object +security_group_rule_1: + description: | + The number of security group rules allowed for + each tenant. + in: body + required: true + type: integer +security_group_rule_2: + description: | + The number of security group rules allowed for + each tenant. + in: body + required: false + type: integer +security_group_rules: + description: | + A list of ``security_group_rule`` objects. + in: body + required: true + type: array +security_groups: + description: | + A list of ``security_group`` objects. + in: body + required: true + type: array +segments: + description: | + A list of provider ``segment`` objects. + in: body + required: true + type: array +service_profile: + description: | + A ``service_profile`` object. + in: body + required: true + type: object +service_profiles: + description: | + Service profile UUIDs associated with this + flavor. + in: body + required: true + type: array +service_profiles_1: + description: | + A list of ``service_profile`` objects. + in: body + required: true + type: array +service_type: + description: | + Service type (ex: LOADBALANCERV2) for the flavor. + in: body + required: true + type: string +session_persistence: + description: | + The session persistence algorithm. This algorithm + is a dictionary with type and cookie_name keys. + in: body + required: false + type: object +session_persistence_1: + description: | + Session persistence parameters for the VIP. Omit + the ``session_persistence`` parameter to prevent session + persistence. When no session persistence is used, the + ``session_persistence`` parameter does not appear in the API + response. To clear session persistence for the VIP, set the + ``session_persistence`` parameter to ``null`` in a VIP update + request. + in: body + required: false + type: object +session_persistence_2: + description: | + Session persistence parameters for the VIP. Omit + the ``session_persistence`` parameter to prevent session + persistence. When no session persistence is used, the + ``session_persistence`` parameter does not appear in the API + response. To clear session persistence for the VIP, set the + ``session_persistence`` parameter to ``null`` in a VIP update + request. + in: body + required: true + type: object +session_persistence_3: + description: | + Session persistence parameters for the VIP. Omit + the ``session_persistence`` parameter to prevent session + persistence. When no session persistence is used, the + ``session_persistence`` parameter does not appear in the API + response. To clear session persistence for the VIP, set the + ``session_persistence`` parameter to ``null`` in a VIP update + request. + in: body + required: false + type: object +shared: + description: | + Set to ``true`` to make this firewall policy + visible to other tenants. Default is ``false``. + in: body + required: false + type: boolean +shared_1: + description: | + Set to ``true`` to share this firewall rule with + other tenants. Other tenants can use a shared rule in firewall + policies that this tenant does not own. Valid value is ``true`` or + ``false``. Default is ``false``. + in: body + required: false + type: boolean +shared_10: + description: | + Indicates whether this policy is shared across + all tenants. + in: body + required: true + type: boolean +shared_11: + description: | + Indicates whether this subnet pool is shared + across all tenants. + in: body + required: true + type: boolean +shared_2: + description: | + Indicates whether this metering label is shared + across all tenants. + in: body + required: false + type: boolean +shared_3: + description: | + Admin-only. Indicates whether this network is + shared across all tenants. + in: body + required: false + type: boolean +shared_4: + description: | + Set to ``true`` to share this policy with other + tenants. Default is ``false``. + in: body + required: false + type: boolean +shared_5: + description: | + Admin-only. Indicates whether this subnet pool is + shared across all tenants. + in: body + required: false + type: boolean +shared_6: + description: | + Indicates whether the firewall policy is shared + across all tenants. + in: body + required: true + type: boolean +shared_7: + description: | + Indicates whether this firewall rule is shared + with other tenants. Other tenants can use a shared rule in + firewall policies that this tenant does not own. + in: body + required: true + type: boolean +shared_8: + description: | + Indicates whether this metering label is shared + across all tenants. + in: body + required: true + type: boolean +shared_9: + description: | + Indicates whether this network is shared across + all tenants. + in: body + required: true + type: boolean +sni_container_refs: + description: | + A list of references to TLS secrets. + in: body + required: false + type: array +sni_container_refs_1: + description: | + A list of references to TLS secrets. + in: body + required: true + type: array +source_ip_address: + description: | + The source IPv4 or IPv6 address or CIDR. + in: body + required: true + type: string +source_port: + description: | + The source port or port range. A valid value is + a port number, as an integer, or a port range, in the format of a + ``:`` separated range. For a port range, include both ends of the + range. For example, ``80:90``. + in: body + required: false + type: string +source_port_1: + description: | + The source port or port range. + in: body + required: true + type: string +status: + description: | + The status of the firewall service. Value is + ``ACTIVE``, ``INACTIVE``, ``ERROR``, ``PENDING_CREATE``, + ``PENDING_UPDATE``, or ``PENDING_DELETE``. + in: body + required: true + type: string +status_1: + description: | + The status of the floating IP address. + in: body + required: true + type: string +status_2: + description: | + The operational status of the IPSec connection. + Value is ``ACTIVE``, ``DOWN``, ``BUILD``, ``ERROR``, + ``PENDING_CREATE``, ``PENDING_UPDATE``, or ``PENDING_DELETE``. + in: body + required: false + type: string +status_3: + description: | + The status of the member. Indicates whether the + member is operational. + in: body + required: true + type: string +status_4: + description: | + The network status. + in: body + required: true + type: string +status_5: + description: | + The status of the pool. Indicates whether the + pool is operational. + in: body + required: true + type: string +status_6: + description: | + The status of the VIP. Indicates whether the VIP + is operational. + in: body + required: true + type: string +status_7: + description: | + Indicates whether IPSec VPN service is currently + operational. Value is ``ACTIVE``, ``DOWN``, ``BUILD``, ``ERROR``, + ``PENDING_CREATE``, ``PENDING_UPDATE``, or ``PENDING_DELETE``. + in: body + required: true + type: string +status_8: + description: | + Indicates whether the IPSec connection is + currently operational. Value is ``ACTIVE``, ``DOWN``, ``BUILD``, + ``ERROR``, ``PENDING_CREATE``, ``PENDING_UPDATE``, or + ``PENDING_DELETE``. + in: body + required: true + type: string +status_description: + description: | + Human-readable description of the status. + in: body + required: true + type: string +subnet: + description: | + The number of subnets allowed for each tenant. + in: body + required: true + type: integer +subnet_1: + description: | + The number of subnets allowed for each tenant. + in: body + required: false + type: integer +subnet_id: + description: | + The UUID of the subnet. + in: body + required: true + type: string +subnet_id_1: + description: | + If you omit this parameter, LBaaS uses the + ``vip_subnet_id`` parameter value for the subnet UUID. + in: body + required: false + type: integer +subnet_id_2: + description: | + The UUID of the subnet on which to allocate the + virtual IP (VIP) address. + in: body + required: true + type: string +subnet_id_3: + description: | + (Deprecated) The subnet where the tenant wants + the VPN service. + in: body + required: false + type: string +subnet_id_4: + description: | + (Deprecated) The subnet where the tenant wants + the VPN service. + in: body + required: true + type: string +subnet_ip_availability: + description: | + This is dictionary showing subnet IP + availability. It contains information for every subnet associated + to each network as described in the parameters. + in: body + required: true + type: array +subnetpool: + description: | + A ``subnetpool`` object. + in: body + required: true + type: object +subnetpool_1: + description: | + The number of subnet pools allowed for each + tenant. + in: body + required: true + type: integer +subnetpool_2: + description: | + The number of subnet pools allowed for each + tenant. + in: body + required: false + type: integer +subnetpools: + description: | + A list of ``subnetpool`` objects. + in: body + required: true + type: array +subnets: + description: | + The associated subnets. + in: body + required: true + type: array +tags: + description: | + The list of tags on the resource. + in: body + required: true + type: array +tenant_id: + description: | + The UUID of the tenant. + in: body + required: true + type: string +tenant_id_1: + description: | + The owner of the firewall policy. Only + administrative users can specify a tenant UUID other than their + own. + in: body + required: false + type: string +tenant_id_10: + description: | + The UUID of the tenant who owns the load + balancer. Only administrative users can specify a tenant UUID + other than their own. + in: body + required: true + type: string +tenant_id_11: + description: | + The UUID of the tenant who owns the member. Only + administrative users can specify a tenant UUID other than their + own. + in: body + required: true + type: string +tenant_id_12: + description: | + The UUID of the tenant who owns the member. Only + administrative users can specify a tenant UUID other than their + own. + in: body + required: false + type: string +tenant_id_13: + description: | + The tenant UUID for the metering label. + in: body + required: true + type: string +tenant_id_14: + description: | + The UUID of the tenant who owns the network. Only + administrative users can specify a tenant UUID other than their + own. You cannot change this value through authorization policies. + in: body + required: false + type: string +tenant_id_15: + description: | + The tenant UUID of QoS policy owner. Only + administrative users can specify a tenant UUID other than their + own. You cannot change this value through authorization policies. + in: body + required: false + type: string +tenant_id_16: + description: | + The UUID of the tenant who owns the pool. Only + administrative users can specify a tenant UUID other than their + own. + in: body + required: false + type: string +tenant_id_17: + description: | + The UUID of the tenant who owns the security + group rule. Only administrative users can specify a tenant UUID + other than their own. + in: body + required: true + type: string +tenant_id_18: + description: | + The UUID of the tenant who owns the security + group. Only administrative users can specify a tenant UUID other + than their own. + in: body + required: false + type: string +tenant_id_19: + description: | + The UUID of the tenant who owns the subnet pool. + Only administrative users can specify a tenant UUID other than + their own. You cannot change this value through authorization + policies. + in: body + required: false + type: string +tenant_id_2: + description: | + The UUID of the tenant who owns the firewall + rule. Only administrative users can specify a tenant UUID other + than their own. + in: body + required: true + type: string +tenant_id_20: + description: | + The UUID of the tenant who owns the VIP. Only + administrative users can specify a tenant UUID other than their + own. + in: body + required: false + type: string +tenant_id_21: + description: | + Owner of the VPN endpoint group. Only + administrative users can specify a tenant UUID other than their + own. + in: body + required: true + type: string +tenant_id_22: + description: | + Owner of the VPN service. Only administrative + users can specify a tenant UUID other than their own. + in: body + required: false + type: string +tenant_id_23: + description: | + The UUID of the tenant who owns the firewall + policy. + in: body + required: true + type: string +tenant_id_24: + description: | + The UUID of the tenant who owns the firewall + rule. + in: body + required: true + type: string +tenant_id_25: + description: | + The UUID of the tenant who owns the health + monitor. Only administrative users can specify a tenant UUID other + than their own. + in: body + required: true + type: string +tenant_id_26: + description: | + The owner of the VPN service. Only administrative + users can specify a tenant UUID other than their own. + in: body + required: true + type: string +tenant_id_27: + description: | + Owner of the VPN service. Only administrative + users can specify a tenant UUID other than their own. + in: body + required: true + type: string +tenant_id_28: + description: | + The UUID of the tenant who owns the VIP. Only + administrative users can specify a tenant UUID other than their + own. + in: body + required: true + type: string +tenant_id_29: + description: | + The UUID of the tenant who owns the network. + in: body + required: true + type: string +tenant_id_3: + description: | + The owner of the firewall service. Only + administrative users can specify a tenant UUID other than their + own. + in: body + required: true + type: string +tenant_id_30: + description: | + The UUID of tenant or project. + in: body + required: true + type: string +tenant_id_31: + description: | + The UUID of the tenant who owns the QoS policy. + in: body + required: true + type: string +tenant_id_32: + description: | + The UUID of the tenant who owns the pool. Only + administrative users can specify a tenant UUID other than their + own. + in: body + required: true + type: string +tenant_id_34: + description: | + The UUID of the tenant who owns the subnet pool. + in: body + required: true + type: string +tenant_id_4: + description: | + The UUID of the tenant. Only administrative users + can specify a tenant UUID other than their own. + in: body + required: false + type: string +tenant_id_5: + description: | + The UUID of the tenant who owns the health + monitor. Only administrative users can specify a tenant UUID other + than their own. + in: body + required: false + type: string +tenant_id_6: + description: | + The owner of the IKE policy. Only administrative + users can specify a tenant UUID other than their own. + in: body + required: true + type: string +tenant_id_7: + description: | + Owner of the IPSec policy. Only administrative + users can specify a tenant UUID other than their own. + in: body + required: true + type: string +tenant_id_8: + description: | + Owner of the IPSec connection. Only + administrative users can specify a tenant UUID other than their + own. + in: body + required: true + type: string +tenant_id_9: + description: | + The UUID of the tenant who owns the listener. + Only administrative users can specify a tenant UUID other than + their own. + in: body + required: true + type: string +timeout: + description: | + The maximum time, in seconds, that a monitor + waits to connect before it times out. This value must be less than + the delay value. + in: body + required: true + type: integer +timeout_1: + description: | + The dead peer detection (DPD) timeout in seconds. + A valid value is a positive integer that is greater than the DPD + ``interval`` value. Default is 120. + in: body + required: false + type: integer +timeout_2: + description: | + The dead peer detection (DPD) timeout, in + seconds. A valid value is a positive integer that is greater than + the DPD ``interval`` value. Default is 120. + in: body + required: true + type: integer +timeout_3: + description: | + The maximum time, in seconds, that a monitor + waits to connect before it times out. This value must be less than + the delay value. + in: body + required: false + type: integer +total_ips: + description: | + The total number of IP addresses in a network. + in: body + required: true + type: integer +transform_protocol: + description: | + The transform protocol. A valid value is ``ESP``, + ``AH``, or ``AH- ESP``. Default is ``ESP``. + in: body + required: false + type: string +transform_protocol_1: + description: | + The transform protocol. A valid value is ``ESP``, + ``AH``, or ``AH- ESP``. Default is ``ESP``. + in: body + required: true + type: string +type: + description: | + The type of probe sent by the load balancer to + verify the member state. A valid value is ``PING``, ``TCP``, + ``HTTP``, or ``HTTPS``. + in: body + required: true + type: string +type_1: + description: | + The type of QoS policy. + in: body + required: false + type: string +type_2: + description: | + The type of the endpoints in the group. A valid + value is ``subnet``, ``cidr``, ``network``, ``router``, or + ``vlan``. + in: body + required: true + type: string +type_3: + description: | + The type of probe sent by the load balancer to + verify the member state, which is ``PING``, ``TCP``, ``HTTP``, or + ``HTTPS``. + in: body + required: true + type: string +units: + description: | + The units for the lifetime of the security + association. The lifetime consists of a unit and integer value. + You can omit either the unit or value portion of the lifetime. + Default unit is seconds and default value is 3600. + in: body + required: false + type: string +units_1: + description: | + The units for the lifetime of the security + association. The lifetime consists of a unit and integer value. + You can omit either the unit or value portion of the lifetime. + Default unit is seconds and default value is 3600. + in: body + required: true + type: string +updated: + description: | + The date and time stamp when the extension was + last updated. + in: body + required: true + type: string +updated_at: + description: | + Time at which subnetpool has been updated. + in: body + required: true + type: string +url_path: + description: | + The HTTP path of the request sent by the monitor + to test the health of a member. A valid value is a string that + begins with a forward slash (/). + in: body + required: false + type: string +url_path_1: + description: | + The HTTP path of the request sent by the monitor + to test the health of a member. A string value that must begin + with the forward slash (/). + in: body + required: false + type: string +url_path_2: + description: | + The HTTP path of the request sent by the monitor + to test the health of a member. Must be a string that begins with + a forward slash (/). + in: body + required: true + type: string +used_ips: + description: | + The number of used IP addresses of all subnets in + a network. + in: body + required: true + type: integer +value: + description: | + The lifetime value, as a positive integer. The + lifetime consists of a unit and integer value. You can omit either + the unit or value portion of the lifetime. Default unit is seconds + and default value is 3600. + in: body + required: false + type: integer +value_1: + description: | + The lifetime value, as a positive integer. The + lifetime consists of a unit and integer value. You can omit either + the unit or value portion of the lifetime. Default unit is seconds + and default value is 3600. + in: body + required: true + type: integer +vip: + description: | + A ``vip`` object. + in: body + required: true + type: object +vip_address: + description: | + The IP address of the VIP. + format: ipv4 + in: body + required: false + type: string +vip_address_1: + description: | + The IP address of the VIP. + format: ipv4 + in: body + required: true + type: string +vip_id: + description: | + The UUID of the virtual IP (VIP) address. + in: body + required: true + type: string +vip_subnet_id: + description: | + The UUID of the subnet on which to allocate the + virtual IP (VIP) address. + in: body + required: true + type: string +vips: + description: | + A list of ``vip`` objects. + in: body + required: true + type: array +vlan_transparent: + description: | + The state of the network, which is VLAN + transparent (``true``) or not VLAN transparent (``false``). + in: body + required: true + type: boolean +vpnservice: + description: | + A ``vpnservice`` object. + in: body + required: true + type: object +vpnservice_id: + description: | + The UUID of the VPN service. + in: body + required: true + type: string +vpnservices: + description: | + A list of VPN service objects. + in: body + required: true + type: array +weight: + description: | + A positive integer value that indicates the + relative portion of traffic that this member should receive from + the pool. For example, a member with a weight of 10 receives five + times as much traffic as a member with a weight of 2. + in: body + required: false + type: integer +weight_1: + description: | + The weight of a member determines the portion of + requests or connections it services compared to the other members + of the pool. A value of 0 means the member does not participate in + load- balancing but still accepts persistent connections. A valid + value is from 0 to 256. + in: body + required: false + type: integer +weight_2: + description: | + The weight of a member determines the portion of + requests or connections it services compared to the other members + of the pool. A value of 0 means the member does not participate in + load- balancing but still accepts persistent connections. A valid + value is from 0 to 256. + in: body + required: true + type: integer + diff --git a/api-ref/source/networking/v2-ext/port-binding.inc b/api-ref/source/networking/v2-ext/port-binding.inc new file mode 100644 index 000000000..bd50313a9 --- /dev/null +++ b/api-ref/source/networking/v2-ext/port-binding.inc @@ -0,0 +1,167 @@ +.. -*- rst -*- + +========================================= +Ports binding extended attributes (ports) +========================================= + +Lists, creates, shows information for, updates, and deletes ports. + + +Show port details +================= + +.. rest_method:: GET /v2.0/ports/{port_id} + +Shows details for a port. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - port_id: port_id + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/ports/port-bind-show-response.json + :language: javascript + + + + +Update port +=========== + +.. rest_method:: PUT /v2.0/ports/{port_id} + +Updates a port. + + +Normal response codes: 200 +Error response codes:404,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - port_id: port_id + +Request Example +--------------- + +.. literalinclude:: ../samples/ports/port-create-request.json + :language: javascript + + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/ports/port-bind-create-update-response.json + :language: javascript + + + + + + + +Delete port +=========== + +.. rest_method:: DELETE /v2.0/ports/{port_id} + +Deletes a port. + +Error response codes:409,404,204,401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - port_id: port_id + + + + + + + + + +List ports +========== + +.. rest_method:: GET /v2.0/ports + +Lists ports to which the tenant has access. + + +Normal response codes: 200 +Error response codes:401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/ports/ports-list-response.json + :language: javascript + + + + + +Create port +=========== + +.. rest_method:: POST /v2.0/ports + +Creates a port on a network. + +Error response codes:201,403,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + +Request Example +--------------- + +.. literalinclude:: ../samples/ports/port-create-request.json + :language: javascript + + + + + + + + + diff --git a/api-ref/source/networking/v2-ext/qos-ext.inc b/api-ref/source/networking/v2-ext/qos-ext.inc new file mode 100644 index 000000000..4489c6480 --- /dev/null +++ b/api-ref/source/networking/v2-ext/qos-ext.inc @@ -0,0 +1,724 @@ +.. -*- rst -*- + +================== +QoS policies (qos) +================== + +Lists, creates, shows information for, and updates QoS policies. + + +Show bandwidth limit rule details +================================= + +.. rest_method:: GET /v2.0/qos/policies/{policy_id}/bandwidth_limit_rules/{rule_id} + +Shows details for a bandwidth limit rule for a QoS policy. + + +Normal response codes: 200 +Error response codes:500,401,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - rule_id: rule_id + - policy_id: policy_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - bandwidth_limit_rule: bandwidth_limit_rule + - max_kbps: max_kbps + - id: id + - max_burst_kbps: max_burst_kbps + - policy_id: policy_id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/qos/bandwidth_limit_rule-show-response.json + :language: javascript + + + + + + + +Update bandwidth limit rule +=========================== + +.. rest_method:: PUT /v2.0/qos/policies/{policy_id}/bandwidth_limit_rules/{rule_id} + +Updates a bandwidth limit rule for a QoS policy. + +If the request is valid, the service returns the ``Accepted (202)`` +response code. + + +Normal response codes: 200 +Error response codes:400,401,413,503,500, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - bandwidth_limit_rule: bandwidth_limit_rule + - max_kbps: max_kbps + - max_burst_kbps: max_burst_kbps + - policy_id: policy_id + - rule_id: rule_id + - policy_id: policy_id + +Request Example +--------------- + +.. literalinclude:: ../samples/qos/bandwidth_limit_rule-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - bandwidth_limit_rule: bandwidth_limit_rule + - max_kbps: max_kbps + - id: id + - max_burst_kbps: max_burst_kbps + - policy_id: policy_id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/qos/bandwidth_limit_rule-update-response.json + :language: javascript + + + + + + + + + +Delete bandwidth limit rule +=========================== + +.. rest_method:: DELETE /v2.0/qos/policies/{policy_id}/bandwidth_limit_rules/{rule_id} + +Deletes a bandwidth limit rule for a QoS policy. + +Error response codes:204,400,401,413,503,500, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - rule_id: rule_id + - policy_id: policy_id + + + + + + + + + + + +List QoS policies +================= + +.. rest_method:: GET /v2.0/qos/policies + +Lists all QoS policies that are associated with your tenant account. + +The list might be empty. + + +Normal response codes: 200 +Error response codes:500,401,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - max_kbps: max_kbps + - bandwidth_limit_rules: bandwidth_limit_rules + - description: description + - policy_id: policy_id + - tenant_id: tenant_id + - dscp_marking_rules: dscp_marking_rules + - policies: policies + - shared: shared + - dscp_mark: dscp_mark + - id: id + - max_burst_kbps: max_burst_kbps + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/qos/policies-list-response.json + :language: javascript + + + + + + + +Create QoS policy +================= + +.. rest_method:: POST /v2.0/qos/policies + +Creates a QoS policy. + +Creates a QoS policy by using the configuration that you define in +the request object. A response object is returned. The object +contains a unique ID. + +If the caller is not an administrative user, this call returns the +HTTP ``Forbidden (403)`` response code. + +Users with an administrative role can create policies on behalf of +other tenants by specifying a tenant UUID that is different than +their own. + +Error response codes:201,404,409,401,413,503,500, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - description: description + - tenant_id: tenant_id + - policy: policy + - shared: shared + - type: type + - name: name + +Request Example +--------------- + +.. literalinclude:: ../samples/qos/policy-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - tenant_id: tenant_id + - policy: policy + - shared: shared + - id: id + - name: name + + + + + + + + + + + +Show DSCP marking rule details +============================== + +.. rest_method:: GET /v2.0/qos/policies/{policy_id}/dscp_marking_rules/{dscp_rule_id} + +Shows details for a DSCP marking rule for a QoS policy. + + +Normal response codes: 200 +Error response codes:500,401,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - policy_id: policy_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - dscp_marking_rule: dscp_marking_rule + - dscp_mark: dscp_mark + - id: id + - policy_id: policy_id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/qos/dscp_marking_rule-show-response.json + :language: javascript + + + + + + + +Update DSCP marking rule +======================== + +.. rest_method:: PUT /v2.0/qos/policies/{policy_id}/dscp_marking_rules/{dscp_rule_id} + +Updates a DSCP marking rule for a QoS policy. + +If the request is valid, the service returns the ``Accepted (202)`` +response code. + + +Normal response codes: 200 +Error response codes:400,401,413,503,500, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - dscp_marking_rule: dscp_marking_rule + - dscp_mark: dscp_mark + - policy_id: policy_id + - policy_id: policy_id + +Request Example +--------------- + +.. literalinclude:: ../samples/qos/dscp_marking_rule-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - dscp_marking_rule: dscp_marking_rule + - dscp_mark: dscp_mark + - id: id + - policy_id: policy_id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/qos/dscp_marking_rule-update-response.json + :language: javascript + + + + + + + + + +Delete DSCP marking rule +======================== + +.. rest_method:: DELETE /v2.0/qos/policies/{policy_id}/dscp_marking_rules/{dscp_rule_id} + +Deletes a DSCP marking rule for a QoS policy. + +Error response codes:204,400,401,413,503,500, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - policy_id: policy_id + + + + + + + + + + + +List DSCP marking rules for QoS policy +====================================== + +.. rest_method:: GET /v2.0/qos/policies/{policy_id}/dscp_marking_rules + +Lists all DSCP marking rules for a QoS policy. + +The list may be empty. + + +Normal response codes: 200 +Error response codes:500,401,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - policy_id: policy_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - dscp_marking_rules: dscp_marking_rules + - dscp_mark: dscp_mark + - id: id + - policy_id: policy_id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/qos/dscp_marking_rules-list-response.json + :language: javascript + + + + + + + +Create DSCP marking rule +======================== + +.. rest_method:: POST /v2.0/qos/policies/{policy_id}/dscp_marking_rules + +Creates a DSCP marking rule for a QoS policy. + +Error response codes:201,404,409,401,413,503,500, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - dscp_marking_rule: dscp_marking_rule + - dscp_mark: dscp_mark + - policy_id: policy_id + - policy_id: policy_id + +Request Example +--------------- + +.. literalinclude:: ../samples/qos/dscp_marking_rule-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - dscp_marking_rule: dscp_marking_rule + - dscp_mark: dscp_mark + - id: id + - policy_id: policy_id + + + + + + + + + + + +Show QoS policy details +======================= + +.. rest_method:: GET /v2.0/qos/policies/{policy_id} + +Shows details for a QoS policy. + + +Normal response codes: 200 +Error response codes:500,401,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - policy_id: policy_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - max_kbps: max_kbps + - bandwidth_limit_rules: bandwidth_limit_rules + - description: description + - policy_id: policy_id + - tenant_id: tenant_id + - dscp_marking_rules: dscp_marking_rules + - policy: policy + - shared: shared + - dscp_mark: dscp_mark + - id: id + - max_burst_kbps: max_burst_kbps + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/qos/policy-show-response.json + :language: javascript + + + + + + + +Update QoS policy +================= + +.. rest_method:: PUT /v2.0/qos/policies/{policy_id} + +Updates a QoS policy. + +If the request is valid, the service returns the ``Accepted (202)`` +response code. + + +Normal response codes: 200 +Error response codes:400,401,413,503,500, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - description: description + - tenant_id: tenant_id + - policy: policy + - shared: shared + - type: type + - name: name + - policy_id: policy_id + +Request Example +--------------- + +.. literalinclude:: ../samples/qos/policy-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - tenant_id: tenant_id + - policy: policy + - shared: shared + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/qos/policy-update-response.json + :language: javascript + + + + + + + + + +Delete QoS policy +================= + +.. rest_method:: DELETE /v2.0/qos/policies/{policy_id} + +Deletes a QoS policy. + +Error response codes:204,400,401,413,503,500, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - policy_id: policy_id + + + + + + + + + + + +List bandwidth limit rules for QoS policy +========================================= + +.. rest_method:: GET /v2.0/qos/policies/{policy_id}/bandwidth_limit_rules + +Lists all bandwidth limit rules for a QoS policy. + +The list might be empty. + + +Normal response codes: 200 +Error response codes:500,401,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - policy_id: policy_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - max_kbps: max_kbps + - bandwidth_limit_rules: bandwidth_limit_rules + - id: id + - max_burst_kbps: max_burst_kbps + - policy_id: policy_id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/qos/bandwidth_limit_rules-list-response.json + :language: javascript + + + + + + + +Create bandwidth limit rule +=========================== + +.. rest_method:: POST /v2.0/qos/policies/{policy_id}/bandwidth_limit_rules + +Creates a bandwidth limit rule for a QoS policy. + +Error response codes:201,404,409,401,413,503,500, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - bandwidth_limit_rule: bandwidth_limit_rule + - max_kbps: max_kbps + - max_burst_kbps: max_burst_kbps + - policy_id: policy_id + - policy_id: policy_id + +Request Example +--------------- + +.. literalinclude:: ../samples/qos/bandwidth_limit_rule-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - bandwidth_limit_rule: bandwidth_limit_rule + - max_kbps: max_kbps + - id: id + - max_burst_kbps: max_burst_kbps + - policy_id: policy_id + + + + + + + + + + diff --git a/api-ref/source/networking/v2-ext/quotas.inc b/api-ref/source/networking/v2-ext/quotas.inc new file mode 100644 index 000000000..93c24b37b --- /dev/null +++ b/api-ref/source/networking/v2-ext/quotas.inc @@ -0,0 +1,201 @@ +.. -*- rst -*- + +========================= +Quotas extension (quotas) +========================= + +Lists quotas for tenants who have non-default quota values, and +lists, updates, and resets quotas for a tenant. + +A quota value of ``-1`` means that quota has no limit. + + +List quotas for tenants with non-default quota values +===================================================== + +.. rest_method:: GET /v2.0/quotas + +Lists quotas for tenants who have non-default quota values. + + +Normal response codes: 200 +Error response codes:403,401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - subnet: subnet + - network: network + - floatingip: floatingip + - subnetpool: subnetpool + - quotas: quotas + - security_group_rule: security_group_rule + - security_group: security_group + - router: router + - rbac_policy: rbac_policy + - port: port + + + +Response Example +---------------- + +.. literalinclude:: ../samples/quotas/quotas-list-response.json + :language: javascript + + + + + + +List quotas for a tenant +======================== + +.. rest_method:: GET /v2.0/quotas/{tenant_id} + +Lists quotas for a tenant. + + +Normal response codes: 200 +Error response codes:404,403,401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - subnet: subnet + - network: network + - floatingip: floatingip + - subnetpool: subnetpool + - quota: quota + - security_group_rule: security_group_rule + - security_group: security_group + - router: router + - rbac_policy: rbac_policy + - port: port + + + +Response Example +---------------- + +.. literalinclude:: ../samples/quotas/quotas-list-for-tenant-response.json + :language: javascript + + + + + + + +Update quota for a tenant +========================= + +.. rest_method:: PUT /v2.0/quotas/{tenant_id} + +Updates quotas for a tenant. Use when non-default quotas are desired. + + +Normal response codes: 200 +Error response codes:404,403,401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - subnet: subnet + - network: network + - floatingip: floatingip + - subnetpool: subnetpool + - quota: quota + - security_group_rule: security_group_rule + - security_group: security_group + - router: router + - rbac_policy: rbac_policy + - port: port + - tenant_id: tenant_id + +Request Example +--------------- + +.. literalinclude:: ../samples/quotas/quotas-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - subnet: subnet + - network: network + - floatingip: floatingip + - subnetpool: subnetpool + - quota: quota + - security_group_rule: security_group_rule + - security_group: security_group + - router: router + - rbac_policy: rbac_policy + - port: port + + + +Response Example +---------------- + +.. literalinclude:: ../samples/quotas/quotas-update-response.json + :language: javascript + + + + + + + +Reset quota for a tenant +======================== + +.. rest_method:: DELETE /v2.0/quotas/{tenant_id} + +Resets quotas to default values for a tenant. + +Error response codes:404,403,204,401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + + + + + + + + diff --git a/api-ref/source/networking/v2-ext/security-groups.inc b/api-ref/source/networking/v2-ext/security-groups.inc new file mode 100644 index 000000000..4d075c17d --- /dev/null +++ b/api-ref/source/networking/v2-ext/security-groups.inc @@ -0,0 +1,268 @@ +.. -*- rst -*- + +================================= +Security groups (security-groups) +================================= + +Lists, creates, shows information for, updates, and deletes +security groups. + + +Show security group +=================== + +.. rest_method:: GET /v2.0/security-groups/{security_group_id} + +Shows details for a security group. + +The response contains the description, name, UUID, and security +group rules that are associated with the security group and tenant. + + +Normal response codes: 200 +Error response codes:404,401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - security_group_id: security_group_id + - verbose: verbose + - fields: fields + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - remote_group_id: remote_group_id + - direction: direction + - protocol: protocol + - description: description + - ethertype: ethertype + - port_range_max: port_range_max + - security_group_rules: security_group_rules + - security_group_id: security_group_id + - tenant_id: tenant_id + - port_range_min: port_range_min + - remote_ip_prefix: remote_ip_prefix + - security_group: security_group + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/security-groups/security-group-show-response.json + :language: javascript + + + + + + +Update security group +===================== + +.. rest_method:: PUT /v2.0/security-groups/{security_group_id} + +Updates a security group. + + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - description: description + - name: name + - security_group_id: security_group_id + +Request Example +--------------- + +.. literalinclude:: ../samples/security-groups/security-group-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - security_group: security_group + - tenant_id: tenant_id + - description: description + - name: name + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/security-groups/security-group-update-response.json + :language: javascript + + + + + + + + + + + +Delete security group +===================== + +.. rest_method:: DELETE /v2.0/security-groups/{security_group_id} + +Deletes an OpenStack Networking security group. + +This operation deletes an OpenStack Networking security group and +its associated security group rules, provided that a port is not +associated with the security group. + +This operation does not require a request body. This operation does +not return a response body. + +Error response codes:409,404,204,401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - security_group_id: security_group_id + + + + + + + + + +List security groups +==================== + +.. rest_method:: GET /v2.0/security-groups + +Lists OpenStack Networking security groups to which the tenant has access. + +The list shows the UUID for and the rules that are associated with +each security group. + + +Normal response codes: 200 +Error response codes:401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - remote_group_id: remote_group_id + - direction: direction + - protocol: protocol + - description: description + - ethertype: ethertype + - port_range_max: port_range_max + - security_group_rules: security_group_rules + - security_group_id: security_group_id + - tenant_id: tenant_id + - port_range_min: port_range_min + - remote_ip_prefix: remote_ip_prefix + - id: id + - security_groups: security_groups + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/security-groups/security-groups-list-response.json + :language: javascript + + + + + +Create security group +===================== + +.. rest_method:: POST /v2.0/security-groups + +Creates an OpenStack Networking security group. + +This operation creates a security group with default security group +rules for the IPv4 and IPv6 ether types. + +Error response codes:201,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - security_group: security_group + - tenant_id: tenant_id + - description: description + - name: name + +Request Example +--------------- + +.. literalinclude:: ../samples/security-groups/security-group-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - remote_group_id: remote_group_id + - direction: direction + - protocol: protocol + - description: description + - ethertype: ethertype + - port_range_max: port_range_max + - security_group_rules: security_group_rules + - security_group_id: security_group_id + - tenant_id: tenant_id + - port_range_min: port_range_min + - remote_ip_prefix: remote_ip_prefix + - security_group: security_group + - id: id + - name: name + + + + + + diff --git a/api-ref/source/networking/v2-ext/security_group_rules.inc b/api-ref/source/networking/v2-ext/security_group_rules.inc new file mode 100644 index 000000000..7cc7c6820 --- /dev/null +++ b/api-ref/source/networking/v2-ext/security_group_rules.inc @@ -0,0 +1,192 @@ +.. -*- rst -*- + +=========================================== +Security group rules (security-group-rules) +=========================================== + +Lists, creates, shows information for, and deletes security group +rules. + + +Show security group rule +======================== + +.. rest_method:: GET /v2.0/security-group-rules/{security-group-rules-id} + +Shows detailed information for a security group rule. + +The response body contains the following information about the +security group rule: + + +Normal response codes: 200 +Error response codes:404,401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - remote_group_id: remote_group_id + - direction: direction + - protocol: protocol + - ethertype: ethertype + - port_range_max: port_range_max + - security_group_id: security_group_id + - security_group_rule: security_group_rule + - tenant_id: tenant_id + - port_range_min: port_range_min + - remote_ip_prefix: remote_ip_prefix + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/security-groups/security-group-rule-show-response.json + :language: javascript + + + + + + +Delete security group rule +========================== + +.. rest_method:: DELETE /v2.0/security-group-rules/{security-group-rules-id} + +Deletes a rule from an OpenStack Networking security group. + +Error response codes:404,204,401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + + + + + +List security group rules +========================= + +.. rest_method:: GET /v2.0/security-group-rules + +Lists a summary of all OpenStack Networking security group rules that the tenant can access. + +The list provides the UUID for each security group rule. + + +Normal response codes: 200 +Error response codes:401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - remote_group_id: remote_group_id + - direction: direction + - protocol: protocol + - ethertype: ethertype + - port_range_max: port_range_max + - security_group_rules: security_group_rules + - security_group_id: security_group_id + - tenant_id: tenant_id + - port_range_min: port_range_min + - remote_ip_prefix: remote_ip_prefix + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/security-groups/security-group-rules-list-response.json + :language: javascript + + + + + +Create security group rule +========================== + +.. rest_method:: POST /v2.0/security-group-rules + +Creates an OpenStack Networking security group rule. + +Error response codes:201,404,409,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - remote_group_id: remote_group_id + - direction: direction + - protocol: protocol + - ethertype: ethertype + - port_range_max: port_range_max + - security_group_id: security_group_id + - security_group_rule: security_group_rule + - port_range_min: port_range_min + - remote_ip_prefix: remote_ip_prefix + +Request Example +--------------- + +.. literalinclude:: ../samples/security-groups/security-group-rule-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - remote_group_id: remote_group_id + - direction: direction + - protocol: protocol + - ethertype: ethertype + - port_range_max: port_range_max + - security_group_id: security_group_id + - security_group_rule: security_group_rule + - tenant_id: tenant_id + - port_range_min: port_range_min + - remote_ip_prefix: remote_ip_prefix + - id: id + + + + + + + + diff --git a/api-ref/source/networking/v2-ext/subnetpools-ext.inc b/api-ref/source/networking/v2-ext/subnetpools-ext.inc new file mode 100644 index 000000000..7b64cd666 --- /dev/null +++ b/api-ref/source/networking/v2-ext/subnetpools-ext.inc @@ -0,0 +1,279 @@ +.. -*- rst -*- + +==================================== +Subnet pools extension (subnetpools) +==================================== + +Lists, creates, shows details for, updates, and deletes subnet +pools. + + +Show subnet pool +================ + +.. rest_method:: GET /v2.0/subnetpools/{subnetpool_id} + +Shows information for a subnet pool. + +Use the ``fields`` query parameter to filter the results. + + +Normal response codes: 200 +Error response codes:404,401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - subnetpool_id: subnetpool_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - name: name + - default_quota: default_quota + - tenant_id: tenant_id + - created_at: created_at + - subnetpool: subnetpool + - updated_at: updated_at + - prefixes: prefixes + - min_prefixlen: min_prefixlen + - address_scope_id: address_scope_id + - ip_version: ip_version + - shared: shared + - default_prefixlen: default_prefixlen + - id: id + - max_prefixlen: max_prefixlen + + + +Response Example +---------------- + +.. literalinclude:: ../samples/subnets/subnetpool-show-response.json + :language: javascript + + + + + + +Update subnet pool +================== + +.. rest_method:: PUT /v2.0/subnetpools/{subnetpool_id} + +Updates a subnet pool. + + +Normal response codes: 200 +Error response codes:404,403,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - name: name + - default_quota: default_quota + - tenant_id: tenant_id + - subnetpool: subnetpool + - prefixes: prefixes + - min_prefixlen: min_prefixlen + - address_scope_id: address_scope_id + - default_prefixlen: default_prefixlen + - max_prefixlen: max_prefixlen + - subnetpool_id: subnetpool_id + +Request Example +--------------- + +.. literalinclude:: ../samples/subnets/subnetpool-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - name: name + - default_quota: default_quota + - tenant_id: tenant_id + - created_at: created_at + - subnetpool: subnetpool + - updated_at: updated_at + - prefixes: prefixes + - min_prefixlen: min_prefixlen + - address_scope_id: address_scope_id + - ip_version: ip_version + - shared: shared + - default_prefixlen: default_prefixlen + - id: id + - max_prefixlen: max_prefixlen + + + +Response Example +---------------- + +.. literalinclude:: ../samples/subnets/subnetpool-update-response.json + :language: javascript + + + + + + + + +Delete subnet pool +================== + +.. rest_method:: DELETE /v2.0/subnetpools/{subnetpool_id} + +Deletes a subnet pool. + +The operation fails if any subnets allocated from the subnet pool +are still in use. + +Error response codes:404,204,401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - subnetpool_id: subnetpool_id + + + + + + + + +List subnet pools +================= + +.. rest_method:: GET /v2.0/subnetpools + +Lists subnet pools to which the tenant has access. + +Default policy settings returns exclusively subnet pools owned by +the tenant submitting the request, unless the request is submitted +by a user with administrative rights. + + +Normal response codes: 200 +Error response codes:401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - name: name + - default_quota: default_quota + - tenant_id: tenant_id + - created_at: created_at + - updated_at: updated_at + - prefixes: prefixes + - min_prefixlen: min_prefixlen + - address_scope_id: address_scope_id + - ip_version: ip_version + - shared: shared + - default_prefixlen: default_prefixlen + - subnetpools: subnetpools + - id: id + - max_prefixlen: max_prefixlen + + + +Response Example +---------------- + +.. literalinclude:: ../samples/subnets/subnetpools-list-response.json + :language: javascript + + + + + +Create subnet pool +================== + +.. rest_method:: POST /v2.0/subnetpools + +Creates a subnet pool. + +Error response codes:201,404,403,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - name: name + - default_quota: default_quota + - tenant_id: tenant_id + - subnetpool: subnetpool + - prefixes: prefixes + - min_prefixlen: min_prefixlen + - address_scope_id: address_scope_id + - shared: shared + - default_prefixlen: default_prefixlen + - max_prefixlen: max_prefixlen + +Request Example +--------------- + +.. literalinclude:: ../samples/subnets/subnetpool-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - name: name + - default_quota: default_quota + - tenant_id: tenant_id + - created_at: created_at + - subnetpool: subnetpool + - updated_at: updated_at + - prefixes: prefixes + - min_prefixlen: min_prefixlen + - address_scope_id: address_scope_id + - ip_version: ip_version + - shared: shared + - default_prefixlen: default_prefixlen + - id: id + - max_prefixlen: max_prefixlen + + + + + + + + diff --git a/api-ref/source/networking/v2-ext/tag-ext.inc b/api-ref/source/networking/v2-ext/tag-ext.inc new file mode 100644 index 000000000..a95d2ff75 --- /dev/null +++ b/api-ref/source/networking/v2-ext/tag-ext.inc @@ -0,0 +1,172 @@ +.. -*- rst -*- + +==================== +Tag extension (tags) +==================== + +Shows details for, updates, and deletes tags. This extension is +available since Mitaka release. + + +Replace all tags +================ + +.. rest_method:: PUT /v2.0/{resource_type}/{resource_id}/tags + +Replaces all tags on the resource. + + +Normal response codes: 200 +Error response codes:404,401,400,503,500, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tags: tags + - resource_type: resource_type + - resource_id: resource_id + +Request Example +--------------- + +.. literalinclude:: ../samples/tag/tag-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - tags: tags + + + +Response Example +---------------- + +.. literalinclude:: ../samples/tag/tag-update-response.json + :language: javascript + + + + + + + + + +Remove all tags +=============== + +.. rest_method:: DELETE /v2.0/{resource_type}/{resource_id}/tags + +Removes all tags on the resource. + +Error response codes:500,404,204,401,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - resource_type: resource_type + - resource_id: resource_id + + + + + + + + + + +Confirm a tag +============= + +.. rest_method:: GET /v2.0/{resource_type}/{resource_id}/tags/{tag} + +Confirms a given tag is set on the resource. + +Error response codes:500,404,204,401,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tag: tag + - resource_type: resource_type + - resource_id: resource_id + + + + + + + + + + +Add a tag +========= + +.. rest_method:: PUT /v2.0/{resource_type}/{resource_id}/tags/{tag} + +Adds a tag on the resource. + +Error response codes:201,404,500,401,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tag: tag + - resource_type: resource_type + - resource_id: resource_id + + + + + + + + + + +Remove a tag +============ + +.. rest_method:: DELETE /v2.0/{resource_type}/{resource_id}/tags/{tag} + +Removes a tag on the resource. + +Error response codes:500,404,204,401,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tag: tag + - resource_type: resource_type + - resource_id: resource_id + + + + + + + + + diff --git a/api-ref/source/networking/v2-ext/vpnaas.inc b/api-ref/source/networking/v2-ext/vpnaas.inc new file mode 100644 index 000000000..eda07a8ad --- /dev/null +++ b/api-ref/source/networking/v2-ext/vpnaas.inc @@ -0,0 +1,1374 @@ +.. -*- rst -*- + +============================================================================================================ +VPNaaS 2.0 (CURRENT) (vpn, vpnservices, ikepolicies, ipsecpolicies, endpoint-groups, ipsec-site-connections) +============================================================================================================ + +The Virtual-Private-Network-as-a-Service (VPNaaS) extension enables +OpenStack tenants to extend private networks across the public +telecommunication infrastructure. + +This initial implementation of the VPNaaS extension provides: + +- Site-to-site VPN that connects two private networks. + +- Multiple VPN connections per tenant. + +- IKEv1 policy support with 3des, aes-128, aes-256, or aes-192 + encryption. + +- IPSec policy support with 3des, aes-128, aes-192, or aes-256 + encryption, sha1 authentication, ESP, AH, or AH-ESP transform + protocol, and tunnel or transport mode encapsulation. + +- Dead Peer Detection (DPD) with hold, clear, restart, disabled, or + restart-by-peer actions. + +This extension introduces these resources: + +- ``service``. A parent object that associates VPN with a specific + subnet and router. + +- ``ikepolicy``. The Internet Key Exchange (IKE) policy that + identifies the authentication and encryption algorithm to use + during phase one and two negotiation of a VPN connection. + +- ``ipsecpolicy``. The IP security policy that specifies the + authentication and encryption algorithm and encapsulation mode to + use for the established VPN connection. + +- ``ipsec-site-connection``. Details for the site-to-site IPsec + connection, including the peer CIDRs, MTU, authentication mode, + peer address, DPD settings, and status. + + +Create IKE policy +================= + +.. rest_method:: POST /v2.0/vpn/ikepolicies + +Creates an IKE policy. + +The IKE policy is used for phases one and two negotiation of the +VPN connection. You can specify both the authentication and +encryption algorithms for connections. + +Error response codes:201,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - ikepolicy: ikepolicy + - description: description + - tenant_id: tenant_id + - auth_algorithm: auth_algorithm + - name: name + - encryption_algorithm: encryption_algorithm + - pfs: pfs + - value: value + - phase1_negotiation_mode: phase1_negotiation_mode + - units: units + - lifetime: lifetime + - ike_version: ike_version + +Request Example +--------------- + +.. literalinclude:: ../samples/vpn/ikepolicy-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - ikepolicy: ikepolicy + - ikepolicies: ikepolicies + - description: description + - tenant_id: tenant_id + - auth_algorithm: auth_algorithm + - name: name + - encryption_algorithm: encryption_algorithm + - pfs: pfs + - value: value + - phase1_negotiation_mode: phase1_negotiation_mode + - units: units + - lifetime: lifetime + - id: id + - ike_version: ike_version + + + + + + + +List IKE policies +================= + +.. rest_method:: GET /v2.0/vpn/ikepolicies + +Lists IKE policies. + + +Normal response codes: 200 +Error response codes:403,401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - ikepolicies: ikepolicies + - description: description + - tenant_id: tenant_id + - auth_algorithm: auth_algorithm + - name: name + - encryption_algorithm: encryption_algorithm + - pfs: pfs + - value: value + - phase1_negotiation_mode: phase1_negotiation_mode + - units: units + - lifetime: lifetime + - id: id + - ike_version: ike_version + + + +Response Example +---------------- + +.. literalinclude:: ../samples/vpn/ikepolicies-list-response.json + :language: javascript + + + + + + +Create IPSec connection +======================= + +.. rest_method:: POST /v2.0/vpn/ipsec-site-connections + +Creates a site-to-site IPSec connection for a service. + +Error response codes:201,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - auth_mode: auth_mode + - ikepolicy_id: ikepolicy_id + - vpnservice_id: vpnservice_id + - local_ep_group_id: local_ep_group_id + - peer_address: peer_address + - ipsec_site_connection: ipsec_site_connection + - route_mode: route_mode + - ipsecpolicy_id: ipsecpolicy_id + - peer_id: peer_id + - status: status + - psk: psk + - description: description + - initiator: initiator + - peer_cidrs: peer_cidrs + - name: name + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - interval: interval + - mtu: mtu + - peer_ep_group_id: peer_ep_group_id + - dpd: dpd + - timeout: timeout + - action: action + +Request Example +--------------- + +.. literalinclude:: ../samples/vpn/ipsec-site-connection-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - auth_mode: auth_mode + - ikepolicy_id: ikepolicy_id + - vpnservice_id: vpnservice_id + - local_ep_group_id: local_ep_group_id + - peer_address: peer_address + - id: id + - ipsec_site_connection: ipsec_site_connection + - route_mode: route_mode + - ipsecpolicy_id: ipsecpolicy_id + - peer_id: peer_id + - status: status + - psk: psk + - description: description + - initiator: initiator + - peer_cidrs: peer_cidrs + - name: name + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - interval: interval + - mtu: mtu + - peer_ep_group_id: peer_ep_group_id + - dpd: dpd + - timeout: timeout + - action: action + + + + + + + +List IPSec connections +====================== + +.. rest_method:: GET /v2.0/vpn/ipsec-site-connections + +Lists all IPSec connections. + + +Normal response codes: 200 +Error response codes:403,401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - auth_mode: auth_mode + - ikepolicy_id: ikepolicy_id + - vpnservice_id: vpnservice_id + - local_ep_group_id: local_ep_group_id + - peer_address: peer_address + - id: id + - route_mode: route_mode + - ipsecpolicy_id: ipsecpolicy_id + - peer_id: peer_id + - status: status + - psk: psk + - description: description + - initiator: initiator + - peer_cidrs: peer_cidrs + - name: name + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - interval: interval + - mtu: mtu + - peer_ep_group_id: peer_ep_group_id + - dpd: dpd + - timeout: timeout + - action: action + + + +Response Example +---------------- + +.. literalinclude:: ../samples/vpn/ipsec-site-connections-list-response.json + :language: javascript + + + + + + +Show IPSec connection +===================== + +.. rest_method:: GET /v2.0/vpn/ipsec-site-connections/{connection_id} + +Shows details for an IPSec connection. + + +Normal response codes: 200 +Error response codes:404,403,401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - connection_id: connection_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - auth_mode: auth_mode + - ikepolicy_id: ikepolicy_id + - vpnservice_id: vpnservice_id + - local_ep_group_id: local_ep_group_id + - peer_address: peer_address + - id: id + - ipsec_site_connection: ipsec_site_connection + - route_mode: route_mode + - ipsecpolicy_id: ipsecpolicy_id + - peer_id: peer_id + - status: status + - psk: psk + - description: description + - initiator: initiator + - peer_cidrs: peer_cidrs + - name: name + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - interval: interval + - mtu: mtu + - peer_ep_group_id: peer_ep_group_id + - dpd: dpd + - timeout: timeout + - action: action + + + +Response Example +---------------- + +.. literalinclude:: ../samples/vpn/ipsec-site-connection-show-response.json + :language: javascript + + + + + + + +Update IPSec connection +======================= + +.. rest_method:: PUT /v2.0/vpn/ipsec-site-connections/{connection_id} + +Updates connection settings for an IPSec connection. + + +Normal response codes: 200 +Error response codes:404,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - psk: psk + - initiator: initiator + - description: description + - ipsec_site_connection: ipsec_site_connection + - admin_state_up: admin_state_up + - interval: interval + - peer_cidrs: peer_cidrs + - mtu: mtu + - peer_ep_group_id: peer_ep_group_id + - local_ep_group_id: local_ep_group_id + - dpd: dpd + - timeout: timeout + - action: action + - peer_address: peer_address + - peer_id: peer_id + - name: name + - connection_id: connection_id + +Request Example +--------------- + +.. literalinclude:: ../samples/vpn/ipsec-site-connection-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - auth_mode: auth_mode + - ikepolicy_id: ikepolicy_id + - vpnservice_id: vpnservice_id + - local_ep_group_id: local_ep_group_id + - peer_address: peer_address + - id: id + - ipsec_site_connection: ipsec_site_connection + - route_mode: route_mode + - ipsecpolicy_id: ipsecpolicy_id + - peer_id: peer_id + - status: status + - psk: psk + - description: description + - initiator: initiator + - peer_cidrs: peer_cidrs + - name: name + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - interval: interval + - mtu: mtu + - peer_ep_group_id: peer_ep_group_id + - dpd: dpd + - timeout: timeout + - action: action + + + +Response Example +---------------- + +.. literalinclude:: ../samples/vpn/ipsec-site-connection-update-response.json + :language: javascript + + + + + + + +Remove IPSec connection +======================= + +.. rest_method:: DELETE /v2.0/vpn/ipsec-site-connections/{connection_id} + +Removes an IPSec connection. + +Error response codes:409,404,204,401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - connection_id: connection_id + + + + + + + + + +Create VPN endpoint group +========================= + +.. rest_method:: POST /v2.0/vpn/endpoint-groups + +Creates a VPN endpoint group. + +The endpoint group contains one or more endpoints of a specific +type that you can use to create a VPN connections. + +Error response codes:201,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - endpoints: endpoints + - type: type + - description: description + - name: name + +Request Example +--------------- + +.. literalinclude:: ../samples/vpn/vpn-endpoint-group-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - tenant_id: tenant_id + - endpoints: endpoints + - type: type + - id: id + - name: name + + + + + + + +List VPN endpoint groups +======================== + +.. rest_method:: GET /v2.0/vpn/endpoint-groups + +Lists VPN endpoint groups. + + +Normal response codes: 200 +Error response codes:403,401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - tenant_id: tenant_id + - endpoints: endpoints + - type: type + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/vpn/vpn-endpoint-groups-list-response.json + :language: javascript + + + + + + +List VPN services +================= + +.. rest_method:: GET /v2.0/vpn/vpnservices + +Lists all VPN services. + +The list might be empty. + + +Normal response codes: 200 +Error response codes:403,401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - router_id: router_id + - status: status + - name: name + - external_v6_ip: external_v6_ip + - admin_state_up: admin_state_up + - subnet_id: subnet_id + - tenant_id: tenant_id + - external_v4_ip: external_v4_ip + - vpnservices: vpnservices + - id: id + - description: description + + + +Response Example +---------------- + +.. literalinclude:: ../samples/vpn/vpnservices-list-response.json + :language: javascript + + + + + + +Create VPN service +================== + +.. rest_method:: POST /v2.0/vpn/vpnservices + +Creates a VPN service. + +The service is associated with a router. After you create the +service, it can contain multiple VPN connections. + +Error response codes:201,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - router_id: router_id + - description: description + - admin_state_up: admin_state_up + - subnet_id: subnet_id + - tenant_id: tenant_id + - vpnservice: vpnservice + - name: name + +Request Example +--------------- + +.. literalinclude:: ../samples/vpn/vpnservice-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - router_id: router_id + - status: status + - name: name + - external_v6_ip: external_v6_ip + - admin_state_up: admin_state_up + - subnet_id: subnet_id + - tenant_id: tenant_id + - external_v4_ip: external_v4_ip + - vpnservice: vpnservice + - id: id + - description: description + + + + + + + +Show VPN service details +======================== + +.. rest_method:: GET /v2.0/vpn/vpnservices/{service_id} + +Shows details for a VPN service. + +If the user is not an administrative user and the VPN service +object does not belong to the tenant account for the user, the +operation returns the ``Forbidden (403)`` response code. + + +Normal response codes: 200 +Error response codes:404,403,401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - service_id: service_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - router_id: router_id + - status: status + - name: name + - external_v6_ip: external_v6_ip + - admin_state_up: admin_state_up + - subnet_id: subnet_id + - tenant_id: tenant_id + - external_v4_ip: external_v4_ip + - vpnservice: vpnservice + - id: id + - description: description + + + +Response Example +---------------- + +.. literalinclude:: ../samples/vpn/vpnservice-show-response.json + :language: javascript + + + + + + + +Update VPN service +================== + +.. rest_method:: PUT /v2.0/vpn/vpnservices/{service_id} + +Updates a VPN service. + +Updates the attributes of a VPN service. You cannot update a +service with a ``PENDING_*`` status. + + +Normal response codes: 200 +Error response codes:404,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - vpnservice: vpnservice + - description: description + - name: name + - admin_state_up: admin_state_up + - service_id: service_id + +Request Example +--------------- + +.. literalinclude:: ../samples/vpn/vpnservice-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - router_id: router_id + - status: status + - name: name + - external_v6_ip: external_v6_ip + - admin_state_up: admin_state_up + - subnet_id: subnet_id + - tenant_id: tenant_id + - external_v4_ip: external_v4_ip + - vpnservice: vpnservice + - id: id + - description: description + + + +Response Example +---------------- + +.. literalinclude:: ../samples/vpn/vpnservice-update-response.json + :language: javascript + + + + + + + +Remove VPN service +================== + +.. rest_method:: DELETE /v2.0/vpn/vpnservices/{service_id} + +Removes a VPN service. + +If the service has connections, the request is rejected. + +Error response codes:409,404,204,401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - service_id: service_id + + + + + + + + + +Show IKE policy details +======================= + +.. rest_method:: GET /v2.0/vpn/ikepolicies/{ikepolicy_id} + +Shows details for an IKE policy. + + +Normal response codes: 200 +Error response codes:404,403,401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - ikepolicy_id: ikepolicy_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - ikepolicy: ikepolicy + - ikepolicies: ikepolicies + - description: description + - tenant_id: tenant_id + - auth_algorithm: auth_algorithm + - name: name + - encryption_algorithm: encryption_algorithm + - pfs: pfs + - value: value + - phase1_negotiation_mode: phase1_negotiation_mode + - units: units + - lifetime: lifetime + - id: id + - ike_version: ike_version + + + +Response Example +---------------- + +.. literalinclude:: ../samples/vpn/ikepolicy-show-response.json + :language: javascript + + + + + + + +Update IKE policy +================= + +.. rest_method:: PUT /v2.0/vpn/ikepolicies/{ikepolicy_id} + +Updates policy settings in an IKE policy. + + +Normal response codes: 200 +Error response codes:404,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - ikepolicy: ikepolicy + - description: description + - auth_algorithm: auth_algorithm + - name: name + - encryption_algorithm: encryption_algorithm + - pfs: pfs + - value: value + - phase1_negotiation_mode: phase1_negotiation_mode + - units: units + - lifetime: lifetime + - ike_version: ike_version + - ikepolicy_id: ikepolicy_id + +Request Example +--------------- + +.. literalinclude:: ../samples/vpn/ikepolicy-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - ikepolicy: ikepolicy + - ikepolicies: ikepolicies + - description: description + - tenant_id: tenant_id + - auth_algorithm: auth_algorithm + - name: name + - encryption_algorithm: encryption_algorithm + - pfs: pfs + - value: value + - phase1_negotiation_mode: phase1_negotiation_mode + - units: units + - lifetime: lifetime + - id: id + - ike_version: ike_version + + + +Response Example +---------------- + +.. literalinclude:: ../samples/vpn/ikepolicy-update-response.json + :language: javascript + + + + + + + +Remove IKE policy +================= + +.. rest_method:: DELETE /v2.0/vpn/ikepolicies/{ikepolicy_id} + +Removes an IKE policy. + +Error response codes:409,404,204,401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - ikepolicy_id: ikepolicy_id + + + + + + + + + +Show IPSec policy +================= + +.. rest_method:: GET /v2.0/vpn/ipsecpolicies/{ipsecpolicy_id} + +Shows details for an IPSec policy. + + +Normal response codes: 200 +Error response codes:404,403,401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - ipsecpolicy_id: ipsecpolicy_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - ipsecpolicies: ipsecpolicies + - description: description + - tenant_id: tenant_id + - ipsecpolicy: ipsecpolicy + - auth_algorithm: auth_algorithm + - encapsulation_mode: encapsulation_mode + - encryption_algorithm: encryption_algorithm + - pfs: pfs + - value: value + - transform_protocol: transform_protocol + - units: units + - lifetime: lifetime + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/vpn/ipsecpolicy-show-response.json + :language: javascript + + + + + + + +Update IPSec policy +=================== + +.. rest_method:: PUT /v2.0/vpn/ipsecpolicies/{ipsecpolicy_id} + +Updates policy settings in an IPSec policy. + + +Normal response codes: 200 +Error response codes:404,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - description: description + - transform_protocol: transform_protocol + - ipsecpolicy: ipsecpolicy + - auth_algorithm: auth_algorithm + - encapsulation_mode: encapsulation_mode + - encryption_algorithm: encryption_algorithm + - pfs: pfs + - value: value + - units: units + - lifetime: lifetime + - name: name + - ipsecpolicy_id: ipsecpolicy_id + +Request Example +--------------- + +.. literalinclude:: ../samples/vpn/ipsecpolicy-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - ipsecpolicies: ipsecpolicies + - description: description + - tenant_id: tenant_id + - ipsecpolicy: ipsecpolicy + - auth_algorithm: auth_algorithm + - encapsulation_mode: encapsulation_mode + - encryption_algorithm: encryption_algorithm + - pfs: pfs + - value: value + - transform_protocol: transform_protocol + - units: units + - lifetime: lifetime + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/vpn/ipsecpolicy-update-response.json + :language: javascript + + + + + + + +Remove IPSec policy +=================== + +.. rest_method:: DELETE /v2.0/vpn/ipsecpolicies/{ipsecpolicy_id} + +Removes an IPSec policy. + +Error response codes:409,404,204,401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - ipsecpolicy_id: ipsecpolicy_id + + + + + + + + + +Show VPN endpoint group +======================= + +.. rest_method:: GET /v2.0/vpn/endpoint-groups/{endpoint_group_id} + +Shows details for a VPN endpoint group. + + +Normal response codes: 200 +Error response codes:404,403,401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - endpoint_group_id: endpoint_group_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - tenant_id: tenant_id + - endpoints: endpoints + - type: type + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/vpn/vpn-endpoint-group-show-response.json + :language: javascript + + + + + + + +Update VPN endpoint group +========================= + +.. rest_method:: PUT /v2.0/vpn/endpoint-groups/{endpoint_group_id} + +Updates settings for a VPN endpoint group. + + +Normal response codes: 200 +Error response codes:404,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - description: description + - name: name + - endpoint_group_id: endpoint_group_id + +Request Example +--------------- + +.. literalinclude:: ../samples/vpn/vpn-endpoint-group-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - tenant_id: tenant_id + - endpoints: endpoints + - type: type + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/vpn/vpn-endpoint-group-update-response.json + :language: javascript + + + + + + + +Remove VPN endpoint group +========================= + +.. rest_method:: DELETE /v2.0/vpn/endpoint-groups/{endpoint_group_id} + +Removes a VPN endpoint group. + +Error response codes:409,404,204,401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - endpoint_group_id: endpoint_group_id + + + + + + + + + +Create IPSec policy +=================== + +.. rest_method:: POST /v2.0/vpn/ipsecpolicies + +Creates an IP security (IPSec) policy. + +The IPsec policy specifies the authentication and encryption +algorithms and encapsulation mode to use for the established VPN +connection. + +Error response codes:201,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - description: description + - tenant_id: tenant_id + - ipsecpolicy: ipsecpolicy + - auth_algorithm: auth_algorithm + - encapsulation_mode: encapsulation_mode + - encryption_algorithm: encryption_algorithm + - pfs: pfs + - value: value + - transform_protocol: transform_protocol + - units: units + - lifetime: lifetime + - name: name + +Request Example +--------------- + +.. literalinclude:: ../samples/vpn/ipsecpolicy-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - ipsecpolicies: ipsecpolicies + - description: description + - tenant_id: tenant_id + - ipsecpolicy: ipsecpolicy + - auth_algorithm: auth_algorithm + - encapsulation_mode: encapsulation_mode + - encryption_algorithm: encryption_algorithm + - pfs: pfs + - value: value + - transform_protocol: transform_protocol + - units: units + - lifetime: lifetime + - id: id + - name: name + + + + + + + +List IPSec policies +=================== + +.. rest_method:: GET /v2.0/vpn/ipsecpolicies + +Lists all IPSec policies. + + +Normal response codes: 200 +Error response codes:403,401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - ipsecpolicies: ipsecpolicies + - description: description + - tenant_id: tenant_id + - auth_algorithm: auth_algorithm + - encapsulation_mode: encapsulation_mode + - encryption_algorithm: encryption_algorithm + - pfs: pfs + - value: value + - transform_protocol: transform_protocol + - units: units + - lifetime: lifetime + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/vpn/ipsecpolicies-list-response.json + :language: javascript + + + + + diff --git a/api-ref/source/networking/v2/networks.inc b/api-ref/source/networking/v2/networks.inc new file mode 100644 index 000000000..c1bc3b9ef --- /dev/null +++ b/api-ref/source/networking/v2/networks.inc @@ -0,0 +1,338 @@ +.. -*- rst -*- + +======== +Networks +======== + +Lists, shows details for, creates, updates, and deletes networks. + + +Show network details +==================== + +.. rest_method:: GET /v2.0/networks/{network_id} + +Shows details for a network. + +You can control which response parameters are returned by using the +fields query parameter. For information, see `Filtering and column +selection `_. + +The response might show extension response parameters. For +information, see `Networks multiple provider extension (networks) +`_. + + +Normal response codes: 200 +Error response codes:404,401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - network_id: network_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - router:external: router:external + - availability_zone_hints: availability_zone_hints + - availability_zones: availability_zones + - name: name + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - updated_at: updated_at + - changed_at: changed_at + - mtu: mtu + - qos_policy_id: qos_policy_id + - subnets: subnets + - shared: shared + - id: id + - network: network + + + +Response Example +---------------- + +.. literalinclude:: ../samples/networks/network-show-response.json + :language: javascript + + + + + + +Update network +============== + +.. rest_method:: PUT /v2.0/networks/{network_id} + +Updates a network. + + +Normal response codes: 200 +Error response codes:404,403,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - router:external: router:external + - network: network + - admin_state_up: admin_state_up + - shared: shared + - port_security_enabled: port_security_enabled + - name: name + - network_id: network_id + +Request Example +--------------- + +.. literalinclude:: ../samples/networks/network-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - router:external: router:external + - availability_zone_hints: availability_zone_hints + - availability_zones: availability_zones + - name: name + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - mtu: mtu + - qos_policy_id: qos_policy_id + - subnets: subnets + - shared: shared + - id: id + - network: network + + + +Response Example +---------------- + +.. literalinclude:: ../samples/networks/network-update-response.json + :language: javascript + + + + + + + + +Delete network +============== + +.. rest_method:: DELETE /v2.0/networks/{network_id} + +Deletes a network and its associated resources. + +Error response codes:409,404,204,401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - network_id: network_id + + + + + + + + + +List networks +============= + +.. rest_method:: GET /v2.0/networks + +Lists networks to which the tenant has access. + +Use the ``fields`` query parameter to filter the response. For +information, see `Filtering and Column Selection `_. + +Use the ``tags``, ``tags-any``, ``not-tags``, ``not-tags-any`` +query parameter to filter the response with tags. For information, +see `REST API Impact `_. + + +Normal response codes: 200 +Error response codes:401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - router:external: router:external + - availability_zone_hints: availability_zone_hints + - availability_zones: availability_zones + - name: name + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - networks: networks + - mtu: mtu + - subnets: subnets + - shared: shared + - id: id + - qos_policy_id: qos_policy_id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/networks/networks-list-response.json + :language: javascript + + + + + +Create network +============== + +.. rest_method:: POST /v2.0/networks + +Creates a network. + +A request body is optional. An administrative user can specify +another tenant UUID, which is the tenant who owns the network, in +the request body. + +Error response codes:201,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + +Request Example +--------------- + +.. literalinclude:: ../samples/networks/network-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - router:external: router:external + - availability_zone_hints: availability_zone_hints + - availability_zones: availability_zones + - name: name + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - mtu: mtu + - qos_policy_id: qos_policy_id + - subnets: subnets + - shared: shared + - id: id + - network: network + + + + + + + +Bulk create networks +==================== + +.. rest_method:: POST /v2.0/networks + +Creates multiple networks in a single request. + +In the request body, specify a list of networks. + +The bulk create operation is always atomic. Either all or no +networks in the request body are created. + +Error response codes:201,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - router:external: router:external + - name: name + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - port_security_enabled: port_security_enabled + - shared: shared + - networks: networks + +Request Example +--------------- + +.. literalinclude:: ../samples/networks/networks-bulk-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - router:external: router:external + - subnets: subnets + - name: name + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - mtu: mtu + - shared: shared + - id: id + - port_security_enabled: port_security_enabled + - networks: networks + + + + + + diff --git a/api-ref/source/networking/v2/parameters.yaml b/api-ref/source/networking/v2/parameters.yaml new file mode 100644 index 000000000..77f3c9ca3 --- /dev/null +++ b/api-ref/source/networking/v2/parameters.yaml @@ -0,0 +1,430 @@ +# variables in header +{} + +# variables in path +network_id_1: + description: | + The UUID of the network. + in: path + required: false + type: string +port_id: + description: | + The UUID of the port. + in: path + required: false + type: string +subnet_id_2: + description: | + The UUID of the subnet. + in: path + required: false + type: string + +# variables in query +{} + +# variables in body +admin_state_up: + description: | + The administrative state of the network, which is + up (``true``) or down (``false``). + in: body + required: false + type: boolean +admin_state_up_1: + description: | + The administrative status of the port, which is + up (``true``) or down (``false``). + in: body + required: false + type: boolean +admin_state_up_2: + description: | + The administrative state of the network, which is + up (``true``) or down (``false``). + in: body + required: true + type: boolean +admin_state_up_3: + description: | + The administrative state of the port, which is up + (``true``) or down (``false``). + in: body + required: true + type: boolean +allowed_address_pairs: + description: | + A set of zero or more allowed address pairs. An + address pair contains an IP address and MAC address. + in: body + required: false + type: array +allowed_address_pairs_1: + description: | + A set of zero or more allowed address pairs. An + address pair consists of an IP address and MAC address. + in: body + required: true + type: array +availability_zone_hints: + description: | + The availability zone candidate for the network. + in: body + required: true + type: array +availability_zones: + description: | + The availability zone for the network. + in: body + required: true + type: array +changed_at: + description: | + Time at which the network has been created. + in: body + required: true + type: string +created_at: + description: | + Time at which port has been created. + in: body + required: true + type: string +default: + description: | + Defines whether the provider is the default for + the service type. If this value is ``true``, the provider is the + default. If this value is ``false``, the provider is not the + default. + in: body + required: true + type: boolean +device_id: + description: | + The UUID of the device that uses this port. For + example, a virtual server. + in: body + required: false + type: string +device_id_1: + description: | + The UUID of the device that uses this port. For + example, a virtual server. + in: body + required: true + type: string +device_owner: + description: | + The UUID of the entity that uses this port. For + example, a DHCP agent. + in: body + required: false + type: string +device_owner_1: + description: | + The UUID of the entity that uses this port. For + example, a DHCP agent. + in: body + required: true + type: string +extra_dhcp_opts: + description: | + A set of zero or more extra DHCP option pairs. An + option pair consists of an option value and name. + in: body + required: true + type: array +fixed_ips: + description: | + If you specify only a subnet UUID, OpenStack + Networking allocates an available IP from that subnet to the port. + If you specify both a subnet UUID and an IP address, OpenStack + Networking tries to allocate the address to the port. + in: body + required: false + type: array +fixed_ips_1: + description: | + The IP addresses for the port. Includes the IP + address and UUID of the subnet. + in: body + required: true + type: array +id: + description: | + The UUID of the network. + in: body + required: true + type: string +id_1: + description: | + The UUID of the port. + in: body + required: true + type: string +ip_address: + description: | + The IP address of an allowed address pair. + in: body + required: false + type: string +ip_address_1: + description: | + The fixed IP address of the port. + in: body + required: true + type: string +location: + description: | + Full URL to a service or server. + format: uri + in: body + required: true + type: string +mac_address: + description: | + The MAC address of an allowed address pair. + in: body + required: false + type: string +mac_address_1: + description: | + The MAC address. + in: body + required: true + type: string +mtu: + description: | + The MTU of a network resource. + in: body + required: true + type: integer +name: + description: | + The network name. + in: body + required: false + type: string +name_1: + description: | + A symbolic name for the port. + in: body + required: false + type: string +name_2: + description: | + The network name. + in: body + required: true + type: string +name_3: + description: | + The port name. + in: body + required: true + type: string +name_4: + description: | + User-facing provider name. + in: body + required: true + type: string +network: + description: | + A ``network`` object. + in: body + required: true + type: object +network_id: + description: | + The UUID of the network. + in: body + required: true + type: string +network_id_2: + description: | + The UUID of the attached network. + in: body + required: true + type: string +networks: + description: | + A list of ``network`` objects. + in: body + required: true + type: array +opt_name: + description: | + The extra DHCP option name. + in: body + required: false + type: string +opt_name_1: + description: | + The extra DHCP option name. + in: body + required: true + type: string +opt_value: + description: | + The extra DHCP option value. + in: body + required: false + type: string +opt_value_1: + description: | + The extra DHCP option value. + in: body + required: true + type: string +port: + description: | + A ``port`` object. + in: body + required: true + type: object +port_security_enabled: + description: | + The port security status. A valid value is + enabled (``true``) or disabled (``false``). + in: body + required: false + type: boolean +port_security_enabled_1: + description: | + The port security status. The status is enabled + (``true``) or disabled (``false``). + in: body + required: true + type: boolean +ports: + description: | + A list of ``port`` objects. + in: body + required: true + type: array +router:external: + description: | + Indicates whether this network is externally + accessible. + in: body + required: false + type: boolean +router:external_1: + description: | + Indicates whether this network is externally + accessible. + in: body + required: true + type: boolean +security_groups: + description: | + One or more security group UUIDs. + in: body + required: false + type: array +security_groups_1: + description: | + The UUIDs of any attached security groups. + in: body + required: true + type: array +service_providers: + description: | + A list of ``service_provider`` objects. + in: body + required: true + type: array +service_type: + description: | + The service type, which is ``CORE``, ``DUMMY``, + ``FIREWALL``, ``FLAVORS``, ``L3_ROUTER_NAT``, ``LOADBALANCER``, + ``LOADBALANCERV2``, ``METERING``, ``QOS``, or ``VPN``. + in: body + required: true + type: string +shared: + description: | + Admin-only. Indicates whether this network is + shared across all tenants. + in: body + required: false + type: boolean +shared_1: + description: | + Indicates whether this network is shared across + all tenants. By default, only administrative users can change this + value. + in: body + required: true + type: boolean +status: + description: | + The network status. + in: body + required: true + type: string +status_1: + description: | + The port status. Value is ``ACTIVE`` or ``DOWN``. + in: body + required: true + type: string +subnet_id: + description: | + If you specify only a subnet UUID, OpenStack + Networking allocates an available IP from that subnet to the port. + If you specify both a subnet UUID and an IP address, OpenStack + Networking tries to allocate the address to the port. + in: body + required: false + type: string +subnet_id_1: + description: | + The UUID of the subnet to which the port is + attached. + in: body + required: true + type: string +subnets: + description: | + The associated subnets. + in: body + required: true + type: array +tenant_id: + description: | + The UUID of the tenant who owns the network. Only + administrative users can specify a tenant UUID other than their + own. You cannot change this value through authorization policies. + in: body + required: false + type: string +tenant_id_1: + description: | + The UUID of the tenant. + in: body + required: true + type: string +tenant_id_2: + description: | + The UUID of the tenant who owns the network. Only + administrative users can specify a tenant UUID other than their + own. + in: body + required: true + type: string +updated_at: + description: | + Time at which port has been updated. + in: body + required: true + type: string +updated_at_1: + description: | + Time at which the network has been updated. + in: body + required: true + type: string + diff --git a/api-ref/source/networking/v2/ports.inc b/api-ref/source/networking/v2/ports.inc new file mode 100644 index 000000000..134f69171 --- /dev/null +++ b/api-ref/source/networking/v2/ports.inc @@ -0,0 +1,420 @@ +.. -*- rst -*- + +===== +Ports +===== + +Lists, shows details for, creates, updates, and deletes ports. + + +Show port details +================= + +.. rest_method:: GET /v2.0/ports/{port_id} + +Shows details for a port. + + +Normal response codes: 200 +Error response codes:404,401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - port_id: port_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - opt_value: opt_value + - status: status + - name: name + - allowed_address_pairs: allowed_address_pairs + - admin_state_up: admin_state_up + - network_id: network_id + - ip_address: ip_address + - extra_dhcp_opts: extra_dhcp_opts + - opt_name: opt_name + - updated_at: updated_at + - id: id + - port: port + - subnet_id: subnet_id + - device_owner: device_owner + - tenant_id: tenant_id + - mac_address: mac_address + - port_security_enabled: port_security_enabled + - fixed_ips: fixed_ips + - created_at: created_at + - security_groups: security_groups + - device_id: device_id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/ports/port-show-response.json + :language: javascript + + + + + + +Update port +=========== + +.. rest_method:: PUT /v2.0/ports/{port_id} + +Updates a port. + +You can update information for a port, such as its symbolic name +and associated IPs. When you update IPs for a port, any previously +associated IPs are removed, returned to the respective subnet +allocation pools, and replaced by the IPs in the request body. +Therefore, this operation replaces the ``fixed_ip`` attribute when +you specify it in the request body. If the updated IP addresses are +not valid or are already in use, the operation fails and the +existing IP addresses are not removed from the port. + +When you update security groups for a port and the operation +succeeds, any associated security groups are removed and replaced +by the security groups in the request body. Therefore, this +operation replaces the ``security_groups`` attribute when you +specify it in the request body. If the security groups are not +valid, the operation fails and the existing security groups are not +removed from the port. + + +Normal response codes: 200 +Error response codes:404,403,401,400,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - opt_value: opt_value + - name: name + - allowed_address_pairs: allowed_address_pairs + - admin_state_up: admin_state_up + - network_id: network_id + - fixed_ips: fixed_ips + - opt_name: opt_name + - subnet_id: subnet_id + - device_owner: device_owner + - tenant_id: tenant_id + - mac_address: mac_address + - ip_address: ip_address + - port: port + - security_groups: security_groups + - device_id: device_id + - port_id: port_id + +Request Example +--------------- + +.. literalinclude:: ../samples/ports/port-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - opt_value: opt_value + - status: status + - name: name + - allowed_address_pairs: allowed_address_pairs + - admin_state_up: admin_state_up + - network_id: network_id + - ip_address: ip_address + - extra_dhcp_opts: extra_dhcp_opts + - opt_name: opt_name + - updated_at: updated_at + - id: id + - port: port + - subnet_id: subnet_id + - device_owner: device_owner + - tenant_id: tenant_id + - mac_address: mac_address + - port_security_enabled: port_security_enabled + - fixed_ips: fixed_ips + - created_at: created_at + - security_groups: security_groups + - device_id: device_id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/ports/port-update-response.json + :language: javascript + + + + + + + + + +Delete port +=========== + +.. rest_method:: DELETE /v2.0/ports/{port_id} + +Deletes a port. + +Any IP addresses that are associated with the port are returned to +the respective subnets allocation pools. + +Error response codes:404,403,204,401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - port_id: port_id + + + + + + + + + +List ports +========== + +.. rest_method:: GET /v2.0/ports + +Lists ports to which the tenant has access. + +Default policy settings return only those ports that are owned by +the tenant who submits the request, unless the request is submitted +by a user with administrative rights. Users can control which +attributes are returned by using the fields query parameter. You +can use query parameters to filter the response.For information, +see `Filtering and Column Selection `_. + + +Normal response codes: 200 +Error response codes:401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - opt_value: opt_value + - status: status + - name: name + - allowed_address_pairs: allowed_address_pairs + - admin_state_up: admin_state_up + - network_id: network_id + - ip_address: ip_address + - extra_dhcp_opts: extra_dhcp_opts + - opt_name: opt_name + - updated_at: updated_at + - id: id + - ports: ports + - subnet_id: subnet_id + - device_owner: device_owner + - tenant_id: tenant_id + - mac_address: mac_address + - port_security_enabled: port_security_enabled + - fixed_ips: fixed_ips + - created_at: created_at + - security_groups: security_groups + - device_id: device_id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/ports/ports-list-response.json + :language: javascript + + + + + +Create port +=========== + +.. rest_method:: POST /v2.0/ports + +Creates a port on a network. + +To define the network in which to create the port, specify the +``network_id`` attribute in the request body. + +Error response codes:201,404,403,401,400,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - opt_value: opt_value + - name: name + - allowed_address_pairs: allowed_address_pairs + - admin_state_up: admin_state_up + - network_id: network_id + - fixed_ips: fixed_ips + - opt_name: opt_name + - subnet_id: subnet_id + - device_owner: device_owner + - tenant_id: tenant_id + - mac_address: mac_address + - ip_address: ip_address + - port: port + - security_groups: security_groups + - device_id: device_id + +Request Example +--------------- + +.. literalinclude:: ../samples/ports/port-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - opt_value: opt_value + - status: status + - name: name + - allowed_address_pairs: allowed_address_pairs + - admin_state_up: admin_state_up + - network_id: network_id + - ip_address: ip_address + - extra_dhcp_opts: extra_dhcp_opts + - opt_name: opt_name + - updated_at: updated_at + - id: id + - port: port + - subnet_id: subnet_id + - device_owner: device_owner + - tenant_id: tenant_id + - mac_address: mac_address + - port_security_enabled: port_security_enabled + - fixed_ips: fixed_ips + - created_at: created_at + - security_groups: security_groups + - device_id: device_id + + + + + + + + + + +Bulk create ports +================= + +.. rest_method:: POST /v2.0/ports + +Creates multiple ports in a single request. Specify a list of ports in the request body. + +Guarantees the atomic completion of the bulk operation. + +Error response codes:201,404,403,401,400,503,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - opt_value: opt_value + - name: name + - allowed_address_pairs: allowed_address_pairs + - admin_state_up: admin_state_up + - network_id: network_id + - fixed_ips: fixed_ips + - opt_name: opt_name + - subnet_id: subnet_id + - device_owner: device_owner + - tenant_id: tenant_id + - mac_address: mac_address + - ip_address: ip_address + - ports: ports + - security_groups: security_groups + - device_id: device_id + +Request Example +--------------- + +.. literalinclude:: ../samples/ports/ports-bulk-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - opt_value: opt_value + - status: status + - name: name + - allowed_address_pairs: allowed_address_pairs + - admin_state_up: admin_state_up + - network_id: network_id + - ip_address: ip_address + - extra_dhcp_opts: extra_dhcp_opts + - opt_name: opt_name + - updated_at: updated_at + - id: id + - ports: ports + - subnet_id: subnet_id + - device_owner: device_owner + - tenant_id: tenant_id + - mac_address: mac_address + - port_security_enabled: port_security_enabled + - fixed_ips: fixed_ips + - created_at: created_at + - security_groups: security_groups + - device_id: device_id + + + + + + + + + + diff --git a/api-ref/source/networking/v2/samples/extensions/extension-show-response.json b/api-ref/source/networking/v2/samples/extensions/extension-show-response.json new file mode 100644 index 000000000..800365e5d --- /dev/null +++ b/api-ref/source/networking/v2/samples/extensions/extension-show-response.json @@ -0,0 +1,9 @@ +{ + "extension": { + "updated": "2013-02-03T10:00:00-00:00", + "name": "agent", + "links": [], + "alias": "agent", + "description": "The agent management extension." + } +} diff --git a/api-ref/source/networking/v2/samples/extensions/extensions-list-response.json b/api-ref/source/networking/v2/samples/extensions/extensions-list-response.json new file mode 100644 index 000000000..ee41ae6c9 --- /dev/null +++ b/api-ref/source/networking/v2/samples/extensions/extensions-list-response.json @@ -0,0 +1,123 @@ +{ + "extensions": [ + { + "updated": "2013-01-20T00:00:00-00:00", + "name": "Neutron Service Type Management", + "links": [], + "alias": "service-type", + "description": "API for retrieving service providers for Neutron advanced services" + }, + { + "updated": "2012-10-05T10:00:00-00:00", + "name": "security-group", + "links": [], + "alias": "security-group", + "description": "The security groups extension." + }, + { + "updated": "2013-02-07T10:00:00-00:00", + "name": "L3 Agent Scheduler", + "links": [], + "alias": "l3_agent_scheduler", + "description": "Schedule routers among l3 agents" + }, + { + "updated": "2013-02-07T10:00:00-00:00", + "name": "Loadbalancer Agent Scheduler", + "links": [], + "alias": "lbaas_agent_scheduler", + "description": "Schedule pools among lbaas agents" + }, + { + "updated": "2013-03-28T10:00:00-00:00", + "name": "Neutron L3 Configurable external gateway mode", + "links": [], + "alias": "ext-gw-mode", + "description": "Extension of the router abstraction for specifying whether SNAT should occur on the external gateway" + }, + { + "updated": "2014-02-03T10:00:00-00:00", + "name": "Port Binding", + "links": [], + "alias": "binding", + "description": "Expose port bindings of a virtual port to external application" + }, + { + "updated": "2012-09-07T10:00:00-00:00", + "name": "Provider Network", + "links": [], + "alias": "provider", + "description": "Expose mapping of virtual networks to physical networks" + }, + { + "updated": "2013-02-03T10:00:00-00:00", + "name": "agent", + "links": [], + "alias": "agent", + "description": "The agent management extension." + }, + { + "updated": "2012-07-29T10:00:00-00:00", + "name": "Quota management support", + "links": [], + "alias": "quotas", + "description": "Expose functions for quotas management per tenant" + }, + { + "updated": "2013-02-07T10:00:00-00:00", + "name": "DHCP Agent Scheduler", + "links": [], + "alias": "dhcp_agent_scheduler", + "description": "Schedule networks among dhcp agents" + }, + { + "updated": "2013-06-27T10:00:00-00:00", + "name": "Multi Provider Network", + "links": [], + "alias": "multi-provider", + "description": "Expose mapping of virtual networks to multiple physical networks" + }, + { + "updated": "2013-01-14T10:00:00-00:00", + "name": "Neutron external network", + "links": [], + "alias": "external-net", + "description": "Adds external network attribute to network resource." + }, + { + "updated": "2012-07-20T10:00:00-00:00", + "name": "Neutron L3 Router", + "links": [], + "alias": "router", + "description": "Router abstraction for basic L3 forwarding between L2 Neutron networks and access to external networks via a NAT gateway." + }, + { + "updated": "2013-07-23T10:00:00-00:00", + "name": "Allowed Address Pairs", + "links": [], + "alias": "allowed-address-pairs", + "description": "Provides allowed address pairs" + }, + { + "updated": "2013-03-17T12:00:00-00:00", + "name": "Neutron Extra DHCP opts", + "links": [], + "alias": "extra_dhcp_opt", + "description": "Extra options configuration for DHCP. For example PXE boot options to DHCP clients can be specified (e.g. tftp-server, server-ip-address, bootfile-name)" + }, + { + "updated": "2012-10-07T10:00:00-00:00", + "name": "LoadBalancing service", + "links": [], + "alias": "lbaas", + "description": "Extension for LoadBalancing service" + }, + { + "updated": "2013-02-01T10:00:00-00:00", + "name": "Neutron Extra Route", + "links": [], + "alias": "extraroute", + "description": "Extra routes configuration for L3 router" + } + ] +} diff --git a/api-ref/source/networking/v2/samples/firewalls/firewall-create-request.json b/api-ref/source/networking/v2/samples/firewalls/firewall-create-request.json new file mode 100644 index 000000000..65589932b --- /dev/null +++ b/api-ref/source/networking/v2/samples/firewalls/firewall-create-request.json @@ -0,0 +1,6 @@ +{ + "firewall": { + "admin_state_up": true, + "firewall_policy_id": "c69933c1-b472-44f9-8226-30dc4ffd454c" + } +} diff --git a/api-ref/source/networking/v2/samples/firewalls/firewall-create-response.json b/api-ref/source/networking/v2/samples/firewalls/firewall-create-response.json new file mode 100644 index 000000000..c3c8d689c --- /dev/null +++ b/api-ref/source/networking/v2/samples/firewalls/firewall-create-response.json @@ -0,0 +1,14 @@ +{ + "firewall": { + "admin_state_up": true, + "description": "", + "firewall_policy_id": "c69933c1-b472-44f9-8226-30dc4ffd454c", + "id": "3b0ef8f4-82c7-44d4-a4fb-6177f9a21977", + "name": "", + "status": "PENDING_CREATE", + "router_ids": [ + "650bfd2f-7766-4a0d-839f-218f33e16998" + ], + "tenant_id": "45977fa2dbd7482098dd68d0d8970117" + } +} diff --git a/api-ref/source/networking/v2/samples/firewalls/firewall-policies-list-response.json b/api-ref/source/networking/v2/samples/firewalls/firewall-policies-list-response.json new file mode 100644 index 000000000..bcec01fe7 --- /dev/null +++ b/api-ref/source/networking/v2/samples/firewalls/firewall-policies-list-response.json @@ -0,0 +1,15 @@ +{ + "firewall_policies": [ + { + "audited": false, + "description": "", + "firewall_rules": [ + "8722e0e0-9cc9-4490-9660-8c9a5732fbb0" + ], + "id": "c69933c1-b472-44f9-8226-30dc4ffd454c", + "name": "test-policy", + "shared": false, + "tenant_id": "45977fa2dbd7482098dd68d0d8970117" + } + ] +} diff --git a/api-ref/source/networking/v2/samples/firewalls/firewall-policy-create-request.json b/api-ref/source/networking/v2/samples/firewalls/firewall-policy-create-request.json new file mode 100644 index 000000000..7811e9549 --- /dev/null +++ b/api-ref/source/networking/v2/samples/firewalls/firewall-policy-create-request.json @@ -0,0 +1,8 @@ +{ + "firewall_policy": { + "firewall_rules": [ + "8722e0e0-9cc9-4490-9660-8c9a5732fbb0" + ], + "name": "test-policy" + } +} diff --git a/api-ref/source/networking/v2/samples/firewalls/firewall-policy-create-response.json b/api-ref/source/networking/v2/samples/firewalls/firewall-policy-create-response.json new file mode 100644 index 000000000..6c68f5bc2 --- /dev/null +++ b/api-ref/source/networking/v2/samples/firewalls/firewall-policy-create-response.json @@ -0,0 +1,13 @@ +{ + "firewall_policy": { + "audited": false, + "description": "", + "firewall_rules": [ + "8722e0e0-9cc9-4490-9660-8c9a5732fbb0" + ], + "id": "c69933c1-b472-44f9-8226-30dc4ffd454c", + "name": "test-policy", + "shared": false, + "tenant_id": "45977fa2dbd7482098dd68d0d8970117" + } +} diff --git a/api-ref/source/networking/v2/samples/firewalls/firewall-policy-insert-rule-request.json b/api-ref/source/networking/v2/samples/firewalls/firewall-policy-insert-rule-request.json new file mode 100644 index 000000000..94d9b8ec8 --- /dev/null +++ b/api-ref/source/networking/v2/samples/firewalls/firewall-policy-insert-rule-request.json @@ -0,0 +1,5 @@ +{ + "firewall_rule_id": "7bc34b8c-8d3b-4ada-a9c8-1f4c11c65692", + "insert_after": "a08ef905-0ff6-4784-8374-175fffe7dade", + "insert_before": "" +} diff --git a/api-ref/source/networking/v2/samples/firewalls/firewall-policy-insert-rule-response.json b/api-ref/source/networking/v2/samples/firewalls/firewall-policy-insert-rule-response.json new file mode 100644 index 000000000..6a42dd6c3 --- /dev/null +++ b/api-ref/source/networking/v2/samples/firewalls/firewall-policy-insert-rule-response.json @@ -0,0 +1,14 @@ +{ + "audited": false, + "description": "", + "firewall_list": [], + "firewall_rules": [ + "a08ef905-0ff6-4784-8374-175fffe7dade", + "7bc34b8c-8d3b-4ada-a9c8-1f4c11c65692", + "8722e0e0-9cc9-4490-9660-8c9a5732fbb0" + ], + "id": "c69933c1-b472-44f9-8226-30dc4ffd454c", + "name": "test-policy", + "shared": false, + "tenant_id": "45977fa2dbd7482098dd68d0d8970117" +} diff --git a/api-ref/source/networking/v2/samples/firewalls/firewall-policy-remove-rule-request.json b/api-ref/source/networking/v2/samples/firewalls/firewall-policy-remove-rule-request.json new file mode 100644 index 000000000..7576442bf --- /dev/null +++ b/api-ref/source/networking/v2/samples/firewalls/firewall-policy-remove-rule-request.json @@ -0,0 +1,3 @@ +{ + "firewall_rule_id": "7bc34b8c-8d3b-4ada-a9c8-1f4c11c65692" +} diff --git a/api-ref/source/networking/v2/samples/firewalls/firewall-policy-remove-rule-response.json b/api-ref/source/networking/v2/samples/firewalls/firewall-policy-remove-rule-response.json new file mode 100644 index 000000000..c8d976ac8 --- /dev/null +++ b/api-ref/source/networking/v2/samples/firewalls/firewall-policy-remove-rule-response.json @@ -0,0 +1,13 @@ +{ + "audited": false, + "description": "", + "firewall_list": [], + "firewall_rules": [ + "a08ef905-0ff6-4784-8374-175fffe7dade", + "8722e0e0-9cc9-4490-9660-8c9a5732fbb0" + ], + "id": "c69933c1-b472-44f9-8226-30dc4ffd454c", + "name": "test-policy", + "shared": false, + "tenant_id": "45977fa2dbd7482098dd68d0d8970117" +} diff --git a/api-ref/source/networking/v2/samples/firewalls/firewall-policy-show-response.json b/api-ref/source/networking/v2/samples/firewalls/firewall-policy-show-response.json new file mode 100644 index 000000000..6c68f5bc2 --- /dev/null +++ b/api-ref/source/networking/v2/samples/firewalls/firewall-policy-show-response.json @@ -0,0 +1,13 @@ +{ + "firewall_policy": { + "audited": false, + "description": "", + "firewall_rules": [ + "8722e0e0-9cc9-4490-9660-8c9a5732fbb0" + ], + "id": "c69933c1-b472-44f9-8226-30dc4ffd454c", + "name": "test-policy", + "shared": false, + "tenant_id": "45977fa2dbd7482098dd68d0d8970117" + } +} diff --git a/api-ref/source/networking/v2/samples/firewalls/firewall-policy-update-request.json b/api-ref/source/networking/v2/samples/firewalls/firewall-policy-update-request.json new file mode 100644 index 000000000..7d0a7b53c --- /dev/null +++ b/api-ref/source/networking/v2/samples/firewalls/firewall-policy-update-request.json @@ -0,0 +1,8 @@ +{ + "firewall_policy": { + "firewall_rules": [ + "a08ef905-0ff6-4784-8374-175fffe7dade", + "8722e0e0-9cc9-4490-9660-8c9a5732fbb0" + ] + } +} diff --git a/api-ref/source/networking/v2/samples/firewalls/firewall-policy-update-response.json b/api-ref/source/networking/v2/samples/firewalls/firewall-policy-update-response.json new file mode 100644 index 000000000..4f15965cf --- /dev/null +++ b/api-ref/source/networking/v2/samples/firewalls/firewall-policy-update-response.json @@ -0,0 +1,14 @@ +{ + "firewall_policy": { + "audited": false, + "description": "", + "firewall_rules": [ + "a08ef905-0ff6-4784-8374-175fffe7dade", + "8722e0e0-9cc9-4490-9660-8c9a5732fbb0" + ], + "id": "c69933c1-b472-44f9-8226-30dc4ffd454c", + "name": "test-policy", + "shared": false, + "tenant_id": "45977fa2dbd7482098dd68d0d8970117" + } +} diff --git a/api-ref/source/networking/v2/samples/firewalls/firewall-rule-create-request.json b/api-ref/source/networking/v2/samples/firewalls/firewall-rule-create-request.json new file mode 100644 index 000000000..9a972d607 --- /dev/null +++ b/api-ref/source/networking/v2/samples/firewalls/firewall-rule-create-request.json @@ -0,0 +1,9 @@ +{ + "firewall_rule": { + "action": "allow", + "destination_port": "80", + "enabled": true, + "name": "ALLOW_HTTP", + "protocol": "tcp" + } +} diff --git a/api-ref/source/networking/v2/samples/firewalls/firewall-rule-create-response.json b/api-ref/source/networking/v2/samples/firewalls/firewall-rule-create-response.json new file mode 100644 index 000000000..8121977fb --- /dev/null +++ b/api-ref/source/networking/v2/samples/firewalls/firewall-rule-create-response.json @@ -0,0 +1,19 @@ +{ + "firewall_rule": { + "action": "allow", + "description": "", + "destination_ip_address": null, + "destination_port": "80", + "enabled": true, + "firewall_policy_id": null, + "id": "8722e0e0-9cc9-4490-9660-8c9a5732fbb0", + "ip_version": 4, + "name": "ALLOW_HTTP", + "position": null, + "protocol": "tcp", + "shared": false, + "source_ip_address": null, + "source_port": null, + "tenant_id": "45977fa2dbd7482098dd68d0d8970117" + } +} diff --git a/api-ref/source/networking/v2/samples/firewalls/firewall-rule-show-response.json b/api-ref/source/networking/v2/samples/firewalls/firewall-rule-show-response.json new file mode 100644 index 000000000..8121977fb --- /dev/null +++ b/api-ref/source/networking/v2/samples/firewalls/firewall-rule-show-response.json @@ -0,0 +1,19 @@ +{ + "firewall_rule": { + "action": "allow", + "description": "", + "destination_ip_address": null, + "destination_port": "80", + "enabled": true, + "firewall_policy_id": null, + "id": "8722e0e0-9cc9-4490-9660-8c9a5732fbb0", + "ip_version": 4, + "name": "ALLOW_HTTP", + "position": null, + "protocol": "tcp", + "shared": false, + "source_ip_address": null, + "source_port": null, + "tenant_id": "45977fa2dbd7482098dd68d0d8970117" + } +} diff --git a/api-ref/source/networking/v2/samples/firewalls/firewall-rule-update-request.json b/api-ref/source/networking/v2/samples/firewalls/firewall-rule-update-request.json new file mode 100644 index 000000000..fbff43f86 --- /dev/null +++ b/api-ref/source/networking/v2/samples/firewalls/firewall-rule-update-request.json @@ -0,0 +1,5 @@ +{ + "firewall_rule": { + "shared": "true" + } +} diff --git a/api-ref/source/networking/v2/samples/firewalls/firewall-rule-update-response.json b/api-ref/source/networking/v2/samples/firewalls/firewall-rule-update-response.json new file mode 100644 index 000000000..5bdeac938 --- /dev/null +++ b/api-ref/source/networking/v2/samples/firewalls/firewall-rule-update-response.json @@ -0,0 +1,19 @@ +{ + "firewall_rule": { + "action": "allow", + "description": "", + "destination_ip_address": null, + "destination_port": "80", + "enabled": true, + "firewall_policy_id": "c69933c1-b472-44f9-8226-30dc4ffd454c", + "id": "8722e0e0-9cc9-4490-9660-8c9a5732fbb0", + "ip_version": 4, + "name": "ALLOW_HTTP", + "position": 1, + "protocol": "tcp", + "shared": true, + "source_ip_address": null, + "source_port": null, + "tenant_id": "45977fa2dbd7482098dd68d0d8970117" + } +} diff --git a/api-ref/source/networking/v2/samples/firewalls/firewall-rules-list-response.json b/api-ref/source/networking/v2/samples/firewalls/firewall-rules-list-response.json new file mode 100644 index 000000000..20065cbee --- /dev/null +++ b/api-ref/source/networking/v2/samples/firewalls/firewall-rules-list-response.json @@ -0,0 +1,21 @@ +{ + "firewall_rules": [ + { + "action": "allow", + "description": "", + "destination_ip_address": null, + "destination_port": "80", + "enabled": true, + "firewall_policy_id": "c69933c1-b472-44f9-8226-30dc4ffd454c", + "id": "8722e0e0-9cc9-4490-9660-8c9a5732fbb0", + "ip_version": 4, + "name": "ALLOW_HTTP", + "position": 1, + "protocol": "tcp", + "shared": false, + "source_ip_address": null, + "source_port": null, + "tenant_id": "45977fa2dbd7482098dd68d0d8970117" + } + ] +} diff --git a/api-ref/source/networking/v2/samples/firewalls/firewall-show-response.json b/api-ref/source/networking/v2/samples/firewalls/firewall-show-response.json new file mode 100644 index 000000000..eae14315b --- /dev/null +++ b/api-ref/source/networking/v2/samples/firewalls/firewall-show-response.json @@ -0,0 +1,14 @@ +{ + "firewall": { + "admin_state_up": true, + "description": "", + "firewall_policy_id": "c69933c1-b472-44f9-8226-30dc4ffd454c", + "id": "3b0ef8f4-82c7-44d4-a4fb-6177f9a21977", + "name": "", + "status": "ACTIVE", + "router_ids": [ + "650bfd2f-7766-4a0d-839f-218f33e16998" + ], + "tenant_id": "45977fa2dbd7482098dd68d0d8970117" + } +} diff --git a/api-ref/source/networking/v2/samples/firewalls/firewall-update-request.json b/api-ref/source/networking/v2/samples/firewalls/firewall-update-request.json new file mode 100644 index 000000000..2458f52c7 --- /dev/null +++ b/api-ref/source/networking/v2/samples/firewalls/firewall-update-request.json @@ -0,0 +1,5 @@ +{ + "firewall": { + "admin_state_up": "false" + } +} diff --git a/api-ref/source/networking/v2/samples/firewalls/firewall-update-response.json b/api-ref/source/networking/v2/samples/firewalls/firewall-update-response.json new file mode 100644 index 000000000..248ea1bfb --- /dev/null +++ b/api-ref/source/networking/v2/samples/firewalls/firewall-update-response.json @@ -0,0 +1,14 @@ +{ + "firewall": { + "admin_state_up": false, + "description": "", + "firewall_policy_id": "c69933c1-b472-44f9-8226-30dc4ffd454c", + "id": "3b0ef8f4-82c7-44d4-a4fb-6177f9a21977", + "name": "", + "status": "PENDING_UPDATE", + "router_ids": [ + "650bfd2f-7766-4a0d-839f-218f33e16998" + ], + "tenant_id": "45977fa2dbd7482098dd68d0d8970117" + } +} diff --git a/api-ref/source/networking/v2/samples/firewalls/firewalls-list-response.json b/api-ref/source/networking/v2/samples/firewalls/firewalls-list-response.json new file mode 100644 index 000000000..72e6e9f7f --- /dev/null +++ b/api-ref/source/networking/v2/samples/firewalls/firewalls-list-response.json @@ -0,0 +1,16 @@ +{ + "firewalls": [ + { + "admin_state_up": true, + "description": "", + "firewall_policy_id": "c69933c1-b472-44f9-8226-30dc4ffd454c", + "id": "3b0ef8f4-82c7-44d4-a4fb-6177f9a21977", + "name": "", + "status": "ACTIVE", + "router_ids": [ + "650bfd2f-7766-4a0d-839f-218f33e16998" + ], + "tenant_id": "45977fa2dbd7482098dd68d0d8970117" + } + ] +} diff --git a/api-ref/source/networking/v2/samples/flavors/flavor-associate-request.json b/api-ref/source/networking/v2/samples/flavors/flavor-associate-request.json new file mode 100644 index 000000000..f2e491ab4 --- /dev/null +++ b/api-ref/source/networking/v2/samples/flavors/flavor-associate-request.json @@ -0,0 +1,5 @@ +{ + "service_profile": { + "id": "4e5b9191-ffbe-4f7a-b112-2db98232fd32" + } +} diff --git a/api-ref/source/networking/v2/samples/flavors/flavor-associate-response.json b/api-ref/source/networking/v2/samples/flavors/flavor-associate-response.json new file mode 100644 index 000000000..29685d7a9 --- /dev/null +++ b/api-ref/source/networking/v2/samples/flavors/flavor-associate-response.json @@ -0,0 +1,5 @@ +{ + "service_profile": { + "id": "7fc0581b-4509-49e1-90eb-c953c877fa4c" + } +} diff --git a/api-ref/source/networking/v2/samples/flavors/flavor-create-request.json b/api-ref/source/networking/v2/samples/flavors/flavor-create-request.json new file mode 100644 index 000000000..859c94526 --- /dev/null +++ b/api-ref/source/networking/v2/samples/flavors/flavor-create-request.json @@ -0,0 +1,8 @@ +{ + "flavor": { + "service_type": "LOADBALANCERV2", + "enabled": true, + "name": "dummy", + "description": "Dummy flavor" + } +} diff --git a/api-ref/source/networking/v2/samples/flavors/flavor-create-response.json b/api-ref/source/networking/v2/samples/flavors/flavor-create-response.json new file mode 100644 index 000000000..dac6fcc0b --- /dev/null +++ b/api-ref/source/networking/v2/samples/flavors/flavor-create-response.json @@ -0,0 +1,10 @@ +{ + "flavor": { + "id": "7fc0581b-4509-49e1-90eb-c953c877fa4c", + "name": "dummy", + "service_type": "LOADBALANCERV2", + "description": "Dummy flavor", + "enabled": true, + "service_profiles": [] + } +} diff --git a/api-ref/source/networking/v2/samples/flavors/flavor-show-response.json b/api-ref/source/networking/v2/samples/flavors/flavor-show-response.json new file mode 100644 index 000000000..176bc7824 --- /dev/null +++ b/api-ref/source/networking/v2/samples/flavors/flavor-show-response.json @@ -0,0 +1,10 @@ +{ + "flavor": { + "description": "", + "enabled": true, + "service_profiles": [], + "service_type": "LOADBALANCERV2", + "id": "f7b14d9a-b0dc-4fbe-bb14-a0f4970a69e0", + "name": "dummy" + } +} diff --git a/api-ref/source/networking/v2/samples/flavors/flavor-update-request.json b/api-ref/source/networking/v2/samples/flavors/flavor-update-request.json new file mode 100644 index 000000000..76b56e74d --- /dev/null +++ b/api-ref/source/networking/v2/samples/flavors/flavor-update-request.json @@ -0,0 +1,7 @@ +{ + "flavor": { + "enabled": false, + "name": "newname", + "description": "New description" + } +} diff --git a/api-ref/source/networking/v2/samples/flavors/flavor-update-response.json b/api-ref/source/networking/v2/samples/flavors/flavor-update-response.json new file mode 100644 index 000000000..52f7814aa --- /dev/null +++ b/api-ref/source/networking/v2/samples/flavors/flavor-update-response.json @@ -0,0 +1,10 @@ +{ + "flavor": { + "description": "New description", + "enabled": false, + "service_profiles": [], + "service_type": "LOADBALANCERV2", + "id": "7fc0581b-4509-49e1-90eb-c953c877fa4c", + "name": "newname" + } +} diff --git a/api-ref/source/networking/v2/samples/flavors/flavors-list-response.json b/api-ref/source/networking/v2/samples/flavors/flavors-list-response.json new file mode 100644 index 000000000..3b2474d2f --- /dev/null +++ b/api-ref/source/networking/v2/samples/flavors/flavors-list-response.json @@ -0,0 +1,12 @@ +{ + "flavors": [ + { + "description": "", + "enabled": true, + "service_profiles": [], + "service_type": "LOADBALANCERV2", + "id": "f7b14d9a-b0dc-4fbe-bb14-a0f4970a69e0", + "name": "dummy" + } + ] +} diff --git a/api-ref/source/networking/v2/samples/flavors/service-profile-create-request.json b/api-ref/source/networking/v2/samples/flavors/service-profile-create-request.json new file mode 100644 index 000000000..aba70f34a --- /dev/null +++ b/api-ref/source/networking/v2/samples/flavors/service-profile-create-request.json @@ -0,0 +1,8 @@ +{ + "service_profile": { + "enabled": "true", + "driver": "neutron_lbaas.drivers.octavia.driver.OctaviaDriver", + "description": "Dummy profile", + "metainfo": "{'foo': 'bar'}" + } +} diff --git a/api-ref/source/networking/v2/samples/flavors/service-profile-create-response.json b/api-ref/source/networking/v2/samples/flavors/service-profile-create-response.json new file mode 100644 index 000000000..1556d72fa --- /dev/null +++ b/api-ref/source/networking/v2/samples/flavors/service-profile-create-response.json @@ -0,0 +1,9 @@ +{ + "service_profile": { + "enabled": true, + "metainfo": "{'foo': 'bar'}", + "driver": "neutron_lbaas.drivers.octavia.driver.OctaviaDriver", + "id": "7c793e5f-9b64-44e0-8b1f-902e59c85a01", + "description": "Dummy profile" + } +} diff --git a/api-ref/source/networking/v2/samples/flavors/service-profile-show-response.json b/api-ref/source/networking/v2/samples/flavors/service-profile-show-response.json new file mode 100644 index 000000000..1556d72fa --- /dev/null +++ b/api-ref/source/networking/v2/samples/flavors/service-profile-show-response.json @@ -0,0 +1,9 @@ +{ + "service_profile": { + "enabled": true, + "metainfo": "{'foo': 'bar'}", + "driver": "neutron_lbaas.drivers.octavia.driver.OctaviaDriver", + "id": "7c793e5f-9b64-44e0-8b1f-902e59c85a01", + "description": "Dummy profile" + } +} diff --git a/api-ref/source/networking/v2/samples/flavors/service-profile-update-request.json b/api-ref/source/networking/v2/samples/flavors/service-profile-update-request.json new file mode 100644 index 000000000..f41101f43 --- /dev/null +++ b/api-ref/source/networking/v2/samples/flavors/service-profile-update-request.json @@ -0,0 +1,8 @@ +{ + "service_profile": { + "enabled": false, + "driver": "neutron_lbaas.drivers.octavia.driver.OctaviaDriver", + "description": "New description", + "metainfo": "{'new': 'info'}" + } +} diff --git a/api-ref/source/networking/v2/samples/flavors/service-profile-update-response.json b/api-ref/source/networking/v2/samples/flavors/service-profile-update-response.json new file mode 100644 index 000000000..3090089c9 --- /dev/null +++ b/api-ref/source/networking/v2/samples/flavors/service-profile-update-response.json @@ -0,0 +1,9 @@ +{ + "service_profile": { + "enabled": false, + "metainfo": "{'new': 'info'}", + "driver": "neutron_lbaas.drivers.octavia.driver.OctaviaDriver", + "id": "7c793e5f-9b64-44e0-8b1f-902e59c85a01", + "description": "New description" + } +} diff --git a/api-ref/source/networking/v2/samples/flavors/service-profiles-list-response.json b/api-ref/source/networking/v2/samples/flavors/service-profiles-list-response.json new file mode 100644 index 000000000..e05cfbe1f --- /dev/null +++ b/api-ref/source/networking/v2/samples/flavors/service-profiles-list-response.json @@ -0,0 +1,18 @@ +{ + "service_profiles": [ + { + "id": "4e5b9191-ffbe-4f7a-b112-2db98232fd32", + "enabled": true, + "driver": "neutron_lbaas.drivers.octavia.driver.OctaviaDriver", + "description": "", + "metainfo": "" + }, + { + "id": "684322c5-703a-48a2-8138-34b99942a7ef", + "enabled": true, + "driver": "neutron_lbaas.drivers.octavia.driver.OctaviaDriver", + "description": "", + "metainfo": "" + } + ] +} diff --git a/api-ref/source/networking/v2/samples/lbaas/healthmonitor-associate-request.json b/api-ref/source/networking/v2/samples/lbaas/healthmonitor-associate-request.json new file mode 100644 index 000000000..9fe528a80 --- /dev/null +++ b/api-ref/source/networking/v2/samples/lbaas/healthmonitor-associate-request.json @@ -0,0 +1,5 @@ +{ + "health_monitor": { + "id": "b624decf-d5d3-4c66-9a3d-f047e7786181" + } +} diff --git a/api-ref/source/networking/v2/samples/lbaas/healthmonitor-associate-response.json b/api-ref/source/networking/v2/samples/lbaas/healthmonitor-associate-response.json new file mode 100644 index 000000000..b70e51138 --- /dev/null +++ b/api-ref/source/networking/v2/samples/lbaas/healthmonitor-associate-response.json @@ -0,0 +1,3 @@ +{ + "health_monitor": {} +} diff --git a/api-ref/source/networking/v2/samples/lbaas/healthmonitor-create-request.json b/api-ref/source/networking/v2/samples/lbaas/healthmonitor-create-request.json new file mode 100644 index 000000000..859efa2da --- /dev/null +++ b/api-ref/source/networking/v2/samples/lbaas/healthmonitor-create-request.json @@ -0,0 +1,12 @@ +{ + "health_monitor": { + "admin_state_up": true, + "delay": "1", + "expected_codes": "200,201,202", + "http_method": "GET", + "max_retries": 5, + "timeout": 1, + "type": "HTTP", + "url_path": "/index.html" + } +} diff --git a/api-ref/source/networking/v2/samples/lbaas/healthmonitor-create-response.json b/api-ref/source/networking/v2/samples/lbaas/healthmonitor-create-response.json new file mode 100644 index 000000000..a9a50eb79 --- /dev/null +++ b/api-ref/source/networking/v2/samples/lbaas/healthmonitor-create-response.json @@ -0,0 +1,15 @@ +{ + "health_monitor": { + "admin_state_up": true, + "tenant_id": "eabfefa3fd1740a88a47ad98e132d238", + "delay": 1, + "expected_codes": "200,201,202", + "max_retries": 5, + "http_method": "GET", + "timeout": 1, + "pools": [], + "url_path": "/index.html", + "type": "HTTP", + "id": "b7633ade-24dc-4d72-8475-06aa22be5412" + } +} diff --git a/api-ref/source/networking/v2/samples/lbaas/healthmonitor-show-response.json b/api-ref/source/networking/v2/samples/lbaas/healthmonitor-show-response.json new file mode 100644 index 000000000..f9acfa051 --- /dev/null +++ b/api-ref/source/networking/v2/samples/lbaas/healthmonitor-show-response.json @@ -0,0 +1,21 @@ +{ + "health_monitor": { + "admin_state_up": true, + "tenant_id": "eabfefa3fd1740a88a47ad98e132d238", + "delay": 1, + "expected_codes": "200,201,202", + "max_retries": 5, + "http_method": "GET", + "timeout": 1, + "pools": [ + { + "status": "ACTIVE", + "status_description": null, + "pool_id": "5a9a3e9e-d1aa-448e-af37-a70171f2a332" + } + ], + "url_path": "/index.html", + "type": "HTTP", + "id": "b7633ade-24dc-4d72-8475-06aa22be5412" + } +} diff --git a/api-ref/source/networking/v2/samples/lbaas/healthmonitor-update-request.json b/api-ref/source/networking/v2/samples/lbaas/healthmonitor-update-request.json new file mode 100644 index 000000000..5cfb5363d --- /dev/null +++ b/api-ref/source/networking/v2/samples/lbaas/healthmonitor-update-request.json @@ -0,0 +1,11 @@ +{ + "health_monitor": { + "admin_state_up": false, + "delay": "2", + "expected_codes": "200", + "http_method": "POST", + "max_retries": 2, + "timeout": 2, + "url_path": "/page.html" + } +} diff --git a/api-ref/source/networking/v2/samples/lbaas/healthmonitor-update-response.json b/api-ref/source/networking/v2/samples/lbaas/healthmonitor-update-response.json new file mode 100644 index 000000000..bbc4ac17d --- /dev/null +++ b/api-ref/source/networking/v2/samples/lbaas/healthmonitor-update-response.json @@ -0,0 +1,21 @@ +{ + "health_monitor": { + "admin_state_up": false, + "tenant_id": "eabfefa3fd1740a88a47ad98e132d238", + "delay": 2, + "expected_codes": "200", + "max_retries": 2, + "http_method": "POST", + "timeout": 2, + "pools": [ + { + "status": "ACTIVE", + "status_description": null, + "pool_id": "5a9a3e9e-d1aa-448e-af37-a70171f2a332" + } + ], + "url_path": "/page.html", + "type": "HTTP", + "id": "b7633ade-24dc-4d72-8475-06aa22be5412" + } +} diff --git a/api-ref/source/networking/v2/samples/lbaas/healthmonitors-list-response.json b/api-ref/source/networking/v2/samples/lbaas/healthmonitors-list-response.json new file mode 100644 index 000000000..94ce2f9ff --- /dev/null +++ b/api-ref/source/networking/v2/samples/lbaas/healthmonitors-list-response.json @@ -0,0 +1,23 @@ +{ + "health_monitors": [ + { + "admin_state_up": true, + "tenant_id": "eabfefa3fd1740a88a47ad98e132d238", + "delay": 1, + "expected_codes": "200,201,202", + "max_retries": 5, + "http_method": "GET", + "timeout": 1, + "pools": [ + { + "status": "ACTIVE", + "status_description": null, + "pool_id": "5a9a3e9e-d1aa-448e-af37-a70171f2a332" + } + ], + "url_path": "/index.html", + "type": "HTTP", + "id": "b7633ade-24dc-4d72-8475-06aa22be5412" + } + ] +} diff --git a/api-ref/source/networking/v2/samples/lbaas/listener-create-request.json b/api-ref/source/networking/v2/samples/lbaas/listener-create-request.json new file mode 100644 index 000000000..bcfe9922e --- /dev/null +++ b/api-ref/source/networking/v2/samples/lbaas/listener-create-request.json @@ -0,0 +1,16 @@ +{ + "listener": { + "admin_state_up": true, + "connection_limit": 100, + "description": "listener one", + "loadbalancer_id": "a36c20d0-18e9-42ce-88fd-82a35977ee8c", + "name": "listener1", + "protocol": "HTTP", + "protocol_port": "80", + "default_tls_container_ref": "https://barbican.endpoint/containers/a36c20d0-18e9-42ce-88fd-82a35977ee8c", + "sni_container_refs": [ + "https://barbican.endpoint/containers/b36c20d0-18e9-42ce-88fd-82a35977ee8d", + "https://barbican.endpoint/containers/c36c20d0-18e9-42ce-88fd-82a35977ee8e" + ] + } +} diff --git a/api-ref/source/networking/v2/samples/lbaas/listener-create-response.json b/api-ref/source/networking/v2/samples/lbaas/listener-create-response.json new file mode 100644 index 000000000..3da577d31 --- /dev/null +++ b/api-ref/source/networking/v2/samples/lbaas/listener-create-response.json @@ -0,0 +1,23 @@ +{ + "listener": { + "admin_state_up": true, + "connection_limit": 100, + "default_pool_id": null, + "description": "listener one", + "id": "39de4d56-d663-46e5-85a1-5b9d5fa17829", + "loadbalancers": [ + { + "id": "a36c20d0-18e9-42ce-88fd-82a35977ee8c" + } + ], + "name": "listener1", + "protocol": "HTTP", + "protocol_port": 80, + "tenant_id": "1a3e005cf9ce40308c900bcb08e5320c", + "default_tls_container_ref": "https://barbican.endpoint/containers/a36c20d0-18e9-42ce-88fd-82a35977ee8c", + "sni_container_refs": [ + "https://barbican.endpoint/containers/b36c20d0-18e9-42ce-88fd-82a35977ee8d", + "https://barbican.endpoint/containers/c36c20d0-18e9-42ce-88fd-82a35977ee8e" + ] + } +} diff --git a/api-ref/source/networking/v2/samples/lbaas/listener-show-response.json b/api-ref/source/networking/v2/samples/lbaas/listener-show-response.json new file mode 100644 index 000000000..5866d69b8 --- /dev/null +++ b/api-ref/source/networking/v2/samples/lbaas/listener-show-response.json @@ -0,0 +1,23 @@ +{ + "listener": { + "admin_state_up": true, + "connection_limit": 100, + "default_pool_id": null, + "description": "", + "id": "35cb8516-1173-4035-8dae-0dae3453f37f", + "loadbalancers": [ + { + "id": "a9729389-6147-41a3-ab22-a24aed8692b2" + } + ], + "name": "", + "protocol": "HTTP", + "protocol_port": 80, + "tenant_id": "3e4d8bec50a845fcb09e03a4375c691d", + "default_tls_container_ref": "https://barbican.endpoint/containers/a36c20d0-18e9-42ce-88fd-82a35977ee8c", + "sni_container_refs": [ + "https://barbican.endpoint/containers/b36c20d0-18e9-42ce-88fd-82a35977ee8d", + "https://barbican.endpoint/containers/c36c20d0-18e9-42ce-88fd-82a35977ee8e" + ] + } +} diff --git a/api-ref/source/networking/v2/samples/lbaas/listener-update-request.json b/api-ref/source/networking/v2/samples/lbaas/listener-update-request.json new file mode 100644 index 000000000..aeb8120ce --- /dev/null +++ b/api-ref/source/networking/v2/samples/lbaas/listener-update-request.json @@ -0,0 +1,13 @@ +{ + "listener": { + "admin_state_up": false, + "connection_limit": 200, + "description": "listener two", + "name": "listener2", + "default_tls_container_ref": "https://barbican.endpoint/containers/a36c20d0-18e9-42ce-88fd-82a35977ee8c", + "sni_container_refs": [ + "https://barbican.endpoint/containers/b36c20d0-18e9-42ce-88fd-82a35977ee8d", + "https://barbican.endpoint/containers/c36c20d0-18e9-42ce-88fd-82a35977ee8e" + ] + } +} diff --git a/api-ref/source/networking/v2/samples/lbaas/listener-update-response.json b/api-ref/source/networking/v2/samples/lbaas/listener-update-response.json new file mode 100644 index 000000000..a73fa28e0 --- /dev/null +++ b/api-ref/source/networking/v2/samples/lbaas/listener-update-response.json @@ -0,0 +1,23 @@ +{ + "listener": { + "admin_state_up": false, + "connection_limit": 200, + "default_pool_id": null, + "description": "listener two", + "id": "39de4d56-d663-46e5-85a1-5b9d5fa17829", + "loadbalancers": [ + { + "id": "a36c20d0-18e9-42ce-88fd-82a35977ee8c" + } + ], + "name": "listener2", + "protocol": "HTTP", + "protocol_port": 80, + "tenant_id": "1a3e005cf9ce40308c900bcb08e5320c", + "default_tls_container_ref": "https://barbican.endpoint/containers/a36c20d0-18e9-42ce-88fd-82a35977ee8c", + "sni_container_refs": [ + "https://barbican.endpoint/containers/b36c20d0-18e9-42ce-88fd-82a35977ee8d", + "https://barbican.endpoint/containers/c36c20d0-18e9-42ce-88fd-82a35977ee8e" + ] + } +} diff --git a/api-ref/source/networking/v2/samples/lbaas/listeners-list-response.json b/api-ref/source/networking/v2/samples/lbaas/listeners-list-response.json new file mode 100644 index 000000000..dbbe49f4a --- /dev/null +++ b/api-ref/source/networking/v2/samples/lbaas/listeners-list-response.json @@ -0,0 +1,25 @@ +{ + "listeners": [ + { + "admin_state_up": true, + "connection_limit": 100, + "default_pool_id": null, + "description": "", + "id": "35cb8516-1173-4035-8dae-0dae3453f37f", + "loadbalancers": [ + { + "id": "a9729389-6147-41a3-ab22-a24aed8692b2" + } + ], + "name": "", + "protocol": "HTTP", + "protocol_port": 80, + "tenant_id": "3e4d8bec50a845fcb09e03a4375c691d", + "default_tls_container_ref": "https://barbican.endpoint/containers/a36c20d0-18e9-42ce-88fd-82a35977ee8c", + "sni_container_refs": [ + "https://barbican.endpoint/containers/b36c20d0-18e9-42ce-88fd-82a35977ee8d", + "https://barbican.endpoint/containers/c36c20d0-18e9-42ce-88fd-82a35977ee8e" + ] + } + ] +} diff --git a/api-ref/source/networking/v2/samples/lbaas/loadbalancer-create-request.json b/api-ref/source/networking/v2/samples/lbaas/loadbalancer-create-request.json new file mode 100644 index 000000000..1f776e450 --- /dev/null +++ b/api-ref/source/networking/v2/samples/lbaas/loadbalancer-create-request.json @@ -0,0 +1,11 @@ +{ + "loadbalancer": { + "name": "loadbalancer1", + "description": "simple lb", + "tenant_id": "b7c1a69e88bf4b21a8148f787aef2081", + "vip_subnet_id": "013d3059-87a4-45a5-91e9-d721068ae0b2", + "vip_address": "10.0.0.4", + "admin_state_up": true, + "flavor": "a7ae5d5a-d855-4f9a-b187-af66b53f4d04" + } +} diff --git a/api-ref/source/networking/v2/samples/lbaas/loadbalancer-create-response.json b/api-ref/source/networking/v2/samples/lbaas/loadbalancer-create-response.json new file mode 100644 index 000000000..a7497cbd3 --- /dev/null +++ b/api-ref/source/networking/v2/samples/lbaas/loadbalancer-create-response.json @@ -0,0 +1,16 @@ +{ + "loadbalancer": { + "admin_state_up": true, + "description": "simple lb", + "id": "a36c20d0-18e9-42ce-88fd-82a35977ee8c", + "listeners": [], + "name": "loadbalancer1", + "operating_status": "ONLINE", + "provisioning_status": "ACTIVE", + "tenant_id": "b7c1a69e88bf4b21a8148f787aef2081", + "vip_address": "10.0.0.4", + "vip_subnet_id": "013d3059-87a4-45a5-91e9-d721068ae0b2", + "flavor": "a7ae5d5a-d855-4f9a-b187-af66b53f4d04", + "provider": "sample_provider" + } +} diff --git a/api-ref/source/networking/v2/samples/lbaas/loadbalancer-delete-response.json b/api-ref/source/networking/v2/samples/lbaas/loadbalancer-delete-response.json new file mode 100644 index 000000000..9f8f3439c --- /dev/null +++ b/api-ref/source/networking/v2/samples/lbaas/loadbalancer-delete-response.json @@ -0,0 +1,8 @@ +{ + "loadbalancer": { + "active_connections": 0, + "total_connections": 0, + "bytes_in": 0, + "bytes_out": 0 + } +} diff --git a/api-ref/source/networking/v2/samples/lbaas/loadbalancer-show-response.json b/api-ref/source/networking/v2/samples/lbaas/loadbalancer-show-response.json new file mode 100644 index 000000000..584f94899 --- /dev/null +++ b/api-ref/source/networking/v2/samples/lbaas/loadbalancer-show-response.json @@ -0,0 +1,14 @@ +{ + "loadbalancer": { + "description": "simple lb", + "admin_state_up": true, + "tenant_id": "1a3e005cf9ce40308c900bcb08e5320c", + "provisioning_status": "ACTIVE", + "listeners": [], + "vip_address": "10.0.0.2", + "vip_subnet_id": "013d3059-87a4-45a5-91e9-d721068ae0b2", + "id": "a9729389-6147-41a3-ab22-a24aed8692b2", + "operating_status": "ONLINE", + "name": "loadbalancer1" + } +} diff --git a/api-ref/source/networking/v2/samples/lbaas/loadbalancer-status-tree.json b/api-ref/source/networking/v2/samples/lbaas/loadbalancer-status-tree.json new file mode 100644 index 000000000..19535ab69 --- /dev/null +++ b/api-ref/source/networking/v2/samples/lbaas/loadbalancer-status-tree.json @@ -0,0 +1,47 @@ +{ + "statuses": { + "loadbalancer": { + "name": "lb1", + "listeners": [ + { + "pools": [ + { + "name": "pool1", + "provisioning_status": "ACTIVE", + "health_monitor": { + "type": "HTTP", + "id": "90f7c765-0bc9-47c4-8513-4cc0c264c8f8", + "provisioning_status": "ACTIVE" + }, + "members": [ + { + "address": "10.0.0.4", + "protocol_port": 80, + "id": "32723bee-2484-4de3-b6fc-c0b98d35fc84", + "operating_status": "ONLINE", + "provisioning_status": "ACTIVE" + }, + { + "address": "10.0.0.3", + "protocol_port": 80, + "id": "173b8164-0c9a-43ec-ab33-4ae0e7a8f863", + "operating_status": "ONLINE", + "provisioning_status": "ACTIVE" + } + ], + "id": "ae6f93b8-a3f6-46cd-bb18-c2ab0308abf7", + "operating_status": "ONLINE" + } + ], + "name": "listener1", + "id": "c2a41fbe-b70a-4645-bb11-4d3c28f23a25", + "operating_status": "ONLINE", + "provisioning_status": "ACTIVE" + } + ], + "id": "a4c19566-6f81-4c96-ac11-33954a9825a2", + "operating_status": "ONLINE", + "provisioning_status": "ACTIVE" + } + } +} diff --git a/api-ref/source/networking/v2/samples/lbaas/loadbalancer-update-request.json b/api-ref/source/networking/v2/samples/lbaas/loadbalancer-update-request.json new file mode 100644 index 000000000..a927251eb --- /dev/null +++ b/api-ref/source/networking/v2/samples/lbaas/loadbalancer-update-request.json @@ -0,0 +1,7 @@ +{ + "loadbalancer": { + "admin_state_up": false, + "description": "simple lb2", + "name": "loadbalancer2" + } +} diff --git a/api-ref/source/networking/v2/samples/lbaas/loadbalancer-update-response.json b/api-ref/source/networking/v2/samples/lbaas/loadbalancer-update-response.json new file mode 100644 index 000000000..ae01146be --- /dev/null +++ b/api-ref/source/networking/v2/samples/lbaas/loadbalancer-update-response.json @@ -0,0 +1,14 @@ +{ + "loadbalancer": { + "admin_state_up": false, + "description": "simple lb2", + "id": "a36c20d0-18e9-42ce-88fd-82a35977ee8c", + "listeners": [], + "name": "loadbalancer2", + "operating_status": "ONLINE", + "provisioning_status": "PENDING_UPDATE", + "tenant_id": "b7c1a69e88bf4b21a8148f787aef2081", + "vip_address": "10.0.0.4", + "vip_subnet_id": "013d3059-87a4-45a5-91e9-d721068ae0b2" + } +} diff --git a/api-ref/source/networking/v2/samples/lbaas/loadbalancer-update-response.txt b/api-ref/source/networking/v2/samples/lbaas/loadbalancer-update-response.txt new file mode 100644 index 000000000..314e15b36 --- /dev/null +++ b/api-ref/source/networking/v2/samples/lbaas/loadbalancer-update-response.txt @@ -0,0 +1,4 @@ +#!wiki caution +Note + +A Load Balancer that is does not have a provisioning_status of ACTIVE cannot be updated. diff --git a/api-ref/source/networking/v2/samples/lbaas/loadbalancers-list-response.json b/api-ref/source/networking/v2/samples/lbaas/loadbalancers-list-response.json new file mode 100644 index 000000000..d96cfd8be --- /dev/null +++ b/api-ref/source/networking/v2/samples/lbaas/loadbalancers-list-response.json @@ -0,0 +1,16 @@ +{ + "loadbalancers": [ + { + "description": "simple lb", + "admin_state_up": true, + "tenant_id": "1a3e005cf9ce40308c900bcb08e5320c", + "provisioning_status": "ACTIVE", + "listeners": [], + "vip_address": "10.0.0.2", + "vip_subnet_id": "013d3059-87a4-45a5-91e9-d721068ae0b2", + "id": "a9729389-6147-41a3-ab22-a24aed8692b2", + "operating_status": "ONLINE", + "name": "loadbalancer1" + } + ] +} diff --git a/api-ref/source/networking/v2/samples/lbaas/member-create-request.json b/api-ref/source/networking/v2/samples/lbaas/member-create-request.json new file mode 100644 index 000000000..c04504910 --- /dev/null +++ b/api-ref/source/networking/v2/samples/lbaas/member-create-request.json @@ -0,0 +1,9 @@ +{ + "member": { + "address": "10.0.0.22", + "admin_state_up": true, + "protocol_port": "90", + "pool_id": "5a9a3e9e-d1aa-448e-af37-a70171f2a332", + "weight": "1" + } +} diff --git a/api-ref/source/networking/v2/samples/lbaas/member-create-response.json b/api-ref/source/networking/v2/samples/lbaas/member-create-response.json new file mode 100644 index 000000000..f26b4dcd3 --- /dev/null +++ b/api-ref/source/networking/v2/samples/lbaas/member-create-response.json @@ -0,0 +1,13 @@ +{ + "member": { + "admin_state_up": true, + "status": "PENDING_CREATE", + "status_description": null, + "weight": 1, + "address": "10.0.1.22", + "tenant_id": "eabfefa3fd1740a88a47ad98e132d238", + "protocol_port": 90, + "id": "cf024846-7516-4e3a-b0fb-6590322c836f", + "pool_id": "5a9a3e9e-d1aa-448e-af37-a70171f2a332" + } +} diff --git a/api-ref/source/networking/v2/samples/lbaas/member-show-response.json b/api-ref/source/networking/v2/samples/lbaas/member-show-response.json new file mode 100644 index 000000000..1ec3afee9 --- /dev/null +++ b/api-ref/source/networking/v2/samples/lbaas/member-show-response.json @@ -0,0 +1,13 @@ +{ + "member": { + "admin_state_up": true, + "status": "ACTIVE", + "status_description": null, + "weight": 1, + "address": "10.0.1.22", + "tenant_id": "eabfefa3fd1740a88a47ad98e132d238", + "protocol_port": 90, + "id": "cf024846-7516-4e3a-b0fb-6590322c836f", + "pool_id": "5a9a3e9e-d1aa-448e-af37-a70171f2a332" + } +} diff --git a/api-ref/source/networking/v2/samples/lbaas/member-update-request.json b/api-ref/source/networking/v2/samples/lbaas/member-update-request.json new file mode 100644 index 000000000..b5bf2c877 --- /dev/null +++ b/api-ref/source/networking/v2/samples/lbaas/member-update-request.json @@ -0,0 +1,5 @@ +{ + "member": { + "weight": 5 + } +} diff --git a/api-ref/source/networking/v2/samples/lbaas/member-update-response.json b/api-ref/source/networking/v2/samples/lbaas/member-update-response.json new file mode 100644 index 000000000..2dced7241 --- /dev/null +++ b/api-ref/source/networking/v2/samples/lbaas/member-update-response.json @@ -0,0 +1,13 @@ +{ + "member": { + "admin_state_up": true, + "status": "PENDING_UPDATE", + "status_description": null, + "weight": 5, + "address": "10.0.1.22", + "tenant_id": "eabfefa3fd1740a88a47ad98e132d238", + "protocol_port": 90, + "id": "cf024846-7516-4e3a-b0fb-6590322c836f", + "pool_id": "5a9a3e9e-d1aa-448e-af37-a70171f2a332" + } +} diff --git a/api-ref/source/networking/v2/samples/lbaas/members-list-response.json b/api-ref/source/networking/v2/samples/lbaas/members-list-response.json new file mode 100644 index 000000000..62484c8c1 --- /dev/null +++ b/api-ref/source/networking/v2/samples/lbaas/members-list-response.json @@ -0,0 +1,15 @@ +{ + "members": [ + { + "admin_state_up": true, + "status": "ACTIVE", + "status_description": null, + "weight": 1, + "address": "10.0.1.22", + "tenant_id": "eabfefa3fd1740a88a47ad98e132d238", + "protocol_port": 90, + "id": "cf024846-7516-4e3a-b0fb-6590322c836f", + "pool_id": "5a9a3e9e-d1aa-448e-af37-a70171f2a332" + } + ] +} diff --git a/api-ref/source/networking/v2/samples/lbaas/pool-create-request.json b/api-ref/source/networking/v2/samples/lbaas/pool-create-request.json new file mode 100644 index 000000000..7797cd1b6 --- /dev/null +++ b/api-ref/source/networking/v2/samples/lbaas/pool-create-request.json @@ -0,0 +1,10 @@ +{ + "pool": { + "admin_state_up": true, + "description": "simple pool", + "lb_algorithm": "ROUND_ROBIN", + "name": "my-pool", + "protocol": "HTTP", + "subnet_id": "e301aed0-d9e7-498a-977c-1bbfaf14ed5d" + } +} diff --git a/api-ref/source/networking/v2/samples/lbaas/pool-create-response.json b/api-ref/source/networking/v2/samples/lbaas/pool-create-response.json new file mode 100644 index 000000000..722657dfd --- /dev/null +++ b/api-ref/source/networking/v2/samples/lbaas/pool-create-response.json @@ -0,0 +1,19 @@ +{ + "pool": { + "status": "PENDING_CREATE", + "lb_algorithm": "ROUND_ROBIN", + "protocol": "HTTP", + "description": "simple pool", + "health_monitors": [], + "members": [], + "status_description": null, + "id": "af95e0ce-8a26-4f29-9524-db41e7769c73", + "vip_id": null, + "name": "my-pool", + "admin_state_up": true, + "subnet_id": "e301aed0-d9e7-498a-977c-1bbfaf14ed5d", + "tenant_id": "eabfefa3fd1740a88a47ad98e132d238", + "health_monitors_status": [], + "provider": "haproxy" + } +} diff --git a/api-ref/source/networking/v2/samples/lbaas/pool-list-resp.json b/api-ref/source/networking/v2/samples/lbaas/pool-list-resp.json new file mode 100644 index 000000000..b8bf9d00a --- /dev/null +++ b/api-ref/source/networking/v2/samples/lbaas/pool-list-resp.json @@ -0,0 +1,20 @@ +{ + "pools": [ + { + "admin_state_up": true, + "description": "simple pool", + "healthmonitor_id": null, + "id": "4c0a0a5f-cf8f-44b7-b912-957daa8ce5e5", + "lb_algorithm": "ROUND_ROBIN", + "listeners": [ + { + "id": "35cb8516-1173-4035-8dae-0dae3453f37f" + } + ], + "members": [], + "name": "pool1", + "protocol": "HTTP", + "tenant_id": "1a3e005cf9ce40308c900bcb08e5320c" + } + ] +} diff --git a/api-ref/source/networking/v2/samples/lbaas/pool-members-list-response.json b/api-ref/source/networking/v2/samples/lbaas/pool-members-list-response.json new file mode 100644 index 000000000..3e97d9d00 --- /dev/null +++ b/api-ref/source/networking/v2/samples/lbaas/pool-members-list-response.json @@ -0,0 +1,13 @@ +{ + "members": [ + { + "address": "10.0.0.8", + "admin_state_up": true, + "id": "9a7aff27-fd41-4ec1-ba4c-3eb92c629313", + "protocol_port": 80, + "subnet_id": "013d3059-87a4-45a5-91e9-d721068ae0b2", + "tenant_id": "1a3e005cf9ce40308c900bcb08e5320c", + "weight": 1 + } + ] +} diff --git a/api-ref/source/networking/v2/samples/lbaas/pool-show-response.json b/api-ref/source/networking/v2/samples/lbaas/pool-show-response.json new file mode 100644 index 000000000..2756ff2a4 --- /dev/null +++ b/api-ref/source/networking/v2/samples/lbaas/pool-show-response.json @@ -0,0 +1,29 @@ +{ + "pool": { + "status": "ACTIVE", + "lb_algorithm": "ROUND_ROBIN", + "protocol": "HTTP", + "description": "", + "health_monitors": [ + "b7633ade-24dc-4d72-8475-06aa22be5412" + ], + "members": [ + "cf024846-7516-4e3a-b0fb-6590322c836f" + ], + "status_description": null, + "id": "5a9a3e9e-d1aa-448e-af37-a70171f2a332", + "vip_id": "388c739a-6a57-4e74-bc7b-a5cd60248bba", + "name": "pool1", + "admin_state_up": true, + "subnet_id": "aa547115-d710-4d6d-bb2c-b038d9c2704b", + "tenant_id": "eabfefa3fd1740a88a47ad98e132d238", + "health_monitors_status": [ + { + "monitor_id": "b7633ade-24dc-4d72-8475-06aa22be5412", + "status": "ACTIVE", + "status_description": null + } + ], + "provider": "haproxy" + } +} diff --git a/api-ref/source/networking/v2/samples/lbaas/pool-update-request.json b/api-ref/source/networking/v2/samples/lbaas/pool-update-request.json new file mode 100644 index 000000000..d523eeabb --- /dev/null +++ b/api-ref/source/networking/v2/samples/lbaas/pool-update-request.json @@ -0,0 +1,5 @@ +{ + "pool": { + "name": "SuperPool" + } +} diff --git a/api-ref/source/networking/v2/samples/lbaas/pool-update-response.json b/api-ref/source/networking/v2/samples/lbaas/pool-update-response.json new file mode 100644 index 000000000..0ba4ae477 --- /dev/null +++ b/api-ref/source/networking/v2/samples/lbaas/pool-update-response.json @@ -0,0 +1,29 @@ +{ + "pool": { + "status": "PENDING_UPDATE", + "lb_algorithm": "ROUND_ROBIN", + "protocol": "HTTP", + "description": "", + "health_monitors": [ + "b7633ade-24dc-4d72-8475-06aa22be5412" + ], + "members": [ + "cf024846-7516-4e3a-b0fb-6590322c836f" + ], + "status_description": null, + "id": "5a9a3e9e-d1aa-448e-af37-a70171f2a332", + "vip_id": "388c739a-6a57-4e74-bc7b-a5cd60248bba", + "name": "SuperPool", + "admin_state_up": true, + "subnet_id": "aa547115-d710-4d6d-bb2c-b038d9c2704b", + "tenant_id": "eabfefa3fd1740a88a47ad98e132d238", + "health_monitors_status": [ + { + "monitor_id": "b7633ade-24dc-4d72-8475-06aa22be5412", + "status": "ACTIVE", + "status_description": null + } + ], + "provider": "haproxy" + } +} diff --git a/api-ref/source/networking/v2/samples/lbaas/pools-list-response.json b/api-ref/source/networking/v2/samples/lbaas/pools-list-response.json new file mode 100644 index 000000000..bdd36ce3e --- /dev/null +++ b/api-ref/source/networking/v2/samples/lbaas/pools-list-response.json @@ -0,0 +1,31 @@ +{ + "pools": [ + { + "status": "ACTIVE", + "lb_algorithm": "ROUND_ROBIN", + "protocol": "HTTP", + "description": "", + "health_monitors": [ + "b7633ade-24dc-4d72-8475-06aa22be5412" + ], + "members": [ + "cf024846-7516-4e3a-b0fb-6590322c836f" + ], + "status_description": null, + "id": "5a9a3e9e-d1aa-448e-af37-a70171f2a332", + "vip_id": "388c739a-6a57-4e74-bc7b-a5cd60248bba", + "name": "pool1", + "admin_state_up": true, + "subnet_id": "aa547115-d710-4d6d-bb2c-b038d9c2704b", + "tenant_id": "eabfefa3fd1740a88a47ad98e132d238", + "health_monitors_status": [ + { + "monitor_id": "b7633ade-24dc-4d72-8475-06aa22be5412", + "status": "ACTIVE", + "status_description": null + } + ], + "provider": "haproxy" + } + ] +} diff --git a/api-ref/source/networking/v2/samples/lbaas/pools-list-response2.json b/api-ref/source/networking/v2/samples/lbaas/pools-list-response2.json new file mode 100644 index 000000000..b8bf9d00a --- /dev/null +++ b/api-ref/source/networking/v2/samples/lbaas/pools-list-response2.json @@ -0,0 +1,20 @@ +{ + "pools": [ + { + "admin_state_up": true, + "description": "simple pool", + "healthmonitor_id": null, + "id": "4c0a0a5f-cf8f-44b7-b912-957daa8ce5e5", + "lb_algorithm": "ROUND_ROBIN", + "listeners": [ + { + "id": "35cb8516-1173-4035-8dae-0dae3453f37f" + } + ], + "members": [], + "name": "pool1", + "protocol": "HTTP", + "tenant_id": "1a3e005cf9ce40308c900bcb08e5320c" + } + ] +} diff --git a/api-ref/source/networking/v2/samples/lbaas/vip-create-request.json b/api-ref/source/networking/v2/samples/lbaas/vip-create-request.json new file mode 100644 index 000000000..2dc444c0f --- /dev/null +++ b/api-ref/source/networking/v2/samples/lbaas/vip-create-request.json @@ -0,0 +1,10 @@ +{ + "vip": { + "protocol": "HTTP", + "name": "NewVip", + "admin_state_up": true, + "subnet_id": "0ba2ef27-0054-4b28-a8fa-f215e8079272", + "pool_id": "105320c3-8416-4997-9c1c-4098b95fdaca", + "protocol_port": "80" + } +} diff --git a/api-ref/source/networking/v2/samples/lbaas/vip-create-response.json b/api-ref/source/networking/v2/samples/lbaas/vip-create-response.json new file mode 100644 index 000000000..1e8c2e305 --- /dev/null +++ b/api-ref/source/networking/v2/samples/lbaas/vip-create-response.json @@ -0,0 +1,19 @@ +{ + "vip": { + "status": "PENDING_CREATE", + "protocol": "HTTP", + "description": "", + "address": "10.0.0.4", + "protocol_port": 80, + "port_id": "0ba4cd9c-edb4-4594-bac4-b68b49d5f04c", + "id": "fa0373e0-9dd4-4ff7-98fc-8cceca9bdb4e", + "status_description": null, + "name": "NewVip", + "admin_state_up": true, + "subnet_id": "0ba2ef27-0054-4b28-a8fa-f215e8079272", + "tenant_id": "e68c3e65e1f34ee9b2357d0fe418a78b", + "connection_limit": -1, + "pool_id": "105320c3-8416-4997-9c1c-4098b95fdaca", + "session_persistence": null + } +} diff --git a/api-ref/source/networking/v2/samples/lbaas/vip-show-response.json b/api-ref/source/networking/v2/samples/lbaas/vip-show-response.json new file mode 100644 index 000000000..57a49918c --- /dev/null +++ b/api-ref/source/networking/v2/samples/lbaas/vip-show-response.json @@ -0,0 +1,19 @@ +{ + "vip": { + "status": "ACTIVE", + "protocol": "HTTP", + "description": "", + "address": "10.0.0.4", + "protocol_port": 80, + "port_id": "5328aeea-2988-41c0-b5fe-0fd0660979d3", + "id": "388c739a-6a57-4e74-bc7b-a5cd60248bba", + "status_description": null, + "name": "my-Vip", + "admin_state_up": true, + "subnet_id": "aa547115-d710-4d6d-bb2c-b038d9c2704b", + "tenant_id": "eabfefa3fd1740a88a47ad98e132d238", + "connection_limit": -1, + "pool_id": "5a9a3e9e-d1aa-448e-af37-a70171f2a332", + "session_persistence": null + } +} diff --git a/api-ref/source/networking/v2/samples/lbaas/vip-update-request.json b/api-ref/source/networking/v2/samples/lbaas/vip-update-request.json new file mode 100644 index 000000000..a29693659 --- /dev/null +++ b/api-ref/source/networking/v2/samples/lbaas/vip-update-request.json @@ -0,0 +1,5 @@ +{ + "vip": { + "connection_limit": "1000" + } +} diff --git a/api-ref/source/networking/v2/samples/lbaas/vip-update-response.json b/api-ref/source/networking/v2/samples/lbaas/vip-update-response.json new file mode 100644 index 000000000..5bcd8397d --- /dev/null +++ b/api-ref/source/networking/v2/samples/lbaas/vip-update-response.json @@ -0,0 +1,19 @@ +{ + "vip": { + "status": "PENDING_UPDATE", + "protocol": "HTTP", + "description": "", + "address": "10.0.0.4", + "protocol_port": 80, + "port_id": "0ba4cd9c-edb4-4594-bac4-b68b49d5f04c", + "id": "fa0373e0-9dd4-4ff7-98fc-8cceca9bdb4e", + "status_description": null, + "name": "NewVip", + "admin_state_up": true, + "subnet_id": "0ba2ef27-0054-4b28-a8fa-f215e8079272", + "tenant_id": "e68c3e65e1f34ee9b2357d0fe418a78b", + "connection_limit": 1000, + "pool_id": "105320c3-8416-4997-9c1c-4098b95fdaca", + "session_persistence": null + } +} diff --git a/api-ref/source/networking/v2/samples/lbaas/vips-list-response.json b/api-ref/source/networking/v2/samples/lbaas/vips-list-response.json new file mode 100644 index 000000000..f98456045 --- /dev/null +++ b/api-ref/source/networking/v2/samples/lbaas/vips-list-response.json @@ -0,0 +1,21 @@ +{ + "vips": [ + { + "status": "ACTIVE", + "protocol": "HTTP", + "description": "", + "address": "10.0.0.4", + "protocol_port": 80, + "port_id": "5328aeea-2988-41c0-b5fe-0fd0660979d3", + "id": "388c739a-6a57-4e74-bc7b-a5cd60248bba", + "status_description": null, + "name": "my-Vip", + "admin_state_up": true, + "subnet_id": "aa547115-d710-4d6d-bb2c-b038d9c2704b", + "tenant_id": "eabfefa3fd1740a88a47ad98e132d238", + "connection_limit": -1, + "pool_id": "5a9a3e9e-d1aa-448e-af37-a70171f2a332", + "session_persistence": null + } + ] +} diff --git a/api-ref/source/networking/v2/samples/metering-labels/metering-label-create-request.json b/api-ref/source/networking/v2/samples/metering-labels/metering-label-create-request.json new file mode 100644 index 000000000..5bf6500fd --- /dev/null +++ b/api-ref/source/networking/v2/samples/metering-labels/metering-label-create-request.json @@ -0,0 +1,6 @@ +{ + "metering_label": { + "name": "label1", + "description": "description of label1" + } +} diff --git a/api-ref/source/networking/v2/samples/metering-labels/metering-label-create-response.json b/api-ref/source/networking/v2/samples/metering-labels/metering-label-create-response.json new file mode 100644 index 000000000..3a602338c --- /dev/null +++ b/api-ref/source/networking/v2/samples/metering-labels/metering-label-create-response.json @@ -0,0 +1,9 @@ +{ + "metering_label": { + "tenant_id": "45345b0ee1ea477fac0f541b2cb79cd4", + "description": "description of label1", + "name": "label1", + "id": "bc91b832-8465-40a7-a5d8-ba87de442266", + "shared": false + } +} diff --git a/api-ref/source/networking/v2/samples/metering-labels/metering-label-delete-request-json-http.txt b/api-ref/source/networking/v2/samples/metering-labels/metering-label-delete-request-json-http.txt new file mode 100644 index 000000000..48f76474d --- /dev/null +++ b/api-ref/source/networking/v2/samples/metering-labels/metering-label-delete-request-json-http.txt @@ -0,0 +1,6 @@ +DELETE /v2.0/metering/metering-labels/a6700594-5b7a-4105-8bfe-723b346ce866 HTTP/1.1 +Host: controlnode:9696 +User-Agent: python-neutronclient +Content-Type: application/json +Accept: application/json +X-Auth-Token: c52a1b304fec4ca0ac85dc1741eec6e2 diff --git a/api-ref/source/networking/v2/samples/metering-labels/metering-label-delete-response-json-http.txt b/api-ref/source/networking/v2/samples/metering-labels/metering-label-delete-response-json-http.txt new file mode 100644 index 000000000..bfbfad6ed --- /dev/null +++ b/api-ref/source/networking/v2/samples/metering-labels/metering-label-delete-response-json-http.txt @@ -0,0 +1 @@ +status: 204 diff --git a/api-ref/source/networking/v2/samples/metering-labels/metering-label-rule-create-request.json b/api-ref/source/networking/v2/samples/metering-labels/metering-label-rule-create-request.json new file mode 100644 index 000000000..cac374496 --- /dev/null +++ b/api-ref/source/networking/v2/samples/metering-labels/metering-label-rule-create-request.json @@ -0,0 +1,7 @@ +{ + "metering_label_rule": { + "remote_ip_prefix": "10.0.1.0/24", + "direction": "ingress", + "metering_label_id": "e131d186-b02d-4c0b-83d5-0c0725c4f812" + } +} diff --git a/api-ref/source/networking/v2/samples/metering-labels/metering-label-rule-create-response.json b/api-ref/source/networking/v2/samples/metering-labels/metering-label-rule-create-response.json new file mode 100644 index 000000000..364d102a0 --- /dev/null +++ b/api-ref/source/networking/v2/samples/metering-labels/metering-label-rule-create-response.json @@ -0,0 +1,9 @@ +{ + "metering_label_rule": { + "remote_ip_prefix": "10.0.1.0/24", + "direction": "ingress", + "metering_label_id": "e131d186-b02d-4c0b-83d5-0c0725c4f812", + "id": "00e13b58-b4f2-4579-9c9c-7ac94615f9ae", + "excluded": false + } +} diff --git a/api-ref/source/networking/v2/samples/metering-labels/metering-label-rule-delete-request-json-http.txt b/api-ref/source/networking/v2/samples/metering-labels/metering-label-rule-delete-request-json-http.txt new file mode 100644 index 000000000..3b74b68d8 --- /dev/null +++ b/api-ref/source/networking/v2/samples/metering-labels/metering-label-rule-delete-request-json-http.txt @@ -0,0 +1,6 @@ +DELETE /v2.0/metering/metering-labels/37b31179-71ee-4f0a-b130-0eeb28e7ede7 HTTP/1.1 +Host: controlnode:9696 +User-Agent: python-neutronclient +Content-Type: application/json +Accept: application/json +X-Auth-Token: c52a1b304fec4ca0ac85dc1741eec6e2 diff --git a/api-ref/source/networking/v2/samples/metering-labels/metering-label-rule-delete-response-json-http.txt b/api-ref/source/networking/v2/samples/metering-labels/metering-label-rule-delete-response-json-http.txt new file mode 100644 index 000000000..bfbfad6ed --- /dev/null +++ b/api-ref/source/networking/v2/samples/metering-labels/metering-label-rule-delete-response-json-http.txt @@ -0,0 +1 @@ +status: 204 diff --git a/api-ref/source/networking/v2/samples/metering-labels/metering-label-rule-show-request-json-http.txt b/api-ref/source/networking/v2/samples/metering-labels/metering-label-rule-show-request-json-http.txt new file mode 100644 index 000000000..0e3c1644f --- /dev/null +++ b/api-ref/source/networking/v2/samples/metering-labels/metering-label-rule-show-request-json-http.txt @@ -0,0 +1,6 @@ +GET /v2.0/metering/metering-label-rules/9536641a-7d14-4dc5-afaf-93a973ce0eb8 HTTP/1.1 +Host: controlnode:9696 +User-Agent: python-neutronclient +Content-Type: application/json +Accept: application/json +X-Auth-Token: c52a1b304fec4ca0ac85dc1741eec6e2 diff --git a/api-ref/source/networking/v2/samples/metering-labels/metering-label-rule-show-response.json b/api-ref/source/networking/v2/samples/metering-labels/metering-label-rule-show-response.json new file mode 100644 index 000000000..4b0c3bccc --- /dev/null +++ b/api-ref/source/networking/v2/samples/metering-labels/metering-label-rule-show-response.json @@ -0,0 +1,9 @@ +{ + "metering_label_rule": { + "remote_ip_prefix": "20.0.0.0/24", + "direction": "ingress", + "metering_label_id": "e131d186-b02d-4c0b-83d5-0c0725c4f812", + "id": "9536641a-7d14-4dc5-afaf-93a973ce0eb8", + "excluded": false + } +} diff --git a/api-ref/source/networking/v2/samples/metering-labels/metering-label-rules-list-request-json-http.txt b/api-ref/source/networking/v2/samples/metering-labels/metering-label-rules-list-request-json-http.txt new file mode 100644 index 000000000..354d8a561 --- /dev/null +++ b/api-ref/source/networking/v2/samples/metering-labels/metering-label-rules-list-request-json-http.txt @@ -0,0 +1,6 @@ +GET /v2.0/metering/metering-label-rules HTTP/1.1 +Host: controlnode:9696 +User-Agent: python-neutronclient +Content-Type: application/json +Accept: application/json +X-Auth-Token: c52a1b304fec4ca0ac85dc1741eec6e2 diff --git a/api-ref/source/networking/v2/samples/metering-labels/metering-label-rules-list-response.json b/api-ref/source/networking/v2/samples/metering-labels/metering-label-rules-list-response.json new file mode 100644 index 000000000..7144cfaaa --- /dev/null +++ b/api-ref/source/networking/v2/samples/metering-labels/metering-label-rules-list-response.json @@ -0,0 +1,18 @@ +{ + "metering_label_rules": [ + { + "remote_ip_prefix": "20.0.0.0/24", + "direction": "ingress", + "metering_label_id": "e131d186-b02d-4c0b-83d5-0c0725c4f812", + "id": "9536641a-7d14-4dc5-afaf-93a973ce0eb8", + "excluded": false + }, + { + "remote_ip_prefix": "10.0.0.0/24", + "direction": "ingress", + "metering_label_id": "e131d186-b02d-4c0b-83d5-0c0725c4f812", + "id": "ffc6fd15-40de-4e7d-b617-34d3f7a93aec", + "excluded": false + } + ] +} diff --git a/api-ref/source/networking/v2/samples/metering-labels/metering-label-show-request-json-http.txt b/api-ref/source/networking/v2/samples/metering-labels/metering-label-show-request-json-http.txt new file mode 100644 index 000000000..7387aeb94 --- /dev/null +++ b/api-ref/source/networking/v2/samples/metering-labels/metering-label-show-request-json-http.txt @@ -0,0 +1,6 @@ +GET /v2.0/metering/metering-labels/a6700594-5b7a-4105-8bfe-723b346ce866 HTTP/1.1 +Host: controlnode:9696 +User-Agent: python-neutronclient +Content-Type: application/json +Accept: application/json +X-Auth-Token: c52a1b304fec4ca0ac85dc1741eec6e2 diff --git a/api-ref/source/networking/v2/samples/metering-labels/metering-label-show-response.json b/api-ref/source/networking/v2/samples/metering-labels/metering-label-show-response.json new file mode 100644 index 000000000..e17da9a00 --- /dev/null +++ b/api-ref/source/networking/v2/samples/metering-labels/metering-label-show-response.json @@ -0,0 +1,9 @@ +{ + "metering_label": { + "tenant_id": "45345b0ee1ea477fac0f541b2cb79cd4", + "description": "label1 description", + "name": "label1", + "id": "a6700594-5b7a-4105-8bfe-723b346ce866", + "shared": false + } +} diff --git a/api-ref/source/networking/v2/samples/metering-labels/metering-labels-list-request-json-http.txt b/api-ref/source/networking/v2/samples/metering-labels/metering-labels-list-request-json-http.txt new file mode 100644 index 000000000..e1df3f2bf --- /dev/null +++ b/api-ref/source/networking/v2/samples/metering-labels/metering-labels-list-request-json-http.txt @@ -0,0 +1,6 @@ +GET /v2.0/metering/metering-labels HTTP/1.1 +Host: controlnode:9696 +User-Agent: python-neutronclient +Content-Type: application/json +Accept: application/json +X-Auth-Token: c52a1b304fec4ca0ac85dc1741eec6e2 diff --git a/api-ref/source/networking/v2/samples/metering-labels/metering-labels-list-response.json b/api-ref/source/networking/v2/samples/metering-labels/metering-labels-list-response.json new file mode 100644 index 000000000..da3e2bab3 --- /dev/null +++ b/api-ref/source/networking/v2/samples/metering-labels/metering-labels-list-response.json @@ -0,0 +1,18 @@ +{ + "metering_labels": [ + { + "tenant_id": "45345b0ee1ea477fac0f541b2cb79cd4", + "description": "label1 description", + "name": "label1", + "id": "a6700594-5b7a-4105-8bfe-723b346ce866", + "shared": false + }, + { + "tenant_id": "45345b0ee1ea477fac0f541b2cb79cd4", + "description": "label2 description", + "name": "label2", + "id": "e131d186-b02d-4c0b-83d5-0c0725c4f812", + "shared": false + } + ] +} diff --git a/api-ref/source/networking/v2/samples/network-ip-availability/network-ip-availability-list.json b/api-ref/source/networking/v2/samples/network-ip-availability/network-ip-availability-list.json new file mode 100644 index 000000000..21f356ffe --- /dev/null +++ b/api-ref/source/networking/v2/samples/network-ip-availability/network-ip-availability-list.json @@ -0,0 +1,54 @@ +{ + "network_ip_availabilities": [ + { + "network_id": "4cf895c9-c3d1-489e-b02e-59b5c8976809", + "network_name": "public", + "subnet_ip_availability": [ + { + "cidr": "2001:db8::/64", + "ip_version": 6, + "subnet_id": "ca3f46c4-c6ff-4272-9be4-0466f84c6077", + "subnet_name": "ipv6-public-subnet", + "total_ips": 18446744073709552000, + "used_ips": 1 + }, + { + "cidr": "172.24.4.0/24", + "ip_version": 4, + "subnet_id": "cc02efc1-9d47-46bd-bab6-760919c836b5", + "subnet_name": "public-subnet", + "total_ips": 253, + "used_ips": 1 + } + ], + "tenant_id": "1a02cc95f1734fcc9d3c753818f03002", + "total_ips": 253, + "used_ips": 2 + }, + { + "network_id": "6801d9c8-20e6-4b27-945d-62499f00002e", + "network_name": "private", + "subnet_ip_availability": [ + { + "cidr": "10.0.0.0/24", + "ip_version": 4, + "subnet_id": "44e70d00-80a2-4fb1-ab59-6190595ceb61", + "subnet_name": "private-subnet", + "total_ips": 253, + "used_ips": 2 + }, + { + "ip_version": 6, + "cidr": "fdbf:ac66:9be8::/64", + "subnet_id": "a90623df-00e1-4902-a675-40674385d74c", + "subnet_name": "ipv6-private-subnet", + "total_ips": 18446744073709552000, + "used_ips": 2 + } + ], + "tenant_id": "d56d3b8dd6894a508cf41b96b522328c", + "total_ips": 18446744073709552000, + "used_ips": 4 + } + ] +} diff --git a/api-ref/source/networking/v2/samples/network-ip-availability/network-ip-availability-show.json b/api-ref/source/networking/v2/samples/network-ip-availability/network-ip-availability-show.json new file mode 100644 index 000000000..ffc3c0cfe --- /dev/null +++ b/api-ref/source/networking/v2/samples/network-ip-availability/network-ip-availability-show.json @@ -0,0 +1,27 @@ +{ + "network_ip_availability": { + "used_ips": 4, + "subnet_ip_availability": [ + { + "used_ips": 2, + "subnet_id": "44e70d00-80a2-4fb1-ab59-6190595ceb61", + "subnet_name": "private-subnet", + "ip_version": 4, + "cidr": "10.0.0.0/24", + "total_ips": 253 + }, + { + "used_ips": 2, + "subnet_id": "a90623df-00e1-4902-a675-40674385d74c", + "subnet_name": "ipv6-private-subnet", + "ip_version": 6, + "cidr": "fdbf:ac66:9be8::/64", + "total_ips": 18446744073709552000 + } + ], + "network_id": "6801d9c8-20e6-4b27-945d-62499f00002e", + "tenant_id": "d56d3b8dd6894a508cf41b96b522328c", + "total_ips": 18446744073709552000, + "network_name": "private" + } +} diff --git a/api-ref/source/networking/v2/samples/networks/network-create-request.json b/api-ref/source/networking/v2/samples/networks/network-create-request.json new file mode 100644 index 000000000..d5391744c --- /dev/null +++ b/api-ref/source/networking/v2/samples/networks/network-create-request.json @@ -0,0 +1,6 @@ +{ + "network": { + "name": "sample_network", + "admin_state_up": true + } +} diff --git a/api-ref/source/networking/v2/samples/networks/network-create-response.json b/api-ref/source/networking/v2/samples/networks/network-create-response.json new file mode 100644 index 000000000..007c5d41a --- /dev/null +++ b/api-ref/source/networking/v2/samples/networks/network-create-response.json @@ -0,0 +1,14 @@ +{ + "network": { + "status": "ACTIVE", + "subnets": [], + "name": "net1", + "admin_state_up": true, + "tenant_id": "9bacb3c5d39d41a79512987f338cf177", + "qos_policy_id": "6a8454ade84346f59e8d40665f878b2e", + "router:external": false, + "mtu": 0, + "shared": false, + "id": "4e8e5957-649f-477b-9e5b-f1f75b21c03c" + } +} diff --git a/api-ref/source/networking/v2/samples/networks/network-multi-create-request.json b/api-ref/source/networking/v2/samples/networks/network-multi-create-request.json new file mode 100644 index 000000000..8a0b624c7 --- /dev/null +++ b/api-ref/source/networking/v2/samples/networks/network-multi-create-request.json @@ -0,0 +1,17 @@ +{ + "network": { + "segments": [ + { + "provider:segmentation_id": "2", + "provider:physical_network": "8bab8453-1bc9-45af-8c70-f83aa9b50453", + "provider:network_type": "vlan" + }, + { + "provider:physical_network": "8bab8453-1bc9-45af-8c70-f83aa9b50453", + "provider:network_type": "stt" + } + ], + "name": "net1", + "admin_state_up": true + } +} diff --git a/api-ref/source/networking/v2/samples/networks/network-multi-create-response.json b/api-ref/source/networking/v2/samples/networks/network-multi-create-response.json new file mode 100644 index 000000000..33f6b268b --- /dev/null +++ b/api-ref/source/networking/v2/samples/networks/network-multi-create-response.json @@ -0,0 +1,24 @@ +{ + "network": { + "status": "ACTIVE", + "subnets": [], + "name": "net1", + "admin_state_up": true, + "tenant_id": "9bacb3c5d39d41a79512987f338cf177", + "qos_policy_id": "6a8454ade84346f59e8d40665f878b2e", + "segments": [ + { + "provider:segmentation_id": 2, + "provider:physical_network": "8bab8453-1bc9-45af-8c70-f83aa9b50453", + "provider:network_type": "vlan" + }, + { + "provider:segmentation_id": null, + "provider:physical_network": "8bab8453-1bc9-45af-8c70-f83aa9b50453", + "provider:network_type": "stt" + } + ], + "shared": false, + "id": "4e8e5957-649f-477b-9e5b-f1f75b21c03c" + } +} diff --git a/api-ref/source/networking/v2/samples/networks/network-provider-create-response.json b/api-ref/source/networking/v2/samples/networks/network-provider-create-response.json new file mode 100644 index 000000000..f66f41f56 --- /dev/null +++ b/api-ref/source/networking/v2/samples/networks/network-provider-create-response.json @@ -0,0 +1,17 @@ +{ + "network": { + "status": "ACTIVE", + "subnets": [], + "availability_zone_hints": [], + "name": "net1", + "provider:physical_network": "8bab8453-1bc9-45af-8c70-f83aa9b50453", + "admin_state_up": true, + "tenant_id": "9bacb3c5d39d41a79512987f338cf177", + "router:external": false, + "provider:network_type": "vlan", + "mtu": 0, + "shared": false, + "id": "4e8e5957-649f-477b-9e5b-f1f75b21c03c", + "provider:segmentation_id": 2 + } +} diff --git a/api-ref/source/networking/v2/samples/networks/network-provider-show-response.json b/api-ref/source/networking/v2/samples/networks/network-provider-show-response.json new file mode 100644 index 000000000..54f834980 --- /dev/null +++ b/api-ref/source/networking/v2/samples/networks/network-provider-show-response.json @@ -0,0 +1,23 @@ +{ + "network": { + "status": "ACTIVE", + "subnets": [ + "54d6f61d-db07-451c-9ab3-b9609b6b6f0b" + ], + "availability_zone_hints": [], + "availability_zones": [ + "nova" + ], + "name": "private-network", + "provider:physical_network": null, + "router:external": false, + "admin_state_up": true, + "tenant_id": "4fd44f30292945e481c7b8a0c8908869", + "provider:network_type": "local", + "mtu": 0, + "shared": true, + "port_security_enabled": true, + "id": "d32019d3-bc6e-4319-9c1d-6722fc136a22", + "provider:segmentation_id": null + } +} diff --git a/api-ref/source/networking/v2/samples/networks/network-provider-update-response.json b/api-ref/source/networking/v2/samples/networks/network-provider-update-response.json new file mode 100644 index 000000000..3395c3a60 --- /dev/null +++ b/api-ref/source/networking/v2/samples/networks/network-provider-update-response.json @@ -0,0 +1,21 @@ +{ + "network": { + "status": "ACTIVE", + "subnets": [], + "availability_zone_hints": [], + "availability_zones": [ + "nova" + ], + "name": "sample_network_5_updated", + "provider:physical_network": null, + "admin_state_up": true, + "tenant_id": "4fd44f30292945e481c7b8a0c8908869", + "provider:network_type": "local", + "router:external": false, + "mtu": 0, + "shared": false, + "port_security_enabled": true, + "id": "1f370095-98f6-4079-be64-6d3d4a6adcc6", + "provider:segmentation_id": null + } +} diff --git a/api-ref/source/networking/v2/samples/networks/network-show-response.json b/api-ref/source/networking/v2/samples/networks/network-show-response.json new file mode 100644 index 000000000..78acfb951 --- /dev/null +++ b/api-ref/source/networking/v2/samples/networks/network-show-response.json @@ -0,0 +1,19 @@ +{ + "network": { + "status": "ACTIVE", + "subnets": [ + "54d6f61d-db07-451c-9ab3-b9609b6b6f0b" + ], + "name": "private-network", + "router:external": false, + "admin_state_up": true, + "tenant_id": "4fd44f30292945e481c7b8a0c8908869", + "qos_policy_id": "6a8454ade84346f59e8d40665f878b2e", + "created_at": "2016-03-08T20:19:41", + "mtu": 0, + "shared": true, + "port_security_enabled": true, + "updated_at": "2016-03-08T20:19:41", + "id": "d32019d3-bc6e-4319-9c1d-6722fc136a22" + } +} diff --git a/api-ref/source/networking/v2/samples/networks/network-update-request.json b/api-ref/source/networking/v2/samples/networks/network-update-request.json new file mode 100644 index 000000000..1bec12c9d --- /dev/null +++ b/api-ref/source/networking/v2/samples/networks/network-update-request.json @@ -0,0 +1,5 @@ +{ + "network": { + "name": "sample_network_5_updated" + } +} diff --git a/api-ref/source/networking/v2/samples/networks/network-update-response.json b/api-ref/source/networking/v2/samples/networks/network-update-response.json new file mode 100644 index 000000000..81db42ad1 --- /dev/null +++ b/api-ref/source/networking/v2/samples/networks/network-update-response.json @@ -0,0 +1,18 @@ +{ + "network": { + "status": "ACTIVE", + "subnets": [], + "name": "sample_network_5_updated", + "provider:physical_network": null, + "admin_state_up": true, + "tenant_id": "4fd44f30292945e481c7b8a0c8908869", + "qos_policy_id": "6a8454ade84346f59e8d40665f878b2e", + "provider:network_type": "local", + "router:external": false, + "mtu": 0, + "shared": false, + "port_security_enabled": true, + "id": "1f370095-98f6-4079-be64-6d3d4a6adcc6", + "provider:segmentation_id": null + } +} diff --git a/api-ref/source/networking/v2/samples/networks/network-vlan-transparent-create-request.json b/api-ref/source/networking/v2/samples/networks/network-vlan-transparent-create-request.json new file mode 100644 index 000000000..3e727836f --- /dev/null +++ b/api-ref/source/networking/v2/samples/networks/network-vlan-transparent-create-request.json @@ -0,0 +1,7 @@ +{ + "network": { + "name": "net1", + "admin_state_up": true, + "vlan_transparent": true + } +} diff --git a/api-ref/source/networking/v2/samples/networks/network-vlan-transparent-create-response.json b/api-ref/source/networking/v2/samples/networks/network-vlan-transparent-create-response.json new file mode 100644 index 000000000..0af87ca8c --- /dev/null +++ b/api-ref/source/networking/v2/samples/networks/network-vlan-transparent-create-response.json @@ -0,0 +1,13 @@ +{ + "network": { + "status": "ACTIVE", + "subnets": [], + "name": "net1", + "admin_state_up": true, + "vlan_transparent": true, + "tenant_id": "5831268f-1f52-49a7-88d5-bc0d7a74d523", + "router:external": false, + "shared": false, + "id": "3114f6e9-f9bc-4570-a941-7329b3b9759f" + } +} diff --git a/api-ref/source/networking/v2/samples/networks/network-vlan-transparent-show-response.json b/api-ref/source/networking/v2/samples/networks/network-vlan-transparent-show-response.json new file mode 100644 index 000000000..79e1c8db6 --- /dev/null +++ b/api-ref/source/networking/v2/samples/networks/network-vlan-transparent-show-response.json @@ -0,0 +1,13 @@ +{ + "network": { + "status": "ACTIVE", + "subnets": [], + "name": "net1", + "admin_state_up": true, + "tenant_id": "e926fd5a-e9f6-4dc8-8043-a352d974ceaf", + "router:external": false, + "vlan_transparent": true, + "shared": false, + "id": "20403fe9-6c9c-48e5-9edb-c3426a955068" + } +} diff --git a/api-ref/source/networking/v2/samples/networks/networks-bulk-create-request.json b/api-ref/source/networking/v2/samples/networks/networks-bulk-create-request.json new file mode 100644 index 000000000..e927b58ec --- /dev/null +++ b/api-ref/source/networking/v2/samples/networks/networks-bulk-create-request.json @@ -0,0 +1,12 @@ +{ + "networks": [ + { + "name": "sample_network3", + "admin_state_up": true + }, + { + "name": "sample_network4", + "admin_state_up": true + } + ] +} diff --git a/api-ref/source/networking/v2/samples/networks/networks-bulk-create-response.json b/api-ref/source/networking/v2/samples/networks/networks-bulk-create-response.json new file mode 100644 index 000000000..f81f216b1 --- /dev/null +++ b/api-ref/source/networking/v2/samples/networks/networks-bulk-create-response.json @@ -0,0 +1,30 @@ +{ + "networks": [ + { + "status": "ACTIVE", + "subnets": [], + "name": "sample_network3", + "provider:physical_network": null, + "admin_state_up": true, + "tenant_id": "4fd44f30292945e481c7b8a0c8908869", + "qos_policy_id": "6a8454ade84346f59e8d40665f878b2e", + "mtu": 0, + "shared": false, + "id": "bc1a76cb-8767-4c3a-bb95-018b822f2130", + "provider:segmentation_id": null + }, + { + "status": "ACTIVE", + "subnets": [], + "name": "sample_network4", + "provider:physical_network": null, + "admin_state_up": true, + "tenant_id": "4fd44f30292945e481c7b8a0c8908869", + "qos_policy_id": "6a8454ade84346f59e8d40665f878b2e", + "mtu": 0, + "shared": false, + "id": "af374017-c9ae-4a1d-b799-ab73111476e2", + "provider:segmentation_id": null + } + ] +} diff --git a/api-ref/source/networking/v2/samples/networks/networks-list-response.json b/api-ref/source/networking/v2/samples/networks/networks-list-response.json new file mode 100644 index 000000000..ce0173780 --- /dev/null +++ b/api-ref/source/networking/v2/samples/networks/networks-list-response.json @@ -0,0 +1,38 @@ +{ + "networks": [ + { + "status": "ACTIVE", + "subnets": [ + "54d6f61d-db07-451c-9ab3-b9609b6b6f0b" + ], + "name": "private-network", + "provider:physical_network": null, + "admin_state_up": true, + "tenant_id": "4fd44f30292945e481c7b8a0c8908869", + "qos_policy_id": "6a8454ade84346f59e8d40665f878b2e", + "provider:network_type": "local", + "router:external": true, + "mtu": 0, + "shared": true, + "id": "d32019d3-bc6e-4319-9c1d-6722fc136a22", + "provider:segmentation_id": null + }, + { + "status": "ACTIVE", + "subnets": [ + "08eae331-0402-425a-923c-34f7cfe39c1b" + ], + "name": "private", + "provider:physical_network": null, + "admin_state_up": true, + "tenant_id": "26a7980765d0414dbc1fc1f88cdb7e6e", + "qos_policy_id": "bfdb6c39f71e4d44b1dfbda245c50819", + "provider:network_type": "local", + "router:external": true, + "mtu": 0, + "shared": true, + "id": "db193ab3-96e3-4cb3-8fc5-05f4296d0324", + "provider:segmentation_id": null + } + ] +} diff --git a/api-ref/source/networking/v2/samples/networks/networks-multi-list-response.json b/api-ref/source/networking/v2/samples/networks/networks-multi-list-response.json new file mode 100644 index 000000000..a94fb58ae --- /dev/null +++ b/api-ref/source/networking/v2/samples/networks/networks-multi-list-response.json @@ -0,0 +1,43 @@ +{ + "networks": [ + { + "status": "ACTIVE", + "subnets": [], + "name": "net1", + "admin_state_up": true, + "tenant_id": "9bacb3c5d39d41a79512987f338cf177", + "qos_policy_id": "6a8454ade84346f59e8d40665f878b2e", + "segments": [ + { + "provider:segmentation_id": 2, + "provider:physical_network": "8bab8453-1bc9-45af-8c70-f83aa9b50453", + "provider:network_type": "vlan" + }, + { + "provider:segmentation_id": 0, + "provider:physical_network": "8bab8453-1bc9-45af-8c70-f83aa9b50453", + "provider:network_type": "stt" + } + ], + "router:external": false, + "shared": false, + "id": "4e8e5957-649f-477b-9e5b-f1f75b21c03c" + }, + { + "status": "ACTIVE", + "subnets": [ + "08eae331-0402-425a-923c-34f7cfe39c1b" + ], + "name": "private", + "provider:physical_network": null, + "router:external": true, + "admin_state_up": true, + "tenant_id": "26a7980765d0414dbc1fc1f88cdb7e6e", + "qos_policy_id": "bfdb6c39f71e4d44b1dfbda245c50819", + "provider:network_type": "local", + "shared": true, + "id": "db193ab3-96e3-4cb3-8fc5-05f4296d0324", + "provider:segmentation_id": null + } + ] +} diff --git a/api-ref/source/networking/v2/samples/networks/networks-multi-show-response.json b/api-ref/source/networking/v2/samples/networks/networks-multi-show-response.json new file mode 100644 index 000000000..03d96dc9b --- /dev/null +++ b/api-ref/source/networking/v2/samples/networks/networks-multi-show-response.json @@ -0,0 +1,25 @@ +{ + "network": { + "status": "ACTIVE", + "subnets": [], + "name": "net1", + "admin_state_up": true, + "tenant_id": "9bacb3c5d39d41a79512987f338cf177", + "qos_policy_id": "6a8454ade84346f59e8d40665f878b2e", + "segments": [ + { + "provider:segmentation_id": 2, + "provider:physical_network": "8bab8453-1bc9-45af-8c70-f83aa9b50453", + "provider:network_type": "vlan" + }, + { + "provider:segmentation_id": 0, + "provider:physical_network": "8bab8453-1bc9-45af-8c70-f83aa9b50453", + "provider:network_type": "stt" + } + ], + "router:external": false, + "shared": false, + "id": "4e8e5957-649f-477b-9e5b-f1f75b21c03c" + } +} diff --git a/api-ref/source/networking/v2/samples/networks/networks-provider-list-response.json b/api-ref/source/networking/v2/samples/networks/networks-provider-list-response.json new file mode 100644 index 000000000..2186274ae --- /dev/null +++ b/api-ref/source/networking/v2/samples/networks/networks-provider-list-response.json @@ -0,0 +1,44 @@ +{ + "networks": [ + { + "status": "ACTIVE", + "subnets": [ + "54d6f61d-db07-451c-9ab3-b9609b6b6f0b" + ], + "availability_zone_hints": [], + "availability_zones": [ + "nova" + ], + "name": "private-network", + "provider:physical_network": null, + "admin_state_up": true, + "tenant_id": "4fd44f30292945e481c7b8a0c8908869", + "provider:network_type": "local", + "mtu": 0, + "router:external": true, + "shared": true, + "id": "d32019d3-bc6e-4319-9c1d-6722fc136a22", + "provider:segmentation_id": null + }, + { + "status": "ACTIVE", + "subnets": [ + "08eae331-0402-425a-923c-34f7cfe39c1b" + ], + "availability_zone_hints": [], + "availability_zones": [ + "nova" + ], + "name": "private", + "provider:physical_network": null, + "admin_state_up": true, + "tenant_id": "26a7980765d0414dbc1fc1f88cdb7e6e", + "provider:network_type": "local", + "mtu": 0, + "router:external": true, + "shared": true, + "id": "db193ab3-96e3-4cb3-8fc5-05f4296d0324", + "provider:segmentation_id": null + } + ] +} diff --git a/api-ref/source/networking/v2/samples/networks/networks-vlan-transparent-list-response.json b/api-ref/source/networking/v2/samples/networks/networks-vlan-transparent-list-response.json new file mode 100644 index 000000000..7f03116eb --- /dev/null +++ b/api-ref/source/networking/v2/samples/networks/networks-vlan-transparent-list-response.json @@ -0,0 +1,28 @@ +{ + "networks": [ + { + "status": "ACTIVE", + "subnets": [], + "name": "net1", + "admin_state_up": true, + "tenant_id": "e252a863-92ee-480f-8bd8-71be77089499", + "shared": false, + "router:external": false, + "vlan_transparent": true, + "id": "f5e6d63c-04a4-4b2c-8b27-a9854412d5a7" + }, + { + "status": "ACTIVE", + "subnets": [ + "3daba37a-bced-4153-a4bb-d83dcc0552d9" + ], + "name": "private", + "admin_state_up": true, + "tenant_id": "109e5fae-d976-4791-84c7-6ae0bb3896c3", + "shared": true, + "router:external": false, + "vlan_transparent": false, + "id": "37e11503-3244-49f1-b92a-9f21bab017d9" + } + ] +} diff --git a/api-ref/source/networking/v2/samples/networks/version-show-response.json b/api-ref/source/networking/v2/samples/networks/version-show-response.json new file mode 100644 index 000000000..ad6369afc --- /dev/null +++ b/api-ref/source/networking/v2/samples/networks/version-show-response.json @@ -0,0 +1,34 @@ +{ + "resources": [ + { + "links": [ + { + "href": "http://23.253.228.211:9696/v2.0/subnets", + "rel": "self" + } + ], + "name": "subnet", + "collection": "subnets" + }, + { + "links": [ + { + "href": "http://23.253.228.211:9696/v2.0/networks", + "rel": "self" + } + ], + "name": "network", + "collection": "networks" + }, + { + "links": [ + { + "href": "http://23.253.228.211:9696/v2.0/ports", + "rel": "self" + } + ], + "name": "port", + "collection": "ports" + } + ] +} diff --git a/api-ref/source/networking/v2/samples/networks/versions-list-response.json b/api-ref/source/networking/v2/samples/networks/versions-list-response.json new file mode 100644 index 000000000..a20ed98c2 --- /dev/null +++ b/api-ref/source/networking/v2/samples/networks/versions-list-response.json @@ -0,0 +1,14 @@ +{ + "versions": [ + { + "status": "CURRENT", + "id": "v2.0", + "links": [ + { + "href": "http://23.253.228.211:9696/v2.0", + "rel": "self" + } + ] + } + ] +} diff --git a/api-ref/source/networking/v2/samples/ports/port-bind-create-update-response.json b/api-ref/source/networking/v2/samples/ports/port-bind-create-update-response.json new file mode 100644 index 000000000..fbb6e2789 --- /dev/null +++ b/api-ref/source/networking/v2/samples/ports/port-bind-create-update-response.json @@ -0,0 +1,28 @@ +{ + "port": { + "status": "DOWN", + "binding:host_id": "", + "name": "private-port", + "allowed_address_pairs": [], + "admin_state_up": true, + "network_id": "a87cc70a-3e15-4acf-8205-9b711a3531b7", + "tenant_id": "d6700c0c9ffa4f1cb322cd4a1f3906fa", + "binding:vif_details": {}, + "binding:vnic_type": "normal", + "binding:vif_type": "unbound", + "device_owner": "", + "mac_address": "fa:16:3e:c9:cb:f0", + "binding:profile": {}, + "fixed_ips": [ + { + "subnet_id": "a0304c3a-4f08-4c43-88af-d796509c97d2", + "ip_address": "10.0.0.2" + } + ], + "id": "65c0ee9f-d634-4522-8954-51021b570b0d", + "security_groups": [ + "f0ac4394-7e4a-4409-9701-ba8be283dbc3" + ], + "device_id": "" + } +} diff --git a/api-ref/source/networking/v2/samples/ports/port-bind-show-response.json b/api-ref/source/networking/v2/samples/ports/port-bind-show-response.json new file mode 100644 index 000000000..636e221cb --- /dev/null +++ b/api-ref/source/networking/v2/samples/ports/port-bind-show-response.json @@ -0,0 +1,31 @@ +{ + "port": { + "status": "ACTIVE", + "binding:host_id": "devstack", + "name": "", + "allowed_address_pairs": [], + "admin_state_up": true, + "network_id": "a87cc70a-3e15-4acf-8205-9b711a3531b7", + "tenant_id": "7e02058126cc4950b75f9970368ba177", + "extra_dhcp_opts": [], + "binding:vif_details": { + "port_filter": true, + "ovs_hybrid_plug": true + }, + "binding:vif_type": "ovs", + "device_owner": "network:router_interface", + "port_security_enabled": false, + "mac_address": "fa:16:3e:23:fd:d7", + "binding:profile": {}, + "binding:vnic_type": "normal", + "fixed_ips": [ + { + "subnet_id": "a0304c3a-4f08-4c43-88af-d796509c97d2", + "ip_address": "10.0.0.1" + } + ], + "id": "46d4bfb9-b26e-41f3-bd2e-e6dcc1ccedb2", + "security_groups": [], + "device_id": "5e3898d7-11be-483e-9732-b2f5eccd2b2e" + } +} diff --git a/api-ref/source/networking/v2/samples/ports/port-create-request.json b/api-ref/source/networking/v2/samples/ports/port-create-request.json new file mode 100644 index 000000000..2aabb12d0 --- /dev/null +++ b/api-ref/source/networking/v2/samples/ports/port-create-request.json @@ -0,0 +1,7 @@ +{ + "port": { + "network_id": "a87cc70a-3e15-4acf-8205-9b711a3531b7", + "name": "private-port", + "admin_state_up": true + } +} diff --git a/api-ref/source/networking/v2/samples/ports/port-create-response.json b/api-ref/source/networking/v2/samples/ports/port-create-response.json new file mode 100644 index 000000000..736c5ac9f --- /dev/null +++ b/api-ref/source/networking/v2/samples/ports/port-create-response.json @@ -0,0 +1,23 @@ +{ + "port": { + "status": "DOWN", + "name": "private-port", + "allowed_address_pairs": [], + "admin_state_up": true, + "network_id": "a87cc70a-3e15-4acf-8205-9b711a3531b7", + "tenant_id": "d6700c0c9ffa4f1cb322cd4a1f3906fa", + "device_owner": "", + "mac_address": "fa:16:3e:c9:cb:f0", + "fixed_ips": [ + { + "subnet_id": "a0304c3a-4f08-4c43-88af-d796509c97d2", + "ip_address": "10.0.0.2" + } + ], + "id": "65c0ee9f-d634-4522-8954-51021b570b0d", + "security_groups": [ + "f0ac4394-7e4a-4409-9701-ba8be283dbc3" + ], + "device_id": "" + } +} diff --git a/api-ref/source/networking/v2/samples/ports/port-show-response.json b/api-ref/source/networking/v2/samples/ports/port-show-response.json new file mode 100644 index 000000000..d8d542de0 --- /dev/null +++ b/api-ref/source/networking/v2/samples/ports/port-show-response.json @@ -0,0 +1,24 @@ +{ + "port": { + "status": "ACTIVE", + "name": "", + "allowed_address_pairs": [], + "admin_state_up": true, + "network_id": "a87cc70a-3e15-4acf-8205-9b711a3531b7", + "tenant_id": "7e02058126cc4950b75f9970368ba177", + "created_at": "2016-03-08T20:19:41", + "extra_dhcp_opts": [], + "device_owner": "network:router_interface", + "mac_address": "fa:16:3e:23:fd:d7", + "fixed_ips": [ + { + "subnet_id": "a0304c3a-4f08-4c43-88af-d796509c97d2", + "ip_address": "10.0.0.1" + } + ], + "id": "46d4bfb9-b26e-41f3-bd2e-e6dcc1ccedb2", + "updated_at": "2016-03-08T20:19:41", + "security_groups": [], + "device_id": "5e3898d7-11be-483e-9732-b2f5eccd2b2e" + } +} diff --git a/api-ref/source/networking/v2/samples/ports/port-update-request.json b/api-ref/source/networking/v2/samples/ports/port-update-request.json new file mode 100644 index 000000000..f4397ae03 --- /dev/null +++ b/api-ref/source/networking/v2/samples/ports/port-update-request.json @@ -0,0 +1,8 @@ +{ + "port": { + "name": "test-for-port-update", + "admin_state_up": true, + "device_owner": "compute:nova", + "binding:host_id": "test_for_port_update_host" + } +} diff --git a/api-ref/source/networking/v2/samples/ports/port-update-response.json b/api-ref/source/networking/v2/samples/ports/port-update-response.json new file mode 100644 index 000000000..db2f9f70f --- /dev/null +++ b/api-ref/source/networking/v2/samples/ports/port-update-response.json @@ -0,0 +1,29 @@ +{ + "port": { + "status": "DOWN", + "binding:host_id": "test_for_port_update_host", + "allowed_address_pairs": [], + "extra_dhcp_opts": [], + "device_owner": "compute:nova", + "binding:profile": {}, + "fixed_ips": [ + { + "subnet_id": "898dec4a-74df-4193-985f-c76721bcc746", + "ip_address": "20.20.0.4" + } + ], + "id": "43c831e0-19ce-4a76-9a49-57b57e69428b", + "security_groups": [ + "ce0179d6-8a94-4f7c-91c2-f3038e2acbd0" + ], + "device_id": "", + "name": "test-for-port-update", + "admin_state_up": true, + "network_id": "883fc383-5ea1-4c8b-8916-e1ddb0a9f365", + "tenant_id": "522eda8d23124b25bf03fe44f1986b74", + "binding:vif_details": {}, + "binding:vnic_type": "normal", + "binding:vif_type": "binding_failed", + "mac_address": "fa:16:3e:11:11:5e" + } +} diff --git a/api-ref/source/networking/v2/samples/ports/ports-bind-show-response.json b/api-ref/source/networking/v2/samples/ports/ports-bind-show-response.json new file mode 100644 index 000000000..1737373ee --- /dev/null +++ b/api-ref/source/networking/v2/samples/ports/ports-bind-show-response.json @@ -0,0 +1,62 @@ +{ + "ports": [ + { + "status": "ACTIVE", + "binding:host_id": "devstack", + "name": "", + "allowed_address_pairs": [], + "admin_state_up": true, + "network_id": "70c1db1f-b701-45bd-96e0-a313ee3430b3", + "tenant_id": "", + "extra_dhcp_opts": [], + "binding:vif_details": { + "port_filter": true, + "ovs_hybrid_plug": true + }, + "binding:vif_type": "ovs", + "device_owner": "network:router_gateway", + "port_security_enabled": true, + "mac_address": "fa:16:3e:58:42:ed", + "binding:profile": {}, + "binding:vnic_type": "normal", + "fixed_ips": [ + { + "subnet_id": "008ba151-0b8c-4a67-98b5-0d2b87666062", + "ip_address": "172.24.4.2" + } + ], + "id": "d80b1a3b-4fc1-49f3-952e-1e2ab7081d8b", + "security_groups": [], + "device_id": "9ae135f4-b6e0-4dad-9e91-3c223e385824" + }, + { + "status": "ACTIVE", + "binding:host_id": "devstack", + "name": "", + "allowed_address_pairs": [], + "admin_state_up": true, + "network_id": "f27aa545-cbdd-4907-b0c6-c9e8b039dcc2", + "tenant_id": "d397de8a63f341818f198abb0966f6f3", + "extra_dhcp_opts": [], + "binding:vif_details": { + "port_filter": true, + "ovs_hybrid_plug": true + }, + "binding:vif_type": "ovs", + "device_owner": "network:router_interface", + "port_security_enabled": true, + "mac_address": "fa:16:3e:bb:3c:e4", + "binding:profile": {}, + "binding:vnic_type": "normal", + "fixed_ips": [ + { + "subnet_id": "288bf4a1-51ba-43b6-9d0a-520e9005db17", + "ip_address": "10.0.0.1" + } + ], + "id": "f71a6703-d6de-4be1-a91a-a570ede1d159", + "security_groups": [], + "device_id": "9ae135f4-b6e0-4dad-9e91-3c223e385824" + } + ] +} diff --git a/api-ref/source/networking/v2/samples/ports/ports-bulk-create-request.json b/api-ref/source/networking/v2/samples/ports/ports-bulk-create-request.json new file mode 100644 index 000000000..1ded596cd --- /dev/null +++ b/api-ref/source/networking/v2/samples/ports/ports-bulk-create-request.json @@ -0,0 +1,14 @@ +{ + "ports": [ + { + "name": "sample_port_1", + "admin_state_up": false, + "network_id": "a87cc70a-3e15-4acf-8205-9b711a3531b7" + }, + { + "name": "sample_port_2", + "admin_state_up": false, + "network_id": "a87cc70a-3e15-4acf-8205-9b711a3531b7" + } + ] +} diff --git a/api-ref/source/networking/v2/samples/ports/ports-bulk-create-response.json b/api-ref/source/networking/v2/samples/ports/ports-bulk-create-response.json new file mode 100644 index 000000000..82df3e635 --- /dev/null +++ b/api-ref/source/networking/v2/samples/ports/ports-bulk-create-response.json @@ -0,0 +1,46 @@ +{ + "ports": [ + { + "status": "DOWN", + "name": "sample_port_1", + "allowed_address_pairs": [], + "admin_state_up": false, + "network_id": "a87cc70a-3e15-4acf-8205-9b711a3531b7", + "tenant_id": "d6700c0c9ffa4f1cb322cd4a1f3906fa", + "device_owner": "", + "mac_address": "fa:16:3e:48:b8:9f", + "fixed_ips": [ + { + "subnet_id": "a0304c3a-4f08-4c43-88af-d796509c97d2", + "ip_address": "10.0.0.5" + } + ], + "id": "94225baa-9d3f-4b93-bf12-b41e7ce49cdb", + "security_groups": [ + "f0ac4394-7e4a-4409-9701-ba8be283dbc3" + ], + "device_id": "" + }, + { + "status": "DOWN", + "name": "sample_port_2", + "allowed_address_pairs": [], + "admin_state_up": false, + "network_id": "a87cc70a-3e15-4acf-8205-9b711a3531b7", + "tenant_id": "d6700c0c9ffa4f1cb322cd4a1f3906fa", + "device_owner": "", + "mac_address": "fa:16:3e:f4:73:df", + "fixed_ips": [ + { + "subnet_id": "a0304c3a-4f08-4c43-88af-d796509c97d2", + "ip_address": "10.0.0.6" + } + ], + "id": "235b09e0-63c4-47f1-b221-66ba54c21760", + "security_groups": [ + "f0ac4394-7e4a-4409-9701-ba8be283dbc3" + ], + "device_id": "" + } + ] +} diff --git a/api-ref/source/networking/v2/samples/ports/ports-list-response.json b/api-ref/source/networking/v2/samples/ports/ports-list-response.json new file mode 100644 index 000000000..81e2db1ef --- /dev/null +++ b/api-ref/source/networking/v2/samples/ports/ports-list-response.json @@ -0,0 +1,44 @@ +{ + "ports": [ + { + "status": "ACTIVE", + "name": "", + "allowed_address_pairs": [], + "admin_state_up": true, + "network_id": "70c1db1f-b701-45bd-96e0-a313ee3430b3", + "tenant_id": "", + "extra_dhcp_opts": [], + "device_owner": "network:router_gateway", + "mac_address": "fa:16:3e:58:42:ed", + "fixed_ips": [ + { + "subnet_id": "008ba151-0b8c-4a67-98b5-0d2b87666062", + "ip_address": "172.24.4.2" + } + ], + "id": "d80b1a3b-4fc1-49f3-952e-1e2ab7081d8b", + "security_groups": [], + "device_id": "9ae135f4-b6e0-4dad-9e91-3c223e385824" + }, + { + "status": "ACTIVE", + "name": "", + "allowed_address_pairs": [], + "admin_state_up": true, + "network_id": "f27aa545-cbdd-4907-b0c6-c9e8b039dcc2", + "tenant_id": "d397de8a63f341818f198abb0966f6f3", + "extra_dhcp_opts": [], + "device_owner": "network:router_interface", + "mac_address": "fa:16:3e:bb:3c:e4", + "fixed_ips": [ + { + "subnet_id": "288bf4a1-51ba-43b6-9d0a-520e9005db17", + "ip_address": "10.0.0.1" + } + ], + "id": "f71a6703-d6de-4be1-a91a-a570ede1d159", + "security_groups": [], + "device_id": "9ae135f4-b6e0-4dad-9e91-3c223e385824" + } + ] +} diff --git a/api-ref/source/networking/v2/samples/qos/bandwidth_limit_rule-create-request.json b/api-ref/source/networking/v2/samples/qos/bandwidth_limit_rule-create-request.json new file mode 100644 index 000000000..8234acf10 --- /dev/null +++ b/api-ref/source/networking/v2/samples/qos/bandwidth_limit_rule-create-request.json @@ -0,0 +1,5 @@ +{ + "bandwidth_limit_rule": { + "max_kbps": "10000" + } +} diff --git a/api-ref/source/networking/v2/samples/qos/bandwidth_limit_rule-create-response.json b/api-ref/source/networking/v2/samples/qos/bandwidth_limit_rule-create-response.json new file mode 100644 index 000000000..3ac737e93 --- /dev/null +++ b/api-ref/source/networking/v2/samples/qos/bandwidth_limit_rule-create-response.json @@ -0,0 +1,8 @@ +{ + "bandwidth_limit_rule": { + "id": "5f126d84-551a-4dcf-bb01-0e9c0df0c793", + "policy_id": "46ebaec0-0570-43ac-82f6-60d2b03168c4", + "max_kbps": "10000", + "max_burst_kbps": "0" + } +} diff --git a/api-ref/source/networking/v2/samples/qos/bandwidth_limit_rule-show-response.json b/api-ref/source/networking/v2/samples/qos/bandwidth_limit_rule-show-response.json new file mode 100644 index 000000000..3ac737e93 --- /dev/null +++ b/api-ref/source/networking/v2/samples/qos/bandwidth_limit_rule-show-response.json @@ -0,0 +1,8 @@ +{ + "bandwidth_limit_rule": { + "id": "5f126d84-551a-4dcf-bb01-0e9c0df0c793", + "policy_id": "46ebaec0-0570-43ac-82f6-60d2b03168c4", + "max_kbps": "10000", + "max_burst_kbps": "0" + } +} diff --git a/api-ref/source/networking/v2/samples/qos/bandwidth_limit_rule-update-request.json b/api-ref/source/networking/v2/samples/qos/bandwidth_limit_rule-update-request.json new file mode 100644 index 000000000..8234acf10 --- /dev/null +++ b/api-ref/source/networking/v2/samples/qos/bandwidth_limit_rule-update-request.json @@ -0,0 +1,5 @@ +{ + "bandwidth_limit_rule": { + "max_kbps": "10000" + } +} diff --git a/api-ref/source/networking/v2/samples/qos/bandwidth_limit_rule-update-response.json b/api-ref/source/networking/v2/samples/qos/bandwidth_limit_rule-update-response.json new file mode 100644 index 000000000..3ac737e93 --- /dev/null +++ b/api-ref/source/networking/v2/samples/qos/bandwidth_limit_rule-update-response.json @@ -0,0 +1,8 @@ +{ + "bandwidth_limit_rule": { + "id": "5f126d84-551a-4dcf-bb01-0e9c0df0c793", + "policy_id": "46ebaec0-0570-43ac-82f6-60d2b03168c4", + "max_kbps": "10000", + "max_burst_kbps": "0" + } +} diff --git a/api-ref/source/networking/v2/samples/qos/bandwidth_limit_rules-list-response.json b/api-ref/source/networking/v2/samples/qos/bandwidth_limit_rules-list-response.json new file mode 100644 index 000000000..f4cd1200b --- /dev/null +++ b/api-ref/source/networking/v2/samples/qos/bandwidth_limit_rules-list-response.json @@ -0,0 +1,10 @@ +{ + "bandwidth_limit_rules": [ + { + "id": "5f126d84-551a-4dcf-bb01-0e9c0df0c793", + "policy_id": "46ebaec0-0570-43ac-82f6-60d2b03168c4", + "max_kbps": "10000", + "max_burst_kbps": "0" + } + ] +} diff --git a/api-ref/source/networking/v2/samples/qos/dscp_marking_rule-create-request.json b/api-ref/source/networking/v2/samples/qos/dscp_marking_rule-create-request.json new file mode 100644 index 000000000..f33c4df8a --- /dev/null +++ b/api-ref/source/networking/v2/samples/qos/dscp_marking_rule-create-request.json @@ -0,0 +1,5 @@ +{ + "dscp_marking_rule": { + "dscp_mark": "26" + } +} diff --git a/api-ref/source/networking/v2/samples/qos/dscp_marking_rule-create-response.json b/api-ref/source/networking/v2/samples/qos/dscp_marking_rule-create-response.json new file mode 100644 index 000000000..8dbd95de9 --- /dev/null +++ b/api-ref/source/networking/v2/samples/qos/dscp_marking_rule-create-response.json @@ -0,0 +1,7 @@ +{ + "dscp_marking_rule": { + "id": "5f126d84-551a-4dcf-bb01-0e9c0df0c794", + "policy_id": "46ebaec0-0570-43ac-82f6-60d2b03168c4", + "dscp_mark": "26" + } +} diff --git a/api-ref/source/networking/v2/samples/qos/dscp_marking_rule-show-response.json b/api-ref/source/networking/v2/samples/qos/dscp_marking_rule-show-response.json new file mode 100644 index 000000000..8dbd95de9 --- /dev/null +++ b/api-ref/source/networking/v2/samples/qos/dscp_marking_rule-show-response.json @@ -0,0 +1,7 @@ +{ + "dscp_marking_rule": { + "id": "5f126d84-551a-4dcf-bb01-0e9c0df0c794", + "policy_id": "46ebaec0-0570-43ac-82f6-60d2b03168c4", + "dscp_mark": "26" + } +} diff --git a/api-ref/source/networking/v2/samples/qos/dscp_marking_rule-update-request.json b/api-ref/source/networking/v2/samples/qos/dscp_marking_rule-update-request.json new file mode 100644 index 000000000..8d56a5d38 --- /dev/null +++ b/api-ref/source/networking/v2/samples/qos/dscp_marking_rule-update-request.json @@ -0,0 +1,5 @@ +{ + "dscp_marking_rule": { + "dscp_mark": "16" + } +} diff --git a/api-ref/source/networking/v2/samples/qos/dscp_marking_rule-update-response.json b/api-ref/source/networking/v2/samples/qos/dscp_marking_rule-update-response.json new file mode 100644 index 000000000..ed16a0031 --- /dev/null +++ b/api-ref/source/networking/v2/samples/qos/dscp_marking_rule-update-response.json @@ -0,0 +1,7 @@ +{ + "dscp_marking_rule": { + "id": "5f126d84-551a-4dcf-bb01-0e9c0df0c794", + "policy_id": "46ebaec0-0570-43ac-82f6-60d2b03168c4", + "dscp_mark": "16" + } +} diff --git a/api-ref/source/networking/v2/samples/qos/dscp_marking_rules-list-response.json b/api-ref/source/networking/v2/samples/qos/dscp_marking_rules-list-response.json new file mode 100644 index 000000000..22c0707bc --- /dev/null +++ b/api-ref/source/networking/v2/samples/qos/dscp_marking_rules-list-response.json @@ -0,0 +1,9 @@ +{ + "dscp_marking_rules": [ + { + "id": "5f126d84-551a-4dcf-bb01-0e9c0df0c794", + "policy_id": "46ebaec0-0570-43ac-82f6-60d2b03168c4", + "dscp_mark": "26" + } + ] +} diff --git a/api-ref/source/networking/v2/samples/qos/policies-list-response.json b/api-ref/source/networking/v2/samples/qos/policies-list-response.json new file mode 100644 index 000000000..365f082ba --- /dev/null +++ b/api-ref/source/networking/v2/samples/qos/policies-list-response.json @@ -0,0 +1,26 @@ +{ + "policies": [ + { + "tenant_id": "8d4c70a21fed4aeba121a1a429ba0d04", + "id": "46ebaec0-0570-43ac-82f6-60d2b03168c4", + "name": "10Mbit", + "description": "This policy limits the ports to 10Mbit max.", + "shared": false, + "bandwidth_limit_rules": [ + { + "id": "5f126d84-551a-4dcf-bb01-0e9c0df0c793", + "policy_id": "46ebaec0-0570-43ac-82f6-60d2b03168c4", + "max_kbps": "10000", + "max_burst_kbps": "0" + } + ], + "dscp_marking_rules": [ + { + "id": "5f126d84-551a-4dcf-bb01-0e9c0df0c794", + "policy_id": "46ebaec0-0570-43ac-82f6-60d2b03168c4", + "dscp_mark": "26" + } + ] + } + ] +} diff --git a/api-ref/source/networking/v2/samples/qos/policy-create-request.json b/api-ref/source/networking/v2/samples/qos/policy-create-request.json new file mode 100644 index 000000000..da99be2aa --- /dev/null +++ b/api-ref/source/networking/v2/samples/qos/policy-create-request.json @@ -0,0 +1,7 @@ +{ + "policy": { + "name": "10Mbit", + "description": "This policy limits the ports to 10Mbit max.", + "shared": false + } +} diff --git a/api-ref/source/networking/v2/samples/qos/policy-create-response.json b/api-ref/source/networking/v2/samples/qos/policy-create-response.json new file mode 100644 index 000000000..88e08b305 --- /dev/null +++ b/api-ref/source/networking/v2/samples/qos/policy-create-response.json @@ -0,0 +1,9 @@ +{ + "policy": { + "name": "10Mbit", + "description": "This policy limits the ports to 10Mbit max.", + "id": "46ebaec0-0570-43ac-82f6-60d2b03168c4", + "tenant_id": "8d4c70a21fed4aeba121a1a429ba0d04", + "shared": false + } +} diff --git a/api-ref/source/networking/v2/samples/qos/policy-show-response.json b/api-ref/source/networking/v2/samples/qos/policy-show-response.json new file mode 100644 index 000000000..593001d45 --- /dev/null +++ b/api-ref/source/networking/v2/samples/qos/policy-show-response.json @@ -0,0 +1,24 @@ +{ + "policy": { + "tenant_id": "8d4c70a21fed4aeba121a1a429ba0d04", + "id": "46ebaec0-0570-43ac-82f6-60d2b03168c4", + "name": "10Mbit", + "description": "This policy limits the ports to 10Mbit max.", + "shared": false, + "bandwidth_limit_rules": [ + { + "id": "5f126d84-551a-4dcf-bb01-0e9c0df0c793", + "policy_id": "46ebaec0-0570-43ac-82f6-60d2b03168c4", + "max_kbps": "10000", + "max_burst_kbps": "0" + } + ], + "dscp_marking_rules": [ + { + "id": "5f126d84-551a-4dcf-bb01-0e9c0df0c794", + "policy_id": "46ebaec0-0570-43ac-82f6-60d2b03168c4", + "dscp_mark": "26" + } + ] + } +} diff --git a/api-ref/source/networking/v2/samples/qos/policy-update-request.json b/api-ref/source/networking/v2/samples/qos/policy-update-request.json new file mode 100644 index 000000000..da99be2aa --- /dev/null +++ b/api-ref/source/networking/v2/samples/qos/policy-update-request.json @@ -0,0 +1,7 @@ +{ + "policy": { + "name": "10Mbit", + "description": "This policy limits the ports to 10Mbit max.", + "shared": false + } +} diff --git a/api-ref/source/networking/v2/samples/qos/policy-update-response.json b/api-ref/source/networking/v2/samples/qos/policy-update-response.json new file mode 100644 index 000000000..88e08b305 --- /dev/null +++ b/api-ref/source/networking/v2/samples/qos/policy-update-response.json @@ -0,0 +1,9 @@ +{ + "policy": { + "name": "10Mbit", + "description": "This policy limits the ports to 10Mbit max.", + "id": "46ebaec0-0570-43ac-82f6-60d2b03168c4", + "tenant_id": "8d4c70a21fed4aeba121a1a429ba0d04", + "shared": false + } +} diff --git a/api-ref/source/networking/v2/samples/qos/rule_types-list-response.json b/api-ref/source/networking/v2/samples/qos/rule_types-list-response.json new file mode 100644 index 000000000..c2983a010 --- /dev/null +++ b/api-ref/source/networking/v2/samples/qos/rule_types-list-response.json @@ -0,0 +1,10 @@ +{ + "rule_types": [ + { + "type": "bandwidth_limit" + }, + { + "type": "dscp_marking" + } + ] +} diff --git a/api-ref/source/networking/v2/samples/quotas/quotas-list-for-tenant-response.json b/api-ref/source/networking/v2/samples/quotas/quotas-list-for-tenant-response.json new file mode 100644 index 000000000..f20326338 --- /dev/null +++ b/api-ref/source/networking/v2/samples/quotas/quotas-list-for-tenant-response.json @@ -0,0 +1,13 @@ +{ + "quota": { + "subnet": 10, + "network": 10, + "floatingip": 50, + "subnetpool": -1, + "security_group_rule": 100, + "security_group": 10, + "router": 10, + "rbac_policy": -1, + "port": 50 + } +} diff --git a/api-ref/source/networking/v2/samples/quotas/quotas-list-response.json b/api-ref/source/networking/v2/samples/quotas/quotas-list-response.json new file mode 100644 index 000000000..e41e78c28 --- /dev/null +++ b/api-ref/source/networking/v2/samples/quotas/quotas-list-response.json @@ -0,0 +1,16 @@ +{ + "quotas": [ + { + "subnet": 10, + "network": 15, + "floatingip": 50, + "tenant_id": "bab7d5c60cd041a0a36f7c4b6e1dd978", + "subnetpool": -1, + "security_group_rule": 100, + "security_group": 10, + "router": 10, + "rbac_policy": -1, + "port": 50 + } + ] +} diff --git a/api-ref/source/networking/v2/samples/quotas/quotas-update-request.json b/api-ref/source/networking/v2/samples/quotas/quotas-update-request.json new file mode 100644 index 000000000..f20326338 --- /dev/null +++ b/api-ref/source/networking/v2/samples/quotas/quotas-update-request.json @@ -0,0 +1,13 @@ +{ + "quota": { + "subnet": 10, + "network": 10, + "floatingip": 50, + "subnetpool": -1, + "security_group_rule": 100, + "security_group": 10, + "router": 10, + "rbac_policy": -1, + "port": 50 + } +} diff --git a/api-ref/source/networking/v2/samples/quotas/quotas-update-response.json b/api-ref/source/networking/v2/samples/quotas/quotas-update-response.json new file mode 100644 index 000000000..90892c626 --- /dev/null +++ b/api-ref/source/networking/v2/samples/quotas/quotas-update-response.json @@ -0,0 +1,13 @@ +{ + "quota": { + "subnet": 10, + "network": 15, + "floatingip": 50, + "subnetpool": -1, + "security_group_rule": 100, + "security_group": 10, + "router": 10, + "rbac_policy": -1, + "port": 50 + } +} diff --git a/api-ref/source/networking/v2/samples/routers/floating-ips-list-response.json b/api-ref/source/networking/v2/samples/routers/floating-ips-list-response.json new file mode 100644 index 000000000..808ec95d7 --- /dev/null +++ b/api-ref/source/networking/v2/samples/routers/floating-ips-list-response.json @@ -0,0 +1,24 @@ +{ + "floatingips": [ + { + "router_id": "d23abc8d-2991-4a55-ba98-2aaea84cc72f", + "tenant_id": "4969c491a3c74ee4af974e6d800c62de", + "floating_network_id": "376da547-b977-4cfe-9cba-275c80debf57", + "fixed_ip_address": "10.0.0.3", + "floating_ip_address": "172.24.4.228", + "port_id": "ce705c24-c1ef-408a-bda3-7bbd946164ab", + "id": "2f245a7b-796b-4f26-9cf9-9e82d248fda7", + "status": "ACTIVE" + }, + { + "router_id": null, + "tenant_id": "4969c491a3c74ee4af974e6d800c62de", + "floating_network_id": "376da547-b977-4cfe-9cba-275c80debf57", + "fixed_ip_address": null, + "floating_ip_address": "172.24.4.227", + "port_id": null, + "id": "61cea855-49cb-4846-997d-801b70c71bdd", + "status": "DOWN" + } + ] +} diff --git a/api-ref/source/networking/v2/samples/routers/floatingip-create-request.json b/api-ref/source/networking/v2/samples/routers/floatingip-create-request.json new file mode 100644 index 000000000..72ed72fc2 --- /dev/null +++ b/api-ref/source/networking/v2/samples/routers/floatingip-create-request.json @@ -0,0 +1,6 @@ +{ + "floatingip": { + "floating_network_id": "376da547-b977-4cfe-9cba-275c80debf57", + "port_id": "ce705c24-c1ef-408a-bda3-7bbd946164ab" + } +} diff --git a/api-ref/source/networking/v2/samples/routers/floatingip-create-response.json b/api-ref/source/networking/v2/samples/routers/floatingip-create-response.json new file mode 100644 index 000000000..290eefee5 --- /dev/null +++ b/api-ref/source/networking/v2/samples/routers/floatingip-create-response.json @@ -0,0 +1,12 @@ +{ + "floatingip": { + "fixed_ip_address": "10.0.0.3", + "floating_ip_address": "172.24.4.228", + "floating_network_id": "376da547-b977-4cfe-9cba-275c80debf57", + "id": "2f245a7b-796b-4f26-9cf9-9e82d248fda7", + "port_id": "ce705c24-c1ef-408a-bda3-7bbd946164ab", + "router_id": "d23abc8d-2991-4a55-ba98-2aaea84cc72f", + "status": "ACTIVE", + "tenant_id": "4969c491a3c74ee4af974e6d800c62de" + } +} diff --git a/api-ref/source/networking/v2/samples/routers/floatingip-disassociate-request.json b/api-ref/source/networking/v2/samples/routers/floatingip-disassociate-request.json new file mode 100644 index 000000000..1800d3276 --- /dev/null +++ b/api-ref/source/networking/v2/samples/routers/floatingip-disassociate-request.json @@ -0,0 +1,5 @@ +{ + "floatingip": { + "port_id": null + } +} diff --git a/api-ref/source/networking/v2/samples/routers/floatingip-disassociate-response.json b/api-ref/source/networking/v2/samples/routers/floatingip-disassociate-response.json new file mode 100644 index 000000000..6f97f9e4a --- /dev/null +++ b/api-ref/source/networking/v2/samples/routers/floatingip-disassociate-response.json @@ -0,0 +1,12 @@ +{ + "floatingip": { + "floating_network_id": "376da547-b977-4cfe-9cba-275c80debf57", + "router_id": "d23abc8d-2991-4a55-ba98-2aaea84cc72f", + "fixed_ip_address": null, + "floating_ip_address": "172.24.4.228", + "tenant_id": "4969c491a3c74ee4af974e6d800c62de", + "status": "ACTIVE", + "port_id": null, + "id": "2f245a7b-796b-4f26-9cf9-9e82d248fda7" + } +} diff --git a/api-ref/source/networking/v2/samples/routers/floatingip-show-response.json b/api-ref/source/networking/v2/samples/routers/floatingip-show-response.json new file mode 100644 index 000000000..35c599bd8 --- /dev/null +++ b/api-ref/source/networking/v2/samples/routers/floatingip-show-response.json @@ -0,0 +1,12 @@ +{ + "floatingip": { + "floating_network_id": "376da547-b977-4cfe-9cba-275c80debf57", + "router_id": "d23abc8d-2991-4a55-ba98-2aaea84cc72f", + "fixed_ip_address": "10.0.0.3", + "floating_ip_address": "172.24.4.228", + "tenant_id": "4969c491a3c74ee4af974e6d800c62de", + "status": "ACTIVE", + "port_id": "ce705c24-c1ef-408a-bda3-7bbd946164ab", + "id": "2f245a7b-796b-4f26-9cf9-9e82d248fda7" + } +} diff --git a/api-ref/source/networking/v2/samples/routers/floatingip-update-request.json b/api-ref/source/networking/v2/samples/routers/floatingip-update-request.json new file mode 100644 index 000000000..2772b5ad6 --- /dev/null +++ b/api-ref/source/networking/v2/samples/routers/floatingip-update-request.json @@ -0,0 +1,5 @@ +{ + "floatingip": { + "port_id": "fc861431-0e6c-4842-a0ed-e2363f9bc3a8" + } +} diff --git a/api-ref/source/networking/v2/samples/routers/floatingip-update-response.json b/api-ref/source/networking/v2/samples/routers/floatingip-update-response.json new file mode 100644 index 000000000..0ee097253 --- /dev/null +++ b/api-ref/source/networking/v2/samples/routers/floatingip-update-response.json @@ -0,0 +1,12 @@ +{ + "floatingip": { + "floating_network_id": "376da547-b977-4cfe-9cba-275c80debf57", + "router_id": "d23abc8d-2991-4a55-ba98-2aaea84cc72f", + "fixed_ip_address": "10.0.0.4", + "floating_ip_address": "172.24.4.228", + "tenant_id": "4969c491a3c74ee4af974e6d800c62de", + "status": "ACTIVE", + "port_id": "fc861431-0e6c-4842-a0ed-e2363f9bc3a8", + "id": "2f245a7b-796b-4f26-9cf9-9e82d248fda7" + } +} diff --git a/api-ref/source/networking/v2/samples/routers/router-add-interface-request.json b/api-ref/source/networking/v2/samples/routers/router-add-interface-request.json new file mode 100644 index 000000000..107e6e4cc --- /dev/null +++ b/api-ref/source/networking/v2/samples/routers/router-add-interface-request.json @@ -0,0 +1,3 @@ +{ + "subnet_id": "a2f1f29d-571b-4533-907f-5803ab96ead1" +} diff --git a/api-ref/source/networking/v2/samples/routers/router-add-interface-response.json b/api-ref/source/networking/v2/samples/routers/router-add-interface-response.json new file mode 100644 index 000000000..7d235eff2 --- /dev/null +++ b/api-ref/source/networking/v2/samples/routers/router-add-interface-response.json @@ -0,0 +1,9 @@ +{ + "subnet_id": "a2f1f29d-571b-4533-907f-5803ab96ead1", + "tenant_id": "6ba032e4730d42e2ad928f430f5da33e", + "subnet_ids": [ + "a2f1f29d-571b-4533-907f-5803ab96ead1" + ], + "port_id": "3a44f4e5-1694-493a-a1fb-393881c673a4", + "id": "b0294d7e-7da4-4202-9882-2ab1de9dabc0" +} diff --git a/api-ref/source/networking/v2/samples/routers/router-create-request.json b/api-ref/source/networking/v2/samples/routers/router-create-request.json new file mode 100644 index 000000000..296bdb36c --- /dev/null +++ b/api-ref/source/networking/v2/samples/routers/router-create-request.json @@ -0,0 +1,16 @@ +{ + "router": { + "name": "another_router", + "external_gateway_info": { + "network_id": "8ca37218-28ff-41cb-9b10-039601ea7e6b", + "enable_snat": true, + "external_fixed_ips": [ + { + "subnet_id": "255.255.255.0", + "ip": "192.168.10.1" + } + ] + }, + "admin_state_up": true + } +} diff --git a/api-ref/source/networking/v2/samples/routers/router-create-response.json b/api-ref/source/networking/v2/samples/routers/router-create-response.json new file mode 100644 index 000000000..69b398769 --- /dev/null +++ b/api-ref/source/networking/v2/samples/routers/router-create-response.json @@ -0,0 +1,22 @@ +{ + "router": { + "status": "ACTIVE", + "external_gateway_info": { + "network_id": "8ca37218-28ff-41cb-9b10-039601ea7e6b", + "enable_snat": true, + "external_fixed_ips": [ + { + "subnet_id": "255.255.255.0", + "ip": "192.168.10.2" + } + ] + }, + "name": "another_router", + "admin_state_up": true, + "tenant_id": "6b96ff0cb17a4b859e1e575d221683d3", + "distributed": false, + "routes": [], + "ha": false, + "id": "8604a0de-7f6b-409a-a47c-a1cc7bc77b2e" + } +} diff --git a/api-ref/source/networking/v2/samples/routers/router-remove-interface-request.json b/api-ref/source/networking/v2/samples/routers/router-remove-interface-request.json new file mode 100644 index 000000000..107e6e4cc --- /dev/null +++ b/api-ref/source/networking/v2/samples/routers/router-remove-interface-request.json @@ -0,0 +1,3 @@ +{ + "subnet_id": "a2f1f29d-571b-4533-907f-5803ab96ead1" +} diff --git a/api-ref/source/networking/v2/samples/routers/router-remove-interface-response.json b/api-ref/source/networking/v2/samples/routers/router-remove-interface-response.json new file mode 100644 index 000000000..572ff22d4 --- /dev/null +++ b/api-ref/source/networking/v2/samples/routers/router-remove-interface-response.json @@ -0,0 +1,6 @@ +{ + "id": "8604a0de-7f6b-409a-a47c-a1cc7bc77b2e", + "tenant_id": "2f245a7b-796b-4f26-9cf9-9e82d248fda7", + "port_id": "3a44f4e5-1694-493a-a1fb-393881c673a4", + "subnet_id": "a2f1f29d-571b-4533-907f-5803ab96ead1" +} diff --git a/api-ref/source/networking/v2/samples/routers/router-show-response.json b/api-ref/source/networking/v2/samples/routers/router-show-response.json new file mode 100644 index 000000000..f113fb764 --- /dev/null +++ b/api-ref/source/networking/v2/samples/routers/router-show-response.json @@ -0,0 +1,20 @@ +{ + "router": { + "status": "ACTIVE", + "external_gateway_info": { + "network_id": "85d76829-6415-48ff-9c63-5c5ca8c61ac6", + "enable_snat": true, + "external_fixed_ips": [ + { + "subnet_id": "255.255.255.0", + "ip": "192.168.10.2" + } + ] + }, + "name": "router1", + "admin_state_up": true, + "tenant_id": "d6554fe62e2f41efbb6e026fad5c1542", + "routes": [], + "id": "a07eea83-7710-4860-931b-5fe220fae533" + } +} diff --git a/api-ref/source/networking/v2/samples/routers/router-update-request.json b/api-ref/source/networking/v2/samples/routers/router-update-request.json new file mode 100644 index 000000000..b6c842232 --- /dev/null +++ b/api-ref/source/networking/v2/samples/routers/router-update-request.json @@ -0,0 +1,14 @@ +{ + "router": { + "external_gateway_info": { + "network_id": "8ca37218-28ff-41cb-9b10-039601ea7e6b", + "enable_snat": true, + "external_fixed_ips": [ + { + "subnet_id": "255.255.255.0", + "ip": "192.168.10.1" + } + ] + } + } +} diff --git a/api-ref/source/networking/v2/samples/routers/router-update-response.json b/api-ref/source/networking/v2/samples/routers/router-update-response.json new file mode 100644 index 000000000..69b398769 --- /dev/null +++ b/api-ref/source/networking/v2/samples/routers/router-update-response.json @@ -0,0 +1,22 @@ +{ + "router": { + "status": "ACTIVE", + "external_gateway_info": { + "network_id": "8ca37218-28ff-41cb-9b10-039601ea7e6b", + "enable_snat": true, + "external_fixed_ips": [ + { + "subnet_id": "255.255.255.0", + "ip": "192.168.10.2" + } + ] + }, + "name": "another_router", + "admin_state_up": true, + "tenant_id": "6b96ff0cb17a4b859e1e575d221683d3", + "distributed": false, + "routes": [], + "ha": false, + "id": "8604a0de-7f6b-409a-a47c-a1cc7bc77b2e" + } +} diff --git a/api-ref/source/networking/v2/samples/routers/routers-list-response.json b/api-ref/source/networking/v2/samples/routers/routers-list-response.json new file mode 100644 index 000000000..7e473fff2 --- /dev/null +++ b/api-ref/source/networking/v2/samples/routers/routers-list-response.json @@ -0,0 +1,31 @@ +{ + "routers": [ + { + "status": "ACTIVE", + "external_gateway_info": null, + "name": "second_routers", + "admin_state_up": true, + "tenant_id": "6b96ff0cb17a4b859e1e575d221683d3", + "routes": [], + "id": "7177abc4-5ae9-4bb7-b0d4-89e94a4abf3b" + }, + { + "status": "ACTIVE", + "external_gateway_info": { + "network_id": "3c5bcddd-6af9-4e6b-9c3e-c153e521cab8", + "enable_snat": true, + "external_fixed_ips": [ + { + "subnet_id": "255.255.255.0", + "ip": "192.168.10.2" + } + ] + }, + "name": "router1", + "admin_state_up": true, + "tenant_id": "33a40233088643acb66ff6eb0ebea679", + "routes": [], + "id": "a9254bdb-2613-4a13-ac4c-adc581fba50d" + } + ] +} diff --git a/api-ref/source/networking/v2/samples/security-groups/security-group-create-request.json b/api-ref/source/networking/v2/samples/security-groups/security-group-create-request.json new file mode 100644 index 000000000..8a93ef934 --- /dev/null +++ b/api-ref/source/networking/v2/samples/security-groups/security-group-create-request.json @@ -0,0 +1,6 @@ +{ + "security_group": { + "name": "new-webservers", + "description": "security group for webservers" + } +} diff --git a/api-ref/source/networking/v2/samples/security-groups/security-group-create-response.json b/api-ref/source/networking/v2/samples/security-groups/security-group-create-response.json new file mode 100644 index 000000000..1ded3275c --- /dev/null +++ b/api-ref/source/networking/v2/samples/security-groups/security-group-create-response.json @@ -0,0 +1,34 @@ +{ + "security_group": { + "description": "security group for webservers", + "id": "2076db17-a522-4506-91de-c6dd8e837028", + "name": "new-webservers", + "security_group_rules": [ + { + "direction": "egress", + "ethertype": "IPv4", + "id": "38ce2d8e-e8f1-48bd-83c2-d33cb9f50c3d", + "port_range_max": null, + "port_range_min": null, + "protocol": null, + "remote_group_id": null, + "remote_ip_prefix": null, + "security_group_id": "2076db17-a522-4506-91de-c6dd8e837028", + "tenant_id": "e4f50856753b4dc6afee5fa6b9b6c550" + }, + { + "direction": "egress", + "ethertype": "IPv6", + "id": "565b9502-12de-4ffd-91e9-68885cff6ae1", + "port_range_max": null, + "port_range_min": null, + "protocol": null, + "remote_group_id": null, + "remote_ip_prefix": null, + "security_group_id": "2076db17-a522-4506-91de-c6dd8e837028", + "tenant_id": "e4f50856753b4dc6afee5fa6b9b6c550" + } + ], + "tenant_id": "e4f50856753b4dc6afee5fa6b9b6c550" + } +} diff --git a/api-ref/source/networking/v2/samples/security-groups/security-group-delete-request-json-http.txt b/api-ref/source/networking/v2/samples/security-groups/security-group-delete-request-json-http.txt new file mode 100644 index 000000000..fa1441007 --- /dev/null +++ b/api-ref/source/networking/v2/samples/security-groups/security-group-delete-request-json-http.txt @@ -0,0 +1,3 @@ +DELETE /v2.0/security-groups/e470bdfc-4869-459b-a561-cb3377efae59 +Content-Type: application/json +Accept: application/json \ No newline at end of file diff --git a/api-ref/source/networking/v2/samples/security-groups/security-group-delete-response-json-http.txt b/api-ref/source/networking/v2/samples/security-groups/security-group-delete-response-json-http.txt new file mode 100644 index 000000000..f81fef7d2 --- /dev/null +++ b/api-ref/source/networking/v2/samples/security-groups/security-group-delete-response-json-http.txt @@ -0,0 +1 @@ +status: 204 \ No newline at end of file diff --git a/api-ref/source/networking/v2/samples/security-groups/security-group-rule-create-request.json b/api-ref/source/networking/v2/samples/security-groups/security-group-rule-create-request.json new file mode 100644 index 000000000..959be0fb8 --- /dev/null +++ b/api-ref/source/networking/v2/samples/security-groups/security-group-rule-create-request.json @@ -0,0 +1,11 @@ +{ + "security_group_rule": { + "direction": "ingress", + "port_range_min": "80", + "ethertype": "IPv4", + "port_range_max": "80", + "protocol": "tcp", + "remote_group_id": "85cc3048-abc3-43cc-89b3-377341426ac5", + "security_group_id": "a7734e61-b545-452d-a3cd-0189cbd9747a" + } +} diff --git a/api-ref/source/networking/v2/samples/security-groups/security-group-rule-create-response.json b/api-ref/source/networking/v2/samples/security-groups/security-group-rule-create-response.json new file mode 100644 index 000000000..500d06eee --- /dev/null +++ b/api-ref/source/networking/v2/samples/security-groups/security-group-rule-create-response.json @@ -0,0 +1,14 @@ +{ + "security_group_rule": { + "direction": "ingress", + "ethertype": "IPv4", + "id": "2bc0accf-312e-429a-956e-e4407625eb62", + "port_range_max": 80, + "port_range_min": 80, + "protocol": "tcp", + "remote_group_id": "85cc3048-abc3-43cc-89b3-377341426ac5", + "remote_ip_prefix": null, + "security_group_id": "a7734e61-b545-452d-a3cd-0189cbd9747a", + "tenant_id": "e4f50856753b4dc6afee5fa6b9b6c550" + } +} diff --git a/api-ref/source/networking/v2/samples/security-groups/security-group-rule-delete-request-json-http.txt b/api-ref/source/networking/v2/samples/security-groups/security-group-rule-delete-request-json-http.txt new file mode 100644 index 000000000..920073aa7 --- /dev/null +++ b/api-ref/source/networking/v2/samples/security-groups/security-group-rule-delete-request-json-http.txt @@ -0,0 +1,3 @@ +DELETE /v2.0/security-group-rules/fc3c327a-b5b5-4cd3-9577-52893289ce08 +Content-Type: application/json +Accept: application/json \ No newline at end of file diff --git a/api-ref/source/networking/v2/samples/security-groups/security-group-rule-delete-response-json-http.txt b/api-ref/source/networking/v2/samples/security-groups/security-group-rule-delete-response-json-http.txt new file mode 100644 index 000000000..f81fef7d2 --- /dev/null +++ b/api-ref/source/networking/v2/samples/security-groups/security-group-rule-delete-response-json-http.txt @@ -0,0 +1 @@ +status: 204 \ No newline at end of file diff --git a/api-ref/source/networking/v2/samples/security-groups/security-group-rule-show-request-json-http.txt b/api-ref/source/networking/v2/samples/security-groups/security-group-rule-show-request-json-http.txt new file mode 100644 index 000000000..fb321ba32 --- /dev/null +++ b/api-ref/source/networking/v2/samples/security-groups/security-group-rule-show-request-json-http.txt @@ -0,0 +1,2 @@ +GET /v2.0/security-group-rules/ 3c0e45ff-adaf-4124-b083-bf390e5482ff +Accept: application/json \ No newline at end of file diff --git a/api-ref/source/networking/v2/samples/security-groups/security-group-rule-show-response.json b/api-ref/source/networking/v2/samples/security-groups/security-group-rule-show-response.json new file mode 100644 index 000000000..7225101fb --- /dev/null +++ b/api-ref/source/networking/v2/samples/security-groups/security-group-rule-show-response.json @@ -0,0 +1,14 @@ +{ + "security_group_rule": { + "direction": "egress", + "ethertype": "IPv6", + "id": "3c0e45ff-adaf-4124-b083-bf390e5482ff", + "port_range_max": null, + "port_range_min": null, + "protocol": null, + "remote_group_id": null, + "remote_ip_prefix": null, + "security_group_id": "85cc3048-abc3-43cc-89b3-377341426ac5", + "tenant_id": "e4f50856753b4dc6afee5fa6b9b6c550" + } +} diff --git a/api-ref/source/networking/v2/samples/security-groups/security-group-rules-list-request-json-http.txt b/api-ref/source/networking/v2/samples/security-groups/security-group-rules-list-request-json-http.txt new file mode 100644 index 000000000..a0a7038a9 --- /dev/null +++ b/api-ref/source/networking/v2/samples/security-groups/security-group-rules-list-request-json-http.txt @@ -0,0 +1,2 @@ +GET /v2.0/security-group-rules/ +Accept: application/json \ No newline at end of file diff --git a/api-ref/source/networking/v2/samples/security-groups/security-group-rules-list-response.json b/api-ref/source/networking/v2/samples/security-groups/security-group-rules-list-response.json new file mode 100644 index 000000000..fbdeddf05 --- /dev/null +++ b/api-ref/source/networking/v2/samples/security-groups/security-group-rules-list-response.json @@ -0,0 +1,52 @@ +{ + "security_group_rules": [ + { + "direction": "egress", + "ethertype": "IPv6", + "id": "3c0e45ff-adaf-4124-b083-bf390e5482ff", + "port_range_max": null, + "port_range_min": null, + "protocol": null, + "remote_group_id": null, + "remote_ip_prefix": null, + "security_group_id": "85cc3048-abc3-43cc-89b3-377341426ac5", + "tenant_id": "e4f50856753b4dc6afee5fa6b9b6c550" + }, + { + "direction": "egress", + "ethertype": "IPv4", + "id": "93aa42e5-80db-4581-9391-3a608bd0e448", + "port_range_max": null, + "port_range_min": null, + "protocol": null, + "remote_group_id": null, + "remote_ip_prefix": null, + "security_group_id": "85cc3048-abc3-43cc-89b3-377341426ac5", + "tenant_id": "e4f50856753b4dc6afee5fa6b9b6c550" + }, + { + "direction": "ingress", + "ethertype": "IPv6", + "id": "c0b09f00-1d49-4e64-a0a7-8a186d928138", + "port_range_max": null, + "port_range_min": null, + "protocol": null, + "remote_group_id": "85cc3048-abc3-43cc-89b3-377341426ac5", + "remote_ip_prefix": null, + "security_group_id": "85cc3048-abc3-43cc-89b3-377341426ac5", + "tenant_id": "e4f50856753b4dc6afee5fa6b9b6c550" + }, + { + "direction": "ingress", + "ethertype": "IPv4", + "id": "f7d45c89-008e-4bab-88ad-d6811724c51c", + "port_range_max": null, + "port_range_min": null, + "protocol": null, + "remote_group_id": "85cc3048-abc3-43cc-89b3-377341426ac5", + "remote_ip_prefix": null, + "security_group_id": "85cc3048-abc3-43cc-89b3-377341426ac5", + "tenant_id": "e4f50856753b4dc6afee5fa6b9b6c550" + } + ] +} diff --git a/api-ref/source/networking/v2/samples/security-groups/security-group-show-request-json-http.txt b/api-ref/source/networking/v2/samples/security-groups/security-group-show-request-json-http.txt new file mode 100644 index 000000000..56592f327 --- /dev/null +++ b/api-ref/source/networking/v2/samples/security-groups/security-group-show-request-json-http.txt @@ -0,0 +1,2 @@ +GET /v2.0/security-groups/85cc3048-abc3-43cc-89b3-377341426ac5 +Accept: application/json \ No newline at end of file diff --git a/api-ref/source/networking/v2/samples/security-groups/security-group-show-response.json b/api-ref/source/networking/v2/samples/security-groups/security-group-show-response.json new file mode 100644 index 000000000..126b5d20c --- /dev/null +++ b/api-ref/source/networking/v2/samples/security-groups/security-group-show-response.json @@ -0,0 +1,58 @@ +{ + "security_group": { + "description": "default", + "id": "85cc3048-abc3-43cc-89b3-377341426ac5", + "name": "default", + "security_group_rules": [ + { + "direction": "egress", + "ethertype": "IPv6", + "id": "3c0e45ff-adaf-4124-b083-bf390e5482ff", + "port_range_max": null, + "port_range_min": null, + "protocol": null, + "remote_group_id": null, + "remote_ip_prefix": null, + "security_group_id": "85cc3048-abc3-43cc-89b3-377341426ac5", + "tenant_id": "e4f50856753b4dc6afee5fa6b9b6c550" + }, + { + "direction": "egress", + "ethertype": "IPv4", + "id": "93aa42e5-80db-4581-9391-3a608bd0e448", + "port_range_max": null, + "port_range_min": null, + "protocol": null, + "remote_group_id": null, + "remote_ip_prefix": null, + "security_group_id": "85cc3048-abc3-43cc-89b3-377341426ac5", + "tenant_id": "e4f50856753b4dc6afee5fa6b9b6c550" + }, + { + "direction": "ingress", + "ethertype": "IPv6", + "id": "c0b09f00-1d49-4e64-a0a7-8a186d928138", + "port_range_max": null, + "port_range_min": null, + "protocol": null, + "remote_group_id": "85cc3048-abc3-43cc-89b3-377341426ac5", + "remote_ip_prefix": null, + "security_group_id": "85cc3048-abc3-43cc-89b3-377341426ac5", + "tenant_id": "e4f50856753b4dc6afee5fa6b9b6c550" + }, + { + "direction": "ingress", + "ethertype": "IPv4", + "id": "f7d45c89-008e-4bab-88ad-d6811724c51c", + "port_range_max": null, + "port_range_min": null, + "protocol": null, + "remote_group_id": "85cc3048-abc3-43cc-89b3-377341426ac5", + "remote_ip_prefix": null, + "security_group_id": "85cc3048-abc3-43cc-89b3-377341426ac5", + "tenant_id": "e4f50856753b4dc6afee5fa6b9b6c550" + } + ], + "tenant_id": "e4f50856753b4dc6afee5fa6b9b6c550" + } +} diff --git a/api-ref/source/networking/v2/samples/security-groups/security-group-update-request.json b/api-ref/source/networking/v2/samples/security-groups/security-group-update-request.json new file mode 100644 index 000000000..67bfda27c --- /dev/null +++ b/api-ref/source/networking/v2/samples/security-groups/security-group-update-request.json @@ -0,0 +1,6 @@ +{ + "security_group": { + "name": "mysecgroup", + "description": "my security group" + } +} diff --git a/api-ref/source/networking/v2/samples/security-groups/security-group-update-response.json b/api-ref/source/networking/v2/samples/security-groups/security-group-update-response.json new file mode 100644 index 000000000..8062d2373 --- /dev/null +++ b/api-ref/source/networking/v2/samples/security-groups/security-group-update-response.json @@ -0,0 +1,9 @@ +{ + "security_group": { + "rules": [], + "tenant_id": "a52cdb9cc7854a39a23d3af73a40899e", + "id": "01fbade5-b664-42f6-83ae-4e214f4263fa", + "name": "mysecgroup", + "description": "my security group" + } +} diff --git a/api-ref/source/networking/v2/samples/security-groups/security-groups-list-request-json-http.txt b/api-ref/source/networking/v2/samples/security-groups/security-groups-list-request-json-http.txt new file mode 100644 index 000000000..aa8497822 --- /dev/null +++ b/api-ref/source/networking/v2/samples/security-groups/security-groups-list-request-json-http.txt @@ -0,0 +1,2 @@ +GET /v2.0/security-groups +Accept: application/json \ No newline at end of file diff --git a/api-ref/source/networking/v2/samples/security-groups/security-groups-list-response.json b/api-ref/source/networking/v2/samples/security-groups/security-groups-list-response.json new file mode 100644 index 000000000..331792e60 --- /dev/null +++ b/api-ref/source/networking/v2/samples/security-groups/security-groups-list-response.json @@ -0,0 +1,60 @@ +{ + "security_groups": [ + { + "description": "default", + "id": "85cc3048-abc3-43cc-89b3-377341426ac5", + "name": "default", + "security_group_rules": [ + { + "direction": "egress", + "ethertype": "IPv6", + "id": "3c0e45ff-adaf-4124-b083-bf390e5482ff", + "port_range_max": null, + "port_range_min": null, + "protocol": null, + "remote_group_id": null, + "remote_ip_prefix": null, + "security_group_id": "85cc3048-abc3-43cc-89b3-377341426ac5", + "tenant_id": "e4f50856753b4dc6afee5fa6b9b6c550" + }, + { + "direction": "egress", + "ethertype": "IPv4", + "id": "93aa42e5-80db-4581-9391-3a608bd0e448", + "port_range_max": null, + "port_range_min": null, + "protocol": null, + "remote_group_id": null, + "remote_ip_prefix": null, + "security_group_id": "85cc3048-abc3-43cc-89b3-377341426ac5", + "tenant_id": "e4f50856753b4dc6afee5fa6b9b6c550" + }, + { + "direction": "ingress", + "ethertype": "IPv6", + "id": "c0b09f00-1d49-4e64-a0a7-8a186d928138", + "port_range_max": null, + "port_range_min": null, + "protocol": null, + "remote_group_id": "85cc3048-abc3-43cc-89b3-377341426ac5", + "remote_ip_prefix": null, + "security_group_id": "85cc3048-abc3-43cc-89b3-377341426ac5", + "tenant_id": "e4f50856753b4dc6afee5fa6b9b6c550" + }, + { + "direction": "ingress", + "ethertype": "IPv4", + "id": "f7d45c89-008e-4bab-88ad-d6811724c51c", + "port_range_max": null, + "port_range_min": null, + "protocol": null, + "remote_group_id": "85cc3048-abc3-43cc-89b3-377341426ac5", + "remote_ip_prefix": null, + "security_group_id": "85cc3048-abc3-43cc-89b3-377341426ac5", + "tenant_id": "e4f50856753b4dc6afee5fa6b9b6c550" + } + ], + "tenant_id": "e4f50856753b4dc6afee5fa6b9b6c550" + } + ] +} diff --git a/api-ref/source/networking/v2/samples/service-type-response.json b/api-ref/source/networking/v2/samples/service-type-response.json new file mode 100644 index 000000000..276a82684 --- /dev/null +++ b/api-ref/source/networking/v2/samples/service-type-response.json @@ -0,0 +1,9 @@ +{ + "service_providers": [ + { + "service_type": "LOADBALANCER", + "default": true, + "name": "haproxy" + } + ] +} diff --git a/api-ref/source/networking/v2/samples/subnets/subnet-create-request.json b/api-ref/source/networking/v2/samples/subnets/subnet-create-request.json new file mode 100644 index 000000000..d12c6ddb6 --- /dev/null +++ b/api-ref/source/networking/v2/samples/subnets/subnet-create-request.json @@ -0,0 +1,7 @@ +{ + "subnet": { + "network_id": "d32019d3-bc6e-4319-9c1d-6722fc136a22", + "ip_version": 4, + "cidr": "10.0.0.1" + } +} diff --git a/api-ref/source/networking/v2/samples/subnets/subnet-create-response.json b/api-ref/source/networking/v2/samples/subnets/subnet-create-response.json new file mode 100644 index 000000000..a01f8be91 --- /dev/null +++ b/api-ref/source/networking/v2/samples/subnets/subnet-create-response.json @@ -0,0 +1,20 @@ +{ + "subnet": { + "name": "", + "enable_dhcp": true, + "network_id": "d32019d3-bc6e-4319-9c1d-6722fc136a22", + "tenant_id": "4fd44f30292945e481c7b8a0c8908869", + "dns_nameservers": [], + "allocation_pools": [ + { + "start": "192.168.199.2", + "end": "192.168.199.254" + } + ], + "host_routes": [], + "ip_version": 4, + "gateway_ip": "192.168.199.1", + "cidr": "192.168.199.0/24", + "id": "3b80198d-4f7b-4f77-9ef5-774d54e17126" + } +} diff --git a/api-ref/source/networking/v2/samples/subnets/subnet-show-response.json b/api-ref/source/networking/v2/samples/subnets/subnet-show-response.json new file mode 100644 index 000000000..482beb09a --- /dev/null +++ b/api-ref/source/networking/v2/samples/subnets/subnet-show-response.json @@ -0,0 +1,22 @@ +{ + "subnet": { + "name": "my_subnet", + "enable_dhcp": true, + "network_id": "d32019d3-bc6e-4319-9c1d-6722fc136a22", + "tenant_id": "4fd44f30292945e481c7b8a0c8908869", + "created_at": "2016-03-08T20:19:41", + "dns_nameservers": [], + "allocation_pools": [ + { + "start": "192.0.0.2", + "end": "192.255.255.254" + } + ], + "host_routes": [], + "ip_version": 4, + "gateway_ip": "192.0.0.1", + "cidr": "192.0.0.0/8", + "updated_at": "2016-03-08T20:19:41", + "id": "54d6f61d-db07-451c-9ab3-b9609b6b6f0b" + } +} diff --git a/api-ref/source/networking/v2/samples/subnets/subnet-update-request.json b/api-ref/source/networking/v2/samples/subnets/subnet-update-request.json new file mode 100644 index 000000000..0481b471b --- /dev/null +++ b/api-ref/source/networking/v2/samples/subnets/subnet-update-request.json @@ -0,0 +1,5 @@ +{ + "subnet": { + "name": "my_subnet" + } +} diff --git a/api-ref/source/networking/v2/samples/subnets/subnet-update-response.json b/api-ref/source/networking/v2/samples/subnets/subnet-update-response.json new file mode 100644 index 000000000..0364c5219 --- /dev/null +++ b/api-ref/source/networking/v2/samples/subnets/subnet-update-response.json @@ -0,0 +1,20 @@ +{ + "subnet": { + "name": "my_subnet", + "enable_dhcp": true, + "network_id": "db193ab3-96e3-4cb3-8fc5-05f4296d0324", + "tenant_id": "26a7980765d0414dbc1fc1f88cdb7e6e", + "dns_nameservers": [], + "allocation_pools": [ + { + "start": "10.0.0.2", + "end": "10.0.0.254" + } + ], + "host_routes": [], + "ip_version": 4, + "gateway_ip": "10.0.0.1", + "cidr": "10.0.0.0/24", + "id": "08eae331-0402-425a-923c-34f7cfe39c1b" + } +} diff --git a/api-ref/source/networking/v2/samples/subnets/subnetpool-create-request.json b/api-ref/source/networking/v2/samples/subnets/subnetpool-create-request.json new file mode 100644 index 000000000..4058fea94 --- /dev/null +++ b/api-ref/source/networking/v2/samples/subnets/subnetpool-create-request.json @@ -0,0 +1,13 @@ +{ + "subnetpool": { + "name": "my-subnet-pool", + "prefixes": [ + "192.168.0.0/16", + "10.10.0.0/21" + ], + "default_prefixlen": 25, + "min_prefixlen": 24, + "max_prefixlen": 30, + "shared": "false" + } +} diff --git a/api-ref/source/networking/v2/samples/subnets/subnetpool-create-response.json b/api-ref/source/networking/v2/samples/subnets/subnetpool-create-response.json new file mode 100644 index 000000000..3053b35ad --- /dev/null +++ b/api-ref/source/networking/v2/samples/subnets/subnetpool-create-response.json @@ -0,0 +1,19 @@ +{ + "subnetpool": { + "min_prefixlen": "24", + "address_scope_id": null, + "default_prefixlen": "25", + "id": "f49a1319-423a-4ee6-ba54-1d95a4f6cc68", + "max_prefixlen": "30", + "name": "my-subnet-pool", + "default_quota": null, + "is_default": false, + "tenant_id": "9fadcee8aa7c40cdb2114fff7d569c08", + "prefixes": [ + "10.10.0.0/21", + "192.168.0.0/16" + ], + "ip_version": 4, + "shared": false + } +} diff --git a/api-ref/source/networking/v2/samples/subnets/subnetpool-show-response.json b/api-ref/source/networking/v2/samples/subnets/subnetpool-show-response.json new file mode 100644 index 000000000..df1819254 --- /dev/null +++ b/api-ref/source/networking/v2/samples/subnets/subnetpool-show-response.json @@ -0,0 +1,21 @@ +{ + "subnetpool": { + "min_prefixlen": "64", + "address_scope_id": null, + "default_prefixlen": "64", + "id": "03f761e6-eee0-43fc-a921-8acf64c14988", + "max_prefixlen": "64", + "name": "my-subnet-pool", + "default_quota": null, + "is_default": false, + "tenant_id": "9fadcee8aa7c40cdb2114fff7d569c08", + "created_at": "2016-03-08T20:19:41", + "prefixes": [ + "2001:db8:0:2::/64", + "2001:db8::/63" + ], + "updated_at": "2016-03-08T20:19:41", + "ip_version": 6, + "shared": false + } +} diff --git a/api-ref/source/networking/v2/samples/subnets/subnetpool-update-request.json b/api-ref/source/networking/v2/samples/subnets/subnetpool-update-request.json new file mode 100644 index 000000000..2c9bceffb --- /dev/null +++ b/api-ref/source/networking/v2/samples/subnets/subnetpool-update-request.json @@ -0,0 +1,13 @@ +{ + "subnetpool": { + "name": "my-new-subnetpool-name", + "prefixes": [ + "2001:db8::/64", + "2001:db8:0:1::/64", + "2001:db8:0:2::/64" + ], + "min_prefixlen": 64, + "default_prefixlen": 64, + "max_prefixlen": 64 + } +} diff --git a/api-ref/source/networking/v2/samples/subnets/subnetpool-update-response.json b/api-ref/source/networking/v2/samples/subnets/subnetpool-update-response.json new file mode 100644 index 000000000..f12fd15e1 --- /dev/null +++ b/api-ref/source/networking/v2/samples/subnets/subnetpool-update-response.json @@ -0,0 +1,19 @@ +{ + "subnetpool": { + "name": "my-new-subnetpool-name", + "default_quota": null, + "is_default": false, + "tenant_id": "9fadcee8aa7c40cdb2114fff7d569c08", + "prefixes": [ + "2001:db8::/63", + "2001:db8:0:2::/64" + ], + "min_prefixlen": 64, + "address_scope_id": null, + "ip_version": 6, + "shared": false, + "default_prefixlen": 64, + "id": "03f761e6-eee0-43fc-a921-8acf64c14988", + "max_prefixlen": 64 + } +} diff --git a/api-ref/source/networking/v2/samples/subnets/subnetpools-list-response.json b/api-ref/source/networking/v2/samples/subnets/subnetpools-list-response.json new file mode 100644 index 000000000..d6d5a9eef --- /dev/null +++ b/api-ref/source/networking/v2/samples/subnets/subnetpools-list-response.json @@ -0,0 +1,38 @@ +{ + "subnetpools": [ + { + "min_prefixlen": "64", + "address_scope_id": null, + "default_prefixlen": "64", + "id": "03f761e6-eee0-43fc-a921-8acf64c14988", + "max_prefixlen": "64", + "name": "my-subnet-pool-ipv6", + "default_quota": null, + "is_default": false, + "tenant_id": "9fadcee8aa7c40cdb2114fff7d569c08", + "prefixes": [ + "2001:db8:0:2::/64", + "2001:db8::/63" + ], + "ip_version": 6, + "shared": false + }, + { + "min_prefixlen": "24", + "address_scope_id": null, + "default_prefixlen": "25", + "id": "f49a1319-423a-4ee6-ba54-1d95a4f6cc68", + "max_prefixlen": "30", + "name": "my-subnet-pool-ipv4", + "default_quota": null, + "is_default": false, + "tenant_id": "9fadcee8aa7c40cdb2114fff7d569c08", + "prefixes": [ + "10.10.0.0/21", + "192.168.0.0/16" + ], + "ip_version": 4, + "shared": false + } + ] +} diff --git a/api-ref/source/networking/v2/samples/subnets/subnets-create-bulk-request.json b/api-ref/source/networking/v2/samples/subnets/subnets-create-bulk-request.json new file mode 100644 index 000000000..0bb8460b6 --- /dev/null +++ b/api-ref/source/networking/v2/samples/subnets/subnets-create-bulk-request.json @@ -0,0 +1,14 @@ +{ + "subnets": [ + { + "cidr": "192.168.199.0/24", + "ip_version": 4, + "network_id": "e6031bc2-901a-4c66-82da-f4c32ed89406" + }, + { + "cidr": "10.56.4.0/22", + "ip_version": 4, + "network_id": "64239a54-dcc4-4b39-920b-b37c2144effa" + } + ] +} diff --git a/api-ref/source/networking/v2/samples/subnets/subnets-create-bulk-response.json b/api-ref/source/networking/v2/samples/subnets/subnets-create-bulk-response.json new file mode 100644 index 000000000..f9f7ea91c --- /dev/null +++ b/api-ref/source/networking/v2/samples/subnets/subnets-create-bulk-response.json @@ -0,0 +1,40 @@ +{ + "subnets": [ + { + "allocation_pools": [ + { + "end": "192.168.199.254", + "start": "192.168.199.2" + } + ], + "cidr": "192.168.199.0/24", + "dns_nameservers": [], + "enable_dhcp": true, + "gateway_ip": "192.168.199.1", + "host_routes": [], + "id": "0468a7a7-290d-4127-aedd-6c9449775a24", + "ip_version": 4, + "name": "", + "network_id": "e6031bc2-901a-4c66-82da-f4c32ed89406", + "tenant_id": "d19231fc08ec4bc4829b668040d34512" + }, + { + "allocation_pools": [ + { + "end": "10.56.7.254", + "start": "10.56.4.2" + } + ], + "cidr": "10.56.4.0/22", + "dns_nameservers": [], + "enable_dhcp": true, + "gateway_ip": "10.56.4.1", + "host_routes": [], + "id": "b0e7435c-1512-45fb-aa9e-9a7c5932fb30", + "ip_version": 4, + "name": "", + "network_id": "64239a54-dcc4-4b39-920b-b37c2144effa", + "tenant_id": "d19231fc08ec4bc4829b668040d34512" + } + ] +} diff --git a/api-ref/source/networking/v2/samples/subnets/subnets-list-response.json b/api-ref/source/networking/v2/samples/subnets/subnets-list-response.json new file mode 100644 index 000000000..2c5ba82ab --- /dev/null +++ b/api-ref/source/networking/v2/samples/subnets/subnets-list-response.json @@ -0,0 +1,40 @@ +{ + "subnets": [ + { + "name": "private-subnet", + "enable_dhcp": true, + "network_id": "db193ab3-96e3-4cb3-8fc5-05f4296d0324", + "tenant_id": "26a7980765d0414dbc1fc1f88cdb7e6e", + "dns_nameservers": [], + "allocation_pools": [ + { + "start": "10.0.0.2", + "end": "10.0.0.254" + } + ], + "host_routes": [], + "ip_version": 4, + "gateway_ip": "10.0.0.1", + "cidr": "10.0.0.0/24", + "id": "08eae331-0402-425a-923c-34f7cfe39c1b" + }, + { + "name": "my_subnet", + "enable_dhcp": true, + "network_id": "d32019d3-bc6e-4319-9c1d-6722fc136a22", + "tenant_id": "4fd44f30292945e481c7b8a0c8908869", + "dns_nameservers": [], + "allocation_pools": [ + { + "start": "192.0.0.2", + "end": "192.255.255.254" + } + ], + "host_routes": [], + "ip_version": 4, + "gateway_ip": "192.0.0.1", + "cidr": "192.0.0.0/8", + "id": "54d6f61d-db07-451c-9ab3-b9609b6b6f0b" + } + ] +} diff --git a/api-ref/source/networking/v2/samples/tag/tag-update-request.json b/api-ref/source/networking/v2/samples/tag/tag-update-request.json new file mode 100644 index 000000000..f047e8e6f --- /dev/null +++ b/api-ref/source/networking/v2/samples/tag/tag-update-request.json @@ -0,0 +1,6 @@ +{ + "tags": [ + "red", + "blue" + ] +} diff --git a/api-ref/source/networking/v2/samples/tag/tag-update-response.json b/api-ref/source/networking/v2/samples/tag/tag-update-response.json new file mode 100644 index 000000000..f047e8e6f --- /dev/null +++ b/api-ref/source/networking/v2/samples/tag/tag-update-response.json @@ -0,0 +1,6 @@ +{ + "tags": [ + "red", + "blue" + ] +} diff --git a/api-ref/source/networking/v2/samples/vpn/ikepolicies-list-response.json b/api-ref/source/networking/v2/samples/vpn/ikepolicies-list-response.json new file mode 100644 index 000000000..db649fd2b --- /dev/null +++ b/api-ref/source/networking/v2/samples/vpn/ikepolicies-list-response.json @@ -0,0 +1,19 @@ +{ + "ikepolicies": [ + { + "name": "ikepolicy1", + "tenant_id": "ccb81365fe36411a9011e90491fe1330", + "auth_algorithm": "sha1", + "encryption_algorithm": "aes-256", + "pfs": "group5", + "phase1_negotiation_mode": "main", + "lifetime": { + "units": "seconds", + "value": 3600 + }, + "ike_version": "v1", + "id": "5522aff7-1b3c-48dd-9c3c-b50f016b73db", + "description": "" + } + ] +} diff --git a/api-ref/source/networking/v2/samples/vpn/ikepolicy-create-request.json b/api-ref/source/networking/v2/samples/vpn/ikepolicy-create-request.json new file mode 100644 index 000000000..87cf674a2 --- /dev/null +++ b/api-ref/source/networking/v2/samples/vpn/ikepolicy-create-request.json @@ -0,0 +1,14 @@ +{ + "ikepolicy": { + "phase1_negotiation_mode": "main", + "auth_algorithm": "sha1", + "encryption_algorithm": "aes-128", + "pfs": "group5", + "lifetime": { + "units": "seconds", + "value": 7200 + }, + "ike_version": "v1", + "name": "ikepolicy1" + } +} diff --git a/api-ref/source/networking/v2/samples/vpn/ikepolicy-create-response.json b/api-ref/source/networking/v2/samples/vpn/ikepolicy-create-response.json new file mode 100644 index 000000000..4e2c98bcd --- /dev/null +++ b/api-ref/source/networking/v2/samples/vpn/ikepolicy-create-response.json @@ -0,0 +1,17 @@ +{ + "ikepolicy": { + "name": "ikepolicy1", + "tenant_id": "ccb81365fe36411a9011e90491fe1330", + "auth_algorithm": "sha1", + "encryption_algorithm": "aes-128", + "pfs": "group5", + "phase1_negotiation_mode": "main", + "lifetime": { + "units": "seconds", + "value": 7200 + }, + "ike_version": "v1", + "id": "5522aff7-1b3c-48dd-9c3c-b50f016b73db", + "description": "" + } +} diff --git a/api-ref/source/networking/v2/samples/vpn/ikepolicy-show-response.json b/api-ref/source/networking/v2/samples/vpn/ikepolicy-show-response.json new file mode 100644 index 000000000..a13ee52c4 --- /dev/null +++ b/api-ref/source/networking/v2/samples/vpn/ikepolicy-show-response.json @@ -0,0 +1,17 @@ +{ + "ikepolicy": { + "name": "ikepolicy1", + "tenant_id": "ccb81365fe36411a9011e90491fe1330", + "auth_algorithm": "sha1", + "encryption_algorithm": "aes-256", + "pfs": "group5", + "phase1_negotiation_mode": "main", + "lifetime": { + "units": "seconds", + "value": 3600 + }, + "ike_version": "v1", + "id": "5522aff7-1b3c-48dd-9c3c-b50f016b73db", + "description": "" + } +} diff --git a/api-ref/source/networking/v2/samples/vpn/ikepolicy-update-request.json b/api-ref/source/networking/v2/samples/vpn/ikepolicy-update-request.json new file mode 100644 index 000000000..99a74aff9 --- /dev/null +++ b/api-ref/source/networking/v2/samples/vpn/ikepolicy-update-request.json @@ -0,0 +1,5 @@ +{ + "ikepolicy": { + "encryption_algorithm": "aes-256" + } +} diff --git a/api-ref/source/networking/v2/samples/vpn/ikepolicy-update-response.json b/api-ref/source/networking/v2/samples/vpn/ikepolicy-update-response.json new file mode 100644 index 000000000..a13ee52c4 --- /dev/null +++ b/api-ref/source/networking/v2/samples/vpn/ikepolicy-update-response.json @@ -0,0 +1,17 @@ +{ + "ikepolicy": { + "name": "ikepolicy1", + "tenant_id": "ccb81365fe36411a9011e90491fe1330", + "auth_algorithm": "sha1", + "encryption_algorithm": "aes-256", + "pfs": "group5", + "phase1_negotiation_mode": "main", + "lifetime": { + "units": "seconds", + "value": 3600 + }, + "ike_version": "v1", + "id": "5522aff7-1b3c-48dd-9c3c-b50f016b73db", + "description": "" + } +} diff --git a/api-ref/source/networking/v2/samples/vpn/ipsec-site-connection-create-request.json b/api-ref/source/networking/v2/samples/vpn/ipsec-site-connection-create-request.json new file mode 100644 index 000000000..584a748cd --- /dev/null +++ b/api-ref/source/networking/v2/samples/vpn/ipsec-site-connection-create-request.json @@ -0,0 +1,16 @@ +{ + "ipsec_site_connection": { + "psk": "secret", + "initiator": "bi-directional", + "ipsecpolicy_id": "e6e23d0c-9519-4d52-8ea4-5b1f96d857b1", + "admin_state_up": true, + "mtu": "1500", + "peer_ep_group_id": "9ad5a7e0-6dac-41b4-b20d-a7b8645fddf1", + "ikepolicy_id": "9b00d6b0-6c93-4ca5-9747-b8ade7bb514f", + "vpnservice_id": "5c561d9d-eaea-45f6-ae3e-08d1a7080828", + "local_ep_group_id": "3e1815dd-e212-43d0-8f13-b494fa553e68", + "peer_address": "172.24.4.233", + "peer_id": "172.24.4.233", + "name": "vpnconnection1" + } +} diff --git a/api-ref/source/networking/v2/samples/vpn/ipsec-site-connection-create-response.json b/api-ref/source/networking/v2/samples/vpn/ipsec-site-connection-create-response.json new file mode 100644 index 000000000..3bc5b2457 --- /dev/null +++ b/api-ref/source/networking/v2/samples/vpn/ipsec-site-connection-create-response.json @@ -0,0 +1,28 @@ +{ + "ipsec_site_connection": { + "status": "PENDING_CREATE", + "psk": "secret", + "initiator": "bi-directional", + "name": "vpnconnection1", + "admin_state_up": true, + "tenant_id": "10039663455a446d8ba2cbb058b0f578", + "auth_mode": "psk", + "peer_cidrs": [], + "mtu": 1500, + "peer_ep_group_id": "9ad5a7e0-6dac-41b4-b20d-a7b8645fddf1", + "ikepolicy_id": "9b00d6b0-6c93-4ca5-9747-b8ade7bb514f", + "vpnservice_id": "5c561d9d-eaea-45f6-ae3e-08d1a7080828", + "dpd": { + "action": "hold", + "interval": 30, + "timeout": 120 + }, + "route_mode": "static", + "ipsecpolicy_id": "e6e23d0c-9519-4d52-8ea4-5b1f96d857b1", + "local_ep_group_id": "3e1815dd-e212-43d0-8f13-b494fa553e68", + "peer_address": "172.24.4.233", + "peer_id": "172.24.4.233", + "id": "851f280f-5639-4ea3-81aa-e298525ab74b", + "description": "" + } +} diff --git a/api-ref/source/networking/v2/samples/vpn/ipsec-site-connection-show-response.json b/api-ref/source/networking/v2/samples/vpn/ipsec-site-connection-show-response.json new file mode 100644 index 000000000..0c0d6baaf --- /dev/null +++ b/api-ref/source/networking/v2/samples/vpn/ipsec-site-connection-show-response.json @@ -0,0 +1,28 @@ +{ + "ipsec_site_connection": { + "status": "DOWN", + "psk": "secret", + "initiator": "bi-directional", + "name": "vpnconnection1", + "admin_state_up": true, + "tenant_id": "10039663455a446d8ba2cbb058b0f578", + "auth_mode": "psk", + "peer_cidrs": [], + "mtu": 1500, + "peer_ep_group_id": "9ad5a7e0-6dac-41b4-b20d-a7b8645fddf1", + "ikepolicy_id": "9b00d6b0-6c93-4ca5-9747-b8ade7bb514f", + "vpnservice_id": "5c561d9d-eaea-45f6-ae3e-08d1a7080828", + "dpd": { + "action": "hold", + "interval": 30, + "timeout": 120 + }, + "route_mode": "static", + "ipsecpolicy_id": "e6e23d0c-9519-4d52-8ea4-5b1f96d857b1", + "local_ep_group_id": "3e1815dd-e212-43d0-8f13-b494fa553e68", + "peer_address": "172.24.4.226", + "peer_id": "172.24.4.226", + "id": "851f280f-5639-4ea3-81aa-e298525ab74b", + "description": "" + } +} diff --git a/api-ref/source/networking/v2/samples/vpn/ipsec-site-connection-update-request.json b/api-ref/source/networking/v2/samples/vpn/ipsec-site-connection-update-request.json new file mode 100644 index 000000000..16ef5cef4 --- /dev/null +++ b/api-ref/source/networking/v2/samples/vpn/ipsec-site-connection-update-request.json @@ -0,0 +1,5 @@ +{ + "ipsec_site_connection": { + "mtu": "2000" + } +} diff --git a/api-ref/source/networking/v2/samples/vpn/ipsec-site-connection-update-response.json b/api-ref/source/networking/v2/samples/vpn/ipsec-site-connection-update-response.json new file mode 100644 index 000000000..a66cf851a --- /dev/null +++ b/api-ref/source/networking/v2/samples/vpn/ipsec-site-connection-update-response.json @@ -0,0 +1,28 @@ +{ + "ipsec_site_connection": { + "status": "DOWN", + "psk": "secret", + "initiator": "bi-directional", + "name": "vpnconnection1", + "admin_state_up": true, + "tenant_id": "10039663455a446d8ba2cbb058b0f578", + "auth_mode": "psk", + "peer_cidrs": [], + "mtu": 2000, + "peer_ep_group_id": "9ad5a7e0-6dac-41b4-b20d-a7b8645fddf1", + "ikepolicy_id": "9b00d6b0-6c93-4ca5-9747-b8ade7bb514f", + "vpnservice_id": "5c561d9d-eaea-45f6-ae3e-08d1a7080828", + "dpd": { + "action": "hold", + "interval": 30, + "timeout": 120 + }, + "route_mode": "static", + "ipsecpolicy_id": "e6e23d0c-9519-4d52-8ea4-5b1f96d857b1", + "local_ep_group_id": "3e1815dd-e212-43d0-8f13-b494fa553e68", + "peer_address": "172.24.4.233", + "peer_id": "172.24.4.233", + "id": "851f280f-5639-4ea3-81aa-e298525ab74b", + "description": "New description" + } +} diff --git a/api-ref/source/networking/v2/samples/vpn/ipsec-site-connections-list-response.json b/api-ref/source/networking/v2/samples/vpn/ipsec-site-connections-list-response.json new file mode 100644 index 000000000..1ae875f72 --- /dev/null +++ b/api-ref/source/networking/v2/samples/vpn/ipsec-site-connections-list-response.json @@ -0,0 +1,30 @@ +{ + "ipsec_site_connections": [ + { + "status": "PENDING CREATE", + "psk": "secret", + "initiator": "bi-directional", + "name": "vpnconnection1", + "admin_state_up": true, + "tenant_id": "10039663455a446d8ba2cbb058b0f578", + "auth_mode": "psk", + "peer_cidrs": [], + "mtu": 1500, + "peer_ep_group_id": "9ad5a7e0-6dac-41b4-b20d-a7b8645fddf1", + "ikepolicy_id": "9b00d6b0-6c93-4ca5-9747-b8ade7bb514f", + "vpnservice_id": "5c561d9d-eaea-45f6-ae3e-08d1a7080828", + "dpd": { + "action": "hold", + "interval": 30, + "timeout": 120 + }, + "route_mode": "static", + "ipsecpolicy_id": "e6e23d0c-9519-4d52-8ea4-5b1f96d857b1", + "local_ep_group_id": "3e1815dd-e212-43d0-8f13-b494fa553e68", + "peer_address": "172.24.4.226", + "peer_id": "172.24.4.226", + "id": "851f280f-5639-4ea3-81aa-e298525ab74b", + "description": "" + } + ] +} diff --git a/api-ref/source/networking/v2/samples/vpn/ipsecpolicies-list-response.json b/api-ref/source/networking/v2/samples/vpn/ipsecpolicies-list-response.json new file mode 100644 index 000000000..a79ad6ab5 --- /dev/null +++ b/api-ref/source/networking/v2/samples/vpn/ipsecpolicies-list-response.json @@ -0,0 +1,19 @@ +{ + "ipsecpolicies": [ + { + "name": "ipsecpolicy1", + "transform_protocol": "esp", + "auth_algorithm": "sha1", + "encapsulation_mode": "tunnel", + "encryption_algorithm": "aes-128", + "pfs": "group14", + "tenant_id": "ccb81365fe36411a9011e90491fe1330", + "lifetime": { + "units": "seconds", + "value": 3600 + }, + "id": "5291b189-fd84-46e5-84bd-78f40c05d69c", + "description": "" + } + ] +} diff --git a/api-ref/source/networking/v2/samples/vpn/ipsecpolicy-create-request.json b/api-ref/source/networking/v2/samples/vpn/ipsecpolicy-create-request.json new file mode 100644 index 000000000..0ed0215f4 --- /dev/null +++ b/api-ref/source/networking/v2/samples/vpn/ipsecpolicy-create-request.json @@ -0,0 +1,14 @@ +{ + "ipsecpolicy": { + "name": "ipsecpolicy1", + "transform_protocol": "esp", + "auth_algorithm": "sha1", + "encapsulation_mode": "tunnel", + "encryption_algorithm": "aes-128", + "pfs": "group5", + "lifetime": { + "units": "seconds", + "value": 7200 + } + } +} diff --git a/api-ref/source/networking/v2/samples/vpn/ipsecpolicy-create-response.json b/api-ref/source/networking/v2/samples/vpn/ipsecpolicy-create-response.json new file mode 100644 index 000000000..64dcfd7d6 --- /dev/null +++ b/api-ref/source/networking/v2/samples/vpn/ipsecpolicy-create-response.json @@ -0,0 +1,17 @@ +{ + "ipsecpolicy": { + "name": "ipsecpolicy1", + "transform_protocol": "esp", + "auth_algorithm": "sha1", + "encapsulation_mode": "tunnel", + "encryption_algorithm": "aes-128", + "pfs": "group5", + "tenant_id": "ccb81365fe36411a9011e90491fe1330", + "lifetime": { + "units": "seconds", + "value": 7200 + }, + "id": "5291b189-fd84-46e5-84bd-78f40c05d69c", + "description": "" + } +} diff --git a/api-ref/source/networking/v2/samples/vpn/ipsecpolicy-show-response.json b/api-ref/source/networking/v2/samples/vpn/ipsecpolicy-show-response.json new file mode 100644 index 000000000..6290c7c92 --- /dev/null +++ b/api-ref/source/networking/v2/samples/vpn/ipsecpolicy-show-response.json @@ -0,0 +1,17 @@ +{ + "ipsecpolicy": { + "name": "ipsecpolicy1", + "transform_protocol": "esp", + "auth_algorithm": "sha1", + "encapsulation_mode": "tunnel", + "encryption_algorithm": "aes-128", + "pfs": "group14", + "tenant_id": "ccb81365fe36411a9011e90491fe1330", + "lifetime": { + "units": "seconds", + "value": 3600 + }, + "id": "5291b189-fd84-46e5-84bd-78f40c05d69c", + "description": "" + } +} diff --git a/api-ref/source/networking/v2/samples/vpn/ipsecpolicy-update-request.json b/api-ref/source/networking/v2/samples/vpn/ipsecpolicy-update-request.json new file mode 100644 index 000000000..9b2a816b0 --- /dev/null +++ b/api-ref/source/networking/v2/samples/vpn/ipsecpolicy-update-request.json @@ -0,0 +1,5 @@ +{ + "ipsecpolicy": { + "pfs": "group14" + } +} diff --git a/api-ref/source/networking/v2/samples/vpn/ipsecpolicy-update-response.json b/api-ref/source/networking/v2/samples/vpn/ipsecpolicy-update-response.json new file mode 100644 index 000000000..6290c7c92 --- /dev/null +++ b/api-ref/source/networking/v2/samples/vpn/ipsecpolicy-update-response.json @@ -0,0 +1,17 @@ +{ + "ipsecpolicy": { + "name": "ipsecpolicy1", + "transform_protocol": "esp", + "auth_algorithm": "sha1", + "encapsulation_mode": "tunnel", + "encryption_algorithm": "aes-128", + "pfs": "group14", + "tenant_id": "ccb81365fe36411a9011e90491fe1330", + "lifetime": { + "units": "seconds", + "value": 3600 + }, + "id": "5291b189-fd84-46e5-84bd-78f40c05d69c", + "description": "" + } +} diff --git a/api-ref/source/networking/v2/samples/vpn/vpn-endpoint-group-create-request.json b/api-ref/source/networking/v2/samples/vpn/vpn-endpoint-group-create-request.json new file mode 100644 index 000000000..ea22109c3 --- /dev/null +++ b/api-ref/source/networking/v2/samples/vpn/vpn-endpoint-group-create-request.json @@ -0,0 +1,10 @@ +{ + "endpoint_group": { + "endpoints": [ + "10.2.0.0/24", + "10.3.0.0/24" + ], + "type": "cidr", + "name": "peers" + } +} diff --git a/api-ref/source/networking/v2/samples/vpn/vpn-endpoint-group-create-response.json b/api-ref/source/networking/v2/samples/vpn/vpn-endpoint-group-create-response.json new file mode 100644 index 000000000..5a447c74b --- /dev/null +++ b/api-ref/source/networking/v2/samples/vpn/vpn-endpoint-group-create-response.json @@ -0,0 +1,13 @@ +{ + "endpoint_group": { + "description": "", + "tenant_id": "4ad57e7ce0b24fca8f12b9834d91079d", + "endpoints": [ + "10.2.0.0/24", + "10.3.0.0/24" + ], + "type": "cidr", + "id": "6ecd9cf3-ca64-46c7-863f-f2eb1b9e838a", + "name": "peers" + } +} diff --git a/api-ref/source/networking/v2/samples/vpn/vpn-endpoint-group-show-response.json b/api-ref/source/networking/v2/samples/vpn/vpn-endpoint-group-show-response.json new file mode 100644 index 000000000..5a447c74b --- /dev/null +++ b/api-ref/source/networking/v2/samples/vpn/vpn-endpoint-group-show-response.json @@ -0,0 +1,13 @@ +{ + "endpoint_group": { + "description": "", + "tenant_id": "4ad57e7ce0b24fca8f12b9834d91079d", + "endpoints": [ + "10.2.0.0/24", + "10.3.0.0/24" + ], + "type": "cidr", + "id": "6ecd9cf3-ca64-46c7-863f-f2eb1b9e838a", + "name": "peers" + } +} diff --git a/api-ref/source/networking/v2/samples/vpn/vpn-endpoint-group-update-request.json b/api-ref/source/networking/v2/samples/vpn/vpn-endpoint-group-update-request.json new file mode 100644 index 000000000..2b60b9667 --- /dev/null +++ b/api-ref/source/networking/v2/samples/vpn/vpn-endpoint-group-update-request.json @@ -0,0 +1,5 @@ +{ + "endpoint_group": { + "description": "New description" + } +} diff --git a/api-ref/source/networking/v2/samples/vpn/vpn-endpoint-group-update-response.json b/api-ref/source/networking/v2/samples/vpn/vpn-endpoint-group-update-response.json new file mode 100644 index 000000000..179114956 --- /dev/null +++ b/api-ref/source/networking/v2/samples/vpn/vpn-endpoint-group-update-response.json @@ -0,0 +1,13 @@ +{ + "endpoint_group": { + "description": "New description", + "tenant_id": "4ad57e7ce0b24fca8f12b9834d91079d", + "endpoints": [ + "10.2.0.0/24", + "10.3.0.0/24" + ], + "type": "cidr", + "id": "6ecd9cf3-ca64-46c7-863f-f2eb1b9e838a", + "name": "peers" + } +} diff --git a/api-ref/source/networking/v2/samples/vpn/vpn-endpoint-groups-list-response.json b/api-ref/source/networking/v2/samples/vpn/vpn-endpoint-groups-list-response.json new file mode 100644 index 000000000..b4170a464 --- /dev/null +++ b/api-ref/source/networking/v2/samples/vpn/vpn-endpoint-groups-list-response.json @@ -0,0 +1,25 @@ +{ + "endpoint_groups": [ + { + "description": "", + "tenant_id": "4ad57e7ce0b24fca8f12b9834d91079d", + "endpoints": [ + "a3da778c-adfb-46db-88b3-d2ce53290a89" + ], + "type": "subnet", + "id": "6bf34c7c-864c-4948-a6d4-db791669f9d4", + "name": "locals" + }, + { + "description": "", + "tenant_id": "4ad57e7ce0b24fca8f12b9834d91079d", + "endpoints": [ + "10.2.0.0/24", + "10.3.0.0/24" + ], + "type": "cidr", + "id": "6ecd9cf3-ca64-46c7-863f-f2eb1b9e838a", + "name": "peers" + } + ] +} diff --git a/api-ref/source/networking/v2/samples/vpn/vpnservice-create-request.json b/api-ref/source/networking/v2/samples/vpn/vpnservice-create-request.json new file mode 100644 index 000000000..01828b80a --- /dev/null +++ b/api-ref/source/networking/v2/samples/vpn/vpnservice-create-request.json @@ -0,0 +1,8 @@ +{ + "vpnservice": { + "subnet_id": null, + "router_id": "66e3b16c-8ce5-40fb-bb49-ab6d8dc3f2aa", + "name": "myservice", + "admin_state_up": true + } +} diff --git a/api-ref/source/networking/v2/samples/vpn/vpnservice-create-response.json b/api-ref/source/networking/v2/samples/vpn/vpnservice-create-response.json new file mode 100644 index 000000000..583c0ccf6 --- /dev/null +++ b/api-ref/source/networking/v2/samples/vpn/vpnservice-create-response.json @@ -0,0 +1,14 @@ +{ + "vpnservice": { + "router_id": "66e3b16c-8ce5-40fb-bb49-ab6d8dc3f2aa", + "status": "PENDING_CREATE", + "name": "myservice", + "external_v6_ip": "2001:db8::1", + "admin_state_up": true, + "subnet_id": null, + "tenant_id": "10039663455a446d8ba2cbb058b0f578", + "external_v4_ip": "172.32.1.11", + "id": "5c561d9d-eaea-45f6-ae3e-08d1a7080828", + "description": "" + } +} diff --git a/api-ref/source/networking/v2/samples/vpn/vpnservice-show-response.json b/api-ref/source/networking/v2/samples/vpn/vpnservice-show-response.json new file mode 100644 index 000000000..583c0ccf6 --- /dev/null +++ b/api-ref/source/networking/v2/samples/vpn/vpnservice-show-response.json @@ -0,0 +1,14 @@ +{ + "vpnservice": { + "router_id": "66e3b16c-8ce5-40fb-bb49-ab6d8dc3f2aa", + "status": "PENDING_CREATE", + "name": "myservice", + "external_v6_ip": "2001:db8::1", + "admin_state_up": true, + "subnet_id": null, + "tenant_id": "10039663455a446d8ba2cbb058b0f578", + "external_v4_ip": "172.32.1.11", + "id": "5c561d9d-eaea-45f6-ae3e-08d1a7080828", + "description": "" + } +} diff --git a/api-ref/source/networking/v2/samples/vpn/vpnservice-update-request.json b/api-ref/source/networking/v2/samples/vpn/vpnservice-update-request.json new file mode 100644 index 000000000..1e80c517e --- /dev/null +++ b/api-ref/source/networking/v2/samples/vpn/vpnservice-update-request.json @@ -0,0 +1,5 @@ +{ + "vpnservice": { + "description": "Updated description" + } +} diff --git a/api-ref/source/networking/v2/samples/vpn/vpnservice-update-response.json b/api-ref/source/networking/v2/samples/vpn/vpnservice-update-response.json new file mode 100644 index 000000000..cb152c8fb --- /dev/null +++ b/api-ref/source/networking/v2/samples/vpn/vpnservice-update-response.json @@ -0,0 +1,12 @@ +{ + "vpnservice": { + "router_id": "881b7b30-4efb-407e-a162-5630a7af3595", + "status": "ACTIVE", + "name": "myvpn", + "admin_state_up": true, + "subnet_id": null, + "tenant_id": "26de9cd6cae94c8cb9f79d660d628e1f", + "id": "41bfef97-af4e-4f6b-a5d3-4678859d2485", + "description": "Updated description" + } +} diff --git a/api-ref/source/networking/v2/samples/vpn/vpnservices-list-response.json b/api-ref/source/networking/v2/samples/vpn/vpnservices-list-response.json new file mode 100644 index 000000000..c30b5007c --- /dev/null +++ b/api-ref/source/networking/v2/samples/vpn/vpnservices-list-response.json @@ -0,0 +1,16 @@ +{ + "vpnservices": [ + { + "router_id": "66e3b16c-8ce5-40fb-bb49-ab6d8dc3f2aa", + "status": "PENDING_CREATE", + "name": "myservice", + "external_v6_ip": "2001:db8::1", + "admin_state_up": true, + "subnet_id": null, + "tenant_id": "10039663455a446d8ba2cbb058b0f578", + "external_v4_ip": "172.32.1.11", + "id": "5c561d9d-eaea-45f6-ae3e-08d1a7080828", + "description": "" + } + ] +} diff --git a/api-ref/source/networking/v2/service-type.inc b/api-ref/source/networking/v2/service-type.inc new file mode 100644 index 000000000..6fe0ca69e --- /dev/null +++ b/api-ref/source/networking/v2/service-type.inc @@ -0,0 +1,52 @@ +.. -*- rst -*- + +================= +Service providers +================= + +Lists service providers. + + +List service providers +====================== + +.. rest_method:: GET /v2.0/service-providers + +Lists service providers and their associated service types. + + +Normal response codes: 200 +Error response codes:404,409,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - default: default + - service_type: service_type + - service_providers: service_providers + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/service-type-response.json + :language: javascript + + + + + + + diff --git a/api-ref/source/networking/v2/subnets.inc b/api-ref/source/networking/v2/subnets.inc new file mode 100644 index 000000000..c5f3c33ff --- /dev/null +++ b/api-ref/source/networking/v2/subnets.inc @@ -0,0 +1,251 @@ +.. -*- rst -*- + +======= +Subnets +======= + +Lists, shows details for, creates, updates, and deletes subnet +resources. + + +List subnets +============ + +.. rest_method:: GET /v2.0/subnets + +Lists subnets to which the tenant has access. + +Default policy settings returns exclusively subnets owned by the +tenant submitting the request, unless the request is submitted by a +user with administrative rights. You can control which attributes +are returned by using the fields query parameter. You can filter +results by using query string parameters. + + +Normal response codes: 200 +Error response codes:401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/subnets/subnets-list-response.json + :language: javascript + + + + + +Create subnet +============= + +.. rest_method:: POST /v2.0/subnets + +Creates a subnet on a network. + +OpenStack Networking does not try to derive the correct IP version +from the CIDR. If you do not specify the ``gateway_ip`` attribute, +OpenStack Networking allocates an address from the CIDR for the +gateway for the subnet. + +To specify a subnet without a gateway, set the ``gateway_ip`` +attribute to ``null`` in the request body. If you do not specify +the ``allocation_pools`` attribute, OpenStack Networking +automatically allocates pools for covering all IP addresses in the +CIDR, excluding the address reserved for the subnet gateway. +Otherwise, you can explicitly specify allocation pools as shown in +the following example. + +When you specify both the ``allocation_pools`` and ``gateway_ip`` +attributes, you must ensure that the gateway IP does not overlap +with the allocation pools; otherwise, the call returns the +``Conflict (409)`` response code. + +A subnet can have one or more name servers and host routes. Hosts +in this subnet use the name servers. Devices with IP addresses from +this subnet, not including the local subnet route, use the host +routes. + +Specify the ``ipv6_ra_mode`` and ``ipv6_address_mode`` attributes +to create subnets that support IPv6 configurations, such as +stateless address autoconfiguration (SLAAC), DHCPv6 stateful, and +DHCPv6 stateless configurations. + +Error response codes:201,404,403,401,400,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + +Request Example +--------------- + +.. literalinclude:: ../samples/subnets/subnet-create-request.json + :language: javascript + + + + + + + + + + + + +Bulk create subnet +================== + +.. rest_method:: POST /v2.0/subnets + +Creates multiple subnets in a single request. Specify a list of subnets in the request body. + +The bulk create operation is always atomic. Either all or no +subnets in the request body are created. + +Error response codes:201,404,403,401,400,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + +Request Example +--------------- + +.. literalinclude:: ../samples/subnets/subnets-create-bulk-request.json + :language: javascript + + + + + + + + + + + + +Show subnet details +=================== + +.. rest_method:: GET /v2.0/subnets/{subnet_id} + +Shows details for a subnet. + +Use the fields query parameter to filter the results. + + +Normal response codes: 200 +Error response codes:404,401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - subnet_id: subnet_id + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/subnets/subnet-show-response.json + :language: javascript + + + + + + +Update subnet +============= + +.. rest_method:: PUT /v2.0/subnets/{subnet_id} + +Updates a subnet. + +Some attributes, such as IP version (ip_version), and CIDR (cidr) +cannot be updated. Attempting to update these attributes results in +a ``400 Bad Request`` error. + + +Normal response codes: 200 +Error response codes:404,403,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - subnet_id: subnet_id + +Request Example +--------------- + +.. literalinclude:: ../samples/subnets/subnet-update-request.json + :language: javascript + + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/subnets/subnet-update-response.json + :language: javascript + + + + + + + + +Delete subnet +============= + +.. rest_method:: DELETE /v2.0/subnets/{subnet_id} + +Deletes a subnet. + +The operation fails if subnet IP addresses are still allocated. + +Error response codes:409,404,204,401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - subnet_id: subnet_id + + + + + + + + diff --git a/api-ref/source/networking/v2/versions-networks-v2.inc b/api-ref/source/networking/v2/versions-networks-v2.inc new file mode 100644 index 000000000..8f04475fc --- /dev/null +++ b/api-ref/source/networking/v2/versions-networks-v2.inc @@ -0,0 +1,77 @@ +.. -*- rst -*- + +============ +API versions +============ + +Lists information for all Networking API versions. + + +Show API v2 details +=================== + +.. rest_method:: GET /v2.0 + +Shows details for Networking API v2.0. + + +Normal response codes: 200 +Error response codes:203, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - location: location + + + +Response Example +---------------- + +.. literalinclude:: ../samples/networks/version-show-response.json + :language: javascript + + + + + +List API versions +================= + +.. rest_method:: GET / + +Lists information about all Networking API versions. + + +Normal response codes: 200 +Error response codes:300, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + + +Response Example +---------------- + +.. literalinclude:: ../samples/networks/versions-list-response.json + :language: javascript + + + diff --git a/api-ref/source/objectstorage/v1/parameters.yaml b/api-ref/source/objectstorage/v1/parameters.yaml new file mode 100644 index 000000000..b9babe023 --- /dev/null +++ b/api-ref/source/objectstorage/v1/parameters.yaml @@ -0,0 +1,972 @@ +# variables in header +Accept: + description: | + Instead of using the ``format`` query parameter, + set this header to ``application/json``, ``application/xml``, or + ``text/xml``. + in: header + required: false + type: string +Accept-Ranges: + description: | + The type of ranges that the object accepts. + in: header + required: true + type: string +Content-Disposition: + description: | + If set, specifies the override behavior for the + browser. For example, this header might specify that the browser + use a download program to save this file rather than show the + file, which is the default. + in: header + required: false + type: string +Content-Disposition_1: + description: | + If set, specifies the override behavior for the + browser. For example, this header might specify that the browser + use a download program to save this file rather than show the + file, which is the default. If not set, this header is not + returned by this operation. + in: header + required: false + type: string +Content-Encoding: + description: | + If set, the value of the ``Content-Encoding`` + metadata. + in: header + required: false + type: string +Content-Encoding_1: + description: | + If set, the value of the ``Content-Encoding`` + metadata. If not set, the operation does not return this header. + in: header + required: false + type: string +Content-Length: + description: | + If the operation succeeds, this value is zero + (0). If the operation fails, this value is the length of the error + text in the response body. + in: header + required: true + type: string +Content-Length_1: + description: | + Set to the length of the object content. Do not + set if chunked transfer encoding is being used. + in: header + required: false + type: integer +Content-Length_2: + description: | + The length of the response body that contains the + list of names. If the operation fails, this value is the length of + the error text in the response body. + in: header + required: true + type: string +Content-Length_3: + description: | + HEAD operations do not return content. The + ``Content-Length`` header value is not the size of the response + body but is the size of the object, in bytes. + in: header + required: true + type: string +Content-Length_4: + description: | + The length of the object content in the response + body, in bytes. + in: header + required: true + type: string +Content-Type: + description: | + Changes the MIME type for the object. + in: header + required: false + type: string +Content-Type_1: + description: | + If the operation fails, this value is the MIME + type of the error text in the response body. + in: header + required: true + type: string +Content-Type_2: + description: | + The MIME type of the object. + in: header + required: true + type: string +Content-Type_3: + description: | + The MIME type of the list of names. If the + operation fails, this value is the MIME type of the error text in + the response body. + in: header + required: true + type: string +Date: + description: | + The transaction date and time. + + The date and time stamp format is `ISO 8601 + `_: + + :: + + CCYY-MM-DDThh:mm:ss±hh:mm + + For example, ``2015-08-27T09:49:58-05:00``. + + The ``±hh:mm`` value, if included, is the time zone as an offset + from UTC. In the previous example, the offset value is ``-05:00``. + + A ``null`` value indicates that the token never expires. + in: header + required: true + type: string +Destination: + description: | + The container and object name of the destination + object in the form of ``/container/object``. You must UTF-8-encode + and then URL-encode the names of the destination container and + object before you include them in this header. + in: header + required: true + type: string +ETag: + description: | + The MD5 checksum of the copied object content. + The value is not quoted. + in: header + required: true + type: string +ETag_1: + description: | + The MD5 checksum value of the request body. For + example, the MD5 checksum value of the object content. You are + strongly recommended to compute the MD5 checksum value of object + content and include it in the request. This enables the Object + Storage API to check the integrity of the upload. The value is not + quoted. + in: header + required: false + type: string +ETag_2: + description: | + For objects smaller than 5 GB, this value is the + MD5 checksum of the object content. The value is not quoted. For + manifest objects, this value is the MD5 checksum of the + concatenated string of MD5 checksums and ETags for each of the + segments in the manifest, and not the MD5 checksum of the content + that was downloaded. Also the value is enclosed in double-quote + characters. You are strongly recommended to compute the MD5 + checksum of the response body as it is received and compare this + value with the one in the ETag header. If they differ, the content + was corrupted, so retry the operation. + in: header + required: true + type: string +If-Match: + description: | + See `Request for Comments: 2616 + `_. + in: header + required: false + type: string +If-Modified-Since: + description: | + See `Request for Comments: 2616 + `_. + in: header + required: false + type: string +If-None-Match: + description: | + In combination with ``Expect: 100-Continue``, + specify an ``"If- None-Match: *"`` header to query whether the + server already has a copy of the object before any data is sent. + in: header + required: false + type: string +If-Unmodified-Since: + description: | + See `Request for Comments: 2616 + `_. + in: header + required: false + type: string +Last-Modified: + description: | + The date and time when the object was created or its metadata was + changed. + + The date and time stamp format is `ISO 8601 + `_: + + :: + + CCYY-MM-DDThh:mm:ss±hh:mm + + For example, ``2015-08-27T09:49:58-05:00``. + + The ``±hh:mm`` value, if included, is the time zone as an offset + from UTC. In the previous example, the offset value is ``-05:00``. + in: header + required: true + type: string +Range: + description: | + The ranges of content to get. You can use the + ``Range`` header to get portions of data by using one or more + range specifications. To specify many ranges, separate the range + specifications with a comma. The types of range specifications + are: - **Byte range specification**. Use FIRST_BYTE_OFFSET to + specify the start of the data range, and LAST_BYTE_OFFSET to + specify the end. You can omit the LAST_BYTE_OFFSET and if you + do, the value defaults to the offset of the last byte of data. + - **Suffix byte range specification**. Use LENGTH bytes to specify + the length of the data range. The following forms of the header + specify the following ranges of data: - ``Range: bytes=-5``. The + last five bytes. - ``Range: bytes=10-15``. The five bytes of data + after a 10-byte offset. - ``Range: bytes=10-15,-5``. A multi- + part response that contains the last five bytes and the five + bytes of data after a 10-byte offset. The ``Content-Type`` + response header contains ``multipart/byteranges``. - ``Range: + bytes=4-6``. Bytes 4 to 6 inclusive. - ``Range: bytes=2-2``. Byte + 2, the third byte of the data. - ``Range: bytes=6-``. Byte 6 and + after. - ``Range: bytes=1-3,2-5``. A multi-part response that + contains bytes 1 to 3 inclusive, and bytes 2 to 5 inclusive. The + ``Content-Type`` response header contains + ``multipart/byteranges``. + in: header + required: false + type: string +Transfer-Encoding: + description: | + Set to ``chunked`` to enable chunked transfer + encoding. If used, do not set the ``Content-Length`` header to a + non-zero value. + in: header + required: false + type: string +X-Account-Bytes-Used: + description: | + The total number of bytes that are stored in + Object Storage for the account. + in: header + required: true + type: integer +X-Account-Container-Count: + description: | + The number of containers. + in: header + required: true + type: integer +X-Account-Meta-Temp-URL-Key: + description: | + The secret key value for temporary URLs. If not + set, this header is not returned in the response. + in: header + required: false + type: string +X-Account-Meta-Temp-URL-Key-2: + description: | + A second secret key value for temporary URLs. If + not set, this header is not returned in the response. + in: header + required: false + type: string +X-Account-Meta-Temp-URL-Key-2_1: + description: | + A second secret key value for temporary URLs. The + second key enables you to rotate keys by having two active keys at + the same time. + in: header + required: false + type: string +X-Account-Meta-Temp-URL-Key_1: + description: | + The secret key value for temporary URLs. + in: header + required: false + type: string +X-Account-Meta-name: + description: | + The custom account metadata item, where + ``{name}`` is the name of the metadata item. One ``X-Account- + Meta- {name}`` response header appears for each metadata item (for + each ``{name}``). + in: header + required: false + type: string +X-Account-Meta-name_1: + description: | + The account metadata. The ``{name}`` is the name + of metadata item that you want to add, update, or delete. To + delete this item, send an empty value in this header. You must + specify an ``X-Account-Meta- {name}`` header for each metadata + item (for each ``{name}``) that you want to add, update, or + delete. + in: header + required: false + type: string +X-Account-Object-Count: + description: | + The number of objects in the account. + in: header + required: true + type: integer +X-Auth-Token: + description: | + Authentication token. If you omit this header, + your request fails unless the account owner has granted you access + through an access control list (ACL). + in: header + required: false + type: string +X-Auth-Token_1: + description: | + Authentication token. + in: header + required: true + type: string +X-Container-Bytes-Used: + description: | + The total number of bytes used. + in: header + required: true + type: integer +X-Container-Meta-Access-Control-Allow-Origin: + description: | + Originating URLs allowed to make cross-origin + requests (CORS), separated by spaces. This heading applies to the + container only, and all objects within the container with this + header applied are CORS-enabled for the allowed origin URLs. A + browser (user-agent) typically issues a `preflighted request + `_ , which is an OPTIONS call + that verifies the origin is allowed to make the request. The + Object Storage service returns 200 if the originating URL is + listed in this header parameter, and issues a 401 if the + originating URL is not allowed to make a cross-origin request. + Once a 200 is returned, the browser makes a second request to the + Object Storage service to retrieve the CORS-enabled object. + in: header + required: false + type: string +X-Container-Meta-Access-Control-Expose-Headers: + description: | + Headers the Object Storage service exposes to the + browser (technically, through the ``user-agent`` setting), in the + request response, separated by spaces. By default the Object + Storage service returns the following values for this header: - + All “simple response headers” as listed on + `http://www.w3.org/TR/cors/#simple-response-header + `_. - The + headers ``etag``, ``x-timestamp``, ``x-trans-id``. - All metadata + headers (``X-Container-Meta-*`` for containers and ``X-Object- + Meta-*`` for objects) headers listed in ``X-Container- Meta- + Access-Control-Expose-Headers``. + in: header + required: false + type: string +X-Container-Meta-Access-Control-Max-Age: + description: | + Maximum time for the origin to hold the preflight + results. A browser may make an OPTIONS call to verify the origin + is allowed to make the request. Set the value to an integer number + of seconds after the time that the request was received. + in: header + required: false + type: string +X-Container-Meta-Quota-Bytes: + description: | + Sets maximum size of the container, in bytes. + Typically these values are set by an administrator. Returns a 413 + response (request entity too large) when an object PUT operation + exceeds this quota value. + in: header + required: false + type: string +X-Container-Meta-Quota-Count: + description: | + Sets maximum object count of the container. + Typically these values are set by an administrator. Returns a 413 + response (request entity too large) when an object PUT operation + exceeds this quota value. + in: header + required: false + type: string +X-Container-Meta-Temp-URL-Key: + description: | + The secret key value for temporary URLs. + in: header + required: false + type: string +X-Container-Meta-Temp-URL-Key-2: + description: | + A second secret key value for temporary URLs. The + second key enables you to rotate keys by having two active keys at + the same time. + in: header + required: false + type: string +X-Container-Meta-Web-Directory-Type: + description: | + Sets the content-type of directory marker + objects. If the header is not set, default is + ``application/directory``. Directory marker objects are 0-byte + objects that represent directories to create a simulated + hierarchical structure. For example, if you set ``"X-Container- + Meta-Web-Directory- Type: text/directory"``, Object Storage treats + 0-byte objects with a content-type of ``text/directory`` as + directories rather than objects. + in: header + required: false + type: string +X-Container-Meta-name: + description: | + The container metadata, where ``{name}`` is the + name of metadata item. You must specify an ``X-Container-Meta- + {name}`` header for each metadata item (for each ``{name}``) that + you want to add or update. + in: header + required: false + type: string +X-Container-Meta-name_1: + description: | + The custom container metadata item, where + ``{name}`` is the name of the metadata item. One ``X-Container- + Meta- {name}`` response header appears for each metadata item (for + each ``{name}``). + in: header + required: true + type: string +X-Container-Object-Count: + description: | + The number of objects. + in: header + required: true + type: integer +X-Container-Read: + description: | + Sets a container access control list (ACL) that grants read access. + Container ACLs are available on any Object Storage cluster, and are + enabled by container rather than by cluster. + + To set the container read ACL: + + .. code-block:: bash + + $ curl -X {PUT|POST} -i -H "X-Auth-Token: TOKEN" -H \ + "X-Container-Read: ACL" STORAGE_URL/CONTAINER + + For example: + + .. code-block:: bash + + $ curl -X PUT -i \ + -H "X-Auth-Token: 0101010101" \ + -H "X-Container-Read: .r:*" \ + http://swift.example.com/v1/AUTH_bob/read_container + + In the command, specify the ACL in the ``X-Container-Read`` header, + as follows: + + - ``.r:*`` All referrers. + + - ``.r:example.com,swift.example.com`` Comma-separated list of + referrers. + + - ``.rlistings`` Container listing access. + + - ``AUTH_username`` Access to a user who authenticates through a + legacy or non-OpenStack-Identity-based authentication system. + + - ``LDAP_`` Access to all users who authenticate through an LDAP- + based legacy or non-OpenStack-Identity-based authentication + system. + in: header + required: false + type: string +X-Container-Read_1: + description: | + The ACL that grants read access. If not set, this + header is not returned by this operation. + in: header + required: false + type: string +X-Container-Sync-Key: + description: | + Sets the secret key for container + synchronization. If you remove the secret key, synchronization is + halted. + in: header + required: false + type: string +X-Container-Sync-Key_1: + description: | + The secret key for container synchronization. If + not set, this header is not returned by this operation. + in: header + required: false + type: string +X-Container-Sync-To: + description: | + Sets the destination for container + synchronization. Used with the secret key indicated in the ``X + -Container-Sync-Key`` header. If you want to stop a container from + synchronizing, send a blank value for the ``X-Container-Sync-Key`` + header. + in: header + required: false + type: string +X-Container-Sync-To_1: + description: | + The destination for container synchronization. If + not set, this header is not returned by this operation. + in: header + required: false + type: string +X-Container-Write: + description: | + Sets an ACL that grants write access. + in: header + required: false + type: string +X-Container-Write_1: + description: | + The ACL that grants write access. If not set, + this header is not returned by this operation. + in: header + required: false + type: string +X-Copied-From: + description: | + For a copied object, shows the container and + object name from which the new object was copied. The value is in + the ``{container}/{object}`` format. + in: header + required: false + type: string +X-Copied-From-Last-Modified: + description: | + For a copied object, the date and time in `UNIX + Epoch time stamp format + `_ when the container and + object name from which the new object was copied was last + modified. For example, ``1440619048`` is equivalent to ``Mon, + Wed, 26 Aug 2015 19:57:28 GMT``. + in: header + required: false + type: integer +X-Copy-From: + description: | + If set, this is the name of an object used to + create the new object by copying the ``X-Copy-From`` object. The + value is in form ``{container}/{object}``. You must UTF-8-encode + and then URL-encode the names of the container and object before + you include them in the header. Using PUT with ``X-Copy-From`` + has the same effect as using the COPY operation to copy an object. + Using ``Range`` header with ``X-Copy-From`` will create a new + partial copied object with bytes set by ``Range``. + in: header + required: false + type: string +X-Delete-After: + description: | + The number of seconds after which the system + removes the object. Internally, the Object Storage system stores + this value in the ``X -Delete-At`` metadata item. + in: header + required: false + type: integer +X-Delete-At: + description: | + The date and time in `UNIX Epoch time stamp + format `_ when the system + removes the object. For example, ``1440619048`` is equivalent to + ``Mon, Wed, 26 Aug 2015 19:57:28 GMT``. + in: header + required: false + type: integer +X-Delete-At_1: + description: | + If set, the date and time in `UNIX Epoch time + stamp format `_ when the + system deletes the object. For example, ``1440619048`` is + equivalent to ``Mon, Wed, 26 Aug 2015 19:57:28 GMT``. If not set, + this operation does not return this header. + in: header + required: false + type: integer +X-Detect-Content-Type: + description: | + If set to ``true``, Object Storage guesses the + content type based on the file extension and ignores the value + sent in the ``Content- Type`` header, if present. + in: header + required: false + type: boolean +X-Fresh-Metadata: + description: | + Enables object creation that omits existing user + metadata. If set to ``true``, the COPY request creates an object + without existing user metadata. Default value is ``false``. + in: header + required: false + type: boolean +X-Newest: + description: | + If set to true , Object Storage queries all + replicas to return the most recent one. If you omit this header, + Object Storage responds faster after it finds one valid replica. + Because setting this header to true is more expensive for the back + end, use it only when it is absolutely needed. + in: header + required: false + type: boolean +X-Object-Manifest: + description: | + Set to specify that this is a dynamic large + object manifest object. The value is the container and object name + prefix of the segment objects in the form ``container/prefix``. + You must UTF-8-encode and then URL-encode the names of the + container and prefix before you include them in this header. + in: header + required: false + type: string +X-Object-Manifest_1: + description: | + If set, to this is a dynamic large object + manifest object. The value is the container and object name prefix + of the segment objects in the form ``container/prefix``. + in: header + required: false + type: string +X-Object-Meta-name: + description: | + The object metadata, where ``{name}`` is the name + of the metadata item. You must specify an ``X-Object-Meta- + {name}`` header for each metadata ``{name}`` item that you want to + add or update. + in: header + required: false + type: string +X-Object-Meta-name_1: + description: | + The custom object metadata item, where ``{name}`` + is the name of the metadata item. One ``X-Object-Meta- {name}`` + response header appears for each metadata ``{name}`` item. + in: header + required: true + type: string +X-Remove-Container-name: + description: | + Removes the metadata item named ``{name}``. For + example, ``X -Remove-Container-Read`` removes the ``X-Container- + Read`` metadata item. + in: header + required: false + type: string +X-Remove-Versions-Location: + description: | + Set to any value to disable versioning. + in: header + required: false + type: string +X-Static-Large-Object: + description: | + Set to ``true`` if this object is a static large + object manifest object. + in: header + required: true + type: boolean +X-Timestamp: + description: | + The date and time in `UNIX Epoch time stamp + format `_ when the + account, container, or object was initially created as a current + version. For example, ``1440619048`` is equivalent to ``Mon, Wed, + 26 Aug 2015 19:57:28 GMT``. + in: header + required: true + type: integer +X-Trans-Id: + description: | + A unique transaction ID for this request. Your + service provider might need this value if you report a problem. + in: header + required: true + type: string +X-Trans-Id-Extra: + description: | + Extra transaction information. Use the ``X-Trans- + Id-Extra`` request header to include extra information to help you + debug any errors that might occur with large object upload and + other Object Storage transactions. Object Storage appends the + first 32 characters of the ``X-Trans-Id- Extra`` request header + value to the transaction ID value in the generated ``X-Trans-Id`` + response header. You must UTF-8-encode and then URL-encode the + extra transaction information before you include it in the ``X + -Trans-Id-Extra`` request header. For example, you can include + extra transaction information when you upload `large objects + `_ such as images. When + you upload each segment and the manifest, include the same value + in the ``X-Trans-Id-Extra`` request header. If an error occurs, + you can find all requests that are related to the large object + upload in the Object Storage logs. You can also use ``X-Trans-Id- + Extra`` strings to help operators debug requests that fail to + receive responses. The operator can search for the extra + information in the logs. + in: header + required: false + type: string +X-Versions-Location: + description: | + Enables versioning on this container. The value + is the name of another container. You must UTF-8-encode and then + URL-encode the name before you include it in the header. To + disable versioning, set the header to an empty string. + in: header + required: false + type: string +X-Versions-Location_1: + description: | + Enables versioning on this container. The value + is the name of another container. You must UTF-8-encode and then + URL-encode the name before you include it in the header. To + disable versioning, set the header to an empty string. + in: header + required: true + type: string + +# variables in path +account: + description: | + The unique name for the account. An account is + also known as the project or tenant. + in: path + required: false + type: string +container: + description: | + The unique name for the container. The container + name must be from 1 to 256 characters long and can start with any + character and contain any pattern. Character set must be UTF-8. + The container name cannot contain a slash (``/``) character + because this character delimits the container and object name. For + example, ``/account/container/object``. + in: path + required: false + type: string +object: + description: | + The unique name for the object. + in: path + required: false + type: string + +# variables in query +delimiter: + description: | + Delimiter value, which returns the object names + that are nested in the container. If you do not set a prefix and + set the delimiter to "/" you may get unexpected results where all + the objects are returned instead of only those with the delimiter + set. + in: query + required: false + type: string +end_marker: + description: | + For a string value, x , returns container names + that are less than the marker value. + in: query + required: false + type: string +filename: + description: | + Overrides the default file name. Object Storage + generates a default file name for GET temporary URLs that is based + on the object name. Object Storage returns this value in the + ``Content-Disposition`` response header. Browsers can interpret + this file name value as a file attachment to save. For more + information about temporary URLs, see `Temporary URL middleware + `_. + in: query + required: false + type: string +format: + description: | + The response format. Valid values are ``json``, + ``xml``, or ``plain``. The default is ``plain``. If you append + the ``format=xml`` or ``format=json`` query parameter to the + storage account URL, the response shows extended container + information serialized in that format. If you append the + ``format=plain`` query parameter, the response lists the container + names separated by newlines. + in: query + required: false + type: string +limit: + description: | + For an integer value n , limits the number of + results to n . + in: query + required: false + type: integer +marker: + description: | + For a string value, x , returns container names + that are greater than the marker value. + in: query + required: false + type: string +multipart-manifest: + description: | + If ``?multipart-manifest=put``, the object is a + static large object manifest and the body contains the manifest. + in: query + required: false + type: string +multipart-manifest_1: + description: | + If you include the ``multipart-manifest=delete`` + query parameter and the object is a static large object, the + segment objects and manifest object are deleted. If you omit the + ``multipart- manifest=delete`` query parameter and the object is a + static large object, the manifest object is deleted but the + segment objects are not deleted. For a bulk delete, the response + body looks the same as it does for a normal bulk delete. In + contrast, a plain object DELETE response has an empty body. + in: query + required: false + type: string +multipart-manifest_2: + description: | + If you include the ``multipart-manifest=get`` + query parameter and the object is a large object, the object + contents are not returned. Instead, the manifest is returned in + the ``X-Object-Manifest`` response header for dynamic large + objects or in the response body for static large objects. + in: query + required: false + type: string +path: + description: | + For a string value, returns the object names that + are nested in the pseudo path. + in: query + required: false + type: string +prefix: + description: | + Prefix value. Named items in the response begin + with this value. + in: query + required: false + type: string +swiftinfo_expires: + description: | + Filters the response by the expiration date and + time in `UNIX Epoch time stamp format + `_. For example, + ``1440619048`` is equivalent to ``Mon, Wed, 26 Aug 2015 19:57:28 + GMT``. + in: query + required: false + type: integer +swiftinfo_sig: + description: | + A hash-based message authentication code (HMAC) + that enables access to administrator-only information. To use this + parameter, the ``swiftinfo_expires`` parameter is also required. + in: query + required: false + type: string +temp_url_expires: + description: | + The date and time in `UNIX Epoch time stamp + format `_ when the + signature for temporary URLs expires. For example, ``1440619048`` + is equivalent to ``Mon, Wed, 26 Aug 2015 19:57:28 GMT``. For more + information about temporary URLs, see `Temporary URL middleware + `_. + in: query + required: true + type: integer +temp_url_sig: + description: | + Used with temporary URLs to sign the request with + an HMAC-SHA1 cryptographic signature that defines the allowed HTTP + method, expiration date, full path to the object, and the secret + key for the temporary URL. For more information about temporary + URLs, see `Temporary URL middleware + `_. + in: query + required: true + type: string + +# variables in body +bytes: + description: | + The total number of bytes that are stored in + Object Storage for the account. + in: body + required: true + type: integer +content_type: + description: | + The content type of the object. + in: body + required: true + type: string +count: + description: | + The number of objects in the container. + in: body + required: true + type: integer +hash: + description: | + The MD5 checksum value of the object content. + in: body + required: true + type: string +last_modified: + description: | + The date and time when the object was last modified. + + The date and time stamp format is `ISO 8601 + `_: + + :: + + CCYY-MM-DDThh:mm:ss±hh:mm + + For example, ``2015-08-27T09:49:58-05:00``. + + The ``±hh:mm`` value, if included, is the time zone as an offset + from UTC. In the previous example, the offset value is ``-05:00``. + in: body + required: true + type: string +name: + description: | + The name of the container. + in: body + required: true + type: string + diff --git a/api-ref/source/objectstorage/v1/samples/account-containers-list-http-request-json.txt b/api-ref/source/objectstorage/v1/samples/account-containers-list-http-request-json.txt new file mode 100644 index 000000000..a4b315556 --- /dev/null +++ b/api-ref/source/objectstorage/v1/samples/account-containers-list-http-request-json.txt @@ -0,0 +1 @@ +curl -i https://23.253.72.207/v1/$account?format=json -X GET -H "X-Auth-Token: $token" \ No newline at end of file diff --git a/api-ref/source/objectstorage/v1/samples/account-containers-list-http-request-xml.txt b/api-ref/source/objectstorage/v1/samples/account-containers-list-http-request-xml.txt new file mode 100644 index 000000000..cf255617f --- /dev/null +++ b/api-ref/source/objectstorage/v1/samples/account-containers-list-http-request-xml.txt @@ -0,0 +1,2 @@ +curl -i https://23.253.72.207/v1/$account?format=xml \ + -X GET -H "X-Auth-Token: $token" \ No newline at end of file diff --git a/api-ref/source/objectstorage/v1/samples/account-containers-list-http-response-json.txt b/api-ref/source/objectstorage/v1/samples/account-containers-list-http-response-json.txt new file mode 100644 index 000000000..0cdba62a8 --- /dev/null +++ b/api-ref/source/objectstorage/v1/samples/account-containers-list-http-response-json.txt @@ -0,0 +1,11 @@ +HTTP/1.1 200 OK +Content-Length: 96 +X-Account-Object-Count: 1 +X-Timestamp: 1389453423.35964 +X-Account-Meta-Subject: Literature +X-Account-Bytes-Used: 14 +X-Account-Container-Count: 2 +Content-Type: application/json; charset=utf-8 +Accept-Ranges: bytes +X-Trans-Id: tx274a77a8975c4a66aeb24-0052d95365 +Date: Fri, 17 Jan 2014 15:59:33 GMT \ No newline at end of file diff --git a/api-ref/source/objectstorage/v1/samples/account-containers-list-http-response-xml.txt b/api-ref/source/objectstorage/v1/samples/account-containers-list-http-response-xml.txt new file mode 100644 index 000000000..6ad781aae --- /dev/null +++ b/api-ref/source/objectstorage/v1/samples/account-containers-list-http-response-xml.txt @@ -0,0 +1,11 @@ +HTTP/1.1 200 OK +Content-Length: 262 +X-Account-Object-Count: 1 +X-Timestamp: 1389453423.35964 +X-Account-Meta-Subject: Literature +X-Account-Bytes-Used: 14 +X-Account-Container-Count: 2 +Content-Type: application/xml; charset=utf-8 +Accept-Ranges: bytes +X-Trans-Id: tx69f60bc9f7634a01988e6-0052d9544b +Date: Fri, 17 Jan 2014 16:03:23 GMT \ No newline at end of file diff --git a/api-ref/source/objectstorage/v1/samples/account-containers-list-response.json b/api-ref/source/objectstorage/v1/samples/account-containers-list-response.json new file mode 100644 index 000000000..4ae34aa4c --- /dev/null +++ b/api-ref/source/objectstorage/v1/samples/account-containers-list-response.json @@ -0,0 +1,12 @@ +[ + { + "count": 0, + "bytes": 0, + "name": "janeausten" + }, + { + "count": 1, + "bytes": 14, + "name": "marktwain" + } +] diff --git a/api-ref/source/objectstorage/v1/samples/account-containers-list-response.xml b/api-ref/source/objectstorage/v1/samples/account-containers-list-response.xml new file mode 100644 index 000000000..d8f51cfa0 --- /dev/null +++ b/api-ref/source/objectstorage/v1/samples/account-containers-list-response.xml @@ -0,0 +1,13 @@ + + + + janeausten + 0 + 0 + + + marktwain + 1 + 14 + + diff --git a/api-ref/source/objectstorage/v1/samples/capabilities-list-response.json b/api-ref/source/objectstorage/v1/samples/capabilities-list-response.json new file mode 100644 index 000000000..bcc91f7d5 --- /dev/null +++ b/api-ref/source/objectstorage/v1/samples/capabilities-list-response.json @@ -0,0 +1,7 @@ +{ + "swift": { + "version": "1.11.0" + }, + "staticweb": {}, + "tempurl": {} +} diff --git a/api-ref/source/objectstorage/v1/samples/containers-list-http-request.txt b/api-ref/source/objectstorage/v1/samples/containers-list-http-request.txt new file mode 100644 index 000000000..4101ce80e --- /dev/null +++ b/api-ref/source/objectstorage/v1/samples/containers-list-http-request.txt @@ -0,0 +1,3 @@ +GET /{api_version}/{account} HTTP/1.1 +Host: storage.swiftdrive.com +X-Auth-Token: eaaafd18-0fed-4b3a-81b4-663c99ec1cbb \ No newline at end of file diff --git a/api-ref/source/objectstorage/v1/samples/containers-list-http-response.txt b/api-ref/source/objectstorage/v1/samples/containers-list-http-response.txt new file mode 100644 index 000000000..43070e523 --- /dev/null +++ b/api-ref/source/objectstorage/v1/samples/containers-list-http-response.txt @@ -0,0 +1,9 @@ +HTTP/1.1 200 Ok +Date: Thu, 07 Jun 2010 18:57:07 GMT +Content-Type: text/plain; charset=UTF-8 +Content-Length: 32 + +images +movies +documents +backups \ No newline at end of file diff --git a/api-ref/source/objectstorage/v1/samples/endpoints-list-response-headers.json b/api-ref/source/objectstorage/v1/samples/endpoints-list-response-headers.json new file mode 100644 index 000000000..a6de5f068 --- /dev/null +++ b/api-ref/source/objectstorage/v1/samples/endpoints-list-response-headers.json @@ -0,0 +1,14 @@ +{ + "endpoints": [ + "http://storage01.swiftdrive.com:6008/d8/583/AUTH_dev/EC_cont1/obj", + "http://storage02.swiftdrive.com:6008/d2/583/AUTH_dev/EC_cont1/obj", + "http://storage02.swiftdrive.com:6006/d3/583/AUTH_dev/EC_cont1/obj", + "http://storage02.swiftdrive.com:6008/d5/583/AUTH_dev/EC_cont1/obj", + "http://storage01.swiftdrive.com:6007/d7/583/AUTH_dev/EC_cont1/obj", + "http://storage02.swiftdrive.com:6007/d4/583/AUTH_dev/EC_cont1/obj", + "http://storage01.swiftdrive.com:6006/d6/583/AUTH_dev/EC_cont1/obj" + ], + "headers": { + "X-Backend-Storage-Policy-Index": "2" + } +} diff --git a/api-ref/source/objectstorage/v1/samples/endpoints-list-response.json b/api-ref/source/objectstorage/v1/samples/endpoints-list-response.json new file mode 100644 index 000000000..eeba7c173 --- /dev/null +++ b/api-ref/source/objectstorage/v1/samples/endpoints-list-response.json @@ -0,0 +1,8 @@ +{ + "endpoints": [ + "http://storage02.swiftdrive:6002/d2/617/AUTH_dev", + "http://storage01.swiftdrive:6002/d8/617/AUTH_dev", + "http://storage01.swiftdrive:6002/d11/617/AUTH_dev" + ], + "headers": {} +} diff --git a/api-ref/source/objectstorage/v1/samples/goodbyeworld.txt b/api-ref/source/objectstorage/v1/samples/goodbyeworld.txt new file mode 100644 index 000000000..aebc9c0c0 --- /dev/null +++ b/api-ref/source/objectstorage/v1/samples/goodbyeworld.txt @@ -0,0 +1 @@ +Goodbye World! \ No newline at end of file diff --git a/api-ref/source/objectstorage/v1/samples/helloworld.txt b/api-ref/source/objectstorage/v1/samples/helloworld.txt new file mode 100644 index 000000000..6900abf34 --- /dev/null +++ b/api-ref/source/objectstorage/v1/samples/helloworld.txt @@ -0,0 +1 @@ +Hello World Again! \ No newline at end of file diff --git a/api-ref/source/objectstorage/v1/samples/objects-list-http-response-json.txt b/api-ref/source/objectstorage/v1/samples/objects-list-http-response-json.txt new file mode 100644 index 000000000..2efe63a3f --- /dev/null +++ b/api-ref/source/objectstorage/v1/samples/objects-list-http-response-json.txt @@ -0,0 +1,10 @@ +HTTP/1.1 200 OK +Content-Length: 341 +X-Container-Object-Count: 2 +Accept-Ranges: bytes +X-Container-Meta-Book: TomSawyer +X-Timestamp: 1389727543.65372 +X-Container-Bytes-Used: 26 +Content-Type: application/json; charset=utf-8 +X-Trans-Id: tx26377fe5fab74869825d1-0052d6bdff +Date: Wed, 15 Jan 2014 16:57:35 GMT \ No newline at end of file diff --git a/api-ref/source/objectstorage/v1/samples/objects-list-http-response-xml.txt b/api-ref/source/objectstorage/v1/samples/objects-list-http-response-xml.txt new file mode 100644 index 000000000..eb17bb2a6 --- /dev/null +++ b/api-ref/source/objectstorage/v1/samples/objects-list-http-response-xml.txt @@ -0,0 +1,10 @@ +HTTP/1.1 200 OK +Content-Length: 500 +X-Container-Object-Count: 2 +Accept-Ranges: bytes +X-Container-Meta-Book: TomSawyer +X-Timestamp: 1389727543.65372 +X-Container-Bytes-Used: 26 +Content-Type: application/xml; charset=utf-8 +X-Trans-Id: txc75ea9a6e66f47d79e0c5-0052d6be76 +Date: Wed, 15 Jan 2014 16:59:35 GMT \ No newline at end of file diff --git a/api-ref/source/objectstorage/v1/samples/objects-list-response.json b/api-ref/source/objectstorage/v1/samples/objects-list-response.json new file mode 100644 index 000000000..b104d3a9a --- /dev/null +++ b/api-ref/source/objectstorage/v1/samples/objects-list-response.json @@ -0,0 +1,16 @@ +[ + { + "hash": "451e372e48e0f6b1114fa0724aa79fa1", + "last_modified": "2014-01-15T16:41:49.390270", + "bytes": 14, + "name": "goodbye", + "content_type": "application/octet-stream" + }, + { + "hash": "ed076287532e86365e841e92bfc50d8c", + "last_modified": "2014-01-15T16:37:43.427570", + "bytes": 12, + "name": "helloworld", + "content_type": "application/octet-stream" + } +] diff --git a/api-ref/source/objectstorage/v1/samples/objects-list-response.xml b/api-ref/source/objectstorage/v1/samples/objects-list-response.xml new file mode 100644 index 000000000..07fda614c --- /dev/null +++ b/api-ref/source/objectstorage/v1/samples/objects-list-response.xml @@ -0,0 +1,17 @@ + + + + goodbye + 451e372e48e0f6b1114fa0724aa79fa1 + 14 + application/octet-stream + 2014-01-15T16:41:49.390270 + + + helloworld + ed076287532e86365e841e92bfc50d8c + 12 + application/octet-stream + 2014-01-15T16:37:43.427570 + + diff --git a/api-ref/source/objectstorage/v1/storage-account-services.inc b/api-ref/source/objectstorage/v1/storage-account-services.inc new file mode 100644 index 000000000..17f228c54 --- /dev/null +++ b/api-ref/source/objectstorage/v1/storage-account-services.inc @@ -0,0 +1,380 @@ +.. -*- rst -*- + +======== +Accounts +======== + +Lists containers for an account. Creates, updates, shows, and +deletes account metadata. + +Account metadata operations work differently than container and +object metadata operations work. Depending on the contents of your +POST account metadata request, the Object Storage API updates the +metadata in one of these ways: + +**Account metadata operations** + ++----------------------------------------------------------+---------------------------------------------------------------+ +| POST request body contains | Description | ++----------------------------------------------------------+---------------------------------------------------------------+ +| A metadata key without a value. | The API removes the metadata item from the account. | +| | | +| The metadata key already exists for the account. | | ++----------------------------------------------------------+---------------------------------------------------------------+ +| A metadata key without a value. | The API ignores the metadata key. | +| | | +| The metadata key does not already exist for the account. | | ++----------------------------------------------------------+---------------------------------------------------------------+ +| A metadata key value. | The API updates the metadata key value for the account. | +| | | +| The metadata key already exists for the account. | | ++----------------------------------------------------------+---------------------------------------------------------------+ +| A metadata key value. | The API adds the metadata key and value pair, or item, to the | +| | account. | +| The metadata key does not already exist for the account. | | ++----------------------------------------------------------+---------------------------------------------------------------+ +| One or more account metadata items are omitted. | The API does not change the existing metadata items. | +| | | +| The metadata items already exist for the account. | | ++----------------------------------------------------------+---------------------------------------------------------------+ + + + +For these requests, specifying the ``X-Remove-Account-Meta-*`` +request header for the key with any value is equivalent to +specifying the ``X-Account-Meta-*`` request header with an empty +value. + +Metadata keys must be treated as case-insensitive at all times. +These keys can contain ASCII 7-bit characters that are not control +(0-31) characters, DEL, or a separator character, according to +`HTTP/1.1 `_ . +Also, Object Storage does not support the underscore character, +which it silently converts to a hyphen. + +The metadata values in Object Storage do not follow HTTP/1.1 rules +for character encodings. You must use a UTF-8 encoding to get a +byte array for any string that contains characters that are not in +the 7-bit ASCII 0-127 range. Otherwise, Object Storage returns the +404 response code for ISO-8859-1 characters in the 128-255 range, +which is a direct violation of the HTTP/1.1 `basic rules +`_. + + +Show account details and list containers +======================================== + +.. rest_method:: GET /v1/{account} + +Shows details for an account and lists containers, sorted by name, in the account. + +The sort order for the name is based on a binary comparison, a +single built-in collating sequence that compares string data by +using the SQLite memcmp() function, regardless of text encoding. +See `Collating Sequences +`_. + +Example requests and responses: + +- Show account details and list containers and ask for a JSON + response: + + :: + + curl -i $publicURL?format=json -X GET -H "X-Auth-Token: $token" + + +- List containers and ask for an XML response: + + :: + + curl -i $publicURL?format=xml -X GET -H "X-Auth-Token: $token" + + +The response body returns a list of containers. The default +response (``text/plain``) returns one container per line. + +If you use query parameters to page through a long list of +containers, you have reached the end of the list if the number of +items in the returned list is less than the request ``limit`` +value. The list contains more items if the number of items in the +returned list equals the ``limit`` value. + +When asking for a list of containers and there are none, the +response behavior changes depending on whether the request format +is text, JSON, or XML. For a text response, you get a 204 , because +there is no content. However, for a JSON or XML response, you get a +200 with content indicating an empty array. + +If the request succeeds, the operation returns one of these status +codes: + +- ``OK (200)``. Success. The response body lists the containers. + +- ``No Content (204)``. Success. The response body shows no + containers. Either the account has no containers or you are + paging through a long list of names by using the ``marker``, + ``limit``, or ``end_marker`` query parameter and you have reached + the end of the list. + + +Normal response codes: 200 +Error response codes:204, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - account: account + - limit: limit + - marker: marker + - end_marker: end_marker + - format: format + - prefix: prefix + - delimiter: delimiter + - X-Auth-Token: X-Auth-Token + - X-Newest: X-Newest + - Accept: Accept + - X-Trans-Id-Extra: X-Trans-Id-Extra + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - Content-Length: Content-Length + - X-Account-Meta-name: X-Account-Meta-name + - X-Account-Object-Count: X-Account-Object-Count + - X-Account-Meta-Temp-URL-Key-2: X-Account-Meta-Temp-URL-Key-2 + - X-Timestamp: X-Timestamp + - X-Account-Meta-Temp-URL-Key: X-Account-Meta-Temp-URL-Key + - X-Trans-Id: X-Trans-Id + - Date: Date + - X-Account-Bytes-Used: X-Account-Bytes-Used + - X-Account-Container-Count: X-Account-Container-Count + - Content-Type: Content-Type + - count: count + - bytes: bytes + - name: name + + + +Response Example +---------------- + +.. literalinclude:: samples/account-containers-list-http-response-xml.txt + :language: javascript + + + + + +Create, update, or delete account metadata +========================================== + +.. rest_method:: POST /v1/{account} + +Creates, updates, or deletes account metadata. + +To create, update, or delete metadata, use the ``X-Account- +Meta-{name}`` request header, where ``{name}`` is the name of the +metadata item. + +Subsequent requests for the same key and value pair overwrite the +existing value. + +To delete a metadata header, send an empty value for that header, +such as for the ``X-Account-Meta-Book`` header. If the tool you use +to communicate with Object Storage, such as an older version of +cURL, does not support empty headers, send the ``X-Remove-Account- +Meta-{name}`` header with an arbitrary value. For example, ``X +-Remove-Account-Meta-Book: x``. The operation ignores the arbitrary +value. + +If the container already has other custom metadata items, a request +to create, update, or delete metadata does not affect those items. + +This operation does not accept a request body. + +Example requests and responses: + +- Create account metadata: + + :: + + curl -i $publicURL -X POST -H "X-Auth-Token: $token" -H "X-Account-Meta-Book: MobyDick" -H "X-Account-Meta-Subject: Literature" + + + + + :: + + HTTP/1.1 204 No Content + Content-Length: 0 + Content-Type: text/html; charset=UTF-8 + X-Trans-Id: tx8c2dd6aee35442a4a5646-0052d954fb + Date: Fri, 17 Jan 2014 16:06:19 GMT + + +- Update account metadata: + + :: + + curl -i $publicURL -X POST -H "X-Auth-Token: $token" -H "X-Account-Meta-Subject: AmericanLiterature" + + + + + :: + + HTTP/1.1 204 No Content + Content-Length: 0 + Content-Type: text/html; charset=UTF-8 + X-Trans-Id: tx1439b96137364ab581156-0052d95532 + Date: Fri, 17 Jan 2014 16:07:14 GMT + + +- Delete account metadata: + + :: + + curl -i $publicURL -X POST -H "X-Auth-Token: $token" -H "X-Remove-Account-Meta-Subject: x" + + + + + :: + + HTTP/1.1 204 No Content + Content-Length: 0 + Content-Type: text/html; charset=UTF-8 + X-Trans-Id: tx411cf57701424da99948a-0052d9556f + Date: Fri, 17 Jan 2014 16:08:15 GMT + + +If the request succeeds, the operation returns the ``No Content +(204)`` response code. + +To confirm your changes, issue a show account metadata request. + +Error response codes:204, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - account: account + - X-Auth-Token: X-Auth-Token + - X-Account-Meta-Temp-URL-Key: X-Account-Meta-Temp-URL-Key + - X-Account-Meta-Temp-URL-Key-2: X-Account-Meta-Temp-URL-Key-2 + - X-Account-Meta-name: X-Account-Meta-name + - Content-Type: Content-Type + - X-Detect-Content-Type: X-Detect-Content-Type + - X-Trans-Id-Extra: X-Trans-Id-Extra + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - Date: Date + - X-Timestamp: X-Timestamp + - Content-Length: Content-Length + - Content-Type: Content-Type + - X-Trans-Id: X-Trans-Id + + + + + +Show account metadata +===================== + +.. rest_method:: HEAD /v1/{account} + +Shows metadata for an account. + +Metadata for the account includes: + +- Number of containers + +- Number of objects + +- Total number of bytes that are stored in Object Storage for the + account + +Because the storage system can store large amounts of data, take +care when you represent the total bytes response as an integer; +when possible, convert it to a 64-bit unsigned integer if your +platform supports that primitive type. + +Do not include metadata headers in this request. + +Show account metadata request: + +:: + + curl -i $publicURL -X HEAD -H "X-Auth-Token: $token" + + + + +:: + + HTTP/1.1 204 No Content + Content-Length: 0 + X-Account-Object-Count: 1 + X-Account-Meta-Book: MobyDick + X-Timestamp: 1389453423.35964 + X-Account-Bytes-Used: 14 + X-Account-Container-Count: 2 + Content-Type: text/plain; charset=utf-8 + Accept-Ranges: bytes + X-Trans-Id: txafb3504870144b8ca40f7-0052d955d4 + Date: Fri, 17 Jan 2014 16:09:56 GMT + + +If the account or authentication token is not valid, the operation +returns the ``Unauthorized (401)`` response code. + +Error response codes:204,401, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - account: account + - X-Auth-Token: X-Auth-Token + - X-Newest: X-Newest + - X-Trans-Id-Extra: X-Trans-Id-Extra + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - Content-Length: Content-Length + - X-Account-Meta-name: X-Account-Meta-name + - X-Account-Object-Count: X-Account-Object-Count + - X-Account-Meta-Temp-URL-Key-2: X-Account-Meta-Temp-URL-Key-2 + - X-Timestamp: X-Timestamp + - X-Account-Meta-Temp-URL-Key: X-Account-Meta-Temp-URL-Key + - X-Trans-Id: X-Trans-Id + - Date: Date + - X-Account-Bytes-Used: X-Account-Bytes-Used + - X-Account-Container-Count: X-Account-Container-Count + - Content-Type: Content-Type + + + + + diff --git a/api-ref/source/objectstorage/v1/storage-container-services.inc b/api-ref/source/objectstorage/v1/storage-container-services.inc new file mode 100644 index 000000000..6b69ef9d0 --- /dev/null +++ b/api-ref/source/objectstorage/v1/storage-container-services.inc @@ -0,0 +1,503 @@ +.. -*- rst -*- + +========== +Containers +========== + +Lists objects in a container. Creates, shows details for, and +deletes containers. Creates, updates, shows, and deletes container +metadata. + + +Show container details and list objects +======================================= + +.. rest_method:: GET /v1/{account}/{container} + +Shows details for a container and lists objects, sorted by name, in the container. + +Specify query parameters in the request to filter the list and +return a subset of object names. Omit query parameters to return +the complete list of object names that are stored in the container, +up to 10,000 names. The 10,000 maximum value is configurable. To +view the value for the cluster, issue a GET ``/info`` request. + +Example requests and responses: + +- ``OK (200)``. Success. The response body lists the objects. + +- ``No Content (204)``. Success. The response body shows no objects. + Either the container has no objects or you are paging through a + long list of names by using the ``marker``, ``limit``, or + ``end_marker`` query parameter and you have reached the end of + the list. + +If the container does not exist, the call returns the ``Not Found +(404)`` response code. + +The operation returns the ``Range Not Satisfiable (416)`` response +code for any ranged GET requests that specify more than: + +- Fifty ranges. + +- Three overlapping ranges. + +- Eight non-increasing ranges. + + +Normal response codes: 200 +Error response codes:416,404,204, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - account: account + - container: container + - limit: limit + - marker: marker + - end_marker: end_marker + - prefix: prefix + - format: format + - delimiter: delimiter + - path: path + - X-Auth-Token: X-Auth-Token + - X-Newest: X-Newest + - Accept: Accept + - X-Container-Meta-Temp-URL-Key: X-Container-Meta-Temp-URL-Key + - X-Container-Meta-Temp-URL-Key-2: X-Container-Meta-Temp-URL-Key-2 + - X-Trans-Id-Extra: X-Trans-Id-Extra + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - X-Container-Meta-name: X-Container-Meta-name + - Content-Length: Content-Length + - X-Container-Object-Count: X-Container-Object-Count + - Accept-Ranges: Accept-Ranges + - X-Container-Meta-Temp-URL-Key: X-Container-Meta-Temp-URL-Key + - X-Container-Bytes-Used: X-Container-Bytes-Used + - X-Container-Meta-Temp-URL-Key-2: X-Container-Meta-Temp-URL-Key-2 + - X-Timestamp: X-Timestamp + - X-Trans-Id: X-Trans-Id + - Date: Date + - Content-Type: Content-Type + - hash: hash + - last_modified: last_modified + - bytes: bytes + - name: name + - content_type: content_type + + + +Response Example +---------------- + +.. literalinclude:: samples/objects-list-http-response-xml.txt + :language: javascript + + + + + + + +Create container +================ + +.. rest_method:: PUT /v1/{account}/{container} + +Creates a container. + +You do not need to check whether a container already exists before +issuing a PUT operation because the operation is idempotent: It +creates a container or updates an existing container, as +appropriate. + +Example requests and responses: + +- Create a container with no metadata: + + :: + + curl -i $publicURL/steven -X PUT -H "Content-Length: 0" -H "X-Auth-Token: $token" + + + + + :: + + HTTP/1.1 201 Created + Content-Length: 0 + Content-Type: text/html; charset=UTF-8 + X-Trans-Id: tx7f6b7fa09bc2443a94df0-0052d58b56 + Date: Tue, 14 Jan 2014 19:09:10 GMT + + +- Create a container with metadata: + + :: + + curl -i $publicURL/marktwain -X PUT -H "X-Auth-Token: $token" -H "X-Container-Meta-Book: TomSawyer" + + + + + :: + + HTTP/1.1 201 Created + Content-Length: 0 + Content-Type: text/html; charset=UTF-8 + X-Trans-Id: tx06021f10fc8642b2901e7-0052d58f37 + Date: Tue, 14 Jan 2014 19:25:43 GMT + +Error response codes:201,204, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - account: account + - container: container + - X-Auth-Token: X-Auth-Token + - X-Container-Read: X-Container-Read + - X-Container-Write: X-Container-Write + - X-Container-Sync-To: X-Container-Sync-To + - X-Container-Sync-Key: X-Container-Sync-Key + - X-Versions-Location: X-Versions-Location + - X-Container-Meta-name: X-Container-Meta-name + - X-Container-Meta-Access-Control-Allow-Origin: X-Container-Meta-Access-Control-Allow-Origin + - X-Container-Meta-Access-Control-Max-Age: X-Container-Meta-Access-Control-Max-Age + - X-Container-Meta-Access-Control-Expose-Headers: X-Container-Meta-Access-Control-Expose-Headers + - Content-Type: Content-Type + - X-Detect-Content-Type: X-Detect-Content-Type + - X-Container-Meta-Temp-URL-Key: X-Container-Meta-Temp-URL-Key + - X-Container-Meta-Temp-URL-Key-2: X-Container-Meta-Temp-URL-Key-2 + - X-Trans-Id-Extra: X-Trans-Id-Extra + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - Date: Date + - X-Timestamp: X-Timestamp + - Content-Length: Content-Length + - Content-Type: Content-Type + - X-Trans-Id: X-Trans-Id + + + + + + +Create, update, or delete container metadata +============================================ + +.. rest_method:: POST /v1/{account}/{container} + +Creates, updates, or deletes custom metadata for a container. + +To create, update, or delete a custom metadata item, use the ``X +-Container-Meta-{name}`` header, where ``{name}`` is the name of +the metadata item. + +Subsequent requests for the same key and value pair overwrite the +previous value. + +To delete container metadata, send an empty value for that header, +such as for the ``X-Container-Meta-Book`` header. If the tool you +use to communicate with Object Storage, such as an older version of +cURL, does not support empty headers, send the ``X-Remove- +Container-Meta-{name}`` header with an arbitrary value. For +example, ``X-Remove-Container-Meta-Book: x``. The operation ignores +the arbitrary value. + +If the container already has other custom metadata items, a request +to create, update, or delete metadata does not affect those items. + +Example requests and responses: + +- Create container metadata: + + :: + + curl -i $publicURL/marktwain -X POST -H "X-Auth-Token: $token" -H "X-Container-Meta-Author: MarkTwain" -H "X-Container-Meta-Web-Directory-Type: text/directory" -H "X-Container-Meta-Century: Nineteenth" + + + + + :: + + HTTP/1.1 204 No Content + Content-Length: 0 + Content-Type: text/html; charset=UTF-8 + X-Trans-Id: tx05dbd434c651429193139-0052d82635 + Date: Thu, 16 Jan 2014 18:34:29 GMT + + +- Update container metadata: + + :: + + curl -i $publicURL/marktwain -X POST -H "X-Auth-Token: $token" -H "X-Container-Meta-Author: SamuelClemens" + + + + + :: + + HTTP/1.1 204 No Content + Content-Length: 0 + Content-Type: text/html; charset=UTF-8 + X-Trans-Id: txe60c7314bf614bb39dfe4-0052d82653 + Date: Thu, 16 Jan 2014 18:34:59 GMT + + +- Delete container metadata: + + :: + + curl -i $publicURL/marktwain -X POST -H "X-Auth-Token: $token" -H "X-Remove-Container-Meta-Century: x" + + + + + :: + + HTTP/1.1 204 No Content + Content-Length: 0 + Content-Type: text/html; charset=UTF-8 + X-Trans-Id: tx7997e18da2a34a9e84ceb-0052d826d0 + Date: Thu, 16 Jan 2014 18:37:04 GMT + + +If the request succeeds, the operation returns the ``No Content +(204)`` response code. + +To confirm your changes, issue a show container metadata request. + +Error response codes:204, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - account: account + - container: container + - X-Auth-Token: X-Auth-Token + - X-Container-Read: X-Container-Read + - X-Remove-Container-name: X-Remove-Container-name + - X-Container-Write: X-Container-Write + - X-Container-Sync-To: X-Container-Sync-To + - X-Container-Sync-Key: X-Container-Sync-Key + - X-Versions-Location: X-Versions-Location + - X-Remove-Versions-Location: X-Remove-Versions-Location + - X-Container-Meta-name: X-Container-Meta-name + - X-Container-Meta-Access-Control-Allow-Origin: X-Container-Meta-Access-Control-Allow-Origin + - X-Container-Meta-Access-Control-Max-Age: X-Container-Meta-Access-Control-Max-Age + - X-Container-Meta-Access-Control-Expose-Headers: X-Container-Meta-Access-Control-Expose-Headers + - X-Container-Meta-Quota-Bytes: X-Container-Meta-Quota-Bytes + - X-Container-Meta-Quota-Count: X-Container-Meta-Quota-Count + - X-Container-Meta-Web-Directory-Type: X-Container-Meta-Web-Directory-Type + - Content-Type: Content-Type + - X-Detect-Content-Type: X-Detect-Content-Type + - X-Container-Meta-Temp-URL-Key: X-Container-Meta-Temp-URL-Key + - X-Container-Meta-Temp-URL-Key-2: X-Container-Meta-Temp-URL-Key-2 + - X-Trans-Id-Extra: X-Trans-Id-Extra + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - Date: Date + - X-Timestamp: X-Timestamp + - Content-Length: Content-Length + - Content-Type: Content-Type + - X-Trans-Id: X-Trans-Id + + + + + +Show container metadata +======================= + +.. rest_method:: HEAD /v1/{account}/{container} + +Shows container metadata, including the number of objects and the total bytes of all objects stored in the container. + +Show container metadata request: + +:: + + curl -i $publicURL/marktwain -X HEAD -H "X-Auth-Token: $token" + + + + +:: + + HTTP/1.1 204 No Content + Content-Length: 0 + X-Container-Object-Count: 1 + Accept-Ranges: bytes + X-Container-Meta-Book: TomSawyer + X-Timestamp: 1389727543.65372 + X-Container-Meta-Author: SamuelClemens + X-Container-Bytes-Used: 14 + Content-Type: text/plain; charset=utf-8 + X-Trans-Id: tx0287b982a268461b9ec14-0052d826e2 + Date: Thu, 16 Jan 2014 18:37:22 GMT + + +If the request succeeds, the operation returns the ``No Content +(204)`` response code. + +Error response codes:204, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - account: account + - container: container + - X-Auth-Token: X-Auth-Token + - X-Newest: X-Newest + - X-Container-Meta-Temp-URL-Key: X-Container-Meta-Temp-URL-Key + - X-Container-Meta-Temp-URL-Key-2: X-Container-Meta-Temp-URL-Key-2 + - X-Trans-Id-Extra: X-Trans-Id-Extra + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - X-Container-Sync-Key: X-Container-Sync-Key + - X-Container-Meta-name: X-Container-Meta-name + - Content-Length: Content-Length + - X-Container-Object-Count: X-Container-Object-Count + - X-Container-Write: X-Container-Write + - X-Container-Meta-Quota-Count: X-Container-Meta-Quota-Count + - Accept-Ranges: Accept-Ranges + - X-Container-Read: X-Container-Read + - X-Container-Meta-Access-Control-Expose-Headers: X-Container-Meta-Access-Control-Expose-Headers + - X-Container-Meta-Temp-URL-Key: X-Container-Meta-Temp-URL-Key + - X-Container-Bytes-Used: X-Container-Bytes-Used + - X-Container-Meta-Temp-URL-Key-2: X-Container-Meta-Temp-URL-Key-2 + - X-Timestamp: X-Timestamp + - X-Container-Meta-Access-Control-Allow-Origin: X-Container-Meta-Access-Control-Allow-Origin + - X-Container-Meta-Access-Control-Max-Age: X-Container-Meta-Access-Control-Max-Age + - Date: Date + - X-Trans-Id: X-Trans-Id + - X-Container-Sync-To: X-Container-Sync-To + - Content-Type: Content-Type + - X-Container-Meta-Quota-Bytes: X-Container-Meta-Quota-Bytes + - X-Versions-Location: X-Versions-Location + + + + + +Delete container +================ + +.. rest_method:: DELETE /v1/{account}/{container} + +Deletes an empty container. + +This operation fails unless the container is empty. An empty +container has no objects. + +Delete the ``steven`` container: + +:: + + curl -i $publicURL/steven -X DELETE -H "X-Auth-Token: $token" + + +If the container does not exist, the response is: + +:: + + HTTP/1.1 404 Not Found + Content-Length: 70 + Content-Type: text/html; charset=UTF-8 + X-Trans-Id: tx4d728126b17b43b598bf7-0052d81e34 + Date: Thu, 16 Jan 2014 18:00:20 GMT + + +If the container exists and the deletion succeeds, the response is: + +:: + + HTTP/1.1 204 No Content + Content-Length: 0 + Content-Type: text/html; charset=UTF-8 + X-Trans-Id: txf76c375ebece4df19c84c-0052d81f14 + Date: Thu, 16 Jan 2014 18:04:04 GMT + + +If the container exists but is not empty, the response is: + +:: + + HTTP/1.1 409 Conflict + Content-Length: 95 + Content-Type: text/html; charset=UTF-8 + X-Trans-Id: tx7782dc6a97b94a46956b5-0052d81f6b + Date: Thu, 16 Jan 2014 18:05:31 GMT + +

Conflict +

+

There was a conflict when trying to complete your request. +

+ + +Error response codes:404,204,409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - account: account + - container: container + - X-Auth-Token: X-Auth-Token + - X-Container-Meta-Temp-URL-Key: X-Container-Meta-Temp-URL-Key + - X-Container-Meta-Temp-URL-Key-2: X-Container-Meta-Temp-URL-Key-2 + - X-Trans-Id-Extra: X-Trans-Id-Extra + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - Date: Date + - X-Timestamp: X-Timestamp + - Content-Length: Content-Length + - Content-Type: Content-Type + - X-Trans-Id: X-Trans-Id + + + + + + diff --git a/api-ref/source/objectstorage/v1/storage-object-services.inc b/api-ref/source/objectstorage/v1/storage-object-services.inc new file mode 100644 index 000000000..e56490f71 --- /dev/null +++ b/api-ref/source/objectstorage/v1/storage-object-services.inc @@ -0,0 +1,695 @@ +.. -*- rst -*- + +======= +Objects +======= + +Creates, replaces, shows details for, and deletes objects. Copies +objects from another object with a new or different name. Updates +object metadata. + + +Get object content and metadata +=============================== + +.. rest_method:: GET /v1/{account}/{container}/{object} + +Downloads the object content and gets the object metadata. + +This operation returns the object metadata in the response headers +and the object content in the response body. + +If this is a large object, the response body contains the +concatenated content of the segment objects. To get the manifest +instead of concatenated segment objects for a static large object, +use the ``multipart-manifest`` query parameter. + +Example requests and responses: + +- Show object details for the ``goodbye`` object in the + ``marktwain`` container: + + :: + + curl -i $publicURL/marktwain/goodbye -X GET -H "X-Auth-Token: $token" + + + + + :: + + HTTP/1.1 200 OK + Content-Length: 14 + Accept-Ranges: bytes + Last-Modified: Wed, 15 Jan 2014 16:41:49 GMT + Etag: 451e372e48e0f6b1114fa0724aa79fa1 + X-Timestamp: 1389804109.39027 + X-Object-Meta-Orig-Filename: goodbyeworld.txt + Content-Type: application/octet-stream + X-Trans-Id: tx8145a190241f4cf6b05f5-0052d82a34 + Date: Thu, 16 Jan 2014 18:51:32 GMT + Goodbye World! + + +- Show object details for the ``goodbye`` object, which does not + exist, in the ``janeausten`` container: + + :: + + curl -i $publicURL/janeausten/goodbye -X GET -H "X-Auth-Token: $token" + + + + + :: + + HTTP/1.1 404 Not Found + Content-Length: 70 + Content-Type: text/html; charset=UTF-8 + X-Trans-Id: tx073f7cbb850c4c99934b9-0052d82b04 + Date: Thu, 16 Jan 2014 18:55:00 GMT + +

Not Found +

+

The resource could not be found. +

+ + + +The operation returns the ``Range Not Satisfiable (416)`` response +code for any ranged GET requests that specify more than: + +- Fifty ranges. + +- Three overlapping ranges. + +- Eight non-increasing ranges. + + +Normal response codes: 200 +Error response codes:416,404, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - account: account + - object: object + - container: container + - X-Auth-Token: X-Auth-Token + - X-Newest: X-Newest + - temp_url_sig: temp_url_sig + - temp_url_expires: temp_url_expires + - filename: filename + - multipart-manifest: multipart-manifest + - Range: Range + - If-Match: If-Match + - If-None-Match: If-None-Match + - If-Modified-Since: If-Modified-Since + - If-Unmodified-Since: If-Unmodified-Since + - X-Trans-Id-Extra: X-Trans-Id-Extra + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - Content-Length: Content-Length + - X-Object-Meta-name: X-Object-Meta-name + - Content-Disposition: Content-Disposition + - Content-Encoding: Content-Encoding + - X-Delete-At: X-Delete-At + - Accept-Ranges: Accept-Ranges + - X-Object-Manifest: X-Object-Manifest + - Last-Modified: Last-Modified + - ETag: ETag + - X-Timestamp: X-Timestamp + - X-Trans-Id: X-Trans-Id + - Date: Date + - X-Static-Large-Object: X-Static-Large-Object + - Content-Type: Content-Type + + + +Response Example +---------------- + +.. literalinclude:: + :language: javascript + + + + + + +Create or replace object +======================== + +.. rest_method:: PUT /v1/{account}/{container}/{object} + +Creates an object with data content and metadata, or replaces an existing object with data content and metadata. + +The PUT operation always creates an object. If you use this +operation on an existing object, you replace the existing object +and metadata rather than modifying the object. Consequently, this +operation returns the ``Created (201)`` response code. + +If you use this operation to copy a manifest object, the new object +is a normal object and not a copy of the manifest. Instead it is a +concatenation of all the segment objects. This means that you +cannot copy objects larger than 5 GB. + +Example requests and responses: + +- Create object: + + :: + + curl -i $publicURL/janeausten/helloworld.txt -X PUT -H "Content-Length: 1" -H "Content-Type: text/html; charset=UTF-8" -H "X-Auth-Token: $token" + + + + + :: + + HTTP/1.1 201 Created + Last-Modified: Fri, 17 Jan 2014 17:28:35 GMT + Content-Length: 116 + Etag: d41d8cd98f00b204e9800998ecf8427e + Content-Type: text/html; charset=UTF-8 + X-Trans-Id: tx4d5e4f06d357462bb732f-0052d96843 + Date: Fri, 17 Jan 2014 17:28:35 GMT + + +- Replace object: + + :: + + curl -i $publicURL/janeausten/helloworld -X PUT -H "Content-Length: 0" -H "X-Auth-Token: $token" + + + + + :: + + HTTP/1.1 201 Created + Last-Modified: Fri, 17 Jan 2014 17:28:35 GMT + Content-Length: 116 + Etag: d41d8cd98f00b204e9800998ecf8427e + Content-Type: text/html; charset=UTF-8 + X-Trans-Id: tx4d5e4f06d357462bb732f-0052d96843 + Date: Fri, 17 Jan 2014 17:28:35 GMT + + +The ``Created (201)`` response code indicates a successful write. + +If the request times out, the operation returns the ``Request +Timeout (408)`` response code. + +The ``Length Required (411)`` response code indicates a missing +``Transfer-Encoding`` or ``Content-Length`` request header. + +If the MD5 checksum of the data that is written to the object store +does not match the optional ``ETag`` value, the operation returns +the ``Unprocessable Entity (422)`` response code. + +Error response codes:201,422,411,408, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - account: account + - object: object + - container: container + - multipart-manifest: multipart-manifest + - temp_url_sig: temp_url_sig + - temp_url_expires: temp_url_expires + - filename: filename + - X-Object-Manifest: X-Object-Manifest + - X-Auth-Token: X-Auth-Token + - Content-Length: Content-Length + - Transfer-Encoding: Transfer-Encoding + - Content-Type: Content-Type + - X-Detect-Content-Type: X-Detect-Content-Type + - X-Copy-From: X-Copy-From + - ETag: ETag + - Content-Disposition: Content-Disposition + - Content-Encoding: Content-Encoding + - X-Delete-At: X-Delete-At + - X-Delete-After: X-Delete-After + - X-Object-Meta-name: X-Object-Meta-name + - If-None-Match: If-None-Match + - X-Trans-Id-Extra: X-Trans-Id-Extra + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - Content-Length: Content-Length + - ETag: ETag + - X-Timestamp: X-Timestamp + - X-Trans-Id: X-Trans-Id + - Date: Date + - Content-Type: Content-Type + - last_modified: last_modified + + + + + + + + +Copy object +=========== + +.. rest_method:: COPY /v1/{account}/{container}/{object} + +Copies an object to another object in the object store. + +You can copy an object to a new object with the same name. Copying +to the same name is an alternative to using POST to add metadata to +an object. With POST , you must specify all the metadata. With COPY +, you can add additional metadata to the object. + +With COPY , you can set the ``X-Fresh-Metadata`` header to ``true`` +to copy the object without any existing metadata. + +Alternatively, you can use PUT with the ``X-Copy-From`` request +header to accomplish the same operation as the COPY object +operation. + +The PUT operation always creates an object. If you use this +operation on an existing object, you replace the existing object +and metadata rather than modifying the object. Consequently, this +operation returns the ``Created (201)`` response code. + +If you use this operation to copy a manifest object, the new object +is a normal object and not a copy of the manifest. Instead it is a +concatenation of all the segment objects. This means that you +cannot copy objects larger than 5 GB in size. All metadata is +preserved during the object copy. If you specify metadata on the +request to copy the object, either PUT or COPY , the metadata +overwrites any conflicting keys on the target (new) object. + +Example requests and responses: + +- Copy the ``goodbye`` object from the ``marktwain`` container to + the ``janeausten`` container: + + :: + + curl -i $publicURL/marktwain/goodbye -X COPY -H "X-Auth-Token: $token" -H "Destination: janeausten/goodbye" + + + + + :: + + HTTP/1.1 201 Created + Content-Length: 0 + X-Copied-From-Last-Modified: Thu, 16 Jan 2014 21:19:45 GMT + X-Copied-From: marktwain/goodbye + Last-Modified: Fri, 17 Jan 2014 18:22:57 GMT + Etag: 451e372e48e0f6b1114fa0724aa79fa1 + Content-Type: text/html; charset=UTF-8 + X-Object-Meta-Movie: AmericanPie + X-Trans-Id: txdcb481ad49d24e9a81107-0052d97501 + Date: Fri, 17 Jan 2014 18:22:57 GMT + + +- Alternatively, you can use PUT to copy the ``goodbye`` object from + the ``marktwain`` container to the ``janeausten`` container. This + request requires a ``Content-Length`` header, even if it is set + to zero (0). + + :: + + curl -i $publicURL/janeausten/goodbye -X PUT -H "X-Auth-Token: $token" -H "X-Copy-From: /marktwain/goodbye" -H "Content-Length: 0" + + + + + :: + + HTTP/1.1 201 Created + Content-Length: 0 + X-Copied-From-Last-Modified: Thu, 16 Jan 2014 21:19:45 GMT + X-Copied-From: marktwain/goodbye + Last-Modified: Fri, 17 Jan 2014 18:22:57 GMT + Etag: 451e372e48e0f6b1114fa0724aa79fa1 + Content-Type: text/html; charset=UTF-8 + X-Object-Meta-Movie: AmericanPie + X-Trans-Id: txdcb481ad49d24e9a81107-0052d97501 + Date: Fri, 17 Jan 2014 18:22:57 GMT + + +When several replicas exist, the system copies from the most recent +replica. That is, the COPY operation behaves as though the +``X-Newest`` header is in the request. + +Error response codes:201, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - account: account + - object: object + - container: container + - X-Auth-Token: X-Auth-Token + - Destination: Destination + - Content-Type: Content-Type + - Content-Encoding: Content-Encoding + - Content-Disposition: Content-Disposition + - X-Object-Meta-name: X-Object-Meta-name + - X-Fresh-Metadata: X-Fresh-Metadata + - X-Trans-Id-Extra: X-Trans-Id-Extra + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - Content-Length: Content-Length + - X-Object-Meta-name: X-Object-Meta-name + - X-Copied-From-Last-Modified: X-Copied-From-Last-Modified + - X-Copied-From: X-Copied-From + - Last-Modified: Last-Modified + - ETag: ETag + - X-Timestamp: X-Timestamp + - X-Trans-Id: X-Trans-Id + - Date: Date + - Content-Type: Content-Type + + + + + +Delete object +============= + +.. rest_method:: DELETE /v1/{account}/{container}/{object} + +Permanently deletes an object from the object store. + +You can use the COPY method to copy the object to a new location. +Then, use the DELETE method to delete the original object. + +Object deletion occurs immediately at request time. Any subsequent +GET , HEAD , POST , or DELETE operations return a ``404 Not Found`` +error code. + +For static large object manifests, you can add the ``?multipart- +manifest=delete`` query parameter. This operation deletes the +segment objects and if all deletions succeed, this operation +deletes the manifest object. + +Example request and response: + +- Delete the ``helloworld`` object from the ``marktwain`` container: + + :: + + curl -i $publicURL/marktwain/helloworld -X DELETE -H "X-Auth-Token: $token" + + + + + :: + + HTTP/1.1 204 No Content + Content-Length: 0 + Content-Type: text/html; charset=UTF-8 + X-Trans-Id: tx36c7606fcd1843f59167c-0052d6fdac + Date: Wed, 15 Jan 2014 21:29:16 GMT + + +Typically, the DELETE operation does not return a response body. +However, with the ``multipart-manifest=delete`` query parameter, +the response body contains a list of manifest and segment objects +and the status of their DELETE operations. + +Error response codes:204, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - account: account + - object: object + - container: container + - multipart-manifest: multipart-manifest + - X-Auth-Token: X-Auth-Token + - X-Trans-Id-Extra: X-Trans-Id-Extra + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - Date: Date + - X-Timestamp: X-Timestamp + - Content-Length: Content-Length + - Content-Type: Content-Type + - X-Trans-Id: X-Trans-Id + + + + + +Show object metadata +==================== + +.. rest_method:: HEAD /v1/{account}/{container}/{object} + +Shows object metadata. + +If the ``Content-Length`` response header is non-zero, the example +cURL command stalls after it prints the response headers because it +is waiting for a response body. However, the Object Storage system +does not return a response body for the HEAD operation. + +Example requests and responses: + +- Show object metadata: + + :: + + curl -i $publicURL/marktwain/goodbye -X HEAD -H "X-Auth-Token: $token" + + + + + :: + + HTTP/1.1 200 OK + Content-Length: 14 + Accept-Ranges: bytes + Last-Modified: Thu, 16 Jan 2014 21:12:31 GMT + Etag: 451e372e48e0f6b1114fa0724aa79fa1 + X-Timestamp: 1389906751.73463 + X-Object-Meta-Book: GoodbyeColumbus + Content-Type: application/octet-stream + X-Trans-Id: tx37ea34dcd1ed48ca9bc7d-0052d84b6f + Date: Thu, 16 Jan 2014 21:13:19 GMT + + +If the request succeeds, the operation returns the ``200`` response +code. + + +Normal response codes: 200 +Error response codes:204, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - account: account + - object: object + - container: container + - X-Auth-Token: X-Auth-Token + - temp_url_sig: temp_url_sig + - temp_url_expires: temp_url_expires + - filename: filename + - X-Newest: X-Newest + - X-Trans-Id-Extra: X-Trans-Id-Extra + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - Last-Modified: Last-Modified + - Content-Length: Content-Length + - X-Object-Meta-name: X-Object-Meta-name + - Content-Disposition: Content-Disposition + - Content-Encoding: Content-Encoding + - X-Delete-At: X-Delete-At + - X-Object-Manifest: X-Object-Manifest + - Last-Modified: Last-Modified + - ETag: ETag + - X-Timestamp: X-Timestamp + - X-Trans-Id: X-Trans-Id + - Date: Date + - X-Static-Large-Object: X-Static-Large-Object + - Content-Type: Content-Type + + + +Response Example +---------------- + +.. literalinclude:: + :language: javascript + + + + + +Create or update object metadata +================================ + +.. rest_method:: POST /v1/{account}/{container}/{object} + +Creates or updates object metadata. + +To create or update custom metadata, use the ``X-Object- +Meta-{name}`` header, where ``{name}`` is the name of the metadata +item. + +In addition to the custom metadata, you can update the ``Content- +Type``, ``Content-Encoding``, ``Content-Disposition``, and ``X +-Delete-At`` system metadata items. However you cannot update other +system metadata, such as ``Content-Length`` or ``Last-Modified``. + +You can use COPY as an alternate to the POST operation by copying +to the same object. With the POST operation you must specify all +metadata items, whereas with the COPY operation, you need to +specify only changed or additional items. + +All metadata is preserved during the object copy. If you specify +metadata on the request to copy the object, either PUT or COPY , +the metadata overwrites any conflicting keys on the target (new) +object. + +A POST request deletes any existing custom metadata that you added +with a previous PUT or POST request. Consequently, you must specify +all custom metadata in the request. However, system metadata is +unchanged by the POST request unless you explicitly supply it in a +request header. + +You can also set the ``X-Delete-At`` or ``X-Delete-After`` header +to define when to expire the object. + +When used as described in this section, the POST operation creates +or replaces metadata. This form of the operation has no request +body. + +You can also use the `form POST feature +`_ to upload objects. + +Example requests and responses: + +- Create object metadata: + + :: + + curl -i $publicURL/marktwain/goodbye -X POST -H "X-Auth-Token: $token" -H "X-Object-Meta-Book: GoodbyeColumbus" + + + + + :: + + HTTP/1.1 202 Accepted + Content-Length: 76 + Content-Type: text/html; charset=UTF-8 + X-Trans-Id: txb5fb5c91ba1f4f37bb648-0052d84b3f + Date: Thu, 16 Jan 2014 21:12:31 GMT + +

Accepted +

+

The request is accepted for processing. +

+ + + +- Update object metadata: + + :: + + curl -i $publicURL/marktwain/goodbye -X POST -H "X-Auth-Token: $token" H "X-Object-Meta-Book: GoodbyeOldFriend" + + + + + :: + + HTTP/1.1 202 Accepted + Content-Length: 76 + Content-Type: text/html; charset=UTF-8 + X-Trans-Id: tx5ec7ab81cdb34ced887c8-0052d84ca4 + Date: Thu, 16 Jan 2014 21:18:28 GMT + +

Accepted +

+

The request is accepted for processing. +

+ + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - account: account + - object: object + - container: container + - X-Auth-Token: X-Auth-Token + - X-Object-Meta-name: X-Object-Meta-name + - X-Delete-At: X-Delete-At + - Content-Disposition: Content-Disposition + - Content-Encoding: Content-Encoding + - X-Delete-After: X-Delete-After + - Content-Type: Content-Type + - X-Detect-Content-Type: X-Detect-Content-Type + - X-Trans-Id-Extra: X-Trans-Id-Extra + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - Date: Date + - X-Timestamp: X-Timestamp + - Content-Length: Content-Length + - Content-Type: Content-Type + - X-Trans-Id: X-Trans-Id + + + + diff --git a/api-ref/source/objectstorage/v1/storage_endpoints.inc b/api-ref/source/objectstorage/v1/storage_endpoints.inc new file mode 100644 index 000000000..71d47bfc0 --- /dev/null +++ b/api-ref/source/objectstorage/v1/storage_endpoints.inc @@ -0,0 +1,38 @@ +.. -*- rst -*- + +========= +Endpoints +========= + +If configured, lists endpoints for an account. + + +List endpoints +============== + +.. rest_method:: GET /v1/endpoints + +Lists endpoints for an object, account, or container. + +When the cloud provider enables middleware to list the +``/endpoints/`` path, software that needs data location information +can use this call to avoid network overhead. The cloud provider can +map the ``/endpoints/`` path to another resource, so this exact +resource might vary from provider to provider. Because it goes +straight to the middleware, the call is not authenticated, so be +sure you have tightly secured the environment and network when +using this call. + +Error response codes:201, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + + diff --git a/api-ref/source/objectstorage/v1/storage_info.inc b/api-ref/source/objectstorage/v1/storage_info.inc new file mode 100644 index 000000000..60b4082f7 --- /dev/null +++ b/api-ref/source/objectstorage/v1/storage_info.inc @@ -0,0 +1,41 @@ +.. -*- rst -*- + +=============== +Discoverability +=============== + +If configured, lists the activated capabilities for this version of +the OpenStack Object Storage API. + + +List activated capabilities +=========================== + +.. rest_method:: GET /info + +Lists the activated capabilities for this version of the OpenStack Object Storage API. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - swiftinfo_sig: swiftinfo_sig + - swiftinfo_expires: swiftinfo_expires + + + + +Response Example +---------------- + +.. literalinclude:: samples/capabilities-list-response.json + :language: javascript + + + diff --git a/api-ref/source/orchestration/v1/build-info.inc b/api-ref/source/orchestration/v1/build-info.inc new file mode 100644 index 000000000..3236228b0 --- /dev/null +++ b/api-ref/source/orchestration/v1/build-info.inc @@ -0,0 +1,39 @@ +.. -*- rst -*- + +========== +Build info +========== + + + + +Show build information +====================== + +.. rest_method:: GET /v1/{tenant_id}/build_info + +Shows build information for an Orchestration deployment. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + + + + +Response Example +---------------- + +.. literalinclude:: samples/build-info-response.json + :language: javascript + + + diff --git a/api-ref/source/orchestration/v1/general-info.inc b/api-ref/source/orchestration/v1/general-info.inc new file mode 100644 index 000000000..6efdb58b9 --- /dev/null +++ b/api-ref/source/orchestration/v1/general-info.inc @@ -0,0 +1,13 @@ +.. -*- rst -*- + +======================= +General API information +======================= + +Authenticated calls that target a known URI but that use an HTTP +method that the implementation does not support return a ``405 +Method Not Allowed`` error code. In addition, the HTTP ``OPTIONS`` +method is supported for each known URI. In both cases, the +``Allow`` response header indicates the HTTP methods that are +supported for the resource. + diff --git a/api-ref/source/orchestration/v1/heat-versions.inc b/api-ref/source/orchestration/v1/heat-versions.inc new file mode 100644 index 000000000..bef1b4568 --- /dev/null +++ b/api-ref/source/orchestration/v1/heat-versions.inc @@ -0,0 +1,38 @@ +.. -*- rst -*- + +============ +API versions +============ + + + + +List versions +============= + +.. rest_method:: GET / + +Lists all Orchestration API versions. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + + + +Response Example +---------------- + +.. literalinclude:: samples/heat-versions-response.json + :language: javascript + + + diff --git a/api-ref/source/orchestration/v1/parameters.yaml b/api-ref/source/orchestration/v1/parameters.yaml new file mode 100644 index 000000000..c76f70b0a --- /dev/null +++ b/api-ref/source/orchestration/v1/parameters.yaml @@ -0,0 +1,1581 @@ +# variables in header +{} + +# variables in path +config_id: + description: | + The UUID of the configuration. + in: path + required: false + type: string +deployment_id: + description: | + The UUID of the deployment. + in: path + required: false + type: string +event_id: + description: | + The UUID of the event that is related to the + resource in the stack. + in: path + required: false + type: string +output_key_1: + description: | + The key of a stack output. + in: path + required: false + type: string +resource_name: + description: | + The name of a resource in the stack. + in: path + required: false + type: string +server_id_2: + description: | + The UUID of the server for which to fetch + configuration metadata. + in: path + required: false + type: string +snapshot_id: + description: | + The UUID of the snapshot. + in: path + required: false + type: string +stack_id: + description: | + The UUID of the stack. + in: path + required: false + type: string +stack_name: + description: | + The name of a stack. + in: path + required: false + type: string +tenant_id: + description: | + The UUID of the tenant. A tenant is also known as + an account or project. + in: path + required: false + type: string +type_name: + description: | + The name of a resource type. + in: path + required: false + type: string + +# variables in query +action_3: + description: | + Filters the stack list by an action. Use this + filter multiple times to filter by multiple actions. + in: query + required: false + type: string +global_tenant: + description: | + Set to ``true`` to include stacks from all + tenants in the stack list. Specify policy requirements in the + Orchestration ``policy.json`` file. Default is ``false``. + in: query + required: false + type: boolean +id_4: + description: | + Filters the stack list by a stack ID. Use this + filter multiple times to filter by multiple IDs. + in: query + required: false + type: string +limit: + description: | + Requests a page size of items. Returns a number + of items up to a limit value. Use the ``limit`` parameter to make + an initial limited request and use the ID of the last-seen item + from the response as the ``marker`` parameter value in a + subsequent limited request. + in: query + required: false + type: integer +marker: + description: | + The ID of the last-seen item. Use the ``limit`` + parameter to make an initial limited request and use the ID of the + last-seen item from the response as the ``marker`` parameter value + in a subsequent limited request. + in: query + required: false + type: string +name: + description: | + Filters the response by a resource type name. You + can set this value to a regular expression. Use this filter + multiple times to filter by multiple names. + in: query + required: false + type: string +name_4: + description: | + Filters the stack list by a name. Use this filter + multiple times to filter by multiple names. + in: query + required: false + type: string +nested_depth: + description: | + Includes resources from nested stacks up to the + ``nested_depth`` levels of recursion. + in: query + required: false + type: integer +not_tags: + description: | + Lists stacks that do not contain one or more + simple string tags. To specify multiple tags, separate the tags + with commas. For example, ``tag1,tag2``. The boolean AND + expression is used to combine multiple tags. + in: query + required: false + type: string +not_tags_any: + description: | + Lists stacks that do not contain one or more + simple string tags. To specify multiple tags, separate the tags + with commas. For example, ``tag1,tag2``. The boolean OR expression + is used to combine multiple tags. + in: query + required: false + type: string +owner_id: + description: | + Filters the stack list by an owner ID, which is + the ID of the parent stack of listed stack. Use this filter + multiple times to filter by multiple owner IDs. + in: query + required: false + type: string +resource_action: + description: | + Filters the event list by a resource action. You + can use this filter multiple times to filter by multiple resource + actions. Valid resource actions are ``ADOPT``, ``CHECK``, + ``CREATE``, ``DELETE``, ``INIT``, ``RESTORE``, ``RESUME``, + ``ROLLBACK``, ``SNAPSHOT``, ``SUSPEND``, and ``UPDATE``. + in: query + required: false + type: string +resource_name_2: + description: | + Filters the event list by a resource name. You + can use this filter multiple times to filter by multiple resource + names. + in: query + required: false + type: string +resource_status: + description: | + Filters the event list by a resource status. You + can use this filter multiple times to filter by multiple resource + statuses. Valid resource statuses are ``COMPLETE``, ``FAILED``, + and ``IN_PROGRESS``. + in: query + required: false + type: string +resource_type: + description: | + Filters the event list by a resource type. You + can use this filter multiple times to filter by multiple resource + types. Valid resource types include ``OS::Cinder::Volume``, + ``OS::Nova::Server``, ``OS::Neutron::Port``, and so on. + in: query + required: false + type: string +show_deleted: + description: | + Set to ``true`` to include deleted stacks in the + list. Default is ``false``, which excludes deleted stacks from the + list. + in: query + required: false + type: boolean +show_nested: + description: | + Set to ``true`` to include nested stacks in the + list. Default is ``false``, which excludes nested stacks from the + list. + in: query + required: false + type: boolean +sort_dir: + description: | + The sort direction of the list. A valid value is + ``asc`` (ascending) or ``desc`` (descending). + in: query + required: false + type: string +sort_keys: + description: | + Sorts the list by the ``resource_type`` or + ``created_at`` key. + in: query + required: false + type: string +sort_keys_1: + description: | + Sorts the stack list by ``stack_name``, + ``stack_status``, ``creation_time``, or ``updated_time`` key. + in: query + required: false + type: string +status_5: + description: | + Filters the stack list by a status. Use this + filter multiple times to filter by multiple statuses. + in: query + required: false + type: string +support_status_1: + description: | + Filters the response by resource types by a + support status. Valid support status values are ``UNKNOWN``, + ``SUPPORTED``, ``DEPRECATED``, ``UNSUPPORTED``, and ``HIDDEN``. + Use this filter multiple times to filter by multiple support + statuses. + in: query + required: false + type: string +tags_1: + description: | + Lists stacks that contain one or more simple + string tags. To specify multiple tags, separate the tags with + commas. For example, ``tag1,tag2``. The boolean AND expression is + used to combine multiple tags. + in: query + required: false + type: string +tags_any: + description: | + Lists stacks that contain one or more simple + string tags. To specify multiple tags, separate the tags with + commas. For example, ``tag1,tag2``. The boolean OR expression is + used to combine multiple tags. + in: query + required: false + type: string +tenant: + description: | + Filters the stack list by a tenant. Use this + filter multiple times to filter by multiple tenants. + in: query + required: false + type: string +username: + description: | + Filters the stack list by a user name. Use this + filter multiple times to filter by multiple user names. + in: query + required: false + type: string +version: + description: | + Filters the response by resource types by heat + version. For example, ``2016.1`` or ``5.0.0``. Use this filter + multiple times to filter by multiple versions. + in: query + required: false + type: string +with_count: + description: | + Set to ``true`` to include a count key in the + response. The count key value is the number of stacks that match + the query criteria. Default is ``false``. + in: query + required: false + type: boolean +with_detail: + description: | + Enables detailed resource information for each + resource in list of resources. + in: query + required: false + type: boolean + +# variables in body +Description: + description: | + The description specified in the template. + in: body + required: true + type: string +HeatTemplateFormatVersion: + description: | + The version of the heat template. + in: body + required: true + type: string +Outputs: + description: | + Key and value pairs that contain output data. + in: body + required: true + type: object +ParameterGroups: + description: | + A list of parameter groups. Each group contains a + list of parameter names. + in: body + required: false + type: array +Parameters: + description: | + Key and value pairs that contain template + parameters. + in: body + required: true + type: object +Parameters_1: + description: | + An object that defines all input parameters that + are defined in the template. Indexed by parameter name. + in: body + required: true + type: object +Resources: + description: | + Contain ``KeyPair`` for resource template. + in: body + required: true + type: object +action: + description: | + The current stack action that triggers this + deployment resource. + in: body + required: true + type: string +action_1: + description: | + The deployment action. + in: body + required: true + type: string +action_2: + description: | + Current stack action in which this deployment + resource is being triggered. + in: body + required: true + type: string +adopt_stack_data: + description: | + Existing resources data to adopt a stack. Data + returned by abandon stack could be provided as + ``adopt_stack_data``. + in: body + required: true + type: object +attributes: + description: | + Key and value pairs that contain resource + attributes. + in: body + required: true + type: object +binary: + description: | + The name of the binary form of the heat engine. + in: body + required: true + type: string +cancel_update: + description: | + Specify the ``cancel_update`` action in the + request body. + in: body + required: true + type: string +capabilities: + description: | + List of stack capabilities for stack. + in: body + required: true + type: array +capabilities_1: + description: | + A list of stack capabilities. + in: body + required: true + type: array +check: + description: | + Specify the ``check`` action in the request body. + in: body + required: true + type: string +config: + description: | + Configuration script or manifest that defines + which configuration is performed. + in: body + required: false + type: string +config_1: + description: | + The configuration code. + in: body + required: true + type: string +config_id_1: + description: | + The UUID of the software configuration resource + that runs when applying to the server. + in: body + required: true + type: string +config_id_2: + description: | + The UUID of the configuration. + in: body + required: true + type: string +config_id_3: + description: | + The UUID of the software configuration resource + to run when applying to the server. This UUID might not be the + same configuration UUID with which the deployment was created + because ephemeral configurations are created throughout the life + cycle of the deployment. + in: body + required: true + type: string +created_at: + description: | + The date and time when the resource was created. + + The date and time stamp format is `ISO 8601 + `_: + + :: + + CCYY-MM-DDThh:mm:ss±hh:mm + + For example, ``2015-08-27T09:49:58-05:00``. + + The ``±hh:mm`` value, if included, is the time zone as an offset + from UTC. + in: body + required: true + type: string +creation_time: + description: | + The date and time when the stack resource was created. + + The date and time stamp format is `ISO 8601 + `_: + + :: + + CCYY-MM-DDThh:mm:ss±hh:mm + + For example, ``2015-08-27T09:49:58-05:00``. + + The ``±hh:mm`` value, if included, is the time zone as an offset + from UTC. + in: body + required: true + type: string +creation_time_1: + description: | + The date and time when the software was created. + + The date and time stamp format is `ISO 8601 + `_: + + :: + + CCYY-MM-DDThh:mm:ss±hh:mm + + For example, ``2015-08-27T09:49:58-05:00``. + + The ``±hh:mm`` value, if included, is the time zone as an offset + from UTC. + in: body + required: true + type: string +creation_time_2: + description: | + The date and time when the resource was created. + + The date and time stamp format is `ISO 8601 + `_: + + :: + + CCYY-MM-DDThh:mm:ss±hh:mm + + For example, ``2015-08-27T09:49:58-05:00``. + + The ``±hh:mm`` value, if included, is the time zone as an offset + from UTC. + in: body + required: true + type: string +creation_time_3: + description: | + The date and time when the snapshot was created. + + The date and time stamp format is `ISO 8601 + `_: + + :: + + CCYY-MM-DDThh:mm:ss±hh:mm + + For example, ``2015-08-27T09:49:58-05:00``. + + The ``±hh:mm`` value, if included, is the time zone as an offset + from UTC. + in: body + required: true + type: string +creation_time_4: + description: | + The date and time when the software was created. + + The date and time stamp format is `ISO 8601 + `_: + + :: + + CCYY-MM-DDThh:mm:ss±hh:mm + + For example, ``2016-03-30T09:49:58-05:00``. + + The ``±hh:mm`` value, if included, is the time zone as an offset + from UTC. + in: body + required: true + type: string +creation_time_5: + description: | + The date and time when the stack was created. + + The date and time stamp format is `ISO 8601 + `_: + + :: + + CCYY-MM-DDThh:mm:ss±hh:mm + + For example, ``2015-08-27T09:49:58-05:00``. + + The ``±hh:mm`` value, if included, is the time zone as an offset + from UTC. + in: body + required: true + type: string +data: + description: | + The snapshot data. + in: body + required: true + type: object +deleted_at: + description: | + The date and time when the resource was deleted. + + The date and time stamp format is `ISO 8601 + `_: + + :: + + CCYY-MM-DDThh:mm:ss±hh:mm + + For example, ``2015-08-27T09:49:58-05:00``. + + The ``±hh:mm`` value, if included, is the time zone as an offset + from UTC. In the previous example, the offset value is ``-05:00``. + in: body + required: true + type: string +description: + description: | + The description of the stack resource. + in: body + required: true + type: string +description_1: + description: | + The description of the resource attribute. + in: body + required: true + type: string +description_2: + description: | + The description of a stack output. + in: body + required: true + type: string +description_3: + description: | + The description of the active stack. + in: body + required: true + type: string +description_4: + description: | + A description of the stack. + in: body + required: true + type: string +description_5: + description: | + The description of the stack. + in: body + required: true + type: string +description_6: + description: | + The description of the stack template. + in: body + required: true + type: string +disable_rollback: + description: | + Enables or disables deletion of all stack + resources when stack creation fails. Set to ``true`` to keep all + resources when stack creation fails. Set to ``false`` to delete + all resources when stack creation fails. Default is ``true``. + in: body + required: false + type: boolean +disable_rollback_1: + description: | + Enables or disables deletion of all previously- + created stack resources when stack creation fails. Set to ``true`` + to keep all previously-created stack resources when stack creation + fails. Set to ``false`` to delete all previously-created stack + resources when stack creation fails. Default is ``true``. + in: body + required: false + type: boolean +disable_rollback_2: + description: | + Enables or disables stack rollback when stack + creation fails. Set to ``true`` to rollback the stack when stack + creation fails. Set to ``false`` to disable stack rollback when + stack creation fails. Default is ``true``. + in: body + required: true + type: boolean +environment: + description: | + A JSON environment for the stack. + in: body + required: false + type: object +files: + description: | + Supplies the contents of files referenced in the template or the + environment. Stack templates and resource templates can explicitly + reference files by using the ``get_file`` intrinsic function. In + addition, the ``environment`` parameter can contain implicit + references to files. + + The value is a JSON object, where each key is a relative or + absolute URI which serves as the name of a file, and the associated + value provides the contents of the file. The following code shows + the general structure of this parameter. + + .. code-block:: json + + { ... + "files": { + "fileA.yaml": "Contents of the file", + "file:///usr/fileB.template": "Contents of the file", + "http://example.com/fileC.template": "Contents of the file" + } + ... + } + + Additionally, some template authors encode their user data in a + local file. The Orchestration client examines the template for the + ``get_file`` intrinsic function and adds an entry to the ``files`` + map with the path to the file as the name and the file contents as + the value. So, a simple example looks like this: + + .. code-block:: json + + { +    "files": { +       "myfile": "#!/bin/bash\necho \"Hello world\" > /root/testfile.txt" +    }, + ..., +    "stack_name": "teststack", +    "template": { + ..., +       "resources": { +          "my_server": { +             "type": "OS::Nova::Server", +             "properties": { + ..., +                "user_data": { +                   "get_file": "myfile" +                } +             } +          } +       } +    }, +    "timeout_mins": 60 + } + + Do not use this parameter to provide the content of the template + located at the ``template_url`` address. Instead, use the + ``template`` parameter to supply the template content as part of + the request. + in: body + required: false + type: object +group: + description: | + Namespace that groups this software configuration + by when it is delivered to a server. This setting might simply + define which configuration tool performs the configuration. + in: body + required: false + type: string +group_1: + description: | + The name of the group in which the software is + configured. + in: body + required: true + type: string +heat_template_version: + description: | + The version of the heat template. + in: body + required: true + type: string +hostname: + description: | + The name of the host for the service. + in: body + required: true + type: string +id: + description: | + The UUID of the heat engine. + in: body + required: true + type: string +id_1: + description: | + The UUID of the software deployment. + in: body + required: true + type: string +id_2: + description: | + The UUID of the system-assigned stack. + in: body + required: true + type: string +id_3: + description: | + The UUID of the snapshot. + in: body + required: true + type: string +id_5: + description: | + The UUID of the stack. + in: body + required: true + type: string +input_values: + description: | + A list of input data. + in: body + required: true + type: array +inputs: + description: | + Schema that represents the inputs that this + software configuration expects. + in: body + required: false + type: array +inputs_1: + description: | + A list of inputs to configure the software. + in: body + required: true + type: array +links: + description: | + A list of URLs for the stack. Each URL is a JSON + object with an ``href`` key indicating the URL and a ``rel`` key + indicating its relationship to the stack in question. There may be + multiple links returned. The ``self`` relationship identifies the + URL of the stack itself. + in: body + required: true + type: array +links_1: + description: | + A list of stack links. + in: body + required: true + type: array +logical_resource_id: + description: | + The ID of the logical stack resource. + in: body + required: true + type: string +name_1: + description: | + The name of the configuration to create. + in: body + required: false + type: string +name_2: + description: | + The name of the software configuration. + in: body + required: true + type: string +name_3: + description: | + The name of the snapshot. + in: body + required: true + type: string +notification_topics: + description: | + List of notification topics for stack. + in: body + required: true + type: array +notification_topics_1: + description: | + A list of stack notifications. + in: body + required: true + type: array +options: + description: | + Map that contains options that are specific to + the configuration management tool that this resource uses. + in: body + required: false + type: string +options_1: + description: | + The options, if any, to include in the code. For + example any dependent flags. + in: body + required: true + type: string +output_error: + description: | + The error in a stack output. + in: body + required: true + type: string +output_key: + description: | + The name of a stack output. + in: body + required: true + type: string +output_value: + description: | + The value of a stack output. + in: body + required: true + type: string +output_values: + description: | + A list of output data. + in: body + required: true + type: array +output_values_1: + description: | + Map of output values for the deployment, as + signaled from the server. + in: body + required: false + type: object +outputs: + description: | + Schema that represents the outputs that this + software configuration produces. + in: body + required: false + type: array +outputs_1: + description: | + A list of software configuration output data. + in: body + required: true + type: array +outputs_2: + description: | + A list of stack outputs. + in: body + required: true + type: array +outputs_3: + description: | + Key and value pairs that contain output data. + in: body + required: true + type: object +parameters: + description: | + Supplies arguments for parameters defined in the stack template. + + The value is a JSON object, where each key is the name of a + parameter defined in the template and the associated value is the + argument to use for that parameter when instantiating the template. + The following code shows the general structure of this parameter. + In the example, ``a`` and ``b`` would be the names of two + parameters defined in the template. + + .. code-block:: json + + { ... + "parameters": { + "a": "Value", + "b": "3" + } + ... + } + + While the service accepts JSON numbers for parameters with the type + ``number`` and JSON objects for parameters with the type ``json``, + all parameter values are converted to their string representation + for storage in the created Stack. Clients are encouraged to send + all parameter values using their string representation for + consistency between requests and responses from the Orchestration + service. + + A value must be provided for each template parameter which does not + specify a default value. However, this parameter is not allowed to + contain JSON properties with names that do not match a parameter + defined in the template. + + The ``files`` parameter maps logical file names to file contents. + Both the ``get_file`` intrinsic function and provider template + functionality use this mapping. When you want to use a provider + template, for example, the Orchestration service adds an entry to + the ``files`` map by using: + + - The URL of the provider template as the name. + + - The contents of that file as the value. + + Additionally, some template authors encode their user data in a + local file. The Orchestration client examines the template for the + ``get_file`` intrinsic function and adds an entry to the ``files`` + map with the path to the file as the name and the file contents as + the value. So, a simple example looks like this: + + .. code-block:: json + + { + "files": { + "myfile": "#!/bin/bash\necho \"Hello world\" > /root/testfile.txt" + }, + ..., + "stack_name": "teststack", + "template": { + ..., + "resources": { + "my_server": { + "type": "OS::Nova::Server", + "properties": { + ..., + "user_data": { + "get_file": "myfile" + } + } + } + } + }, + "timeout_mins": 60 + } + in: body + required: false + type: object +parameters_1: + description: | + Key and value pairs that contain stack + parameters. + in: body + required: true + type: object +parameters_2: + description: | + Key and value pairs that contain template + parameters. + in: body + required: true + type: object +parameters_3: + description: "Supplies updated arguments for parameters that are defined in the\n\ + stack template.\n\nThe value is a JSON object, where each key is the name of a\n\ + parameter defined in the template and the associated value is the\nargument to\ + \ use for that parameter when instantiating the template.\nThe following code\ + \ shows the general structure of this parameter.\nIn the example, ``a`` and ``b``\ + \ are the names of two parameters\ndefined in the template.\n\n.. code-block::\ + \ json\n\n { ...\n \"parameters\": {\n \ + \ \"a\": \"Value\",\n \"b\": \"3\"\n \ + \ }\n ... }\n \n\ + \nWhile the service accepts JSON numbers for parameters with the type\n``number``\ + \ and JSON objects for parameters with the type ``json``,\nall parameter values\ + \ are converted to their string representation\nfor storage in the created Stack.\ + \ Clients are encouraged to send\nall parameter values using their string representation\ + \ for\nconsistency between requests and responses from the Orchestration\nservice.\n\ + \nYou must specify a value for each template parameter that does not\nhave a default\ + \ value. However, this parameter cannot contain JSON\nproperties with names that\ + \ do not match a parameter that is defined\nin the template.\n" + in: body + required: false + type: object +parameters_4: + description: "This parameter supplies updated arguments for parameters defined in\n\ + the stack template.\n\nThe value is a JSON object, where each key is the name\ + \ of a\nparameter defined in the template and the associated value is the\nargument\ + \ to use for that parameter when instantiating the template.\nThe following code\ + \ shows the general structure of this parameter.\nIn the example, ``a`` and ``b``\ + \ are the names of two parameters\ndefined in the template.\n\n.. code-block::\ + \ json\n\n { ...\n \"parameters\": {\n \ + \ \"a\": \"Value\",\n \"b\": \"3\"\n \ + \ }\n ... }\n \n\nWhile\ + \ the service accepts JSON numbers for parameters with the type\n``number`` and\ + \ JSON objects for parameters with the type ``json``,\nall parameter values are\ + \ converted to their string representation\nfor storage in the created Stack.\ + \ Clients are encouraged to send\nall parameter values using their string representation\ + \ for\nconsistency between requests and responses from the Orchestration\nservice.\n\ + \nYou must specify a value for each template parameter that does not\nhave a default\ + \ value. However, this parameter cannot contain JSON\nproperties with names that\ + \ do not match a parameter that is defined\nin the template.\n" + in: body + required: false + type: object +parent: + description: | + The stack ID of the parent stack, if this is a + nested stack. + in: body + required: true + type: string +parent_1: + description: | + The parent of the stack. + in: body + required: true + type: string +physical_resource_id: + description: | + The ID of the stack physical resource. + in: body + required: true + type: string +project_id: + description: | + The UUID of the project. + in: body + required: true + type: string +properties: + description: | + The properties of the resource. Includes + description, type, and so on. + in: body + required: true + type: object +report_interval: + description: | + The polling interval, in seconds. The API reports + events at this interval until heat engine creation completes. + in: body + required: true + type: integer +required: + description: | + If set to ``true`` the attribute is required. + in: body + required: true + type: boolean +required_by: + description: | + The list of resources that require this stack + resource. + in: body + required: true + type: array +resource: + description: | + Key and value pairs that contain stack resource + properties. + in: body + required: true + type: object +resource_name_1: + description: | + The name of the resource. + in: body + required: true + type: string +resource_status_1: + description: | + The status of the resource. + in: body + required: true + type: string +resource_status_reason: + description: | + The reason for the current stack resource state. + in: body + required: true + type: string +resource_type_1: + description: | + The type of the resource. + in: body + required: true + type: string +resources: + description: | + A list of resources and their properties. + in: body + required: true + type: array +resources_1: + description: | + List of stack resources. + in: body + required: true + type: array +resources_2: + description: | + The snapshot resources. + in: body + required: true + type: object +resources_3: + description: | + The required sources for creating the stack + template. + in: body + required: true + type: object +resume: + description: | + Specify the ``resume`` action in the request + body. + in: body + required: true + type: string +server_id: + description: | + The UUID of the compute server to which the + configuration applies. + in: body + required: true + type: string +server_id_1: + description: | + The UUID of the server. + in: body + required: true + type: string +services: + description: | + A list of heat engines. + in: body + required: true + type: array +snapshot: + description: | + Key and value pairs that contain snapshot + properties. + in: body + required: true + type: object +snapshots: + description: | + A list of snapshots and their properties. + in: body + required: true + type: array +stack: + description: | + The ``stack`` object. + in: body + required: true + type: object +stack_name_1: + description: | + A name for the new stack. The value must be + unique within a project. The name must start with an ASCII letter + and can contain ASCII letters, digits, underscores, periods, and + hyphens. Specifically, the name must match the + ``^[a-zA-Z][a-zA-Z0-9_.-]*$`` regular expression. When you delete + or abandon a stack, its name will not become available for reuse + until the deletion completes successfully. + in: body + required: true + type: string +stack_name_2: + description: | + A name for the new stack. This value must be + unique within a project. The name must start with an ASCII letter + and can contain ASCII letters, digits, underscores, periods, and + hyphens. Specifically, the name must match the + ``^[a-zA-Z][a-zA-Z0-9_.-]*$`` regular expression. When you delete + or abandon a stack, its name will not become available for reuse + until the deletion completes successfully. + in: body + required: true + type: string +stack_name_3: + description: | + The name of the active stack. + in: body + required: true + type: string +stack_owner: + description: | + Stack owner name. + in: body + required: true + type: string +stack_owner_1: + description: | + The owner of the stack. + in: body + required: true + type: string +stack_status: + description: | + The status of the active stack. + in: body + required: true + type: string +stack_status_1: + description: | + The status of the stack. + in: body + required: true + type: string +stack_status_reason: + description: | + The reason for the current status of the stack. + in: body + required: true + type: string +stack_user_project_id: + description: | + Authentication project ID, which can also perform + operations on this deployment. + in: body + required: false + type: string +stack_user_project_id_1: + description: | + The project UUID of the stack user. + in: body + required: true + type: string +status: + description: | + The status of the heat engine. + in: body + required: true + type: string +status_1: + description: | + Current status of the deployment. A valid value + is ``COMPLETE``, ``IN_PROGRESS``, or ``FAILED``. + in: body + required: false + type: string +status_2: + description: | + The status of the software deployment. The value + is ``INPROGRESS`` or ``COMPLETE``. + in: body + required: true + type: string +status_3: + description: | + Current status of the deployment. Value is + ``IN_PROGRESS``, ``COMPLETE``, or ``FAILED``. + in: body + required: false + type: string +status_4: + description: | + The status of the snapshot. + in: body + required: true + type: string +status_reason: + description: | + Error description for the last status change, + which is ``FAILED`` status. + in: body + required: false + type: string +status_reason_1: + description: | + The debug information for the current status. + in: body + required: true + type: string +status_reason_2: + description: | + The reason for the current snapshot status. + in: body + required: true + type: string +support_status: + description: | + Information about the current status. + in: body + required: true + type: object +suspend: + description: | + Specify the ``suspend`` action in the request + body. + in: body + required: true + type: string +tags: + description: | + One or more simple string tags to associate with + the stack. To associate multiple tags with a stack, separate the + tags with commas. For example, ``tag1,tag2``. + in: body + required: false + type: string +tags_2: + description: | + The stack tags. + in: body + required: true + type: string +template: + description: | + The stack template on which to perform the operation. + + This parameter is always provided as a ``string`` in the JSON + request body. The content of the string is a JSON- or YAML- + formatted Orchestration template. For example: + + .. code-block:: json + + "template": { + "heat_template_version": "2013-05-23", + ...} + + This parameter is required only when you omit the ``template_url`` + parameter. If you specify both parameters, this value overrides the + ``template_url`` parameter value. + in: body + required: true + type: object +template_1: + description: | + Information about the template. + in: body + required: true + type: object +template_2: + description: | + The stack template on which to perform the operation. + + This parameter is always provided as a ``string`` in the JSON + request body. The content of the string is a JSON- or YAML- + formatted Orchestration template. For example: + + .. code-block:: json + + "template": { + "heat_template_version": "2013-05-23", + ...} + + This parameter is required only when you omit the ``template_url`` + parameter. If you specify both parameters, this value overrides the + ``template_url`` parameter value. + in: body + required: false + type: object +template_description: + description: | + A description of the template that defines the + stack. + in: body + required: true + type: string +template_description_1: + description: | + The description of the stack template. + in: body + required: true + type: string +template_url: + description: | + A URI to the location containing the stack + template on which to perform the operation. See the description + of the ``template`` parameter for information about the expected + template content located at the URI. This parameter is only + required when you omit the ``template`` parameter. If you specify + both parameters, this parameter is ignored. + in: body + required: false + type: string +timeout_mins: + description: | + The timeout for stack creation in minutes. + in: body + required: false + type: integer +timeout_mins_1: + description: | + Time-lines for stack creation. + in: body + required: true + type: integer +timeout_mins_2: + description: | + The timeout, in minutes. + in: body + required: true + type: string +topic: + description: | + The topic of the heat engine. + in: body + required: true + type: string +type: + description: | + The property type. + in: body + required: true + type: string +update_allowed: + description: | + If set to ``true``, update is allowed. + in: body + required: true + type: boolean +updated_at: + description: | + The date and time when the resource was updated. + + The date and time stamp format is `ISO 8601 + `_: + + :: + + CCYY-MM-DDThh:mm:ss±hh:mm + + For example, ``2015-08-27T09:49:58-05:00``. + + The ``±hh:mm`` value, if included, is the time zone as an offset + from UTC. In the previous example, the offset value is ``-05:00``. + + If the ``updated_at`` date and time stamp is not set, its value is + ``null``. + in: body + required: true + type: string +updated_time: + description: | + The date and time when the stack resource was updated. + + The date and time stamp format is `ISO 8601 + `_: + + :: + + CCYY-MM-DDThh:mm:ss±hh:mm + + For example, ``2015-08-27T09:49:58-05:00``. + + The ``±hh:mm`` value, if included, is the time zone as an offset + from UTC. + + If the ``updated_at`` date and time stamp is not set, its value is + ``null``. + in: body + required: true + type: string +updated_time_1: + description: | + The date and time when the stack resource was updated. + + The date and time stamp format is `ISO 8601 + `_: + + :: + + CCYY-MM-DDThh:mm:ss±hh:mm + + For example, ``2016-03-30T09:49:58-05:00``. + + The ``±hh:mm`` value, if included, is the time zone as an offset + from UTC. + + If the ``updated_at`` date and time stamp is not set, its value is + ``null``. + in: body + required: true + type: string +updated_time_2: + description: | + Time of last stack update in the following + format: ``YYYY-MM- DDThh:mm:ssTZD``, where ``TZD`` is the time + zone designator. + in: body + required: true + type: string +updated_time_3: + description: | + The date and time when the stack was updated. + + The date and time stamp format is `ISO 8601 + `_: + + :: + + CCYY-MM-DDThh:mm:ss±hh:mm + + For example, ``2015-08-27T09:49:58-05:00``. + + The ``±hh:mm`` value, if included, is the time zone as an offset + from UTC. + + If the ``updated_at`` date and time stamp is not set, its value is + ``null``. + in: body + required: true + type: string + diff --git a/api-ref/source/orchestration/v1/samples/build-info-response.json b/api-ref/source/orchestration/v1/samples/build-info-response.json new file mode 100644 index 000000000..650200f88 --- /dev/null +++ b/api-ref/source/orchestration/v1/samples/build-info-response.json @@ -0,0 +1,8 @@ +{ + "api": { + "revision": "{api_build_revision}" + }, + "engine": { + "revision": "{engine_build_revision}" + } +} diff --git a/api-ref/source/orchestration/v1/samples/config-create-request.json b/api-ref/source/orchestration/v1/samples/config-create-request.json new file mode 100644 index 000000000..d9f44241b --- /dev/null +++ b/api-ref/source/orchestration/v1/samples/config-create-request.json @@ -0,0 +1,28 @@ +{ + "inputs": [ + { + "default": null, + "type": "String", + "name": "foo", + "description": null + }, + { + "default": null, + "type": "String", + "name": "bar", + "description": null + } + ], + "group": "script", + "name": "a-config-we5zpvyu7b5o", + "outputs": [ + { + "type": "String", + "name": "result", + "error_output": false, + "description": null + } + ], + "config": "#!/bin/sh -x\necho \"Writing to /tmp/$bar\"\necho $foo > /tmp/$bar\necho -n \"The file /tmp/$bar contains `cat /tmp/$bar` for server $deploy_server_id during $deploy_action\" > $heat_outputs_path.result\necho \"Written to /tmp/$bar\"\necho \"Output to stderr\" 1>&2", + "options": null +} diff --git a/api-ref/source/orchestration/v1/samples/config-create-response.json b/api-ref/source/orchestration/v1/samples/config-create-response.json new file mode 100644 index 000000000..5025435b9 --- /dev/null +++ b/api-ref/source/orchestration/v1/samples/config-create-response.json @@ -0,0 +1,32 @@ +{ + "software_config": { + "creation_time": "2015-01-31T15:12:36Z", + "inputs": [ + { + "default": null, + "type": "String", + "name": "foo", + "description": null + }, + { + "default": null, + "type": "String", + "name": "bar", + "description": null + } + ], + "group": "script", + "name": "a-config-we5zpvyu7b5o", + "outputs": [ + { + "type": "String", + "name": "result", + "error_output": false, + "description": null + } + ], + "options": null, + "config": "#!/bin/sh -x\necho \"Writing to /tmp/$bar\"\necho $foo > /tmp/$bar\necho -n \"The file /tmp/$bar contains `cat /tmp/$bar` for server $deploy_server_id during $deploy_action\" > $heat_outputs_path.result\necho \"Written to /tmp/$bar\"\necho \"Output to stderr\" 1>&2", + "id": "ddee7aca-aa32-4335-8265-d436b20db4f1" + } +} diff --git a/api-ref/source/orchestration/v1/samples/config-show-response.json b/api-ref/source/orchestration/v1/samples/config-show-response.json new file mode 100644 index 000000000..e89b2b1c0 --- /dev/null +++ b/api-ref/source/orchestration/v1/samples/config-show-response.json @@ -0,0 +1,32 @@ +{ + "software_config": { + "inputs": [ + { + "default": null, + "type": "String", + "name": "foo", + "description": null + }, + { + "default": null, + "type": "String", + "name": "bar", + "description": null + } + ], + "group": "script", + "name": "a-config-we5zpvyu7b5o", + "outputs": [ + { + "type": "String", + "name": "result", + "error_output": false, + "description": null + } + ], + "creation_time": "2015-01-31T15:12:36Z", + "id": "ddee7aca-aa32-4335-8265-d436b20db4f1", + "config": "#!/bin/sh -x\necho \"Writing to /tmp/$bar\"\necho $foo > /tmp/$bar\necho -n \"The file /tmp/$bar contains `cat /tmp/$bar` for server $deploy_server_id during $deploy_action\" > $heat_outputs_path.result\necho \"Written to /tmp/$bar\"\necho \"Output to stderr\" 1>&2", + "options": null + } +} diff --git a/api-ref/source/orchestration/v1/samples/deployment-create-request.json b/api-ref/source/orchestration/v1/samples/deployment-create-request.json new file mode 100644 index 000000000..92ad84069 --- /dev/null +++ b/api-ref/source/orchestration/v1/samples/deployment-create-request.json @@ -0,0 +1,8 @@ +{ + "status": "IN_PROGRESS", + "server_id": "ec14c864-096e-4e27-bb8a-2c2b4dc6f3f5", + "config_id": "8da95794-2ad9-4979-8ae5-739ce314c5cd", + "stack_user_project_id": "c024bfada67845ddb17d2b0c0be8cd79", + "action": "CREATE", + "status_reason": "Deploy data available" +} diff --git a/api-ref/source/orchestration/v1/samples/deployment-create-response.json b/api-ref/source/orchestration/v1/samples/deployment-create-response.json new file mode 100644 index 000000000..736f1e15b --- /dev/null +++ b/api-ref/source/orchestration/v1/samples/deployment-create-response.json @@ -0,0 +1,14 @@ +{ + "software_deployment": { + "status": "IN_PROGRESS", + "server_id": "ec14c864-096e-4e27-bb8a-2c2b4dc6f3f5", + "config_id": "8da95794-2ad9-4979-8ae5-739ce314c5cd", + "output_values": null, + "input_values": null, + "action": "CREATE", + "status_reason": "Deploy data available", + "id": "ef422fa5-719a-419e-a10c-72e3a367b0b8", + "creation_time": "2015-01-31T15:12:36Z", + "updated_time": "2015-01-31T15:18:21Z" + } +} diff --git a/api-ref/source/orchestration/v1/samples/deployment-metadata-response.json b/api-ref/source/orchestration/v1/samples/deployment-metadata-response.json new file mode 100644 index 000000000..8c5bd9a9d --- /dev/null +++ b/api-ref/source/orchestration/v1/samples/deployment-metadata-response.json @@ -0,0 +1,130 @@ +{ + "metadata": [ + { + "inputs": [ + { + "default": null, + "type": "String", + "name": "foo", + "value": "fooooo", + "description": null + }, + { + "default": null, + "type": "String", + "name": "bar", + "value": "baaaaa", + "description": null + }, + { + "type": "String", + "name": "deploy_server_id", + "value": "ec14c864-096e-4e27-bb8a-2c2b4dc6f3f5", + "description": "ID of the server being deployed to" + }, + { + "type": "String", + "name": "deploy_action", + "value": "CREATE", + "description": "Name of the current action being deployed" + }, + { + "type": "String", + "name": "deploy_stack_id", + "value": "a/9bd57090-8954-48ab-bab9-adf9e1ac70fc", + "description": "ID of the stack this deployment belongs to" + }, + { + "type": "String", + "name": "deploy_resource_name", + "value": "deployment", + "description": "Name of this deployment resource in the stack" + }, + { + "type": "String", + "name": "deploy_signal_id", + "value": "http://192.168.20.103:8000/v1/signal/arn%3Aopenstack%3Aheat%3A%3Ae2a84fbdaeb047ae8da4b503f3b69f1f%3Astacks%2Fa%2F9bd57090-8954-48ab-bab9-adf9e1ac70fc%2Fresources%2Fdeployment?Timestamp=2014-03-19T20%3A30%3A59Z&SignatureMethod=HmacSHA256&AWSAccessKeyId=ca3571413e4a49998d580215517b3685&SignatureVersion=2&Signature=w6Iu%2BNbg86mqwSOUf1GLuKPO7KaD82PiGpL4ig9Q1l4%3D", + "description": "ID of signal to use for signalling output values" + } + ], + "group": "script", + "name": "a-config-we5zpvyu7b5o", + "outputs": [ + { + "type": "String", + "name": "result", + "error_output": false, + "description": null + } + ], + "options": null, + "creation_time": "2015-01-31T15:12:36Z", + "updated_time": "2015-01-31T15:18:21Z", + "config": "#!/bin/sh -x\necho \"Writing to /tmp/$bar\"\necho $foo > /tmp/$bar\necho -n \"The file /tmp/$bar contains `cat /tmp/$bar` for server $deploy_server_id during $deploy_action\" > $heat_outputs_path.result\necho \"Written to /tmp/$bar\"\necho \"Output to stderr\" 1>&2", + "id": "3d5ec2a8-7004-43b6-a7f6-542bdbe9d434" + }, + { + "inputs": [ + { + "default": null, + "type": "String", + "name": "foo", + "value": "fu", + "description": null + }, + { + "default": null, + "type": "String", + "name": "bar", + "value": "barmy", + "description": null + }, + { + "type": "String", + "name": "deploy_server_id", + "value": "ec14c864-096e-4e27-bb8a-2c2b4dc6f3f5", + "description": "ID of the server being deployed to" + }, + { + "type": "String", + "name": "deploy_action", + "value": "CREATE", + "description": "Name of the current action being deployed" + }, + { + "type": "String", + "name": "deploy_stack_id", + "value": "a/9bd57090-8954-48ab-bab9-adf9e1ac70fc", + "description": "ID of the stack this deployment belongs to" + }, + { + "type": "String", + "name": "deploy_resource_name", + "value": "other_deployment", + "description": "Name of this deployment resource in the stack" + }, + { + "type": "String", + "name": "deploy_signal_id", + "value": "http://192.168.20.103:8000/v1/signal/arn%3Aopenstack%3Aheat%3A%3Ae2a84fbdaeb047ae8da4b503f3b69f1f%3Astacks%2Fa%2F9bd57090-8954-48ab-bab9-adf9e1ac70fc%2Fresources%2Fother_deployment?Timestamp=2014-03-19T20%3A30%3A59Z&SignatureMethod=HmacSHA256&AWSAccessKeyId=7b761482f8254946bcd3d5ccb36fe939&SignatureVersion=2&Signature=giMfv%2BhrAw6y%2FCMKQIQz2IhO5PkAj5%2BfP5YsL6rul3o%3D", + "description": "ID of signal to use for signalling output values" + } + ], + "group": "script", + "name": "a-config-we5zpvyu7b5o", + "outputs": [ + { + "type": "String", + "name": "result", + "error_output": false, + "description": null + } + ], + "options": null, + "creation_time": "2015-01-31T16:14:13Z", + "updated_time": "2015-01-31T16:18:19Z", + "config": "#!/bin/sh -x\necho \"Writing to /tmp/$bar\"\necho $foo > /tmp/$bar\necho -n \"The file /tmp/$bar contains `cat /tmp/$bar` for server $deploy_server_id during $deploy_action\" > $heat_outputs_path.result\necho \"Written to /tmp/$bar\"\necho \"Output to stderr\" 1>&2", + "id": "8da95794-2ad9-4979-8ae5-739ce314c5cd" + } + ] +} diff --git a/api-ref/source/orchestration/v1/samples/deployment-show-response.json b/api-ref/source/orchestration/v1/samples/deployment-show-response.json new file mode 100644 index 000000000..b234235ac --- /dev/null +++ b/api-ref/source/orchestration/v1/samples/deployment-show-response.json @@ -0,0 +1,14 @@ +{ + "software_deployment": { + "status": "IN_PROGRESS", + "server_id": "ec14c864-096e-4e27-bb8a-2c2b4dc6f3f5", + "config_id": "3d5ec2a8-7004-43b6-a7f6-542bdbe9d434", + "output_values": null, + "input_values": null, + "action": "CREATE", + "status_reason": "Deploy data available", + "id": "06e87bcc-33a2-4bce-aebd-533e698282d3", + "creation_time": "2015-01-31T15:12:36Z", + "updated_time": "2015-01-31T15:18:21Z" + } +} diff --git a/api-ref/source/orchestration/v1/samples/deployment-update-request.json b/api-ref/source/orchestration/v1/samples/deployment-update-request.json new file mode 100644 index 000000000..a9877f588 --- /dev/null +++ b/api-ref/source/orchestration/v1/samples/deployment-update-request.json @@ -0,0 +1,10 @@ +{ + "status": "COMPLETE", + "output_values": { + "deploy_stdout": "Writing to /tmp/baaaaa\nWritten to /tmp/baaaaa\n", + "deploy_stderr": "+ echo Writing to /tmp/baaaaa\n+ echo fooooo\n+ cat /tmp/baaaaa\n+ echo -n The file /tmp/baaaaa contains fooooo for server ec14c864-096e-4e27-bb8a-2c2b4dc6f3f5 during CREATE\n+ echo Written to /tmp/baaaaa\n+ echo Output to stderr\nOutput to stderr\n", + "deploy_status_code": 0, + "result": "The file /tmp/baaaaa contains fooooo for server ec14c864-096e-4e27-bb8a-2c2b4dc6f3f5 during CREATE" + }, + "status_reason": "Outputs received" +} diff --git a/api-ref/source/orchestration/v1/samples/deployment-update-response.json b/api-ref/source/orchestration/v1/samples/deployment-update-response.json new file mode 100644 index 000000000..19b7bbfec --- /dev/null +++ b/api-ref/source/orchestration/v1/samples/deployment-update-response.json @@ -0,0 +1,19 @@ +{ + "software_deployment": { + "status": "COMPLETE", + "server_id": "ec14c864-096e-4e27-bb8a-2c2b4dc6f3f5", + "config_id": "3d5ec2a8-7004-43b6-a7f6-542bdbe9d434", + "output_values": { + "deploy_stdout": "Writing to /tmp/baaaaa\nWritten to /tmp/baaaaa\n", + "deploy_stderr": "+ echo Writing to /tmp/baaaaa\n+ echo fooooo\n+ cat /tmp/baaaaa\n+ echo -n The file /tmp/baaaaa contains fooooo for server ec14c864-096e-4e27-bb8a-2c2b4dc6f3f5 during CREATE\n+ echo Written to /tmp/baaaaa\n+ echo Output to stderr\nOutput to stderr\n", + "deploy_status_code": 0, + "result": "The file /tmp/baaaaa contains fooooo for server ec14c864-096e-4e27-bb8a-2c2b4dc6f3f5 during CREATE" + }, + "input_values": null, + "action": "CREATE", + "status_reason": "Outputs received", + "id": "06e87bcc-33a2-4bce-aebd-533e698282d3", + "creation_time": "2015-01-31T15:12:36Z", + "updated_time": "2015-01-31T15:18:21Z" + } +} diff --git a/api-ref/source/orchestration/v1/samples/deployments-list-response.json b/api-ref/source/orchestration/v1/samples/deployments-list-response.json new file mode 100644 index 000000000..95b783c55 --- /dev/null +++ b/api-ref/source/orchestration/v1/samples/deployments-list-response.json @@ -0,0 +1,21 @@ +{ + "software_deployments": [ + { + "status": "COMPLETE", + "server_id": "ec14c864-096e-4e27-bb8a-2c2b4dc6f3f5", + "config_id": "8da95794-2ad9-4979-8ae5-739ce314c5cd", + "output_values": { + "deploy_stdout": "Writing to /tmp/barmy\nWritten to /tmp/barmy\n", + "deploy_stderr": "+ echo Writing to /tmp/barmy\n+ echo fu\n+ cat /tmp/barmy\n+ echo -n The file /tmp/barmy contains fu for server ec14c864-096e-4e27-bb8a-2c2b4dc6f3f5 during CREATE\n+ echo Written to /tmp/barmy\n+ echo Output to stderr\nOutput to stderr\n", + "deploy_status_code": 0, + "result": "The file /tmp/barmy contains fu for server ec14c864-096e-4e27-bb8a-2c2b4dc6f3f5 during CREATE" + }, + "input_values": null, + "action": "CREATE", + "status_reason": "Outputs received", + "id": "ef422fa5-719a-419e-a10c-72e3a367b0b8", + "creation_time": "2015-01-31T15:12:36Z", + "updated_time": "2015-01-31T15:18:21Z" + } + ] +} diff --git a/api-ref/source/orchestration/v1/samples/event-show-response.json b/api-ref/source/orchestration/v1/samples/event-show-response.json new file mode 100644 index 000000000..3631e8ac3 --- /dev/null +++ b/api-ref/source/orchestration/v1/samples/event-show-response.json @@ -0,0 +1,33 @@ +{ + "event": { + "event_time": "2015-06-25T14:59:53", + "id": "8db23e2e-72b2-47a2-9ed9-b52417f56e50", + "links": [ + { + "href": "http://hostname/v1/1234/stacks/mystack/56789/resources/random_key_name/events/8db23e2e-72b2-47a2-9ed9-b52417f56e50", + "rel": "self" + }, + { + "href": "http://hostname/v1/1234/stacks/mystack/56789/resources/random_key_name", + "rel": "resource" + }, + { + "href": "http://hostname/v1/1234/stacks/mystack/56789", + "rel": "stack" + } + ], + "logical_resource_id": "random_key_name", + "physical_resource_id": null, + "resource_name": "random_key_name", + "resource_properties": { + "character_classes": null, + "character_sequences": null, + "length": 8, + "salt": null, + "sequence": null + }, + "resource_status": "CREATE_IN_PROGRESS", + "resource_status_reason": "state changed", + "resource_type": "OS::Heat::RandomString" + } +} diff --git a/api-ref/source/orchestration/v1/samples/events-list-response.json b/api-ref/source/orchestration/v1/samples/events-list-response.json new file mode 100644 index 000000000..83d8f88c4 --- /dev/null +++ b/api-ref/source/orchestration/v1/samples/events-list-response.json @@ -0,0 +1,50 @@ +{ + "events": [ + { + "resource_name": "port", + "event_time": "2014-07-23T08:14:47Z", + "links": [ + { + "href": "http://192.168.123.200:8004/v1/dc4b074874244f7693dd65583733a758/stacks/aws_port/db467ed1-50b5-4a3e-aeb1-396ff1d151c5/resources/port/events/474bfdf0-a450-46ec-a78a-0c7faa404073", + "rel": "self" + }, + { + "href": "http://192.168.123.200:8004/v1/dc4b074874244f7693dd65583733a758/stacks/aws_port/db467ed1-50b5-4a3e-aeb1-396ff1d151c5/resources/port", + "rel": "resource" + }, + { + "href": "http://192.168.123.200:8004/v1/dc4b074874244f7693dd65583733a758/stacks/aws_port/db467ed1-50b5-4a3e-aeb1-396ff1d151c5", + "rel": "stack" + } + ], + "logical_resource_id": "port", + "resource_status": "CREATE_FAILED", + "resource_status_reason": "NotFound: Subnet f8a699d0-3537-429e-87a5-6b5a8d0c2bf0 could not be found", + "physical_resource_id": null, + "id": "474bfdf0-a450-46ec-a78a-0c7faa404073" + }, + { + "resource_name": "port", + "event_time": "2014-07-23T08:14:47Z", + "links": [ + { + "href": "http://192.168.123.200:8004/v1/dc4b074874244f7693dd65583733a758/stacks/aws_port/db467ed1-50b5-4a3e-aeb1-396ff1d151c5/resources/port/events/66fa95b6-e6f8-4f05-b1af-e828f5aba04c", + "rel": "self" + }, + { + "href": "http://192.168.123.200:8004/v1/dc4b074874244f7693dd65583733a758/stacks/aws_port/db467ed1-50b5-4a3e-aeb1-396ff1d151c5/resources/port", + "rel": "resource" + }, + { + "href": "http://192.168.123.200:8004/v1/dc4b074874244f7693dd65583733a758/stacks/aws_port/db467ed1-50b5-4a3e-aeb1-396ff1d151c5", + "rel": "stack" + } + ], + "logical_resource_id": "port", + "resource_status": "CREATE_IN_PROGRESS", + "resource_status_reason": "state changed", + "physical_resource_id": null, + "id": "66fa95b6-e6f8-4f05-b1af-e828f5aba04c" + } + ] +} diff --git a/api-ref/source/orchestration/v1/samples/heat-versions-response.json b/api-ref/source/orchestration/v1/samples/heat-versions-response.json new file mode 100644 index 000000000..e13cf94f3 --- /dev/null +++ b/api-ref/source/orchestration/v1/samples/heat-versions-response.json @@ -0,0 +1,14 @@ +{ + "versions": [ + { + "status": "CURRENT", + "id": "v1.0", + "links": [ + { + "href": "http://23.253.228.211:8000/v1/", + "rel": "self" + } + ] + } + ] +} diff --git a/api-ref/source/orchestration/v1/samples/resource-metadata-response.json b/api-ref/source/orchestration/v1/samples/resource-metadata-response.json new file mode 100644 index 000000000..7f1860ce8 --- /dev/null +++ b/api-ref/source/orchestration/v1/samples/resource-metadata-response.json @@ -0,0 +1,6 @@ +{ + "metadata": { + "some_key": "some_value", + "some_other_key": "some_other_value" + } +} diff --git a/api-ref/source/orchestration/v1/samples/resource-schema-response.json b/api-ref/source/orchestration/v1/samples/resource-schema-response.json new file mode 100644 index 000000000..9f930f1fd --- /dev/null +++ b/api-ref/source/orchestration/v1/samples/resource-schema-response.json @@ -0,0 +1,30 @@ +{ + "attributes": { + "an_attribute": { + "description": "A runtime value of the resource." + } + }, + "properties": { + "a_property": { + "constraints": [ + { + "description": "Must be between 1 and 255 characters", + "length": { + "max": 255, + "min": 1 + } + } + ], + "description": "A resource description.", + "required": true, + "type": "string", + "update_allowed": false + } + }, + "resource_type": "OS::Heat::AResourceName", + "support_status": { + "message": "A status message", + "status": "SUPPORTED", + "version": "2014.1" + } +} diff --git a/api-ref/source/orchestration/v1/samples/resource-show-response.json b/api-ref/source/orchestration/v1/samples/resource-show-response.json new file mode 100644 index 000000000..6062ab2db --- /dev/null +++ b/api-ref/source/orchestration/v1/samples/resource-show-response.json @@ -0,0 +1,27 @@ +{ + "resource": { + "attributes": { + "value": "I9S20uIp" + }, + "creation_time": "2015-06-25T14:59:53", + "description": "", + "links": [ + { + "href": "http://hostname/v1/1234/stacks/mystack/629a32d0-ac4f-4f63-b58d-f0d047b1ba4c/resources/random_key_name", + "rel": "self" + }, + { + "href": "http://hostname/v1/1234/stacks/mystack/629a32d0-ac4f-4f63-b58d-f0d047b1ba4c", + "rel": "stack" + } + ], + "logical_resource_id": "random_key_name", + "physical_resource_id": "mystack-random_key_name-pmjmy5pks735", + "required_by": [], + "resource_name": "random_key_name", + "resource_status": "CREATE_COMPLETE", + "resource_status_reason": "state changed", + "resource_type": "OS::Heat::RandomString", + "updated_time": "2015-06-25T14:59:53" + } +} diff --git a/api-ref/source/orchestration/v1/samples/resource-type-template-response.json b/api-ref/source/orchestration/v1/samples/resource-type-template-response.json new file mode 100644 index 000000000..13cc0f5cc --- /dev/null +++ b/api-ref/source/orchestration/v1/samples/resource-type-template-response.json @@ -0,0 +1,50 @@ +{ + "HeatTemplateFormatVersion": "2012-12-12", + "Outputs": { + "private_key": { + "Description": "The private key if it has been saved.", + "Value": "{\"Fn::GetAtt\": [\"KeyPair\", \"private_key\"]}" + }, + "public_key": { + "Description": "The public key.", + "Value": "{\"Fn::GetAtt\": [\"KeyPair\", \"public_key\"]}" + } + }, + "Parameters": { + "name": { + "Description": "The name of the key pair.", + "Type": "String" + }, + "public_key": { + "Description": "The optional public key. This allows users to supply the public key from a pre-existing key pair. If not supplied, a new key pair will be generated.", + "Type": "String" + }, + "save_private_key": { + "AllowedValues": [ + true, + "true", + false, + "false" + ], + "Default": false, + "Description": "true if the system should remember a generated private key; false otherwise.", + "Type": "String" + } + }, + "Resources": { + "KeyPair": { + "Properties": { + "name": { + "Ref": "name" + }, + "public_key": { + "Ref": "public_key" + }, + "save_private_key": { + "Ref": "save_private_key" + } + }, + "Type": "OS::Nova::KeyPair" + } + } +} diff --git a/api-ref/source/orchestration/v1/samples/resource-types-list-response.json b/api-ref/source/orchestration/v1/samples/resource-types-list-response.json new file mode 100644 index 000000000..f9cbef5d6 --- /dev/null +++ b/api-ref/source/orchestration/v1/samples/resource-types-list-response.json @@ -0,0 +1,61 @@ +{ + "resource_types": [ + "AWS::EC2::Instance", + "OS::Heat::ScalingPolicy", + "AWS::CloudFormation::Stack", + "OS::Keystone::Group", + "OS::Glance::Image", + "AWS::EC2::Volume", + "OS::Heat::SoftwareDeployment", + "AWS::AutoScaling::ScalingPolicy", + "AWS::EC2::InternetGateway", + "OS::Heat::SoftwareDeployments", + "AWS::EC2::VolumeAttachment", + "AWS::CloudFormation::WaitConditionHandle", + "OS::Cinder::VolumeAttachment", + "OS::Cinder::EncryptedVolumeType", + "OS::Heat::AutoScalingGroup", + "OS::Nova::FloatingIP", + "OS::Heat::HARestarter", + "OS::Keystone::Project", + "OS::Keystone::Endpoint", + "OS::Heat::InstanceGroup", + "AWS::CloudWatch::Alarm", + "AWS::AutoScaling::AutoScalingGroup", + "OS::Heat::CloudConfig", + "OS::Heat::SoftwareComponent", + "OS::Cinder::Volume", + "OS::Keystone::Service", + "OS::Heat::WaitConditionHandle", + "OS::Heat::SoftwareConfig", + "AWS::CloudFormation::WaitCondition", + "OS::Heat::StructuredDeploymentGroup", + "OS::Heat::RandomString", + "OS::Heat::SoftwareDeploymentGroup", + "OS::Nova::KeyPair", + "OS::Heat::MultipartMime", + "OS::Heat::UpdateWaitConditionHandle", + "OS::Nova::Server", + "AWS::IAM::AccessKey", + "AWS::EC2::SecurityGroup", + "AWS::EC2::EIPAssociation", + "AWS::EC2::EIP", + "OS::Heat::AccessPolicy", + "AWS::IAM::User", + "OS::Heat::WaitCondition", + "OS::Heat::StructuredDeployment", + "AWS::RDS::DBInstance", + "AWS::AutoScaling::LaunchConfiguration", + "OS::Heat::Stack", + "OS::Nova::FloatingIPAssociation", + "OS::Heat::ResourceGroup", + "OS::Heat::StructuredConfig", + "OS::Nova::ServerGroup", + "OS::Heat::StructuredDeployments", + "OS::Keystone::Role", + "OS::Keystone::User", + "AWS::ElasticLoadBalancing::LoadBalancer", + "OS::Nova::Flavor", + "OS::Cinder::VolumeType" + ] +} diff --git a/api-ref/source/orchestration/v1/samples/resources-list-response.json b/api-ref/source/orchestration/v1/samples/resources-list-response.json new file mode 100644 index 000000000..5df952ca0 --- /dev/null +++ b/api-ref/source/orchestration/v1/samples/resources-list-response.json @@ -0,0 +1,25 @@ +{ + "resources": [ + { + "creation_time": "2015-06-25T14:59:53", + "links": [ + { + "href": "http://hostname/v1/1234/stacks/mystack/629a32d0-ac4f-4f63-b58d-f0d047b1ba4c/resources/random_key_name", + "rel": "self" + }, + { + "href": "http://hostname/v1/1234/stacks/mystack/629a32d0-ac4f-4f63-b58d-f0d047b1ba4c", + "rel": "stack" + } + ], + "logical_resource_id": "random_key_name", + "physical_resource_id": "mystack-random_key_name-pmjmy5pks735", + "required_by": [], + "resource_name": "random_key_name", + "resource_status": "CREATE_COMPLETE", + "resource_status_reason": "state changed", + "resource_type": "OS::Heat::RandomString", + "updated_time": "2015-06-25T14:59:53" + } + ] +} diff --git a/api-ref/source/orchestration/v1/samples/services-list-response.json b/api-ref/source/orchestration/v1/samples/services-list-response.json new file mode 100644 index 000000000..b49be7314 --- /dev/null +++ b/api-ref/source/orchestration/v1/samples/services-list-response.json @@ -0,0 +1,30 @@ +{ + "services": [ + { + "status": "up", + "binary": "heat-engine", + "report_interval": 60, + "engine_id": "9d9242c3-4b9e-45e1-9e74-7615fbf20e5d", + "created_at": "2015-02-03T05:55:59.000000", + "hostname": "mrkanag", + "updated_at": "2015-02-03T05:57:59.000000", + "topic": "engine", + "host": "engine-1", + "deleted_at": null, + "id": "e1908f44-42f9-483f-b778-bc814072c33d" + }, + { + "status": "down", + "binary": "heat-engine", + "report_interval": 60, + "engine_id": "2d2434bf-adb6-4453-9c6b-b22fb8bd2306", + "created_at": "2015-02-03T06:03:14.000000", + "hostname": "mrkanag", + "updated_at": "2015-02-03T06:09:55.000000", + "topic": "engine", + "host": "engine", + "deleted_at": null, + "id": "582b5657-6db7-48ad-8483-0096350faa21" + } + ] +} diff --git a/api-ref/source/orchestration/v1/samples/stack-abandon-response.json b/api-ref/source/orchestration/v1/samples/stack-abandon-response.json new file mode 100644 index 000000000..57bd22da2 --- /dev/null +++ b/api-ref/source/orchestration/v1/samples/stack-abandon-response.json @@ -0,0 +1,69 @@ +{ + "status": "COMPLETE", + "name": "g", + "dry_run": true, + "template": { + "outputs": { + "instance_ip": { + "value": { + "str_replace": { + "params": { + "username": "ec2-user", + "hostname": { + "get_attr": [ + "server", + "first_address" + ] + } + }, + "template": "ssh username@hostname" + } + } + } + }, + "heat_template_version": "2013-05-23", + "resources": { + "server": { + "type": "OS::Nova::Server", + "properties": { + "key_name": { + "get_param": "key_name" + }, + "image": { + "get_param": "image" + }, + "flavor": { + "get_param": "flavor" + } + } + } + }, + "parameters": { + "key_name": { + "default": "heat_key", + "type": "string" + }, + "image": { + "default": "fedora-amd64", + "type": "string" + }, + "flavor": { + "default": "m1.small", + "type": "string" + } + } + }, + "action": "CREATE", + "id": "16934ca3-40e0-4fb2-a289-a700662ec05a", + "resources": { + "server": { + "status": "COMPLETE", + "name": "server", + "resource_data": {}, + "resource_id": "39d5dad7-7d7a-4cc8-bd84-851e9e2ff4ea", + "action": "CREATE", + "type": "OS::Nova::Server", + "metadata": {} + } + } +} diff --git a/api-ref/source/orchestration/v1/samples/stack-action-cancel-update-request.json b/api-ref/source/orchestration/v1/samples/stack-action-cancel-update-request.json new file mode 100644 index 000000000..ad76bd690 --- /dev/null +++ b/api-ref/source/orchestration/v1/samples/stack-action-cancel-update-request.json @@ -0,0 +1,3 @@ +{ + "cancel_update": null +} diff --git a/api-ref/source/orchestration/v1/samples/stack-action-check-request.json b/api-ref/source/orchestration/v1/samples/stack-action-check-request.json new file mode 100644 index 000000000..019b28e77 --- /dev/null +++ b/api-ref/source/orchestration/v1/samples/stack-action-check-request.json @@ -0,0 +1,3 @@ +{ + "check": null +} diff --git a/api-ref/source/orchestration/v1/samples/stack-action-resume-request.json b/api-ref/source/orchestration/v1/samples/stack-action-resume-request.json new file mode 100644 index 000000000..ff00d97a1 --- /dev/null +++ b/api-ref/source/orchestration/v1/samples/stack-action-resume-request.json @@ -0,0 +1,3 @@ +{ + "resume": null +} diff --git a/api-ref/source/orchestration/v1/samples/stack-action-suspend-request.json b/api-ref/source/orchestration/v1/samples/stack-action-suspend-request.json new file mode 100644 index 000000000..8c2206a06 --- /dev/null +++ b/api-ref/source/orchestration/v1/samples/stack-action-suspend-request.json @@ -0,0 +1,3 @@ +{ + "suspend": null +} diff --git a/api-ref/source/orchestration/v1/samples/stack-adopt-request.json b/api-ref/source/orchestration/v1/samples/stack-adopt-request.json new file mode 100644 index 000000000..242afb161 --- /dev/null +++ b/api-ref/source/orchestration/v1/samples/stack-adopt-request.json @@ -0,0 +1,33 @@ +{ + "adopt_stack_data": { + "action": "CREATE", + "id": "bxxxxx4-0xx2-4xx1-axx6-exxxxxxxc", + "name": "teststack", + "resources": { + "MyServer": { + "action": "CREATE", + "metadata": {}, + "name": "MyServer", + "resource_data": {}, + "resource_id": "cxxxx3-dxx3-4xx-bxx2-3xxxxxxxxa", + "status": "COMPLETE", + "type": "OS::Trove::Instance" + } + }, + "status": "COMPLETE", + "template": { + "heat_template_version": "2013-05-23", + "resources": { + "MyServer": { + "type": "OS::Trove::Instance", + "properties": { + "flavor": "m1.small", + "size": 10 + } + } + } + } + }, + "stack_name": "{stack_name}", + "timeout_mins": "{timeout_mins}" +} diff --git a/api-ref/source/orchestration/v1/samples/stack-create-request.json b/api-ref/source/orchestration/v1/samples/stack-create-request.json new file mode 100644 index 000000000..9b03d44bf --- /dev/null +++ b/api-ref/source/orchestration/v1/samples/stack-create-request.json @@ -0,0 +1,32 @@ +{ + "files": {}, + "disable_rollback": true, + "parameters": { + "flavor": "m1.heat" + }, + "stack_name": "teststack", + "template": { + "heat_template_version": "2013-05-23", + "description": "Simple template to test heat commands", + "parameters": { + "flavor": { + "default": "m1.tiny", + "type": "string" + } + }, + "resources": { + "hello_world": { + "type": "OS::Nova::Server", + "properties": { + "key_name": "heat_key", + "flavor": { + "get_param": "flavor" + }, + "image": "40be8d1a-3eb9-40de-8abd-43237517384f", + "user_data": "#!/bin/bash -xv\necho \"hello world\" > /root/hello-world.txt\n" + } + } + } + }, + "timeout_mins": 60 +} diff --git a/api-ref/source/orchestration/v1/samples/stack-create-response.json b/api-ref/source/orchestration/v1/samples/stack-create-response.json new file mode 100644 index 000000000..81c91ce7f --- /dev/null +++ b/api-ref/source/orchestration/v1/samples/stack-create-response.json @@ -0,0 +1,11 @@ +{ + "stack": { + "id": "3095aefc-09fb-4bc7-b1f0-f21a304e864c", + "links": [ + { + "href": "http://192.168.123.200:8004/v1/eb1c63a4f77141548385f113a28f0f52/stacks/teststack/3095aefc-09fb-4bc7-b1f0-f21a304e864c", + "rel": "self" + } + ] + } +} diff --git a/api-ref/source/orchestration/v1/samples/stack-find-response.json b/api-ref/source/orchestration/v1/samples/stack-find-response.json new file mode 100644 index 000000000..06b05c5c5 --- /dev/null +++ b/api-ref/source/orchestration/v1/samples/stack-find-response.json @@ -0,0 +1,27 @@ +{ + "stack": { + "capabilities": [], + "creation_time": "2014-06-04T20:36:12Z", + "description": "sample stack", + "disable_rollback": true, + "id": "5333af0c-cc26-47ee-ac3d-8784cefafbd7", + "links": [ + { + "href": "http://192.168.123.200:8004/v1/eb1c63a4f77141548385f113a28f0f52/stacks/simple_stack/5333af0c-cc26-47ee-ac3d-8784cefafbd7", + "rel": "self" + } + ], + "notification_topics": [], + "outputs": [], + "parameters": { + "OS::stack_id": "5333af0c-cc26-47ee-ac3d-8784cefafbd7", + "OS::stack_name": "simple_stack" + }, + "stack_name": "simple_stack", + "stack_status": "CREATE_COMPLETE", + "stack_status_reason": "Stack CREATE completed successfully", + "template_description": "sample stack", + "timeout_mins": null, + "updated_time": null + } +} diff --git a/api-ref/source/orchestration/v1/samples/stack-outputs-list-response.json b/api-ref/source/orchestration/v1/samples/stack-outputs-list-response.json new file mode 100644 index 000000000..8cb61499f --- /dev/null +++ b/api-ref/source/orchestration/v1/samples/stack-outputs-list-response.json @@ -0,0 +1,10 @@ +{ + "outputs": [ + { + "output_key": "output name", + "output_value": "output value", + "description": "output description", + "output_error": null + } + ] +} diff --git a/api-ref/source/orchestration/v1/samples/stack-preview-response.json b/api-ref/source/orchestration/v1/samples/stack-preview-response.json new file mode 100644 index 000000000..a36f8cf5d --- /dev/null +++ b/api-ref/source/orchestration/v1/samples/stack-preview-response.json @@ -0,0 +1,168 @@ +{ + "stack": { + "capabilities": [], + "creation_time": "2015-01-31T15:12:36Z", + "description": "HOT template for Nova Server resource.\n", + "disable_rollback": true, + "id": "None", + "links": [ + { + "href": "http://192.168.122.102:8004/v1/6e18cc2bdbeb48a5basad2dc499f6804/stacks/test_stack/None", + "rel": "self" + } + ], + "notification_topics": [], + "parameters": { + "OS::project_id": "6e18cc2bdbeb48a5basad2dc499f6804", + "OS::stack_id": "None", + "OS::stack_name": "teststack", + "admin_user": "cloud-user", + "flavor": "m1.small", + "image": "F20-cfg", + "key_name": "heat_key", + "server_name": "MyServer" + }, + "parent": null, + "resources": [ + { + "attributes": {}, + "description": "", + "metadata": {}, + "physical_resource_id": "", + "properties": { + "description": "Ping and SSH", + "name": "the_sg", + "rules": [ + { + "direction": "ingress", + "ethertype": "IPv4", + "port_range_max": null, + "port_range_min": null, + "protocol": "icmp", + "remote_group_id": null, + "remote_ip_prefix": null, + "remote_mode": "remote_ip_prefix" + }, + { + "direction": "ingress", + "ethertype": "IPv4", + "port_range_max": 65535, + "port_range_min": 1, + "protocol": "tcp", + "remote_group_id": null, + "remote_ip_prefix": null, + "remote_mode": "remote_ip_prefix" + }, + { + "direction": "ingress", + "ethertype": "IPv4", + "port_range_max": 65535, + "port_range_min": 1, + "protocol": "udp", + "remote_group_id": null, + "remote_ip_prefix": null, + "remote_mode": "remote_ip_prefix" + } + ] + }, + "required_by": [ + "server1" + ], + "resource_action": "INIT", + "resource_identity": { + "path": "/resources/the_sg_res", + "stack_id": "None", + "stack_name": "teststack", + "tenant": "6e18cc2bdbeb48a5b3cad2dc499f6804" + }, + "resource_name": "the_sg_res", + "resource_status": "COMPLETE", + "resource_status_reason": "", + "resource_type": "OS::Neutron::SecurityGroup", + "stack_identity": { + "path": "", + "stack_id": "None", + "stack_name": "teststack", + "tenant": "6e18cc2bdbeb48a5b3cad2dc499f6804" + }, + "stack_name": "teststack", + "updated_time": "2015-01-31T15:12:36Z" + }, + { + "attributes": { + "accessIPv4": "", + "accessIPv6": "", + "addresses": "", + "console_urls": "", + "first_address": "", + "instance_name": "", + "name": "MyServer", + "networks": "", + "show": "" + }, + "description": "", + "metadata": {}, + "physical_resource_id": "", + "properties": { + "admin_pass": null, + "admin_user": "cloud-user", + "availability_zone": null, + "block_device_mapping": null, + "config_drive": null, + "diskConfig": null, + "flavor": "m1.small", + "flavor_update_policy": "RESIZE", + "image": "F20-cfg", + "image_update_policy": "REPLACE", + "key_name": "heat_key", + "metadata": { + "ha_stack": "None" + }, + "name": "MyServer", + "networks": [ + { + "fixed_ip": null, + "network": "private", + "port": null, + "uuid": null + } + ], + "personality": {}, + "reservation_id": null, + "scheduler_hints": null, + "security_groups": [ + "None" + ], + "software_config_transport": "POLL_SERVER_CFN", + "user_data": "", + "user_data_format": "HEAT_CFNTOOLS" + }, + "required_by": [], + "resource_action": "INIT", + "resource_identity": { + "path": "/resources/hello_world", + "stack_id": "None", + "stack_name": "teststack", + "tenant": "6e18cc2bdbeb48a3433cad2dc499sdf32234" + }, + "resource_name": "hello_world", + "resource_status": "COMPLETE", + "resource_status_reason": "", + "resource_type": "OS::Nova::Server", + "stack_identity": { + "path": "", + "stack_id": "None", + "stack_name": "teststack", + "tenant": "6e18cc2bdbeb48a3433cad2dc499sdf32234" + }, + "stack_name": "teststack", + "updated_time": "2015-01-31T15:12:36Z" + } + ], + "stack_name": "test_stack", + "stack_owner": "admin", + "template_description": "HOT template for Nova Server resource.\n", + "timeout_mins": null, + "updated_time": null + } +} diff --git a/api-ref/source/orchestration/v1/samples/stack-show-output-response.json b/api-ref/source/orchestration/v1/samples/stack-show-output-response.json new file mode 100644 index 000000000..356eb60b6 --- /dev/null +++ b/api-ref/source/orchestration/v1/samples/stack-show-output-response.json @@ -0,0 +1,8 @@ +{ + "output": { + "output_key": "output_name", + "output_value": "output_value", + "description": "output description", + "output_error": null + } +} diff --git a/api-ref/source/orchestration/v1/samples/stack-show-response.json b/api-ref/source/orchestration/v1/samples/stack-show-response.json new file mode 100644 index 000000000..c0b840c1e --- /dev/null +++ b/api-ref/source/orchestration/v1/samples/stack-show-response.json @@ -0,0 +1,32 @@ +{ + "stack": { + "capabilities": [], + "creation_time": "2014-06-03T20:59:46Z", + "description": "sample stack", + "disable_rollback": true, + "id": "3095aefc-09fb-4bc7-b1f0-f21a304e864c", + "links": [ + { + "href": "http://192.168.123.200:8004/v1/eb1c63a4f77141548385f113a28f0f52/stacks/simple_stack/3095aefc-09fb-4bc7-b1f0-f21a304e864c", + "rel": "self" + } + ], + "notification_topics": [], + "outputs": [], + "parameters": { + "OS::project_id": "3ab5b02f-a01f-4f95-afa1-e254afc4a435", + "OS::stack_id": "3095aefc-09fb-4bc7-b1f0-f21a304e864c", + "OS::stack_name": "simple_stack" + }, + "stack_name": "simple_stack", + "stack_owner": "simple_username", + "stack_status": "CREATE_COMPLETE", + "stack_status_reason": "Stack CREATE completed successfully", + "template_description": "sample stack", + "stack_user_project_id": "65728b74-cfe7-4f17-9c15-11d4f686e591", + "timeout_mins": "", + "updated_time": "", + "parent": "", + "tags": "" + } +} diff --git a/api-ref/source/orchestration/v1/samples/stack-show-snapshot-response.json b/api-ref/source/orchestration/v1/samples/stack-show-snapshot-response.json new file mode 100644 index 000000000..6646b9fb2 --- /dev/null +++ b/api-ref/source/orchestration/v1/samples/stack-show-snapshot-response.json @@ -0,0 +1,47 @@ +{ + "snapshot": { + "id": "7c4e1ef4-bf1b-41ab-a0c8-ce01f4ffdfa1", + "name": "vol_snapshot", + "status": "COMPLETE", + "status_reason": "Stack SNAPSHOT completed successfully", + "creation_time": "2015-08-04T20:57:55Z", + "data": { + "status": "COMPLETE", + "name": "stack_vol1", + "stack_user_project_id": "fffa11067b1c48129ddfb78fba2bf09f", + "environment": { + "parameters": {}, + "resource_registry": { + "resources": {} + } + }, + "template": { + "heat_template_version": "2013-05-23", + "resources": { + "volume": { + "type": "OS::Cinder::Volume", + "properties": { + "size": 1 + } + } + } + }, + "action": "SNAPSHOT", + "project_id": "ecdb08032cd042179692a1b148f6565e", + "id": "656452c2-e151-40da-8704-c844e69b485c", + "resources": { + "volume": { + "status": "COMPLETE", + "name": "volume", + "resource_data": { + "backup_id": "99108cf8-398f-461b-a043-bdceb7c9f572" + }, + "resource_id": "3ab8cf79-807b-4c40-b743-0655f91e072f", + "action": "SNAPSHOT", + "type": "OS::Cinder::Volume", + "metadata": {} + } + } + } + } +} diff --git a/api-ref/source/orchestration/v1/samples/stack-snapshot-request.json b/api-ref/source/orchestration/v1/samples/stack-snapshot-request.json new file mode 100644 index 000000000..f7d3a6210 --- /dev/null +++ b/api-ref/source/orchestration/v1/samples/stack-snapshot-request.json @@ -0,0 +1,3 @@ +{ + "name": "vol_snapshot" +} diff --git a/api-ref/source/orchestration/v1/samples/stack-snapshot-response.json b/api-ref/source/orchestration/v1/samples/stack-snapshot-response.json new file mode 100644 index 000000000..d3ecfcde1 --- /dev/null +++ b/api-ref/source/orchestration/v1/samples/stack-snapshot-response.json @@ -0,0 +1,8 @@ +{ + "id": "13c3a4b5-0585-440e-85a4-6f96b20e7a78", + "name": "vol_snapshot", + "status": "IN_PROGRESS", + "status_reason": null, + "data": null, + "creation_time": "2015-09-01T20:57:55Z" +} diff --git a/api-ref/source/orchestration/v1/samples/stack-snapshots-list-response.json b/api-ref/source/orchestration/v1/samples/stack-snapshots-list-response.json new file mode 100644 index 000000000..d25bdf114 --- /dev/null +++ b/api-ref/source/orchestration/v1/samples/stack-snapshots-list-response.json @@ -0,0 +1,12 @@ +{ + "snapshots": [ + { + "id": "7c4e1ef4-bf1b-41ab-a0c8-ce01f4ffdfa1", + "name": "vol_snapshot", + "status": "IN_PROGRESS", + "status_reason": null, + "creation_time": "2015-08-04T20:57:55Z", + "data": null + } + ] +} diff --git a/api-ref/source/orchestration/v1/samples/stack-update-preview-response.json b/api-ref/source/orchestration/v1/samples/stack-update-preview-response.json new file mode 100644 index 000000000..9a511a178 --- /dev/null +++ b/api-ref/source/orchestration/v1/samples/stack-update-preview-response.json @@ -0,0 +1,67 @@ +{ + "unchanged": [ + { + "updated_time": "datetime", + "resource_name": "", + "physical_resource_id": "{resource id or ''}", + "resource_action": "CREATE", + "resource_status": "COMPLETE", + "resource_status_reason": "", + "resource_type": "restype", + "stack_identity": "{stack_id}", + "stack_name": "{stack_name}" + } + ], + "updated": [ + { + "updated_time": "datetime", + "resource_name": "", + "physical_resource_id": "{resource id or ''}", + "resource_action": "CREATE", + "resource_status": "COMPLETE", + "resource_status_reason": "", + "resource_type": "restype", + "stack_identity": "{stack_id}", + "stack_name": "{stack_name}" + } + ], + "replaced": [ + { + "updated_time": "datetime", + "resource_name": "", + "physical_resource_id": "{resource id or ''}", + "resource_action": "CREATE", + "resource_status": "COMPLETE", + "resource_status_reason": "", + "resource_type": "restype", + "stack_identity": "{stack_id}", + "stack_name": "{stack_name}" + } + ], + "added": [ + { + "updated_time": "datetime", + "resource_name": "", + "physical_resource_id": "{resource id or ''}", + "resource_action": "CREATE", + "resource_status": "COMPLETE", + "resource_status_reason": "", + "resource_type": "restype", + "stack_identity": "{stack_id}", + "stack_name": "{stack_name}" + } + ], + "deleted": [ + { + "updated_time": "datetime", + "resource_name": "", + "physical_resource_id": "{resource id or ''}", + "resource_action": "CREATE", + "resource_status": "COMPLETE", + "resource_status_reason": "", + "resource_type": "restype", + "stack_identity": "{stack_id}", + "stack_name": "{stack_name}" + } + ] +} diff --git a/api-ref/source/orchestration/v1/samples/stack-update-request.json b/api-ref/source/orchestration/v1/samples/stack-update-request.json new file mode 100644 index 000000000..407a3c03c --- /dev/null +++ b/api-ref/source/orchestration/v1/samples/stack-update-request.json @@ -0,0 +1,28 @@ +{ + "template": { + "heat_template_version": "2013-05-23", + "description": "Create a simple stack", + "parameters": { + "flavor": { + "default": "m1.tiny", + "type": "string" + } + }, + "resources": { + "hello_world": { + "type": "OS::Nova::Server", + "properties": { + "key_name": "heat_key", + "flavor": { + "get_param": "flavor" + }, + "image": "40be8d1a-3eb9-40de-8abd-43237517384f", + "user_data": "#!/bin/bash -xv\necho \"hello world\" > /root/hello-world.txt\n" + } + } + } + }, + "parameters": { + "flavor": "m1.small" + } +} diff --git a/api-ref/source/orchestration/v1/samples/stacks-list-response.json b/api-ref/source/orchestration/v1/samples/stacks-list-response.json new file mode 100644 index 000000000..b758c840c --- /dev/null +++ b/api-ref/source/orchestration/v1/samples/stacks-list-response.json @@ -0,0 +1,20 @@ +{ + "stacks": [ + { + "creation_time": "2014-06-03T20:59:46Z", + "description": "sample stack", + "id": "3095aefc-09fb-4bc7-b1f0-f21a304e864c", + "links": [ + { + "href": "http://192.168.123.200:8004/v1/eb1c63a4f77141548385f113a28f0f52/stacks/simple_stack/3095aefc-09fb-4bc7-b1f0-f21a304e864c", + "rel": "self" + } + ], + "stack_name": "simple_stack", + "stack_status": "CREATE_COMPLETE", + "stack_status_reason": "Stack CREATE completed successfully", + "updated_time": "", + "tags": "" + } + ] +} diff --git a/api-ref/source/orchestration/v1/samples/template-show-response.json b/api-ref/source/orchestration/v1/samples/template-show-response.json new file mode 100644 index 000000000..06cdc4c33 --- /dev/null +++ b/api-ref/source/orchestration/v1/samples/template-show-response.json @@ -0,0 +1,28 @@ +{ + "description": "Hello world HOT template that just defines a single server. Contains just base features to verify base HOT support.\n", + "heat_template_version": "2013-05-23", + "outputs": { + "foo": { + "description": "Show foo parameter value", + "value": { + "get_param": "foo" + } + } + }, + "parameters": { + "foo": { + "default": "secret", + "description": "Name of an existing key pair to use for the server", + "hidden": true, + "type": "string" + } + }, + "resources": { + "random_key_name": { + "properties": { + "length": 8 + }, + "type": "OS::Heat::RandomString" + } + } +} diff --git a/api-ref/source/orchestration/v1/samples/template-validate-request.json b/api-ref/source/orchestration/v1/samples/template-validate-request.json new file mode 100644 index 000000000..7ba5f9786 --- /dev/null +++ b/api-ref/source/orchestration/v1/samples/template-validate-request.json @@ -0,0 +1,3 @@ +{ + "template_url": "/PATH_TO_HEAT_TEMPLATES/WordPress_Single_Instance.template" +} diff --git a/api-ref/source/orchestration/v1/samples/template-validate-response.json b/api-ref/source/orchestration/v1/samples/template-validate-response.json new file mode 100644 index 000000000..cbdf7c26f --- /dev/null +++ b/api-ref/source/orchestration/v1/samples/template-validate-response.json @@ -0,0 +1,41 @@ +{ + "Description": "A template that provides a single server instance.", + "Parameters": { + "server-size": { + "default": "1GB Standard Instance", + "description": "Server size", + "type": "String", + "constraints": [ + { + "allowed_values": [ + "512MB Standard Instance", + "1GB Standard Instance", + "4GB Standard Instance", + "8GB Standard Instance" + ], + "description": "Must be a valid server size." + } + ] + }, + "key_name": { + "description": "Keypair name for SSH access to the server", + "required": true, + "type": "String" + }, + "server_name": { + "default": "My server", + "description": "My server", + "type": "String" + } + }, + "ParameterGroups": [ + { + "label": "Parameter groups", + "description": "My parameter groups", + "parameters": [ + "param_name-1", + "param_name-2" + ] + } + ] +} diff --git a/api-ref/source/orchestration/v1/samples/template-versions-response.json b/api-ref/source/orchestration/v1/samples/template-versions-response.json new file mode 100644 index 000000000..f82a8c2a1 --- /dev/null +++ b/api-ref/source/orchestration/v1/samples/template-versions-response.json @@ -0,0 +1,32 @@ +{ + "template_versions": [ + { + "version": "heat_template_version.2014-10-16", + "type": "hot" + }, + { + "version": "heat_template_version.2015-04-30", + "type": "hot" + }, + { + "version": "HeatTemplateFormatVersion.2012-12-12", + "type": "cfn" + }, + { + "version": "heat_template_version.2015-10-15", + "type": "hot" + }, + { + "version": "AWSTemplateFormatVersion.2010-09-09", + "type": "cfn" + }, + { + "version": "heat_template_version.2013-05-23", + "type": "hot" + }, + { + "version": "heat_template_version.2016-04-08", + "type": "hot" + } + ] +} diff --git a/api-ref/source/orchestration/v1/service-status.inc b/api-ref/source/orchestration/v1/service-status.inc new file mode 100644 index 000000000..e6940bb2b --- /dev/null +++ b/api-ref/source/orchestration/v1/service-status.inc @@ -0,0 +1,67 @@ +.. -*- rst -*- + +============== +Manage service +============== + + + + +Show orchestration engine status +================================ + +.. rest_method:: GET /v1/{tenant_id}/services + +Enables administrative users to view details for all orchestration engines. + +Orchestration engine details include ``engine_id``, topic name, +last updated time, health status, and host name. + +Troubleshooting + +- A ``503`` error code indicates that the heat engines are not + operational. Run the heat-manage service list command or contact + your cloud provider to determine why the heat engines are not + operational. + + +Normal response codes: 200 +Error response codes:403,503, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - binary: binary + - report_interval: report_interval + - created_at: created_at + - hostname: hostname + - updated_at: updated_at + - topic: topic + - services: services + - deleted_at: deleted_at + - id: id + + + +Response Example +---------------- + +.. literalinclude:: samples/services-list-response.json + :language: javascript + + + + + diff --git a/api-ref/source/orchestration/v1/software-config.inc b/api-ref/source/orchestration/v1/software-config.inc new file mode 100644 index 000000000..e79cc5d3c --- /dev/null +++ b/api-ref/source/orchestration/v1/software-config.inc @@ -0,0 +1,416 @@ +.. -*- rst -*- + +====================== +Software configuration +====================== + + + + +List deployments +================ + +.. rest_method:: GET /v1/{tenant_id}/software_deployments + +Lists all available software deployments. + + +Normal response codes: 200 +Error response codes:404,500,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - server_id: server_id + - config_id: config_id + - output_values: output_values + - creation_time: creation_time + - updated_at: updated_at + - input_values: input_values + - action: action + - status_reason: status_reason + - id: id + + + +Response Example +---------------- + +.. literalinclude:: samples/deployments-list-response.json + :language: javascript + + + + + + + + +Create deployment +================= + +.. rest_method:: POST /v1/{tenant_id}/software_deployments + +Creates a software deployment. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - status: status + - server_id: server_id + - config_id: config_id + - stack_user_project_id: stack_user_project_id + - action: action + - status_reason: status_reason + - tenant_id: tenant_id + +Request Example +--------------- + +.. literalinclude:: samples/deployment-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - server_id: server_id + - config_id: config_id + - output_values: output_values + - creation_time: creation_time + - updated_at: updated_at + - input_values: input_values + - action: action + - status_reason: status_reason + - id: id + + + +Response Example +---------------- + +.. literalinclude:: samples/deployment-create-response.json + :language: javascript + + + + +Show server configuration metadata +================================== + +.. rest_method:: GET /v1/{tenant_id}/software_deployments/metadata/{server_id} + +Shows the deployment configuration metadata for a server. + +Use the ``group`` property to specify the configuration hook to +which the pass the metadata item. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - server_id: server_id + - tenant_id: tenant_id + + + + +Response Example +---------------- + +.. literalinclude:: samples/deployment-metadata-response.json + :language: javascript + + + + +Create configuration +==================== + +.. rest_method:: POST /v1/{tenant_id}/software_configs + +Creates a software configuration. + + +Normal response codes: 200 +Error response codes:404,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - inputs: inputs + - group: group + - name: name + - outputs: outputs + - config: config + - options: options + - tenant_id: tenant_id + +Request Example +--------------- + +.. literalinclude:: samples/config-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - inputs: inputs + - group: group + - name: name + - outputs: outputs + - creation_time: creation_time + - config: config + - options: options + + + +Response Example +---------------- + +.. literalinclude:: samples/config-create-response.json + :language: javascript + + + + + + + +Show deployment details +======================= + +.. rest_method:: GET /v1/{tenant_id}/software_deployments/{deployment_id} + +Shows details for a software deployment. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - deployment_id: deployment_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - server_id: server_id + - config_id: config_id + - output_values: output_values + - creation_time: creation_time + - updated_at: updated_at + - input_values: input_values + - action: action + - status_reason: status_reason + - id: id + + + +Response Example +---------------- + +.. literalinclude:: samples/deployment-show-response.json + :language: javascript + + + + +Update deployment +================= + +.. rest_method:: PUT /v1/{tenant_id}/software_deployments/{deployment_id} + +Updates a software deployment. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - action: action + - output_values: output_values + - config_id: config_id + - status: status + - status_reason: status_reason + - tenant_id: tenant_id + - deployment_id: deployment_id + +Request Example +--------------- + +.. literalinclude:: samples/deployment-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - server_id: server_id + - config_id: config_id + - output_values: output_values + - creation_time: creation_time + - updated_at: updated_at + - input_values: input_values + - action: action + - status_reason: status_reason + - id: id + + + +Response Example +---------------- + +.. literalinclude:: samples/deployment-update-response.json + :language: javascript + + + + +Delete deployment +================= + +.. rest_method:: DELETE /v1/{tenant_id}/software_deployments/{deployment_id} + +Deletes a software deployment. + +Error response codes:204, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - deployment_id: deployment_id + + + + + + +Show configuration details +========================== + +.. rest_method:: GET /v1/{tenant_id}/software_configs/{config_id} + +Shows details for a software configuration. + + +Normal response codes: 200 +Error response codes:404,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - config_id: config_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - inputs: inputs + - group: group + - name: name + - outputs: outputs + - creation_time: creation_time + - config: config + - options: options + + + +Response Example +---------------- + +.. literalinclude:: samples/config-show-response.json + :language: javascript + + + + + + + +Delete config +============= + +.. rest_method:: DELETE /v1/{tenant_id}/software_configs/{config_id} + +Deletes a software configuration. + +Error response codes:204, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - config_id: config_id + + + + + diff --git a/api-ref/source/orchestration/v1/stack-actions.inc b/api-ref/source/orchestration/v1/stack-actions.inc new file mode 100644 index 000000000..e1d49ac76 --- /dev/null +++ b/api-ref/source/orchestration/v1/stack-actions.inc @@ -0,0 +1,173 @@ +.. -*- rst -*- + +============= +Stack actions +============= + +Performs non-lifecycle operations on the stack. Specify the action +in the request body. + + +Suspend stack +============= + +.. rest_method:: POST /v1/{tenant_id}/stacks/{stack_name}/{stack_id}/actions + +Suspends a stack. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - suspend: suspend + - stack_name: stack_name + - tenant_id: tenant_id + - stack_id: stack_id + +Request Example +--------------- + +.. literalinclude:: samples/stack-action-suspend-request.json + :language: javascript + + + + + +Response Example +---------------- + +.. literalinclude:: + :language: javascript + + + + +Resume stack +============ + +.. rest_method:: POST /v1/{tenant_id}/stacks/{stack_name}/{stack_id}/actions + +Resumes a suspended stack. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - resume: resume + - stack_name: stack_name + - tenant_id: tenant_id + - stack_id: stack_id + +Request Example +--------------- + +.. literalinclude:: samples/stack-action-resume-request.json + :language: javascript + + + + + +Response Example +---------------- + +.. literalinclude:: + :language: javascript + + + + +Cancel stack update +=================== + +.. rest_method:: POST /v1/{tenant_id}/stacks/{stack_name}/{stack_id}/actions + +Cancels a currently running update of a stack. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - cancel_update: cancel_update + - stack_name: stack_name + - tenant_id: tenant_id + - stack_id: stack_id + +Request Example +--------------- + +.. literalinclude:: samples/stack-action-cancel-update-request.json + :language: javascript + + + + + +Response Example +---------------- + +.. literalinclude:: + :language: javascript + + + + +Check stack resources +===================== + +.. rest_method:: POST /v1/{tenant_id}/stacks/{stack_name}/{stack_id}/actions + +Checks whether the resources are in expected states for a stack. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - check: check + - stack_name: stack_name + - tenant_id: tenant_id + - stack_id: stack_id + +Request Example +--------------- + +.. literalinclude:: samples/stack-action-check-request.json + :language: javascript + + + + + +Response Example +---------------- + +.. literalinclude:: + :language: javascript + + + diff --git a/api-ref/source/orchestration/v1/stack-events.inc b/api-ref/source/orchestration/v1/stack-events.inc new file mode 100644 index 000000000..f51f31a0b --- /dev/null +++ b/api-ref/source/orchestration/v1/stack-events.inc @@ -0,0 +1,155 @@ +.. -*- rst -*- + +============ +Stack events +============ + + + + +Show event details +================== + +.. rest_method:: GET /v1/{tenant_id}/stacks/{stack_name}/{stack_id}/resources/{resource_name}/events/{event_id} + +Shows details for an event. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - resource_name: resource_name + - stack_name: stack_name + - tenant_id: tenant_id + - event_id: event_id + - stack_id: stack_id + + + + +Response Example +---------------- + +.. literalinclude:: samples/event-show-response.json + :language: javascript + + + + +Find stack events +================= + +.. rest_method:: GET /v1/{tenant_id}/stacks/{stack_name}/events + +Finds the canonical URL for the event list of a stack. + +Error response codes:302, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - stack_name: stack_name + - tenant_id: tenant_id + + + + + + +List stack events +================= + +.. rest_method:: GET /v1/{tenant_id}/stacks/{stack_name}/{stack_id}/events + +Lists events for a stack. + + +Normal response codes: 200 +Error response codes:404,500,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - stack_name: stack_name + - tenant_id: tenant_id + - stack_id: stack_id + - resource_action: resource_action + - resource_status: resource_status + - resource_name: resource_name + - resource_type: resource_type + - limit: limit + - marker: marker + - sort_keys: sort_keys + - sort_dir: sort_dir + + + + +Response Example +---------------- + +.. literalinclude:: samples/events-list-response.json + :language: javascript + + + + + + + + +List resource events +==================== + +.. rest_method:: GET /v1/{tenant_id}/stacks/{stack_name}/{stack_id}/resources/{resource_name}/events + +Lists events for a stack resource. + + +Normal response codes: 200 +Error response codes:404,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - resource_name: resource_name + - stack_name: stack_name + - tenant_id: tenant_id + - stack_id: stack_id + - resource_action: resource_action + - resource_status: resource_status + - resource_type: resource_type + - limit: limit + - marker: marker + - sort_keys: sort_keys + - sort_dir: sort_dir + + + + +Response Example +---------------- + +.. literalinclude:: samples/events-list-response.json + :language: javascript + + + + + + diff --git a/api-ref/source/orchestration/v1/stack-resources.inc b/api-ref/source/orchestration/v1/stack-resources.inc new file mode 100644 index 000000000..23f6f46f8 --- /dev/null +++ b/api-ref/source/orchestration/v1/stack-resources.inc @@ -0,0 +1,191 @@ +.. -*- rst -*- + +=============== +Stack resources +=============== + + + + +Show resource metadata +====================== + +.. rest_method:: GET /v1/{tenant_id}/stacks/{stack_name}/{stack_id}/resources/{resource_name}/metadata + +Shows metadata for a resource. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - resource_name: resource_name + - stack_name: stack_name + - tenant_id: tenant_id + - stack_id: stack_id + + + + +Response Example +---------------- + +.. literalinclude:: samples/resource-metadata-response.json + :language: javascript + + + + +Show resource data +================== + +.. rest_method:: GET /v1/{tenant_id}/stacks/{stack_name}/{stack_id}/resources/{resource_name} + +Shows data for a resource. + + +Normal response codes: 200 +Error response codes:404,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - resource_name: resource_name + - stack_name: stack_name + - tenant_id: tenant_id + - stack_id: stack_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - resource_name: resource_name + - resource: resource + - description: description + - logical_resource_id: logical_resource_id + - creation_time: creation_time + - resource_status: resource_status + - updated_time: updated_time + - required_by: required_by + - resource_status_reason: resource_status_reason + - physical_resource_id: physical_resource_id + - resource_type: resource_type + + + +Response Example +---------------- + +.. literalinclude:: samples/resource-show-response.json + :language: javascript + + + + + + + +List resources +============== + +.. rest_method:: GET /v1/{tenant_id}/stacks/{stack_name}/{stack_id}/resources + +Lists resources in a stack. + + +Normal response codes: 200 +Error response codes:404,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - stack_name: stack_name + - tenant_id: tenant_id + - stack_id: stack_id + - nested_depth: nested_depth + - with_detail: with_detail + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - resource_name: resource_name + - description: description + - logical_resource_id: logical_resource_id + - creation_time: creation_time + - resource_status: resource_status + - updated_time: updated_time + - required_by: required_by + - resources: resources + - resource_status_reason: resource_status_reason + - physical_resource_id: physical_resource_id + - resource_type: resource_type + + + +Response Example +---------------- + +.. literalinclude:: samples/resources-list-response.json + :language: javascript + + + + + + + +Send a signal to a resource +=========================== + +.. rest_method:: POST /v1/{tenant_id}/stacks/{stack_name}/{stack_id}/resources/{resource_name}/signal + +Sends a signal to a resource. + +The contents of the request body depends on the resource to which +you send a signal. + +Some resources cannot receive signals. If you send them a signal, +they return a 400 error code. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - resource_name: resource_name + - stack_name: stack_name + - tenant_id: tenant_id + - stack_id: stack_id + + + + +Response Example +---------------- + +.. literalinclude:: + :language: javascript + + + diff --git a/api-ref/source/orchestration/v1/stack-templates.inc b/api-ref/source/orchestration/v1/stack-templates.inc new file mode 100644 index 000000000..aa5e229f6 --- /dev/null +++ b/api-ref/source/orchestration/v1/stack-templates.inc @@ -0,0 +1,300 @@ +.. -*- rst -*- + +========= +Templates +========= + + + + +List resource types +=================== + +.. rest_method:: GET /v1/{tenant_id}/resource_types + +Lists all supported template resource types. + + +Normal response codes: 200 +Error response codes:401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - name: name + - version: version + - support_status: support_status + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - template_versions: template_versions + - type: type + - version: version + + + +Response Example +---------------- + +.. literalinclude:: samples/resource-types-list-response.json + :language: javascript + + + + + + +List template versions +====================== + +.. rest_method:: GET /v1/{tenant_id}/template_versions + +Lists all available template versions. + + +Normal response codes: 200 +Error response codes:404,500,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + + + + +Response Example +---------------- + +.. literalinclude:: samples/template-versions-response.json + :language: javascript + + + + + + + + +Validate template +================= + +.. rest_method:: POST /v1/{tenant_id}/validate + +Validates a template. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - environment: environment + - template_url: template_url + - template: template + - tenant_id: tenant_id + +Request Example +--------------- + +.. literalinclude:: samples/template-validate-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - ParameterGroups: ParameterGroups + - Description: Description + - Parameters: Parameters + + + +Response Example +---------------- + +.. literalinclude:: samples/template-validate-response.json + :language: javascript + + + + +Show resource template +====================== + +.. rest_method:: GET /v1/{tenant_id}/resource_types/{type_name}/template + +Shows the template representation for a resource type. + +The returned template contains a single resource type. Each +resource property is mapped to a template parameter and each +resource attribute is mapped to a template output. + +You can use these templates as a starting place for creating +customized, template-based resources or as examples of using the +particular resource in another template. + +Use the ``template_type`` query parameter to specify the resource +template type. Default type is ``cfn``. The ``hot`` template type +is supported. For example: + +:: + + /v1/{tenant_id}/resource_types/{type_name}/template?template_type=cfn + + +Normal response codes: 200 +Error response codes:404,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - type_name: type_name + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - Outputs: Outputs + - HeatTemplateFormatVersion: HeatTemplateFormatVersion + - Resources: Resources + - Parameters: Parameters + + + +Response Example +---------------- + +.. literalinclude:: samples/resource-type-template-response.json + :language: javascript + + + + + + + +Get stack template +================== + +.. rest_method:: GET /v1/{tenant_id}/stacks/{stack_name}/{stack_id}/template + +Gets a template for a stack. + + +Normal response codes: 200 +Error response codes:404,500,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - stack_name: stack_name + - tenant_id: tenant_id + - stack_id: stack_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - outputs: outputs + - heat_template_version: heat_template_version + - description: description + - parameters: parameters + - resources: resources + + + +Response Example +---------------- + +.. literalinclude:: samples/template-show-response.json + :language: javascript + + + + + + + + +Show resource schema +==================== + +.. rest_method:: GET /v1/{tenant_id}/resource_types/{type_name} + +Shows the interface schema for a resource type. + +A schema describes the properties that can be set on the resource, +their types, constraints, descriptions, and default values. +Additionally, the response shows the resource attributes and their +descriptions. + + +Normal response codes: 200 +Error response codes:401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - type_name: type_name + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - required: required + - update_allowed: update_allowed + - support_status: support_status + - attributes: attributes + - type: type + - properties: properties + - resource_type: resource_type + + + +Response Example +---------------- + +.. literalinclude:: samples/resource-schema-response.json + :language: javascript + + + + + diff --git a/api-ref/source/orchestration/v1/stacks.inc b/api-ref/source/orchestration/v1/stacks.inc new file mode 100644 index 000000000..7594698de --- /dev/null +++ b/api-ref/source/orchestration/v1/stacks.inc @@ -0,0 +1,818 @@ +.. -*- rst -*- + +====== +Stacks +====== + + + + +Abandon stack +============= + +.. rest_method:: DELETE /v1/{tenant_id}/stacks/{stack_name}/{stack_id}/abandon + +Deletes a stack but leaves its resources intact, and returns data that describes the stack and its resources. + +This method can be disabled from the server side. If it is +disabled, this call throws an exception. + + +Normal response codes: 200 +Error response codes:404,500,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - stack_name: stack_name + - tenant_id: tenant_id + - stack_id: stack_id + + + + +Response Example +---------------- + +.. literalinclude:: samples/stack-abandon-response.json + :language: javascript + + + + + + + + +Show snapshot +============= + +.. rest_method:: GET /v1/{tenant_id}/stacks/{stack_name}/{stack_id}/snapshots/{snapshot_id} + +Shows details for a snapshot. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - stack_name: stack_name + - tenant_id: tenant_id + - stack_id: stack_id + - snapshot_id: snapshot_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - name: name + - status_reason: status_reason + - creation_time: creation_time + - snapshot: snapshot + - template: template + - project_id: project_id + - data: data + - id: id + - resources: resources + + + +Response Example +---------------- + +.. literalinclude:: samples/stack-show-snapshot-response.json + :language: javascript + + + + +Delete snapshot +=============== + +.. rest_method:: DELETE /v1/{tenant_id}/stacks/{stack_name}/{stack_id}/snapshots/{snapshot_id} + +Deletes a stack snapshot. + +Error response codes:204, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - stack_name: stack_name + - tenant_id: tenant_id + - stack_id: stack_id + - snapshot_id: snapshot_id + + + + + + +Preview stack +============= + +.. rest_method:: POST /v1/{tenant_id}/stacks/preview + +Previews a stack. + + +Normal response codes: 200 +Error response codes:500,409,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - files: files + - stack_name: stack_name + - template_url: template_url + - template: template + - parameters: parameters + - tenant_id: tenant_id + +Request Example +--------------- + +.. literalinclude:: samples/stack-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - parent: parent + - disable_rollback: disable_rollback + - description: description + - links: links + - stack_name: stack_name + - timeout_mins: timeout_mins + - creation_time: creation_time + - capabilities: capabilities + - notification_topics: notification_topics + - updated_time: updated_time + - stack_owner: stack_owner + - stack: stack + - parameters: parameters + - id: id + - resources: resources + - template_description: template_description + + + +Response Example +---------------- + +.. literalinclude:: samples/stack-preview-response.json + :language: javascript + + + + + + + + +Restore snapshot +================ + +.. rest_method:: POST /v1/{tenant_id}/stacks/{stack_name}/{stack_id}/snapshots/{snapshot_id}/restore + +Restores a stack snapshot. + +You can restore only active stacks from a snapshot. You must +recreate deleted stacks. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - stack_name: stack_name + - tenant_id: tenant_id + - stack_id: stack_id + - snapshot_id: snapshot_id + + + + + + +List outputs +============ + +.. rest_method:: GET /v1/{tenant_id}/stacks/{stack_name}/{stack_id}/outputs + +Lists outputs for a stack. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - stack_name: stack_name + - tenant_id: tenant_id + - stack_id: stack_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - output_value: output_value + - output_error: output_error + - description: description + - output_key: output_key + + + +Response Example +---------------- + +.. literalinclude:: samples/stack-outputs-list-response.json + :language: javascript + + + + +Preview stack update +==================== + +.. rest_method:: PUT /v1/{tenant_id}/stacks/{stack_name}/{stack_id}/preview + +Previews an update for a stack. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - files: files + - parameters: parameters + - tags: tags + - environment: environment + - template_url: template_url + - template: template + - timeout_mins: timeout_mins + - stack_name: stack_name + - tenant_id: tenant_id + - stack_id: stack_id + +Request Example +--------------- + +.. literalinclude:: samples/stack-update-request.json + :language: javascript + + + + + +Response Example +---------------- + +.. literalinclude:: samples/stack-update-preview-response.json + :language: javascript + + + + +Find stack resources +==================== + +.. rest_method:: GET /v1/{tenant_id}/stacks/{stack_name}/resources + +Finds the canonical URL for a resource list of a stack. + +The canonical URL is returned for only non-deleted stacks. To fetch +the resource list for deleted stacks, use the following endpoint: + +:: + + /v1/{tenant_id}/stacks/{stack_name}/{stack_id}/resources + +Error response codes:302, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - stack_name: stack_name + - tenant_id: tenant_id + + + + + + +Show stack details +================== + +.. rest_method:: GET /v1/{tenant_id}/stacks/{stack_name}/{stack_id} + +Shows details for a stack. + + +Normal response codes: 200 +Error response codes:404,500,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - stack_name: stack_name + - tenant_id: tenant_id + - stack_id: stack_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - parent: parent + - updated_time: updated_time + - description: description + - links: links + - stack_status_reason: stack_status_reason + - stack_name: stack_name + - outputs: outputs + - tags: tags + - creation_time: creation_time + - capabilities: capabilities + - notification_topics: notification_topics + - timeout_mins: timeout_mins + - stack_owner: stack_owner + - stack_status: stack_status + - stack: stack + - parameters: parameters + - id: id + - stack_user_project_id: stack_user_project_id + - template_description: template_description + + + +Response Example +---------------- + +.. literalinclude:: samples/stack-show-response.json + :language: javascript + + + + + + + + +Update stack +============ + +.. rest_method:: PUT /v1/{tenant_id}/stacks/{stack_name}/{stack_id} + +Updates a stack. + +Error response codes:404,202,500,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - files: files + - disable_rollback: disable_rollback + - parameters: parameters + - tags: tags + - environment: environment + - template_url: template_url + - template: template + - timeout_mins: timeout_mins + - stack_name: stack_name + - tenant_id: tenant_id + - stack_id: stack_id + +Request Example +--------------- + +.. literalinclude:: samples/stack-update-request.json + :language: javascript + + + + + + + + + + + +Delete stack +============ + +.. rest_method:: DELETE /v1/{tenant_id}/stacks/{stack_name}/{stack_id} + +Deletes a stack and its snapshots. + +Error response codes:500,404,204,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - stack_name: stack_name + - tenant_id: tenant_id + - stack_id: stack_id + + + + + + + + + + +Show output +=========== + +.. rest_method:: GET /v1/{tenant_id}/stacks/{stack_name}/{stack_id}/outputs/{output_key} + +Shows details for a stack output. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - stack_name: stack_name + - tenant_id: tenant_id + - stack_id: stack_id + - output_key: output_key + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - output_value: output_value + - output_error: output_error + - description: description + - output_key: output_key + + + +Response Example +---------------- + +.. literalinclude:: samples/stack-show-output-response.json + :language: javascript + + + + +List stack data +=============== + +.. rest_method:: GET /v1/{tenant_id}/stacks + +Lists active stacks. + + +Normal response codes: 200 +Error response codes:500,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - id: id + - status: status + - name: name + - action: action + - tenant: tenant + - username: username + - owner_id: owner_id + - limit: limit + - marker: marker + - show_deleted: show_deleted + - show_nested: show_nested + - sort_keys: sort_keys + - tags: tags + - tags_any: tags_any + - not_tags: not_tags + - not_tags_any: not_tags_any + - sort_dir: sort_dir + - global_tenant: global_tenant + - with_count: with_count + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - links: links + - stack_status_reason: stack_status_reason + - stack_name: stack_name + - tags: tags + - creation_time: creation_time + - updated_time: updated_time + - stack_status: stack_status + - id: id + + + +Response Example +---------------- + +.. literalinclude:: samples/stacks-list-response.json + :language: javascript + + + + + + + +Create stack +============ + +.. rest_method:: POST /v1/{tenant_id}/stacks + +Creates a stack. + +Error response codes:201,500,409,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - files: files + - disable_rollback: disable_rollback + - parameters: parameters + - tags: tags + - stack_name: stack_name + - environment: environment + - template_url: template_url + - template: template + - timeout_mins: timeout_mins + - tenant_id: tenant_id + +Request Example +--------------- + +.. literalinclude:: samples/stack-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - id: id + - links: links + - stack: stack + + + + + + + + + +Adopt stack +=========== + +.. rest_method:: POST /v1/{tenant_id}/stacks + +Creates a stack from existing resources. + +Error response codes:201,500,409,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - files: files + - disable_rollback: disable_rollback + - parameters: parameters + - stack_name: stack_name + - adopt_stack_data: adopt_stack_data + - environment: environment + - timeout_mins: timeout_mins + - tenant_id: tenant_id + +Request Example +--------------- + +.. literalinclude:: samples/stack-adopt-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - id: id + - links: links + - stack: stack + + + + + + + + + +Find stack +========== + +.. rest_method:: GET /v1/{tenant_id}/stacks/{stack_name} + +Finds the canonical URL for a stack. + +Also works with verbs other than GET , so that you can perform PUT +and DELETE operations on a current stack. Set your client to follow +redirects. When redirecting, the request method should not change +as defined in RFC2626. However, in many clients the default +behavior is to change the method to GET when you receive a ``302`` +response code because this behavior is ubiquitous in web browsers. + +Error response codes:302,404,500,401,400, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - stack_name: stack_name + - tenant_id: tenant_id + + + + + + + + + + +Snapshot stack +============== + +.. rest_method:: POST /v1/{tenant_id}/stacks/{stack_name}/{stack_id}/snapshots + +Takes a snapshot of all resources in a stack. All snapshots are deleted when the stack is deleted. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - name: name + - stack_name: stack_name + - tenant_id: tenant_id + - stack_id: stack_id + +Request Example +--------------- + +.. literalinclude:: samples/stack-snapshot-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - name: name + - status_reason: status_reason + - creation_time: creation_time + - data: data + - id: id + + + +Response Example +---------------- + +.. literalinclude:: samples/stack-snapshot-response.json + :language: javascript + + + + +List snapshots +============== + +.. rest_method:: GET /v1/{tenant_id}/stacks/{stack_name}/{stack_id}/snapshots + +Lists snapshots for a stack. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - stack_name: stack_name + - tenant_id: tenant_id + - stack_id: stack_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - name: name + - status_reason: status_reason + - creation_time: creation_time + - snapshots: snapshots + - data: data + - id: id + + + +Response Example +---------------- + +.. literalinclude:: samples/stack-snapshots-list-response.json + :language: javascript + + + diff --git a/api-ref/source/share/v1/consistency-group-snapshots.inc b/api-ref/source/share/v1/consistency-group-snapshots.inc new file mode 100644 index 000000000..9d337f2ff --- /dev/null +++ b/api-ref/source/share/v1/consistency-group-snapshots.inc @@ -0,0 +1,417 @@ +.. -*- 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. + + +Show consistency group snapshot member +====================================== + +.. 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: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - cgsnapshot_id: cgsnapshot_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - share_type_id: share_type_id + - share_id: share_id + - created_at: created_at + - cgsnapshot_id: cgsnapshot_id + - share_protocol: share_protocol + - cgsnapshot_members: cgsnapshot_members + - project_id: project_id + - id: id + - size: size + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-cg-snapshots-list-members-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: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - cgsnapshot_id: cgsnapshot_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - description: description + - links: links + - cgsnapshot: cgsnapshot + - created_at: created_at + - consistency_group_id: consistency_group_id + - project_id: project_id + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-cg-snapshot-show-response.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: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - description: description + - name: name + - tenant_id: tenant_id + - cgsnapshot_id: cgsnapshot_id + +Request Example +--------------- + +.. literalinclude:: ../samples/manila-cg-snapshot-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - description: description + - links: links + - cgsnapshot: cgsnapshot + - created_at: created_at + - consistency_group_id: consistency_group_id + - project_id: project_id + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-cg-snapshot-update-response.json + :language: javascript + + + + +Delete consistency group snapshot +================================= + +.. rest_method:: DELETE /v2/{tenant_id}/cgsnapshots/{cgsnapshot_id} + +Deletes a consistency group snapshot. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - cgsnapshot_id: cgsnapshot_id + + + + + + +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: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - description: description + - links: links + - created_at: created_at + - consistency_group_id: consistency_group_id + - project_id: project_id + - id: id + - cgsnapshots: cgsnapshots + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-cg-snapshots-list-detailed-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. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - status: status + - tenant_id: tenant_id + - cgsnapshot_id: cgsnapshot_id + +Request Example +--------------- + +.. literalinclude:: ../samples/manila-cg-snapshot-reset-state-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. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - force_delete: force_delete + - tenant_id: tenant_id + - cgsnapshot_id: cgsnapshot_id + +Request Example +--------------- + +.. literalinclude:: ../samples/manila-cg-snapshot-force-delete-request.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: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - consistency_group_id: consistency_group_id + - description: description + - name: name + - tenant_id: tenant_id + +Request Example +--------------- + +.. literalinclude:: ../samples/manila-cg-snapshot-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - description: description + - links: links + - cgsnapshot: cgsnapshot + - created_at: created_at + - consistency_group_id: consistency_group_id + - project_id: project_id + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-cg-snapshot-create-response.json + :language: javascript + + + + +List consistency group snapshots +================================ + +.. rest_method:: GET /v2/{tenant_id}/cgsnapshots + +Lists all consistency group snapshots. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - link: link + - id: id + - cgsnapshots: cgsnapshots + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-cg-snapshots-list-response.json + :language: javascript + + + diff --git a/api-ref/source/share/v1/consistency-groups.inc b/api-ref/source/share/v1/consistency-groups.inc new file mode 100644 index 000000000..235525b89 --- /dev/null +++ b/api-ref/source/share/v1/consistency-groups.inc @@ -0,0 +1,375 @@ +.. -*- 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. + + +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: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - description: description + - source_cgsnapshot_id: source_cgsnapshot_id + - consistency_group: consistency_group + - created_at: created_at + - share_network_id: share_network_id + - host: host + - link: link + - project_id: project_id + - share_types: share_types + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-consistency-groups-list-detailed-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: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - consistency_group_id: consistency_group_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - description: description + - source_cgsnapshot_id: source_cgsnapshot_id + - consistency_group: consistency_group + - created_at: created_at + - share_network_id: share_network_id + - host: host + - link: link + - project_id: project_id + - share_types: share_types + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-consistency-group-show-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: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - description: description + - name: name + - tenant_id: tenant_id + - consistency_group_id: consistency_group_id + +Request Example +--------------- + +.. literalinclude:: ../samples/manila-consistency-group-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - description: description + - source_cgsnapshot_id: source_cgsnapshot_id + - consistency_group: consistency_group + - created_at: created_at + - share_network_id: share_network_id + - host: host + - link: link + - project_id: project_id + - share_types: share_types + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-consistency-group-update-response.json + :language: javascript + + + + +Delete consistency group +======================== + +.. rest_method:: DELETE /v2/{tenant_id}/consistency-groups/{consistency_group_id} + +Deletes a consistency group. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - consistency_group_id: consistency_group_id + + + + + + +Create consistency group +======================== + +.. rest_method:: POST /v2/{tenant_id}/consistency-groups + +Creates a consistency group. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - source_cgsnapshot_id: source_cgsnapshot_id + - share_types: share_types + - description: description + - share_network_id: share_network_id + - name: name + - tenant_id: tenant_id + +Request Example +--------------- + +.. literalinclude:: ../samples/manila-consistency-group-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - description: description + - source_cgsnapshot_id: source_cgsnapshot_id + - consistency_group: consistency_group + - created_at: created_at + - share_network_id: share_network_id + - host: host + - link: link + - project_id: project_id + - share_types: share_types + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-consistency-group-create-response.json + :language: javascript + + + + +List consistency groups +======================= + +.. rest_method:: GET /v2/{tenant_id}/consistency-groups + +Lists all consistency groups. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - consistency_groups: consistency_groups + - link: link + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-consistency-groups-list-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. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - status: status + - tenant_id: tenant_id + - consistency_group_id: consistency_group_id + +Request Example +--------------- + +.. literalinclude:: ../samples/manila-consistency-group-reset-state-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. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - force_delete: force_delete + - tenant_id: tenant_id + - consistency_group_id: consistency_group_id + +Request Example +--------------- + +.. literalinclude:: ../samples/manila-consistency-group-force-delete-request.json + :language: javascript + + + + + + diff --git a/api-ref/source/share/v1/migrate-share.inc b/api-ref/source/share/v1/migrate-share.inc new file mode 100644 index 000000000..b5aa76777 --- /dev/null +++ b/api-ref/source/share/v1/migrate-share.inc @@ -0,0 +1,46 @@ +.. -*- rst -*- + +========================== +Experimental share actions +========================== + + + + +Migrate share +============= + +.. rest_method:: POST /v2/{tenant_id}/shares/{share_id}/action + +(Only for API v1.0-2.14) 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. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - force_host_copy: force_host_copy + - host: host + - share_id: share_id + - tenant_id: tenant_id + +Request Example +--------------- + +.. literalinclude:: ../samples/manila-share-actions-migrate-request.json + :language: javascript + + + + + + diff --git a/api-ref/source/share/v1/parameters.yaml b/api-ref/source/share/v1/parameters.yaml new file mode 100644 index 000000000..26887efab --- /dev/null +++ b/api-ref/source/share/v1/parameters.yaml @@ -0,0 +1,2575 @@ +# variables in header +{} + +# variables in path +cgsnapshot_id: + description: | + The UUID of the consistency group snapshot. + in: path + required: false + type: string +consistency_group_id_2: + description: | + The UUID of the consistency group. + in: path + required: false + 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: false + 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: false + type: string +share_network_id: + description: | + The UUID of the share network. + in: path + required: false + type: string +share_server_id_1: + description: | + The UUID of the share server. + in: path + required: false + type: string +share_type_id: + description: | + The UUID of the share type. + in: path + required: false + type: string +snapshot_id_1: + description: | + The UUID of the snapshot. + in: path + required: false + 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: false + type: string +tenant_id_1: + description: | + The tenant ID in a multi-tenancy cloud. + in: path + required: false + 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 +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_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 +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 +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 +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 + +# variables in body +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_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 +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 +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_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 +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_members: + description: | + The ``cgsnapshot_members`` object + 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 +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 micro-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 micro-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 +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_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 +maxTotalShareSnapshots: + description: | + The total maximum number of share snapshots 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 +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 +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 +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-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 +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 +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_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``, or ``HDFS``. + 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 +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 +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 +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 +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 +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 +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/share/v1/pools.inc b/api-ref/source/share/v1/pools.inc new file mode 100644 index 000000000..8b55cca82 --- /dev/null +++ b/api-ref/source/share/v1/pools.inc @@ -0,0 +1,106 @@ +.. -*- rst -*- + +====================== +Back-end 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 + +Lists all back-end storage pools. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - host: host + - name: name + - pool: pool + - backend: backend + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-pools-list-response.json + :language: javascript + + + + +List back-end storage pools with details +======================================== + +.. rest_method:: GET /v2/{tenant_id}/scheduler-stats/pools/detail + +Lists all storage pools for a back end, with details. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - vendor_name: vendor_name + - qos: qos + - name: name + - consistency_group_support: consistency_group_support + - share_backend_name: share_backend_name + - total_capacity_gb: total_capacity_gb + - reserved_percentage: reserved_percentage + - server_pools_mapping: server_pools_mapping + - capabilities: capabilities + - driver_handles_share_servers: driver_handles_share_servers + - driver_version: driver_version + - host: host + - storage_protocol: storage_protocol + - timestamp: timestamp + - pools: pools + - free_capacity_gb: free_capacity_gb + - snapshot_support: snapshot_support + - pool: pool + - backend: backend + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-pools-list-detailed-response.json + :language: javascript + + + diff --git a/api-ref/source/share/v1/samples/manila-availability-zones-list-response.json b/api-ref/source/share/v1/samples/manila-availability-zones-list-response.json new file mode 100644 index 000000000..7fba3291e --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-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/share/v1/samples/manila-export-location-list-response.json b/api-ref/source/share/v1/samples/manila-export-location-list-response.json new file mode 100644 index 000000000..a1cdbb606 --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-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/share/v1/samples/manila-export-location-show-response.json b/api-ref/source/share/v1/samples/manila-export-location-show-response.json new file mode 100644 index 000000000..85fec0d49 --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-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/share/v1/samples/manila-extensions-list-response.json b/api-ref/source/share/v1/samples/manila-extensions-list-response.json new file mode 100644 index 000000000..ff88d90c8 --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-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/share/v1/samples/manila-limits-response.json b/api-ref/source/share/v1/samples/manila-limits-response.json new file mode 100644 index 000000000..d9b0619b4 --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-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/share/v1/samples/manila-pools-list-detailed-response.json b/api-ref/source/share/v1/samples/manila-pools-list-detailed-response.json new file mode 100644 index 000000000..4bd3b5f83 --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-pools-list-detailed-response.json @@ -0,0 +1,29 @@ +{ + "pools": [ + { + "pool": "LONDON", + "host": "nosb-devstack", + "name": "nosb-devstack@london#LONDON", + "capabilities": { + "qos": false, + "consistency_group_support": "pool", + "timestamp": "2015-09-21T08:58:56.190856", + "share_backend_name": "LONDON", + "server_pools_mapping": { + "1320689d-80f4-49f6-8a70-0e2c1ed8ad90": [], + "3a4caac5-0880-4629-a334-6cdda88a0c0e": [] + }, + "driver_handles_share_servers": true, + "driver_version": "1.0", + "total_capacity_gb": "unknown", + "reserved_percentage": 0, + "pools": null, + "vendor_name": "Open Source", + "snapshot_support": true, + "free_capacity_gb": "unknown", + "storage_protocol": "NFS_CIFS" + }, + "backend": "london" + } + ] +} diff --git a/api-ref/source/share/v1/samples/manila-pools-list-response.json b/api-ref/source/share/v1/samples/manila-pools-list-response.json new file mode 100644 index 000000000..d04fea233 --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-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/share/v1/samples/manila-quota-show-response.json b/api-ref/source/share/v1/samples/manila-quota-show-response.json new file mode 100644 index 000000000..7f9f7bae3 --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-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/share/v1/samples/manila-quota-update-request.json b/api-ref/source/share/v1/samples/manila-quota-update-request.json new file mode 100644 index 000000000..d557badb3 --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-quota-update-request.json @@ -0,0 +1,8 @@ +{ + "quota_set": { + "tenant_id": "16e1ab15c35a457e9c2b2aa189f544e1", + "snapshot_gigabytes": 999, + "snapshots": 49, + "share_networks": 9 + } +} diff --git a/api-ref/source/share/v1/samples/manila-quota-update-response.json b/api-ref/source/share/v1/samples/manila-quota-update-response.json new file mode 100644 index 000000000..bec39dfb6 --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-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/share/v1/samples/manila-security-service-create-request.json b/api-ref/source/share/v1/samples/manila-security-service-create-request.json new file mode 100644 index 000000000..a12779af8 --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-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/share/v1/samples/manila-security-service-create-response.json b/api-ref/source/share/v1/samples/manila-security-service-create-response.json new file mode 100644 index 000000000..e6c9f2197 --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-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/share/v1/samples/manila-security-service-show-response.json b/api-ref/source/share/v1/samples/manila-security-service-show-response.json new file mode 100644 index 000000000..6391b0d75 --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-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/share/v1/samples/manila-security-service-update-request.json b/api-ref/source/share/v1/samples/manila-security-service-update-request.json new file mode 100644 index 000000000..4bf480308 --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-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/share/v1/samples/manila-security-service-update-response.json b/api-ref/source/share/v1/samples/manila-security-service-update-response.json new file mode 100644 index 000000000..7647800e9 --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-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/share/v1/samples/manila-security-services-list-detailed-response.json b/api-ref/source/share/v1/samples/manila-security-services-list-detailed-response.json new file mode 100644 index 000000000..a593bea0f --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-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/share/v1/samples/manila-security-services-list-for-share-network-response.json b/api-ref/source/share/v1/samples/manila-security-services-list-for-share-network-response.json new file mode 100644 index 000000000..8abfabd80 --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-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/share/v1/samples/manila-security-services-list-response.json b/api-ref/source/share/v1/samples/manila-security-services-list-response.json new file mode 100644 index 000000000..9dfedf106 --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-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/share/v1/samples/manila-service-disable-request.json b/api-ref/source/share/v1/samples/manila-service-disable-request.json new file mode 100644 index 000000000..2ef5907a7 --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-service-disable-request.json @@ -0,0 +1,4 @@ +{ + "binary": "manila-share", + "host": "openstack@cmode" +} diff --git a/api-ref/source/share/v1/samples/manila-service-disable-response.json b/api-ref/source/share/v1/samples/manila-service-disable-response.json new file mode 100644 index 000000000..f2e2bd101 --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-service-disable-response.json @@ -0,0 +1,5 @@ +{ + "disabled": true, + "binary": "manila-share", + "host": "openstack@cmode" +} diff --git a/api-ref/source/share/v1/samples/manila-service-enable-request.json b/api-ref/source/share/v1/samples/manila-service-enable-request.json new file mode 100644 index 000000000..2ef5907a7 --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-service-enable-request.json @@ -0,0 +1,4 @@ +{ + "binary": "manila-share", + "host": "openstack@cmode" +} diff --git a/api-ref/source/share/v1/samples/manila-service-enable-response.json b/api-ref/source/share/v1/samples/manila-service-enable-response.json new file mode 100644 index 000000000..3d24a29f5 --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-service-enable-response.json @@ -0,0 +1,5 @@ +{ + "disabled": false, + "binary": "manila-share", + "host": "openstack@cmode" +} diff --git a/api-ref/source/share/v1/samples/manila-services-list-response.json b/api-ref/source/share/v1/samples/manila-services-list-response.json new file mode 100644 index 000000000..7ebb3e1fb --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-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/share/v1/samples/manila-services-list-with-filters-response.json b/api-ref/source/share/v1/samples/manila-services-list-with-filters-response.json new file mode 100644 index 000000000..ae25d76ad --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-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/share/v1/samples/manila-share-actions-extend-request.json b/api-ref/source/share/v1/samples/manila-share-actions-extend-request.json new file mode 100644 index 000000000..0da9b3624 --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-share-actions-extend-request.json @@ -0,0 +1,5 @@ +{ + "extend": { + "new_size": 2 + } +} diff --git a/api-ref/source/share/v1/samples/manila-share-actions-force-delete-request.json b/api-ref/source/share/v1/samples/manila-share-actions-force-delete-request.json new file mode 100644 index 000000000..efe867880 --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-share-actions-force-delete-request.json @@ -0,0 +1,3 @@ +{ + "force_delete": null +} diff --git a/api-ref/source/share/v1/samples/manila-share-actions-grant-access-request.json b/api-ref/source/share/v1/samples/manila-share-actions-grant-access-request.json new file mode 100644 index 000000000..6a8d5d66d --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-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/share/v1/samples/manila-share-actions-grant-access-response.json b/api-ref/source/share/v1/samples/manila-share-actions-grant-access-response.json new file mode 100644 index 000000000..823ee6612 --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-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/share/v1/samples/manila-share-actions-list-access-rules-request.json b/api-ref/source/share/v1/samples/manila-share-actions-list-access-rules-request.json new file mode 100644 index 000000000..cfced8ffe --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-share-actions-list-access-rules-request.json @@ -0,0 +1,3 @@ +{ + "access_list": null +} diff --git a/api-ref/source/share/v1/samples/manila-share-actions-list-access-rules-response.json b/api-ref/source/share/v1/samples/manila-share-actions-list-access-rules-response.json new file mode 100644 index 000000000..af015fc3c --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-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/share/v1/samples/manila-share-actions-reset-state-request.json b/api-ref/source/share/v1/samples/manila-share-actions-reset-state-request.json new file mode 100644 index 000000000..e5f70b372 --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-share-actions-reset-state-request.json @@ -0,0 +1,5 @@ +{ + "reset_status": { + "status": "error" + } +} diff --git a/api-ref/source/share/v1/samples/manila-share-actions-revoke-access-request.json b/api-ref/source/share/v1/samples/manila-share-actions-revoke-access-request.json new file mode 100644 index 000000000..ca87e51ea --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-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/share/v1/samples/manila-share-actions-shrink-request.json b/api-ref/source/share/v1/samples/manila-share-actions-shrink-request.json new file mode 100644 index 000000000..ffd082dc7 --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-share-actions-shrink-request.json @@ -0,0 +1,5 @@ +{ + "shrink": { + "new_size": 1 + } +} diff --git a/api-ref/source/share/v1/samples/manila-share-actions-unmanage-request.json b/api-ref/source/share/v1/samples/manila-share-actions-unmanage-request.json new file mode 100644 index 000000000..2ade77f2b --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-share-actions-unmanage-request.json @@ -0,0 +1,3 @@ +{ + "unmanage": null +} diff --git a/api-ref/source/share/v1/samples/manila-share-create-request.json b/api-ref/source/share/v1/samples/manila-share-create-request.json new file mode 100644 index 000000000..c1f55ffbc --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-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/share/v1/samples/manila-share-create-response.json b/api-ref/source/share/v1/samples/manila-share-create-response.json new file mode 100644 index 000000000..96d56b310 --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-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/share/v1/samples/manila-share-instance-actions-force-delete-request.json b/api-ref/source/share/v1/samples/manila-share-instance-actions-force-delete-request.json new file mode 100644 index 000000000..efe867880 --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-share-instance-actions-force-delete-request.json @@ -0,0 +1,3 @@ +{ + "force_delete": null +} diff --git a/api-ref/source/share/v1/samples/manila-share-instance-actions-reset-state-request.json b/api-ref/source/share/v1/samples/manila-share-instance-actions-reset-state-request.json new file mode 100644 index 000000000..f602ff8da --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-share-instance-actions-reset-state-request.json @@ -0,0 +1,5 @@ +{ + "reset_status": { + "status": "available" + } +} diff --git a/api-ref/source/share/v1/samples/manila-share-instances-list-response.json b/api-ref/source/share/v1/samples/manila-share-instances-list-response.json new file mode 100644 index 000000000..09cc2873c --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-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/share/v1/samples/manila-share-manage-request.json b/api-ref/source/share/v1/samples/manila-share-manage-request.json new file mode 100644 index 000000000..cb3344a50 --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-share-manage-request.json @@ -0,0 +1,15 @@ +{ + "share": { + "protocol": "nfs", + "name": "share_texas1", + "share_type": "d", + "is_public": false, + "driver_options": { + "opt1": "opt1", + "opt2": "opt2" + }, + "export_path": "10.254.0.5:/shares/share-42033c24-0261-424f-abda-4fef2f6dbfd5", + "service_host": "manila2@unmanage1#UNMANAGE1", + "description": "Lets manage share." + } +} diff --git a/api-ref/source/share/v1/samples/manila-share-manage-response.json b/api-ref/source/share/v1/samples/manila-share-manage-response.json new file mode 100644 index 000000000..45ebd40b7 --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-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/share/v1/samples/manila-share-network-add-security-service-request.json b/api-ref/source/share/v1/samples/manila-share-network-add-security-service-request.json new file mode 100644 index 000000000..927c581eb --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-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/share/v1/samples/manila-share-network-add-security-service-response.json b/api-ref/source/share/v1/samples/manila-share-network-add-security-service-response.json new file mode 100644 index 000000000..32c13657a --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-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/share/v1/samples/manila-share-network-create-request.json b/api-ref/source/share/v1/samples/manila-share-network-create-request.json new file mode 100644 index 000000000..3f4ac2e4d --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-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/share/v1/samples/manila-share-network-create-response.json b/api-ref/source/share/v1/samples/manila-share-network-create-response.json new file mode 100644 index 000000000..81bdabcf5 --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-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/share/v1/samples/manila-share-network-remove-security-service-request.json b/api-ref/source/share/v1/samples/manila-share-network-remove-security-service-request.json new file mode 100644 index 000000000..221831015 --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-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/share/v1/samples/manila-share-network-remove-security-service-response.json b/api-ref/source/share/v1/samples/manila-share-network-remove-security-service-response.json new file mode 100644 index 000000000..32c13657a --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-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/share/v1/samples/manila-share-network-show-response.json b/api-ref/source/share/v1/samples/manila-share-network-show-response.json new file mode 100644 index 000000000..5a94c78f7 --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-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/share/v1/samples/manila-share-network-update-request.json b/api-ref/source/share/v1/samples/manila-share-network-update-request.json new file mode 100644 index 000000000..a2b932f72 --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-share-network-update-request.json @@ -0,0 +1,5 @@ +{ + "share_network": { + "description": "i'm adding a description" + } +} diff --git a/api-ref/source/share/v1/samples/manila-share-network-update-response.json b/api-ref/source/share/v1/samples/manila-share-network-update-response.json new file mode 100644 index 000000000..c606f62d8 --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-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/share/v1/samples/manila-share-networks-list-detailed-response.json b/api-ref/source/share/v1/samples/manila-share-networks-list-detailed-response.json new file mode 100644 index 000000000..a36cebe89 --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-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/share/v1/samples/manila-share-networks-list-response.json b/api-ref/source/share/v1/samples/manila-share-networks-list-response.json new file mode 100644 index 000000000..dc3ba346c --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-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/share/v1/samples/manila-share-server-show-details-response.json b/api-ref/source/share/v1/samples/manila-share-server-show-details-response.json new file mode 100644 index 000000000..d4cc68f51 --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-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/share/v1/samples/manila-share-server-show-response.json b/api-ref/source/share/v1/samples/manila-share-server-show-response.json new file mode 100644 index 000000000..4081089ff --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-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/share/v1/samples/manila-share-servers-list-response.json b/api-ref/source/share/v1/samples/manila-share-servers-list-response.json new file mode 100644 index 000000000..4f4edbaf5 --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-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/share/v1/samples/manila-share-set-metadata-request.json b/api-ref/source/share/v1/samples/manila-share-set-metadata-request.json new file mode 100644 index 000000000..282342e6d --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-share-set-metadata-request.json @@ -0,0 +1,5 @@ +{ + "metadata": { + "key1": "value1" + } +} diff --git a/api-ref/source/share/v1/samples/manila-share-set-metadata-response.json b/api-ref/source/share/v1/samples/manila-share-set-metadata-response.json new file mode 100644 index 000000000..5bdb58d3b --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-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/share/v1/samples/manila-share-show-instance-response.json b/api-ref/source/share/v1/samples/manila-share-show-instance-response.json new file mode 100644 index 000000000..0dd4b6df8 --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-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/share/v1/samples/manila-share-show-metadata-response.json b/api-ref/source/share/v1/samples/manila-share-show-metadata-response.json new file mode 100644 index 000000000..f9793457d --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-share-show-metadata-response.json @@ -0,0 +1,6 @@ +{ + "metadata": { + "project": "my_app", + "aim": "doc" + } +} diff --git a/api-ref/source/share/v1/samples/manila-share-show-response.json b/api-ref/source/share/v1/samples/manila-share-show-response.json new file mode 100644 index 000000000..4aedc8a01 --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-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/share/v1/samples/manila-share-type-create-request.json b/api-ref/source/share/v1/samples/manila-share-type-create-request.json new file mode 100644 index 000000000..de6af3a61 --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-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/share/v1/samples/manila-share-type-create-response.json b/api-ref/source/share/v1/samples/manila-share-type-create-response.json new file mode 100644 index 000000000..12e091104 --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-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/share/v1/samples/manila-share-type-grant-access-request.json b/api-ref/source/share/v1/samples/manila-share-type-grant-access-request.json new file mode 100644 index 000000000..952cf4963 --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-share-type-grant-access-request.json @@ -0,0 +1,5 @@ +{ + "addProjectAccess": { + "project": "e1284adea3ee4d2482af5ed214f3ad90" + } +} diff --git a/api-ref/source/share/v1/samples/manila-share-type-revoke-access-request.json b/api-ref/source/share/v1/samples/manila-share-type-revoke-access-request.json new file mode 100644 index 000000000..bdc492dd4 --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-share-type-revoke-access-request.json @@ -0,0 +1,5 @@ +{ + "removeProjectAccess": { + "project": "818a3f48dcd644909b3fa2e45a399a27" + } +} diff --git a/api-ref/source/share/v1/samples/manila-share-type-set-request.json b/api-ref/source/share/v1/samples/manila-share-type-set-request.json new file mode 100644 index 000000000..0c3330e03 --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-share-type-set-request.json @@ -0,0 +1,5 @@ +{ + "extra_specs": { + "my_key": "my_value" + } +} diff --git a/api-ref/source/share/v1/samples/manila-share-type-set-response.json b/api-ref/source/share/v1/samples/manila-share-type-set-response.json new file mode 100644 index 000000000..0c3330e03 --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-share-type-set-response.json @@ -0,0 +1,5 @@ +{ + "extra_specs": { + "my_key": "my_value" + } +} diff --git a/api-ref/source/share/v1/samples/manila-share-types-default-list-response.json b/api-ref/source/share/v1/samples/manila-share-types-default-list-response.json new file mode 100644 index 000000000..bd3060ead --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-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/share/v1/samples/manila-share-types-extra-specs-list-response.json b/api-ref/source/share/v1/samples/manila-share-types-extra-specs-list-response.json new file mode 100644 index 000000000..9752fe43e --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-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/share/v1/samples/manila-share-types-list-access-response.json b/api-ref/source/share/v1/samples/manila-share-types-list-access-response.json new file mode 100644 index 000000000..d4e5bf42c --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-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/share/v1/samples/manila-share-types-list-response.json b/api-ref/source/share/v1/samples/manila-share-types-list-response.json new file mode 100644 index 000000000..412e893da --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-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/share/v1/samples/manila-share-update-metadata-request.json b/api-ref/source/share/v1/samples/manila-share-update-metadata-request.json new file mode 100644 index 000000000..d4559547f --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-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/share/v1/samples/manila-share-update-metadata-response.json b/api-ref/source/share/v1/samples/manila-share-update-metadata-response.json new file mode 100644 index 000000000..d4559547f --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-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/share/v1/samples/manila-share-update-request.json b/api-ref/source/share/v1/samples/manila-share-update-request.json new file mode 100644 index 000000000..37fcf6a27 --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-share-update-request.json @@ -0,0 +1,6 @@ +{ + "share": { + "is_public": true, + "display_description": "Changing the share description." + } +} diff --git a/api-ref/source/share/v1/samples/manila-share-update-response.json b/api-ref/source/share/v1/samples/manila-share-update-response.json new file mode 100644 index 000000000..d7e1a7781 --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-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/share/v1/samples/manila-shares-list-detailed-response.json b/api-ref/source/share/v1/samples/manila-shares-list-detailed-response.json new file mode 100644 index 000000000..a143d5e74 --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-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/share/v1/samples/manila-shares-list-response.json b/api-ref/source/share/v1/samples/manila-shares-list-response.json new file mode 100644 index 000000000..3e148d524 --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-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/share/v1/samples/manila-snapshot-actions-force-delete-request.json b/api-ref/source/share/v1/samples/manila-snapshot-actions-force-delete-request.json new file mode 100644 index 000000000..efe867880 --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-snapshot-actions-force-delete-request.json @@ -0,0 +1,3 @@ +{ + "force_delete": null +} diff --git a/api-ref/source/share/v1/samples/manila-snapshot-actions-reset-state-request.json b/api-ref/source/share/v1/samples/manila-snapshot-actions-reset-state-request.json new file mode 100644 index 000000000..e5f70b372 --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-snapshot-actions-reset-state-request.json @@ -0,0 +1,5 @@ +{ + "reset_status": { + "status": "error" + } +} diff --git a/api-ref/source/share/v1/samples/manila-snapshot-actions-unmanage-request.json b/api-ref/source/share/v1/samples/manila-snapshot-actions-unmanage-request.json new file mode 100644 index 000000000..2ade77f2b --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-snapshot-actions-unmanage-request.json @@ -0,0 +1,3 @@ +{ + "unmanage": null +} diff --git a/api-ref/source/share/v1/samples/manila-snapshot-create-request.json b/api-ref/source/share/v1/samples/manila-snapshot-create-request.json new file mode 100644 index 000000000..0540431cd --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-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/share/v1/samples/manila-snapshot-create-response.json b/api-ref/source/share/v1/samples/manila-snapshot-create-response.json new file mode 100644 index 000000000..1723e3e23 --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-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/share/v1/samples/manila-snapshot-manage-request.json b/api-ref/source/share/v1/samples/manila-snapshot-manage-request.json new file mode 100644 index 000000000..f1b9847f2 --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-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/share/v1/samples/manila-snapshot-manage-response.json b/api-ref/source/share/v1/samples/manila-snapshot-manage-response.json new file mode 100644 index 000000000..9978b10f8 --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-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/share/v1/samples/manila-snapshot-show-response.json b/api-ref/source/share/v1/samples/manila-snapshot-show-response.json new file mode 100644 index 000000000..d5d9f92a1 --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-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/share/v1/samples/manila-snapshot-update-request.json b/api-ref/source/share/v1/samples/manila-snapshot-update-request.json new file mode 100644 index 000000000..261549cbc --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-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/share/v1/samples/manila-snapshot-update-response.json b/api-ref/source/share/v1/samples/manila-snapshot-update-response.json new file mode 100644 index 000000000..a888c9ccc --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-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/share/v1/samples/manila-snapshots-list-detailed-response.json b/api-ref/source/share/v1/samples/manila-snapshots-list-detailed-response.json new file mode 100644 index 000000000..b1360c0f5 --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-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/share/v1/samples/manila-snapshots-list-response.json b/api-ref/source/share/v1/samples/manila-snapshots-list-response.json new file mode 100644 index 000000000..c8a0e1856 --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-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/share/v1/samples/manila-versions-response.json b/api-ref/source/share/v1/samples/manila-versions-response.json new file mode 100644 index 000000000..33c483fe6 --- /dev/null +++ b/api-ref/source/share/v1/samples/manila-versions-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/share/v1/share-actions.inc b/api-ref/source/share/v1/share-actions.inc new file mode 100644 index 000000000..8893ed5a9 --- /dev/null +++ b/api-ref/source/share/v1/share-actions.inc @@ -0,0 +1,361 @@ +.. -*- 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 micro-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: 200 +Error response codes: + + +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 + +Request Example +--------------- + +.. literalinclude:: ../samples/manila-share-actions-grant-access-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - share_id: share_id + - created_at: created_at + - updated_at: updated_at + - access_type: access_type + - access_to: access_to + - access: access + - access_level: access_level + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-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. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - os-deny_access: os-deny_access + - access_id: access_id + - share_id: share_id + - tenant_id: tenant_id + +Request Example +--------------- + +.. literalinclude:: ../samples/manila-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: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - access_list: access_list + - share_id: share_id + - tenant_id: tenant_id + +Request Example +--------------- + +.. literalinclude:: ../samples/manila-share-actions-list-access-rules-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - access_type: access_type + - access_to: access_to + - access_level: access_level + - state: state + - access_list: access_list + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-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. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - status: status + - share_id: share_id + - tenant_id: tenant_id + +Request Example +--------------- + +.. literalinclude:: ../samples/manila-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. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - force_delete: force_delete + - share_id: share_id + - tenant_id: tenant_id + +Request Example +--------------- + +.. literalinclude:: ../samples/manila-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. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - new_size: new_size + - share_id: share_id + - tenant_id: tenant_id + +Request Example +--------------- + +.. literalinclude:: ../samples/manila-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. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - new_size: new_size + - share_id: share_id + - tenant_id: tenant_id + +Request Example +--------------- + +.. literalinclude:: ../samples/manila-share-actions-shrink-request.json + :language: javascript + + + + + + + +Unmanage share +============== + +.. rest_method:: POST /v2/{tenant_id}/shares/{share_id}/action + +This API is available for micro-versions later than or equal to 2.7 + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - unmanage: unmanage + - share_id: share_id + - tenant_id: tenant_id + +Request Example +--------------- + +.. literalinclude:: ../samples/manila-share-actions-unmanage-request.json + :language: javascript + + + + + + diff --git a/api-ref/source/share/v1/share-availability-zones.inc b/api-ref/source/share/v1/share-availability-zones.inc new file mode 100644 index 000000000..c48cfbb6d --- /dev/null +++ b/api-ref/source/share/v1/share-availability-zones.inc @@ -0,0 +1,52 @@ +.. -*- rst -*- + +================== +Availability zones +================== + +Describes availability zones. + +For old microversions 1.0-2.6 replace URL part ``availability- +zones`` 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: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - updated_at: updated_at + - created_at: created_at + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-availability-zones-list-response.json + :language: javascript + + + diff --git a/api-ref/source/share/v1/share-extensions.inc b/api-ref/source/share/v1/share-extensions.inc new file mode 100644 index 000000000..2ed1de171 --- /dev/null +++ b/api-ref/source/share/v1/share-extensions.inc @@ -0,0 +1,50 @@ +.. -*- 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: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - alias: alias + - updated: updated + - description: description + - links: links + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-extensions-list-response.json + :language: javascript + + + diff --git a/api-ref/source/share/v1/share-limits.inc b/api-ref/source/share/v1/share-limits.inc new file mode 100644 index 000000000..8075d7ffc --- /dev/null +++ b/api-ref/source/share/v1/share-limits.inc @@ -0,0 +1,85 @@ +.. -*- 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: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - regex: regex + - verb: verb + - totalShareNetworksUsed: totalShareNetworksUsed + - maxTotalShareGigabytes: maxTotalShareGigabytes + - maxTotalShareNetworks: maxTotalShareNetworks + - totalSharesUsed: totalSharesUsed + - uri: uri + - value: value + - totalShareGigabytesUsed: totalShareGigabytesUsed + - totalShareSnapshotsUsed: totalShareSnapshotsUsed + - next-available: next-available + - unit: unit + - maxTotalShares: maxTotalShares + - totalSnapshotGigabytesUsed: totalSnapshotGigabytesUsed + - maxTotalSnapshotGigabytes: maxTotalSnapshotGigabytes + - remaining: remaining + - maxTotalShareSnapshots: maxTotalShareSnapshots + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-limits-response.json + :language: javascript + + + diff --git a/api-ref/source/share/v1/share-metadata.inc b/api-ref/source/share/v1/share-metadata.inc new file mode 100644 index 000000000..3bcd441dd --- /dev/null +++ b/api-ref/source/share/v1/share-metadata.inc @@ -0,0 +1,176 @@ +.. -*- 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: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - share_id: share_id + - tenant_id: tenant_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - metadata: metadata + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-share-show-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: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - metadata: metadata + - share_id: share_id + - tenant_id: tenant_id + +Request Example +--------------- + +.. literalinclude:: ../samples/manila-share-update-metadata-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - metadata: metadata + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-share-update-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: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - metadata: metadata + - share_id: share_id + - tenant_id: tenant_id + +Request Example +--------------- + +.. literalinclude:: ../samples/manila-share-set-metadata-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - metadata: metadata + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-share-set-metadata-response.json + :language: javascript + + + + +Unset share metadata +==================== + +.. rest_method:: DELETE /v2/{tenant_id}/shares/{share_id}/metadata/{key} + +Unsets the metadata on a share. + +To unset a metadata key value, specify only the key name in the +URI. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - share_id: share_id + - tenant_id: tenant_id + + + + +Response Example +---------------- + +.. literalinclude:: + :language: javascript + + + diff --git a/api-ref/source/share/v1/share-os-share-manage.inc b/api-ref/source/share/v1/share-os-share-manage.inc new file mode 100644 index 000000000..fcb20a5c7 --- /dev/null +++ b/api-ref/source/share/v1/share-os-share-manage.inc @@ -0,0 +1,123 @@ +.. -*- rst -*- + +============ +Manage share +============ + +Configures Shared File Systems to manage or unmanage a share. + +The share unmanage operation is not supported for shares that are +created on top of share servers (created with share networks). + +You can unmanage a share that has no dependent snapshots. + +These APIs are available for micro-versions 1.0-2.6 + +Starting with micro-version 2.7 these APIs are available under +'shares' API group. + +Configures Shared File Systems to manage a share. + + +Unmanage share +============== + +.. rest_method:: POST /v2/{tenant_id}/os-share-unmanage/{share_id}/unmanage + +Configures Shared File Systems to stop managing a share. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - share_id: share_id + - tenant_id: tenant_id + + + + + + +Manage share +============ + +.. rest_method:: POST /v2/{tenant_id}/os-share-manage + + + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - protocol: protocol + - description: description + - share_type: share_type + - share: share + - driver_options: driver_options + - is_public: is_public + - export_path: export_path + - service_host: service_host + - name: name + - tenant_id: tenant_id + +Request Example +--------------- + +.. literalinclude:: ../samples/manila-share-manage-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - share_type_name: share_type_name + - links: links + - availability_zone: availability_zone + - share: share + - share_network_id: share_network_id + - export_locations: export_locations + - share_server_id: share_server_id + - snapshot_id: snapshot_id + - id: id + - size: size + - share_type: share_type + - export_location: export_location + - consistency_group_id: consistency_group_id + - project_id: project_id + - metadata: metadata + - status: status + - description: description + - host: host + - is_public: is_public + - snapshot_support: snapshot_support + - name: name + - has_replicas: has_replicas + - replication_type: replication_type + - created_at: created_at + - share_proto: share_proto + - volume_type: volume_type + - source_cgsnapshot_member_id: source_cgsnapshot_member_id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-share-manage-response.json + :language: javascript + + + diff --git a/api-ref/source/share/v1/share-quota-sets.inc b/api-ref/source/share/v1/share-quota-sets.inc new file mode 100644 index 000000000..789f31ec0 --- /dev/null +++ b/api-ref/source/share/v1/share-quota-sets.inc @@ -0,0 +1,189 @@ +.. -*- rst -*- + +========== +Quota sets +========== + +Provides quotas management support. + +For old microversions 1.0-2.6 replace URL part ``quota-sets`` 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: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - gigabytes: gigabytes + - shares: shares + - snapshot_gigabytes: snapshot_gigabytes + - snapshots: snapshots + - quota_set: quota_set + - id: id + - share_networks: share_networks + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-quota-show-response.json + :language: javascript + + + + +Show quotas +=========== + +.. rest_method:: GET /v2/{tenant_id}/quota-sets/{tenant_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: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - gigabytes: gigabytes + - shares: shares + - snapshot_gigabytes: snapshot_gigabytes + - snapshots: snapshots + - quota_set: quota_set + - id: id + - share_networks: share_networks + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-quota-show-response.json + :language: javascript + + + + +Update quotas +============= + +.. rest_method:: PUT /v2/{tenant_id}/quota-sets/{tenant_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: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - force: force + - gigabytes: gigabytes + - snapshots: snapshots + - snapshot_gigabytes: snapshot_gigabytes + - shares: shares + - share_networks: share_networks + - tenant_id: tenant_id + +Request Example +--------------- + +.. literalinclude:: ../samples/manila-quota-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - gigabytes: gigabytes + - snapshots: snapshots + - snapshot_gigabytes: snapshot_gigabytes + - shares: shares + - quota_set: quota_set + - share_networks: share_networks + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-quota-update-response.json + :language: javascript + + + + +Delete quotas +============= + +.. rest_method:: DELETE /v2/{tenant_id}/quota-sets/{tenant_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, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + + + + + diff --git a/api-ref/source/share/v1/share-security-services.inc b/api-ref/source/share/v1/share-security-services.inc new file mode 100644 index 000000000..576055751 --- /dev/null +++ b/api-ref/source/share/v1/share-security-services.inc @@ -0,0 +1,334 @@ +.. -*- 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. + + +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: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - security_service_id: security_service_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - domain: domain + - project_id: project_id + - name: name + - updated_at: updated_at + - created_at: created_at + - dns_ip: dns_ip + - server: server + - user: user + - password: password + - type: type + - id: id + - description: description + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-security-service-show-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: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - domain: domain + - description: description + - dns_ip: dns_ip + - server: server + - user: user + - password: password + - type: type + - name: name + - tenant_id: tenant_id + - security_service_id: security_service_id + +Request Example +--------------- + +.. literalinclude:: ../samples/manila-security-service-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - domain: domain + - project_id: project_id + - name: name + - updated_at: updated_at + - created_at: created_at + - dns_ip: dns_ip + - server: server + - user: user + - password: password + - type: type + - id: id + - description: description + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-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. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - security_service_id: security_service_id + + + + + + +Create security service +======================= + +.. rest_method:: POST /v2/{tenant_id}/security-services + +Creates a security service. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - domain: domain + - description: description + - dns_ip: dns_ip + - server: server + - user: user + - password: password + - type: type + - name: name + - tenant_id: tenant_id + +Request Example +--------------- + +.. literalinclude:: ../samples/manila-security-service-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - domain: domain + - project_id: project_id + - name: name + - updated_at: updated_at + - created_at: created_at + - dns_ip: dns_ip + - server: server + - user: user + - password: password + - type: type + - id: id + - description: description + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-security-service-create-response.json + :language: javascript + + + + +List security services +====================== + +.. rest_method:: GET /v2/{tenant_id}/security-services + +Lists all security services. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - type: type + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-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: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - domain: domain + - project_id: project_id + - name: name + - updated_at: updated_at + - created_at: created_at + - dns_ip: dns_ip + - server: server + - user: user + - password: password + - type: type + - id: id + - description: description + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-security-services-list-detailed-response.json + :language: javascript + + + diff --git a/api-ref/source/share/v1/share-services.inc b/api-ref/source/share/v1/share-services.inc new file mode 100644 index 000000000..5450c43ac --- /dev/null +++ b/api-ref/source/share/v1/share-services.inc @@ -0,0 +1,157 @@ +.. -*- rst -*- + +======== +Services +======== + +Lists services. Services include ``manila-share`` and ``manila- +scheduler`` and their binaries, hosts, availability zones, current +statuses, and states (``up`` or ``down``). + +Administrators can also enable or disable a service. + +For old microversions 1.0-2.6 replace URL part ``services`` with +``os-services``. + + +Disable service +=============== + +.. rest_method:: PUT /v2/{tenant_id}/services/disable + +Disables a service. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - binary: binary + - host: host + - tenant_id: tenant_id + +Request Example +--------------- + +.. literalinclude:: ../samples/manila-service-disable-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - disabled: disabled + - binary: binary + - host: host + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-service-disable-response.json + :language: javascript + + + + +List services +============= + +.. rest_method:: GET /v2/{tenant_id}/services + +Lists all services. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - binary: binary + - zone: zone + - state: state + - updated_at: updated_at + - host: host + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-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: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - binary: binary + - host: host + - tenant_id: tenant_id + +Request Example +--------------- + +.. literalinclude:: ../samples/manila-service-enable-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - disabled: disabled + - binary: binary + - host: host + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-service-enable-response.json + :language: javascript + + + diff --git a/api-ref/source/share/v1/share-share-export-locations.inc b/api-ref/source/share/v1/share-share-export-locations.inc new file mode 100644 index 000000000..e44a21edc --- /dev/null +++ b/api-ref/source/share/v1/share-share-export-locations.inc @@ -0,0 +1,15 @@ +.. -*- 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. + +Lists all export locations for a share. + +Show details of an export location belonging to a share. + diff --git a/api-ref/source/share/v1/share-share-instance-export-locations.inc b/api-ref/source/share/v1/share-share-instance-export-locations.inc new file mode 100644 index 000000000..d7b98c663 --- /dev/null +++ b/api-ref/source/share/v1/share-share-instance-export-locations.inc @@ -0,0 +1,104 @@ +.. -*- 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: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - share_instance_id: share_instance_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - path: path + - share_instance_id: share_instance_id + - is_admin_only: is_admin_only + - id: id + - preferred: preferred + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-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: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - export_location_id: export_location_id + - tenant_id: tenant_id + - share_instance_id: share_instance_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - created_at: created_at + - updated_at: updated_at + - preferred: preferred + - is_admin_only: is_admin_only + - share_instance_id: share_instance_id + - path: path + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-export-location-show-response.json + :language: javascript + + + diff --git a/api-ref/source/share/v1/share-share-instances.inc b/api-ref/source/share/v1/share-share-instances.inc new file mode 100644 index 000000000..beb23d380 --- /dev/null +++ b/api-ref/source/share/v1/share-share-instances.inc @@ -0,0 +1,177 @@ +.. -*- 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: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - replica_state: replica_state + - availability_zone: availability_zone + - created_at: created_at + - export_location: export_location + - share_network_id: share_network_id + - export_locations: export_locations + - share_server_id: share_server_id + - host: host + - share_id: share_id + - access_rules_status: access_rules_status + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-share-instances-list-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. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - status: status + - tenant_id: tenant_id + - share_instance_id: share_instance_id + +Request Example +--------------- + +.. literalinclude:: ../samples/manila-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. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - force_delete: force_delete + - tenant_id: tenant_id + - share_instance_id: share_instance_id + +Request Example +--------------- + +.. literalinclude:: ../samples/manila-share-instance-actions-force-delete-request.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: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - share_instance_id: share_instance_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - replica_state: replica_state + - availability_zone: availability_zone + - created_at: created_at + - export_location: export_location + - share_network_id: share_network_id + - export_locations: export_locations + - share_server_id: share_server_id + - host: host + - share_id: share_id + - access_rules_status: access_rules_status + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-share-show-instance-response.json + :language: javascript + + + diff --git a/api-ref/source/share/v1/share-share-networks.inc b/api-ref/source/share/v1/share-share-networks.inc new file mode 100644 index 000000000..712fac05e --- /dev/null +++ b/api-ref/source/share/v1/share-share-networks.inc @@ -0,0 +1,444 @@ +.. -*- 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. + + +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: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - share_network_id: share_network_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - name: name + - neutron_net_id: neutron_net_id + - created_at: created_at + - neutron_subnet_id: neutron_subnet_id + - updated_at: updated_at + - network_type: network_type + - segmentation_id: segmentation_id + - ip_version: ip_version + - nova_net_id: nova_net_id + - cidr: cidr + - project_id: project_id + - id: id + - description: description + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-share-network-show-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: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - description: description + - name: name + - tenant_id: tenant_id + - share_network_id: share_network_id + +Request Example +--------------- + +.. literalinclude:: ../samples/manila-share-network-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - name: name + - neutron_net_id: neutron_net_id + - created_at: created_at + - neutron_subnet_id: neutron_subnet_id + - updated_at: updated_at + - network_type: network_type + - segmentation_id: segmentation_id + - ip_version: ip_version + - nova_net_id: nova_net_id + - cidr: cidr + - project_id: project_id + - id: id + - description: description + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-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. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - share_network_id: share_network_id + + + + + + +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: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - name: name + - neutron_net_id: neutron_net_id + - created_at: created_at + - neutron_subnet_id: neutron_subnet_id + - updated_at: updated_at + - network_type: network_type + - segmentation_id: segmentation_id + - ip_version: ip_version + - nova_net_id: nova_net_id + - cidr: cidr + - project_id: project_id + - id: id + - description: description + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-share-networks-list-detailed-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: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - security_service_id: security_service_id + - tenant_id: tenant_id + - share_network_id: share_network_id + +Request Example +--------------- + +.. literalinclude:: ../samples/manila-share-network-add-security-service-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - name: name + - neutron_net_id: neutron_net_id + - created_at: created_at + - neutron_subnet_id: neutron_subnet_id + - updated_at: updated_at + - network_type: network_type + - segmentation_id: segmentation_id + - ip_version: ip_version + - nova_net_id: nova_net_id + - cidr: cidr + - project_id: project_id + - id: id + - description: description + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-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: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - security_service_id: security_service_id + - tenant_id: tenant_id + - share_network_id: share_network_id + +Request Example +--------------- + +.. literalinclude:: ../samples/manila-share-network-remove-security-service-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - name: name + - neutron_net_id: neutron_net_id + - created_at: created_at + - neutron_subnet_id: neutron_subnet_id + - updated_at: updated_at + - network_type: network_type + - segmentation_id: segmentation_id + - ip_version: ip_version + - nova_net_id: nova_net_id + - cidr: cidr + - project_id: project_id + - id: id + - description: description + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-share-network-remove-security-service-response.json + :language: javascript + + + + +Create share network +==================== + +.. rest_method:: POST /v2/{tenant_id}/share-networks + +Creates a share network. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - nova_net_id: nova_net_id + - neutron_net_id: neutron_net_id + - neutron_subnet_id: neutron_subnet_id + - description: description + - name: name + - tenant_id: tenant_id + +Request Example +--------------- + +.. literalinclude:: ../samples/manila-share-network-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - name: name + - neutron_net_id: neutron_net_id + - created_at: created_at + - neutron_subnet_id: neutron_subnet_id + - updated_at: updated_at + - network_type: network_type + - segmentation_id: segmentation_id + - ip_version: ip_version + - nova_net_id: nova_net_id + - cidr: cidr + - project_id: project_id + - id: id + - description: description + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-share-network-create-response.json + :language: javascript + + + + +List share networks +=================== + +.. rest_method:: GET /v2/{tenant_id}/share-networks + +Lists all share networks. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-share-networks-list-response.json + :language: javascript + + + diff --git a/api-ref/source/share/v1/share-share-servers.inc b/api-ref/source/share/v1/share-share-servers.inc new file mode 100644 index 000000000..c70397c5a --- /dev/null +++ b/api-ref/source/share/v1/share-share-servers.inc @@ -0,0 +1,199 @@ +.. -*- 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. With the ``cluster_mode`` driver from +NetApp, shares are hosted on virtual storage servers, also known as +Vservers or SVMs. + +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. | ++--------------+------------------------------------------------------------------+ + + +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: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - share_server_id: share_server_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - backend_details: backend_details + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-share-server-show-details-response.json + :language: javascript + + + + +List share servers +================== + +.. rest_method:: GET /v2/{tenant_id}/share-servers + +Lists all share servers. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - updated_at: updated_at + - share_network_id: share_network_id + - host: host + - share_network_name: share_network_name + - project_id: project_id + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-share-servers-list-response.json + :language: javascript + + + + +Show share server details +========================= + +.. rest_method:: GET /v2/{tenant_id}/share-servers/{share_server_id} + +Shows details for a share server. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - share_server_id: share_server_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - backend_details: backend_details + - created_at: created_at + - updated_at: updated_at + - share_network_id: share_network_id + - host: host + - share_network_name: share_network_name + - project_id: project_id + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-share-server-show-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. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - share_server_id: share_server_id + + + + + diff --git a/api-ref/source/share/v1/share-shares.inc b/api-ref/source/share/v1/share-shares.inc new file mode 100644 index 000000000..38c898f75 --- /dev/null +++ b/api-ref/source/share/v1/share-shares.inc @@ -0,0 +1,476 @@ +.. -*- 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. | ++----------------------------------------+--------------------------------------------------------+ + + + +Configures Shared File Systems to manage a share. This API is +available for micro-versions later than or equal to 2.7 + + +List shares with details +======================== + +.. rest_method:: GET /v2/{tenant_id}/shares/detail + +Lists all shares, with details. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - is_public: is_public + - tenant_id: tenant_id + - all_tenants: all_tenants + - name: name + - status: status + - 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 + - host: host + - share_network_id: share_network_id + - project_id: project_id + - consistency_group_id: consistency_group_id + + +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 + - id: id + - size: size + - share_type: share_type + - export_location: export_location + - consistency_group_id: consistency_group_id + - project_id: project_id + - metadata: metadata + - status: status + - description: description + - host: host + - access_rules_status: access_rules_status + - is_public: is_public + - task_state: task_state + - snapshot_support: snapshot_support + - name: name + - has_replicas: has_replicas + - replication_type: replication_type + - created_at: created_at + - share_proto: share_proto + - volume_type: volume_type + - source_cgsnapshot_member_id: source_cgsnapshot_member_id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-shares-list-detailed-response.json + :language: javascript + + + + +Create share +============ + +.. rest_method:: POST /v2/{tenant_id}/shares + +Creates a share. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - display_name: display_name + - description: description + - share_type: share_type + - availability_zone: availability_zone + - share_proto: share_proto + - display_description: display_description + - name: name + - consistency_group_id: consistency_group_id + - share_network_id: share_network_id + - snapshot_id: snapshot_id + - is_public: is_public + - size: size + - volume_type: volume_type + - metadata: metadata + - tenant_id: tenant_id + +Request Example +--------------- + +.. literalinclude:: ../samples/manila-share-create-request.json + :language: javascript + + + +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 + - id: id + - size: size + - display_name: display_name + - share_type: share_type + - export_location: export_location + - display_description: display_description + - consistency_group_id: consistency_group_id + - project_id: project_id + - metadata: metadata + - status: status + - description: description + - host: host + - is_public: is_public + - task_state: task_state + - snapshot_support: snapshot_support + - name: name + - has_replicas: has_replicas + - replication_type: replication_type + - created_at: created_at + - share_proto: share_proto + - volume_type: volume_type + - source_cgsnapshot_member_id: source_cgsnapshot_member_id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-share-create-response.json + :language: javascript + + + + +List shares +=========== + +.. rest_method:: GET /v2/{tenant_id}/shares + +Lists all shares. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - is_public: is_public + - tenant_id: tenant_id + - all_tenants: all_tenants + - name: name + - status: status + - 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 + - host: host + - share_network_id: share_network_id + - project_id: project_id + - consistency_group_id: consistency_group_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - id: id + - links: links + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-shares-list-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: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - share_id: share_id + - tenant_id: tenant_id + + +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 + - id: id + - size: size + - share_type: share_type + - export_location: export_location + - consistency_group_id: consistency_group_id + - project_id: project_id + - metadata: metadata + - status: status + - description: description + - host: host + - access_rules_status: access_rules_status + - is_public: is_public + - task_state: task_state + - snapshot_support: snapshot_support + - name: name + - has_replicas: has_replicas + - replication_type: replication_type + - created_at: created_at + - share_proto: share_proto + - volume_type: volume_type + - source_cgsnapshot_member_id: source_cgsnapshot_member_id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-share-show-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: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - is_public: is_public + - display_name: display_name + - display_description: display_description + - share_id: share_id + - tenant_id: tenant_id + +Request Example +--------------- + +.. literalinclude:: ../samples/manila-share-update-request.json + :language: javascript + + + +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 + - id: id + - size: size + - share_type: share_type + - export_location: export_location + - consistency_group_id: consistency_group_id + - project_id: project_id + - metadata: metadata + - status: status + - description: description + - host: host + - access_rules_status: access_rules_status + - is_public: is_public + - task_state: task_state + - snapshot_support: snapshot_support + - name: name + - has_replicas: has_replicas + - replication_type: replication_type + - created_at: created_at + - share_proto: share_proto + - volume_type: volume_type + - source_cgsnapshot_member_id: source_cgsnapshot_member_id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-share-update-response.json + :language: javascript + + + + +Delete share +============ + +.. rest_method:: DELETE /v2/{tenant_id}/shares/{share_id} + +Deletes a share. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - share_id: share_id + - tenant_id: tenant_id + - consistency_group_id: consistency_group_id + + + + + diff --git a/api-ref/source/share/v1/share-snapshots.inc b/api-ref/source/share/v1/share-snapshots.inc new file mode 100644 index 000000000..9fc4f5301 --- /dev/null +++ b/api-ref/source/share/v1/share-snapshots.inc @@ -0,0 +1,481 @@ +.. -*- 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. + + +Create share snapshot +===================== + +.. rest_method:: POST /v2/{tenant_id}/snapshots + +Creates a snapshot from a share. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - share_id: share_id + - force: force + - description: description + - display_description: display_description + - display_name: display_name + - name: name + - tenant_id: tenant_id + +Request Example +--------------- + +.. literalinclude:: ../samples/manila-snapshot-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - share_id: share_id + - description: description + - created_at: created_at + - share_proto: share_proto + - provider_location: provider_location + - share_size: share_size + - size: size + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-snapshot-create-response.json + :language: javascript + + + + +List share snapshots +==================== + +.. rest_method:: GET /v2/{tenant_id}/snapshots + +Lists all share snapshots. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-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: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - share_id: share_id + - description: description + - created_at: created_at + - share_proto: share_proto + - share_size: share_size + - size: size + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-snapshots-list-detailed-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: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - share_id: share_id + - display_name: display_name + - description: description + - provider_location: provider_location + - driver_options: driver_options + - display_description: display_description + - name: name + - tenant_id: tenant_id + +Request Example +--------------- + +.. literalinclude:: ../samples/manila-snapshot-manage-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - share_id: share_id + - description: description + - created_at: created_at + - share_proto: share_proto + - provider_location: provider_location + - share_size: share_size + - size: size + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-snapshot-manage-response.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. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - status: status + - tenant_id: tenant_id + - snapshot_id: snapshot_id + +Request Example +--------------- + +.. literalinclude:: ../samples/manila-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. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - force_delete: force_delete + - tenant_id: tenant_id + - snapshot_id: snapshot_id + +Request Example +--------------- + +.. literalinclude:: ../samples/manila-snapshot-actions-force-delete-request.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. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - unmanage: unmanage + - tenant_id: tenant_id + - snapshot_id: snapshot_id + +Request Example +--------------- + +.. literalinclude:: ../samples/manila-snapshot-actions-unmanage-request.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: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - snapshot_id: snapshot_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - share_id: share_id + - description: description + - created_at: created_at + - share_proto: share_proto + - share_size: share_size + - size: size + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-snapshot-show-response.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: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - display_name: display_name + - display_description: display_description + - tenant_id: tenant_id + - snapshot_id: snapshot_id + +Request Example +--------------- + +.. literalinclude:: ../samples/manila-snapshot-update-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - share_id: share_id + - description: description + - created_at: created_at + - share_proto: share_proto + - share_size: share_size + - size: size + - id: id + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-snapshot-update-response.json + :language: javascript + + + + +Delete share snapshot +===================== + +.. rest_method:: DELETE /v2/{tenant_id}/snapshots/{snapshot_id} + +Deletes a share snapshot. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - snapshot_id: snapshot_id + + + + + diff --git a/api-ref/source/share/v1/share-type.inc b/api-ref/source/share/v1/share-type.inc new file mode 100644 index 000000000..2ed4942d6 --- /dev/null +++ b/api-ref/source/share/v1/share-type.inc @@ -0,0 +1,474 @@ +.. -*- 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. 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_types`` and +``volume_types`` 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 micro-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 storage 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 unscoped 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. + + +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. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - share_type_id: share_type_id + - tenant_id: tenant_id + + + + + + +Delete share type +================= + +.. rest_method:: DELETE /v2/{tenant_id}/types/{share_type_id} + +Deletes a share type. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - share_type_id: share_type_id + - tenant_id: tenant_id + + + + + + +Create share type +================= + +.. rest_method:: POST /v2/{tenant_id}/types + +Creates a share type. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - os-share-type-access:is_public: os-share-type-access:is_public + - snapshot_support: snapshot_support + - extra_specs: extra_specs + - name: name + - driver_handles_share_servers: driver_handles_share_servers + - tenant_id: tenant_id + +Request Example +--------------- + +.. literalinclude:: ../samples/manila-share-type-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - os-share-type-access:is_public: os-share-type-access:is_public + - required_extra_specs: required_extra_specs + - name: name + - driver_handles_share_servers: driver_handles_share_servers + - extra_specs: extra_specs + - snapshot_support: snapshot_support + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-share-type-create-response.json + :language: javascript + + + + +List share types +================ + +.. rest_method:: GET /v2/{tenant_id}/types + +Lists all share types. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - os-share-type-access:is_public: os-share-type-access:is_public + - required_extra_specs: required_extra_specs + - name: name + - driver_handles_share_servers: driver_handles_share_servers + - extra_specs: extra_specs + - snapshot_support: snapshot_support + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-share-types-list-response.json + :language: javascript + + + + +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. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - project: project + - share_type_id: share_type_id + - tenant_id: tenant_id + +Request Example +--------------- + +.. literalinclude:: ../samples/manila-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. + +Error response codes:202, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - project: project + - share_type_id: share_type_id + - tenant_id: tenant_id + +Request Example +--------------- + +.. literalinclude:: ../samples/manila-share-type-revoke-access-request.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: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - share_type_id: share_type_id + - tenant_id: tenant_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - share_type_id: share_type_id + - project_id: project_id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-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: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - extra_specs: extra_specs + - share_type_id: share_type_id + - tenant_id: tenant_id + +Request Example +--------------- + +.. literalinclude:: ../samples/manila-share-type-set-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - extra_specs: extra_specs + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-share-type-set-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: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - share_type_id: share_type_id + - tenant_id: tenant_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - snapshot_support: snapshot_support + - extra_specs: extra_specs + - driver_handles_share_servers: driver_handles_share_servers + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-share-types-extra-specs-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: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - os-share-type-access:is_public: os-share-type-access:is_public + - required_extra_specs: required_extra_specs + - name: name + - driver_handles_share_servers: driver_handles_share_servers + - extra_specs: extra_specs + - snapshot_support: snapshot_support + - id: id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/manila-share-types-default-list-response.json + :language: javascript + + + diff --git a/api-ref/source/share/v1/share-versions.inc b/api-ref/source/share/v1/share-versions.inc new file mode 100644 index 000000000..d7b6d18ee --- /dev/null +++ b/api-ref/source/share/v1/share-versions.inc @@ -0,0 +1,8 @@ +.. -*- rst -*- + +============ +API versions +============ + +Lists information for all Shared File Systems API versions. + diff --git a/api-ref/source/telemetry/v2/alarms.inc b/api-ref/source/telemetry/v2/alarms.inc new file mode 100644 index 000000000..5d59e27a3 --- /dev/null +++ b/api-ref/source/telemetry/v2/alarms.inc @@ -0,0 +1,338 @@ +.. -*- rst -*- + +====== +Alarms +====== + +Lists, creates, gets details for, updates, and deletes alarms. + + +Show alarm details +================== + +.. rest_method:: GET /v2/alarms/{alarm_id} + +Shows details for an alarm, by alarm ID. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - alarm_id: alarm_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - alarm_actions: alarm_actions + - ok_actions: ok_actions + - description: description + - timestamp: timestamp + - enabled: enabled + - combination_rule: combination_rule + - state_timestamp: state_timestamp + - threshold_rule: threshold_rule + - alarm_id: alarm_id + - state: state + - insufficient_data_actions: insufficient_data_actions + - repeat_actions: repeat_actions + - user_id: user_id + - project_id: project_id + - type: type + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/alarm-show-response.json + :language: javascript + + + + +Update alarm +============ + +.. rest_method:: PUT /v2/alarms/{alarm_id} + +Updates an alarm. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - alarm_id: alarm_id + - data: data + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - alarm_actions: alarm_actions + - ok_actions: ok_actions + - description: description + - timestamp: timestamp + - enabled: enabled + - combination_rule: combination_rule + - state_timestamp: state_timestamp + - threshold_rule: threshold_rule + - alarm_id: alarm_id + - state: state + - insufficient_data_actions: insufficient_data_actions + - repeat_actions: repeat_actions + - user_id: user_id + - project_id: project_id + - type: type + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/alarm-show-response.json + :language: javascript + + + + +Delete alarm +============ + +.. rest_method:: DELETE /v2/alarms/{alarm_id} + +Deletes an alarm, by alarm ID. + +Error response codes:204, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - alarm_id: alarm_id + + + + + + +Update alarm state +================== + +.. rest_method:: PUT /v2/alarms/{alarm_id}/state + +Sets the state of an alarm. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - alarm_id: alarm_id + - state: state + + + + +Response Example +---------------- + +.. literalinclude:: + :language: javascript + + + + +Show alarm state +================ + +.. rest_method:: GET /v2/alarms/{alarm_id}/state + +Shows the state for an alarm, by alarm ID. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - alarm_id: alarm_id + + + + +Response Example +---------------- + +.. literalinclude:: + :language: javascript + + + + +List alarms +=========== + +.. rest_method:: GET /v2/alarms + +Lists alarms, based on a query. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - q: q + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - alarm_actions: alarm_actions + - ok_actions: ok_actions + - description: description + - timestamp: timestamp + - enabled: enabled + - combination_rule: combination_rule + - state_timestamp: state_timestamp + - threshold_rule: threshold_rule + - alarm_id: alarm_id + - state: state + - insufficient_data_actions: insufficient_data_actions + - repeat_actions: repeat_actions + - user_id: user_id + - project_id: project_id + - type: type + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/alarms-list-response.json + :language: javascript + + + + +Create alarm +============ + +.. rest_method:: POST /v2/alarms + +Creates an alarm. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - data: data + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - alarm_actions: alarm_actions + - ok_actions: ok_actions + - description: description + - timestamp: timestamp + - enabled: enabled + - combination_rule: combination_rule + - state_timestamp: state_timestamp + - threshold_rule: threshold_rule + - alarm_id: alarm_id + - state: state + - insufficient_data_actions: insufficient_data_actions + - repeat_actions: repeat_actions + - user_id: user_id + - project_id: project_id + - type: type + - name: name + + + +Response Example +---------------- + +.. literalinclude:: ../samples/alarm-show-response.json + :language: javascript + + + + +Show alarm history +================== + +.. rest_method:: GET /v2/alarms/{alarm_id}/history + +Assembles and shows the history for an alarm, by alarm ID. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - alarm_id: alarm_id + - q: q + + + + +Response Example +---------------- + +.. literalinclude:: + :language: javascript + + + diff --git a/api-ref/source/telemetry/v2/capabilities.inc b/api-ref/source/telemetry/v2/capabilities.inc new file mode 100644 index 000000000..e3461b28a --- /dev/null +++ b/api-ref/source/telemetry/v2/capabilities.inc @@ -0,0 +1,92 @@ +.. -*- rst -*- + +============ +Capabilities +============ + +Gets information for API and storage capabilities. + +The Telemetry service enables you to store samples, events, and +alarm definitions in supported database back ends. The +``capabilities`` resource enables you to list the capabilities that +a database supports. + +The ``capabilities`` resource returns a flattened dictionary of +capability properties, each with an associated boolean value. A +value of ``true`` indicates that the corresponding capability is +available in the back end. + +You can optionally configure separate database back ends for +samples, events, and alarms definitions. The ``capabilities`` +response shows a value of ``true`` to indicate that the definitions +database for samples, events, or alarms is ready to use in a +production environment. + + +List capabilities +================= + +.. rest_method:: GET /v2/capabilities + +A representation of the API and storage capabilities. Usually, the storage driver imposes constraints. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - statistics:query:complex: statistics:query:complex + - alarms:history:query:simple: alarms:history:query:simple + - meters:query:metadata: meters:query:metadata + - alarms:query:simple: alarms:query:simple + - resources:query:simple: resources:query:simple + - api: api + - statistics:aggregation:selectable:quartile: statistics:aggregation:selectable:quartile + - statistics:query:simple: statistics:query:simple + - statistics:aggregation:selectable:count: statistics:aggregation:selectable:count + - statistics:aggregation:selectable:min: statistics:aggregation:selectable:min + - statistics:aggregation:selectable:sum: statistics:aggregation:selectable:sum + - storage: storage + - alarm_storage: alarm_storage + - statistics:aggregation:selectable:avg: statistics:aggregation:selectable:avg + - meters:query:complex: meters:query:complex + - statistics:groupby: statistics:groupby + - alarms:history:query:complex: alarms:history:query:complex + - meters:query:simple: meters:query:simple + - samples:query:metadata: samples:query:metadata + - statistics:query:metadata: statistics:query:metadata + - storage:production_ready: storage:production_ready + - samples:query:simple: samples:query:simple + - resources:query:metadata: resources:query:metadata + - statistics:aggregation:selectable:max: statistics:aggregation:selectable:max + - samples:query:complex: samples:query:complex + - statistics:aggregation:standard: statistics:aggregation:standard + - events:query:simple: events:query:simple + - statistics:aggregation:selectable:stddev: statistics:aggregation:selectable:stddev + - alarms:query:complex: alarms:query:complex + - statistics:aggregation:selectable:cardinality: statistics:aggregation:selectable:cardinality + - event_storage: event_storage + - resources:query:complex: resources:query:complex + + + +Response Example +---------------- + +.. literalinclude:: ../samples/capabilities-list-response.json + :language: javascript + + + diff --git a/api-ref/source/telemetry/v2/events.inc b/api-ref/source/telemetry/v2/events.inc new file mode 100644 index 000000000..0b0585bce --- /dev/null +++ b/api-ref/source/telemetry/v2/events.inc @@ -0,0 +1,93 @@ +.. -*- rst -*- + +====== +Events +====== + +Lists all events and shows details for an event. + + +Show event details +================== + +.. rest_method:: GET /v2/events/{message_id} + +Shows details for an event. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - message_id: message_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - traits: traits + - raw: raw + - generated: generated + - event_type: event_type + - message_id: message_id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/event-show-response.json + :language: javascript + + + + +List events +=========== + +.. rest_method:: GET /v2/events + +Lists all events. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - q: q + - limit: limit + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - traits: traits + - raw: raw + - generated: generated + - event_type: event_type + - message_id: message_id + + + +Response Example +---------------- + +.. literalinclude:: ../samples/events-list-response.json + :language: javascript + + + diff --git a/api-ref/source/telemetry/v2/meters.inc b/api-ref/source/telemetry/v2/meters.inc new file mode 100644 index 000000000..292fbaad2 --- /dev/null +++ b/api-ref/source/telemetry/v2/meters.inc @@ -0,0 +1,386 @@ +.. -*- rst -*- + +====== +Meters +====== + +Lists all meters, adds samples to meters, and lists samples for +meters. For list operations, if you do not explicitly set the +``limit`` query parameter, a default limit is applied. The default +limit is the ``default_api_return_limit`` configuration option +value. + +Also, computes and lists statistics for samples in a time range. +You can use the ``aggregate`` query parameter in the ``statistics`` +URI to explicitly select the ``stddev``, ``cardinality``, or any +other standard function. For example: + +:: + + GET /v2/meters/METER_NAME/statistics?aggregate.func=NAME + & + aggregate.param=VALUE + +The ``aggregate.param`` parameter value is optional for all +functions except the ``cardinality`` function. + +The API silently ignores any duplicate aggregate function and +parameter pairs. + +The API accepts and storage drivers support duplicate functions +with different parameter values. In this example, the +``cardinality`` function is accepted twice with two different +parameter values: + +:: + + GET /v2/meters/METER_NAME/statistics?aggregate.func=cardinality + & + aggregate.param=resource_id + & + aggregate.func=cardinality + & + aggregate.param=project_id + +**Examples:** + +Use the ``stddev`` function to request the standard deviation of +CPU utilization: + +:: + + GET /v2/meters/cpu_util/statistics?aggregate.func=stddev + +The response looks like this: + +.. code-block:: json + + [ + { + "aggregate": { + "stddev": 0.6858829 + }, + "duration_start": "2014-01-30T11:13:23", + "duration_end": "2014-01-31T16:07:13", + "duration": 104030, + "period": 0, + "period_start": "2014-01-30T11:13:23", + "period_end": "2014-01-31T16:07:13", + "groupby": null, + "unit": "%" + } + ] + +Use the ``cardinality`` function with the project ID to return the +number of distinct tenants with images: + +:: + + GET /v2/meters/image/statistics?aggregate.func=cardinality + & + aggregate.param=project_id + +The following, more complex, example determines: + +- The number of distinct instances (``cardinality``) + +- The total number of instance samples (``count``) for a tenant in + 15-minute intervals (``period`` and ``groupby`` options) + +:: + + GET /v2/meters/instance/statistics?aggregate.func=cardinality + & + aggregate.param=resource_id + & + aggregate.func=count + & + groupby=project_id + & + period=900 + +The response looks like this: + +.. code-block:: json + + [ + { + "count": 19, + "aggregate": { + "count": 19, + "cardinality/resource_id": 3 + }, + "duration": 328.47803, + "duration_start": "2014-01-31T10:00:41.823919", + "duration_end": "2014-01-31T10:06:10.301948", + "period": 900, + "period_start": "2014-01-31T10:00:00", + "period_end": "2014-01-31T10:15:00", + "groupby": { + "project_id": "061a5c91811e4044b7dc86c6136c4f99" + }, + "unit": "instance" + }, + { + "count": 22, + "aggregate": { + "count": 22, + "cardinality/resource_id": 4 + }, + "duration": 808.00385, + "duration_start": "2014-01-31T10:15:15", + "duration_end": "2014-01-31T10:28:43.003840", + "period": 900, + "period_start": "2014-01-31T10:15:00", + "period_end": "2014-01-31T10:30:00", + "groupby": { + "project_id": "061a5c91811e4044b7dc86c6136c4f99" + }, + "unit": "instance" + }, + { + "count": 2, + "aggregate": { + "count": 2, + "cardinality/resource_id": 2 + }, + "duration": 0, + "duration_start": "2014-01-31T10:35:15", + "duration_end": "2014-01-31T10:35:15", + "period": 900, + "period_start": "2014-01-31T10:30:00", + "period_end": "2014-01-31T10:45:00", + "groupby": { + "project_id": "061a5c91811e4044b7dc86c6136c4f99" + }, + "unit": "instance" + } + ] + + +Show meter statistics +===================== + +.. rest_method:: GET /v2/meters/{meter_name}/statistics + +Computes and lists statistics for samples in a time range. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - meter_name: meter_name + - q: q + - groupby: groupby + - period: period + - aggregate: aggregate + - limit: limit + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - count: count + - duration_start: duration_start + - min: min + - max: max + - duration_end: duration_end + - period: period + - sum: sum + - duration: duration + - period_end: period_end + - aggregate: aggregate + - period_start: period_start + - avg: avg + - groupby: groupby + - unit: unit + + + +Response Example +---------------- + +.. literalinclude:: ../samples/statistics-list-response.json + :language: javascript + + + + +List meters +=========== + +.. rest_method:: GET /v2/meters + +Lists meters, based on the data recorded so far. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - q: q + - limit: limit + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - user_id: user_id + - name: name + - resource_id: resource_id + - source: source + - meter_id: meter_id + - project_id: project_id + - type: type + - unit: unit + + + +Response Example +---------------- + +.. literalinclude:: ../samples/meters-list-response.json + :language: javascript + + + + +List samples for meter +====================== + +.. rest_method:: GET /v2/meters/{meter_name} + +Lists samples for a meter, by meter name. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - meter_name: meter_name + - q: q + - limit: limit + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - user_id: user_id + - resource_id: resource_id + - timestamp: timestamp + - meter: meter + - volume: volume + - source: source + - recorded_at: recorded_at + - project_id: project_id + - type: type + - id: id + - unit: unit + - metadata: metadata + + + +Response Example +---------------- + +.. literalinclude:: ../samples/samples-list-response.json + :language: javascript + + + + +Add samples to meter +==================== + +.. rest_method:: POST /v2/meters/{meter_name} + +Adds samples to a meter, by meter name. + +If you attempt to add a sample that is not supported, this call +returns the ``409`` response code. + + +Normal response codes: 200 +Error response codes:409, + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - user_id: user_id + - resource_id: resource_id + - timestamp: timestamp + - meter: meter + - volume: volume + - source: source + - recorded_at: recorded_at + - project_id: project_id + - type: type + - id: id + - unit: unit + - metadata: metadata + - meter_name: meter_name + - direct: direct + - samples: samples + +Request Example +--------------- + +.. literalinclude:: ../samples/sample-create-request.json + :language: javascript + + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - user_id: user_id + - resource_id: resource_id + - timestamp: timestamp + - meter: meter + - volume: volume + - source: source + - recorded_at: recorded_at + - project_id: project_id + - type: type + - id: id + - unit: unit + - metadata: metadata + + + +Response Example +---------------- + +.. literalinclude:: ../samples/sample-show-response.json + :language: javascript + + + + diff --git a/api-ref/source/telemetry/v2/parameters.yaml b/api-ref/source/telemetry/v2/parameters.yaml new file mode 100644 index 000000000..10c6a67ef --- /dev/null +++ b/api-ref/source/telemetry/v2/parameters.yaml @@ -0,0 +1,734 @@ +# variables in header +{} + +# variables in path +alarm_id_1: + description: | + The UUID of the alarm. + in: path + required: false + type: string +message_id_1: + description: | + The UUID of the message. + in: path + required: false + type: string +meter_name: + description: | + The name of the meter. + in: path + required: false + type: string +resource_id_2: + description: | + The UUID of the resource. + in: path + required: false + type: string +sample_id: + description: | + The UUID of the sample. + in: path + required: false + type: string + +# variables in query +aggregate: + description: | + A list of selectable aggregation functions to apply. + + For example: + + :: + + GET /v2/meters/METER_NAME/statistics?aggregate.func=cardinality + & + aggregate.param=resource_id + & + aggregate.func=cardinality + & + aggregate.param=project_id + in: query + required: false + type: object +data: + description: | + An alarm within the request body. + in: query + required: false + type: string +direct: + description: | + Indicates whether the samples are POST ed + directly to storage. Set ``?direct=True`` to POST the samples + directly to storage. + in: query + required: false + type: string +groupby: + description: | + Fields for group by aggregation. + in: query + required: false + type: object +limit: + description: | + Limits the maximum number of samples that the response returns. + + For example: + + :: + + GET /v2/events?limit=1000 + in: query + required: false + type: integer +limit_1: + description: | + Requests a page size of items. Returns a number + of items up to a limit value. Use the ``limit`` parameter to make + an initial limited request and use the ID of the last-seen item + from the response as the ``marker`` parameter value in a + subsequent limited request. + in: query + required: false + type: integer +meter_links: + description: | + Set ``?meter_links=1`` to return a self link and + related meter links. + in: query + required: false + type: integer +period: + description: | + The period, in seconds, for which you want + statistics. + in: query + required: false + type: integer +q: + description: | + Filters the response by one or more arguments. + For example: ``?q.field=Foo & q.value=my_text``. + in: query + required: false + type: array +q_1: + description: | + Filters the response by one or more event arguments. + + For example: + + :: + + GET /v2/events?q.field=Foo + & + q.value=my_text + in: query + required: false + type: array +samples: + description: | + A list of samples. + in: query + required: false + type: array +state_1: + description: | + The alarm state. A valid value is ``ok``, + ``alarm``, or ``insufficient data``. + in: query + required: true + type: string + +# variables in body +alarm_actions: + description: | + The list of actions that the alarm performs. + in: body + required: true + type: array +alarm_id: + description: | + The UUID of the alarm. + in: body + required: true + type: string +alarm_storage: + description: | + Defines the capabilities for the storage that + stores persisting alarm definitions. A value of ``true`` indicates + that the capability is available. + in: body + required: true + type: object +alarms:history:query:complex: + description: | + If ``true``, the complex query capability for + alarm history is available for the configured database back end. + in: body + required: true + type: boolean +alarms:history:query:simple: + description: | + If ``true``, the simple query capability for + alarm history is available for the configured database back end. + in: body + required: true + type: boolean +alarms:query:complex: + description: | + If ``true``, the complex query capability for + alarm definitions is available for the configured database back + end. + in: body + required: true + type: boolean +alarms:query:simple: + description: | + If ``true``, the simple query capability for + alarm definitions is available for the configured database back + end. + in: body + required: true + type: boolean +api: + description: | + A set of key and value pairs that contain the API + capabilities for the configured storage driver. + in: body + required: true + type: object +avg: + description: | + The average of all volume values in the data. + in: body + required: true + type: number +combination_rule: + description: | + The rules for the combination alarm type. + in: body + required: true + type: string +count: + description: | + The number of samples seen. + in: body + required: true + type: integer +description: + description: | + Describes the alarm. + in: body + required: true + type: string +duration: + description: | + The number of seconds between the oldest and + newest date and time stamp. + in: body + required: true + type: number +duration_end: + description: | + The date and time in UTC format of the query end + time. + in: body + required: true + type: string +duration_start: + description: | + The date and time in UTC format of the query + start time. + in: body + required: true + type: string +enabled: + description: | + If ``true``, evaluation and actioning is enabled + for the alarm. + in: body + required: true + type: boolean +event_storage: + description: | + If ``true``, the capabilities for the storage + that stores persisting events is available. + in: body + required: true + type: object +event_type: + description: | + The dotted string that represents the event. + in: body + required: true + type: string +events:query:simple: + description: | + If ``true``, the simple query capability for + events is available for the configured database back end. + in: body + required: true + type: boolean +generated: + description: | + The date and time when the event occurred. + in: body + required: true + type: string +id: + description: | + The UUID of the sample. + in: body + required: true + type: string +insufficient_data_actions: + description: | + The list of actions that the alarm performs when + the alarm state is ``insufficient_data``. + in: body + required: true + type: array +links: + description: | + A list that contains a self link and associated + meter links. + in: body + required: true + type: array +max: + description: | + The maximum volume seen in the data. + in: body + required: true + type: number +message_id: + description: | + The UUID of the message. + in: body + required: true + type: string +metadata: + description: | + An arbitrary set of one or more metadata key and + value pairs that are associated with the sample. + in: body + required: true + type: object +metadata_1: + description: | + A set of one or more arbitrary metadata key and + value pairs that are associated with the resource. + in: body + required: true + type: object +meter: + description: | + The meter name. + in: body + required: true + type: string +meter_id: + description: | + The UUID of the meter. + in: body + required: true + type: string +meters:query:complex: + description: | + If ``true``, the complex query capability for + meters is available for the configured database back end. + in: body + required: true + type: boolean +meters:query:metadata: + description: | + If ``true``, the simple query capability for the + metadata of meters is available for the configured database back + end. + in: body + required: true + type: boolean +meters:query:simple: + description: | + If ``true``, the simple query capability for + meters is available for the configured database back end. + in: body + required: true + type: boolean +min: + description: | + The minimum volume seen in the data. + in: body + required: true + type: number +name: + description: | + The name of the alarm. + in: body + required: true + type: string +name_1: + description: | + The meter name. + in: body + required: true + type: string +ok_actions: + description: | + The list of actions that the alarm performs when + the alarm state is ``ok``. + in: body + required: true + type: array +period_end: + description: | + The period end date and time in UTC format. + in: body + required: true + type: string +period_start: + description: | + The period start date and time in UTC format. + in: body + required: true + type: string +project_id: + description: | + The UUID of the project or tenant that owns the + resource. + in: body + required: true + type: string +project_id_1: + description: | + The UUID of the project. + in: body + required: true + type: string +project_id_2: + description: | + The UUID of the owning project or tenant. + in: body + required: true + type: string +raw: + description: | + A dictionary object that stores event messages + for future evaluation. + in: body + required: true + type: object +recorded_at: + description: | + The date and time when the sample was recorded. + in: body + required: true + type: string +repeat_actions: + description: | + If set to ``true``, the alarm notifications are + repeated. Otherwise, this value is ``false``. + in: body + required: true + type: boolean +resource_id: + description: | + The UUID of the resource for which the + measurements are taken. + in: body + required: true + type: string +resource_id_1: + description: | + The UUID of the resource. + in: body + required: true + type: string +resources:query:complex: + description: | + If ``true``, the complex query capability for + resources is available for the configured database back end. + in: body + required: true + type: boolean +resources:query:metadata: + description: | + If ``true``, the simple query capability for the + metadata of resources is available for the configured database + back end. + in: body + required: true + type: boolean +resources:query:simple: + description: | + If ``true``, the simple query capability for + resources is available for the configured database back end. + in: body + required: true + type: boolean +samples:query:complex: + description: | + If ``true``, the complex query capability for + samples is available for the configured database back end. + in: body + required: true + type: boolean +samples:query:metadata: + description: | + If ``true``, the simple query capability for the + metadata of samples is available for the configured database back + end. + in: body + required: true + type: boolean +samples:query:simple: + description: | + If ``true``, the simple query capability for + samples is available for the configured database back end. + in: body + required: true + type: boolean +source: + description: | + The name of the source that identifies where the + sample comes from. + in: body + required: true + type: string +source_1: + description: | + The name of the source from which the meter came. + in: body + required: true + type: string +source_2: + description: | + The name of the source from which the resource + came. + in: body + required: true + type: string +state: + description: | + The state of the alarm. + in: body + required: true + type: string +state_timestamp: + description: | + The date and time of the alarm state. + in: body + required: true + type: string +statistics:aggregation:selectable:avg: + description: | + If ``true``, the ``avg`` capability is available + for the configured database back end. Use the ``avg`` capability + to get average values for samples. + in: body + required: true + type: boolean +statistics:aggregation:selectable:cardinality: + description: | + If ``true``, the ``cardinality`` capability is + available for the configured database back end. Use the + ``cardinality`` capability to get cardinality for samples. + in: body + required: true + type: boolean +statistics:aggregation:selectable:count: + description: | + If ``true``, the ``count`` capability is + available for the configured database back end. Use the ``count`` + capability to calculate the number of samples for a query. + in: body + required: true + type: boolean +statistics:aggregation:selectable:max: + description: | + If ``true``, the ``max`` capability is available + for the configured database back end. . Use the ``max`` capability + to calculate the maximum value for a query. + in: body + required: true + type: boolean +statistics:aggregation:selectable:min: + description: | + If ``true``, the ``min`` capability is available + for the configured database back end. Use the ``min`` capability + to calculate the minimum value for a query. + in: body + required: true + type: boolean +statistics:aggregation:selectable:quartile: + description: | + If ``true``, the ``quartile`` capability is + available for the configured database back end. Use the + ``quartile`` capability to calculate the quartile of sample + volumes for a query. + in: body + required: true + type: boolean +statistics:aggregation:selectable:stddev: + description: | + If ``true``, the ``stddev`` capability is + available for the configured database back end. Use the ``stddev`` + capability to calculate the standard deviation of sample volumes + for a query. + in: body + required: true + type: boolean +statistics:aggregation:selectable:sum: + description: | + If ``true``, the ``sum`` capability is available + for the configured database back end. Use the ``sum`` capability + to calculate the sum of sample volumes for a query. + in: body + required: true + type: boolean +statistics:aggregation:standard: + description: | + If ``true``, the ``standard`` set of aggregation + capability is available for the configured database back end. + in: body + required: true + type: boolean +statistics:groupby: + description: | + If ``true``, the ``groupby`` capability is + available for calculating statistics for the configured database + back end. + in: body + required: true + type: boolean +statistics:query:complex: + description: | + If ``true``, the complex query capability for + statistics is available for the configured database back end. + in: body + required: true + type: boolean +statistics:query:metadata: + description: | + If ``true``, the simple query capability for the + sample metadata that is used to calculate statistics is available + for the configured database back end. + in: body + required: true + type: boolean +statistics:query:simple: + description: | + If ``true``, the simple query capability for + statistics is available for the configured database back end. + in: body + required: true + type: boolean +storage: + description: | + If ``true``, the capabilities for the storage + that stores persisting samples is available. + in: body + required: true + type: object +storage:production_ready: + description: | + If ``true``, the database back end is ready to + use in a production environment. + in: body + required: true + type: boolean +sum: + description: | + The total of all of the volume values seen in the + data. + in: body + required: true + type: number +threshold_rule: + description: | + The rules for the threshold alarm type. + in: body + required: true + type: string +timestamp: + description: | + The date and time in UTC format when the + measurement was made. + in: body + required: true + type: string +timestamp_1: + description: | + The date and time of the alarm. + in: body + required: true + type: string +traits: + description: | + A list of objects. Each object contains key and + value pairs that describe the event. + in: body + required: true + type: array +type: + description: | + The meter type. + in: body + required: true + type: string +type_1: + description: | + The type of the alarm, which is either + ``threshold`` or ``combination``. + in: body + required: true + type: string +type_2: + description: | + The meter type. The type value is gauge, delta, + or cumulative. + in: body + required: true + type: string +unit: + description: | + The unit of measure for the ``volume`` value. + in: body + required: true + type: string +unit_1: + description: | + The unit of measure. + in: body + required: true + type: string +unit_2: + description: | + The unit type of the data set. + in: body + required: true + type: string +user_id: + description: | + The UUID of the user who either created or last + updated the resource. + in: body + required: true + type: string +user_id_1: + description: | + The UUID of the user. + in: body + required: true + type: string +volume: + description: | + The actual measured value. + in: body + required: true + type: number + diff --git a/api-ref/source/telemetry/v2/resources.inc b/api-ref/source/telemetry/v2/resources.inc new file mode 100644 index 000000000..6dc981ceb --- /dev/null +++ b/api-ref/source/telemetry/v2/resources.inc @@ -0,0 +1,95 @@ +.. -*- rst -*- + +========= +Resources +========= + +Lists all and gets information for resources. + + +List resources +============== + +.. rest_method:: GET /v2/resources + +Lists definitions for all resources. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - q: q + - meter_links: meter_links + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - user_id: user_id + - links: links + - resource_id: resource_id + - source: source + - project_id: project_id + - metadata: metadata + + + +Response Example +---------------- + +.. literalinclude:: ../samples/resources-list-response.json + :language: javascript + + + + +Show resource details +===================== + +.. rest_method:: GET /v2/resources/{resource_id} + +Shows details for a resource, by resource ID. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - resource_id: resource_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - user_id: user_id + - links: links + - resource_id: resource_id + - source: source + - project_id: project_id + - metadata: metadata + + + +Response Example +---------------- + +.. literalinclude:: ../samples/resource-show-response.json + :language: javascript + + + diff --git a/api-ref/source/telemetry/v2/samples.inc b/api-ref/source/telemetry/v2/samples.inc new file mode 100644 index 000000000..496224edc --- /dev/null +++ b/api-ref/source/telemetry/v2/samples.inc @@ -0,0 +1,111 @@ +.. -*- rst -*- + +======= +Samples +======= + +Lists all samples and gets information for a sample. + +For list operations, if you do not explicitly set the ``limit`` +query parameter, a default limit is applied. The default limit is +the ``default_api_return_limit`` configuration option value. + + +Show sample details +=================== + +.. rest_method:: GET /v2/samples/{sample_id} + +Shows details for a sample, by sample ID. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - sample_id: sample_id + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - user_id: user_id + - resource_id: resource_id + - timestamp: timestamp + - meter: meter + - volume: volume + - source: source + - recorded_at: recorded_at + - project_id: project_id + - type: type + - id: id + - unit: unit + - metadata: metadata + + + +Response Example +---------------- + +.. literalinclude:: ../samples/sample-show-response.json + :language: javascript + + + + +List samples +============ + +.. rest_method:: GET /v2/samples + +Lists all known samples, based on the data recorded so far. + + +Normal response codes: 200 +Error response codes: + + +Request +------- + +.. rest_parameters:: parameters.yaml + + - q: q + - limit: limit + + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - user_id: user_id + - resource_id: resource_id + - timestamp: timestamp + - meter: meter + - volume: volume + - source: source + - recorded_at: recorded_at + - project_id: project_id + - type: type + - id: id + - unit: unit + - metadata: metadata + + + +Response Example +---------------- + +.. literalinclude:: ../samples/samples-list-response.json + :language: javascript + + + diff --git a/api-ref/source/telemetry/v2/samples/alarm-show-response.json b/api-ref/source/telemetry/v2/samples/alarm-show-response.json new file mode 100644 index 000000000..802d472ec --- /dev/null +++ b/api-ref/source/telemetry/v2/samples/alarm-show-response.json @@ -0,0 +1,24 @@ +{ + "alarm_actions": [ + "http://site:8000/alarm" + ], + "alarm_id": null, + "combination_rule": null, + "description": "An alarm", + "enabled": true, + "insufficient_data_actions": [ + "http://site:8000/nodata" + ], + "name": "SwiftObjectAlarm", + "ok_actions": [ + "http://site:8000/ok" + ], + "project_id": "c96c887c216949acbdfbd8b494863567", + "repeat_actions": false, + "state": "ok", + "state_timestamp": "2013-11-21T12:33:08.486228", + "threshold_rule": null, + "timestamp": "2013-11-21T12:33:08.486221", + "type": "threshold", + "user_id": "c96c887c216949acbdfbd8b494863567" +} diff --git a/api-ref/source/telemetry/v2/samples/alarm-show-response.xml b/api-ref/source/telemetry/v2/samples/alarm-show-response.xml new file mode 100644 index 000000000..61ae48bba --- /dev/null +++ b/api-ref/source/telemetry/v2/samples/alarm-show-response.xml @@ -0,0 +1,25 @@ + + + + http://site:8000/alarm + + + + An alarm + true + + http://site:8000/nodata + + SwiftObjectAlarm + + http://site:8000/ok + + c96c887c216949acbdfbd8b494863567 + false + ok + 2013-11-21T12:33:08.486228 + + 2013-11-21T12:33:08.486221 + threshold + c96c887c216949acbdfbd8b494863567 + diff --git a/api-ref/source/telemetry/v2/samples/alarms-list-response.json b/api-ref/source/telemetry/v2/samples/alarms-list-response.json new file mode 100644 index 000000000..760b68b92 --- /dev/null +++ b/api-ref/source/telemetry/v2/samples/alarms-list-response.json @@ -0,0 +1,26 @@ +[ + { + "alarm_actions": [ + "http://site:8000/alarm" + ], + "alarm_id": null, + "combination_rule": null, + "description": "An alarm", + "enabled": true, + "insufficient_data_actions": [ + "http://site:8000/nodata" + ], + "name": "SwiftObjectAlarm", + "ok_actions": [ + "http://site:8000/ok" + ], + "project_id": "c96c887c216949acbdfbd8b494863567", + "repeat_actions": false, + "state": "ok", + "state_timestamp": "2013-11-21T12:33:08.486228", + "threshold_rule": null, + "timestamp": "2013-11-21T12:33:08.486221", + "type": "threshold", + "user_id": "c96c887c216949acbdfbd8b494863567" + } +] diff --git a/api-ref/source/telemetry/v2/samples/alarms-list-response.xml b/api-ref/source/telemetry/v2/samples/alarms-list-response.xml new file mode 100644 index 000000000..99ca555e9 --- /dev/null +++ b/api-ref/source/telemetry/v2/samples/alarms-list-response.xml @@ -0,0 +1,27 @@ + + + + + http://site:8000/alarm + + + + An alarm + true + + http://site:8000/nodata + + SwiftObjectAlarm + + http://site:8000/ok + + c96c887c216949acbdfbd8b494863567 + false + ok + 2013-11-21T12:33:08.486228 + + 2013-11-21T12:33:08.486221 + threshold + c96c887c216949acbdfbd8b494863567 + + diff --git a/api-ref/source/telemetry/v2/samples/capabilities-list-response.json b/api-ref/source/telemetry/v2/samples/capabilities-list-response.json new file mode 100644 index 000000000..8ec23e799 --- /dev/null +++ b/api-ref/source/telemetry/v2/samples/capabilities-list-response.json @@ -0,0 +1,40 @@ +{ + "alarm_storage": { + "storage:production_ready": true + }, + "api": { + "alarms:history:query:complex": true, + "alarms:history:query:simple": true, + "alarms:query:complex": true, + "alarms:query:simple": true, + "events:query:simple": true, + "meters:query:complex": false, + "meters:query:metadata": true, + "meters:query:simple": true, + "resources:query:complex": false, + "resources:query:metadata": true, + "resources:query:simple": true, + "samples:query:complex": true, + "samples:query:metadata": true, + "samples:query:simple": true, + "statistics:aggregation:selectable:avg": true, + "statistics:aggregation:selectable:cardinality": true, + "statistics:aggregation:selectable:count": true, + "statistics:aggregation:selectable:max": true, + "statistics:aggregation:selectable:min": true, + "statistics:aggregation:selectable:quartile": false, + "statistics:aggregation:selectable:stddev": true, + "statistics:aggregation:selectable:sum": true, + "statistics:aggregation:standard": true, + "statistics:groupby": true, + "statistics:query:complex": false, + "statistics:query:metadata": true, + "statistics:query:simple": true + }, + "event_storage": { + "storage:production_ready": true + }, + "storage": { + "storage:production_ready": true + } +} diff --git a/api-ref/source/telemetry/v2/samples/capabilities-list-response.xml b/api-ref/source/telemetry/v2/samples/capabilities-list-response.xml new file mode 100644 index 000000000..d286c8cb2 --- /dev/null +++ b/api-ref/source/telemetry/v2/samples/capabilities-list-response.xml @@ -0,0 +1,131 @@ + + + + + statistics:query:complex + false + + + alarms:history:query:simple + true + + + meters:query:metadata + true + + + alarms:query:simple + true + + + resources:query:simple + true + + + statistics:aggregation:selectable:quartile + false + + + statistics:query:simple + true + + + statistics:aggregation:selectable:count + true + + + statistics:aggregation:selectable:min + true + + + statistics:aggregation:selectable:sum + true + + + alarms:query:complex + true + + + meters:query:complex + false + + + statistics:groupby + true + + + alarms:history:query:complex + true + + + meters:query:simple + true + + + samples:query:metadata + true + + + statistics:query:metadata + true + + + samples:query:simple + true + + + resources:query:metadata + true + + + statistics:aggregation:selectable:max + true + + + samples:query:complex + true + + + statistics:aggregation:standard + true + + + events:query:simple + true + + + statistics:aggregation:selectable:stddev + true + + + statistics:aggregation:selectable:avg + true + + + statistics:aggregation:selectable:cardinality + true + + + resources:query:complex + false + + + + + storage:production_ready + true + + + + + storage:production_ready + true + + + + + storage:production_ready + true + + + diff --git a/api-ref/source/telemetry/v2/samples/event-show-response.json b/api-ref/source/telemetry/v2/samples/event-show-response.json new file mode 100644 index 000000000..5c736a074 --- /dev/null +++ b/api-ref/source/telemetry/v2/samples/event-show-response.json @@ -0,0 +1,18 @@ +{ + "raw": {}, + "traits": [ + { + "type": "string", + "name": "action", + "value": "read" + }, + { + "type": "string", + "name": "eventTime", + "value": "2015-10-28T20:26:58.545477+0000" + } + ], + "generated": "2015-10-28T20:26:58.546933", + "message_id": "bae43de6-e9fa-44ad-8c15-40a852584444", + "event_type": "http.request" +} diff --git a/api-ref/source/telemetry/v2/samples/events-list-response.json b/api-ref/source/telemetry/v2/samples/events-list-response.json new file mode 100644 index 000000000..4bd2dafd8 --- /dev/null +++ b/api-ref/source/telemetry/v2/samples/events-list-response.json @@ -0,0 +1,20 @@ +[ + { + "raw": {}, + "traits": [ + { + "type": "string", + "name": "action", + "value": "read" + }, + { + "type": "string", + "name": "eventTime", + "value": "2015-10-28T20:26:58.545477+0000" + } + ], + "generated": "2015-10-28T20:26:58.546933", + "message_id": "bae43de6-e9fa-44ad-8c15-40a852584444", + "event_type": "http.request" + } +] diff --git a/api-ref/source/telemetry/v2/samples/meters-list-response.json b/api-ref/source/telemetry/v2/samples/meters-list-response.json new file mode 100644 index 000000000..f40c3c606 --- /dev/null +++ b/api-ref/source/telemetry/v2/samples/meters-list-response.json @@ -0,0 +1,12 @@ +[ + { + "meter_id": "YmQ5NDMxYzEtOGQ2OS00YWQzLTgwM2EtOGQ0YTZiODlmZDM2K2luc3RhbmNl", + "name": "instance", + "project_id": "35b17138-b364-4e6a-a131-8f3099c5be68", + "resource_id": "bd9431c1-8d69-4ad3-803a-8d4a6b89fd36", + "source": "openstack", + "type": "gauge", + "unit": "instance", + "user_id": "efd87807-12d2-4b38-9c70-5f5c2ac427ff" + } +] diff --git a/api-ref/source/telemetry/v2/samples/meters-list-response.xml b/api-ref/source/telemetry/v2/samples/meters-list-response.xml new file mode 100644 index 000000000..045f36683 --- /dev/null +++ b/api-ref/source/telemetry/v2/samples/meters-list-response.xml @@ -0,0 +1,13 @@ + + + + instance + gauge + instance + bd9431c1-8d69-4ad3-803a-8d4a6b89fd36 + 35b17138-b364-4e6a-a131-8f3099c5be68 + efd87807-12d2-4b38-9c70-5f5c2ac427ff + openstack + YmQ5NDMxYzEtOGQ2OS00YWQzLTgwM2EtOGQ0YTZiODlmZDM2K2luc3RhbmNl + + diff --git a/api-ref/source/telemetry/v2/samples/resource-show-response.json b/api-ref/source/telemetry/v2/samples/resource-show-response.json new file mode 100644 index 000000000..8679b5e78 --- /dev/null +++ b/api-ref/source/telemetry/v2/samples/resource-show-response.json @@ -0,0 +1,20 @@ +{ + "links": [ + { + "href": "http://localhost:8777/v2/resources/bd9431c1-8d69-4ad3-803a-8d4a6b89fd36", + "rel": "self" + }, + { + "href": "http://localhost:8777/v2/meters/volume?q.field=resource_id&q.value=bd9431c1-8d69-4ad3-803a-8d4a6b89fd36", + "rel": "volume" + } + ], + "metadata": { + "name1": "value1", + "name2": "value2" + }, + "project_id": "35b17138-b364-4e6a-a131-8f3099c5be68", + "resource_id": "bd9431c1-8d69-4ad3-803a-8d4a6b89fd36", + "source": "openstack", + "user_id": "efd87807-12d2-4b38-9c70-5f5c2ac427ff" +} diff --git a/api-ref/source/telemetry/v2/samples/resource-show-response.xml b/api-ref/source/telemetry/v2/samples/resource-show-response.xml new file mode 100644 index 000000000..0516d5400 --- /dev/null +++ b/api-ref/source/telemetry/v2/samples/resource-show-response.xml @@ -0,0 +1,27 @@ + + + bd9431c1-8d69-4ad3-803a-8d4a6b89fd36 + 35b17138-b364-4e6a-a131-8f3099c5be68 + efd87807-12d2-4b38-9c70-5f5c2ac427ff + + + name2 + value2 + + + name1 + value1 + + + + + http://localhost:8777/v2/resources/bd9431c1-8d69-4ad3-803a-8d4a6b89fd36 + self + + + http://localhost:8777/v2/meters/volume?q.field=resource_id&q.value=bd9431c1-8d69-4ad3-803a-8d4a6b89fd36 + volume + + + openstack + diff --git a/api-ref/source/telemetry/v2/samples/resources-list-response.json b/api-ref/source/telemetry/v2/samples/resources-list-response.json new file mode 100644 index 000000000..3655077ee --- /dev/null +++ b/api-ref/source/telemetry/v2/samples/resources-list-response.json @@ -0,0 +1,22 @@ +[ + { + "links": [ + { + "href": "http://localhost:8777/v2/resources/bd9431c1-8d69-4ad3-803a-8d4a6b89fd36", + "rel": "self" + }, + { + "href": "http://localhost:8777/v2/meters/volume?q.field=resource_id&q.value=bd9431c1-8d69-4ad3-803a-8d4a6b89fd36", + "rel": "volume" + } + ], + "metadata": { + "name1": "value1", + "name2": "value2" + }, + "project_id": "35b17138-b364-4e6a-a131-8f3099c5be68", + "resource_id": "bd9431c1-8d69-4ad3-803a-8d4a6b89fd36", + "source": "openstack", + "user_id": "efd87807-12d2-4b38-9c70-5f5c2ac427ff" + } +] diff --git a/api-ref/source/telemetry/v2/samples/resources-list-response.xml b/api-ref/source/telemetry/v2/samples/resources-list-response.xml new file mode 100644 index 000000000..9041d6e7a --- /dev/null +++ b/api-ref/source/telemetry/v2/samples/resources-list-response.xml @@ -0,0 +1,29 @@ + + + + bd9431c1-8d69-4ad3-803a-8d4a6b89fd36 + 35b17138-b364-4e6a-a131-8f3099c5be68 + efd87807-12d2-4b38-9c70-5f5c2ac427ff + + + name2 + value2 + + + name1 + value1 + + + + + http://localhost:8777/v2/resources/bd9431c1-8d69-4ad3-803a-8d4a6b89fd36 + self + + + http://localhost:8777/v2/meters/volume?q.field=resource_id&q.value=bd9431c1-8d69-4ad3-803a-8d4a6b89fd36 + volume + + + openstack + + diff --git a/api-ref/source/telemetry/v2/samples/sample-create-request.json b/api-ref/source/telemetry/v2/samples/sample-create-request.json new file mode 100644 index 000000000..38a94eedd --- /dev/null +++ b/api-ref/source/telemetry/v2/samples/sample-create-request.json @@ -0,0 +1,17 @@ +{ + "id": "8db08c68-bc70-11e4-a8c4-fa163e1d1a9b", + "metadata": { + "name1": "value1", + "name2": "value2" + }, + "meter": "instance", + "project_id": "35b17138-b364-4e6a-a131-8f3099c5be68", + "recorded_at": "2015-02-24T22:00:32.747930", + "resource_id": "bd9431c1-8d69-4ad3-803a-8d4a6b89fd36", + "source": "openstack", + "timestamp": "2015-02-24T22:00:32.747930", + "type": "gauge", + "unit": "instance", + "user_id": "efd87807-12d2-4b38-9c70-5f5c2ac427ff", + "volume": 1.0 +} diff --git a/api-ref/source/telemetry/v2/samples/sample-create-request.xml b/api-ref/source/telemetry/v2/samples/sample-create-request.xml new file mode 100644 index 000000000..21af1af55 --- /dev/null +++ b/api-ref/source/telemetry/v2/samples/sample-create-request.xml @@ -0,0 +1,23 @@ + + 8db08c68-bc70-11e4-a8c4-fa163e1d1a9b + instance + gauge + instance + 1.0 + efd87807-12d2-4b38-9c70-5f5c2ac427ff + 35b17138-b364-4e6a-a131-8f3099c5be68 + bd9431c1-8d69-4ad3-803a-8d4a6b89fd36 + openstack + 2015-02-24T22:00:32.747930 + 2015-02-24T22:00:32.747930 + + + name2 + value2 + + + name1 + value1 + + + diff --git a/api-ref/source/telemetry/v2/samples/sample-show-response.json b/api-ref/source/telemetry/v2/samples/sample-show-response.json new file mode 100644 index 000000000..9b3df91b2 --- /dev/null +++ b/api-ref/source/telemetry/v2/samples/sample-show-response.json @@ -0,0 +1,17 @@ +{ + "id": "9b23b398-6139-11e5-97e9-bc764e045bf6", + "metadata": { + "name1": "value1", + "name2": "value2" + }, + "meter": "instance", + "project_id": "35b17138-b364-4e6a-a131-8f3099c5be68", + "recorded_at": "2015-09-22T14:52:54.850725", + "resource_id": "bd9431c1-8d69-4ad3-803a-8d4a6b89fd36", + "source": "openstack", + "timestamp": "2015-09-22T14:52:54.850718", + "type": "gauge", + "unit": "instance", + "user_id": "efd87807-12d2-4b38-9c70-5f5c2ac427ff", + "volume": 1 +} diff --git a/api-ref/source/telemetry/v2/samples/sample-show-response.xml b/api-ref/source/telemetry/v2/samples/sample-show-response.xml new file mode 100644 index 000000000..a11b74fb4 --- /dev/null +++ b/api-ref/source/telemetry/v2/samples/sample-show-response.xml @@ -0,0 +1,24 @@ + + + 9b23b398-6139-11e5-97e9-bc764e045bf6 + instance + gauge + instance + 1.0 + efd87807-12d2-4b38-9c70-5f5c2ac427ff + 35b17138-b364-4e6a-a131-8f3099c5be68 + bd9431c1-8d69-4ad3-803a-8d4a6b89fd36 + openstack + 2015-09-22T14:52:54.850718 + 2015-09-22T14:52:54.850725 + + + name2 + value2 + + + name1 + value1 + + + diff --git a/api-ref/source/telemetry/v2/samples/samples-list-response.json b/api-ref/source/telemetry/v2/samples/samples-list-response.json new file mode 100644 index 000000000..7d8e5bc7e --- /dev/null +++ b/api-ref/source/telemetry/v2/samples/samples-list-response.json @@ -0,0 +1,19 @@ +[ + { + "id": "9b23b398-6139-11e5-97e9-bc764e045bf6", + "metadata": { + "name1": "value1", + "name2": "value2" + }, + "meter": "instance", + "project_id": "35b17138-b364-4e6a-a131-8f3099c5be68", + "recorded_at": "2015-09-22T14:52:54.850725", + "resource_id": "bd9431c1-8d69-4ad3-803a-8d4a6b89fd36", + "source": "openstack", + "timestamp": "2015-09-22T14:52:54.850718", + "type": "gauge", + "unit": "instance", + "user_id": "efd87807-12d2-4b38-9c70-5f5c2ac427ff", + "volume": 1 + } +] diff --git a/api-ref/source/telemetry/v2/samples/samples-list-response.xml b/api-ref/source/telemetry/v2/samples/samples-list-response.xml new file mode 100644 index 000000000..04f441752 --- /dev/null +++ b/api-ref/source/telemetry/v2/samples/samples-list-response.xml @@ -0,0 +1,26 @@ + + + + 9b23b398-6139-11e5-97e9-bc764e045bf6 + instance + gauge + instance + 1.0 + efd87807-12d2-4b38-9c70-5f5c2ac427ff + 35b17138-b364-4e6a-a131-8f3099c5be68 + bd9431c1-8d69-4ad3-803a-8d4a6b89fd36 + openstack + 2015-09-22T14:52:54.850718 + 2015-09-22T14:52:54.850725 + + + name2 + value2 + + + name1 + value1 + + + + diff --git a/api-ref/source/telemetry/v2/samples/statistics-list-response.json b/api-ref/source/telemetry/v2/samples/statistics-list-response.json new file mode 100644 index 000000000..1d8e1bc8f --- /dev/null +++ b/api-ref/source/telemetry/v2/samples/statistics-list-response.json @@ -0,0 +1,16 @@ +[ + { + "avg": 4.5, + "count": 10, + "duration": 300, + "duration_end": "2013-01-04T16:47:00", + "duration_start": "2013-01-04T16:42:00", + "max": 9, + "min": 1, + "period": 7200, + "period_end": "2013-01-04T18:00:00", + "period_start": "2013-01-04T16:00:00", + "sum": 45, + "unit": "GiB" + } +] diff --git a/api-ref/source/telemetry/v2/samples/statistics-list-response.xml b/api-ref/source/telemetry/v2/samples/statistics-list-response.xml new file mode 100644 index 000000000..503e068de --- /dev/null +++ b/api-ref/source/telemetry/v2/samples/statistics-list-response.xml @@ -0,0 +1,17 @@ + + + + 4.5 + 10 + 300.0 + 2013-01-04T16:47:00 + 2013-01-04T16:42:00 + 9.0 + 1.0 + 7200 + 2013-01-04T18:00:00 + 2013-01-04T16:00:00 + 45.0 + GiB + +