aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Schultz <aschultz@redhat.com>2016-10-05 12:22:04 -0600
committerAlex Schultz <aschultz@redhat.com>2016-10-05 12:22:04 -0600
commitb091e85e4831cccf8eb2816188d000bf55661e4c (patch)
tree8bf2fb8e6c5e078fb301c9b899d6ccce2b44b846
parentdaebf929822aa6849e4e8c6f2e61efe1759e4f80 (diff)
Add ceph profile rspec testing
This change adds rspec testing for the ceph profiles in puppet-tripleo. Change-Id: I08954e011848d6b747735f11b3cbff5707460c26
-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
-rw-r--r--spec/fixtures/hieradata/default.yaml2
6 files changed, 403 insertions, 0 deletions
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
diff --git a/spec/fixtures/hieradata/default.yaml b/spec/fixtures/hieradata/default.yaml
index e9409e7..f0f7f1c 100644
--- a/spec/fixtures/hieradata/default.yaml
+++ b/spec/fixtures/hieradata/default.yaml
@@ -9,3 +9,5 @@ aodh::auth::auth_password: 'password'
aodh::db::mysql::password: 'password'
aodh::keystone::authtoken::password: 'password'
ceilometer::keystone::authtoken::password: 'password'
+# ceph related items
+ceph::profile::params::mon_key: 'password'