summaryrefslogtreecommitdiffstats
path: root/spec
diff options
context:
space:
mode:
Diffstat (limited to 'spec')
-rw-r--r--spec/classes/tripleo_cluster_cassandra_spec.rb54
-rw-r--r--spec/classes/tripleo_cluster_zookeeper_spec.rb86
-rw-r--r--spec/classes/tripleo_firewall_spec.rb4
-rw-r--r--spec/classes/tripleo_midonet_api_spec.rb76
-rw-r--r--spec/classes/tripleo_profile_base_aodh_api_spec.rb18
-rw-r--r--spec/classes/tripleo_profile_base_aodh_evaluator_spec.rb2
-rw-r--r--spec/classes/tripleo_profile_base_aodh_listener_spec.rb2
-rw-r--r--spec/classes/tripleo_profile_base_aodh_notifier_spec.rb2
-rw-r--r--spec/classes/tripleo_profile_base_aodh_spec.rb4
-rw-r--r--spec/classes/tripleo_profile_base_ceilometer_api_spec.rb2
-rw-r--r--spec/classes/tripleo_profile_base_ceilometer_collector_spec.rb2
-rw-r--r--spec/classes/tripleo_profile_base_ceilometer_expirer_spec.rb2
-rw-r--r--spec/classes/tripleo_profile_base_ceilometer_spec.rb2
-rw-r--r--spec/classes/tripleo_profile_base_cinder_api_spec.rb86
-rw-r--r--spec/classes/tripleo_profile_base_cinder_backup_ceph_spec.rb59
-rw-r--r--spec/classes/tripleo_profile_base_cinder_backup_spec.rb56
-rw-r--r--spec/classes/tripleo_profile_base_cinder_backup_swift_spec.rb59
-rw-r--r--spec/classes/tripleo_profile_base_cinder_scheduler_spec.rb56
-rw-r--r--spec/classes/tripleo_profile_base_cinder_spec.rb122
-rw-r--r--spec/classes/tripleo_profile_base_cinder_volume_dellsc_spec.rb58
-rw-r--r--spec/classes/tripleo_profile_base_cinder_volume_eqlx_spec.rb58
-rw-r--r--spec/classes/tripleo_profile_base_cinder_volume_iscsi_spec.rb85
-rw-r--r--spec/classes/tripleo_profile_base_cinder_volume_netapp_spec.rb58
-rw-r--r--spec/classes/tripleo_profile_base_cinder_volume_nfs_spec.rb88
-rw-r--r--spec/classes/tripleo_profile_base_cinder_volume_rbd_spec.rb83
-rw-r--r--spec/classes/tripleo_profile_base_cinder_volume_spec.rb216
-rw-r--r--spec/fixtures/hiera.yaml1
-rw-r--r--spec/fixtures/hieradata/default.yaml3
-rw-r--r--spec/fixtures/hieradata/step1.yaml2
-rw-r--r--spec/fixtures/hieradata/step2.yaml2
-rw-r--r--spec/fixtures/hieradata/step3.yaml2
-rw-r--r--spec/fixtures/hieradata/step4.yaml9
-rw-r--r--spec/fixtures/hieradata/step5.yaml2
-rw-r--r--spec/fixtures/hieradata/step6.yaml2
34 files changed, 1120 insertions, 243 deletions
diff --git a/spec/classes/tripleo_cluster_cassandra_spec.rb b/spec/classes/tripleo_cluster_cassandra_spec.rb
deleted file mode 100644
index 3f7d471..0000000
--- a/spec/classes/tripleo_cluster_cassandra_spec.rb
+++ /dev/null
@@ -1,54 +0,0 @@
-#
-# Copyright (C) 2015 Midokura SARL
-#
-# 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.
-#
-# Unit tests for the cassandra service
-
-require 'spec_helper'
-
-describe 'tripleo::cluster::cassandra' do
-
- shared_examples_for 'tripleo::cluster::cassandra' do
-
- let :params do
- {
- :cassandra_servers => ['192.168.2.2', '192.168.2.3'],
- :cassandra_ip => '192.168.2.2'
- }
- end
-
- it 'should configure cassandra' do
- is_expected.to contain_class('cassandra').with(
- :seeds => ['192.168.2.2', '192.168.2.3'],
- :listen_address => '192.168.2.2',
- :storage_port => 7000,
- :ssl_storage_port => 7001,
- :native_transport_port => 9042,
- :rpc_port => 9160
- )
-
- end
- end
-
- on_supported_os.each do |os, facts|
- context "on #{os}" do
- let(:facts) do
- facts.merge({})
- end
-
- it_behaves_like 'tripleo::cluster::cassandra'
- end
- end
-
-end
diff --git a/spec/classes/tripleo_cluster_zookeeper_spec.rb b/spec/classes/tripleo_cluster_zookeeper_spec.rb
deleted file mode 100644
index fc003b6..0000000
--- a/spec/classes/tripleo_cluster_zookeeper_spec.rb
+++ /dev/null
@@ -1,86 +0,0 @@
-#
-# Copyright (C) 2015 Midokura SARL
-#
-# 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.
-#
-# Unit tests for the zookeeper service
-
-require 'spec_helper'
-
-describe 'tripleo::cluster::zookeeper' do
-
- shared_examples_for 'tripleo::cluster::zookeeper' do
- let :params do
- {
- :zookeeper_server_ips => ['23.43.2.34', '23.43.2.35', '24.43.2.36'],
- :zookeeper_hostnames => ['host1.midonet', 'host2.midonet', 'host3.midonet']
- }
- end
-
- context 'on host1' do
- before :each do
- facts.merge!({ :hostname => 'host1.midonet'})
- params.merge!({ :zookeeper_client_ip => '23.43.2.34' })
- end
-
- it 'should call zookeeper using id==1' do
- is_expected.to contain_class('zookeeper').with(
- :servers => ['23.43.2.34', '23.43.2.35', '24.43.2.36'],
- :client_ip => '23.43.2.34',
- :id => 1
- )
- end
- end
-
- context 'on host2' do
- before :each do
- facts.merge!({ :hostname => 'host2.midonet'})
- params.merge!({ :zookeeper_client_ip => '23.43.2.35' })
- end
-
- it 'should call zookeeper using id==1' do
- is_expected.to contain_class('zookeeper').with(
- :servers => ['23.43.2.34', '23.43.2.35', '24.43.2.36'],
- :client_ip => '23.43.2.35',
- :id => 2
- )
- end
- end
-
- context 'on host3' do
- before :each do
- facts.merge!({ :hostname => 'host3.midonet'})
- params.merge!({ :zookeeper_client_ip => '23.43.2.36' })
- end
-
- it 'should call zookeeper using id==1' do
- is_expected.to contain_class('zookeeper').with(
- :servers => ['23.43.2.34', '23.43.2.35', '24.43.2.36'],
- :client_ip => '23.43.2.36',
- :id => 3
- )
- end
-
- end
- end
-
- on_supported_os.each do |os, facts|
- context "on #{os}" do
- let(:facts) do
- facts.merge({})
- end
-
- it_behaves_like 'tripleo::cluster::zookeeper'
- end
- end
-end
diff --git a/spec/classes/tripleo_firewall_spec.rb b/spec/classes/tripleo_firewall_spec.rb
index 1270aa7..3116a51 100644
--- a/spec/classes/tripleo_firewall_spec.rb
+++ b/spec/classes/tripleo_firewall_spec.rb
@@ -76,7 +76,8 @@ describe 'tripleo::firewall' do
'301 add custom application 2' => {'port' => '8081', 'proto' => 'tcp', 'action' => 'accept'},
'302 fwd custom cidr 1' => {'chain' => 'FORWARD', 'destination' => '192.0.2.0/24'},
'303 add custom application 3' => {'dport' => '8081', 'proto' => 'tcp', 'action' => 'accept'},
- '304 add custom application 4' => {'sport' => '1000', 'proto' => 'tcp', 'action' => 'accept'}
+ '304 add custom application 4' => {'sport' => '1000', 'proto' => 'tcp', 'action' => 'accept'},
+ '305 add gre rule' => {'proto' => 'gre'}
}
)
end
@@ -109,6 +110,7 @@ describe 'tripleo::firewall' do
:action => 'accept',
:state => ['NEW'],
)
+ is_expected.to contain_firewall('305 add gre rule').without(:state)
end
end
diff --git a/spec/classes/tripleo_midonet_api_spec.rb b/spec/classes/tripleo_midonet_api_spec.rb
deleted file mode 100644
index 25b375b..0000000
--- a/spec/classes/tripleo_midonet_api_spec.rb
+++ /dev/null
@@ -1,76 +0,0 @@
-#
-# Copyright (C) 2015 Midokura SARL
-#
-# 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.
-#
-# Unit tests for the midonet api
-
-require 'spec_helper'
-
-describe 'tripleo::network::midonet::api' do
-
- shared_examples_for 'tripleo::midonet::api' do
-
- let :params do
- {
- :zookeeper_servers => ['192.168.2.1', '192.168.2.2'],
- :vip => '192.23.0.2',
- :keystone_ip => '192.23.0.2',
- :keystone_admin_token => 'admin_token',
- :admin_password => 'admin_password',
- :bind_address => '192.23.0.65'
- }
- end
-
- it 'should call api configuration' do
- is_expected.to contain_class('midonet::midonet_api::run').with(
- :zk_servers => [{'ip' => '192.168.2.1', 'port' => 2181},
- {'ip' => '192.168.2.2', 'port' => 2181}],
- :keystone_auth => true,
- :tomcat_package => 'tomcat',
- :vtep => false,
- :api_ip => '192.23.0.2',
- :api_port => '8081',
- :keystone_host => '192.23.0.2',
- :keystone_port => 35357,
- :keystone_admin_token => 'admin_token',
- :keystone_tenant_name => 'admin',
- :catalina_base => '/usr/share/tomcat',
- :bind_address => '192.23.0.65'
- )
- end
-
- it 'should install the cli' do
- is_expected.to contain_class('midonet::midonet_cli').with(
- :api_endpoint => 'http://192.23.0.2:8081/midonet-api',
- :username => 'admin',
- :password => 'admin_password',
- :tenant_name => 'admin'
- )
- end
-
- end
-
- on_supported_os.each do |os, facts|
- context "on #{os}" do
- let(:facts) do
- facts.merge({
- :augeasversion => '1.0.0'
- })
- end
-
- it_behaves_like 'tripleo::midonet::api'
- end
- end
-
-end
diff --git a/spec/classes/tripleo_profile_base_aodh_api_spec.rb b/spec/classes/tripleo_profile_base_aodh_api_spec.rb
index d1f0b6b..22f26cf 100644
--- a/spec/classes/tripleo_profile_base_aodh_api_spec.rb
+++ b/spec/classes/tripleo_profile_base_aodh_api_spec.rb
@@ -19,7 +19,7 @@ require 'spec_helper'
describe 'tripleo::profile::base::aodh::api' do
shared_examples_for 'tripleo::profile::base::aodh::api' do
let(:pre_condition) do
- "class { '::tripleo::profile::base::aodh': step => #{params[:step]}, rabbit_hosts => ['127.0.0.1'] }"
+ "class { '::tripleo::profile::base::aodh': step => #{params[:step]}, rabbit_hosts => ['localhost.localdomain'] }"
end
context 'with step less than 4' do
@@ -30,7 +30,6 @@ describe 'tripleo::profile::base::aodh::api' do
is_expected.to contain_class('tripleo::profile::base::aodh')
is_expected.to_not contain_class('aodh::api')
is_expected.to_not contain_class('aodh::wsgi::apache')
- is_expected.to_not contain_aodh_config('api/enable_combination_alarms')
end
end
@@ -42,23 +41,8 @@ describe 'tripleo::profile::base::aodh::api' do
it 'should trigger complete configuration' do
is_expected.to contain_class('aodh::api')
is_expected.to contain_class('aodh::wsgi::apache')
- is_expected.to contain_aodh_config('api/enable_combination_alarms').with_value('false')
end
end
-
- context 'with step 4 and enable combo alarms' do
- let(:params) { {
- :step => 4,
- :enable_combination_alarms => true
- } }
-
- it 'should trigger complete configuration' do
- is_expected.to contain_class('aodh::api')
- is_expected.to contain_class('aodh::wsgi::apache')
- is_expected.to contain_aodh_config('api/enable_combination_alarms').with_value('true')
- end
- end
-
end
diff --git a/spec/classes/tripleo_profile_base_aodh_evaluator_spec.rb b/spec/classes/tripleo_profile_base_aodh_evaluator_spec.rb
index 5ac7971..495794d 100644
--- a/spec/classes/tripleo_profile_base_aodh_evaluator_spec.rb
+++ b/spec/classes/tripleo_profile_base_aodh_evaluator_spec.rb
@@ -19,7 +19,7 @@ require 'spec_helper'
describe 'tripleo::profile::base::aodh::evaluator' do
shared_examples_for 'tripleo::profile::base::aodh::evaluator' do
let(:pre_condition) do
- "class { '::tripleo::profile::base::aodh': step => #{params[:step]}, rabbit_hosts => ['127.0.0.1'] }"
+ "class { '::tripleo::profile::base::aodh': step => #{params[:step]}, rabbit_hosts => ['localhost.localdomain'] }"
end
context 'with step less than 4' do
diff --git a/spec/classes/tripleo_profile_base_aodh_listener_spec.rb b/spec/classes/tripleo_profile_base_aodh_listener_spec.rb
index da1305f..022ee5c 100644
--- a/spec/classes/tripleo_profile_base_aodh_listener_spec.rb
+++ b/spec/classes/tripleo_profile_base_aodh_listener_spec.rb
@@ -19,7 +19,7 @@ require 'spec_helper'
describe 'tripleo::profile::base::aodh::listener' do
shared_examples_for 'tripleo::profile::base::aodh::listener' do
let(:pre_condition) do
- "class { '::tripleo::profile::base::aodh': step => #{params[:step]}, rabbit_hosts => ['127.0.0.1'] }"
+ "class { '::tripleo::profile::base::aodh': step => #{params[:step]}, rabbit_hosts => ['localhost.localdomain'] }"
end
context 'with step less than 4' do
diff --git a/spec/classes/tripleo_profile_base_aodh_notifier_spec.rb b/spec/classes/tripleo_profile_base_aodh_notifier_spec.rb
index 1b74a68..f2116ca 100644
--- a/spec/classes/tripleo_profile_base_aodh_notifier_spec.rb
+++ b/spec/classes/tripleo_profile_base_aodh_notifier_spec.rb
@@ -19,7 +19,7 @@ require 'spec_helper'
describe 'tripleo::profile::base::aodh::notifier' do
shared_examples_for 'tripleo::profile::base::aodh::notifier' do
let(:pre_condition) do
- "class { '::tripleo::profile::base::aodh': step => #{params[:step]}, rabbit_hosts => ['127.0.0.1'] }"
+ "class { '::tripleo::profile::base::aodh': step => #{params[:step]}, rabbit_hosts => ['localhost.localdomain'] }"
end
context 'with step less than 4' do
diff --git a/spec/classes/tripleo_profile_base_aodh_spec.rb b/spec/classes/tripleo_profile_base_aodh_spec.rb
index dd6554e..3befa23 100644
--- a/spec/classes/tripleo_profile_base_aodh_spec.rb
+++ b/spec/classes/tripleo_profile_base_aodh_spec.rb
@@ -34,7 +34,7 @@ describe 'tripleo::profile::base::aodh' do
let(:params) { {
:step => 3,
:bootstrap_node => 'node.example.com',
- :rabbit_hosts => ['127.0.0.1', '127.0.0.2']
+ :rabbit_hosts => ['localhost1.localdomain', 'localhost2.localdomain']
} }
it 'should trigger complete configuration' do
@@ -67,7 +67,7 @@ describe 'tripleo::profile::base::aodh' do
let(:params) { {
:step => 4,
:bootstrap_node => 'somethingelse.example.com',
- :rabbit_hosts => ['127.0.0.1', '127.0.0.2']
+ :rabbit_hosts => ['localhost1.localdomain', 'localhost2.localdomain']
} }
it 'should trigger aodh configuration without mysql grant' do
diff --git a/spec/classes/tripleo_profile_base_ceilometer_api_spec.rb b/spec/classes/tripleo_profile_base_ceilometer_api_spec.rb
index 256b756..935e9e8 100644
--- a/spec/classes/tripleo_profile_base_ceilometer_api_spec.rb
+++ b/spec/classes/tripleo_profile_base_ceilometer_api_spec.rb
@@ -19,7 +19,7 @@ require 'spec_helper'
describe 'tripleo::profile::base::ceilometer::api' do
shared_examples_for 'tripleo::profile::base::ceilometer::api' do
let(:pre_condition) do
- "class { '::tripleo::profile::base::ceilometer': step => #{params[:step]}, rabbit_hosts => ['127.0.0.1'] }"
+ "class { '::tripleo::profile::base::ceilometer': step => #{params[:step]}, rabbit_hosts => ['localhost.localdomain'] }"
end
context 'with step less than 4' do
diff --git a/spec/classes/tripleo_profile_base_ceilometer_collector_spec.rb b/spec/classes/tripleo_profile_base_ceilometer_collector_spec.rb
index 718c700..2e4b50a 100644
--- a/spec/classes/tripleo_profile_base_ceilometer_collector_spec.rb
+++ b/spec/classes/tripleo_profile_base_ceilometer_collector_spec.rb
@@ -19,7 +19,7 @@ require 'spec_helper'
describe 'tripleo::profile::base::ceilometer::collector' do
shared_examples_for 'tripleo::profile::base::ceilometer::collector' do
let(:pre_condition) do
- "class { '::tripleo::profile::base::ceilometer': step => #{params[:step]}, rabbit_hosts => ['127.0.0.1'] }"
+ "class { '::tripleo::profile::base::ceilometer': step => #{params[:step]}, rabbit_hosts => ['localhost.localdomain'] }"
end
context 'with step 3 on bootstrap node with mongodb' do
diff --git a/spec/classes/tripleo_profile_base_ceilometer_expirer_spec.rb b/spec/classes/tripleo_profile_base_ceilometer_expirer_spec.rb
index bbef431..c13f3c8 100644
--- a/spec/classes/tripleo_profile_base_ceilometer_expirer_spec.rb
+++ b/spec/classes/tripleo_profile_base_ceilometer_expirer_spec.rb
@@ -19,7 +19,7 @@ require 'spec_helper'
describe 'tripleo::profile::base::ceilometer::expirer' do
shared_examples_for 'tripleo::profile::base::ceilometer::expirer' do
let(:pre_condition) do
- "class { '::tripleo::profile::base::ceilometer': step => #{params[:step]}, rabbit_hosts => ['127.0.0.1'] }"
+ "class { '::tripleo::profile::base::ceilometer': step => #{params[:step]}, rabbit_hosts => ['localhost.localdomain'] }"
end
context 'with step less than 4' do
diff --git a/spec/classes/tripleo_profile_base_ceilometer_spec.rb b/spec/classes/tripleo_profile_base_ceilometer_spec.rb
index 5510f4b..075aff8 100644
--- a/spec/classes/tripleo_profile_base_ceilometer_spec.rb
+++ b/spec/classes/tripleo_profile_base_ceilometer_spec.rb
@@ -30,7 +30,7 @@ describe 'tripleo::profile::base::ceilometer' do
context 'with step 3' do
let(:params) { {
:step => 3,
- :rabbit_hosts => ['127.0.0.1', '127.0.0.2']
+ :rabbit_hosts => ['localhost1.localdomain', 'localhost2.localdomain']
} }
it 'should trigger complete configuration' do
diff --git a/spec/classes/tripleo_profile_base_cinder_api_spec.rb b/spec/classes/tripleo_profile_base_cinder_api_spec.rb
new file mode 100644
index 0000000..a0c607d
--- /dev/null
+++ b/spec/classes/tripleo_profile_base_cinder_api_spec.rb
@@ -0,0 +1,86 @@
+#
+# 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::api' do
+ shared_examples_for 'tripleo::profile::base::cinder::api' do
+ let(:pre_condition) do
+ "class { '::tripleo::profile::base::cinder': step => #{params[:step]}, rabbit_hosts => ['127.0.0.1'] }"
+ end
+
+ context 'with step less than 3' do
+ let(:params) { { :step => 1 } }
+
+ it 'should do nothing' do
+ is_expected.to contain_class('tripleo::profile::base::cinder::api')
+ is_expected.to contain_class('tripleo::profile::base::cinder')
+ is_expected.to_not contain_class('cinder::api')
+ is_expected.to_not contain_class('cinder::ceilometer')
+ is_expected.to_not contain_class('cinder::glance')
+ end
+ end
+
+ context 'with step 3 on bootstrap node' do
+ let(:params) { {
+ :step => 3,
+ :bootstrap_node => 'node.example.com',
+ } }
+
+ it 'should trigger complete configuration' do
+ is_expected.to contain_class('cinder::api')
+ is_expected.to contain_class('cinder::ceilometer')
+ is_expected.to contain_class('cinder::glance')
+ end
+ end
+
+ context 'with step 3 not on bootstrap node' do
+ let(:params) { {
+ :step => 3,
+ :bootstrap_node => 'other.example.com',
+ } }
+
+ it 'should not trigger any configuration' do
+ is_expected.to_not contain_class('cinder::api')
+ is_expected.to_not contain_class('cinder::ceilometer')
+ is_expected.to_not contain_class('cinder::glance')
+ end
+ end
+
+ context 'with step 4' do
+ let(:params) { {
+ :step => 4,
+ } }
+
+ it 'should trigger complete configuration' do
+ is_expected.to contain_class('cinder::api')
+ is_expected.to contain_class('cinder::ceilometer')
+ is_expected.to contain_class('cinder::glance')
+ 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::api'
+ end
+ end
+end
diff --git a/spec/classes/tripleo_profile_base_cinder_backup_ceph_spec.rb b/spec/classes/tripleo_profile_base_cinder_backup_ceph_spec.rb
new file mode 100644
index 0000000..46c3d15
--- /dev/null
+++ b/spec/classes/tripleo_profile_base_cinder_backup_ceph_spec.rb
@@ -0,0 +1,59 @@
+#
+# 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::backup::ceph' do
+ shared_examples_for 'tripleo::profile::base::cinder::backup::ceph' do
+ let(:pre_condition) do
+ <<-EOF
+ class { '::tripleo::profile::base::cinder': step => #{params[:step]}, rabbit_hosts => ['127.0.0.1'] }
+ class { '::tripleo::profile::base::cinder::backup': step => #{params[:step]} }
+ EOF
+ 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::backup::ceph')
+ is_expected.to contain_class('tripleo::profile::base::cinder::backup')
+ is_expected.to_not contain_class('cinder::backup::ceph')
+ end
+ end
+
+ context 'with step 4' do
+ let(:params) { {
+ :step => 4,
+ } }
+
+ it 'should trigger complete configuration' do
+ is_expected.to contain_class('cinder::backup::ceph')
+ 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::backup::ceph'
+ end
+ end
+end
diff --git a/spec/classes/tripleo_profile_base_cinder_backup_spec.rb b/spec/classes/tripleo_profile_base_cinder_backup_spec.rb
new file mode 100644
index 0000000..0e15c9a
--- /dev/null
+++ b/spec/classes/tripleo_profile_base_cinder_backup_spec.rb
@@ -0,0 +1,56 @@
+#
+# 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::backup' do
+ shared_examples_for 'tripleo::profile::base::cinder::backup' do
+ let(:pre_condition) do
+ "class { '::tripleo::profile::base::cinder': step => #{params[:step]}, rabbit_hosts => ['127.0.0.1'] }"
+ 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::backup')
+ is_expected.to contain_class('tripleo::profile::base::cinder')
+ is_expected.to_not contain_class('cinder::backup')
+ end
+ end
+
+ context 'with step 4' do
+ let(:params) { {
+ :step => 4,
+ } }
+
+ it 'should trigger complete configuration' do
+ is_expected.to contain_class('cinder::backup')
+ 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::backup'
+ end
+ end
+end
diff --git a/spec/classes/tripleo_profile_base_cinder_backup_swift_spec.rb b/spec/classes/tripleo_profile_base_cinder_backup_swift_spec.rb
new file mode 100644
index 0000000..2c9d71f
--- /dev/null
+++ b/spec/classes/tripleo_profile_base_cinder_backup_swift_spec.rb
@@ -0,0 +1,59 @@
+#
+# 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::backup::swift' do
+ shared_examples_for 'tripleo::profile::base::cinder::backup::swift' do
+ let(:pre_condition) do
+ <<-EOF
+ class { '::tripleo::profile::base::cinder': step => #{params[:step]}, rabbit_hosts => ['127.0.0.1'] }
+ class { '::tripleo::profile::base::cinder::backup': step => #{params[:step]} }
+ EOF
+ 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::backup::swift')
+ is_expected.to contain_class('tripleo::profile::base::cinder::backup')
+ is_expected.to_not contain_class('cinder::backup::swift')
+ end
+ end
+
+ context 'with step 4' do
+ let(:params) { {
+ :step => 4,
+ } }
+
+ it 'should trigger complete configuration' do
+ is_expected.to contain_class('cinder::backup::swift')
+ 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::backup::swift'
+ end
+ end
+end
diff --git a/spec/classes/tripleo_profile_base_cinder_scheduler_spec.rb b/spec/classes/tripleo_profile_base_cinder_scheduler_spec.rb
new file mode 100644
index 0000000..cd044ee
--- /dev/null
+++ b/spec/classes/tripleo_profile_base_cinder_scheduler_spec.rb
@@ -0,0 +1,56 @@
+#
+# 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::scheduler' do
+ shared_examples_for 'tripleo::profile::base::cinder::scheduler' do
+ let(:pre_condition) do
+ "class { '::tripleo::profile::base::cinder': step => #{params[:step]}, rabbit_hosts => ['127.0.0.1'] }"
+ 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::scheduler')
+ is_expected.to contain_class('tripleo::profile::base::cinder')
+ is_expected.to_not contain_class('cinder::scheduler')
+ end
+ end
+
+ context 'with step 4' do
+ let(:params) { {
+ :step => 4,
+ } }
+
+ it 'should trigger complete configuration' do
+ is_expected.to contain_class('cinder::scheduler')
+ 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::scheduler'
+ end
+ end
+end
diff --git a/spec/classes/tripleo_profile_base_cinder_spec.rb b/spec/classes/tripleo_profile_base_cinder_spec.rb
new file mode 100644
index 0000000..6a36152
--- /dev/null
+++ b/spec/classes/tripleo_profile_base_cinder_spec.rb
@@ -0,0 +1,122 @@
+#
+# 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' do
+ shared_examples_for 'tripleo::profile::base::cinder' do
+ context 'with step less than 3' do
+ let(:params) { { :step => 1 } }
+ it 'should do nothing' do
+ is_expected.to contain_class('tripleo::profile::base::cinder')
+ is_expected.to_not contain_class('cinder')
+ is_expected.to_not contain_class('cinder::config')
+ is_expected.to_not contain_class('cinder:::cron::db_purge')
+ end
+ end
+
+ context 'with step 3 on bootstrap node' do
+ let(:params) { {
+ :step => 3,
+ :bootstrap_node => 'node.example.com',
+ :rabbit_hosts => ['127.0.0.1', '127.0.0.2'],
+ :rabbit_port => '1234'
+ } }
+
+ it 'should trigger complete configuration' do
+ is_expected.to contain_class('cinder').with(
+ :rabbit_hosts => params[:rabbit_hosts].map{ |h| "#{h}:#{params[:rabbit_port]}" }
+ )
+ is_expected.to contain_class('cinder::config')
+ is_expected.to_not contain_class('cinder::cron::db_purge')
+ end
+ end
+
+ context 'with step 3 not on bootstrap node' do
+ let(:params) { {
+ :step => 3,
+ :bootstrap_node => 'soemthingelse.example.com'
+ } }
+
+ it 'should not trigger any configuration' do
+ is_expected.to_not contain_class('cinder')
+ is_expected.to_not contain_class('cinder::config')
+ is_expected.to_not contain_class('cinder:::cron::db_purge')
+ end
+ end
+
+ context 'with step 4 on other node' do
+ let(:params) { {
+ :step => 4,
+ :bootstrap_node => 'somethingelse.example.com',
+ :rabbit_hosts => ['127.0.0.1', '127.0.0.2'],
+ :rabbit_port => '5672'
+ } }
+
+ it 'should trigger cinder configuration without mysql grant' do
+ is_expected.to contain_class('cinder').with(
+ :rabbit_hosts => params[:rabbit_hosts].map{ |h| "#{h}:#{params[:rabbit_port]}" }
+ )
+ is_expected.to contain_class('cinder::config')
+ is_expected.to_not contain_class('cinder:::cron::db_purge')
+ end
+ end
+
+ context 'with step 5' do
+ let(:params) { {
+ :step => 5,
+ :bootstrap_node => 'node.example.com',
+ :rabbit_hosts => ['127.0.0.1', '127.0.0.2']
+ } }
+
+ it 'should trigger complete configuration' do
+ is_expected.to contain_class('cinder').with(
+ :rabbit_hosts => params[:rabbit_hosts].map{ |h| "#{h}:5672" }
+ )
+ is_expected.to contain_class('cinder::config')
+ is_expected.to contain_class('cinder::cron::db_purge')
+ end
+ end
+
+ context 'with step 5 without db_purge' do
+ let(:params) { {
+ :step => 5,
+ :bootstrap_node => 'node.example.com',
+ :rabbit_hosts => ['127.0.0.1', '127.0.0.2'],
+ :cinder_enable_db_purge => false
+ } }
+
+ it 'should trigger complete configuration' do
+ is_expected.to contain_class('cinder').with(
+ :rabbit_hosts => params[:rabbit_hosts].map{ |h| "#{h}:5672" }
+ )
+ is_expected.to contain_class('cinder::config')
+ is_expected.to_not contain_class('cinder::cron::db_purge')
+ 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'
+ end
+ end
+end
diff --git a/spec/classes/tripleo_profile_base_cinder_volume_dellsc_spec.rb b/spec/classes/tripleo_profile_base_cinder_volume_dellsc_spec.rb
new file mode 100644
index 0000000..328e886
--- /dev/null
+++ b/spec/classes/tripleo_profile_base_cinder_volume_dellsc_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::dellsc' do
+ shared_examples_for 'tripleo::profile::base::cinder::volume::dellsc' 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::dellsc')
+ 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__dellsc_iscsi('tripleo_dellsc')
+ 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__dellsc_iscsi('tripleo_dellsc')
+ 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::dellsc'
+ end
+ end
+end
diff --git a/spec/classes/tripleo_profile_base_cinder_volume_eqlx_spec.rb b/spec/classes/tripleo_profile_base_cinder_volume_eqlx_spec.rb
new file mode 100644
index 0000000..1a188aa
--- /dev/null
+++ b/spec/classes/tripleo_profile_base_cinder_volume_eqlx_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::eqlx' do
+ shared_examples_for 'tripleo::profile::base::cinder::volume::eqlx' 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::eqlx')
+ 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__eqlx('tripleo_eqlx')
+ 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__eqlx('tripleo_eqlx')
+ 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::eqlx'
+ end
+ end
+end
diff --git a/spec/classes/tripleo_profile_base_cinder_volume_iscsi_spec.rb b/spec/classes/tripleo_profile_base_cinder_volume_iscsi_spec.rb
new file mode 100644
index 0000000..65bf3dc
--- /dev/null
+++ b/spec/classes/tripleo_profile_base_cinder_volume_iscsi_spec.rb
@@ -0,0 +1,85 @@
+#
+# 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::iscsi' do
+ shared_examples_for 'tripleo::profile::base::cinder::volume::iscsi' do
+ before :each do
+ facts.merge!({ :step => params[:step] })
+ end
+
+ context 'with step less than 4' do
+ let(:params) { {
+ :cinder_iscsi_address => '127.0.0.1',
+ :step => 3
+ } }
+
+ it 'should do nothing' do
+ is_expected.to 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_not contain_class('cinder::setup_test_volume')
+ is_expected.to_not contain_cinder__backend__iscsi('tripleo_iscsi')
+ end
+ end
+
+ context 'with step 4' do
+ let(:params) { {
+ :cinder_iscsi_address => '127.0.0.1',
+ :step => 4,
+ } }
+
+ context 'with defaults' do
+ it 'should trigger complete configuration' do
+ is_expected.to contain_class('cinder::setup_test_volume').with(
+ :size => '10280M'
+ )
+ is_expected.to contain_cinder__backend__iscsi('tripleo_iscsi').with(
+ :iscsi_ip_address => '127.0.0.1',
+ :iscsi_helper => 'tgtadm',
+ :iscsi_protocol => 'iscsi'
+ )
+ end
+ end
+
+ context 'with ipv6 address' do
+ before :each do
+ params.merge!({ :cinder_iscsi_address => 'fe80::fc54:ff:fe9e:7846' })
+ end
+ it 'should trigger complete configuration' do
+ is_expected.to contain_class('cinder::setup_test_volume').with(
+ :size => '10280M'
+ )
+ is_expected.to contain_cinder__backend__iscsi('tripleo_iscsi').with(
+ :iscsi_ip_address => '[fe80::fc54:ff:fe9e:7846]'
+ )
+ end
+ 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::iscsi'
+ end
+ end
+end
diff --git a/spec/classes/tripleo_profile_base_cinder_volume_netapp_spec.rb b/spec/classes/tripleo_profile_base_cinder_volume_netapp_spec.rb
new file mode 100644
index 0000000..732720e
--- /dev/null
+++ b/spec/classes/tripleo_profile_base_cinder_volume_netapp_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::netapp' do
+ shared_examples_for 'tripleo::profile::base::cinder::volume::netapp' 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::netapp')
+ 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__netapp('tripleo_netapp')
+ end
+ end
+
+ context 'with step 4' do
+ let(:params) { {
+ :step => 4,
+ } }
+
+ it 'should trigger complete configuration' do
+ # TODO(aschultz): check parameters via hiera
+ is_expected.to contain_cinder__backend__netapp('tripleo_netapp')
+ 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::netapp'
+ end
+ end
+end
diff --git a/spec/classes/tripleo_profile_base_cinder_volume_nfs_spec.rb b/spec/classes/tripleo_profile_base_cinder_volume_nfs_spec.rb
new file mode 100644
index 0000000..194a70d
--- /dev/null
+++ b/spec/classes/tripleo_profile_base_cinder_volume_nfs_spec.rb
@@ -0,0 +1,88 @@
+#
+# 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::nfs' do
+ shared_examples_for 'tripleo::profile::base::cinder::volume::nfs' do
+ before :each do
+ facts.merge!({ :step => params[:step] })
+ end
+
+ context 'with step less than 4' do
+ let(:params) { {
+ :cinder_nfs_servers => ['127.0.0.1'],
+ :step => 3
+ } }
+
+ it 'should do nothing' do
+ is_expected.to contain_class('tripleo::profile::base::cinder::volume::nfs')
+ 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__nfs('tripleo_nfs')
+ end
+ end
+
+ context 'with step 4' do
+ let(:params) { {
+ :cinder_nfs_servers => ['127.0.0.1'],
+ :step => 4,
+ } }
+
+ context 'with defaults' do
+ it 'should trigger complete configuration' do
+ is_expected.to contain_cinder__backend__nfs('tripleo_nfs').with(
+ :nfs_servers => ['127.0.0.1'],
+ :nfs_mount_options => '',
+ :nfs_shares_config => '/etc/cinder/shares-nfs.conf'
+ )
+ end
+ end
+
+ context 'with selinux' do
+ before :each do
+ facts.merge!({ :selinux => 'true' })
+ end
+ it 'should configure selinux' do
+ is_expected.to contain_selboolean('virt_use_nfs').with(
+ :value => 'on',
+ :persistent => true,
+ )
+ end
+ end
+
+ context 'without selinux' do
+ before :each do
+ facts.merge!({ :selinux => 'false' })
+ end
+ it 'should configure selinux' do
+ is_expected.to_not contain_selboolean('virt_use_nfs')
+ end
+ 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::nfs'
+ end
+ end
+end
diff --git a/spec/classes/tripleo_profile_base_cinder_volume_rbd_spec.rb b/spec/classes/tripleo_profile_base_cinder_volume_rbd_spec.rb
new file mode 100644
index 0000000..559b836
--- /dev/null
+++ b/spec/classes/tripleo_profile_base_cinder_volume_rbd_spec.rb
@@ -0,0 +1,83 @@
+#
+# 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::rbd' do
+ shared_examples_for 'tripleo::profile::base::cinder::volume::rbd' 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::rbd')
+ 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__rbd('tripleo_ceph')
+ end
+ end
+
+ context 'with step 4' do
+ let(:params) { {
+ :step => 4,
+ } }
+
+ context 'with defaults' do
+ it 'should trigger complete configuration' do
+ is_expected.to contain_cinder__backend__rbd('tripleo_ceph').with(
+ :backend_host => 'hostgroup',
+ :rbd_pool => 'volumes',
+ :rbd_user => 'openstack',
+ )
+ end
+ end
+
+ context 'with customizations' do
+ before :each do
+ params.merge!({
+ :backend_name => 'poodles',
+ :cinder_rbd_backend_host => 'fe80::fc54:ff:fe9e:7846',
+ :cinder_rbd_pool_name => 'poolname',
+ :cinder_rbd_secret_uuid => 'secretuuid',
+ :cinder_rbd_user_name => 'kcatsnepo'
+ })
+ end
+ it 'should trigger complete configuration' do
+ is_expected.to contain_cinder__backend__rbd('poodles').with(
+ :backend_host => 'fe80::fc54:ff:fe9e:7846',
+ :rbd_pool => 'poolname',
+ :rbd_user => 'kcatsnepo',
+ :rbd_secret_uuid => 'secretuuid'
+ )
+ end
+ 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::rbd'
+ 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
new file mode 100644
index 0000000..e0ec9de
--- /dev/null
+++ b/spec/classes/tripleo_profile_base_cinder_volume_spec.rb
@@ -0,0 +1,216 @@
+#
+# 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' do
+
+ shared_examples_for 'tripleo::profile::base::cinder::volume' do
+ # this hack allows hiera('step') to work as the spec hiera config will
+ # allow any included modules to automagically get the right step from
+ # hiera. (╯°□°)╯︵ ┻━┻
+ before :each do
+ facts.merge!({ :step => params[:step] })
+ end
+
+ let(:pre_condition) do
+ "class { '::tripleo::profile::base::cinder': step => #{params[:step]}, rabbit_hosts => ['127.0.0.1'] }"
+ 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')
+ is_expected.to contain_class('tripleo::profile::base::cinder')
+ is_expected.to_not contain_class('cinder::volume')
+ end
+ end
+
+ context 'with step 4' do
+ let(:params) { { :step => 4 } }
+
+ context 'with defaults' do
+ it 'should configure iscsi' do
+ is_expected.to 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 => ['tripleo_iscsi']
+ )
+ end
+ end
+
+ context 'with only dellsc' do
+ before :each do
+ params.merge!({
+ :cinder_enable_dellsc_backend => true,
+ :cinder_enable_iscsi_backend => false,
+ })
+ end
+ it 'should configure only dellsc' do
+ is_expected.to contain_class('tripleo::profile::base::cinder::volume::dellsc')
+ 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 => ['tripleo_dellsc']
+ )
+ end
+ end
+
+ context 'with only eqlx' do
+ before :each do
+ params.merge!({
+ :cinder_enable_eqlx_backend => true,
+ :cinder_enable_iscsi_backend => false,
+ })
+ end
+ it 'should configure only eqlx' do
+ is_expected.to contain_class('tripleo::profile::base::cinder::volume::eqlx')
+ 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 => ['tripleo_eqlx']
+ )
+ end
+ end
+
+ context 'with only netapp' do
+ before :each do
+ params.merge!({
+ :cinder_enable_netapp_backend => true,
+ :cinder_enable_iscsi_backend => false,
+ })
+ end
+ it 'should configure only netapp' do
+ is_expected.to contain_class('tripleo::profile::base::cinder::volume::netapp')
+ 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 => ['tripleo_netapp']
+ )
+ end
+ end
+
+ context 'with only nfs' do
+ before :each do
+ params.merge!({
+ :cinder_enable_nfs_backend => true,
+ :cinder_enable_iscsi_backend => false,
+ })
+ end
+ it 'should configure only nfs' do
+ is_expected.to contain_class('tripleo::profile::base::cinder::volume::nfs')
+ 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 => ['tripleo_nfs']
+ )
+ end
+ end
+
+ context 'with only rbd' do
+ before :each do
+ params.merge!({
+ :cinder_enable_rbd_backend => true,
+ :cinder_enable_iscsi_backend => false,
+ })
+ end
+ it 'should configure only ceph' do
+ is_expected.to contain_class('tripleo::profile::base::cinder::volume::rbd')
+ 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 => ['tripleo_ceph']
+ )
+ end
+ end
+
+ context 'with only user backend' do
+ before :each do
+ params.merge!({
+ :cinder_enable_iscsi_backend => false,
+ :cinder_user_enabled_backends => 'poodles'
+ })
+ end
+ it 'should configure only user backend' do
+ is_expected.to_not contain_class('tripleo::profile::base::cinder::volume::iscsi')
+ is_expected.to_not contain_class('tripleo::profile::base::cinder::volume::dellsc')
+ is_expected.to_not contain_class('tripleo::profile::base::cinder::volume::eqlx')
+ is_expected.to_not contain_class('tripleo::profile::base::cinder::volume::netapp')
+ 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')
+ 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 => ['poodles']
+ )
+ end
+ end
+
+ context 'with all tripleo backends' do
+ before :each do
+ params.merge!({
+ :cinder_enable_iscsi_backend => true,
+ :cinder_enable_dellsc_backend => true,
+ :cinder_enable_eqlx_backend => true,
+ :cinder_enable_netapp_backend => true,
+ :cinder_enable_nfs_backend => true,
+ :cinder_enable_rbd_backend => true,
+ })
+ end
+ it 'should configure all backends' do
+ is_expected.to contain_class('tripleo::profile::base::cinder::volume::iscsi')
+ is_expected.to contain_class('tripleo::profile::base::cinder::volume::dellsc')
+ is_expected.to contain_class('tripleo::profile::base::cinder::volume::eqlx')
+ is_expected.to contain_class('tripleo::profile::base::cinder::volume::netapp')
+ 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')
+ 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 => ['tripleo_iscsi', 'tripleo_ceph', 'tripleo_eqlx',
+ 'tripleo_dellsc', 'tripleo_netapp','tripleo_nfs']
+ )
+ end
+ 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'
+ end
+ end
+end
diff --git a/spec/fixtures/hiera.yaml b/spec/fixtures/hiera.yaml
index d5368e9..07bc836 100644
--- a/spec/fixtures/hiera.yaml
+++ b/spec/fixtures/hiera.yaml
@@ -4,4 +4,5 @@
:yaml:
:datadir: './spec/fixtures/hieradata'
:hierarchy:
+ - 'step%{::step}'
- 'default'
diff --git a/spec/fixtures/hieradata/default.yaml b/spec/fixtures/hieradata/default.yaml
index 87ae28c..d63fc76 100644
--- a/spec/fixtures/hieradata/default.yaml
+++ b/spec/fixtures/hieradata/default.yaml
@@ -14,3 +14,6 @@ barbican::keystone::authtoken::password: 'password'
ceilometer::keystone::authtoken::password: 'password'
# ceph related items
ceph::profile::params::mon_key: 'password'
+# cinder related items
+cinder::rabbit_password: 'password'
+cinder::keystone::authtoken::password: 'password'
diff --git a/spec/fixtures/hieradata/step1.yaml b/spec/fixtures/hieradata/step1.yaml
new file mode 100644
index 0000000..795a4a7
--- /dev/null
+++ b/spec/fixtures/hieradata/step1.yaml
@@ -0,0 +1,2 @@
+---
+step: 1
diff --git a/spec/fixtures/hieradata/step2.yaml b/spec/fixtures/hieradata/step2.yaml
new file mode 100644
index 0000000..4bd5851
--- /dev/null
+++ b/spec/fixtures/hieradata/step2.yaml
@@ -0,0 +1,2 @@
+---
+step: 2
diff --git a/spec/fixtures/hieradata/step3.yaml b/spec/fixtures/hieradata/step3.yaml
new file mode 100644
index 0000000..1526e81
--- /dev/null
+++ b/spec/fixtures/hieradata/step3.yaml
@@ -0,0 +1,2 @@
+---
+step: 3
diff --git a/spec/fixtures/hieradata/step4.yaml b/spec/fixtures/hieradata/step4.yaml
new file mode 100644
index 0000000..0b53225
--- /dev/null
+++ b/spec/fixtures/hieradata/step4.yaml
@@ -0,0 +1,9 @@
+---
+step: 4
+# items needed for tripleo::profile::base::cinder::volume
+tripleo::profile::base::cinder::volume::iscsi::cinder_iscsi_address: '127.0.0.1'
+tripleo::profile::base::cinder::volume::nfs::cinder_nfs_servers:
+ - '127.0.0.1'
+cinder::backend::eqlx::eqlx_chap_login: 'user'
+cinder::backend::eqlx::eqlx_chap_password: 'user'
+
diff --git a/spec/fixtures/hieradata/step5.yaml b/spec/fixtures/hieradata/step5.yaml
new file mode 100644
index 0000000..442420f
--- /dev/null
+++ b/spec/fixtures/hieradata/step5.yaml
@@ -0,0 +1,2 @@
+---
+step: 5
diff --git a/spec/fixtures/hieradata/step6.yaml b/spec/fixtures/hieradata/step6.yaml
new file mode 100644
index 0000000..08ba54d
--- /dev/null
+++ b/spec/fixtures/hieradata/step6.yaml
@@ -0,0 +1,2 @@
+---
+step: 6