Enable NetApp Backends in Cinder

Enables support for configuring Cinder with a NetApp backend.
This change adds all relevant parameters for:
 - Clustered Data ONTAP (NFS, iSCSI, FC)
 - Data ONTAP 7-Mode (NFS, iSCSI, FC)
 - E-Series (iSCSI)

Change-Id: If6c6e511ef2d26c4794e3b37c61e5318485ff4db
This commit is contained in:
Ryan Hefner 2015-05-12 13:52:43 -04:00
parent 49639ec8a1
commit cac21c27aa
7 changed files with 115 additions and 2 deletions

View File

@ -0,0 +1,30 @@
# A Heat environment file which can be used to enable a
# a Cinder NetApp backend.
resource_registry:
OS::TripleO::Controller::CinderBackend: extraconfig/controller/cinder-netapp.yaml
parameter_defaults:
CinderBackendConfig:
CinderEnableNetappBackend: false
CinderNetappBackendName: 'tripleo_netapp'
CinderNetappLogin: ''
CinderNetappPassword: ''
CinderNetappServerHostname: ''
CinderNetappServerPort: '80'
CinderNetappSizeMultiplier: '1.2'
CinderNetappStorageFamily: 'ontap_cluster'
CinderNetappStorageProtocol: 'nfs'
CinderNetappTransportType: 'http'
CinderNetappVfiler: ''
CinderNetappVolumeList: ''
CinderNetappVserver: ''
CinderNetappPartnerBackendName: ''
CinderNetappNfsShares: ''
CinderNetappNfsSharesConfig: '/etc/cinder/shares.conf'
CinderNetappNfsMountOptions: ''
CinderNetappCopyOffloadToolPath: ''
CinderNetappControllerIps: ''
CinderNetappSaPassword: ''
CinderNetappStoragePools: ''
CinderNetappEseriesHostType: 'linux_dm_mp'
CinderNetappWebservicePath: '/devmgr/v2'

View File

@ -0,0 +1,38 @@
heat_template_version: 2015-04-30
description: >
Configure hieradata for Cinder Netapp configuration
resources:
CinderNetappConfig:
type: OS::Heat::StructuredConfig
properties:
group: os-apply-config
config:
hiera:
datafiles:
cinder_netapp_data:
mapped_data:
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_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_eseries_host_type: {get_param: CinderNetappEseriesHostType}
cinder::backend::netapp::netapp_webservice_path: {get_param: CinderNetappWebservicePath}

View File

@ -0,0 +1,3 @@
heat_template_version: 2015-04-30
description: A stack which doesn't configure anything.

View File

@ -64,5 +64,8 @@ resource_registry:
OS::TripleO::BlockStorage::Ports::StoragePort: network/ports/noop.yaml
OS::TripleO::BlockStorage::Ports::StorageMgmtPort: network/ports/noop.yaml
# Cinder backend config for the controller role
OS::TripleO::Controller::CinderBackend: extraconfig/controller/noop.yaml
parameter_defaults:
EnablePackageInstall: false

View File

@ -49,6 +49,11 @@ parameters:
description: The password for the cinder service and db account, used by cinder-api.
type: string
hidden: true
CinderBackendConfig:
default: {}
description: Contains parameters to configure Cinder backends. Typically
set via parameter_defaults in the resource registry.
type: json
CloudName:
default: ''
description: The DNS name of this cloud. E.g. ci-overcloud.tripleo.org
@ -564,6 +569,7 @@ resources:
cinder_password: {get_param: CinderPassword}
cinder_enable_iscsi_backend: {get_param: CinderEnableIscsiBackend}
cinder_iscsi_helper: {get_param: CinderISCSIHelper}
cinder_backend_config: {get_param: CinderBackendConfig}
cinder_dsn:
list_join:
- ''
@ -811,6 +817,7 @@ resources:
cinder::debug: {get_input: debug}
cinder_enable_iscsi_backend: {get_input: cinder_enable_iscsi_backend}
cinder::glance::glance_api_servers: {get_input: glance_api_servers}
cinder_backend_config: {get_input: CinderBackendConfig}
# Glance
glance::api::bind_port: {get_input: glance_port}

View File

@ -335,7 +335,23 @@ if hiera('step') >= 3 {
}
}
$cinder_enabled_backends = delete_undef_values([$cinder_iscsi_backend, $cinder_rbd_backend])
if hiera('cinder_enable_netapp_backend', false) {
$cinder_netapp_backend = hiera('cinder::backend::netapp::title')
cinder_config {
"${cinder_netapp_backend}/host": value => 'hostgroup';
}
if hiera('cinder_netapp_nfs_shares', undef) {
$cinder_netapp_nfs_shares = split(hiera('cinder_netapp_nfs_shares', undef), ',')
}
cinder::backend::netapp { $cinder_netapp_backend :
nfs_shares => $cinder_netapp_nfs_shares,
}
}
$cinder_enabled_backends = delete_undef_values([$cinder_iscsi_backend, $cinder_rbd_backend, $cinder_netapp_backend])
class { '::cinder::backends' :
enabled_backends => $cinder_enabled_backends,
}

View File

@ -574,7 +574,23 @@ if hiera('step') >= 3 {
}
}
$cinder_enabled_backends = delete_undef_values([$cinder_iscsi_backend, $cinder_rbd_backend])
if hiera('cinder_enable_netapp_backend', false) {
$cinder_netapp_backend = hiera('cinder::backend::netapp::title')
cinder_config {
"${cinder_netapp_backend}/host": value => 'hostgroup';
}
if hiera('cinder_netapp_nfs_shares', undef) {
$cinder_netapp_nfs_shares = split(hiera('cinder_netapp_nfs_shares', undef), ',')
}
cinder::backend::netapp { $cinder_netapp_backend :
nfs_shares => $cinder_netapp_nfs_shares,
}
}
$cinder_enabled_backends = delete_undef_values([$cinder_iscsi_backend, $cinder_rbd_backend, $cinder_netapp_backend])
class { '::cinder::backends' :
enabled_backends => $cinder_enabled_backends,
}