aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2017-02-10 21:56:56 +0000
committerGerrit Code Review <review@openstack.org>2017-02-10 21:56:56 +0000
commite4e9f85c648d33079f1fdc33d8a097977ab1b3c6 (patch)
tree0456baa82caa2e139d05b20c82c4323f9cb8557f
parent41b5619ab4867a042af02e3b09f2d1a8161a716d (diff)
parentf1065f3f65c77db64bd0c2caa11187326c45db25 (diff)
Merge "Add module to support ScaleIO backend in Cinder"
-rw-r--r--manifests/profile/base/cinder/volume.pp13
-rw-r--r--manifests/profile/base/cinder/volume/scaleio.pp56
-rw-r--r--spec/classes/tripleo_profile_base_cinder_scaleio_spec.rb58
3 files changed, 127 insertions, 0 deletions
diff --git a/manifests/profile/base/cinder/volume.pp b/manifests/profile/base/cinder/volume.pp
index 79238c0..9fb1594 100644
--- a/manifests/profile/base/cinder/volume.pp
+++ b/manifests/profile/base/cinder/volume.pp
@@ -46,6 +46,10 @@
# (Optional) Whether to enable the rbd backend
# Defaults to true
#
+# [*cinder_enable_scaleio_backend*]
+# (Optional) Whether to enable the scaleio backend
+# Defaults to true
+#
# [*cinder_user_enabled_backends*]
# (Optional) List of additional backend stanzas to activate
# Defaults to hiera('cinder_user_enabled_backends')
@@ -63,6 +67,7 @@ class tripleo::profile::base::cinder::volume (
$cinder_enable_netapp_backend = false,
$cinder_enable_nfs_backend = false,
$cinder_enable_rbd_backend = false,
+ $cinder_enable_scaleio_backend = false,
$cinder_user_enabled_backends = hiera('cinder_user_enabled_backends', undef),
$step = hiera('step'),
) {
@@ -120,6 +125,13 @@ class tripleo::profile::base::cinder::volume (
$cinder_rbd_backend_name = undef
}
+ if $cinder_enable_scaleio_backend {
+ include ::tripleo::profile::base::cinder::volume::scaleio
+ $cinder_scaleio_backend_name = hiera('cinder::backend::scaleio::volume_backend_name', 'tripleo_scaleio')
+ } else {
+ $cinder_scaleio_backend_name = undef
+ }
+
$backends = delete_undef_values([$cinder_iscsi_backend_name,
$cinder_rbd_backend_name,
$cinder_dellps_backend_name,
@@ -127,6 +139,7 @@ class tripleo::profile::base::cinder::volume (
$cinder_hpelefthand_backend_name,
$cinder_netapp_backend_name,
$cinder_nfs_backend_name,
+ $cinder_scaleio_backend_name,
$cinder_user_enabled_backends])
# NOTE(aschultz): during testing it was found that puppet 3 may incorrectly
# include a "" in the previous array which is not removed by the
diff --git a/manifests/profile/base/cinder/volume/scaleio.pp b/manifests/profile/base/cinder/volume/scaleio.pp
new file mode 100644
index 0000000..a30cffa
--- /dev/null
+++ b/manifests/profile/base/cinder/volume/scaleio.pp
@@ -0,0 +1,56 @@
+# Copyright 2016 Red Hat, 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.
+#
+# == Class: tripleo::profile::base::cinder::volume::scaleio
+#
+# Cinder Volume scaleio profile for tripleo
+#
+# === Parameters
+#
+# [*backend_name*]
+# (Optional) Name given to the Cinder backend stanza
+# Defaults to 'tripleo_scaleio'
+#
+# [*step*]
+# (Optional) The current step in deployment. See tripleo-heat-templates
+# for more details.
+# Defaults to hiera('step')
+#
+class tripleo::profile::base::cinder::volume::scaleio (
+ $backend_name = hiera('cinder::backend::scaleio::volume_backend_name', 'tripleo_scaleio'),
+ $step = hiera('step'),
+) {
+ include ::tripleo::profile::base::cinder::volume
+
+ if $step >= 4 {
+ cinder::backend::scaleio { $backend_name :
+ sio_login => hiera('cinder::backend::scaleio::sio_login', undef),
+ sio_password => hiera('cinder::backend::scaleio::sio_password', undef),
+ sio_server_hostname => hiera('cinder::backend::scaleio::sio_server_hostname', undef),
+ sio_server_port => hiera('cinder::backend::scaleio::sio_server_port', undef),
+ sio_verify_server_certificate => hiera('cinder::backend::scaleio::sio_verify_server_certificate', undef),
+ sio_server_certificate_path => hiera('cinder::backend::scaleio::sio_server_certificate_path', undef),
+ sio_protection_domain_name => hiera('cinder::backend::scaleio::sio_protection_domain_name', undef),
+ sio_protection_domain_id => hiera('cinder::backend::scaleio::sio_protection_domain_id', undef),
+ sio_storage_pool_id => hiera('cinder::backend::scaleio::sio_storage_pool_id', undef),
+ sio_storage_pool_name => hiera('cinder::backend::scaleio::sio_storage_pool_name', undef),
+ sio_storage_pools => hiera('cinder::backend::scaleio::sio_storage_pools', undef),
+ sio_round_volume_capacity => hiera('cinder::backend::scaleio::sio_round_volume_capacity', undef),
+ sio_unmap_volume_before_deletion => hiera('cinder::backend::scaleio::sio_unmap_volume_before_deletion', undef),
+ sio_max_over_subscription_ratio => hiera('cinder::backend::scaleio::sio_max_over_subscription_ratio', undef),
+ sio_thin_provision => hiera('cinder::backend::scaleio::sio_thin_provision', undef),
+ }
+ }
+
+}
diff --git a/spec/classes/tripleo_profile_base_cinder_scaleio_spec.rb b/spec/classes/tripleo_profile_base_cinder_scaleio_spec.rb
new file mode 100644
index 0000000..0f12b0a
--- /dev/null
+++ b/spec/classes/tripleo_profile_base_cinder_scaleio_spec.rb
@@ -0,0 +1,58 @@
+#
+# Copyright (C) 2016 Red Hat, 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.
+#
+
+require 'spec_helper'
+
+describe 'tripleo::profile::base::cinder::volume::scaleio' do
+ shared_examples_for 'tripleo::profile::base::cinder::volume::scaleio' do
+ before :each do
+ facts.merge!({ :step => params[:step] })
+ end
+
+ context 'with step less than 4' do
+ let(:params) { { :step => 3 } }
+
+ it 'should do nothing' do
+ is_expected.to contain_class('tripleo::profile::base::cinder::volume::scaleio')
+ is_expected.to contain_class('tripleo::profile::base::cinder::volume')
+ is_expected.to contain_class('tripleo::profile::base::cinder')
+ is_expected.to_not contain_cinder__backend__scaleio('tripleo_scaleio')
+ end
+ end
+
+ context 'with step 4' do
+ let(:params) { {
+ :step => 4,
+ } }
+
+ it 'should trigger complete configuration' do
+ # TODO(aschultz): check hiera parameters
+ is_expected.to contain_cinder__backend__scaleio('tripleo_scaleio')
+ end
+ end
+ end
+
+
+ on_supported_os.each do |os, facts|
+ context "on #{os}" do
+ let(:facts) do
+ facts.merge({ :hostname => 'node.example.com' })
+ end
+
+ it_behaves_like 'tripleo::profile::base::cinder::volume::scaleio'
+ end
+ end
+end