.. -*- rst -*-

===================
Node Traits (nodes)
===================

.. versionadded:: 1.37

Node traits are used for scheduling in the Compute service, using qualitative
attributes to influence the placement of instances to bare metal compute nodes.
Traits specified for a node in the Bare Metal service will be registered on the
corresponding resource provider in the Compute service's placement API.

List Traits of a Node
=====================

.. rest_method:: GET /v1/nodes/{node_ident}/traits

Return a list of traits for the node.

Normal response code: 200

Error codes: 400,401,403,404

Request
-------

.. rest_parameters:: parameters.yaml

    - node_ident: node_ident

Response
--------

.. rest_parameters:: parameters.yaml

    - traits: n_traits

**Example list of traits for the node:**

.. literalinclude:: samples/node-traits-list-response.json
   :language: javascript


Set all traits of a node
========================

.. rest_method:: PUT /v1/nodes/{node_ident}/traits

Set all traits of a node, replacing any existing traits.

Normal response code: 204

Error codes: 400,401,403,404,409

Request
-------

.. rest_parameters:: parameters.yaml

    - node_ident: node_ident
    - traits: n_traits

**Example request to set all traits of a Node:**

.. literalinclude:: samples/node-set-traits-request.json


Add a trait to a node
=====================

.. rest_method:: PUT /v1/nodes/{node_ident}/traits/{trait}

Add a single trait to a node.

Normal response code: 204

Error codes: 400,401,403,404,409

Request
-------

.. rest_parameters:: parameters.yaml

    - node_ident: node_ident
    - trait: trait


Remove all traits from a node
=============================

.. rest_method:: DELETE /v1/nodes/{node_ident}/traits

Normal response code: 204

Error codes: 400,401,403,404,409

Request
-------

.. rest_parameters:: parameters.yaml

    - node_ident: node_ident


Remove a trait from a node
==========================

Remove a single trait from a node.

.. rest_method:: DELETE /v1/nodes/{node_ident}/traits/{trait}

Normal response code: 204

Error codes: 400,401,403,404,409

Request
-------

.. rest_parameters:: parameters.yaml

    - node_ident: node_ident
    - trait: trait