summaryrefslogtreecommitdiffstats
path: root/cyborg_enhancement/mitaka_version/cyborg/doc/source/devdoc/specs/pike/approved/cyborg-driver-proposal.rst
blob: 4fabf56d2070b6ba92498acf423feb7252a3dab2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
..
 This work is licensed under a Creative Commons Attribution 3.0 Unported
 License.

 http://creativecommons.org/licenses/by/3.0/legalcode

==============================
Cyborg Generic Driver Proposal
==============================

https://blueprints.launchpad.net/openstack-cyborg/+spec/generic-driver-cyborg

This spec proposes to provide the initial design for Cyborg's generic driver.

Problem description
===================

This blueprint proposes to add a generic driver for openstack-cyborg.
The goal is to provide users & operators with a reliable generic
implementation that is hardware agnostic and provides basic
accelerator functionality.

Use Cases
---------

* As an admin user and a non-admin user with elevated privileges, I should be
  able to identify and discover attached accelerator backends.
* As an admin user and a non-admin user with elevated privileges, I should be
  able to view services on each attached backend after the agent has
  discovered services on each backend.
* As an admin user and a non-admin user, I should be able to list and update
  attached accelerators by driver by querying nova with the Cyborg-API.
* As an admin user and a non-admin user with elevated privileges, I should be
  able to install accelerator generic driver.
* As an admin user and a non-admin user with elevated privileges, I should be
  able to uninstall accelerator generic driver.
* As an admin user and a non-admin user with elevated privileges, I should be
  able to issue attach command to the instance via the driver which gets
  routed to Nova via the Cyborg API.
* As an admin user and a non-admin user with elevated privileges, I should be
  able to issue detach command to the instance via the driver which gets
  routed to Nova via the Cyborg API.

Proposed change
===============

* Cyborg needs a reference implementation that can be used as a model for
  future driver implementations and that will be referred to as the generic
  driver implementation
* Develop the generic driver implementation that supports CRUD operations for
  accelerators for single backend and multi backend setup scenarios.


Alternatives
------------

None

Data model impact
-----------------

* The generic driver will update the central database when any CRUD or
  attach/detach operations take place

REST API impact
---------------

This blueprint proposes to add the following APIs:
*cyborg install-driver <driver_id>
*cyborg uninstall-driver <driver_id>
*cyborg attach-instance <instance_id>
*cyborg detach-instance <instance_id>
*cyborg service-list
*cyborg driver-list
*cyborg update-driver <driver_id>
*cyborg discover-services

Security impact
---------------

None

Notifications impact
--------------------

None

Other end user impact
---------------------

None

Performance Impact
------------------

None

Other deployer impact
---------------------

None

Developer impact
----------------

Developers will have access to a reference generic implementation which
can be used to build vendor-specific drivers.

Implementation
==============

Assignee(s)
-----------

Primary assignee:
  Rushil Chugh <rushil.chugh@gmail.com>

Work Items
----------

This change would entail the following:
* Add a feature to identify and discover attached accelerator backends.
* Add a feature to list services running on the backend
* Add a feature to attach accelerators to the generic backend.
* Add a feature to detach accelerators from the generic backend.
* Add a feature to list accelerators attached to the generic backend.
* Add a feature to modify accelerators attached to the generic backend.
* Defining a reference implementation detailing the flow of requests between
  the cyborg-api, cyborg-conductor and nova-compute services.

Dependencies
============

Dependent on Cyborg API and Agent implementations.

Testing
=======

* Unit tests will be added test Cyborg generic driver.

Documentation Impact
====================

None

References
==========

None

History
=======


.. list-table:: Revisions
   :header-rows: 1

   * - Release
     - Description
   * - Pike
     - Introduced