diff --git a/spec/classes/tripleo_profile_base_zaqar_authtoken_spec.rb b/spec/classes/tripleo_profile_base_zaqar_authtoken_spec.rb new file mode 100644 index 000000000..e45def965 --- /dev/null +++ b/spec/classes/tripleo_profile_base_zaqar_authtoken_spec.rb @@ -0,0 +1,70 @@ +# +# Copyright (C) 2020 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::zaqar::authtoken' do + shared_examples_for 'tripleo::profile::base::zaqar::authtoken' do + context 'with step less than 3' do + let(:params) { { + :step => 1, + } } + + it { + is_expected.to contain_class('tripleo::profile::base::zaqar::authtoken') + is_expected.to_not contain_class('zaqar::keystone::authtoken') + } + end + + context 'with step 3' do + let(:params) { { + :step => 3, + :memcached_ips => '127.0.0.1', + } } + + it { + is_expected.to contain_class('tripleo::profile::base::zaqar::authtoken') + is_expected.to contain_class('zaqar::keystone::authtoken').with( + :memcached_servers => ['127.0.0.1:11211']) + } + end + + context 'with step 3 with ipv6' do + let(:params) { { + :step => 3, + :memcached_ips => '::1', + } } + + it { + is_expected.to contain_class('tripleo::profile::base::zaqar::authtoken') + is_expected.to contain_class('zaqar::keystone::authtoken').with( + :memcached_servers => ['[::1]:11211']) + } + 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::zaqar::authtoken' + end + end +end diff --git a/spec/classes/tripleo_profile_base_zaqar_spec.rb b/spec/classes/tripleo_profile_base_zaqar_spec.rb new file mode 100644 index 000000000..bdde47c21 --- /dev/null +++ b/spec/classes/tripleo_profile_base_zaqar_spec.rb @@ -0,0 +1,174 @@ +# +# Copyright (C) 2020 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::zaqar' do + shared_examples_for 'tripleo::profile::base::zaqar' do + let(:pre_condition) do + <<-eos + class { 'tripleo::profile::base::zaqar::authtoken': + step => #{params[:step]}, + } +eos + end + + context 'with step less than 3' do + let(:params) { { + :step => 1, + } } + + it { + is_expected.to contain_class('tripleo::profile::base::zaqar') + is_expected.to contain_class('tripleo::profile::base::zaqar::authtoken') + is_expected.to_not contain_class('tripleo::profile::base::apache') + is_expected.to_not contain_class('zaqar') + is_expected.to_not contain_class('zaqar::messaging::swift') + is_expected.to_not contain_class('zaqar::messaging::redis') + is_expected.to_not contain_class('zaqar::management::sqlalchemy') + is_expected.to_not contain_class('zaqar::transport::websocket') + is_expected.to_not contain_class('zaqar::transport::wsgi') + is_expected.to_not contain_class('zaqar::config') + is_expected.to_not contain_class('zaqar::logging') + is_expected.to_not contain_class('zaqar::server') + is_expected.to_not contain_class('zaqar::wsgi::apache') + is_expected.to_not contain_zaqar__server_instance('1') + } + end + + context 'with step 3 on bootstrap node' do + let(:params) { { + :step => 3, + :bootstrap_node => 'node.example.com', + :redis_vip => '192.168.0.1', + :zaqar_redis_password => 'zaqar', + } } + + it { + is_expected.to contain_class('tripleo::profile::base::zaqar') + is_expected.to contain_class('tripleo::profile::base::zaqar::authtoken') + is_expected.to contain_class('tripleo::profile::base::apache') + is_expected.to contain_class('zaqar') + is_expected.to_not contain_class('zaqar::messaging::swift') + is_expected.to contain_class('zaqar::messaging::redis').with( + :uri => 'redis://:zaqar@192.168.0.1:6379/', + ) + is_expected.to contain_class('zaqar::management::sqlalchemy') + is_expected.to contain_class('zaqar::transport::websocket') + is_expected.to contain_class('zaqar::transport::wsgi') + is_expected.to contain_class('zaqar::config') + is_expected.to contain_class('zaqar::logging') + is_expected.to contain_class('zaqar::server') + is_expected.to contain_class('zaqar::wsgi::apache') + is_expected.to contain_zaqar__server_instance('1').with( + :transport => 'websocket' + ) + } + end + + context 'with step 3 not on bootstrap node' do + let(:params) { { + :step => 3, + :bootstrap_node => 'other.example.com', + } } + + it { + is_expected.to contain_class('tripleo::profile::base::zaqar') + is_expected.to contain_class('tripleo::profile::base::zaqar::authtoken') + is_expected.to_not contain_class('tripleo::profile::base::apache') + is_expected.to_not contain_class('zaqar') + is_expected.to_not contain_class('zaqar::messaging::swift') + is_expected.to_not contain_class('zaqar::messaging::redis') + is_expected.to_not contain_class('zaqar::management::sqlalchemy') + is_expected.to_not contain_class('zaqar::transport::websocket') + is_expected.to_not contain_class('zaqar::transport::wsgi') + is_expected.to_not contain_class('zaqar::config') + is_expected.to_not contain_class('zaqar::logging') + is_expected.to_not contain_class('zaqar::server') + is_expected.to_not contain_class('zaqar::wsgi::apache') + is_expected.to_not contain_zaqar__server_instance('1') + } + end + + context 'with step 4 not on bootstrap node' do + let(:params) { { + :step => 4, + :bootstrap_node => 'node.example.com', + :redis_vip => '192.168.0.1', + :zaqar_redis_password => 'zaqar', + } } + + it { + is_expected.to contain_class('tripleo::profile::base::zaqar') + is_expected.to contain_class('tripleo::profile::base::zaqar::authtoken') + is_expected.to contain_class('tripleo::profile::base::apache') + is_expected.to contain_class('zaqar') + is_expected.to_not contain_class('zaqar::messaging::swift') + is_expected.to contain_class('zaqar::messaging::redis').with({ + :uri => 'redis://:zaqar@192.168.0.1:6379/', + }) + is_expected.to contain_class('zaqar::management::sqlalchemy') + is_expected.to contain_class('zaqar::transport::websocket') + is_expected.to contain_class('zaqar::transport::wsgi') + is_expected.to contain_class('zaqar::config') + is_expected.to contain_class('zaqar::logging') + is_expected.to contain_class('zaqar::server') + is_expected.to contain_class('zaqar::wsgi::apache') + is_expected.to contain_zaqar__server_instance('1').with( + :transport => 'websocket' + ) + } + end + + context 'with step 4 and swift messaging store' do + let(:params) { { + :step => 4, + :bootstrap_node => 'node.example.com', + :messaging_store => 'swift', + } } + + it { + is_expected.to contain_class('tripleo::profile::base::zaqar') + is_expected.to contain_class('tripleo::profile::base::zaqar::authtoken') + is_expected.to contain_class('tripleo::profile::base::apache') + is_expected.to contain_class('zaqar') + is_expected.to contain_class('zaqar::messaging::swift') + is_expected.to_not contain_class('zaqar::messaging::redis') + is_expected.to contain_class('zaqar::management::sqlalchemy') + is_expected.to contain_class('zaqar::transport::websocket') + is_expected.to contain_class('zaqar::transport::wsgi') + is_expected.to contain_class('zaqar::config') + is_expected.to contain_class('zaqar::logging') + is_expected.to contain_class('zaqar::server') + is_expected.to contain_class('zaqar::wsgi::apache') + is_expected.to contain_zaqar__server_instance('1').with( + :transport => 'websocket' + ) + } + 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::zaqar' + end + end +end diff --git a/spec/fixtures/hieradata/default.yaml b/spec/fixtures/hieradata/default.yaml index 36f1d045f..6c12b4cda 100644 --- a/spec/fixtures/hieradata/default.yaml +++ b/spec/fixtures/hieradata/default.yaml @@ -181,6 +181,8 @@ redis::bind: '10.0.0.1' swift_proxy_short_bootstrap_node_name: node # zaqar related zaqar::keystone::authtoken::password: 'password' +zaqar::management::sqlalchemy::uri: 'sqlite:////var/lib/zaqar/zaqar.sqlite' +zaqar::messaging::swift::uri: 'swift://zaqar:password@127.0.0.1:8080/zaqar' # required for metrics::qdr_user ctlplane: '192.168.24.123' # required to avoid EPEL repo management when testing collectd::sensubility