Add pooled resources management

This spec proposes changes to the the functionality of managing
pooled resources through valence.

Change-Id: I2f76ec332dba5fbcfc658a4f94e34aa945404e44
This commit is contained in:
Anusha Ramineni 2017-06-06 17:01:28 +05:30
parent 2eefa8dc59
commit fcfbee0273

View File

@ -0,0 +1,168 @@
..
This work is licensed under a Creative Commons Attribution 3.0 Unported
License.
http://creativecommons.org/licenses/by/3.0/legalcode
===========================
Pooled resources management
===========================
This blueprint is to add framework in valence for pooled resources management.
https://blueprints.launchpad.net/openstack-valence/+spec/add-device-orchestration
Problem description
===================
Currently, valence doesn't provide support for the dynamic management of
pooled resources like storage, network and other pci devices which can be
connected on demand to a composed node, giving user the ability to attach or
detach the devices dynamically based on workload.
Proposed change
===============
* Creating podmanager functionality will be updated to add a new async
operation to perform sync of all the pooled resources associated with that
specific podmanager.
* All the discovered devices would be automatically registered to DB.
* New DB table 'devices' to be created to store the minimal device info and
new uuid will be generated for their unique identification in valence.
* Further operations on the devices can be performed through valence using
uuid.
* Periodic task would be added to keep the devices info and their status in
sync with valence DB. And also, 'refresh' command also to be provided for the
user to perform any immediate sync as required.
* API's to be provided to list the pooled devices, attach/detach device to node
using uuid
Alternatives
------------
None
Data model impact
-----------------
New table 'devices' will be added with following schema:
+-------------------+
| Field |
+===================+
| uuid |
+-------------------+
| podm_id |
+-------------------+
| node_id |
+-------------------+
| type |
+-------------------+
| properties |
+-------------------+
| pooled_group_id |
+-------------------+
| state |
+-------------------+
| extra |
+-------------------+
| created_at |
+-------------------+
| deleted_at |
+-------------------+
REST API impact
---------------
New API's to be added list pooled resources and attach/detach devices
.. code:: rest
GET v1/pooled API to be added with filter params to list specific devices
GET v1/pooled?type=storage
POST /v1/nodes/{node_ident}/action
{
"attach":{
device_id: 'a698b7c2-0ca1-481a-87cd-4717a3d9c4d6'
}
}
POST /v1/nodes/{node_ident}/action
{
"detach":{
"device_id": "a698b7c2-0ca1-481a-87cd-4717a3d9c4d6"
}
}
References::
https://github.com/openstack/valence/blob/master/api-ref/source/valence-api-v1-pooled.inc
https://github.com/openstack/valence/blob/master/api-ref/source/mockup/node-post-action-attach-request.json
Driver API impact
-----------------
None
Nova driver impact
------------------
None
Security impact
---------------
None
Other end user impact
---------------------
None
Scalability impact
------------------
None
Performance Impact
------------------
None
Other deployer impact
---------------------
None
Developer impact
----------------
None
Valence GUI / Horizon impact
----------------------------
None
Implementation
==============
Assignee(s)
-----------
ramineni
ntpttr
Work Items
----------
* Add API's for pooled resources, attach/detach devices
* Add periodic task
* Add new DB model
* Redfish implementation
* CLI implementation
Dependencies
============
None
Testing
=======
* Unit Tests should be added.
Documentation Impact
====================
* update documentation on new supported API's
References
==========
* https://github.com/openstack/valence/blob/master/api-ref/source/valence-api-v1-pooled.inc
* https://github.com/openstack/valence/blob/master/api-ref/source/mockup/node-post-action-attach-request.json