diff options
8 files changed, 163 insertions, 15 deletions
diff --git a/manifests/profile/base/cinder/volume.pp b/manifests/profile/base/cinder/volume.pp index 3581540..bdfdd17 100644 --- a/manifests/profile/base/cinder/volume.pp +++ b/manifests/profile/base/cinder/volume.pp @@ -20,11 +20,11 @@ # # [*cinder_enable_pure_backend*] # (Optional) Whether to enable the pure backend -# Defaults to true +# Defaults to false # # [*cinder_enable_dellsc_backend*] # (Optional) Whether to enable the delsc backend -# Defaults to true +# Defaults to false # # [*cinder_enable_hpelefthand_backend*] # (Optional) Whether to enable the hpelefthand backend @@ -32,7 +32,7 @@ # # [*cinder_enable_dellps_backend*] # (Optional) Whether to enable the dellps backend -# Defaults to true +# Defaults to false # # [*cinder_enable_iscsi_backend*] # (Optional) Whether to enable the iscsi backend @@ -40,19 +40,23 @@ # # [*cinder_enable_netapp_backend*] # (Optional) Whether to enable the netapp backend -# Defaults to true +# Defaults to false # # [*cinder_enable_nfs_backend*] # (Optional) Whether to enable the nfs backend -# Defaults to true +# Defaults to false # # [*cinder_enable_rbd_backend*] # (Optional) Whether to enable the rbd backend -# Defaults to true +# Defaults to false # # [*cinder_enable_scaleio_backend*] # (Optional) Whether to enable the scaleio backend -# Defaults to true +# Defaults to false +# +#[*cinder_enable_vrts_hs_backend*] +# (Optional) Whether to enable the Veritas HyperScale backend +# Defaults to false # # [*cinder_user_enabled_backends*] # (Optional) List of additional backend stanzas to activate @@ -73,6 +77,7 @@ class tripleo::profile::base::cinder::volume ( $cinder_enable_nfs_backend = false, $cinder_enable_rbd_backend = false, $cinder_enable_scaleio_backend = false, + $cinder_enable_vrts_hs_backend = false, $cinder_user_enabled_backends = hiera('cinder_user_enabled_backends', undef), $step = Integer(hiera('step')), ) { @@ -144,6 +149,13 @@ class tripleo::profile::base::cinder::volume ( $cinder_scaleio_backend_name = undef } + if $cinder_enable_vrts_hs_backend { + include ::tripleo::profile::base::cinder::volume::veritas_hyperscale + $cinder_veritas_hyperscale_backend_name = 'Veritas_HyperScale' + } else { + $cinder_veritas_hyperscale_backend_name = undef + } + $backends = delete_undef_values([$cinder_iscsi_backend_name, $cinder_rbd_backend_name, $cinder_pure_backend_name, @@ -153,6 +165,7 @@ class tripleo::profile::base::cinder::volume ( $cinder_netapp_backend_name, $cinder_nfs_backend_name, $cinder_scaleio_backend_name, + $cinder_veritas_hyperscale_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/veritas_hyperscale.pp b/manifests/profile/base/cinder/volume/veritas_hyperscale.pp new file mode 100644 index 0000000..4516d01 --- /dev/null +++ b/manifests/profile/base/cinder/volume/veritas_hyperscale.pp @@ -0,0 +1,44 @@ +# Copyright (c) 2017 Veritas Technologies LLC. +# +# 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::veritas_hyperscale +# +# Cinder Volume Veritas HyperScale profile for tripleo +# +# === Parameters +# +# [*backend_name*] +# (Optional) The name of Veritas HyperScale cinder backend. +# Currently the backend name is hard-coded in the driver, and it won't +# function if other value is set in hiera. +# +# [*step*] +# (Optional) The current step in deployment. See tripleo-heat-templates +# for more details. +# Defaults to hiera('step') +# +class tripleo::profile::base::cinder::volume::veritas_hyperscale ( + # Note: Currently the backend name is hard-coded in the driver, and it won't + # function if other value is set in hiera. + $backend_name = hiera('cinder::backend::veritas_hyperscale::volume_backend_name', 'Veritas_HyperScale'), + $step = Integer(hiera('step')), +) { + include ::tripleo::profile::base::cinder::volume + + if $step >= 4 { + cinder::backend::veritas_hyperscale { $backend_name : + } + } + +} diff --git a/manifests/profile/base/database/mysql.pp b/manifests/profile/base/database/mysql.pp index fbb8b11..3bf41cf 100644 --- a/manifests/profile/base/database/mysql.pp +++ b/manifests/profile/base/database/mysql.pp @@ -224,6 +224,9 @@ class tripleo::profile::base::database::mysql ( # NOTE: by default zaqar uses mongodb include ::zaqar::db::mysql } + if hiera('veritas_hyperscale_controller_enabled', false) { + include ::veritas_hyperscale::db::mysql + } } } diff --git a/manifests/profile/base/keystone.pp b/manifests/profile/base/keystone.pp index 91a660c..47b5276 100644 --- a/manifests/profile/base/keystone.pp +++ b/manifests/profile/base/keystone.pp @@ -347,5 +347,8 @@ class tripleo::profile::base::keystone ( if hiera('novajoin_enabled', false) { include ::nova::metadata::novajoin::auth } + if hiera('veritas_hyperscale_controller_enabled', false) { + include ::veritas_hyperscale::hs_keystone + } } } diff --git a/manifests/profile/base/rabbitmq.pp b/manifests/profile/base/rabbitmq.pp index 8ab6049..d0b4a05 100644 --- a/manifests/profile/base/rabbitmq.pp +++ b/manifests/profile/base/rabbitmq.pp @@ -166,4 +166,7 @@ class tripleo::profile::base::rabbitmq ( } } + if $step >= 1 and hiera('veritas_hyperscale_controller_enabled', false) { + include ::veritas_hyperscale::hs_rabbitmq + } } diff --git a/releasenotes/notes/veritas-hyperscale-driver-profile-970b5cb72f9fdcba.yaml b/releasenotes/notes/veritas-hyperscale-driver-profile-970b5cb72f9fdcba.yaml new file mode 100644 index 0000000..0f98d44 --- /dev/null +++ b/releasenotes/notes/veritas-hyperscale-driver-profile-970b5cb72f9fdcba.yaml @@ -0,0 +1,3 @@ +--- +features: + - New profile for Veritas HyperScale Cinder backend. diff --git a/spec/classes/tripleo_profile_base_cinder_veritas_hyperscale_spec.rb b/spec/classes/tripleo_profile_base_cinder_veritas_hyperscale_spec.rb new file mode 100644 index 0000000..63c1147 --- /dev/null +++ b/spec/classes/tripleo_profile_base_cinder_veritas_hyperscale_spec.rb @@ -0,0 +1,57 @@ +# +# Copyright (c) 2017 Veritas Technologies LLC. +# +# 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::veritas_hyperscale' do + shared_examples_for 'tripleo::profile::base::cinder::volume::veritas_hyperscale' 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::veritas_hyperscale') + 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__veritas_hyperscale('Veritas_HyperScale') + end + end + + context 'with step 4' do + let(:params) { { + :step => 4, + } } + + it 'should trigger complete configuration' do + is_expected.to contain_cinder__backend__veritas_hyperscale('Veritas_HyperScale') + 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::veritas_hyperscale' + end + end +end diff --git a/spec/classes/tripleo_profile_base_cinder_volume_spec.rb b/spec/classes/tripleo_profile_base_cinder_volume_spec.rb index aa3dd89..03f5325 100644 --- a/spec/classes/tripleo_profile_base_cinder_volume_spec.rb +++ b/spec/classes/tripleo_profile_base_cinder_volume_spec.rb @@ -132,6 +132,25 @@ describe 'tripleo::profile::base::cinder::volume' do end end + context 'with only veritas hyperscale' do + before :each do + params.merge!({ + :cinder_enable_vrts_hs_backend => true, + :cinder_enable_iscsi_backend => false, + }) + end + it 'should configure only veritas hyperscale' do + is_expected.to contain_class('tripleo::profile::base::cinder::volume::veritas_hyperscale') + is_expected.to_not contain_class('tripleo::profile::base::cinder::volume::iscsi') + is_expected.to contain_class('tripleo::profile::base::cinder::volume') + is_expected.to contain_class('tripleo::profile::base::cinder') + is_expected.to contain_class('cinder::volume') + is_expected.to contain_class('cinder::backends').with( + :enabled_backends => ['Veritas_HyperScale'] + ) + end + end + context 'with only nfs' do before :each do params.merge!({ @@ -183,6 +202,7 @@ describe 'tripleo::profile::base::cinder::volume' do is_expected.to_not contain_class('tripleo::profile::base::cinder::volume::dellsc') is_expected.to_not contain_class('tripleo::profile::base::cinder::volume::dellps') is_expected.to_not contain_class('tripleo::profile::base::cinder::volume::netapp') + is_expected.to_not contain_class('tripleo::profile::base::cinder::volume::veritas_hyperscale') is_expected.to_not contain_class('tripleo::profile::base::cinder::volume::nfs') is_expected.to_not contain_class('tripleo::profile::base::cinder::volume::rbd') is_expected.to contain_class('tripleo::profile::base::cinder::volume') @@ -197,13 +217,14 @@ describe 'tripleo::profile::base::cinder::volume' do context 'with all tripleo backends' do before :each do params.merge!({ - :cinder_enable_nfs_backend => true, - :cinder_enable_rbd_backend => true, - :cinder_enable_iscsi_backend => true, - :cinder_enable_pure_backend => true, - :cinder_enable_dellsc_backend => true, - :cinder_enable_dellps_backend => true, - :cinder_enable_netapp_backend => true, + :cinder_enable_nfs_backend => true, + :cinder_enable_rbd_backend => true, + :cinder_enable_iscsi_backend => true, + :cinder_enable_pure_backend => true, + :cinder_enable_dellsc_backend => true, + :cinder_enable_dellps_backend => true, + :cinder_enable_netapp_backend => true, + :cinder_enable_vrts_hs_backend => true, }) end it 'should configure all backends' do @@ -212,6 +233,7 @@ describe 'tripleo::profile::base::cinder::volume' do is_expected.to contain_class('tripleo::profile::base::cinder::volume::dellsc') is_expected.to contain_class('tripleo::profile::base::cinder::volume::dellps') is_expected.to contain_class('tripleo::profile::base::cinder::volume::netapp') + is_expected.to contain_class('tripleo::profile::base::cinder::volume::veritas_hyperscale') is_expected.to contain_class('tripleo::profile::base::cinder::volume::nfs') is_expected.to contain_class('tripleo::profile::base::cinder::volume::rbd') is_expected.to contain_class('tripleo::profile::base::cinder::volume') @@ -219,7 +241,7 @@ describe 'tripleo::profile::base::cinder::volume' do is_expected.to contain_class('cinder::volume') is_expected.to contain_class('cinder::backends').with( :enabled_backends => ['tripleo_iscsi', 'tripleo_ceph', 'tripleo_pure', 'tripleo_dellps', - 'tripleo_dellsc', 'tripleo_netapp','tripleo_nfs'] + 'tripleo_dellsc', 'tripleo_netapp','tripleo_nfs','Veritas_HyperScale'] ) end end |