summaryrefslogtreecommitdiff
path: root/api-ref/source/baremetal-api-v1-nodes.inc
diff options
context:
space:
mode:
Diffstat (limited to 'api-ref/source/baremetal-api-v1-nodes.inc')
-rw-r--r--api-ref/source/baremetal-api-v1-nodes.inc358
1 files changed, 259 insertions, 99 deletions
diff --git a/api-ref/source/baremetal-api-v1-nodes.inc b/api-ref/source/baremetal-api-v1-nodes.inc
index 03e35f490..6bb3f5c20 100644
--- a/api-ref/source/baremetal-api-v1-nodes.inc
+++ b/api-ref/source/baremetal-api-v1-nodes.inc
@@ -4,213 +4,373 @@
Nodes (nodes)
=============
+List, Searching, Creating, Updating, and Deleting of bare metal Node resources
+are done through the ``/v1/nodes`` resource. There are also several sub-resources,
+which allow further actions to be performed on a bare metal Node.
+A Node is the canonical representation of a discretely allocatable server,
+capable of running an Operating System. Each Node must be associated with a
+``driver``; this informs Ironic what protocol to use when managing the Node.
-
-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
-
-
-
-
-
-
+Beginning with API microversion 1.6, a Node may be referenced both by its UUID
+and by a unique human-readable "name" in any request. Throughout this
+documentation, this is referred to as the ``node_ident``. Responses clearly
+indicate whether a given field is a ``uuid`` or a ``name``.
+Create Node
+===========
+.. rest_method:: POST /v1/nodes
+Creates a new Node resource.
-Update node
-===========
+This method requires that a ``driver`` be supplied in the request body. Most
+subresources of a Node (eg, ``properties``, ``driver_info``, etc) may be
+supplied when the Node is created, or the resource may be updated later.
-.. rest_method:: PATCH /v1/nodes/{node_id}
+API microversion 1.2 introduced the new ``available`` state name, which replaced
+``None`` as the status of an unprovisioned Node. All clients should be updated to
+use the new ``available`` state name.
-Updates a node.
+Nodes in the ``available`` state may have workloads provisioned on them; they are
+"available" for use.
+API microversion 1.11 changed the default initial state of newly-created Nodes
+from ``available`` to ``enroll``. This provides users a workflow to verify the
+manageability of a Node and perform necessary operational functions (eg, building
+a RAID array) before making the Node available for provisioning.
-Normal response codes: 200
-Error response codes:413,415,405,404,403,401,400,503,409,
+Normal response codes: 201
+.. TODO: add error codes
Request
-------
.. rest_parameters:: parameters.yaml
- - node_id: node_id
-
-
+ - driver: r_driver_name
+**Example Node creation request:**
-Response Example
-----------------
-
-.. literalinclude:: samples/node-show-response.json
+.. literalinclude:: samples/node-create-request.json
:language: javascript
+Response
+--------
+
+The response will contain the complete Node record, with the supplied data,
+and any defaults added for non-specified fields. Most fields default to "null"
+or "".
+API microversion 1.5 introduced the ``name`` field.
+API microversion 1.7 introduced the ``clean_step`` field`
+API microversion 1.12 introduced support for the ``raid_config`` and
+``target_raid_config`` fields.
+The list and example below are representative of the response as of API microversion 1.16.
+.. rest_parameters:: parameters.yaml
+ - uuid: node_uuid
+ - name: node_name
+ - power_state: power_state
+ - target_power_state: target_power_state
+ - provision_state: provision_state
+ - target_provision_state: target_provision_state
+ - maintenance: maintenance
+ - maintenance_reason: maintenance_reason
+ - last_error: last_error
+ - reservation: reservation
+ - driver: driver_name
+ - driver_info: driver_info
+ - driver_internal_info: driver_internal_info
+ - properties: n_properties
+ - instance_info: instance_info
+ - instance_uuid: instance_uuid
+ - chassis_uuid: chassis_uuid
+ - extra: extra
+ - console_enabled: console_enabled
+ - raid_config: raid_config
+ - target_raid_config: target_raid_config
+ - clean_step: clean_step
+ - links: links
+ - ports: n_ports
+ - states: n_states
+
+**Example JSON representation of a Node:**
+
+.. literalinclude:: samples/node-create-response.json
+ :language: javascript
+List Nodes
+==========
+.. rest_method:: GET /v1/nodes
+Return a list of bare metal Nodes, with some useful information about
+each Node. Some filtering is possible by passing in flags with the request.
+By default, this query will return the name, uuid, instance uuid, power state,
+provision state, and maintenance setting for each Node.
-Delete node
-===========
+API microversion 1.8 added the ``fields`` Request parameter. When specified,
+this causes the content of the Response to include only the specified fields,
+rather than the default set.
-.. rest_method:: DELETE /v1/nodes/{node_id}
+API microversion 1.9 added the ``provision_state`` Request parameter, allowing
+the list of returned Nodes to be filtered by their current state.
-Deletes a node.
+API microversion 1.16 added the ``driver`` Request parameter, allowing
+the list of returned Nodes to be filtered by their driver name.
-Error response codes:204,413,415,405,404,403,401,400,503,409,
+Normal response codes: 200
+.. TODO: add error codes
Request
-------
.. rest_parameters:: parameters.yaml
- - node_id: node_id
-
-
-
-
-
-
-
-
+ - instance_uuid: r_instance_uuid
+ - maintenance: r_maintenance
+ - associated: r_associated
+ - provision_state: r_provision_state
+ - driver: r_driver
+ - fields: fields
+ - limit: limit
+ - marker: marker
+ - sort_dir: sort_dir
+ - sort_key: sort_key
+Response
+--------
+.. rest_parameters:: parameters.yaml
+ - uuid: uuid
+ - name: node_name
+ - instance_uuid: instance_uuid
+ - power_state: power_state
+ - provision_state: provision_state
+ - maintenance: maintenance
+ - links: links
+**Example list of Nodes:**
+.. literalinclude:: samples/nodes-list-response.json
+ :language: javascript
-List nodes with details
-=======================
+List Nodes Detailed
+===================
.. rest_method:: GET /v1/nodes/detail
-Lists all nodes with details.
+Return a list of bare metal Nodes with complete details. Some filtering is
+possible by passing in flags with the request.
+This method is particularly useful to locate the Node associated to a given
+Nova instance, eg. with a request to ``v1/nodes/detail?instance_uuid={NOVA INSTANCE UUID}``
Normal response codes: 200
-Error response codes:413,405,404,403,401,400,503,
+.. TODO: add error codes
Request
-------
+.. rest_parameters:: parameters.yaml
+ - instance_uuid: r_instance_uuid
+ - maintenance: r_maintenance
+ - associated: r_associated
+ - provision_state: r_provision_state
+ - driver: r_driver
+ - limit: limit
+ - marker: marker
+ - sort_dir: sort_dir
+ - sort_key: sort_key
+Response
+--------
+.. rest_parameters:: parameters.yaml
-Response Example
-----------------
+ - uuid: node_uuid
+ - name: node_name
+ - power_state: power_state
+ - target_power_state: target_power_state
+ - provision_state: provision_state
+ - target_provision_state: target_provision_state
+ - maintenance: maintenance
+ - maintenance_reason: maintenance_reason
+ - last_error: last_error
+ - reservation: reservation
+ - driver: driver_name
+ - driver_info: driver_info
+ - driver_internal_info: driver_internal_info
+ - properties: n_properties
+ - instance_info: instance_info
+ - instance_uuid: instance_uuid
+ - chassis_uuid: chassis_uuid
+ - extra: extra
+ - console_enabled: console_enabled
+ - raid_config: raid_config
+ - target_raid_config: target_raid_config
+ - clean_step: clean_step
+ - links: links
+ - ports: n_ports
+ - states: n_states
+
+**Example detailed list of Nodes:**
.. literalinclude:: samples/nodes-list-details-response.json
:language: javascript
+Show Node Details
+=================
+.. rest_method:: GET /v1/nodes/{node_ident}
+Shows details for a node. By default, this will return the full representation
+of the resource; an optional ``fields`` parameter can be supplied to return
+only the specified set.
+Normal response codes: 200
-
-
-
-
-
-Create node
-===========
-
-.. rest_method:: POST /v1/nodes
-
-Creates a node.
-
-Error response codes:201,413,415,405,404,403,401,400,503,409,
-
+.. TODO: add error codes
Request
-------
+.. rest_parameters:: parameters.yaml
+ - node_ident: node_ident
+ - fields: fields
+Response
+--------
+.. rest_parameters:: parameters.yaml
+ - uuid: node_uuid
+ - name: node_name
+ - power_state: power_state
+ - target_power_state: target_power_state
+ - provision_state: provision_state
+ - target_provision_state: target_provision_state
+ - maintenance: maintenance
+ - maintenance_reason: maintenance_reason
+ - last_error: last_error
+ - reservation: reservation
+ - driver: driver_name
+ - driver_info: driver_info
+ - driver_internal_info: driver_internal_info
+ - properties: n_properties
+ - instance_info: instance_info
+ - instance_uuid: instance_uuid
+ - chassis_uuid: chassis_uuid
+ - extra: extra
+ - console_enabled: console_enabled
+ - raid_config: raid_config
+ - target_raid_config: target_raid_config
+ - clean_step: clean_step
+ - links: links
+ - ports: n_ports
+ - states: n_states
+
+**Example JSON representation of a Node:**
+.. literalinclude:: samples/node-show-response.json
+ :language: javascript
+Update Node
+===========
+.. rest_method:: PATCH /v1/nodes/{node_ident}
+Updates the information stored about a Node.
-
-
-
-
-
-List nodes
-==========
-
-.. rest_method:: GET /v1/nodes
-
-Lists all nodes.
-
+Note that this endpoint can not be used to request state changes, which are
+managed through sub-resources.
Normal response codes: 200
-Error response codes:413,405,404,403,401,400,503,
+.. TODO: add error codes
Request
-------
+The BODY of the PATCH request must be a JSON PATCH document, adhering to
+`RFC 6902 <https://tools.ietf.org/html/rfc6902>`_.
+.. rest_parameters:: parameters.yaml
+ - node_ident: node_ident
+**Example PATCH document updating Node driver_info:**
-Response Example
-----------------
+.. literalinclude:: samples/node-update-driver-info-request.json
-.. literalinclude:: samples/nodes-list-response.json
- :language: javascript
+Response
+--------
+
+.. rest_parameters:: parameters.yaml
+ - uuid: node_uuid
+ - name: node_name
+ - power_state: power_state
+ - target_power_state: target_power_state
+ - provision_state: provision_state
+ - target_provision_state: target_provision_state
+ - maintenance: maintenance
+ - maintenance_reason: maintenance_reason
+ - last_error: last_error
+ - reservation: reservation
+ - driver: driver_name
+ - driver_info: driver_info
+ - driver_internal_info: driver_internal_info
+ - properties: n_properties
+ - instance_info: instance_info
+ - instance_uuid: instance_uuid
+ - chassis_uuid: chassis_uuid
+ - extra: extra
+ - console_enabled: console_enabled
+ - raid_config: raid_config
+ - target_raid_config: target_raid_config
+ - clean_step: clean_step
+ - links: links
+ - ports: n_ports
+ - states: n_states
+
+**Example JSON representation of a Node:**
+
+.. literalinclude:: samples/node-update-driver-info-response.json
+ :language: javascript
+Delete Node
+===========
+.. rest_method:: DELETE /v1/nodes/{node_ident}
+Deletes a node.
+Normal response codes: 204
+.. TODO: add error codes
+Request
+-------
+.. rest_parameters:: parameters.yaml
+ - node_ident: node_ident \ No newline at end of file