From 2a0b569e1293855ef4bf37a4696611a99086cfe5 Mon Sep 17 00:00:00 2001 From: katarimanoj Date: Tue, 1 Nov 2022 11:26:38 +0530 Subject: [PATCH] Support for Cinder IBM Svf driver This patch adds support for IBM Spectrum virtualize family (Svf) driver. With this new tht for Svf, there is no need to use tripleo's ExtraConfig technique to configure the backend. Depends-On: I3c74f492d9d34eb8e16d9a203b5f02714b02f69a Change-Id: I59c38368356595254e8617ef30157040fc204f92 --- ci/custom_ci_roles_data.yaml | 1 + .../cinder/cinder-backend-ibm-svf-puppet.yaml | 96 +++++++++++++++++++ environments/cinder-ibm-svf-config.yaml | 31 ++++++ overcloud-resource-registry-puppet.j2.yaml | 1 + ...t-for-ibm_svf-driver-342ca73422326f62.yaml | 9 ++ roles/Controller.yaml | 1 + roles/ControllerNoCeph.yaml | 1 + roles/ControllerNovaStandalone.yaml | 1 + roles/ControllerSriov.yaml | 1 + roles/ControllerStorageDashboard.yaml | 1 + roles/ControllerStorageNfs.yaml | 1 + roles/Standalone.yaml | 1 + roles_data.yaml | 1 + 13 files changed, 146 insertions(+) create mode 100644 deployment/cinder/cinder-backend-ibm-svf-puppet.yaml create mode 100644 environments/cinder-ibm-svf-config.yaml create mode 100644 releasenotes/notes/Add-support-for-ibm_svf-driver-342ca73422326f62.yaml diff --git a/ci/custom_ci_roles_data.yaml b/ci/custom_ci_roles_data.yaml index 7aebb5faee..e458fb5af9 100644 --- a/ci/custom_ci_roles_data.yaml +++ b/ci/custom_ci_roles_data.yaml @@ -70,6 +70,7 @@ - OS::TripleO::Services::CinderBackendDellEMCUnity - OS::TripleO::Services::CinderBackendDellEMCVNX - OS::TripleO::Services::CinderBackendDellEMCXtremio + - OS::TripleO::Services::CinderBackendIBMSvf - OS::TripleO::Services::CinderBackendNetApp - OS::TripleO::Services::CinderBackendNfs - OS::TripleO::Services::CinderBackendNVMeOF diff --git a/deployment/cinder/cinder-backend-ibm-svf-puppet.yaml b/deployment/cinder/cinder-backend-ibm-svf-puppet.yaml new file mode 100644 index 0000000000..bf90ea2ed7 --- /dev/null +++ b/deployment/cinder/cinder-backend-ibm-svf-puppet.yaml @@ -0,0 +1,96 @@ +heat_template_version: wallaby + +description: > + Openstack Cinder IBM Spectrum Virtualize family (Svf) backend + +parameters: + CinderEnableSvfBackend: + type: boolean + default: true + CinderSvfBackendName: + type: comma_delimited_list + default: 'tripleo_ibm_svf' + description: A list of Cinder IBM Svf Storage backend names. + CinderSvfMultiConfig: + type: json + default: {} + description: > + Dictionary of settings when configuring multiple Svf backends. The + hash key is the backend name, and the value is a dictionary of parameter + values unique to that backend. + CinderSvfAllowTenantQos: + type: boolean + default: false + CinderSvfAvailabilityZone: + default: '' + description: > + The availability zone of the IBM Svf Cinder backend. + When set, it overrides the default CinderStorageAvailabilityZone. + type: string + CinderSvfConnectionProtocol: + type: string + default: 'iSCSI' + constraints: + - allowed_values: [ 'iSCSI', 'FC'] + CinderSvfIscsiChapEnabled: + type: boolean + default: true + CinderSvfRetainAuxVolume: + type: boolean + default: false + CinderSvfSanIp: + type: string + CinderSvfSanLogin: + type: string + CinderSvfSanPassword: + type: string + hidden: true + CinderSvfVolumePoolName: + type: comma_delimited_list + 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. Use + parameter_merge_strategies to merge it with the defaults. + 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 IBM Svf backend. + value: + service_name: cinder_backend_ibm_svf + config_settings: + map_merge: + - tripleo::profile::base::cinder::volume::cinder_enable_ibm_svf_backend: {get_param: CinderEnableSvfBackend} + cinder::backend::ibm_svf::volume_backend_name: {get_param: CinderSvfBackendName} + cinder::backend::ibm_svf::volume_multi_config: {get_param: CinderSvfMultiConfig} + cinder::backend::ibm_svf::san_ip: {get_param: CinderSvfSanIp} + cinder::backend::ibm_svf::san_login: {get_param: CinderSvfSanLogin} + cinder::backend::ibm_svf::san_password: {get_param: CinderSvfSanPassword} + # NOTE:Svf was earlier called as storwize/svc driver, so the cinder + # configuration parameters were named accordingly. + cinder::backend::ibm_svf::storwize_svc_volpool_name: {get_param: CinderSvfVolumePoolName} + cinder::backend::ibm_svf::storwize_svc_allow_tenant_qos: {get_param: CinderSvfAllowTenantQos} + cinder::backend::ibm_svf::storwize_svc_retain_aux_volume: {get_param: CinderSvfRetainAuxVolume} + cinder::backend::ibm_svf::storwize_svc_connection_protocol: {get_param: CinderSvfConnectionProtocol} + cinder::backend::ibm_svf::storwize_svc_iscsi_chap_enabled: {get_param: CinderSvfIscsiChapEnabled} + - if: + - not: {equals : [{get_param: CinderSvfAvailabilityZone}, '']} + - cinder::backend::ibm_svf::backend_availability_zone: {get_param: CinderSvfAvailabilityZone} diff --git a/environments/cinder-ibm-svf-config.yaml b/environments/cinder-ibm-svf-config.yaml new file mode 100644 index 0000000000..569a253f4d --- /dev/null +++ b/environments/cinder-ibm-svf-config.yaml @@ -0,0 +1,31 @@ +# A Heat environment file which can be used to enable a +# Cinder IBM Svf backend, configured via puppet. + +resource_registry: + OS::TripleO::Services::CinderBackendIBMSvf: ../deployment/cinder/cinder-backend-ibm-svf-puppet.yaml + +parameter_defaults: + CinderEnableIscsiBackend: false + CinderEnableSvfBackend: true + CinderSvfBackendName: 'tripleo_ibm_svf' + CinderSvfMultiConfig: {} + CinderSvfAvailabilityZone: '' + CinderSvfSanIp: '' + CinderSvfSanLogin: 'Admin' + CinderSvfSanPassword: 'Admin' + CinderSvfVolumePoolName: '' + CinderSvfAllowTenantQos: 'False' + CinderSvfRetainAuxvolume: 'True' + CinderSvfConnectionProtocol: 'FC' + +# To configure multiple Svf backends, use CinderSvfMultiConfig to +# assign parameter values specific to that backend. For example: +# CinderSvfBackendName: +# - tripleo_ibm_svf_1 +# - tripleo_ibm_svf_2 +# CinderSvfMultiConfig: +# tripleo_ibm_svf_1: +# CinderSvfConnectionProtocol: 'iSCSI' # Specific value for this backend +# tripleo_ibm_svf_2: +# CinderSvfConnectionProtocol: 'FC' # Specific value for this backend + diff --git a/overcloud-resource-registry-puppet.j2.yaml b/overcloud-resource-registry-puppet.j2.yaml index c2e88651ae..b53cf380c5 100644 --- a/overcloud-resource-registry-puppet.j2.yaml +++ b/overcloud-resource-registry-puppet.j2.yaml @@ -258,6 +258,7 @@ resource_registry: OS::TripleO::Services::CinderBackendDellEMCUnity: OS::Heat::None OS::TripleO::Services::CinderBackendDellEMCVNX: OS::Heat::None OS::TripleO::Services::CinderBackendDellEMCXtremio: OS::Heat::None + OS::TripleO::Services::CinderBackendIBMSvf: OS::Heat::None OS::TripleO::Services::CinderBackendNetApp: OS::Heat::None OS::TripleO::Services::CinderBackendNVMeOF: OS::Heat::None OS::TripleO::Services::CinderBackendPure: OS::Heat::None diff --git a/releasenotes/notes/Add-support-for-ibm_svf-driver-342ca73422326f62.yaml b/releasenotes/notes/Add-support-for-ibm_svf-driver-342ca73422326f62.yaml new file mode 100644 index 0000000000..761f4aeee6 --- /dev/null +++ b/releasenotes/notes/Add-support-for-ibm_svf-driver-342ca73422326f62.yaml @@ -0,0 +1,9 @@ +--- +features: + - | + Add support for Cinder IBM Spectrum virtualize family (Svf) driver. +upgrade: + - | + Cinder IBM Spectrum virtualize family (Svf) driver deployed + using ExtraConfig can switch to new template by using + ``environments/cinder-ibm-svf-config.yaml``. diff --git a/roles/Controller.yaml b/roles/Controller.yaml index a30b4ab130..e6d40d9916 100644 --- a/roles/Controller.yaml +++ b/roles/Controller.yaml @@ -69,6 +69,7 @@ - OS::TripleO::Services::CinderBackendDellEMCUnity - OS::TripleO::Services::CinderBackendDellEMCVNX - OS::TripleO::Services::CinderBackendDellEMCXtremio + - OS::TripleO::Services::CinderBackendIBMSvf - OS::TripleO::Services::CinderBackendNetApp - OS::TripleO::Services::CinderBackendNfs - OS::TripleO::Services::CinderBackendNVMeOF diff --git a/roles/ControllerNoCeph.yaml b/roles/ControllerNoCeph.yaml index e224946232..971aeb1f45 100644 --- a/roles/ControllerNoCeph.yaml +++ b/roles/ControllerNoCeph.yaml @@ -57,6 +57,7 @@ - OS::TripleO::Services::CinderBackendDellEMCUnity - OS::TripleO::Services::CinderBackendDellEMCVNX - OS::TripleO::Services::CinderBackendDellEMCXtremio + - OS::TripleO::Services::CinderBackendIBMSvf - OS::TripleO::Services::CinderBackendNetApp - OS::TripleO::Services::CinderBackendNfs - OS::TripleO::Services::CinderBackendNVMeOF diff --git a/roles/ControllerNovaStandalone.yaml b/roles/ControllerNovaStandalone.yaml index 7c53cbcc61..919b7df338 100644 --- a/roles/ControllerNovaStandalone.yaml +++ b/roles/ControllerNovaStandalone.yaml @@ -59,6 +59,7 @@ - OS::TripleO::Services::CinderBackendDellEMCUnity - OS::TripleO::Services::CinderBackendDellEMCVNX - OS::TripleO::Services::CinderBackendDellEMCXtremio + - OS::TripleO::Services::CinderBackendIBMSvf - OS::TripleO::Services::CinderBackendNetApp - OS::TripleO::Services::CinderBackendNfs - OS::TripleO::Services::CinderBackendNVMeOF diff --git a/roles/ControllerSriov.yaml b/roles/ControllerSriov.yaml index d218488e88..c64486ac03 100644 --- a/roles/ControllerSriov.yaml +++ b/roles/ControllerSriov.yaml @@ -66,6 +66,7 @@ - OS::TripleO::Services::CinderBackendDellEMCVNX - OS::TripleO::Services::CinderBackendDellEMCVxFlexOS - OS::TripleO::Services::CinderBackendDellEMCXtremio + - OS::TripleO::Services::CinderBackendIBMSvf - OS::TripleO::Services::CinderBackendNetApp - OS::TripleO::Services::CinderBackendNfs - OS::TripleO::Services::CinderBackendNVMeOF diff --git a/roles/ControllerStorageDashboard.yaml b/roles/ControllerStorageDashboard.yaml index 0136221821..a5cf27b74a 100644 --- a/roles/ControllerStorageDashboard.yaml +++ b/roles/ControllerStorageDashboard.yaml @@ -68,6 +68,7 @@ - OS::TripleO::Services::CinderBackendDellEMCUnity - OS::TripleO::Services::CinderBackendDellEMCVNX - OS::TripleO::Services::CinderBackendDellEMCXtremio + - OS::TripleO::Services::CinderBackendIBMSvf - OS::TripleO::Services::CinderBackendNetApp - OS::TripleO::Services::CinderBackendNfs - OS::TripleO::Services::CinderBackendNVMeOF diff --git a/roles/ControllerStorageNfs.yaml b/roles/ControllerStorageNfs.yaml index aa4d7aad3c..d5b7f4f994 100644 --- a/roles/ControllerStorageNfs.yaml +++ b/roles/ControllerStorageNfs.yaml @@ -68,6 +68,7 @@ - OS::TripleO::Services::CinderBackendDellEMCUnity - OS::TripleO::Services::CinderBackendDellEMCVNX - OS::TripleO::Services::CinderBackendDellEMCXtremio + - OS::TripleO::Services::CinderBackendIBMSvf - OS::TripleO::Services::CinderBackendNetApp - OS::TripleO::Services::CinderBackendNfs - OS::TripleO::Services::CinderBackendNVMeOF diff --git a/roles/Standalone.yaml b/roles/Standalone.yaml index e97cab1ce5..ae5b2d1fe8 100644 --- a/roles/Standalone.yaml +++ b/roles/Standalone.yaml @@ -63,6 +63,7 @@ - OS::TripleO::Services::CinderBackendDellEMCUnity - OS::TripleO::Services::CinderBackendDellEMCVNX - OS::TripleO::Services::CinderBackendDellEMCXtremio + - OS::TripleO::Services::CinderBackendIBMSvf - OS::TripleO::Services::CinderBackendDellSc - OS::TripleO::Services::CinderBackendNetApp - OS::TripleO::Services::CinderBackendNfs diff --git a/roles_data.yaml b/roles_data.yaml index 75f91d098a..78f4be4837 100644 --- a/roles_data.yaml +++ b/roles_data.yaml @@ -72,6 +72,7 @@ - OS::TripleO::Services::CinderBackendDellEMCUnity - OS::TripleO::Services::CinderBackendDellEMCVNX - OS::TripleO::Services::CinderBackendDellEMCXtremio + - OS::TripleO::Services::CinderBackendIBMSvf - OS::TripleO::Services::CinderBackendNetApp - OS::TripleO::Services::CinderBackendNfs - OS::TripleO::Services::CinderBackendNVMeOF