valence/api-ref/source/valence-api-v1-nodes.inc
Nate Potter 5ce2d68ed7 Implement Node Manage
This commit implements the ability for an admin to manage
existing RSD composed nodes with Valence. In the event that
an RSD pod manager contains composed nodes that were created
without Valence, it's possible to use this function to
add those nodes to the Valence database.

Change-Id: I13e8076fb718ebd356cb7b4839cfb4b83c798672
Implements-blueprint: manage-node
2017-04-06 11:10:09 -07:00

356 lines
7.5 KiB
ReStructuredText

.. -*- rst -*-
==================
Composed nodes
==================
List, Searching, Creating, Updating, and Deleting of Composed Node resources
are done through the ``/v1/nodes`` resource.
A Composed node may be referenced both by its UUID and by a unique "name".
Send feedback to Valence team or [chester.kuo@gmail.com]
Create Node
===========
.. rest_method:: POST /v1/nodes
Creates a new Composed node with specific resources or empty request in json request
file.
Normal response codes: 200
Error response codes: badRequest(400), unauthorized(401), forbidden(403)
Request
-------
.. rest_parameters:: parameters.yaml
- name: node_request_name
- description: node_request_description
- flavor_id: flavor_uuid
- properties: node_properties
**Example Node creation request:**
.. literalinclude:: mockup/composed-node-create-request.json
:language: javascript
Response
--------
The response will contain the complete node uuid and name record
The list and example below are representative of the response as of API
.. rest_parameters:: parameters.yaml
- uuid: node_uuid
- name: node_name
- index: node_index
- links: links
**Example JSON representation of a Node:**
.. literalinclude:: mockup/composed-node-create-response.json
:language: javascript
List Nodes
==========
.. rest_method:: GET /v1/nodes/
Return a list of Composed nodes.
some filtering is possible by passing in flags with the request.
By default, this query will return node object with the name, uuid and node_power_state
Normal response codes: 200
Error response codes: badRequest(400), unauthorized(401), forbidden(403)
Request
-------
Response
--------
.. rest_parameters:: parameters.yaml
- uuid: node_uuid
- name: node_name
- index: node_index
- node_power_state: node_power_state
- links: links
**Example list of composed nodes:**
.. literalinclude:: mockup/composed-nodes-list-response.json
:language: javascript
List Composed node Details
=============================
.. rest_method:: GET /v1/nodes/{node-ident}
Shows details for a composed node.
This will return the full representation of the resources
Normal response codes: 200
Error response codes: badRequest(400), unauthorized(401), forbidden(403)
Request
-------
.. rest_parameters:: parameters.yaml
- node_ident: node_ident
- fields: fields
Response
--------
.. rest_parameters:: parameters.yaml
- uuid: node_uuid
- description: node_description
- name: node_name
- node_power_state: node_power_state
- node_state: node_state
- metadata: node_metadata
- boot_source: node_boot_source
- target_boot_source: node_target_boot_source
- pooled_group_id: pooled_group_id
- health_status: node_health_status
- url_id : node_url_id
- created_at: created_at
- updated_at: updated_at
- provision_state: node_provision_state
- pod_uuid: pod_uuid
- links: links
**Example JSON representation of a Node:**
.. literalinclude:: mockup/composed-node-get-response.json
:language: javascript
Update Node
===========
.. rest_method:: PATCH /v1/nodes/{node_ident}
Updates the property stored about a composed node.
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: badRequest(400), unauthorized(401), forbidden(403), 404
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 composed node :**
.. literalinclude:: mockup/node-update-name-info-request.json
Response
--------
.. rest_parameters:: parameters.yaml
- uuid: node_uuid
- description: node_description
- name: node_name
- node_power_state: node_power_state
- metadata: node_metadata
- boot_source: node_boot_source
- target_boot_source: node_target_boot_source
- pooled_group_id: pooled_group_id
- health_status: node_health_status
- url_id : node_url_id
- created_at: created_at
- updated_at: updated_at
- provision_state: node_provision_state
- links: links
**Example JSON representation of a Node:**
.. literalinclude:: mockup/composed-node-get-response.json
:language: javascript
Response
--------
There is no body content for the response of a successful POST operation.
Delete Node
===========
.. rest_method:: DELETE /v1/nodes/{node_ident}
Deletes a node.
Normal response codes: 204
Error response codes: 401,403, 404 ,409
Request
-------
.. rest_parameters:: parameters.yaml
- node_ident: node_ident
Node action
===========
.. rest_method:: POST /v1/nodes/{node_ident}/action
Send a POST cmd to a composed node, includes reset node state and set boot source.
Normal response codes: 204
Error response codes: unauthorized(401), forbidden(403), itemNotFound(404), conflict(409)
Request
-------
.. rest_parameters:: parameters.yaml
- node_ident: node_ident
- reset_type: node_reset_type
- boot_enabled: node_boot_enabled
- boot_source: node_boot_source
**Example reset state for composed node :**
.. literalinclude:: mockup/node-reset-state-request.json
:language: javascript
**Example set boot source for composed node :**
.. literalinclude:: mockup/node-set-boot-source-request.json
:language: javascript
Response
--------
There is no body content for the response of a successful POST operation.
Resource attach/detach
==========================
.. rest_method:: POST /v1/nodes/{node_ident}/action
Send an attach/detach cmd to a composed node.
Normal response codes: 204
Error response codes: unauthorized(401), forbidden(403), itemNotFound(404), conflict(409)
Request
-------
.. rest_parameters:: parameters.yaml
- node_ident: node_ident
- type: node_attach_type
- uuid: resource_uuid
**Example POST action cmd for composed node :**
.. literalinclude:: mockup/node-post-action-attach-request.json
:language: javascript
Response
--------
There is no body content for the response of a successful POST operation.
Once attach action successful, the resources state need to be updated to "allocated",
and the new resources can show up as asset under a composde node.
Node Assets
===========
.. rest_method:: GET /v1/nodes/{node_ident}/assets
Get all of Assets info of Composed node , Asset included pooled resource
and fixed inventory of Compute System.
Normal response codes: 200
Error response codes: badRequest(400), unauthorized(401), forbidden(403)
Request
-------
.. rest_parameters:: parameters.yaml
- node_ident: node_ident
Response
--------
.. rest_parameters:: parameters.yaml
- memory: node_memory_asset
- network: node_network_asset
- processor: node_processor_asset
- storage: node_storage_asset
**Example JSON representation of a Node:**
.. literalinclude:: mockup/composed-node-get-asset.json
:language: javascript
Manage Node
===========
.. rest_method:: POST /v1/nodes/managed
Manage a composed node already existing in the RSD rack by creating a
Valence database entry for it, allowing Valence to perform all operations
on it.
Normal response codes: 200
Error response codes: badRequest(400), unauthorized(401), forbidden(403), itemNotFound(404), conflict(409)
Request
-------
.. rest_parameters:: parameters.yaml
- node_index: node_index
Response
--------
.. rest_parameters:: parameters.yaml
- uuid: node_uuid
- name: node_name
- index: node_index
- links: links