Release Candidate #1 with 5 backends

This commit is contained in:
sreesiv 2016-12-02 21:22:26 +05:30
parent 25acbac26c
commit 1f69d19eb7
8 changed files with 138 additions and 195 deletions

Binary file not shown.

View File

@ -3,35 +3,35 @@ notice('MODULAR: nimble-default-volume-type')
$config_file = '/etc/cinder/cinder.conf'
$cinder_nimble = hiera_hash('cinder_nimble', {})
if ($cinder_nimble['nimble_grouping']) == true {
$nimble_default_type_set = $cinder_nimble['nimble_group_default_backend']
$nimble_default_type = $cinder_nimble['nimble_group_backend_type']
}
else {
$nimble_default_type_set = $cinder_nimble['nimble1_default_backend'] or
$cinder_nimble['nimble2_default_backend'] or
$cinder_nimble['nimble3_default_backend'] or
$cinder_nimble['nimble4_default_backend'] or
$cinder_nimble['nimble5_default_backend']
if ($cinder_nimble['nimble1_default_backend']) == true {
$nimble_default_type = $cinder_nimble['nimble1_backend_type']
}
elsif ($cinder_nimble['nimble2_default_backend']) == true {
$nimble_default_type = $cinder_nimble['nimble2_backend_type']
}
elsif ($cinder_nimble['nimble3_default_backend']) == true {
$nimble_default_type = $cinder_nimble['nimble3_backend_type']
}
elsif ($cinder_nimble['nimble4_default_backend']) == true {
$nimble_default_type = $cinder_nimble['nimble4_backend_type']
}
elsif ($cinder_nimble['nimble5_default_backend']) == true {
$nimble_default_type = $cinder_nimble['nimble5_backend_type']
define plugin_cinder_nimble::check_if_default_backend_is_enabled (
) {
if ($cinder_nimble["nimble${name}_default_backend"]) == true {
class { 'plugin_cinder_nimble::backend::set_default_type' :
config_file => $config_file,
nimble_backend_type => $cinder_nimble["nimble${name}_backend_type"],
}
}
}
class { 'plugin_cinder_nimble::backend::set_default_type' :
config_file => $config_file,
nimble_default_type_set => $nimble_default_type_set,
nimble_backend_type => $nimble_default_type,
if ($cinder_nimble['nimble_grouping']) == true {
if ($cinder_nimble["nimble_group_default_backend"]) == true {
class { 'plugin_cinder_nimble::backend::set_default_type' :
config_file => $config_file,
nimble_backend_type => $cinder_nimble['nimble_group_backend_type'],
}
}
}
else {
# Should work from Puppet >= 4.0.0 onwards which has Future parser
/*
range("1", "$cinder_nimble['no_backends']").each |Integer $index, String $value| {
if ($cinder_nimble["nimble${value}_default_backend"]) == true {
$nimble_default_type = $cinder_nimble["nimble${value}_backend_type"]
$nimble_default_type_set = true
}
}
*/
$range_array = range("1", $cinder_nimble['no_backends'])
plugin_cinder_nimble::check_if_default_backend_is_enabled { $range_array: }
}

View File

@ -1,7 +1,37 @@
notice('MODULAR: nimble-disable-default-volume-type')
$config_file = '/etc/cinder/cinder.conf'
include plugin_cinder_nimble::params
include cinder::params
class { 'plugin_cinder_nimble::backend::disable_default_type' :
config_file => $config_file,
$config_file = '/etc/cinder/cinder.conf'
$cinder_nimble = hiera_hash('cinder_nimble', {})
define plugin_cinder_nimble::check_if_default_type_is_enabled (
) {
if ($cinder_nimble["nimble${name}_default_backend"]) == true {
class { 'plugin_cinder_nimble::backend::disable_default_type' :
config_file => $config_file,
}
}
}
if ($cinder_nimble['nimble_grouping']) == true {
if ($cinder_nimble['nimble_group_default_backend']) == true {
class { 'plugin_cinder_nimble::backend::disable_default_type' :
config_file => $config_file,
}
}
}
else {
# Should work from Puppet >= 4.0.0 onwards which has Future parser
/*
range("1", "$cinder_nimble['no_backends']").each |Integer $index, String $value| {
if ($cinder_nimble["nimble${value}_default_backend"]) == true {
$nimble_default_type_set = true
}
}
*/
$range_array = range("1", $cinder_nimble['no_backends'])
plugin_cinder_nimble::check_if_default_type_is_enabled { $range_array: }
}

View File

@ -3,76 +3,56 @@
notice('MODULAR: nimble-hiera-override')
$cinder_nimble = hiera_hash('cinder_nimble', {})
$nimble_group_backend_type = $cinder_nimble['nimble_group_backend_type']
$nimble_group_backend_name = $cinder_nimble['nimble_group_backend_name']
$no_backends = $cinder_nimble['no_backends']
$nimble1_backend_type = $cinder_nimble['nimble1_backend_type']
$nimble1_backend_name = $cinder_nimble['nimble1_backend_name']
$nimble2_backend_type = $cinder_nimble['nimble2_backend_type']
$nimble2_backend_name = $cinder_nimble['nimble2_backend_name']
$no_backends = $cinder_nimble['no_backends']
$hiera_dir = '/etc/hiera/plugins'
$plugin_yaml = 'cinder_nimble.yaml'
$plugin_name = 'cinder_nimble'
# extraspecs
$nimble_group_encryption = $cinder_nimble['nimble_group_encryption']
$nimble_group_perfpol = $cinder_nimble['nimble_group_perfpol']
$nimble_group_multi_init = $cinder_nimble['nimble_group_multi_init']
$nimble1_encryption = $cinder_nimble['nimble1_encryption']
$nimble1_perfpol = $cinder_nimble['nimble1_perfpol']
$nimble1_multi_init = $cinder_nimble['nimble1_multi_init']
$nimble2_encryption = $cinder_nimble['nimble2_encryption']
$nimble2_perfpol = $cinder_nimble['nimble2_perfpol']
$nimble2_multi_init = $cinder_nimble['nimble2_multi_init']
file { $hiera_dir:
ensure => directory,
}
$range_array = range("1", $no_backends)
# Create content based on grouping flag.
# This is separated to keep the inline content and conditions tidy.
if ($cinder_nimble['nimble_grouping']) == true {
$content = inline_template('
storage:
volume_backend_names:
<%= nimble_group_backend_type %>: <%= nimble_group_backend_name %>
<%= @cinder_nimble["nimble_group_backend_type"] %>: <%= @cinder_nimble["nimble_group_backend_name"] %>
nimble_encryption:
<%= nimble_group_backend_type %>: <%= nimble_group_encryption -%>
<% if nimble_group_perfpol != "" %>
<%= @cinder_nimble["nimble_group_backend_type"] %>: <%= @cinder_nimble["nimble_group_encryption"] -%>
<% if @cinder_nimble["nimble_group_perfpol"] != "" %>
nimble_perfpol:
<%= nimble_group_backend_type %>: <%= nimble_group_perfpol -%>
<%= @cinder_nimble["nimble_group_backend_type"] %>: <%= @cinder_nimble["nimble_group_perfpol"] -%>
<% end %>
nimble_multi_init:
<%= nimble_group_backend_type %>: <%= nimble_group_multi_init %>
<%= @cinder_nimble["nimble_group_backend_type"] %>: <%= @cinder_nimble["nimble_group_multi_init"] %>
')
}
else {
$content = inline_template('
storage:
volume_backend_names:
<%= nimble1_backend_type %>: <%= nimble1_backend_name -%>
<% if no_backends != "1" %>
<%= nimble2_backend_type %>: <%= nimble2_backend_name -%>
<% @range_array.each do |i| -%>
<%= @cinder_nimble["nimble#{i}_backend_type"] %>: <%= @cinder_nimble["nimble#{i}_backend_name"] %>
<% end %>
nimble_encryption:
<%= nimble1_backend_type %>: <%= nimble1_encryption -%>
<% if no_backends != "1" %>
<%= nimble2_backend_type %>: <%= nimble2_encryption -%>
<% end -%>
<% if nimble1_perfpol != "" or nimble2_perfpol != "" %>
nimble_perfpol:
<% if nimble1_perfpol != "" -%>
<%= nimble1_backend_type %>: <%= nimble1_perfpol -%>
<% @range_array.each do |i| -%>
<%= @cinder_nimble["nimble#{i}_backend_type"] %>: <%= @cinder_nimble["nimble#{i}_encryption"] %>
<% end %>
<% if no_backends != "1" and nimble2_perfpol != "" -%>
<%= nimble2_backend_type %>: <%= nimble2_perfpol -%>
nimble_perfpol:
__dummy__: __dummy__
<% @range_array.each do |i| -%>
<% if @cinder_nimble["nimble#{i}_perfpol"] != "" -%>
<%= @cinder_nimble["nimble#{i}_backend_type"] %>: <%= @cinder_nimble["nimble#{i}_perfpol"] -%>
<% end %>
<% end %>
nimble_multi_init:
<%= nimble1_backend_type %>: <%= nimble1_multi_init -%>
<% if no_backends != "1" %>
<%= nimble2_backend_type %>: <%= nimble2_multi_init -%>
<% @range_array.each do |i| -%>
<%= @cinder_nimble["nimble#{i}_backend_type"] %>: <%= @cinder_nimble["nimble#{i}_multi_init"] %>
<% end %>
')
}

View File

@ -5,35 +5,20 @@ class plugin_cinder_nimble::backend::disable_default_type (
include plugin_cinder_nimble::params
include cinder::params
$cinder_nimble = hiera_hash('cinder_nimble', {})
if ($cinder_nimble['nimble_grouping']) == true {
$nimble_default_type_set = $cinder_nimble['nimble_group_default_backend']
}
else {
$nimble_default_type_set = $cinder_nimble['nimble1_default_backend'] or
$cinder_nimble['nimble2_default_backend'] or
$cinder_nimble['nimble3_default_backend'] or
$cinder_nimble['nimble4_default_backend'] or
$cinder_nimble['nimble5_default_backend']
ini_setting {"disable_default_type_${nimble_backend_type}":
ensure => absent,
section => 'DEFAULT',
path => $config_file,
setting => 'default_volume_type',
}
if ($nimble_default_type_set) == true {
ini_setting {"disable_default_type_${nimble_backend_type}":
ensure => absent,
section => 'DEFAULT',
path => $config_file,
setting => 'default_volume_type',
}
Cinder_config<||> ~> Service['cinder-api']
Cinder_config<||> ~> Service['cinder-api']
service { 'cinder-api':
ensure => stopped,
name => $::cinder::params::api_service,
enable => true,
hasstatus => true,
hasrestart => true,
}
service { 'cinder-api':
ensure => stopped,
name => $::cinder::params::api_service,
enable => true,
hasstatus => true,
hasrestart => true,
}
}

View File

@ -2,91 +2,41 @@ class plugin_cinder_nimble::backend::nimble (
$cinder_nimble = $plugin_cinder_nimble::params::cinder_nimble
) {
include plugin_cinder_nimble::params
include cinder::params
# Get the group backend name as configured by the user
$nimble_group_backend_name = $cinder_nimble['nimble_group_backend_name']
define plugin_cinder_nimble::add_backend (
$array, # pass the original $name
) {
#notice(inline_template('NAME: <%= name.inspect %>'))
# Sets correct driver depending on backend protocol
if ($cinder_nimble['nimble1_backend_protocol']) == 'iSCSI' {
if ! defined(Package['open-iscsi']) {
# We need following packages to create a root volume during an instance spawning
package { 'open-iscsi': }
# build a unique name...
$length = inline_template('<%= array.length %>')
$ulength = inline_template('<%= array.uniq.length %>')
if ( "${length}" != '0' ) and ( "${length}" != "${ulength}" ) {
fail('Array must not have duplicates.')
}
# if array had duplicates, this wouldn't be a unique index
$index = inline_template('<%= array.index(name) %>')
plugin_cinder_nimble::backend::set_nimble_backend { "$index" :
backend_id => $name,
index => "$index",
}
$nimble1_cinder_driver = 'cinder.volume.drivers.nimble.NimbleISCSIDriver'
}
elsif ($cinder_nimble['nimble1_backend_protocol']) == 'FC' {
$nimble1_cinder_driver = 'cinder.volume.drivers.nimble.NimbleFCDriver'
}
# To be ensure that $ symbol is correctly escaped in cinder password
$nimble1_password = regsubst($cinder_nimble['nimble1_password'],'\$','$$','G')
# Check whether grouping is enabled and adjust volume_backend_name accordingly
if ($cinder_nimble['nimble_grouping']) == true {
$nimble1_backend_name = "${nimble_group_backend_name}_1"
$nimble1_volume_backend_name = "${nimble_group_backend_name}"
# Should work from Puppet >= 4.0.0 onwards which has Future parser
/*
range("1", "$cinder_nimble['no_backends']").each |$id| {
# Set backend details
class { 'plugin_cinder_nimble::backend::set_nimble_backend' :
$backend_id => $id,
}
}
else {
$nimble1_backend_name = "${cinder_nimble['nimble1_backend_name']}"
$nimble1_volume_backend_name = "${cinder_nimble['nimble1_backend_name']}"
*/
$range_array = range("1", $cinder_nimble['no_backends'])
plugin_cinder_nimble::add_backend { $range_array:
array => $range_array,
}
Cinder_config <||> -> Plugin_cinder_nimble::Backend::Enable_backend[$nimble1_backend_name] ~> Service <||>
Cinder_config <||> ~> Service <||>
cinder_config {
"$nimble1_backend_name/volume_backend_name": value => $nimble1_volume_backend_name;
"$nimble1_backend_name/volume_driver": value => $nimble1_cinder_driver;
"$nimble1_backend_name/san_ip": value => $cinder_nimble['nimble1_san_ip'];
"$nimble1_backend_name/san_login": value => $cinder_nimble['nimble1_login'];
"$nimble1_backend_name/san_password": value => $nimble1_password;
}
# Adds the backend in <enabled_backends> parameter
plugin_cinder_nimble::backend::enable_backend { $nimble1_backend_name: }
if ($cinder_nimble['no_backends']) >= '2' {
# Sets correct driver depending on backend protocol
if ($cinder_nimble['nimble2_backend_protocol']) == 'iSCSI' {
if ! defined(Package['open-iscsi']) {
# We need following packages to create a root volume during an instance spawning
package { 'open-iscsi': }
}
$nimble2_cinder_driver = 'cinder.volume.drivers.nimble.NimbleISCSIDriver'
}
elsif ($cinder_nimble['nimble2_backend_protocol']) == 'FC' {
$nimble2_cinder_driver = 'cinder.volume.drivers.nimble.NimbleFCDriver'
}
# To be ensure that $ symbol is correctly escaped in cinder password
$nimble2_password = regsubst($cinder_nimble['nimble2_password'],'\$','$$','G')
# Check whether grouping is enabled and adjust volume_backend_name accordingly
if ($cinder_nimble['nimble_grouping']) == true {
$nimble2_backend_name = "${nimble_group_backend_name}_2"
$nimble2_volume_backend_name = "${nimble_group_backend_name}"
}
else {
$nimble2_backend_name = "${cinder_nimble['nimble2_backend_name']}"
$nimble2_volume_backend_name = "${cinder_nimble['nimble2_backend_name']}"
}
Cinder_config <||> -> Plugin_cinder_nimble::Backend::Enable_backend[$nimble2_backend_name] ~> Service <||>
Cinder_config <||> ~> Service <||>
cinder_config {
"$nimble2_backend_name/volume_backend_name": value => $nimble2_volume_backend_name;
"$nimble2_backend_name/volume_driver": value => $nimble2_cinder_driver;
"$nimble2_backend_name/san_ip": value => $cinder_nimble['nimble2_san_ip'];
"$nimble2_backend_name/san_login": value => $cinder_nimble['nimble2_login'];
"$nimble2_backend_name/san_password": value => $nimble2_password;
}
# Adds the backend in <enabled_backends> parameter
plugin_cinder_nimble::backend::enable_backend { $nimble2_backend_name: }
}
service { $cinder::params::volume_service: }
}

View File

@ -1,30 +1,27 @@
class plugin_cinder_nimble::backend::set_default_type (
$config_file,
$nimble_default_type_set,
$nimble_backend_type
) {
include plugin_cinder_nimble::params
include cinder::params
if ($nimble_default_type_set) == true {
ini_subsetting {"set_default_type_${nimble_backend_type}":
ensure => present,
section => 'DEFAULT',
key_val_separator => '=',
path => $config_file,
setting => 'default_volume_type',
subsetting => $nimble_backend_type,
}
ini_subsetting {"set_default_type_${nimble_backend_type}":
ensure => present,
section => 'DEFAULT',
key_val_separator => '=',
path => $config_file,
setting => 'default_volume_type',
subsetting => $nimble_backend_type,
}
Cinder_config<||> ~> Service['cinder-api']
Cinder_config<||> ~> Service['cinder-api']
service { 'cinder-api':
ensure => running,
name => $::cinder::params::api_service,
enable => true,
hasstatus => true,
hasrestart => true,
}
service { 'cinder-api':
ensure => running,
name => $::cinder::params::api_service,
enable => true,
hasstatus => true,
hasrestart => true,
}
}

View File

@ -3,10 +3,11 @@ class plugin_cinder_nimble::backend::set_extraspecs_perfpol (
$storage_hash = hiera_hash('storage', {})
$nimble_perfpol = $storage_hash['nimble_perfpol']
if ! empty($nimble_perfpol) {
$available_backend_names = keys($nimble_perfpol)
$available_backends = delete_values($nimble_perfpol, '__dummy__')
$available_backend_names = keys($available_backends)
::osnailyfacter::openstack::manage_cinder_types { $available_backend_names:
ensure => 'present',
volume_backend_names => $nimble_perfpol,
volume_backend_names => $available_backends,
key => 'nimble:perfpol-name'
}
}