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
5.5 KiB
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.