diff --git a/specs/pike/approved/valence-ironic-integration.rst b/specs/pike/approved/valence-ironic-integration.rst new file mode 100644 index 0000000..aeca97d --- /dev/null +++ b/specs/pike/approved/valence-ironic-integration.rst @@ -0,0 +1,123 @@ + +========================== +Valence Ironic Integration +========================== +This proposal describes the integration of projects Valence and +OpenStack Baremetal Service, Ironic. + +Problem description +=================== +Valence allows to compose nodes out of a pool of disaggregated hardware. +And Ironic allows to provision bare metal machines. Once the node is +composed by Valence that can be registered to Ironic to be consumed. +So this feature aims on providing a way to integrate Valence and Ironic, +so that users will be able to provision bare metal machines on the composed +nodes by Ironic. + +Proposed change +=============== +To enable Valence to be able to register its composed node to Ironic, we +will add a new API endpoint /v1/nodes/{ID}/register. The detailed explanation +of this API is as below: + +1. Add a new Valence /v1/nodes/{ID}/register API +This introduces a new nodes API in valence that will be used to register a +composed node in Ironic. Below steps explains a detailed flow of registering +a node from Valence to Ironic. + +Step 1: User calls Valence APIs to register a node. + + $ valence node-register test-node + This API will register the test-node to Ironic. + +NOTE: Once the node is registered to Ironic, no further actions like deleting +the node, changing the boot device will be supported by Valence. Admin can use +the Ironic APIs to perform these actions. + +Step 2: Valence calls Ironic API internally to register this node which is equivalent to: + + $ ironic node-create –d redfish –i redfish_root_uri -i refish_username ... + This will create a new node in Ironic with all the required details related + to Redfish. It will also create a port in Ironic with the node's MAC address. + +After the node is succesfully registered to Ironic, users can use the Ironic or +Nova to install an OS on the node. + +Also we will add another API endpoint /v1/nodes/{ID}/unregister to delete the node from Ironic. + + +Alternatives +------------ +None + + +Data model impact +----------------- +Add a new field 'managed_by' in Nodes DB. + + +REST API impact +--------------- +1. Add a new API endpoint /v1/node/{ID}/register +1. Add a new API endpoint /v1/node/{ID}/unregister + +Driver API impact +----------------- +1. Add a new driver that can be used to interact with ironic. + + +Security impact +--------------- +None + +Other end user impact +--------------------- +None + +Scalability impact +------------------ +None + +Performance Impact +------------------ +None + +Other deployer impact +--------------------- +None + +Developer impact +---------------- +None + +Implementation +============== +Assignee(s) +----------- +Primary assignee: + Madhuri Kumari + +Work Items +---------- +* Add a driver in Valence to interact with Ironic. +* Add a new field 'managed_by' in Nodes DB. +* Add new API endpoint /v1/node/{ID}/register. +* Add new API endpoint /v1/node/{ID}/unregister. +* Update api-ref to include the new API. + +Dependencies +============ +Depends on Ironic project. python-ironicclient needs to be +added to the project's requirement. + +Testing +======= +* Each patch will be accompanied with unit testcases. + +Documentation Impact +==================== +Update document to include the details of new node register API. + +References +========== +None