ActiveCluster support for Pure Storage drivers

This adds sync-rep support for cheesecake api's via
Pure's ActiveCluster feature leaning on stretched Pods.

This is done by specifying the "type" of replication on
"replication_device" options in cinder.conf to be 'sync'.
With an optional 'uniform' boolean.

One thing to note is that we needed to start using
the provider_id field on volumes. With volumes in Purity
Pods the names change, so our quick formula for name
prediction goes out the window. Luckily there is already
a field on the volume objects for this.. provider_id.
Any volumes without one already set will get one updated
when the driver starts up.

Depends-On: https://review.openstack.org/#/c/571332/
Implements: blueprint pure-sync-rep
Change-Id: I135d2e5aa8a0a82ddd212eb8eba393e2fbef73ca
This commit is contained in:
Patrick East 2018-07-25 18:05:00 -07:00
parent 477018ec2a
commit 715069f615
4 changed files with 2531 additions and 998 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -10,7 +10,8 @@ Support for iSCSI storage protocol is available with the PureISCSIDriver
Volume Driver class, and Fibre Channel with PureFCDriver.
All drivers are compatible with Purity FlashArrays that support the REST
API version 1.2, 1.3, 1.4, or 1.5 (Purity 4.0.0 and newer).
API version 1.2, 1.3, 1.4, 1.5, 1.13, and 1.14 (Purity 4.0.0 and newer).
Some features may require newer versions of Purity.
Limitations and known issues
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@ -208,28 +209,40 @@ Array to replicate to:
.. code-block:: ini
[puredriver-1]
replication_device = backend_id:PURE2_NAME,san_ip:IP_PURE2_MGMT,api_token:PURE2_API_TOKEN
replication_device = backend_id:PURE2_NAME,san_ip:IP_PURE2_MGMT,api_token:PURE2_API_TOKEN,type:REPLICATION_TYPE
Where ``PURE2_NAME`` is the name of the remote Pure Storage system,
``IP_PURE2_MGMT`` is the management IP address of the remote array,
and ``PURE2_API_TOKEN`` is the Purity Authorization token
of the remote array.
The ``REPLICATION_TYPE`` value for the ``type`` key can be either ``sync`` or
``async``
If the ``type`` is ``sync`` volumes will be created in a stretched Pod. This
requires two arrays pre-configured with Active Cluster enabled. You can
optionally specify ``uniform`` as ``true`` or ``false``, this will instruct
the driver that data paths are uniform between arrays in the cluster and data
connections should be made to both upon attaching.
Note that more than one ``replication_device`` line can be added to allow for
multi-target device replication.
A volume is only replicated if the volume is of a volume-type that has
the extra spec ``replication_enabled`` set to ``<is> True``.
the extra spec ``replication_enabled`` set to ``<is> True``. You can optionally specify
the ``replication_type`` key to specify ``<in> sync`` or ``<in> async`` to choose the
type of replication for that volume. If not specified it will default to ``async``.
To create a volume type that specifies replication to remote back ends:
To create a volume type that specifies replication to remote back ends with async replication:
.. code-block:: console
$ openstack volume type create ReplicationType
$ openstack volume type set --property replication_enabled='<is> True' ReplicationType
$ openstack volume type set --property replication_type='<in> async' ReplicationType
The following table contains the optional configuration parameters available
for replication configuration with the Pure Storage array.
for async replication configuration with the Pure Storage array.
==================================================== ============= ======
Option Description Default
@ -260,8 +273,8 @@ Option Description Default
.. note::
``replication-failover`` is only supported from the primary array to any of the
multiple secondary arrays, but subsequent ``replication-failover`` is only
``failover-host`` is only supported from the primary array to any of the
multiple secondary arrays, but subsequent ``failover-host`` is only
supported back to the original primary array.
Automatic thin-provisioning/oversubscription ratio
@ -309,6 +322,7 @@ Metrics reported include, but are not limited to:
usec_per_read_op
usec_per_read_op
queue_depth
replication_type
.. note::

View File

@ -0,0 +1,4 @@
---
features:
- Added support to Pure Storage Volume Drivers for Active Cluster using the
standard replication API's for the Block Storage Service.