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

Revisions
Release Description
Pike Introduced