aboutsummaryrefslogtreecommitdiffstats
path: root/spec/classes
diff options
context:
space:
mode:
Diffstat (limited to 'spec/classes')
-rw-r--r--spec/classes/tripleo_profile_base_aodh_api_spec.rb74
-rw-r--r--spec/classes/tripleo_profile_base_aodh_evaluator_spec.rb59
-rw-r--r--spec/classes/tripleo_profile_base_aodh_listener_spec.rb56
-rw-r--r--spec/classes/tripleo_profile_base_aodh_notifier_spec.rb56
-rw-r--r--spec/classes/tripleo_profile_base_aodh_spec.rb94
-rw-r--r--spec/classes/tripleo_profile_base_ceilometer_api_spec.rb57
-rw-r--r--spec/classes/tripleo_profile_base_ceilometer_collector_spec.rb138
-rw-r--r--spec/classes/tripleo_profile_base_ceilometer_expirer_spec.rb58
-rw-r--r--spec/classes/tripleo_profile_base_ceilometer_spec.rb55
-rw-r--r--spec/classes/tripleo_profile_base_ceph_client_spec.rb59
-rw-r--r--spec/classes/tripleo_profile_base_ceph_mon_spec.rb77
-rw-r--r--spec/classes/tripleo_profile_base_ceph_osd_spec.rb75
-rw-r--r--spec/classes/tripleo_profile_base_ceph_rgw_spec.rb91
-rw-r--r--spec/classes/tripleo_profile_base_ceph_spec.rb99
14 files changed, 1048 insertions, 0 deletions
diff --git a/spec/classes/tripleo_profile_base_aodh_api_spec.rb b/spec/classes/tripleo_profile_base_aodh_api_spec.rb
new file mode 100644
index 0000000..d1f0b6b
--- /dev/null
+++ b/spec/classes/tripleo_profile_base_aodh_api_spec.rb
@@ -0,0 +1,74 @@
+#
+# 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::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'] }"
+ 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::aodh::api')
+ 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
+
+ context 'with step 4' do
+ let(:params) { {
+ :step => 4,
+ } }
+
+ 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
+
+
+ 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::aodh::api'
+ 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
new file mode 100644
index 0000000..5ac7971
--- /dev/null
+++ b/spec/classes/tripleo_profile_base_aodh_evaluator_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::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'] }"
+ 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::aodh::evaluator')
+ is_expected.to contain_class('tripleo::profile::base::aodh')
+ is_expected.to_not contain_class('aodh::evaluator')
+ end
+ end
+
+ context 'with step 4' do
+ let(:params) { {
+ :step => 4,
+ } }
+
+ it 'should trigger complete configuration' do
+ # TODO(aschultz): need to parameterize the pass/vip so we can test ipv6
+ is_expected.to contain_class('aodh::evaluator').with(
+ :coordination_url => 'redis://:password@127.0.0.1:6379/'
+ )
+ 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::aodh::evaluator'
+ end
+ end
+end
diff --git a/spec/classes/tripleo_profile_base_aodh_listener_spec.rb b/spec/classes/tripleo_profile_base_aodh_listener_spec.rb
new file mode 100644
index 0000000..da1305f
--- /dev/null
+++ b/spec/classes/tripleo_profile_base_aodh_listener_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::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'] }"
+ 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::aodh::listener')
+ is_expected.to contain_class('tripleo::profile::base::aodh')
+ is_expected.to_not contain_class('aodh::listener')
+ end
+ end
+
+ context 'with step 4' do
+ let(:params) { {
+ :step => 4,
+ } }
+
+ it 'should trigger complete configuration' do
+ is_expected.to contain_class('aodh::listener')
+ 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::aodh::listener'
+ end
+ end
+end
diff --git a/spec/classes/tripleo_profile_base_aodh_notifier_spec.rb b/spec/classes/tripleo_profile_base_aodh_notifier_spec.rb
new file mode 100644
index 0000000..1b74a68
--- /dev/null
+++ b/spec/classes/tripleo_profile_base_aodh_notifier_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::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'] }"
+ 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::aodh::notifier')
+ is_expected.to contain_class('tripleo::profile::base::aodh')
+ is_expected.to_not contain_class('aodh::notifier')
+ end
+ end
+
+ context 'with step 4' do
+ let(:params) { {
+ :step => 4,
+ } }
+
+ it 'should trigger complete configuration' do
+ is_expected.to contain_class('aodh::notifier')
+ 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::aodh::notifier'
+ end
+ end
+end
diff --git a/spec/classes/tripleo_profile_base_aodh_spec.rb b/spec/classes/tripleo_profile_base_aodh_spec.rb
new file mode 100644
index 0000000..10c17eb
--- /dev/null
+++ b/spec/classes/tripleo_profile_base_aodh_spec.rb
@@ -0,0 +1,94 @@
+#
+# 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::aodh' do
+ shared_examples_for 'tripleo::profile::base::aodh' 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::aodh')
+ is_expected.to_not contain_class('aodh')
+ is_expected.to_not contain_class('aodh::auth')
+ is_expected.to_not contain_class('aodh::config')
+ is_expected.to_not contain_class('aodh::client')
+ is_expected.to_not contain_class('aodh::db::sync')
+ 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']
+ } }
+
+ it 'should trigger complete configuration' do
+ is_expected.to contain_class('aodh').with(
+ :rabbit_hosts => params[:rabbit_hosts]
+ )
+ is_expected.to contain_class('aodh::auth')
+ is_expected.to contain_class('aodh::config')
+ is_expected.to contain_class('aodh::client')
+ is_expected.to contain_class('aodh::db::sync')
+ 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('aodh')
+ is_expected.to_not contain_class('aodh::auth')
+ is_expected.to_not contain_class('aodh::config')
+ is_expected.to_not contain_class('aodh::client')
+ is_expected.to_not contain_class('aodh::db::sync')
+ 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']
+ } }
+
+ it 'should trigger aodh configuration without mysql grant' do
+ is_expected.to contain_class('aodh').with(
+ :rabbit_hosts => params[:rabbit_hosts]
+ )
+ is_expected.to contain_class('aodh::auth')
+ is_expected.to contain_class('aodh::config')
+ is_expected.to contain_class('aodh::client')
+ is_expected.to contain_class('aodh::db::sync')
+ 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::aodh'
+ end
+ end
+end
diff --git a/spec/classes/tripleo_profile_base_ceilometer_api_spec.rb b/spec/classes/tripleo_profile_base_ceilometer_api_spec.rb
new file mode 100644
index 0000000..256b756
--- /dev/null
+++ b/spec/classes/tripleo_profile_base_ceilometer_api_spec.rb
@@ -0,0 +1,57 @@
+#
+# 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::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'] }"
+ 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::ceilometer::api')
+ is_expected.to_not contain_class('ceilometer::api')
+ is_expected.to_not contain_class('ceilometer::wsgi::apache')
+ end
+ end
+
+ context 'with step 4' do
+ let(:params) { {
+ :step => 4,
+ } }
+
+ it 'should trigger complete configuration' do
+ is_expected.to contain_class('ceilometer::api')
+ is_expected.to contain_class('ceilometer::wsgi::apache')
+ 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::ceilometer::api'
+ end
+ end
+end
diff --git a/spec/classes/tripleo_profile_base_ceilometer_collector_spec.rb b/spec/classes/tripleo_profile_base_ceilometer_collector_spec.rb
new file mode 100644
index 0000000..e262491
--- /dev/null
+++ b/spec/classes/tripleo_profile_base_ceilometer_collector_spec.rb
@@ -0,0 +1,138 @@
+#
+# 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::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'] }"
+ end
+
+ context 'with step 3 on bootstrap node with mongodb' do
+ let(:params) { {
+ :step => 3,
+ :bootstrap_node => 'node.example.com',
+ :mongodb_node_ips => ['127.0.0.1',],
+ :mongodb_replset => 'replicaset'
+ } }
+
+ it 'should trigger complete configuration' do
+ is_expected.to contain_class('tripleo::profile::base::ceilometer::collector')
+ is_expected.to contain_class('ceilometer::db::sync')
+ is_expected.to contain_class('ceilometer::db').with(
+ :database_connection => 'mongodb://127.0.0.1:27017/ceilometer?replicaSet=replicaset'
+ )
+ end
+ end
+
+ context 'with step 3 on bootstrap node with mongodb with ipv6' do
+ let(:params) { {
+ :step => 3,
+ :bootstrap_node => 'node.example.com',
+ :mongodb_ipv6 => true,
+ :mongodb_node_ips => ['::1','fe80::ca5b:76ff:fe4b:be3b'],
+ :mongodb_replset => 'replicaset'
+ } }
+
+ it 'should trigger complete configuration' do
+ is_expected.to contain_class('tripleo::profile::base::ceilometer::collector')
+ is_expected.to contain_class('ceilometer::db::sync')
+ is_expected.to contain_class('ceilometer::db').with(
+ :database_connection => 'mongodb://[::1]:27017,[fe80::ca5b:76ff:fe4b:be3b]:27017/ceilometer?replicaSet=replicaset'
+ )
+ end
+ end
+
+ context 'with step 3 on bootstrap node without mongodb' do
+ let(:params) { {
+ :step => 3,
+ :bootstrap_node => 'node.example.com',
+ :ceilometer_backend => 'somethingelse',
+ :mongodb_node_ips => ['127.0.0.1',],
+ :mongodb_replset => 'replicaset'
+ } }
+
+ it 'should trigger complete configuration' do
+ is_expected.to contain_class('tripleo::profile::base::ceilometer::collector')
+ is_expected.to contain_class('ceilometer::db::sync')
+ is_expected.to contain_class('ceilometer::db').without(
+ :database_connection => 'mongodb://127.0.0.1:27017/ceilometer?replicaSet=replicaset'
+ )
+ 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 contain_class('tripleo::profile::base::ceilometer::collector')
+ is_expected.to_not contain_class('ceilometer::db')
+ end
+ end
+
+ context 'with step 4 on bootstrap node' do
+ let(:params) { {
+ :step => 4,
+ :bootstrap_node => 'node.example.com',
+ :mongodb_node_ips => ['127.0.0.1',],
+ :mongodb_replset => 'replicaset'
+ } }
+
+ it 'should trigger complete configuration' do
+ is_expected.to contain_class('ceilometer::db::sync')
+ is_expected.to contain_class('ceilometer::db').with(
+ :database_connection => 'mongodb://127.0.0.1:27017/ceilometer?replicaSet=replicaset'
+ )
+ is_expected.to contain_class('ceilometer::collector')
+ is_expected.to contain_class('ceilometer::dispatcher::gnocchi')
+ end
+ end
+
+ context 'with step 4 not on bootstrap node' do
+ let(:params) { {
+ :step => 4,
+ :bootstrap_node => 'somethingelse.example.com',
+ :mongodb_node_ips => ['127.0.0.1',],
+ :mongodb_replset => 'replicaset'
+ } }
+
+ it 'should trigger complete configuration' do
+ #TODO(aschultz): LP#1629373
+ #is_expected.to_not contain_class('ceilometer::db::sync')
+ is_expected.to contain_class('ceilometer::db').with(
+ :database_connection => 'mongodb://127.0.0.1:27017/ceilometer?replicaSet=replicaset'
+ )
+ is_expected.to contain_class('ceilometer::collector')
+ is_expected.to contain_class('ceilometer::dispatcher::gnocchi')
+ 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::ceilometer::collector'
+ end
+ end
+end
diff --git a/spec/classes/tripleo_profile_base_ceilometer_expirer_spec.rb b/spec/classes/tripleo_profile_base_ceilometer_expirer_spec.rb
new file mode 100644
index 0000000..bbef431
--- /dev/null
+++ b/spec/classes/tripleo_profile_base_ceilometer_expirer_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::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'] }"
+ 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::ceilometer::expirer')
+ is_expected.to_not contain_class('ceilometer::expirer')
+ end
+ end
+
+ context 'with step 4' do
+ let(:params) { {
+ :step => 4,
+ } }
+
+ it 'should trigger complete configuration' do
+ is_expected.to contain_class('ceilometer::expirer')
+ is_expected.to contain_cron('ceilometer-expirer').with(
+ :command => 'sleep $(($(od -A n -t d -N 3 /dev/urandom) % 86400)) && ceilometer-expirer'
+ )
+ 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::ceilometer::expirer'
+ end
+ end
+end
diff --git a/spec/classes/tripleo_profile_base_ceilometer_spec.rb b/spec/classes/tripleo_profile_base_ceilometer_spec.rb
new file mode 100644
index 0000000..73fb41b
--- /dev/null
+++ b/spec/classes/tripleo_profile_base_ceilometer_spec.rb
@@ -0,0 +1,55 @@
+#
+# 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::ceilometer' do
+ shared_examples_for 'tripleo::profile::base::ceilometer' 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::ceilometer')
+ is_expected.to_not contain_class('ceilometer')
+ is_expected.to_not contain_class('ceilometer::config')
+ end
+ end
+
+ context 'with step 3' do
+ let(:params) { {
+ :step => 3,
+ :rabbit_hosts => ['127.0.0.1', '127.0.0.2']
+ } }
+
+ it 'should trigger complete configuration' do
+ is_expected.to contain_class('ceilometer').with(
+ :rabbit_hosts => params[:rabbit_hosts]
+ )
+ is_expected.to contain_class('ceilometer::config')
+ 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::ceilometer'
+ end
+ end
+end
diff --git a/spec/classes/tripleo_profile_base_ceph_client_spec.rb b/spec/classes/tripleo_profile_base_ceph_client_spec.rb
new file mode 100644
index 0000000..11367d2
--- /dev/null
+++ b/spec/classes/tripleo_profile_base_ceph_client_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::ceph::client' do
+ shared_examples_for 'tripleo::profile::base::ceph::client' do
+ let (:pre_condition) do
+ <<-eof
+ class { '::tripleo::profile::base::ceph':
+ step => #{params[:step]}
+ }
+ eof
+ end
+
+ context 'with step less than 2' do
+ let(:params) { { :step => 1 } }
+ it 'should do nothing' do
+ is_expected.to contain_class('tripleo::profile::base::ceph::client')
+ is_expected.to contain_class('tripleo::profile::base::ceph')
+ is_expected.to_not contain_class('ceph::profile::client')
+ end
+ end
+
+ context 'with step 2' do
+ let(:params) { {
+ :step => 2,
+ } }
+
+ it 'should include client configuration' do
+ is_expected.to contain_class('tripleo::profile::base::ceph')
+ is_expected.to contain_class('ceph::profile::client')
+ 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::ceph::client'
+ end
+ end
+end
diff --git a/spec/classes/tripleo_profile_base_ceph_mon_spec.rb b/spec/classes/tripleo_profile_base_ceph_mon_spec.rb
new file mode 100644
index 0000000..d5dde4f
--- /dev/null
+++ b/spec/classes/tripleo_profile_base_ceph_mon_spec.rb
@@ -0,0 +1,77 @@
+#
+# 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::ceph::mon' do
+ shared_examples_for 'tripleo::profile::base::ceph::mon' do
+ let (:pre_condition) do
+ <<-eof
+ class { '::tripleo::profile::base::ceph':
+ step => #{params[:step]}
+ }
+ eof
+ end
+
+ context 'with step less than 2' do
+ let(:params) { { :step => 1 } }
+ it 'should do nothing' do
+ is_expected.to contain_class('tripleo::profile::base::ceph::mon')
+ is_expected.to contain_class('tripleo::profile::base::ceph')
+ is_expected.to_not contain_class('ceph::profile::mon')
+ end
+ end
+
+ context 'with step 2' do
+ let(:params) { {
+ :step => 2,
+ } }
+
+ it 'should include mon configuration' do
+ is_expected.to contain_class('tripleo::profile::base::ceph')
+ is_expected.to contain_class('ceph::profile::mon')
+ end
+ end
+
+ context 'with step 4 create pools' do
+ let(:params) { {
+ :step => 4,
+ :ceph_pools => { 'mypool' => { 'size' => 5, 'pg_num' => 128, 'pgp_num' => 128 } }
+ } }
+
+ it 'should include mon configuration' do
+ is_expected.to contain_class('tripleo::profile::base::ceph')
+ is_expected.to contain_class('ceph::profile::mon')
+ is_expected.to contain_ceph__pool('mypool').with({
+ :size => 5,
+ :pg_num => 128,
+ :pgp_num => 128
+ })
+ 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::ceph::mon'
+ end
+ end
+end
diff --git a/spec/classes/tripleo_profile_base_ceph_osd_spec.rb b/spec/classes/tripleo_profile_base_ceph_osd_spec.rb
new file mode 100644
index 0000000..3008e12
--- /dev/null
+++ b/spec/classes/tripleo_profile_base_ceph_osd_spec.rb
@@ -0,0 +1,75 @@
+#
+# 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::ceph::osd' do
+ shared_examples_for 'tripleo::profile::base::ceph::osd' do
+ let (:pre_condition) do
+ <<-eof
+ class { '::tripleo::profile::base::ceph':
+ step => #{params[:step]}
+ }
+ eof
+ 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::ceph::osd')
+ is_expected.to contain_class('tripleo::profile::base::ceph')
+ is_expected.to_not contain_class('ceph::profile::osd')
+ end
+ end
+
+ context 'with step 3 defaults' do
+ let(:params) { {
+ :step => 3,
+ } }
+
+ it 'should include osd configuration' do
+ is_expected.to contain_class('tripleo::profile::base::ceph')
+ is_expected.to contain_class('ceph::profile::osd')
+ is_expected.to_not contain_exec('set selinux to permissive on boot')
+ is_expected.to_not contain_exec('set selinux to permissive')
+ end
+ end
+
+ context 'with step 3 enable selinux permissive' do
+ let(:params) { {
+ :step => 3,
+ :ceph_osd_selinux_permissive => true
+ } }
+
+ it 'should include osd configuration' do
+ is_expected.to contain_class('tripleo::profile::base::ceph')
+ is_expected.to contain_class('ceph::profile::osd')
+ is_expected.to contain_exec('set selinux to permissive on boot')
+ is_expected.to contain_exec('set selinux to permissive')
+ 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::ceph::osd'
+ end
+ end
+end
diff --git a/spec/classes/tripleo_profile_base_ceph_rgw_spec.rb b/spec/classes/tripleo_profile_base_ceph_rgw_spec.rb
new file mode 100644
index 0000000..e9459d0
--- /dev/null
+++ b/spec/classes/tripleo_profile_base_ceph_rgw_spec.rb
@@ -0,0 +1,91 @@
+#
+# 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::ceph::rgw' do
+ shared_examples_for 'tripleo::profile::base::ceph::rgw' do
+ let (:pre_condition) do
+ <<-eof
+ class { '::tripleo::profile::base::ceph':
+ step => #{params[:step]}
+ }
+ eof
+ end
+
+ let (:default_params) do
+ {
+ :keystone_admin_token => 'token',
+ :keystone_url => 'url',
+ :rgw_key => 'key'
+ }
+ end
+
+ context 'with step less than 3' do
+ let(:params) { default_params.merge({ :step => 1 }) }
+ it 'should do nothing' do
+ is_expected.to contain_class('tripleo::profile::base::ceph::rgw')
+ is_expected.to contain_class('tripleo::profile::base::ceph')
+ is_expected.to_not contain_class('ceph::profile::rgw')
+ end
+ end
+
+ context 'with step 3' do
+ let(:params) { default_params.merge({ :step => 3 }) }
+ it 'should include rgw configuration' do
+ is_expected.to contain_class('tripleo::profile::base::ceph')
+ is_expected.to contain_class('ceph::profile::rgw')
+ is_expected.to contain_ceph__key('client.radosgw.gateway').with(
+ :secret => 'key',
+ :cap_mon => 'allow *',
+ :cap_osd => 'allow *',
+ :inject => true
+ )
+ is_expected.to_not contain_ceph__rgw__keystone('radosgw.gateway')
+ end
+ end
+
+ context 'with step 4' do
+ let(:params) { default_params.merge({ :step => 4 }) }
+ it 'should include rgw configuration' do
+ is_expected.to contain_class('tripleo::profile::base::ceph')
+ is_expected.to contain_class('ceph::profile::rgw')
+ is_expected.to contain_ceph__key('client.radosgw.gateway').with(
+ :secret => 'key',
+ :cap_mon => 'allow *',
+ :cap_osd => 'allow *',
+ :inject => true
+ )
+ is_expected.to contain_ceph__rgw__keystone('radosgw.gateway').with(
+ :rgw_keystone_accepted_roles => ['admin', '_member_', 'Member'],
+ :use_pki => false,
+ :rgw_keystone_admin_token => 'token',
+ :rgw_keystone_url => 'url'
+ )
+ 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::ceph::rgw'
+ end
+ end
+end
diff --git a/spec/classes/tripleo_profile_base_ceph_spec.rb b/spec/classes/tripleo_profile_base_ceph_spec.rb
new file mode 100644
index 0000000..1532fb7
--- /dev/null
+++ b/spec/classes/tripleo_profile_base_ceph_spec.rb
@@ -0,0 +1,99 @@
+#
+# 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::ceph' do
+ shared_examples_for 'tripleo::profile::base::ceph' do
+ context 'with step less than 2' do
+ let(:params) { { :step => 1 } }
+ it 'should do nothing' do
+ is_expected.to contain_class('tripleo::profile::base::ceph')
+ is_expected.to_not contain_class('ceph::conf')
+ is_expected.to_not contain_class('ceph::profile::params')
+ end
+ end
+
+ context 'with step 2' do
+ let(:params) { {
+ :step => 2,
+ } }
+
+ it 'should trigger complete configuration' do
+ is_expected.to contain_class('ceph::profile::params').with(
+ :mon_initial_members => nil,
+ :mon_host => '127.0.0.1'
+ )
+ is_expected.to contain_class('ceph::conf')
+ end
+ end
+
+ context 'with step 2 with initial members' do
+ let(:params) { {
+ :step => 2,
+ :ceph_mon_initial_members => [ 'monA', 'monB', 'monc' ]
+ } }
+
+ it 'should trigger complete configuration' do
+ is_expected.to contain_class('ceph::profile::params').with(
+ :mon_initial_members => 'mona,monb,monc',
+ :mon_host => '127.0.0.1'
+ )
+ is_expected.to contain_class('ceph::conf')
+ end
+ end
+
+ context 'with step 2 with ipv4 mon host' do
+ let(:params) { {
+ :step => 2,
+ :ceph_mon_host => ['10.0.0.1', '10.0.0.2']
+ } }
+
+ it 'should trigger complete configuration' do
+ is_expected.to contain_class('ceph::profile::params').with(
+ :mon_initial_members => nil,
+ :mon_host => '10.0.0.1,10.0.0.2'
+ )
+ is_expected.to contain_class('ceph::conf')
+ end
+ end
+
+ context 'with step 2 with ipv6 mon host' do
+ let(:params) { {
+ :step => 2,
+ :ceph_mon_host => ['fe80::fc54:ff:fe9e:7846', '10.0.0.2']
+ } }
+
+ it 'should trigger complete configuration' do
+ is_expected.to contain_class('ceph::profile::params').with(
+ :mon_initial_members => nil,
+ :mon_host => '[fe80::fc54:ff:fe9e:7846],10.0.0.2'
+ )
+ is_expected.to contain_class('ceph::conf')
+ 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::ceph'
+ end
+ end
+end