From 6c234a73ba7bfe2fb20497861c781a926631aec0 Mon Sep 17 00:00:00 2001 From: rajinir Date: Wed, 11 Mar 2020 13:58:35 -0500 Subject: [PATCH] Support for PowerMax Cinder Backend PowerMax config options have changed since Newton. Updating them to the latest and support both iSCSI and FC drivers. CinderPowermaxBackend is also enhanceded to support multiple backends. CinderPowermaxBackendName supports a list of backend names and a new CinderPowermaxMultiConfig parameter provides a way to specify parameter values for each backend. For example see file environments/cinder-dellemc-powermax-config.yaml Depends-On: https://review.opendev.org/#/c/712184 Change-Id: I4429ed2d45661ea82ae38a7050abb2b229953c9c --- ...inder-backend-dellemc-powermax-puppet.yaml | 110 ++++++++++++++++++ .../cinder-dellemc-powermax-config.yaml | 29 +++++ overcloud-resource-registry-puppet.j2.yaml | 1 + .../powermax-driver-d428e372280c44e6.yaml | 6 + roles/Controller.yaml | 1 + roles/ControllerNoCeph.yaml | 1 + roles/ControllerNovaStandalone.yaml | 1 + roles/ControllerStorageDashboard.yaml | 1 + roles/ControllerStorageNfs.yaml | 1 + roles/Standalone.yaml | 1 + roles_data.yaml | 1 + 11 files changed, 153 insertions(+) create mode 100644 deployment/cinder/cinder-backend-dellemc-powermax-puppet.yaml create mode 100644 environments/cinder-dellemc-powermax-config.yaml create mode 100644 releasenotes/notes/powermax-driver-d428e372280c44e6.yaml diff --git a/deployment/cinder/cinder-backend-dellemc-powermax-puppet.yaml b/deployment/cinder/cinder-backend-dellemc-powermax-puppet.yaml new file mode 100644 index 0000000000..577041bd3a --- /dev/null +++ b/deployment/cinder/cinder-backend-dellemc-powermax-puppet.yaml @@ -0,0 +1,110 @@ +# Copyright (c) 2016-2020 Dell Inc, or its subsidiaries. +# +# 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 a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +heat_template_version: rocky + +description: > + Openstack Cinder Dell EMC PowerMax backend + +parameters: + CinderEnablePowermaxBackend: + type: boolean + default: true + CinderPowermaxBackendName: + type: comma_delimited_list + default: 'tripleo_dellemc_powermax' + description: A list of Cinder PoweMax Storage backend names. + CinderPowermaxMultiConfig: + type: json + default: {} + description: > + Dictionary of settings when configuring multiple PowerMax backends. The + hash key is the backend name, and the value is a dictionary of parameter + values unique to that backend. + CinderPowermaxAvailabilityZone: + default: '' + description: > + The availability zone of the Dell EMC PowerMax Cinder backend. + When set, it overrides the default CinderStorageAvailabilityZone. + type: string + CinderPowermaxSanIp: + type: string + CinderPowermaxSanLogin: + type: string + default: 'Admin' + CinderPowermaxSanPassword: + type: string + hidden: true + CinderPowermaxArray: + type: string + default: '' + CinderDellEMCPowermaSrp: + type: string + default: '' + CinderPowermaxPortGroups: + type: string + default: '' + CinderPowermaxStorageProtocol: + type: string + default: 'iSCSI' + constraints: + - allowed_values: [ 'iSCSI', 'FC'] + ServiceData: + default: {} + description: Dictionary packing service data + type: json + ServiceNetMap: + default: {} + description: Mapping of service_name -> network name. Typically set + via parameter_defaults in the resource registry. This + mapping overrides those in ServiceNetMapDefaults. + type: json + DefaultPasswords: + default: {} + type: json + RoleName: + default: '' + description: Role name on which the service is applied + type: string + RoleParameters: + default: {} + description: Parameters specific to the role + type: json + EndpointMap: + default: {} + type: json + description: Mapping of service endpoint -> protocol. Typically set + via parameter_defaults in the resource registry. + +outputs: + role_data: + description: Role data for the Cinder Dell EMC PowerMax backend. + value: + service_name: cinder_backend_dellemc_powermax + config_settings: + map_merge: + - tripleo::profile::base::cinder::volume::cinder_enable_dellemc_powermax_backend: {get_param: CinderEnablePowermaxBackend} + cinder::backend::dellemc_powermax::volume_backend_name: {get_param: CinderPowermaxBackendName} + cinder::backend::dellemc_powermax::volume_multi_config: {get_param: CinderPowermaxMultiConfig} + cinder::backend::dellemc_powermax::san_ip: {get_param: CinderPowermaxSanIp} + cinder::backend::dellemc_powermax::san_login: {get_param: CinderPowermaxSanLogin} + cinder::backend::dellemc_powermax::san_password: {get_param: CinderPowermaxSanPassword} + cinder::backend::dellemc_powermax::powermax_array: {get_param: CinderPowermaxArray} + cinder::backend::dellemc_powermax::powermax_srp: {get_param: CinderPowermaxSrp} + cinder::backend::dellemc_powermax::powermax_port_groups: {get_param: CinderPowermaxPortGroups} + cinder::backend::dellemc_powermax::powermax_storage_protocol: {get_param: CinderPowermaxStorageProtocol} + - + if: + - {equals : [{get_param: CinderPowermaxAvailabilityZone}, '']} + - {} + - cinder::backend::dellemc_powermax::backend_availability_zone: {get_param: CinderPowermaxAvailabilityZone} diff --git a/environments/cinder-dellemc-powermax-config.yaml b/environments/cinder-dellemc-powermax-config.yaml new file mode 100644 index 0000000000..d37ad73c23 --- /dev/null +++ b/environments/cinder-dellemc-powermax-config.yaml @@ -0,0 +1,29 @@ +# A Heat environment file which can be used to enable a +# Cinder Dell EMC PowerMax backend, configured via puppet. +resource_registry: + OS::TripleO::Services::CinderBackendDellEMCPowermax: ../deployment/cinder/cinder-backend-dellemc-powermax-puppet.yaml + +parameter_defaults: + CinderEnablePowermaxBackend: true + CinderPowermaxBackendName: 'tripleo_dellemc_powermax' + CinderPowermaxMultiConfig: {} + CinderPowermaxAvailabilityZone: '' + CinderPowermaxSanIp: '' + CinderPowermaxSanLogin: 'Admin' + CinderPowermaxSanPassword: '' + CinderPowermaxArray: '' + CinderPowermaxSrp: '' + CinderPowermaxPortGroups: '' + CinderPowermaxStorageProtocol: 'iSCSI' + +# To configure multiple Powermax backends, use CinderPowermaxMultiConfig to +# assign parameter values specific to that backend. For example: +# CinderPowermaxBackendName: +# - tripleo_dellemc_powermax_1 +# - tripleo_dellemc_powermax_2 +# CinderPowermaxMultiConfig: +# tripleo_dellemc_powermax_1: +# CinderPowermaxStorageProtocol: 'iSCSI' # Specific value for this backend +# tripleo_dellemc_powermax_2: +# CinderPowermaxStorageProtocol: 'FC' # Specific value for this backend + diff --git a/overcloud-resource-registry-puppet.j2.yaml b/overcloud-resource-registry-puppet.j2.yaml index bd4253c633..e2a4c3b6e5 100644 --- a/overcloud-resource-registry-puppet.j2.yaml +++ b/overcloud-resource-registry-puppet.j2.yaml @@ -274,6 +274,7 @@ resource_registry: OS::TripleO::Services::NeutronML2FujitsuFossw: OS::Heat::None OS::TripleO::Services::CinderBackendDellPs: OS::Heat::None OS::TripleO::Services::CinderBackendDellSc: OS::Heat::None + OS::TripleO::Services::CinderBackendDellEMCPowermax: OS::Heat::None OS::TripleO::Services::CinderBackendDellEMCUnity: OS::Heat::None OS::TripleO::Services::CinderBackendDellEMCVMAXISCSI: OS::Heat::None OS::TripleO::Services::CinderBackendDellEMCVNX: OS::Heat::None diff --git a/releasenotes/notes/powermax-driver-d428e372280c44e6.yaml b/releasenotes/notes/powermax-driver-d428e372280c44e6.yaml new file mode 100644 index 0000000000..d0422423e1 --- /dev/null +++ b/releasenotes/notes/powermax-driver-d428e372280c44e6.yaml @@ -0,0 +1,6 @@ +--- +features: + - Support for PowerMax backend cinder driver. + Supports both iSCSI and FC volume drivers + and support deploying one or multiple cinder + PowerMax storage backends. diff --git a/roles/Controller.yaml b/roles/Controller.yaml index a2f0cee26b..8576b95b22 100644 --- a/roles/Controller.yaml +++ b/roles/Controller.yaml @@ -59,6 +59,7 @@ - OS::TripleO::Services::CinderApi - OS::TripleO::Services::CinderBackendDellPs - OS::TripleO::Services::CinderBackendDellSc + - OS::TripleO::Services::CinderBackendDellEMCPowermax - OS::TripleO::Services::CinderBackendDellEMCUnity - OS::TripleO::Services::CinderBackendDellEMCVMAXISCSI - OS::TripleO::Services::CinderBackendDellEMCVNX diff --git a/roles/ControllerNoCeph.yaml b/roles/ControllerNoCeph.yaml index 0087a57bb1..608b1754d0 100644 --- a/roles/ControllerNoCeph.yaml +++ b/roles/ControllerNoCeph.yaml @@ -51,6 +51,7 @@ - OS::TripleO::Services::CinderApi - OS::TripleO::Services::CinderBackendDellPs - OS::TripleO::Services::CinderBackendDellSc + - OS::TripleO::Services::CinderBackendDellEMCPowermax - OS::TripleO::Services::CinderBackendDellEMCUnity - OS::TripleO::Services::CinderBackendDellEMCVMAXISCSI - OS::TripleO::Services::CinderBackendDellEMCVNX diff --git a/roles/ControllerNovaStandalone.yaml b/roles/ControllerNovaStandalone.yaml index 1b043be27d..dd2bf76cf8 100644 --- a/roles/ControllerNovaStandalone.yaml +++ b/roles/ControllerNovaStandalone.yaml @@ -44,6 +44,7 @@ - OS::TripleO::Services::CinderApi - OS::TripleO::Services::CinderBackendDellPs - OS::TripleO::Services::CinderBackendDellSc + - OS::TripleO::Services::CinderBackendDellEMCPowermax - OS::TripleO::Services::CinderBackendDellEMCUnity - OS::TripleO::Services::CinderBackendDellEMCVMAXISCSI - OS::TripleO::Services::CinderBackendDellEMCVNX diff --git a/roles/ControllerStorageDashboard.yaml b/roles/ControllerStorageDashboard.yaml index d3d18b7026..bddeddc211 100644 --- a/roles/ControllerStorageDashboard.yaml +++ b/roles/ControllerStorageDashboard.yaml @@ -60,6 +60,7 @@ - OS::TripleO::Services::CinderApi - OS::TripleO::Services::CinderBackendDellPs - OS::TripleO::Services::CinderBackendDellSc + - OS::TripleO::Services::CinderBackendDellEMCPowermax - OS::TripleO::Services::CinderBackendDellEMCUnity - OS::TripleO::Services::CinderBackendDellEMCVMAXISCSI - OS::TripleO::Services::CinderBackendDellEMCVNX diff --git a/roles/ControllerStorageNfs.yaml b/roles/ControllerStorageNfs.yaml index eb80055a90..6ddbca4880 100644 --- a/roles/ControllerStorageNfs.yaml +++ b/roles/ControllerStorageNfs.yaml @@ -61,6 +61,7 @@ - OS::TripleO::Services::CinderApi - OS::TripleO::Services::CinderBackendDellPs - OS::TripleO::Services::CinderBackendDellSc + - OS::TripleO::Services::CinderBackendDellEMCPowermax - OS::TripleO::Services::CinderBackendDellEMCUnity - OS::TripleO::Services::CinderBackendDellEMCVMAXISCSI - OS::TripleO::Services::CinderBackendDellEMCVNX diff --git a/roles/Standalone.yaml b/roles/Standalone.yaml index e42bbb0898..d8214188ab 100644 --- a/roles/Standalone.yaml +++ b/roles/Standalone.yaml @@ -49,6 +49,7 @@ - OS::TripleO::Services::CephOSD - OS::TripleO::Services::CertmongerUser - OS::TripleO::Services::CinderApi + - OS::TripleO::Services::CinderBackendDellEMCPowermax - OS::TripleO::Services::CinderBackendDellEMCUnity - OS::TripleO::Services::CinderBackendDellEMCVMAXISCSI - OS::TripleO::Services::CinderBackendDellEMCVNX diff --git a/roles_data.yaml b/roles_data.yaml index 198aa57d2c..ab15c1c422 100644 --- a/roles_data.yaml +++ b/roles_data.yaml @@ -62,6 +62,7 @@ - OS::TripleO::Services::CinderApi - OS::TripleO::Services::CinderBackendDellPs - OS::TripleO::Services::CinderBackendDellSc + - OS::TripleO::Services::CinderBackendDellEMCPowermax - OS::TripleO::Services::CinderBackendDellEMCUnity - OS::TripleO::Services::CinderBackendDellEMCVMAXISCSI - OS::TripleO::Services::CinderBackendDellEMCVNX