Add support for using up to 3 devices simultaneously
- The number of simultaneously supported devices has been increased up to 3 NetApp devices - ONTAP 7-Mode support has been disabled - SolidFire support has been added Change-Id: Iae2d5a78e262a3e7dc3d8fbb02fba36b56b5ba01
This commit is contained in:
parent
8bc5e53242
commit
73c5e6fb5f
|
@ -6,22 +6,17 @@ $cinder_netapp = hiera_hash('cinder_netapp', {})
|
|||
|
||||
Nova_config <||> ~> Service <||>
|
||||
|
||||
package { 'multipath-tools': }
|
||||
package { 'nfs-common': }
|
||||
|
||||
nova_config {
|
||||
'libvirt/iscsi_use_multipath': value => $cinder_netapp['use_multipath_for_image_xfer'];
|
||||
}
|
||||
|
||||
if ($cinder_netapp['netapp_storage_protocol']) == 'iscsi' and ($cinder_netapp['use_multipath_for_image_xfer']) {
|
||||
package { 'multipath-tools': }
|
||||
}
|
||||
|
||||
if ($cinder_netapp['netapp_storage_protocol']) == 'nfs' {
|
||||
package { 'nfs-common': }
|
||||
|
||||
if $cinder_netapp['nfs_mount_options'] {
|
||||
nova_config {
|
||||
'libvirt/nfs_mount_options': value => $cinder_netapp['nfs_mount_options'];
|
||||
}
|
||||
if $cinder_netapp['nfs_mount_options'] {
|
||||
nova_config {
|
||||
'libvirt/nfs_mount_options': value => $cinder_netapp['nfs_mount_options'];
|
||||
}
|
||||
}
|
||||
|
||||
service { "$nova::params::compute_service_name": }
|
||||
service { $nova::params::compute_service_name : }
|
||||
|
|
|
@ -4,9 +4,11 @@ notice('MODULAR: netapp-hiera-override')
|
|||
|
||||
$cinder_netapp = hiera_hash('cinder_netapp', {})
|
||||
|
||||
$hiera_dir = '/etc/hiera/plugins'
|
||||
$plugin_yaml = 'cinder_netapp.yaml'
|
||||
$plugin_name = 'cinder_netapp'
|
||||
$hiera_dir = '/etc/hiera/plugins'
|
||||
$plugin_yaml = 'cinder_netapp.yaml'
|
||||
$plugin_name = 'cinder_netapp'
|
||||
|
||||
$number_netapp_backends = $cinder_netapp['number_netapp_backends']
|
||||
|
||||
file { $hiera_dir:
|
||||
ensure => directory,
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
module Puppet::Parser::Functions
|
||||
newfunction(:get_nfs_shares, :type => :rvalue) do |args|
|
||||
data = args[0]
|
||||
nb_share = data['nb_share'].to_i
|
||||
ip = data['nfs_server_ip']
|
||||
backend_number = args[1]
|
||||
nb_share = data['nb_share' + backend_number.to_s].to_i
|
||||
ip = data['nfs_server_ip' + backend_number.to_s]
|
||||
shares = ''
|
||||
nb_share.downto(1) { |share|
|
||||
shares += ip + ':' + data['nfs_server_share' + share.to_s] + "\n"
|
||||
shares += ip + ':' + data['nfs_server_share' + backend_number.to_s + share.to_s] + "\n"
|
||||
}
|
||||
return shares
|
||||
end
|
||||
|
|
|
@ -1,91 +1,103 @@
|
|||
# Defined type form upstream puppet cinder module is not used because is outdated and doesn't support last changes in Cinder NetApp driver.
|
||||
# It's actual for Mitaka upstream puppet cinder module
|
||||
|
||||
class plugin_cinder_netapp::backend::netapp (
|
||||
$netapp_backend_name = 'cinder_netapp',
|
||||
define plugin_cinder_netapp::backend::netapp (
|
||||
$netapp_backend_name = "netapp_backend_${name}",
|
||||
$cinder_netapp = $plugin_cinder_netapp::params::cinder_netapp,
|
||||
$nfs_shares_config = '/etc/cinder/shares.conf',
|
||||
$nfs_shares_config = "/etc/cinder/shares_${name}.conf",
|
||||
$netapp_webservice_path = '/devmgr/v2',
|
||||
) {
|
||||
|
||||
if ($cinder_netapp["netapp_storage_family${name}"] in ['eseries', 'ontap_cluster']) {
|
||||
|
||||
include plugin_cinder_netapp::params
|
||||
include cinder::params
|
||||
|
||||
# Sets correct parameter for <host_type> depending on storage family
|
||||
if ($cinder_netapp['netapp_storage_family']) == 'eseries' {
|
||||
$host_type = $cinder_netapp['netapp_eseries_host_type']
|
||||
if ($cinder_netapp["netapp_storage_family${name}"]) == 'eseries' {
|
||||
$host_type = $cinder_netapp["netapp_eseries_host_type${name}"]
|
||||
} else {
|
||||
$host_type = $cinder_netapp['netapp_host_type']
|
||||
$host_type = $cinder_netapp["netapp_host_type${name}"]
|
||||
}
|
||||
|
||||
# NetApp driver does not understand boolean types for <lun_space_reservation> parameter
|
||||
if ($cinder_netapp['netapp_lun_space_reservation']) {
|
||||
if ($cinder_netapp["netapp_lun_space_reservation${name}"]) {
|
||||
$lun_space_reservation = 'enabled'
|
||||
} else {
|
||||
$lun_space_reservation = 'disabled'
|
||||
}
|
||||
|
||||
# Sets up NFS shares
|
||||
if ($cinder_netapp['netapp_storage_protocol']) == 'nfs' {
|
||||
package { 'nfs-common': }
|
||||
if ($cinder_netapp["netapp_storage_protocol${name}"]) == 'nfs' {
|
||||
if ! defined( Package['nfs-common'] ) {
|
||||
package { 'nfs-common': }
|
||||
}
|
||||
|
||||
$shares = get_nfs_shares($cinder_netapp)
|
||||
$shares = get_nfs_shares($cinder_netapp, $name)
|
||||
|
||||
file { $nfs_shares_config:
|
||||
content => $shares,
|
||||
notify => Service["$cinder::params::volume_service"],
|
||||
notify => Service[$cinder::params::volume_service],
|
||||
}
|
||||
}
|
||||
|
||||
# We need following packages to create a root volume during an instance spawning
|
||||
if ($cinder_netapp['netapp_storage_protocol']) == 'iscsi' {
|
||||
package { 'open-iscsi': }
|
||||
if ($cinder_netapp["netapp_storage_protocol${name}"]) == 'iscsi' {
|
||||
if ! defined( Package['open-iscsi'] ) {
|
||||
package { 'open-iscsi': }
|
||||
}
|
||||
|
||||
if ($cinder_netapp['use_multipath_for_image_xfer']) {
|
||||
package { 'multipath-tools': }
|
||||
if ! defined( Package['multipath-tools'] ) {
|
||||
package { 'multipath-tools': }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# To be ensure that $ symbol is correctly escaped in netapp password
|
||||
$netapp_password = regsubst($cinder_netapp['netapp_password'],'\$','$$','G')
|
||||
$netapp_password = regsubst($cinder_netapp["netapp_password${name}"],'\$','$$','G')
|
||||
|
||||
|
||||
Cinder_config <||> -> Plugin_cinder_netapp::Backend::Enable_backend[$netapp_backend_name] ~> Service <||>
|
||||
Cinder_config <||> ~> Service <||>
|
||||
|
||||
cinder_config {
|
||||
"$netapp_backend_name/volume_backend_name": value => 'cinder_netapp';
|
||||
"$netapp_backend_name/volume_driver": value => 'cinder.volume.drivers.netapp.common.NetAppDriver';
|
||||
"$netapp_backend_name/netapp_login": value => $cinder_netapp['netapp_login'];
|
||||
"$netapp_backend_name/netapp_password": value => $netapp_password;
|
||||
"$netapp_backend_name/netapp_server_hostname": value => $cinder_netapp['netapp_server_hostname'];
|
||||
"$netapp_backend_name/netapp_server_port": value => $cinder_netapp['netapp_server_port'];
|
||||
"$netapp_backend_name/netapp_transport_type": value => $cinder_netapp['netapp_transport_type'];
|
||||
"$netapp_backend_name/netapp_storage_family": value => $cinder_netapp['netapp_storage_family'];
|
||||
"$netapp_backend_name/netapp_storage_protocol": value => $cinder_netapp['netapp_storage_protocol'];
|
||||
"$netapp_backend_name/netapp_vserver": value => $cinder_netapp['netapp_vserver'];
|
||||
"$netapp_backend_name/netapp_vfiler": value => $cinder_netapp['netapp_vfiler'];
|
||||
"$netapp_backend_name/netapp_controller_ips": value => $cinder_netapp['netapp_controller_ips'];
|
||||
"$netapp_backend_name/netapp_sa_password": value => $cinder_netapp['netapp_sa_password'];
|
||||
"$netapp_backend_name/netapp_webservice_path": value => $netapp_webservice_path;
|
||||
"$netapp_backend_name/nfs_shares_config": value => $nfs_shares_config;
|
||||
"$netapp_backend_name/thres_avl_size_perc_start": value => $cinder_netapp['thres_avl_size_perc_start'];
|
||||
"$netapp_backend_name/thres_avl_size_perc_stop": value => $cinder_netapp['thres_avl_size_perc_stop'];
|
||||
"$netapp_backend_name/expiry_thres_minutes": value => $cinder_netapp['expiry_thres_minutes'];
|
||||
"$netapp_backend_name/netapp_copyoffload_tool_path": value => $cinder_netapp['netapp_copyoffload_tool_path'];
|
||||
"$netapp_backend_name/netapp_host_type": value => $host_type;
|
||||
"$netapp_backend_name/netapp_lun_space_reservation": value => $lun_space_reservation;
|
||||
"$netapp_backend_name/netapp_lun_ostype": value => $cinder_netapp['netapp_lun_ostype'];
|
||||
"$netapp_backend_name/use_multipath_for_image_xfer": value => $cinder_netapp['use_multipath_for_image_xfer'];
|
||||
"$netapp_backend_name/netapp_enable_multiattach": value => $cinder_netapp['netapp_enable_multiattach'];
|
||||
"$netapp_backend_name/netapp_pool_name_search_pattern": value => $cinder_netapp['netapp_pool_name_search_pattern'];
|
||||
"$netapp_backend_name/reserved_percentage": value => $cinder_netapp['reserved_percentage'];
|
||||
"$netapp_backend_name/max_oversubscription_ratio": value => $cinder_netapp['max_oversubscription_ratio'];
|
||||
"$netapp_backend_name/nfs_mount_options": value => $cinder_netapp['nfs_mount_options'];
|
||||
"$netapp_backend_name/backend_host": value => 'str:netapp'; # for NetApp HA
|
||||
"${netapp_backend_name}/volume_backend_name": value => "cinder_netapp_backend_${name}";
|
||||
"${netapp_backend_name}/volume_driver": value => 'cinder.volume.drivers.netapp.common.NetAppDriver';
|
||||
"${netapp_backend_name}/netapp_login": value => $cinder_netapp["netapp_login${name}"];
|
||||
"${netapp_backend_name}/netapp_password": value => $netapp_password;
|
||||
"${netapp_backend_name}/netapp_server_hostname": value => $cinder_netapp["netapp_server_hostname${name}"];
|
||||
"${netapp_backend_name}/netapp_server_port": value => $cinder_netapp["netapp_server_port${name}"];
|
||||
"${netapp_backend_name}/netapp_transport_type": value => $cinder_netapp["netapp_transport_type${name}"];
|
||||
"${netapp_backend_name}/netapp_storage_family": value => $cinder_netapp["netapp_storage_family${name}"];
|
||||
"${netapp_backend_name}/netapp_storage_protocol": value => $cinder_netapp["netapp_storage_protocol${name}"];
|
||||
"${netapp_backend_name}/netapp_vserver": value => $cinder_netapp["netapp_vserver${name}"];
|
||||
"${netapp_backend_name}/netapp_vfiler": value => $cinder_netapp["netapp_vfiler${name}"];
|
||||
"${netapp_backend_name}/netapp_controller_ips": value => $cinder_netapp["netapp_controller_ips${name}"];
|
||||
"${netapp_backend_name}/netapp_sa_password": value => $cinder_netapp["netapp_sa_password${name}"];
|
||||
"${netapp_backend_name}/netapp_webservice_path": value => $netapp_webservice_path;
|
||||
"${netapp_backend_name}/nfs_shares_config": value => $nfs_shares_config;
|
||||
"${netapp_backend_name}/thres_avl_size_perc_start": value => $cinder_netapp["thres_avl_size_perc_start${name}"];
|
||||
"${netapp_backend_name}/thres_avl_size_perc_stop": value => $cinder_netapp["thres_avl_size_perc_stop${name}"];
|
||||
"${netapp_backend_name}/expiry_thres_minutes": value => $cinder_netapp["expiry_thres_minutes${name}"];
|
||||
"${netapp_backend_name}/netapp_copyoffload_tool_path": value => $cinder_netapp["netapp_copyoffload_tool_path${name}"];
|
||||
"${netapp_backend_name}/netapp_host_type": value => $host_type;
|
||||
"${netapp_backend_name}/netapp_lun_space_reservation": value => $lun_space_reservation;
|
||||
"${netapp_backend_name}/netapp_lun_ostype": value => $cinder_netapp["netapp_lun_ostype${name}"];
|
||||
"${netapp_backend_name}/use_multipath_for_image_xfer": value => $cinder_netapp["use_multipath_for_image_xfer"];
|
||||
"${netapp_backend_name}/netapp_enable_multiattach": value => $cinder_netapp["netapp_enable_multiattach${name}"];
|
||||
"${netapp_backend_name}/netapp_pool_name_search_pattern": value => $cinder_netapp["netapp_pool_name_search_pattern${name}"];
|
||||
"${netapp_backend_name}/reserved_percentage": value => $cinder_netapp["reserved_percentage${name}"];
|
||||
"${netapp_backend_name}/max_oversubscription_ratio": value => $cinder_netapp["max_oversubscription_ratio${name}"];
|
||||
"${netapp_backend_name}/nfs_mount_options": value => $cinder_netapp["nfs_mount_options"];
|
||||
"${netapp_backend_name}/backend_host": value => 'str:netapp'; # for NetApp HA
|
||||
}
|
||||
|
||||
# Adds the backend in <enabled_backends> parameter
|
||||
plugin_cinder_netapp::backend::enable_backend { $netapp_backend_name: }
|
||||
plugin_cinder_netapp::backend::enable_backend { $netapp_backend_name : }
|
||||
|
||||
service { $cinder::params::volume_service: }
|
||||
if ! defined( Service ) {
|
||||
service { $cinder::params::volume_service : }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,54 @@
|
|||
# Copyright 2015 SolidFire, Inc.
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
|
||||
|
||||
define plugin_cinder_netapp::backend::solidfire (
|
||||
$netapp_backend_name = "netapp_backend_${name}",
|
||||
$cinder_netapp = $plugin_cinder_netapp::params::cinder_netapp,
|
||||
) {
|
||||
|
||||
if ($cinder_netapp["netapp_storage_family${name}"] in ['solidfire']) {
|
||||
|
||||
include cinder::params
|
||||
include cinder::client
|
||||
|
||||
if ! defined( Package['open-iscsi'] ) {
|
||||
package { 'open-iscsi': }
|
||||
}
|
||||
|
||||
Cinder::Backend::Solidfire <||> -> Plugin_cinder_netapp::Backend::Enable_backend[$netapp_backend_name] ~> Service <||>
|
||||
|
||||
cinder::backend::solidfire { $netapp_backend_name :
|
||||
san_ip => $cinder_netapp["solidfire_mvip${name}"],
|
||||
san_login => $cinder_netapp["solidfire_admin_login${name}"],
|
||||
san_password => $cinder_netapp["solidfire_admin_password${name}"],
|
||||
volume_backend_name => "cinder_netapp_backend_${name}",
|
||||
sf_emulate_512 => true,
|
||||
sf_api_port => $cinder_netapp["solidfire_api_port${name}"],
|
||||
sf_account_prefix => $cinder_netapp["solidfire_account_prefix${name}"],
|
||||
sf_allow_template_caching => $cinder_netapp["solidfire_allow_template_caching${name}"],
|
||||
sf_template_account_name => $cinder_netapp["solidfire_template_account${name}"],
|
||||
sf_volume_prefix => $cinder_netapp["solidfire_volume_prefix${name}"],
|
||||
extra_options => { "${netapp_backend_name}/backend_host" => { value => 'str:netapp' },},
|
||||
}
|
||||
|
||||
# Adds the backend in <enabled_backends> parameter
|
||||
plugin_cinder_netapp::backend::enable_backend { $netapp_backend_name : }
|
||||
|
||||
if ! defined( Service ) {
|
||||
service { $cinder::params::volume_service : }
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,5 +1,10 @@
|
|||
class plugin_cinder_netapp (
|
||||
$cinder_netapp = $plugin_cinder_netapp::params::cinder_netapp,
|
||||
) inherits plugin_cinder_netapp::params {
|
||||
|
||||
class { $netapp_backend_class: }
|
||||
$backends = range('1', $cinder_netapp['number_netapp_backends'])
|
||||
|
||||
plugin_cinder_netapp::backend::netapp { $backends : }
|
||||
|
||||
plugin_cinder_netapp::backend::solidfire { $backends : }
|
||||
}
|
||||
|
|
|
@ -3,5 +3,4 @@ class plugin_cinder_netapp::params (
|
|||
|
||||
$config_file = '/etc/cinder/cinder.conf'
|
||||
$cinder_netapp = hiera_hash('cinder_netapp', {})
|
||||
$netapp_backend_class = 'plugin_cinder_netapp::backend::netapp'
|
||||
}
|
||||
|
|
|
@ -1,3 +1,11 @@
|
|||
storage:
|
||||
volume_backend_names:
|
||||
netapp: cinder_netapp
|
||||
<% if @number_netapp_backends.to_i >= 1 -%>
|
||||
NetApp_Backend_1 : cinder_netapp_backend_1
|
||||
<% end -%>
|
||||
<% if @number_netapp_backends.to_i >= 2 -%>
|
||||
NetApp_Backend_2 : cinder_netapp_backend_2
|
||||
<% end -%>
|
||||
<% if @number_netapp_backends.to_i >= 3 -%>
|
||||
NetApp_Backend_3 : cinder_netapp_backend_3
|
||||
<% end -%>
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -3,7 +3,7 @@ name: cinder_netapp
|
|||
# Human-readable name for your plugin
|
||||
title: Cinder and NetApp integration
|
||||
# Plugin version
|
||||
version: '5.0.0'
|
||||
version: '6.0.0'
|
||||
# Description
|
||||
description: Enables using NetApp as a Cinder backend
|
||||
# Required fuel version
|
||||
|
|
Loading…
Reference in New Issue