Add composable role support for NetApp Cinder back end
authorAlan Bishop <abishop@redhat.com>
Mon, 10 Apr 2017 15:11:58 +0000 (11:11 -0400)
committerAlan Bishop <abishop@redhat.com>
Mon, 10 Apr 2017 15:38:49 +0000 (11:38 -0400)
Convert NetApp Cinder back end to support composable roles via new
"CinderBackendNetApp" service.

Closes-Bug: #1680568
Change-Id: Ia3a78a48c32997c9d3cbe1629c2043cfc5249e1c

environments/cinder-netapp-config.yaml
overcloud-resource-registry-puppet.j2.yaml
puppet/controller-role.yaml
puppet/extraconfig/pre_deploy/controller/cinder-netapp.yaml [deleted file]
puppet/services/cinder-backend-netapp.yaml [new file with mode: 0644]
roles_data.yaml

index b9a8434..dfd1589 100644 (file)
@@ -1,7 +1,7 @@
 # A Heat environment file which can be used to enable a
 # a Cinder NetApp backend, configured via puppet
 resource_registry:
-  OS::TripleO::ControllerExtraConfigPre: ../puppet/extraconfig/pre_deploy/controller/cinder-netapp.yaml
+  OS::TripleO::Services::CinderBackendNetApp: ../puppet/services/cinder-backend-netapp.yaml
 
 parameter_defaults:
   CinderEnableNetappBackend: true
index 689d639..22357ff 100644 (file)
@@ -242,6 +242,7 @@ resource_registry:
   OS::TripleO::Services::Zaqar: OS::Heat::None
   OS::TripleO::Services::NeutronML2FujitsuCfab: OS::Heat::None
   OS::TripleO::Services::NeutronML2FujitsuFossw: OS::Heat::None
+  OS::TripleO::Services::CinderBackendNetApp: OS::Heat::None
   OS::TripleO::Services::CinderHPELeftHandISCSI: OS::Heat::None
   OS::TripleO::Services::Etcd: OS::Heat::None
   OS::TripleO::Services::Ec2Api: OS::Heat::None
index 2f4f583..3d32add 100644 (file)
@@ -467,7 +467,6 @@ resources:
           - all_nodes # provided by allNodesConfig
           - vip_data # provided by allNodesConfig
           - '"%{::osfamily}"'
-          - cinder_netapp_data # Optionally provided by ControllerExtraConfigPre
           - neutron_bigswitch_data # Optionally provided by ControllerExtraConfigPre
           - neutron_cisco_data # Optionally provided by ControllerExtraConfigPre
           - cisco_n1kv_data # Optionally provided by ControllerExtraConfigPre
diff --git a/puppet/extraconfig/pre_deploy/controller/cinder-netapp.yaml b/puppet/extraconfig/pre_deploy/controller/cinder-netapp.yaml
deleted file mode 100644 (file)
index 378f7f9..0000000
+++ /dev/null
@@ -1,157 +0,0 @@
-heat_template_version: ocata
-
-description: Configure hieradata for Cinder Netapp configuration
-
-parameters:
-  server:
-    description: ID of the controller node to apply this config to
-    type: string
-
-  # Config specific parameters, to be provided via parameter_defaults
-  CinderEnableNetappBackend:
-    type: boolean
-    default: true
-  CinderNetappBackendName:
-    type: string
-    default: 'tripleo_netapp'
-  CinderNetappLogin:
-    type: string
-  CinderNetappPassword:
-    type: string
-    hidden: true
-  CinderNetappServerHostname:
-    type: string
-  CinderNetappServerPort:
-    type: string
-    default: '80'
-  CinderNetappSizeMultiplier:
-    type: string
-    default: '1.2'
-  CinderNetappStorageFamily:
-    type: string
-    default: 'ontap_cluster'
-  CinderNetappStorageProtocol:
-    type: string
-    default: 'nfs'
-  CinderNetappTransportType:
-    type: string
-    default: 'http'
-  CinderNetappVfiler:
-    type: string
-    default: ''
-  CinderNetappVolumeList:
-    type: string
-    default: ''
-  CinderNetappVserver:
-    type: string
-    default: ''
-  CinderNetappPartnerBackendName:
-    type: string
-    default: ''
-  CinderNetappNfsShares:
-    type: string
-    default: ''
-  CinderNetappNfsSharesConfig:
-    type: string
-    default: '/etc/cinder/shares.conf'
-  CinderNetappNfsMountOptions:
-    type: string
-    default: ''
-  CinderNetappCopyOffloadToolPath:
-    type: string
-    default: ''
-  CinderNetappControllerIps:
-    type: string
-    default: ''
-  CinderNetappSaPassword:
-    type: string
-    default: ''
-    hidden: true
-  CinderNetappStoragePools:
-    type: string
-    default: ''
-  CinderNetappHostType:
-    type: string
-    default: ''
-  CinderNetappWebservicePath:
-    type: string
-    default: '/devmgr/v2'
-  # DEPRECATED options for compatibility with older versions
-  CinderNetappEseriesHostType:
-    type: string
-    default: 'linux_dm_mp'
-
-parameter_groups:
-- label: deprecated
-  description: Do not use deprecated params, they will be removed.
-  parameters:
-  - CinderNetappEseriesHostType
-
-resources:
-  CinderNetappConfig:
-    type: OS::Heat::StructuredConfig
-    properties:
-      group: hiera
-      config:
-        datafiles:
-          cinder_netapp_data:
-            mapped_data:
-              tripleo::profile::base::cinder::volume::cinder_enable_netapp_backend: {get_input: EnableNetappBackend}
-              cinder::backend::netapp::title: {get_input: NetappBackendName}
-              cinder::backend::netapp::netapp_login: {get_input: NetappLogin}
-              cinder::backend::netapp::netapp_password: {get_input: NetappPassword}
-              cinder::backend::netapp::netapp_server_hostname: {get_input: NetappServerHostname}
-              cinder::backend::netapp::netapp_server_port: {get_input: NetappServerPort}
-              cinder::backend::netapp::netapp_size_multiplier: {get_input: NetappSizeMultiplier}
-              cinder::backend::netapp::netapp_storage_family: {get_input: NetappStorageFamily}
-              cinder::backend::netapp::netapp_storage_protocol: {get_input: NetappStorageProtocol}
-              cinder::backend::netapp::netapp_transport_type: {get_input: NetappTransportType}
-              cinder::backend::netapp::netapp_vfiler: {get_input: NetappVfiler}
-              cinder::backend::netapp::netapp_volume_list: {get_input: NetappVolumeList}
-              cinder::backend::netapp::netapp_vserver: {get_input: NetappVserver}
-              cinder::backend::netapp::netapp_partner_backend_name: {get_input: NetappPartnerBackendName}
-              cinder::backend::netapp::nfs_shares: {get_input: NetappNfsShares}
-              cinder::backend::netapp::nfs_shares_config: {get_input: NetappNfsSharesConfig}
-              cinder::backend::netapp::nfs_mount_options: {get_input: NetappNfsMountOptions}
-              cinder::backend::netapp::netapp_copyoffload_tool_path: {get_input: NetappCopyOffloadToolPath}
-              cinder::backend::netapp::netapp_controller_ips: {get_input: NetappControllerIps}
-              cinder::backend::netapp::netapp_sa_password: {get_input: NetappSaPassword}
-              cinder::backend::netapp::netapp_storage_pools: {get_input: NetappStoragePools}
-              cinder::backend::netapp::netapp_host_type: {get_input: NetappHostType}
-              cinder::backend::netapp::netapp_webservice_path: {get_input: NetappWebservicePath}
-
-  CinderNetappDeployment:
-    type: OS::Heat::StructuredDeployment
-    properties:
-      name: CinderNetappDeployment
-      config: {get_resource: CinderNetappConfig}
-      server: {get_param: server}
-      input_values:
-        EnableNetappBackend: {get_param: CinderEnableNetappBackend}
-        NetappBackendName: {get_param: CinderNetappBackendName}
-        NetappLogin: {get_param: CinderNetappLogin}
-        NetappPassword: {get_param: CinderNetappPassword}
-        NetappServerHostname: {get_param: CinderNetappServerHostname}
-        NetappServerPort: {get_param: CinderNetappServerPort}
-        NetappSizeMultiplier: {get_param: CinderNetappSizeMultiplier}
-        NetappStorageFamily: {get_param: CinderNetappStorageFamily}
-        NetappStorageProtocol: {get_param: CinderNetappStorageProtocol}
-        NetappTransportType: {get_param: CinderNetappTransportType}
-        NetappVfiler: {get_param: CinderNetappVfiler}
-        NetappVolumeList: {get_param: CinderNetappVolumeList}
-        NetappVserver: {get_param: CinderNetappVserver}
-        NetappPartnerBackendName: {get_param: CinderNetappPartnerBackendName}
-        NetappNfsShares: {get_param: CinderNetappNfsShares}
-        NetappNfsSharesConfig: {get_param: CinderNetappNfsSharesConfig}
-        NetappNfsMountOptions: {get_param: CinderNetappNfsMountOptions}
-        NetappCopyOffloadToolPath: {get_param: CinderNetappCopyOffloadToolPath}
-        NetappControllerIps: {get_param: CinderNetappControllerIps}
-        NetappSaPassword: {get_param: CinderNetappSaPassword}
-        NetappStoragePools: {get_param: CinderNetappStoragePools}
-        NetappHostType: {get_param: CinderNetappHostType}
-        NetappWebservicePath: {get_param: CinderNetappWebservicePath}
-
-outputs:
-  deploy_stdout:
-    description: Deployment reference, used to trigger puppet apply on changes
-    value: {get_attr: [CinderNetappDeployment, deploy_stdout]}
diff --git a/puppet/services/cinder-backend-netapp.yaml b/puppet/services/cinder-backend-netapp.yaml
new file mode 100644 (file)
index 0000000..29a0ce1
--- /dev/null
@@ -0,0 +1,129 @@
+heat_template_version: ocata
+
+description: Openstack Cinder Netapp backend
+
+parameters:
+  CinderEnableNetappBackend:
+    type: boolean
+    default: true
+  CinderNetappBackendName:
+    type: string
+    default: 'tripleo_netapp'
+  CinderNetappLogin:
+    type: string
+  CinderNetappPassword:
+    type: string
+    hidden: true
+  CinderNetappServerHostname:
+    type: string
+  CinderNetappServerPort:
+    type: string
+    default: '80'
+  CinderNetappSizeMultiplier:
+    type: string
+    default: '1.2'
+  CinderNetappStorageFamily:
+    type: string
+    default: 'ontap_cluster'
+  CinderNetappStorageProtocol:
+    type: string
+    default: 'nfs'
+  CinderNetappTransportType:
+    type: string
+    default: 'http'
+  CinderNetappVfiler:
+    type: string
+    default: ''
+  CinderNetappVolumeList:
+    type: string
+    default: ''
+  CinderNetappVserver:
+    type: string
+    default: ''
+  CinderNetappPartnerBackendName:
+    type: string
+    default: ''
+  CinderNetappNfsShares:
+    type: string
+    default: ''
+  CinderNetappNfsSharesConfig:
+    type: string
+    default: '/etc/cinder/shares.conf'
+  CinderNetappNfsMountOptions:
+    type: string
+    default: ''
+  CinderNetappCopyOffloadToolPath:
+    type: string
+    default: ''
+  CinderNetappControllerIps:
+    type: string
+    default: ''
+  CinderNetappSaPassword:
+    type: string
+    default: ''
+    hidden: true
+  CinderNetappStoragePools:
+    type: string
+    default: ''
+  CinderNetappHostType:
+    type: string
+    default: ''
+  CinderNetappWebservicePath:
+    type: string
+    default: '/devmgr/v2'
+  # DEPRECATED options for compatibility with older versions
+  CinderNetappEseriesHostType:
+    type: string
+    default: 'linux_dm_mp'
+  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
+  EndpointMap:
+    default: {}
+    type: json
+    description: Mapping of service endpoint -> protocol. Typically set
+                 via parameter_defaults in the resource registry.
+
+parameter_groups:
+- label: deprecated
+  description: Do not use deprecated params, they will be removed.
+  parameters:
+  - CinderNetappEseriesHostType
+
+outputs:
+  role_data:
+    description: Role data for the Cinder NetApp backend.
+    value:
+      service_name: cinder_backend_netapp
+      config_settings:
+        tripleo::profile::base::cinder::volume::cinder_enable_netapp_backend: {get_param: CinderEnableNetappBackend}
+        cinder::backend::netapp::title: {get_param: CinderNetappBackendName}
+        cinder::backend::netapp::netapp_login: {get_param: CinderNetappLogin}
+        cinder::backend::netapp::netapp_password: {get_param: CinderNetappPassword}
+        cinder::backend::netapp::netapp_server_hostname: {get_param: CinderNetappServerHostname}
+        cinder::backend::netapp::netapp_server_port: {get_param: CinderNetappServerPort}
+        cinder::backend::netapp::netapp_size_multiplier: {get_param: CinderNetappSizeMultiplier}
+        cinder::backend::netapp::netapp_storage_family: {get_param: CinderNetappStorageFamily}
+        cinder::backend::netapp::netapp_storage_protocol: {get_param: CinderNetappStorageProtocol}
+        cinder::backend::netapp::netapp_transport_type: {get_param: CinderNetappTransportType}
+        cinder::backend::netapp::netapp_vfiler: {get_param: CinderNetappVfiler}
+        cinder::backend::netapp::netapp_volume_list: {get_param: CinderNetappVolumeList}
+        cinder::backend::netapp::netapp_vserver: {get_param: CinderNetappVserver}
+        cinder::backend::netapp::netapp_partner_backend_name: {get_param: CinderNetappPartnerBackendName}
+        cinder::backend::netapp::nfs_shares: {get_param: CinderNetappNfsShares}
+        cinder::backend::netapp::nfs_shares_config: {get_param: CinderNetappNfsSharesConfig}
+        cinder::backend::netapp::nfs_mount_options: {get_param: CinderNetappNfsMountOptions}
+        cinder::backend::netapp::netapp_copyoffload_tool_path: {get_param: CinderNetappCopyOffloadToolPath}
+        cinder::backend::netapp::netapp_controller_ips: {get_param: CinderNetappControllerIps}
+        cinder::backend::netapp::netapp_sa_password: {get_param: CinderNetappSaPassword}
+        cinder::backend::netapp::netapp_storage_pools: {get_param: CinderNetappStoragePools}
+        cinder::backend::netapp::netapp_host_type: {get_param: CinderNetappHostType}
+        cinder::backend::netapp::netapp_webservice_path: {get_param: CinderNetappWebservicePath}
+      step_config: |
+        include ::tripleo::profile::base::cinder::volume
index 4885947..c061abc 100644 (file)
@@ -43,6 +43,7 @@
     - OS::TripleO::Services::CinderBackup
     - OS::TripleO::Services::CinderScheduler
     - OS::TripleO::Services::CinderVolume
+    - OS::TripleO::Services::CinderBackendNetApp
     - OS::TripleO::Services::Congress
     - OS::TripleO::Services::Kernel
     - OS::TripleO::Services::Keystone