New FCZM code and MPIO file and doc updates

Added FC backend code and updated GUI yaml layout
Reformat yaml and text, remove principal_switch_wwn as
deprecated and fix fc-zone-manager stanza build section
Reorder options
Add in option to use manual or automatic FCZM - change
YAML conditions for this and add in code check for this
condition

Add multipath.conf file with Pure defaults

Update docs to include API and VIP instructions and multipath
notes and known issues

Change-Id: Ia3a524f0a48689a502c73f3bde93c189c4e74751
This commit is contained in:
sdodsley 2015-12-30 16:17:37 -05:00
parent 3b977bc9cf
commit 956a257465
7 changed files with 368 additions and 249 deletions

View File

@ -1,3 +1,19 @@
blacklist {
devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
devnode "^hd[a-z][0-9]*"
devnode "^cciss!c[0-9]d[0-9]*[p[0-9]*]"
}
defaults {
verbosity 2
polling_interval 10
wwids_file /etc/multipath/wwids
}
blacklist_exceptions {
}
devices {
device {
vendor "PURE"

View File

@ -23,6 +23,9 @@ class plugin_purestorage_cinder::common {
package {$plugin_purestorage_cinder::params::iscsi_package_name:
ensure => 'installed'
}
package {$plugin_purestorage_cinder::params::multipath_package_name:
ensure => 'installed'
}
case $::osfamily {
'Debian': {
service {$plugin_purestorage_cinder::params::iscsi_service_name:
@ -52,9 +55,7 @@ class plugin_purestorage_cinder::common {
fail("unsuported osfamily ${::osfamily}, currently Debian and Redhat are the only supported platforms")
}
}
package {$plugin_purestorage_cinder::params::multipath_package_name:
ensure => 'installed'
}
service {$plugin_purestorage_cinder::params::multipath_service_name:
ensure => 'running',
enable => true,
@ -63,4 +64,13 @@ class plugin_purestorage_cinder::common {
status => 'pgrep multipathd',
require => Package[$plugin_purestorage_cinder::params::multipath_package_name],
}
file {'multipath.conf':
path => '/etc/multipath.conf',
mode => '0644',
owner => root,
group => root,
source => 'puppet:///modules/plugin_purestorage_cinder/multipath.conf',
require => Package[$plugin_purestorage_cinder::params::multipath_package_name],
notify => Service[$plugin_purestorage_cinder::params::multipath_package_name],
}

View File

@ -58,6 +58,7 @@ class plugin_purestorage_cinder::controller (
}
}
# Insert Glance Image Cache for Cinder settings
if $plugin_settings['image_volume_cache_enabled'] {
keystone_tenant { 'cinder_internal_tenant':
ensure => present,
@ -89,6 +90,95 @@ 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') {
cinder_config {
"$section/zoning_mode": value => "Fabric";
}
# Now add in the [fc-zone-manager] stanza
case $plugin_settings['pure_switch_vendor'] {
'Brocade': {
cinder_config {
"fc-zone-manager/brcd_sb_connector": value => "cinder.zonemanager.drivers.brocade.brcd_fc_zone_client_cli.BrcdFCZoneClientCLI";
"fc-zone-manager/fc_san_lookup_service": value => "cinder.zonemanager.drivers.brocade.brcd_fc_san_lookup_service.BrcdFCSanLookupService";
"fc-zone-manager/zone_driver": value => "cinder.zonemanager.drivers.brocade.brcd_fc_zone_driver.BrcdFCZoneDriver";
}
}
'Cisco': {
cinder_config {
"fc-zone-manager/cisco_sb_connector": value => "cinder.zonemanager.drivers.cisco.cisco_fc_zone_client_cli.CiscoFCZoneClientCLI";
"fc-zone-manager/fc_san_lookup_service": value => "cinder.zonemanager.drivers.cisco.cisco_fc_san_lookup_service.CiscoFCSanLookupService";
"fc-zone-manager/zone_driver": value => "cinder.zonemanager.drivers.cisco.cisco_fc_zone_driver.CiscoFCZoneDriver";
}
}
}
case $plugin_settings['pure_fabric_count'] {
'1': {
cinder_config {
"fc-zone-manager/fc_fabric_names": value => $plugin_settings["pure_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"]);
}
}
}
$fabric_zone_1 = $plugin_settings["pure_fabric_name_1"]
$fabric_zone_2 = $plugin_settings["pure_fabric_name_2"]
# Now add in stanzas for each fabric zone depending on the switch vendor
case $plugin_settings['pure_switch_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_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"],'_');
}
if $plugin_settings['pure_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_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"],'_');
}
}
}
'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_port": value => '22';
"$fabric_zone_1/cisco_zoning_vsan": value => $plugin_settings["pure_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"],'_');
}
if $plugin_settings['pure_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_port": value => '22';
"$fabric_zone_2/cisco_zoning_vsan": value => $plugin_settings["pure_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"],'_');
}
}
}
}
}
Cinder_config<||> ~> Service['cinder_volume']
service { 'cinder_volume':

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

View File

@ -90,22 +90,58 @@ Pure Storage Cinder Plugin installation
:width: 100%
#. Enter the Purity API Token and the IP address of the management VIP of the Pure Storage FlashArray.
Obtain the Purity API token from the Pure Storage GUI
#. Select the defaults for all other Pure Storage options.
(System->Users->API Tokens: Select User, click gear icon by use select 'Show API Token')
.. image:: figures/API-collection.png
:width: 100%
or use the following Purity CLI command to obtain the API token:
::
# pureadmin list --api-token --expose <USER>
Obtain the Pure Storage VIP from the Pure Storage GUI
(System->System->Configuration->Networking: e IP addresses associated with 'vir0')
.. image:: figures/VIP-collection.png
:width: 100%
or use the following Purity CLI command to obtain the VIP address:
::
# purenetwork list vir0
#. 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>`_.
User Guide
==========
Once the OpenStack instance is deployed by Fuel the Pure Storage plugin provides no
user configurable or maintainable options.
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
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
cinder-volume process log file with the 'Pure Storage' title.
Known issues
============
There are no known issues at this time.
#. Ensure your controller nodes have access to the public internet to allow for correct Python module
installation required by the Fuel plugin
#. If you environment is deployed with multiple controllers for HA, you cannot run all the
Cinder Volume services at the same time in Active-Active mode
#. There are specific changes that need to be made to the local deb packages. More details can be found
in the Pure Storage/Mirantis Reference Architecture.
Appendix
========

View File

@ -6,7 +6,7 @@ attributes:
weight: 10
type: "checkbox"
pure_san_ip:
value: ''
value: ""
label: 'Pure Storage Management IP (san_ip)'
description: 'The hostname (or IP address) for the Pure Storage Management VIP.'
weight: 15
@ -15,14 +15,40 @@ attributes:
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_api:
value: ''
value: ""
label: 'API Token for Pure Storage (pure_api_token)'
description: 'Purity API token used to perform actions on the FlashArray.'
weight: 20
type: "text"
regex:
source: '\S'
source: '^(?!\s*$).+'
error: "Error: API token field cannot be empty"
pure_multipath:
value: "true"
values:
- data: "true"
label: "True"
description: "Enables multipathing for image transfers"
- data: "false"
label: "False"
description: "Disables multipathing for image transfers"
label: "Pure Storage Multipath for Image Transfers (use_multipath_for_image_xfer)"
description: 'Enable/Disable multipathing for image transfers.'
weight: 25
type: "radio"
pure_nova_multipath:
value: "false"
values:
- data: "true"
label: "True"
description: "Enables multipathing for Nova compute servers"
- data: "false"
label: "False"
description: "Disables multipathing for Nova compute servers"
label: "Multipathing for Nova Compute servers (iscsi_use_multipath)"
description: 'Enable/Disable multipathing for Nova compute servers.'
weight: 26
type: "radio"
pure_glance_image_cache:
value: "false"
values:
@ -40,7 +66,7 @@ attributes:
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: 35
weight: 31
type: "text"
restrictions:
- condition: "settings:fuel-plugin-purestorage-cinder.pure_glance_image_cache.value != 'true'"
@ -71,226 +97,24 @@ 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: 60
weight: 38
type: "radio"
pure_fabric_count:
value: '2'
type: "radio"
weight: 61
pure_fczm_config:
value: "manual"
values:
- data: '1'
label: "1"
- data: '2'
label: "2"
label: "Number of SAN fabrics"
description: "Number of SAN fabrics connected to compute and controller nodes"
restrictions:
- condition: "settings:fuel-plugin-purestorage-cinder.pure_protocol.value != 'FC'"
action: "hide"
pure_fabric_name_1:
value: ''
label: "Name of Fabric 1"
description: "Name of the active zone set for the zoning VSAN if your switch vendor is CISCO, or name of active zone configuration if Brocade. Additionally used to define zone_name_prefix."
weight: 61
type: "text"
- data: "automatic"
label: "Automatic"
description: "Use automated Fibre Channel Zone Manager for zoning"
- data: "manual"
label: "Manual"
description: "Use manual fibre channel zoning"
label: "Fibre Channel Zoning Manager"
description: "Method for configuring fibre channel zones"
restrictions:
- condition: "settings:fuel-plugin-purestorage-cinder.pure_protocol.value != 'FC'"
action: "hide"
regex:
source: '/S'
error: "Error: Fabric name cannot be blank"
pure_switch_vendor_1:
value: ''
values:
- data: "Brocade"
label: "Brocade"
description: 'Fibre Channel SAN Switch provider'
- data: "CISCO"
label: "CISCO"
description: 'Fibre Channel SAN Switch provider'
label: "Fibre Channel SAN Switch Provider for Fabric 1"
description: "FC Vendor"
weight: 61
weight: 39
type: "radio"
restrictions:
- condition: "settings:fuel-plugin-purestorage-cinder.pure_protocol.value != 'FC'"
action: "hide"
pure_fabric_ip_1:
value: ''
type: "text"
weight: 61
label: "IP address"
description: "Management IP address of SAN switch for fabric number 1"
restrictions:
- condition: "settings:fuel-plugin-purestorage-cinder.pure_protocol.value != 'FC'"
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_username_1:
value: ''
type: "text"
weight: 61
label: "Fabric User ID for Fabric 1"
description: "Fabric switch username (with admin privilages)"
restrictions:
- condition: "settings:fuel-plugin-purestorage-cinder.pure_protocol.value != 'FC'"
action: "hide"
regex:
source: '/S'
error: "Error: Username cannot be blank"
pure_password_1:
value: ''
type: "text"
weight: 61
label: "Password for fabric switch in Fabric 1"
description: "Fabric switch password for username above"
restrictions:
- condition: "settings:fuel-plugin-purestorage-cinder.pure_protocol.value != 'FC'"
action: "hide"
regex:
source: '/S'
error: "Error: Password cannot be blank"
pure_zoning_policy_1:
value: 'initiator-target'
values:
- data: "initiator-target"
label: "initiator-target"
- data: "target"
label: "target"
label: "Zoning Policy"
description: "Fabric 1 Zoning Policy"
weight: 61
type: "radio"
restrictions:
- condition: "settings:fuel-plugin-purestorage-cinder.pure_protocol.value != 'FC'"
action: "hide"
pure_vsan_1:
value: ''
label: "VSAN"
description: "Number of zoning VSAN with active zone set which is the same as the name of Fabric 1"
weight: 61
type: "text"
restrictions:
- condition: "settings:fuel-plugin-purestorage-cinder.pure_protocol.value != 'FC' and settings:fuel-plugin-purestorage-cinder.pure_switch_vendor_1 != 'CISCO'"
action: "hide"
regex:
source: '^[0-9]{1, 4093}$`'
error: "Error: VSAN must be in range 1-4093"
pure_principal_wwn_1:
value: ''
label: "Principal Switch WWN"
description: "WWN of switch designated as principal in your fabric. Determine from FOS command fabricShow."
weight: 61
type: "text"
restrictions:
- condition: "settings:fuel-plugin-purestorage-cinder.pure_protocol.value != 'FC' and settings:fuel-plugin-purestorage-cinder.pure_switch_vendor_1 != 'Brocade'"
action: "hide"
regex:
source: '^([0-9a-fA-F][0-9a-fA-F]:){7}([0-9a-fA-F][0-9a-fA-F])$'
error: "Error: Enter in WWN address format xx:xx:xx:xx:xx:xx:xx:xx"
pure_fabric_name_2:
value: ''
label: "Name of Fabric 2"
description: "Name of the active zone set for zoning VSAN if your switch vendor is CISCO, or name of active zone configuration if Brocade. Additionally used to define zone_name_prefix."
weight: 62
type: "text"
restrictions:
- condition: "settings:fuel-plugin-purestorage-cinder.pure_protocol.value != 'FC' and settings:fuel-plugin-purestorage-cinder.pure_fabric_count != '2'"
action: "hide"
regex:
source: '/S'
error: "Error: Fabric name cannot be blank"
pure_switch_vendor_2:
value: ''
values:
- data: "Brocade"
label: "Brocade"
description: 'Fibre Channel SAN Switch provider'
- data: "CISCO"
label: "CISCO"
description: 'Fibre Channel SAN Switch provider'
label: "Fibre Channel SAN Switch Provider for Fabric 2"
description: "FC Vendor"
weight: 62
type: "radio"
restrictions:
- condition: "settings:fuel-plugin-purestorage-cinder.pure_protocol.value != 'FC' and settings:fuel-plugin-purestorage-cinder.pure_fabric_count != '2'"
action: "hide"
pure_fabric_ip_2:
value: ''
type: "text"
weight: 62
label: "IP address"
description: "Management IP address of SAN switch for fabric number 2"
restrictions:
- condition: "settings:fuel-plugin-purestorage-cinder.pure_protocol.value != 'FC' and settings:fuel-plugin-purestorage-cinder.pure_fabric_count != '2'"
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_username_2:
value: ''
type: "text"
weight: 62
label: "Fabric User ID for Fabric 2"
description: "Fabric switch username (with admin privilages)"
restrictions:
- condition: "settings:fuel-plugin-purestorage-cinder.pure_protocol.value != 'FC' and settings:fuel-plugin-purestorage-cinder.pure_fabric_count != '2'"
action: "hide"
regex:
source: '/S'
error: "Error: Username cannot be blank"
pure_password_2:
value: ''
type: "text"
weight: 62
label: "Password for fabric switch in Fabric 2"
description: "Fabric switch password for username above"
restrictions:
- condition: "settings:fuel-plugin-purestorage-cinder.pure_protocol.value != 'FC' and settings:fuel-plugin-purestorage-cinder.pure_fabric_count != '2'"
action: "hide"
regex:
source: '/S'
error: "Error: Password cannot be blank"
pure_zoning_policy_2:
value: 'initiator-target'
values:
- data: "initiator-target"
label: "initiator-target"
- data: "target"
label: "target"
label: "Zoning Policy"
description: "Fabric 2 Zoning Policy"
weight: 62
type: "radio"
restrictions:
- condition: "settings:fuel-plugin-purestorage-cinder.pure_protocol.value != 'FC' and settings:fuel-plugin-purestorage-cinder.pure_fabric_count != '2'"
action: "hide"
pure_vsan_2:
value: ''
label: "VSAN"
description: "Number of zoning VSAN with active zone set which is the same as the name of Fabric 2"
weight: 62
type: "text"
restrictions:
- condition: "settings:fuel-plugin-purestorage-cinder.pure_protocol.value != 'FC' and settings:fuel-plugin-purestorage-cinder.pure_switch_vendor_2 != 'Brocade' and settings:fuel-plugin-purestorage-cinder.pure_fabric_count != '2'"
action: "hide"
regex:
source: '^[0-9]{1, 4093}$`'
error: "Error: VSAN must be in range 1-4093"
pure_principal_wwn_2:
value: ''
label: "Principal Switch WWN"
description: "WWN of switch designated as principal in your fabric. Determine from FOS command fabricShow."
weight: 62
type: "text"
restrictions:
- condition: "settings:fuel-plugin-purestorage-cinder.pure_protocol.value != 'FC' and settings:fuel-plugin-purestorage-cinder.pure_fabric_count != '2' and settings:fuel-plugin-purestorage-cinder.pure_switch_vendor_1 != 'Brocade'"
action: "hide"
regex:
source: '^([0-9a-fA-F][0-9a-fA-F]:){7}([0-9a-fA-F][0-9a-fA-F])$'
error: "Error: Enter in WWN address format xx:xx:xx:xx:xx:xx:xx:xx"
pure_chap:
value: "false"
values:
@ -302,31 +126,174 @@ attributes:
description: "Disables CHAP on iSCSI connections to FlashArray"
label: "Pure Storage iSCSI CHAP (use_chap_auth)"
description: 'Enable/Disable CHAP on iSCSI connections to the FlashArray.'
weight: 60
restrictions:
- condition: "settings:fuel-plugin-purestorage-cinder.pure_protocol.value != 'iSCSI'"
action: "hide"
weight: 40
type: "radio"
pure_multipath:
value: "true"
pure_switch_vendor:
value: "Brocade"
values:
- data: "true"
label: "True"
description: "Enables multipathing for image transfers"
- data: "false"
label: "False"
description: "Disables multipathing for image transfers"
label: "Pure Storage Multipath for Image Transfers (use_multipath_for_image_xfer)"
description: 'Enable/Disable multipathing for image transfers.'
weight: 60
type: "radio"
pure_nova_multipath:
value: "false"
- data: "Brocade"
label: "Brocade"
- data: "Cisco"
label: "Cisco"
label: "Fibre Channel SAN Switch Provider"
description: "FC Vendor"
weight: 40
type: "select"
restrictions:
- condition: "settings:fuel-plugin-purestorage-cinder.pure_fczm_config.value != 'automatic' or settings:fuel-plugin-purestorage-cinder.pure_protocol.value == 'iSCSI' or (settings:fuel-plugin-purestorage-cinder.pure_protocol.value == 'FC' and settings:fuel-plugin-purestorage-cinder.pure_fczm_config.value == 'manual')"
action: "hide"
pure_fabric_count:
value: '2'
type: "select"
weight: 41
values:
- data: "true"
label: "True"
description: "Enables multipathing for Nova compute servers"
- data: "false"
label: "False"
description: "Disables multipathing for Nova compute servers"
label: "Multipathing for Nova Compute servers (iscsi_use_multipath)"
description: 'Enable/Disable multipathing for Nova compute servers.'
weight: 60
type: "radio"
- data: '1'
label: "1"
- data: '2'
label: "2"
label: "Number of SAN fabrics"
description: "Number of SAN fabrics connected to compute and controller nodes"
restrictions:
- condition: "settings:fuel-plugin-purestorage-cinder.pure_fczm_config.value != 'automatic' or settings:fuel-plugin-purestorage-cinder.pure_protocol.value == 'iSCSI' or (settings:fuel-plugin-purestorage-cinder.pure_protocol.value == 'FC' and settings:fuel-plugin-purestorage-cinder.pure_fczm_config.value == 'manual')"
action: "hide"
pure_fabric_name_1:
value: ""
label: "Name of Fabric 1"
description: "Name of the active zone set for the zoning VSAN if your switch vendor is Cisco, or name of active zone configuration if Brocade. Used in definition of 'zone_name_prefix'."
weight: 42
type: "text"
restrictions:
- condition: "settings:fuel-plugin-purestorage-cinder.pure_fczm_config.value != 'automatic' or settings:fuel-plugin-purestorage-cinder.pure_protocol.value == 'iSCSI' or (settings:fuel-plugin-purestorage-cinder.pure_protocol.value == 'FC' and settings:fuel-plugin-purestorage-cinder.pure_fczm_config.value == 'manual')"
action: "hide"
regex:
source: '^(?!\s*$).+'
error: "Error: Fabric name cannot be blank"
pure_fabric_ip_1:
value: ""
type: "text"
weight: 43
label: "IP address of Fabric 1 switch"
description: "Management IP address of SAN switch for fabric number 1"
restrictions:
- condition: "settings:fuel-plugin-purestorage-cinder.pure_fczm_config.value != 'automatic' or settings:fuel-plugin-purestorage-cinder.pure_protocol.value == 'iSCSI' or (settings:fuel-plugin-purestorage-cinder.pure_protocol.value == 'FC' and settings:fuel-plugin-purestorage-cinder.pure_fczm_config.value == 'manual')"
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_username_1:
value: ""
type: "text"
weight: 44
label: "User ID for Fabric 1 switch"
description: "Fabric switch username (with admin privilages)"
restrictions:
- condition: "settings:fuel-plugin-purestorage-cinder.pure_fczm_config.value != 'automatic' or settings:fuel-plugin-purestorage-cinder.pure_protocol.value == 'iSCSI' or (settings:fuel-plugin-purestorage-cinder.pure_protocol.value == 'FC' and settings:fuel-plugin-purestorage-cinder.pure_fczm_config.value == 'manual')"
action: "hide"
regex:
source: '^(?!\s*$).+'
error: "Error: Username cannot be blank"
pure_password_1:
value: ""
type: "password"
weight: 45
label: "Password for Fabric 1 switch"
description: "Fabric switch password for username above"
restrictions:
- condition: "settings:fuel-plugin-purestorage-cinder.pure_fczm_config.value != 'automatic' or settings:fuel-plugin-purestorage-cinder.pure_protocol.value == 'iSCSI' or (settings:fuel-plugin-purestorage-cinder.pure_protocol.value == 'FC' and settings:fuel-plugin-purestorage-cinder.pure_fczm_config.value == 'manual')"
action: "hide"
regex:
source: '^(?!\s*$).+'
error: "Error: Password cannot be blank"
pure_vsan_1:
value: ""
label: "VSAN for Fabric 1"
description: "Number of zoning VSAN with active zone set which is the same as the name of Fabric 1"
weight: 46
type: "text"
restrictions:
- condition: "settings:fuel-plugin-purestorage-cinder.pure_fczm_config.value != 'automatic' or settings:fuel-plugin-purestorage-cinder.pure_protocol.value == 'iSCSI' or (settings:fuel-plugin-purestorage-cinder.pure_protocol.value != 'FC' and settings:fuel-plugin-purestorage-cinder.pure_fczm_config.value != 'manual') or (settings:fuel-plugin-purestorage-cinder.pure_protocol.value == 'FC' and settings:fuel-plugin-purestorage-cinder.pure_fczm_config.value != 'manual' and settings:fuel-plugin-purestorage-cinder.pure_switch_vendor.value != 'Cisco')"
action: "hide"
regex:
source: '^(409[0-3]|40[1-8][0-9]|[1-3][0-9][0-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9]|[1-9])$'
error: "Error: VSAN must be in range 1-4093"
pure_zone_prefix_1:
value: ""
label: "Zoning prefix for Fabric 1"
description: "Prefix for zone name created by FCZM (Blank field will use default of 'openstack')"
weight: 47
type: "text"
restrictions:
- condition: "settings:fuel-plugin-purestorage-cinder.pure_fczm_config.value != 'automatic' or settings:fuel-plugin-purestorage-cinder.pure_protocol.value == 'iSCSI' or (settings:fuel-plugin-purestorage-cinder.pure_protocol.value == 'FC' and settings:fuel-plugin-purestorage-cinder.pure_fczm_config.value == 'manual')"
action: "hide"
pure_fabric_name_2:
value: ""
label: "Name of Fabric 2"
description: "Name of the active zone set for the zoning VSAN if your switch vendor is Cisco, or name of active zone configuration if Brocade. Used in definition of 'zone_name_prefix'."
weight: 51
type: "text"
restrictions:
- condition: "settings:fuel-plugin-purestorage-cinder.pure_fczm_config.value != 'automatic' or settings:fuel-plugin-purestorage-cinder.pure_protocol.value == 'iSCSI' or (settings:fuel-plugin-purestorage-cinder.pure_protocol.value != 'FC' and settings:fuel-plugin-purestorage-cinder.pure_fczm_config.value != 'manual') or (settings:fuel-plugin-purestorage-cinder.pure_protocol.value == 'FC' and settings:fuel-plugin-purestorage-cinder.pure_fczm_config.value != 'manual' and settings:fuel-plugin-purestorage-cinder.pure_fabric_count.value != '2')"
action: "hide"
regex:
source: '^(?!\s*$).+'
error: "Error: Fabric name cannot be blank"
pure_fabric_ip_2:
value: ""
type: "text"
weight: 52
label: "IP address of Fabric 2 switch"
description: "Management IP address of SAN switch for fabric number 2"
restrictions:
- condition: "settings:fuel-plugin-purestorage-cinder.pure_fczm_config.value != 'automatic' or settings:fuel-plugin-purestorage-cinder.pure_protocol.value == 'iSCSI' or (settings:fuel-plugin-purestorage-cinder.pure_protocol.value != 'FC' and settings:fuel-plugin-purestorage-cinder.pure_fczm_config.value != 'manual') or (settings:fuel-plugin-purestorage-cinder.pure_protocol.value == 'FC' and settings:fuel-plugin-purestorage-cinder.pure_fczm_config.value != 'manual' and settings:fuel-plugin-purestorage-cinder.pure_fabric_count.value != '2')"
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_username_2:
value: ""
type: "text"
weight: 53
label: "User ID for Fabric 2 switch"
description: "Fabric switch username (with admin privilages)"
restrictions:
- condition: "settings:fuel-plugin-purestorage-cinder.pure_fczm_config.value != 'automatic' or settings:fuel-plugin-purestorage-cinder.pure_protocol.value == 'iSCSI' or (settings:fuel-plugin-purestorage-cinder.pure_protocol.value != 'FC' and settings:fuel-plugin-purestorage-cinder.pure_fczm_config.value != 'manual') or (settings:fuel-plugin-purestorage-cinder.pure_protocol.value == 'FC' and settings:fuel-plugin-purestorage-cinder.pure_fczm_config.value != 'manual' and settings:fuel-plugin-purestorage-cinder.pure_fabric_count.value != '2')"
action: "hide"
regex:
source: '^(?!\s*$).+'
error: "Error: Username cannot be blank"
pure_password_2:
value: ""
type: "password"
weight: 54
label: "Password for fabric 2 switch"
description: "Fabric switch password for username above"
restrictions:
- condition: "settings:fuel-plugin-purestorage-cinder.pure_fczm_config.value != 'automatic' or settings:fuel-plugin-purestorage-cinder.pure_protocol.value == 'iSCSI' or (settings:fuel-plugin-purestorage-cinder.pure_protocol.value != 'FC' and settings:fuel-plugin-purestorage-cinder.pure_fczm_config.value != 'manual') or (settings:fuel-plugin-purestorage-cinder.pure_protocol.value == 'FC' and settings:fuel-plugin-purestorage-cinder.pure_fczm_config.value != 'manual' and settings:fuel-plugin-purestorage-cinder.pure_fabric_count.value != '2')"
action: "hide"
regex:
source: '^(?!\s*$).+'
error: "Error: Password cannot be blank"
pure_vsan_2:
value: ""
label: "VSAN for Fabric 2"
description: "Number of zoning VSAN with active zone set which is the same as the name of Fabric 2"
weight: 56
type: "text"
restrictions:
- condition: "settings:fuel-plugin-purestorage-cinder.pure_fczm_config.value != 'automatic' or settings:fuel-plugin-purestorage-cinder.pure_protocol.value == 'iSCSI' or (settings:fuel-plugin-purestorage-cinder.pure_protocol.value != 'FC' and settings:fuel-plugin-purestorage-cinder.pure_fczm_config.value != 'manual') or (settings:fuel-plugin-purestorage-cinder.pure_protocol.value == 'FC' and settings:fuel-plugin-purestorage-cinder.pure_fczm_config.value != 'manual' and settings:fuel-plugin-purestorage-cinder.pure_fabric_count.value != '2' or (settings:fuel-plugin-purestorage-cinder.pure_fabric_count.value == '2' and settings:fuel-plugin-purestorage-cinder.pure_switch_vendor.value == 'Brocade'))"
action: "hide"
regex:
source: '^(409[0-3]|40[1-8][0-9]|[1-3][0-9][0-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9]|[1-9])$'
error: "Error: VSAN must be in range 1-4093"
pure_zone_prefix_2:
value: ""
label: "Zoning prefix for Fabric 2"
description: "Prefix for zone name created by FCZM (Blank field will use default of 'openstack')"
weight: 57
type: "text"
restrictions:
- condition: "settings:fuel-plugin-purestorage-cinder.pure_fczm_config.value != 'automatic' or settings:fuel-plugin-purestorage-cinder.pure_protocol.value == 'iSCSI' or (settings:fuel-plugin-purestorage-cinder.pure_protocol.value != 'FC' and settings:fuel-plugin-purestorage-cinder.pure_fczm_config.value != 'manual') or (settings:fuel-plugin-purestorage-cinder.pure_protocol.value == 'FC' and settings:fuel-plugin-purestorage-cinder.pure_fczm_config.value != 'manual' and settings:fuel-plugin-purestorage-cinder.pure_fabric_count.value != '2')"
action: "hide"