Update Plugin to support Mitaka

Update Fuel version numbers where needed.
Update Fuel plugin version number where needed.
Add new image in docs to aid with pre-configure of array.
Move hiera parameters to puppet manifests and
parameterize corresponding classes.
Fix regex for replication retention parameters

Change-Id: I265b33ef85315cc5a909221bfe2116ff2e85bc7e
This commit is contained in:
Simon Dodsley 2016-03-29 15:16:05 -04:00
parent be7dcd61b7
commit e6a06b9c03
9 changed files with 328 additions and 98 deletions

View File

@ -7,7 +7,7 @@ Plugin description
Pure Storage plugin for Fuel extends Mirantis OpenStack functionality by
adding support for Pure Storage FlashArray block storage array.
The Pure Storage FlashArray is an iSCSI and Fibre Channel capable block
The Pure Storage FlashArray is an iSCSI and Fibre Channel capable block
storage device used as a Cinder backend
Requirements
@ -15,7 +15,7 @@ Requirements
| Requirement | Version/Comment |
|----------------------------------------------------------|-----------------|
| Mirantis OpenStack compatibility | >= 8.0 |
| Mirantis OpenStack compatibility | >= 9.0 |
| Access to FlashArray VIP via cinder-volume node | |
| Access to FlashArray VIP via compute/cinder-volume nodes | |
| iSCSI/FC initiator on all compute/cinder-volume nodes | |
@ -31,7 +31,7 @@ Prior to deployment ensure the following items are complete:
1. For an iSCSI implementation ensure the Pure Storage FlashArray can route 10G Storage Network
to all Compute nodes as well as the Cinder Control/Manager node.
2. For an FC implementation ensure the fibre Channel Zone Manager is configured correctly
within the Openstack deployment
within the Openstack deployment
3. Create an AD/LDAP account for the Pure Storage cluster to use as the OpenStack Administrator
account (if no AD/LDAP use the 'pureuser' account).
4. Obtain the management VIP address for the Pure Storage FlashArray

View File

@ -1,5 +1,5 @@
#
# Copyright 2015 Pure Storage, Inc.
# Copyright 2016 Pure Storage, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
@ -13,5 +13,8 @@
# License for the specific language governing permissions and limitations
# under the License.
#
$plugin_settings = hiera('fuel-plugin-purestorage-cinder')
include plugin_purestorage_cinder::compute
class { 'plugin_purestorage_cinder::compute' :
nova_multipath => $plugin_settings['pure_nova_multipath'],
}

View File

@ -1,5 +1,5 @@
#
# Copyright 2015 Pure Storage, Inc.
# Copyright 2016 Pure Storage, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
@ -13,5 +13,46 @@
# License for the specific language governing permissions and limitations
# under the License.
#
$plugin_settings = hiera('fuel-plugin-purestorage-cinder')
$backend_name = 'pure'
$previous_backends = ''
include plugin_purestorage_cinder::controller
class { 'plugin_purestorage_cinder::controller' :
backend => $backend_name,
backends => $previous_backends,
multibackends => $plugin_settings['multibackend'],
glance_image_cache => $plugin_settings['pure_glance_image_cache'],
glance_image_count => $plugin_settings["pure_glance_cache_count"],
glance_image_size => $plugin_settings["pure_glance_cache_size"],
replication => $plugin_settings['pure_replication'],
remote_array => $plugin_settings["pure_replication_name"],
remote_ip => $plugin_settings["pure_replication_ip"],
remote_api => $plugin_settings["pure_replication_api"],
replication_default => $plugin_settings['pure_replication_default'],
replication_interval => $plugin_settings["pure_interval"],
replication_short => $plugin_settings["pure_retention_short"],
replication_long_day => $plugin_settings["pure_retention_long_day"],
replication_long => $plugin_settings["pure_retention_long"],
eradicate => $plugin_settings['pure_eradicate'],
local_ip => $plugin_settings['pure_san_ip'],
local_api => $plugin_settings['pure_api'],
local_chap => $plugin_settings['pure_chap'],
local_multipath => $plugin_settings['pure_multipath'],
protocol => $plugin_settings['pure_protocol'],
consis_group => $plugin_settings['pure_cg'],
fczm_config => $plugin_settings['pure_fczm_config'],
fc_vendor => $plugin_settings['pure_switch_vendor'],
fabric_count => $plugin_settings['pure_fabric_count'],
fabric_name_1 => $plugin_settings['pure_fabric_name_1'],
fabric_name_2 => $plugin_settings['pure_fabric_name_2'],
fc_ip_1 => $plugin_settings["pure_fabric_ip_1"],
fc_ip_2 => $plugin_settings["pure_fabric_ip_2"],
fc_user_1 => $plugin_settings["pure_username_1"],
fc_user_2 => $plugin_settings["pure_username_2"],
fc_passwd_1 => $plugin_settings["pure_password_1"],
fc_passwd_2 => $plugin_settings["pure_password_2"],
fc_prefix_1 => $plugin_settings["pure_fabric_name_1"],
fc_prefix_2 => $plugin_settings["pure_fabric_name_2"],
fc_vsan_1 => $plugin_settings["pure_vsan_1"],
fc_vsan_2 => $plugin_settings["pure_vsan_2"],
}

View File

@ -13,13 +13,13 @@
# License for the specific language governing permissions and limitations
# under the License.
#
class plugin_purestorage_cinder::compute {
class plugin_purestorage_cinder::compute (
$nova_multipath,
){
include plugin_purestorage_cinder::common
include ::nova::params
$plugin_settings = hiera('fuel-plugin-purestorage-cinder')
service { 'nova-compute':
ensure => 'running',
name => $::nova::params::compute_service_name,
@ -28,7 +28,7 @@ class plugin_purestorage_cinder::compute {
hasrestart => true,
}
nova_config { 'libvirt/iscsi_use_multipath': value => $plugin_settings['pure_nova_multipath'];
nova_config { 'libvirt/iscsi_use_multipath': value => "${nova_multipath}";
'libvirt/hw_disk_discard': value => 'unmap' }
Nova_config<||> ~> Service['nova-compute']

View File

@ -14,8 +14,43 @@
#
class plugin_purestorage_cinder::controller (
$backend_name = 'pure',
$backends = ''
$backend_name,
$backends,
$multibackends,
$glance_image_cache,
$glance_image_count,
$glance_image_size,
$replication,
$remote_array,
$remote_ip,
$remote_api,
$replication_default,
$replication_interval,
$replication_short,
$replication_long_day,
$replication_long,
$eradicate,
$local_ip,
$local_api,
$local_chap,
$local_multipath,
$protocol,
$consis_group,
$fczm_config,
$fc_vendor,
$fabric_count,
$fabric_name_1,
$fabric_name_2,
$fc_ip_1,
$fc_ip_2,
$fc_user_1,
$fc_user_2,
$fc_passwd_1,
$fc_passwd_2,
$fc_prefix_1,
$fc_prefix_2,
$fc_vsan_1,
$fc_vsan_2
) {
include plugin_purestorage_cinder::common
@ -23,21 +58,10 @@ class plugin_purestorage_cinder::controller (
include ::cinder::client
include ::keystone::client
#
# Interim fix for Mirantis bug (https://bugs.launchpad.net/fuel/+bug/1547048)
# Run 3 sepeerate commands to make pip respond correctly and not crash
#
# package {"purestorage":
# ensure => "installed",
# provider => pip
# }
exec {"pip configuration":
command => 'pip install -U pip; pip install --upgrade distribute; pip install purestorage',
path => ['/usr/bin']
}
$plugin_settings = hiera('fuel-plugin-purestorage-cinder')
package {"purestorage":
ensure => "installed",
provider => pip
}
if $::cinder::params::volume_package {
package { $::cinder::params::volume_package:
@ -46,7 +70,7 @@ class plugin_purestorage_cinder::controller (
Package[$::cinder::params::volume_package] -> Cinder_config<||>
}
if $plugin_settings['multibackend'] {
if $multibackend == 'true' {
$section = $backend_name
cinder_config {
"DEFAULT/enabled_backends": value => "${backend_name}";
@ -59,7 +83,7 @@ class plugin_purestorage_cinder::controller (
# Until we can do this correctly with Keystone and get back the created IDs
# we will do this with the get_random_id below.
#
# if $plugin_settings['image_volume_cache_enabled'] {
# if $glance_image_cache == 'true' {
# keystone_tenant { 'cinder_internal_tenant':
# ensure => present,
# description => 'Cinder Internal Tenant',
@ -83,31 +107,52 @@ class plugin_purestorage_cinder::controller (
# we can just, temporarily, assign a randon ID to the two fields.
# When keystone-puppet has the functionality we need we will fix this workaround
if $plugin_settings['pure_glance_image_cache'] == 'true' {
if $glance_image_cache == 'true' {
$PROJECT_ID = get_random_id(32)
$USER_ID = get_random_id(32)
cinder_config {
"DEFAULT/cinder_internal_tenant_project_id": value => "$PROJECT_ID";
"DEFAULT/cinder_internal_tenant_user_id": value => "$USER_ID";
"$section/image_volume_cache_enabled": value => $plugin_settings["pure_glance_image_cache"];
"$section/image_volume_cache_max_count": value => $plugin_settings["pure_glance_cache_count"];
"$section/image_volume_cache_max_size_gb": value => $plugin_settings["pure_glance_cache_size"];
"$section/image_volume_cache_enabled": value => $glance_image_cache;
"$section/image_volume_cache_max_count": value => $glance_cache_count;
"$section/image_volume_cache_max_size_gb": value => $glance_cache_size;
}
}
if $replication == 'true' {
$DEVICE = "backend_id:" + $remote_array + ",san_ip:"+ $remote_ip + ",api_token:" + $remote_api
cinder_config {
"$section/replication_device": value => "$DEVICE";
}
if $replication_default == 'false' {
cinder_config {
"$section/pure_replica_interval_default": value => $replication_interval;
"$section/pure_replica_retention_short_term_default": value => $replication_short;
"$section/pure_replica_retention_long_term_per_day_default": value => $replication_long_day;
"$section/pure_replica_retention_long_term_default": value => $replication_long;
}
}
}
if $eradicate == 'true' {
cinder_config {
"$section/pure_eradicate_on_delete": value => $eradicate;
}
}
cinder::backend::pure { $section :
san_ip => $plugin_settings['pure_san_ip'],
pure_api_token => $plugin_settings['pure_api'],
san_ip => $local_ip,
pure_api_token => $local_api,
volume_backend_name => $section,
use_chap_auth => $plugin_settings['pure_chap'],
use_multipath_for_image_xfer => $plugin_settings['pure_multipath'],
pure_storage_protocol => $plugin_settings['pure_protocol'],
use_chap_auth => $local_chap,
use_multipath_for_image_xfer => $local_multipath,
pure_storage_protocol => $protocol,
extra_options => { "$section/backend_host" => { value => $section }
}
}
# If consistency groups are selected then provide a modified pilocy.json that enables them
if $plugin_settings['pure_cg'] == 'true' {
if $consis_group == 'true' {
file {'policy.json':
path => '/etc/cinder/policy.json',
mode => '0644',
@ -118,12 +163,12 @@ class plugin_purestorage_cinder::controller (
}
# If protocol is FC then meed to add zoning_mode. Put in $section as this has already been set by multibackend
if ($plugin_settings['pure_protocol'] == 'FC') and ($plugin_settings['pure_fczm_config'] == 'automatic') {
if ($protocol == 'FC') and ($fczm_config == 'automatic') {
cinder_config {
"$section/zoning_mode": value => "Fabric";
}
# Now add in the [fc-zone-manager] stanza
case $plugin_settings['pure_switch_vendor'] {
case $fc_vendor {
'Brocade': {
cinder_config {
"fc-zone-manager/brcd_sb_connector": value => "cinder.zonemanager.drivers.brocade.brcd_fc_zone_client_cli.BrcdFCZoneClientCLI";
@ -139,67 +184,67 @@ class plugin_purestorage_cinder::controller (
}
}
}
case $plugin_settings['pure_fabric_count'] {
case $fabric_count {
'1': {
cinder_config {
"fc-zone-manager/fc_fabric_names": value => $plugin_settings["pure_fabric_name_1"];
"fc-zone-manager/fc_fabric_names": value => $fabric_name_1;
}
}
'2': {
cinder_config {
"fc-zone-manager/fc_fabric_names": value => join([$plugin_settings["pure_fabric_name_1"],", ",$plugin_settings["pure_fabric_name_2"]],'');
"fc-zone-manager/fc_fabric_names": value => join([$fabric_name_1,", ",$fabric_name_2],'');
}
}
}
$fabric_zone_1 = $plugin_settings["pure_fabric_name_1"]
$fabric_zone_2 = $plugin_settings["pure_fabric_name_2"]
$fabric_zone_1 = $fabric_name_1
$fabric_zone_2 = $fabric_name_2
# Now add in stanzas for each fabric zone depending on the switch vendor
case $plugin_settings['pure_switch_vendor'] {
case $fc_vendor {
'Brocade': {
cinder_config {
"$fabric_zone_1/fc_fabric_address": value => $plugin_settings["pure_fabric_ip_1"];
"$fabric_zone_1/fc_fabric_user": value => $plugin_settings["pure_username_1"];
"$fabric_zone_1/fc_fabric_password": value => $plugin_settings["pure_password_1"];
"$fabric_zone_1/fc_fabric_address": value => $fc_ip_1;
"$fabric_zone_1/fc_fabric_user": value => $fc_user_1;
"$fabric_zone_1/fc_fabric_password": value => $fc_passwd_1;
"$fabric_zone_1/fc_fabric_port": value => '22';
"$fabric_zone_1/zoning_policy": value => 'initiator-target';
"$fabric_zone_1/zone_activate": value => 'true';
"$fabric_zone_1/zone_name_prefix": value => join([$plugin_settings["pure_fabric_name_1"],"_"],'');
"$fabric_zone_1/zone_name_prefix": value => join([$fabric_name_1,"_"],'');
}
if $plugin_settings['pure_fabric_count'] == '2' {
if $fabric_count == '2' {
cinder_config {
"$fabric_zone_2/fc_fabric_address": value => $plugin_settings["pure_fabric_ip_2"];
"$fabric_zone_2/fc_fabric_user": value => $plugin_settings["pure_username_2"];
"$fabric_zone_2/fc_fabric_password": value => $plugin_settings["pure_password_2"];
"$fabric_zone_2/fc_fabric_address": value => $fc_ip_2;
"$fabric_zone_2/fc_fabric_user": value => $fc_user_2;
"$fabric_zone_2/fc_fabric_password": value => $fc_passwd_2;
"$fabric_zone_2/fc_fabric_port": value => '22';
"$fabric_zone_2/zoning_policy": value => 'initiator-target';
"$fabric_zone_2/zone_activate": value => 'true';
"$fabric_zone_2/zone_name_prefix": value => join([$plugin_settings["pure_fabric_name_2"],"_"],'');
"$fabric_zone_2/zone_name_prefix": value => join([$fabric_name_2,"_"],'');
}
}
}
'Cisco': {
cinder_config {
"$fabric_zone_1/cisco_fc_fabric_address": value => $plugin_settings["pure_fabric_ip_1"];
"$fabric_zone_1/cisco_fc_fabric_user": value => $plugin_settings["pure_username_1"];
"$fabric_zone_1/cisco_fc_fabric_password": value => $plugin_settings["pure_password_1"];
"$fabric_zone_1/cisco_fc_fabric_address": value => $fc_ip_1;
"$fabric_zone_1/cisco_fc_fabric_user": value => $fc_user_1;
"$fabric_zone_1/cisco_fc_fabric_password": value => $fc_passwd_1;
"$fabric_zone_1/cisco_fc_fabric_port": value => '22';
"$fabric_zone_1/cisco_zoning_vsan": value => $plugin_settings["pure_vsan_1"];
"$fabric_zone_1/cisco_zoning_vsan": value => $fc_vsan_1;
"$fabric_zone_1/cisco_zoning_policy": value => 'initiator-target';
"$fabric_zone_1/cisco_zone_activate": value => 'true';
"$fabric_zone_1/cisco_zone_name_prefix": value => join([$plugin_settings["pure_fabric_name_1"],"_"],'');
"$fabric_zone_1/cisco_zone_name_prefix": value => join([$fabric_name_1,"_"],'');
}
if $plugin_settings['pure_fabric_count'] == '2' {
if $fabric_count == '2' {
cinder_config {
"$fabric_zone_2/cisco_fc_fabric_address": value => $plugin_settings["pure_fabric_ip_2"];
"$fabric_zone_2/cisco_fc_fabric_user": value => $plugin_settings["pure_username_2"];
"$fabric_zone_2/cisco_fc_fabric_password": value => $plugin_settings["pure_password_2"];
"$fabric_zone_2/cisco_fc_fabric_address": value => $fc_ip_2;
"$fabric_zone_2/cisco_fc_fabric_user": value => $fc_user_2;
"$fabric_zone_2/cisco_fc_fabric_password": value => $fc_passwd_2;
"$fabric_zone_2/cisco_fc_fabric_port": value => '22';
"$fabric_zone_2/cisco_zoning_vsan": value => $plugin_settings["pure_vsan_2"];
"$fabric_zone_2/cisco_zoning_vsan": value => $fc_vsan_2;
"$fabric_zone_2/cisco_zoning_policy": value => 'initiator-target';
"$fabric_zone_2/cisco_zone_activate": value => 'true';
"$fabric_zone_2/cisco_zone_name_prefix": value => join([$plugin_settings["pure_fabric_name_2"],"_"],'');
"$fabric_zone_2/cisco_zone_name_prefix": value => join([$fabric_name_2,"_"],'');
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

View File

@ -1,6 +1,6 @@
**************************************************************
Guide to the Pure Storage Cinder Plugin version 2.0.0 for Fuel
**************************************************************
********************************************************************
Guide to the Pure Storage Cinder Plugin version 3.0-3.0.0-1 for Fuel
********************************************************************
This document provides instructions for installing, configuring and using
Pure Storage Cinder plugin for Fuel.
@ -33,10 +33,23 @@ Requirements
======================= ==================
Requirement Version/Comment
======================= ==================
Fuel 8.0
Fuel 9.0
============================================
Pre-requisites
--------------
The Pure Storage array should be configured and connected to your network prior
to configuring your OpenStack deployment.
For more information on the Array configuration, follow
the official documentation available from within the
array GUI as shown below (top right of screen under Help section)
.. image:: figures/array_gui_user_guide.png
:width: 100%
Limitations
-----------
@ -55,11 +68,12 @@ Pure Storage Cinder Plugin installation
1. Download the plugin from the `Fuel Plugins Catalog <https://www.mirantis.com/products/openstack-drivers-and-plugins/fuel-plugins/>`_.
2. Copy the plugin to an already installed Fuel Master node. If you do not
have the Fuel Master node yet, please follow `the instructions <https://docs.mirantis.com/openstack/fuel/fuel-8.0/quickstart-guide.html#quickstart-guide>`_:
have the Fuel Master node yet, please follow `the instructions <https://docs.mirantis.com/openstack/fuel/fuel-9.0/quickstart-guide.html#quickstart-guide>`_:
::
scp fuel-plugin-purestorage-cinder-2.0-2.0.0-1.noarch.rpm root@:<the_Fuel_Master_node_IP>:/tmp
scp fuel-plugin-purestorage-cinder-3.0-3.0.0-1.noarch.rpm \
root@:<the_Fuel_Master_node_IP>:/tmp
3. Log into the Fuel Master node.
@ -68,7 +82,7 @@ Pure Storage Cinder Plugin installation
::
cd /tmp
fuel plugins --install fuel-plugin-purestorage-cinder-2.0-2.0.0-1.noarch.rpm
fuel plugins --install fuel-plugin-purestorage-cinder-3.0-3.0.0-1.noarch.rpm
5. Check if the plugin was installed successfully
@ -77,7 +91,7 @@ Pure Storage Cinder Plugin installation
# fuel plugins
id | name | version | package_version
---|--------------------------------|---------|----------------
1 | fuel-plugin-purestorage-cinder | 2.0.0 | 4.0.0
1 | fuel-plugin-purestorage-cinder | 3.0.0 | 4.0.0
6. After the plugin is installed, `create a new OpenStack environment <https://docs.mirantis.com/openstack/fuel/fuel-8.0/user-guide.html#create-a-new-openstack-environment>`_ using the Fuel UI Wizard.
@ -85,9 +99,9 @@ Pure Storage Cinder Plugin installation
8. Open the Settings tab of the Fuel Web UI and scroll down the page. Select the Storage section to enable Pure Storage driver in Cinder plugin checkbox.
.. image:: figures/cinder-purestorage-liberty-plugin-1.png
.. image:: figures/cinder-purestorage-mitaka-plugin-1.png
:width: 100%
.. image:: figures/cinder-purestorage-liberty-plugin-2.png
.. image:: figures/cinder-purestorage-mitaka-plugin-2.png
:width: 100%
9. Enter the Purity API Token and the IP address of the management VIP of the Pure Storage FlashArray.
@ -96,7 +110,8 @@ Pure Storage Cinder Plugin installation
::
System->Users->API Tokens: Select User, click gear icon by use select 'Show API Token'
System->Users->API Tokens: Select User, click gear icon by user \
and select 'Show API Token'
.. image:: figures/api-Collection.png
:width: 100%
@ -111,7 +126,8 @@ or use the following Purity CLI command to obtain the API token:
::
System->System->Configuration->Networking: Use the IP addresses associated with 'vir0'
System->System->Configuration->Networking: Use the IP address \
associated with 'vir0'
.. image:: figures/VIP-Collection.png
:width: 100%
@ -122,7 +138,7 @@ or use the following Purity CLI command to obtain the VIP address:
# purenetwork list vir0
10. Select the defaults for all other Pure Storage options. More details on these options can be found in the `Pure Storage Fuel Plugin documentation <https://xxx.purestorage.com>`_.
10. Select the defaults for all other Pure Storage options. Each selectable option has a description in the Fuel GUI.
11. If using Fibre Channel as the storage protocol you need to select the zoning method to be used in your deployment. If you are configuring your own zones then select 'Manual' but you can select 'Automatic' if you wish to use the Openstack Fibre Channel Zone Manager. If 'Automatic' is selected you will need to provide the necessary information for the Zone Manager to communicate and configure your fibre channel switches.
@ -133,8 +149,12 @@ User Guide
==========
Once the OpenStack instance is deployed by Fuel the Pure Storage plugin provides no
user configurable or maintainable options. As part of this installation a new multipath.conf
file is provided to all nodes. Ensure that other device entries required for your
user configurable or maintainable options.
Validation of the plugins correct operation can be performed by comparing the parameters selected in the Fuel GUI to those added into the
``/etc/cinder/cinder.conf`` and ``/etc/nova/nova.conf`` files on the Controller and Compute nodes respectively.
As part of this installation a new multipath.conf file is provided to all nodes. Ensure that other device entries required for your
local environment are added to these files and multipath is restarted to accept any changes.
The Pure Storage driver (Once configured by Fuel) will output all logs into the
@ -155,4 +175,4 @@ Appendix
1. `OpenStack Cinder Driver for Pure Storage Flash Array <http://stackalytics.com/report/driverlog?project_id=openstack%2Fcinder&vendor=Pure%20iSCSI%2FFC%20Storage>`_
2. `Pure Storage Flash Array User Guide <http://community.purestorage.com/ekgav24373/attachments/ekgav24373/pure-storage-knowledge/294/1/Purity%204.5%20FlashArray%20User%20Guide.pdf>`_
2. `Pure Storage Flash Array Volume Driver <http://docs.openstack.org/mitaka/config-reference/content/pure-storage-driver.html>`_

View File

@ -62,8 +62,121 @@ attributes:
description: "Disables multipathing for Nova compute servers - applies to both iSCSI and FC"
label: "Multipathing for iSCSI and FC in Nova Compute servers (iscsi_use_multipath)"
description: 'Enable/Disable multipathing for Nova compute servers.'
weight: 25
type: "radio"
pure_replication:
value: "false"
values:
- data: "false"
label: "False"
description: 'Disable replicaton to remote Pure Storage array'
- data: "true"
label: "True"
description: 'Enable replicaton to remote Pure Storage array'
label: 'Replication to Remote Pure Storage array'
description: 'Configure replication to a remote array - remote array connection must be created manually'
weight: 26
type: "radio"
pure_replication_name:
value: ''
label: 'Name of array to replicate data to'
description: 'Name of remote replication target array'
weight: 27
type: "text"
restrictions:
- condition: "settings:fuel-plugin-purestorage-cinder.pure_replication.value != 'true'"
action: "hide"
regex:
source: '^(?!\s*$).+'
error: "Error: remote array name field cannot be empty"
pure_replication_ip:
value: ''
label: 'IP address of remote array'
description: 'IP address of remote Pure Storage array'
weight: 28
type: "text"
restrictions:
- condition: "settings:fuel-plugin-purestorage-cinder.pure_replication.value != 'true'"
action: "hide"
regex:
source: '^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$'
error: "Error: Enter in regular IP address dot notation"
pure_replication_api:
value: ''
label: 'API Token for remote Pure Storage'
description: 'Purity API token used to perform actions on the remote array.'
weight: 29
type: "text"
restrictions:
- condition: "settings:fuel-plugin-purestorage-cinder.pure_replication.value != 'true'"
action: "hide"
regex:
source: '^(?!\s*$).+'
error: "Error: API token field cannot be empty"
pure_replication_default:
value: "true"
values:
- data: "true"
label: "True"
description: 'Use default replication retention vlaues (see documentation)'
- data: "false"
label: "False"
description: 'Manually define replication retention settings'
label: 'Replication Retention Configuration'
description: 'Configure the remote replication retention parameters or leave as default'
weight: 30
type: "radio"
restrictions:
- condition: "settings:fuel-plugin-purestorage-cinder.pure_replication.value != 'true'"
action: "hide"
pure_interval:
value: "900"
label: ""
description: ""
weight: 31
type: "text"
restrictions:
- condition: "settings:fuel-plugin-purestorage-cinder.pure_replication.value != 'true' or (settings:fuel-plugin-purestorage-cinder.pure_replication.value != 'true' and settings:fuel-plugin-purestorage-cinder.pure_replicationi_default.value != 'true')"
action: "hide"
regex:
source: '^(34560000|[1-3][0-4][0-5][0-5][0-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[3-9][0-9][0-9])$'
error: "Error: Range for snapshot replication interval is 300 - 34560000 seconds"
pure_retention_short:
value: "14400"
label: ""
description: ""
weight: 32
type: "text"
restrictions:
- condition: "settings:fuel-plugin-purestorage-cinder.pure_replication.value != 'true' or (settings:fuel-plugin-purestorage-cinder.pure_replication.value != 'true' and settings:fuel-plugin-purestorage-cinder.pure_replicationi_default.value != 'true')"
action: "hide"
regex:
source: '^(34560000|[1-3][0-4][0-5][0-5][0-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9]|[6-9][0-9])$'
error: "Error: Range for maximum time all snapshots can be retained for is 60 - 34560000 seconds"
pure_retention_long:
value: "7"
label: ""
description: ""
weight: 33
type: "text"
restrictions:
- condition: "settings:fuel-plugin-purestorage-cinder.pure_replication.value != 'true' or (settings:fuel-plugin-purestorage-cinder.pure_replication.value != 'true' and settings:fuel-plugin-purestorage-cinder.pure_replicationi_default.value != 'true')"
action: "hide"
regex:
source: '^(4000|[1-3][0-9][0-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9]|[1-9])$'
error: "Error: Maximum number of days to keep snapshots is 4000"
pure_retention_long_day:
value: "3"
label: ""
description: ""
weight: 34
type: "text"
restrictions:
- condition: "settings:fuel-plugin-purestorage-cinder.pure_replication.value != 'true' or (settings:fuel-plugin-purestorage-cinder.pure_replication.value != 'true' and settings:fuel-plugin-purestorage-cinder.pure_replicationi_default.value != 'true')"
action: "hide"
regex:
source: '^(1440|1[0-4][0-3][0-9]|[1-9][0-9][0-9]|[1-9][0-9]|[1-9])$'
error: "Error: Maximum number of snapshots per day is 1440"
pure_glance_image_cache:
value: "false"
values:
@ -75,13 +188,13 @@ attributes:
description: 'Enable the Glance Image-Cache for Cinder backend'
label: 'Glance Image-Cache (image_volume_cache_enabled)'
description: 'Configure the Glance Image-Cache for Cinder'
weight: 30
weight: 35
type: "radio"
pure_glance_cache_count:
value: '0'
label: 'Glance Image Cache Max Count (image_volume_cache_max_count)'
description: 'Maximum number of images in Glance Image Cache (0 = no limit)'
weight: 31
weight: 36
type: "text"
restrictions:
- condition: "settings:fuel-plugin-purestorage-cinder.pure_glance_image_cache.value != 'true'"
@ -93,7 +206,7 @@ attributes:
value: '0'
label: 'Glance Image Cache Size (image_volume_cache_max_size_gb)'
description: 'Maximum size for Glance Image Cache [GB] 90 = no limit)'
weight: 35
weight: 37
type: "text"
restrictions:
- condition: "settings:fuel-plugin-purestorage-cinder.pure_glance_image_cache.value != 'true'"
@ -101,6 +214,19 @@ attributes:
regex:
source: '^[0-9]+$'
error: "Error: Only numbers are permitted"
pure_eradicate:
value: "false"
values:
- data: "false"
label: "False"
description: "Disables auto-eradication of deleted volumes"
- data: "true"
label: "True"
description: "Enables auto-eradication of deleted volumes"
label: "Auto-Eradication of Deleted Volumes"
description: 'Select whether to auto-eradicate volumes on deletion or leave as default'
weight: 38
type: "radio"
pure_protocol:
value: "iSCSI"
values:
@ -112,7 +238,7 @@ attributes:
description: "Enables Fibre Channel protocol for block storage volumes"
label: "Protocol for Pure Storage block access"
description: 'Select block storage protocol for FlashArray.'
weight: 38
weight: 39
type: "radio"
pure_fczm_config:
value: "manual"
@ -128,7 +254,7 @@ attributes:
restrictions:
- condition: "settings:fuel-plugin-purestorage-cinder.pure_protocol.value != 'FC'"
action: "hide"
weight: 39
weight: 40
type: "radio"
pure_chap:
value: "false"

View File

@ -1,8 +1,8 @@
name: fuel-plugin-purestorage-cinder
title: Pure Storage driver for Cinder
version: '2.0.0'
version: '3.0.0'
description: Enables the Pure Storage driver in Cinder
fuel_version: ['8.0']
fuel_version: ['9.0']
licenses: ['Apache License Version 2.0']
authors: ['Simon Dodsley <simon@purestorage.com>']
homepage: 'https://github.com/openstack/fuel-plugin-purestorage-cinder'
@ -11,13 +11,8 @@ is_hotpluggable: false
releases:
- os: ubuntu
version: 2015.1-8.0
mode: ['ha', 'multinode']
deployment_scripts_path: deployment_scripts/
repository_path: repositories/ubuntu
- os: ubuntu
version: liberty-8.0
mode: ['ha', 'multinode']
version: mitaka-9.0
mode: ['ha']
deployment_scripts_path: deployment_scripts/
repository_path: repositories/ubuntu