Add Inspur NVMe SSD driver specification

This spec proposes to provide the initial design for
Cyborg's Inspur NVMe SSD driver.

Change-Id: Ibda8dbb2172b31cc1263e96b020628c2ce7f434e
This commit is contained in:
songwenping 2020-10-24 10:42:22 +08:00
parent 1b52f6defb
commit 59619c8a0e
1 changed files with 171 additions and 0 deletions

View File

@ -0,0 +1,171 @@
..
This work is licensed under a Creative Commons Attribution 3.0 Unported
License.
http://creativecommons.org/licenses/by/3.0/legalcode
======================================
Cyborg Inspur NVMe SSD Driver Proposal
======================================
This spec proposes to provide the initial design for Cyborg's Inspur NVMe SSD
driver.
Problem description
===================
Inspur NVMe SSD devices provide the ability to accelerate VM IO rate.
In the OpenStack ecosystem, we don't have any tool to manage this kind of
accelerators. This spec will add an Inspur NVMe SSD driver in Cyborg to
automatically manage Inspur NVMe SSD devices.
The management in the driver scope includes:
Cyborg Inspur NVMe SSD driver can automatically discover the NVMe SSD and
report to database by calling cyborg-conductor.
Cyborg Inspur NVMe SSD driver needs to do the device binding/unbinding to VM.
Use Cases
---------
* As an operator, I would like to use Cyborg to manage Inspur NVMe SSD
devices.
* As a developer, I would like to use Cyborg agent to start or to do resource
checking periodically, the Cyborg Inspur NVMe SSD driver should provide
``discover()`` function to enumerate the list of the Inspur NVMe SSD
devices, and report the details of all available NVMe SSD accelerators on
the host, such as PID(Product ID), VID(Vendor ID), Device ID.
* As a user, I would like to boot up a VM with Inspur NVMe SSD card attached
in order to accelerate IO rate. Cyborg should be able to manage this kind
of acceleration resources and assign it to the VM(binding).
Proposed changes
================
1. Collect raw info of Inspur NVMe SSD devices from compute node by "lspci"
command and grep ``Non-Volatile memory controller`` related keyword and
then grep Inspur vendor ID.
2. Parsing details from each record including ``vendor_id``, ``product_id``
and ``pci_address``.
3. Generate Cyborg specific driver objects and resource provider modeling for
the Inspur NVMe SSD devices. Below is the objects to describe a Inspur NVMe
SSD device which complies with the Cyborg database mode and Placement data
model.
::
Hardware Driver objects Placement data model
| | |
1 SSD 1 device |
| | |
| 1 deployable ---> resource_provider
| | ---> parent resource_provider: compute node
| | |
1 SSD 1 attach_handle ---> inventories(total:1)
4. We report ``CUSTOM_SSD`` as resource_class, ``CUSTOM_SSD_INSPUR``
and ``CUSTOM_SSD_PRODUCT_ID_1003`` as traits to Placement.
Alternatives
------------
None
Data model impact
-----------------
Add ``SSD`` type to the column device_type in table devices.
REST API impact
---------------
None.
Security impact
---------------
None
Notifications impact
--------------------
None
Other end user impact
---------------------
User can manage Inspur NVMe SSD cards by Cyborg Inspur NVMe SSD driver.
Such as list the Inspur NVMe SSD devices, report the details of all
available Inspur NVMe SSD accelerators on the host, binding an Inspur
NVMe SSD to VM.
Performance Impact
------------------
None
Other deployer impact
---------------------
None.
Developer impact
----------------
None
Implementation
==============
Assignee(s)
-----------
Primary assignee:
Wenping Song
Work Items
----------
* Implement Inspur NVMe SSD driver in Cyborg
* Add related test cases.
* Add test report to wiki page.
* Update doc page and release note.
Dependencies
============
None
Testing
========
* Unit tests will be added to test this driver.
* Add test result in Cyborg Wiki which is required by the Cyborg community.
Documentation Impact
====================
Document Inspur NVMe SSD driver in Cyborg project.
References
==========
None
History
=======
.. list-table:: Revisions
:header-rows: 1
* - Release
- Description
* - Wallaby
- Introduced