Cinder volume driver for Pure Storage FlashArray¶
Include the URL of your launchpad blueprint:
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.
Currently, the Pure Storage FlashArray cannot be used a block storage backend in an OpenStack environment.
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:
Create Volume from Snapshot
Get Volume Stats
Copy Image to Volume
Copy Volume to Image
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.
Data model impact¶
REST API 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.
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.
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.
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.
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.
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.
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.
Pure Storage should be listed as having a supported Cinder driver on the CinderSupportMatrix: https://wiki.openstack.org/wiki/CinderSupportMatrix