8ca13afc49
This will now require a separate section "Use Cases". This was originally within "Problem description", but use cases seems to be missed when it was filled out. This will hopefully improve spec submission. Change-Id: I3615ca5ff5c46851e682739a8343242e2f1b0a8d
214 lines
5.5 KiB
ReStructuredText
214 lines
5.5 KiB
ReStructuredText
..
|
|
This work is licensed under a Creative Commons Attribution 3.0 Unported
|
|
License.
|
|
|
|
http://creativecommons.org/licenses/by/3.0/legalcode
|
|
|
|
================================================
|
|
Cinder volume driver for Pure Storage FlashArray
|
|
================================================
|
|
|
|
Include the URL of your launchpad blueprint:
|
|
|
|
https://blueprints.launchpad.net/cinder/+spec/pure-iscsi-volume-driver
|
|
|
|
The purpose of this spec is to add a Cinder volume driver for Pure Storage
|
|
FlashArray. It will support the iSCSI protocol and will include at least the
|
|
minimum set of features required by the Juno release. We will also set up
|
|
automated CI testing on an OpenStack cluster maintained by Pure Storage in
|
|
accordance with the third party CI requirement policy.
|
|
|
|
Pure Storage builds all-flash storage arrays. The active/active controller
|
|
architecture is based on the Purity Operating Environment and providing an
|
|
adaptive metadata fabric that is scalable, granular to 512B, and protected.
|
|
|
|
|
|
Problem description
|
|
===================
|
|
|
|
Currently, the Pure Storage FlashArray cannot be used a block storage backend
|
|
in an OpenStack environment.
|
|
|
|
Use Cases
|
|
=========
|
|
|
|
Proposed change
|
|
===============
|
|
|
|
Add a Pure Storage FlashArray Cinder driver to the OpenStack Cinder package.
|
|
|
|
The Pure Storage driver will leverage a thin Python REST client library.
|
|
The client library interacts with the REST service hosted on the FlashArray
|
|
to perform array management and satisfy Cinder driver API requirements.
|
|
|
|
::
|
|
|
|
Control Flow
|
|
|
|
+------------------+
|
|
| Cinder + |
|
|
| Cinder Volume |
|
|
+--------+---------+
|
|
|
|
|
v
|
|
+------------------+
|
|
| Pure Driver |
|
|
| |
|
|
+--------+---------+
|
|
|
|
|
v
|
|
+------------------+
|
|
| Pure REST Client |
|
|
| |
|
|
+--------+---------+
|
|
|
|
|
v
|
|
+------------------+
|
|
| Pure REST Server |
|
|
| (FlashArray) |
|
|
+------------------+
|
|
|
|
The Cinder driver will make use of REST client APIs to support:
|
|
|
|
* Volume Create/Delete
|
|
* Volume Attach/Detach
|
|
* Snapshot Create/Delete
|
|
* Create Volume from Snapshot
|
|
* Get Volume Stats
|
|
* Copy Image to Volume
|
|
* Copy Volume to Image
|
|
* Clone Volume
|
|
* Extend Volume
|
|
|
|
In addition to the delivery of the driver implementation, the proposed change
|
|
includes the addition of unit tests for the driver. Pure Storage will create
|
|
dedicated Jenkins jobs to support CI and Tempest test execution on a Devstack
|
|
virtual machine to continuously prove functionality of the driver.
|
|
|
|
|
|
Alternatives
|
|
------------
|
|
|
|
None.
|
|
|
|
|
|
Data model impact
|
|
-----------------
|
|
|
|
None.
|
|
|
|
|
|
REST API impact
|
|
---------------
|
|
|
|
None.
|
|
|
|
|
|
Security impact
|
|
---------------
|
|
|
|
The only security related aspect is that an API token is required by the
|
|
driver to leverage the REST client and authenticate against the REST API.
|
|
|
|
The API token must be specified in the cinder.conf configuration file.
|
|
|
|
|
|
Notifications impact
|
|
--------------------
|
|
|
|
None.
|
|
|
|
|
|
Other end user impact
|
|
---------------------
|
|
|
|
The impact of this change is that OpenStack Cinder will have support for
|
|
using a Pure Storage FlashArray as a backing block storage device.
|
|
|
|
|
|
Performance Impact
|
|
------------------
|
|
|
|
None.
|
|
|
|
|
|
Other deployer impact
|
|
---------------------
|
|
|
|
The configuration needed to leverage the Pure Storage driver includes:
|
|
|
|
* volume_driver - Specifies the Pure Storage FlashArray driver module.
|
|
* pure_target - The address of the FlashArray storage target.
|
|
* pure_api_token - An API token created on the FlashArray to authenticate
|
|
REST clients, which the driver will make use of.
|
|
|
|
And optionally:
|
|
|
|
* pure_host_name - The name of a host object on the FlashArray to associate
|
|
with IQNs and volume connections. This defaults to the name "OpenStack" if
|
|
not provided.
|
|
|
|
|
|
Developer impact
|
|
----------------
|
|
|
|
None.
|
|
|
|
|
|
Implementation
|
|
==============
|
|
|
|
Assignee(s)
|
|
-----------
|
|
|
|
Primary assignee:
|
|
victor-ying <victor.ying@purestorage.com>
|
|
|
|
Other contributors:
|
|
wes-w <wes@purestorage.com>
|
|
zach-olstein <zach.olstein@purestorage.com>
|
|
|
|
|
|
Work Items
|
|
----------
|
|
|
|
* Complete Cinder Pure Storage driver implementation.
|
|
* Complete Cinder Pure Storage driver unit tests.
|
|
* Pass automated Tempest tests to prove functionality.
|
|
* Integrate Devstack VM and Jenkins job into Pure Storage Jenkins system.
|
|
|
|
|
|
Dependencies
|
|
============
|
|
|
|
The driver has a dependency on a REST client library provided by Pure Storage
|
|
that allows developers to easily build Python applications built on REST API
|
|
functionality.
|
|
|
|
The library is currently not available as a pip-installable Python package,
|
|
so the library module will be committed along with the driver implementation.
|
|
|
|
|
|
Testing
|
|
=======
|
|
|
|
As mentioned in work items, the delivery of the driver will be accompanied
|
|
by a suite of unit tests for the driver (that use Mock to isolate driver
|
|
code from the FlashArray). Additionally, continuous integration through
|
|
Jenkins and automated Tempest test runs are required for the driver to be
|
|
accepted.
|
|
|
|
|
|
Documentation Impact
|
|
====================
|
|
|
|
Pure Storage should be listed as having a supported Cinder driver on the
|
|
CinderSupportMatrix:
|
|
https://wiki.openstack.org/wiki/CinderSupportMatrix
|
|
|
|
|
|
References
|
|
==========
|
|
|
|
None.
|