From ca26a6bbc8a660666d57365b1c461563634fc330 Mon Sep 17 00:00:00 2001 From: Mykyta Karpin Date: Tue, 22 Nov 2016 16:11:28 +0200 Subject: [PATCH] Finish converting to rspec-puppet-facts Change-Id: I66c41584347c9986ac7e884e80efa982b4050175 --- spec/classes/ironic_api_authtoken_spec.rb | 2 +- spec/classes/ironic_api_spec.rb | 53 ++-- spec/classes/ironic_client_spec.rb | 22 +- spec/classes/ironic_conductor_spec.rb | 60 +++-- spec/classes/ironic_cors_spec.rb | 2 +- spec/classes/ironic_db_mysql_spec.rb | 40 +-- spec/classes/ironic_db_postgresql_spec.rb | 2 +- spec/classes/ironic_db_spec.rb | 41 +-- spec/classes/ironic_db_sync_spec.rb | 2 +- spec/classes/ironic_drivers_agent_spec.rb | 2 +- spec/classes/ironic_drivers_drac_spec.rb | 2 +- spec/classes/ironic_drivers_ilo_spec.rb | 2 +- spec/classes/ironic_drivers_ipmi_spec.rb | 23 +- spec/classes/ironic_drivers_pxe_spec.rb | 26 +- spec/classes/ironic_drivers_ssh_spec.rb | 2 +- spec/classes/ironic_init_spec.rb | 43 ++-- .../ironic_inspector_authtoken_spec.rb | 2 +- .../classes/ironic_inspector_db_mysql_spec.rb | 2 +- .../ironic_inspector_db_postgresql_spec.rb | 2 +- spec/classes/ironic_inspector_db_spec.rb | 41 +-- spec/classes/ironic_inspector_db_sync_spec.rb | 2 +- spec/classes/ironic_inspector_logging_spec.rb | 22 +- spec/classes/ironic_inspector_spec.rb | 52 ++-- .../ironic_keystone_auth_inspector_spec.rb | 239 +++++++++--------- spec/classes/ironic_keystone_auth_spec.rb | 208 ++++++++------- spec/classes/ironic_logging_spec.rb | 23 +- spec/classes/ironic_policy_spec.rb | 2 +- spec/classes/ironic_pxe_spec.rb | 31 +-- spec/classes/ironic_wsgi_apache_spec.rb | 98 ++++--- 29 files changed, 507 insertions(+), 541 deletions(-) diff --git a/spec/classes/ironic_api_authtoken_spec.rb b/spec/classes/ironic_api_authtoken_spec.rb index 0909318b..1b4191a8 100644 --- a/spec/classes/ironic_api_authtoken_spec.rb +++ b/spec/classes/ironic_api_authtoken_spec.rb @@ -138,7 +138,7 @@ describe 'ironic::api::authtoken' do facts.merge!(OSDefaults.get_facts()) end - it_configures 'ironic api authtoken' + it_behaves_like 'ironic api authtoken' end end diff --git a/spec/classes/ironic_api_spec.rb b/spec/classes/ironic_api_spec.rb index 229433c9..bceba817 100644 --- a/spec/classes/ironic_api_spec.rb +++ b/spec/classes/ironic_api_spec.rb @@ -146,41 +146,26 @@ describe 'ironic::api' do end end - context 'on Debian platforms' do - let :facts do - @default_facts.merge({ - :osfamily => 'Debian', - :operatingsystem => 'Debian', - :operatingsystemrelease => '8.0', - :concat_basedir => '/var/lib/puppet/concat', - :fqdn => 'some.host.tld', - }) + on_supported_os({ + :supported_os => OSDefaults.get_supported_os + }).each do |os,facts| + context "on #{os}" do + let (:facts) do + facts.merge!(OSDefaults.get_facts()) + end + + let :platform_params do + case facts[:osfamily] + when 'Debian' + { :api_package => 'ironic-api', + :api_service => 'ironic-api' } + when 'RedHat' + { :api_service => 'openstack-ironic-api' } + end + end + + it_behaves_like 'ironic api' end - - let :platform_params do - { :api_package => 'ironic-api', - :api_service => 'ironic-api' } - end - - it_configures 'ironic api' - end - - context 'on RedHat platforms' do - let :facts do - @default_facts.merge({ - :osfamily => 'RedHat', - :operatingsystem => 'RedHat', - :operatingsystemrelease => '7.2', - :concat_basedir => '/var/lib/puppet/concat', - :fqdn => 'some.host.tld', - }) - end - - let :platform_params do - { :api_service => 'openstack-ironic-api' } - end - - it_configures 'ironic api' end end diff --git a/spec/classes/ironic_client_spec.rb b/spec/classes/ironic_client_spec.rb index 90ad7677..3e597bed 100644 --- a/spec/classes/ironic_client_spec.rb +++ b/spec/classes/ironic_client_spec.rb @@ -22,19 +22,17 @@ require 'spec_helper' describe 'ironic::client' do - context 'on Debian platforms' do - let :facts do - @default_facts.merge({ :osfamily => 'Debian' }) - end + on_supported_os({ + :supported_os => OSDefaults.get_supported_os + }).each do |os,facts| + context "on #{os}" do + let (:facts) do + facts.merge!(OSDefaults.get_facts()) + end - it { is_expected.to contain_class('ironic::client') } + it { is_expected.to contain_class('ironic::client') } + + end end - context 'on RedHat platforms' do - let :facts do - @default_facts.merge({ :osfamily => 'RedHat' }) - end - - it { is_expected.to contain_class('ironic::client') } - end end diff --git a/spec/classes/ironic_conductor_spec.rb b/spec/classes/ironic_conductor_spec.rb index f058a3d2..0802d44c 100644 --- a/spec/classes/ironic_conductor_spec.rb +++ b/spec/classes/ironic_conductor_spec.rb @@ -124,38 +124,36 @@ describe 'ironic::conductor' do end - context 'on Debian platforms' do - let :facts do - @default_facts.merge({ :osfamily => 'Debian' }) + on_supported_os({ + :supported_os => OSDefaults.get_supported_os + }).each do |os,facts| + context "on #{os}" do + let (:facts) do + facts.merge!(OSDefaults.get_facts()) + end + + case facts[:osfamily] + when 'Debian' + let :platform_params do + { :conductor_package => 'ironic-conductor', + :conductor_service => 'ironic-conductor' } + end + # https://bugs.launchpad.net/cloud-archive/+bug/1572800 + it 'installs ipmitool package' do + is_expected.to contain_package('ipmitool').with( + :ensure => 'present', + :name => 'ipmitool', + :tag => ['openstack', 'ironic-package'], + ) + end + when 'RedHat' + let :platform_params do + { :conductor_service => 'ironic-conductor' } + end + end + + it_behaves_like 'ironic conductor' end - - let :platform_params do - { :conductor_package => 'ironic-conductor', - :conductor_service => 'ironic-conductor' } - end - - it_configures 'ironic conductor' - - # https://bugs.launchpad.net/cloud-archive/+bug/1572800 - it 'installs ipmitool package' do - is_expected.to contain_package('ipmitool').with( - :ensure => 'present', - :name => 'ipmitool', - :tag => ['openstack', 'ironic-package'], - ) - end - end - - context 'on RedHat platforms' do - let :facts do - @default_facts.merge({ :osfamily => 'RedHat' }) - end - - let :platform_params do - { :conductor_service => 'ironic-conductor' } - end - - it_configures 'ironic conductor' end end diff --git a/spec/classes/ironic_cors_spec.rb b/spec/classes/ironic_cors_spec.rb index 12dbfd14..91aca33d 100644 --- a/spec/classes/ironic_cors_spec.rb +++ b/spec/classes/ironic_cors_spec.rb @@ -42,7 +42,7 @@ describe 'ironic::cors' do facts.merge!(OSDefaults.get_facts()) end - it_configures 'ironic cors' + it_behaves_like 'ironic cors' end end diff --git a/spec/classes/ironic_db_mysql_spec.rb b/spec/classes/ironic_db_mysql_spec.rb index ad4237cd..4d92219a 100644 --- a/spec/classes/ironic_db_mysql_spec.rb +++ b/spec/classes/ironic_db_mysql_spec.rb @@ -30,34 +30,22 @@ describe 'ironic::db::mysql' do { :password => 'passw0rd' } end - let :facts do - @default_facts.merge({ :osfamily => 'Debian' }) - end + on_supported_os({ + :supported_os => OSDefaults.get_supported_os + }).each do |os,facts| + context "on #{os}" do + let (:facts) do + facts.merge!(OSDefaults.get_facts()) + end + + it { is_expected.to contain_openstacklib__db__mysql('ironic').with( + :user => 'ironic', + :password_hash => '*74B1C21ACE0C2D6B0678A5E503D2A60E8F9651A3', + :charset => 'utf8', + :collate => 'utf8_general_ci', + )} - context 'on Debian platforms' do - let :facts do - @default_facts.merge({ :osfamily => 'Debian' }) end - - it { is_expected.to contain_openstacklib__db__mysql('ironic').with( - :user => 'ironic', - :password_hash => '*74B1C21ACE0C2D6B0678A5E503D2A60E8F9651A3', - :charset => 'utf8', - :collate => 'utf8_general_ci', - )} - end - - context 'on RedHat platforms' do - let :facts do - @default_facts.merge({ :osfamily => 'RedHat' }) - end - - it { is_expected.to contain_openstacklib__db__mysql('ironic').with( - :user => 'ironic', - :password_hash => '*74B1C21ACE0C2D6B0678A5E503D2A60E8F9651A3', - :charset => 'utf8', - :collate => 'utf8_general_ci', - )} end describe "overriding allowed_hosts param to array" do diff --git a/spec/classes/ironic_db_postgresql_spec.rb b/spec/classes/ironic_db_postgresql_spec.rb index 116e4681..3a332a2d 100644 --- a/spec/classes/ironic_db_postgresql_spec.rb +++ b/spec/classes/ironic_db_postgresql_spec.rb @@ -35,7 +35,7 @@ describe 'ironic::db::postgresql' do })) end - it_configures 'ironic::db::postgresql' + it_behaves_like 'ironic::db::postgresql' end end diff --git a/spec/classes/ironic_db_spec.rb b/spec/classes/ironic_db_spec.rb index 56875c87..21daa1d6 100644 --- a/spec/classes/ironic_db_spec.rb +++ b/spec/classes/ironic_db_spec.rb @@ -78,15 +78,7 @@ describe 'ironic::db' do end - context 'on Debian platforms' do - let :facts do - @default_facts.merge({ :osfamily => 'Debian', - :operatingsystem => 'Debian', - :operatingsystemrelease => 'jessie', - }) - end - - it_configures 'ironic::db' + shared_examples_for 'ironic::db on Debian platforms' do context 'using pymysql driver' do let :params do @@ -118,14 +110,7 @@ describe 'ironic::db' do end - context 'on Redhat platforms' do - let :facts do - @default_facts.merge({ :osfamily => 'RedHat', - :operatingsystemrelease => '7.1', - }) - end - - it_configures 'ironic::db' + shared_examples_for 'ironic::db on RedHat platforms' do context 'using pymysql driver' do let :params do @@ -136,4 +121,26 @@ describe 'ironic::db' do end end + on_supported_os({ + :supported_os => OSDefaults.get_supported_os + }).each do |os,facts| + context "on #{os}" do + let (:facts) do + facts.merge!(OSDefaults.get_facts({ + :concat_basedir => '/var/lib/puppet/concat', + :fqdn => 'some.host.tld', + })) + end + + case facts[:osfamily] + when 'Debian' + it_behaves_like 'ironic::db on Debian platforms' + when 'RedHat' + it_behaves_like 'ironic::db on RedHat platforms' + end + + it_behaves_like 'ironic::db' + end + end + end diff --git a/spec/classes/ironic_db_sync_spec.rb b/spec/classes/ironic_db_sync_spec.rb index 0bf7eeeb..6cda1a08 100644 --- a/spec/classes/ironic_db_sync_spec.rb +++ b/spec/classes/ironic_db_sync_spec.rb @@ -42,7 +42,7 @@ describe 'ironic::db::sync' do })) end - it_configures 'ironic-dbsync' + it_behaves_like 'ironic-dbsync' end end diff --git a/spec/classes/ironic_drivers_agent_spec.rb b/spec/classes/ironic_drivers_agent_spec.rb index 10f7ef24..a530d12d 100644 --- a/spec/classes/ironic_drivers_agent_spec.rb +++ b/spec/classes/ironic_drivers_agent_spec.rb @@ -69,7 +69,7 @@ describe 'ironic::drivers::agent' do let (:facts) do facts.merge(OSDefaults.get_facts()) end - it_configures 'ironic agent driver' + it_behaves_like 'ironic agent driver' end end diff --git a/spec/classes/ironic_drivers_drac_spec.rb b/spec/classes/ironic_drivers_drac_spec.rb index 1fd6d133..1c4838fb 100644 --- a/spec/classes/ironic_drivers_drac_spec.rb +++ b/spec/classes/ironic_drivers_drac_spec.rb @@ -40,7 +40,7 @@ describe 'ironic::drivers::drac' do let (:facts) do facts.merge!(OSDefaults.get_facts()) end - it_configures 'ironic drac driver' + it_behaves_like 'ironic drac driver' end end diff --git a/spec/classes/ironic_drivers_ilo_spec.rb b/spec/classes/ironic_drivers_ilo_spec.rb index c1f1e73b..1cfc0f94 100644 --- a/spec/classes/ironic_drivers_ilo_spec.rb +++ b/spec/classes/ironic_drivers_ilo_spec.rb @@ -65,7 +65,7 @@ describe 'ironic::drivers::ilo' do let (:facts) do facts.merge!(OSDefaults.get_facts()) end - it_configures 'ironic ilo driver' + it_behaves_like 'ironic ilo driver' end end diff --git a/spec/classes/ironic_drivers_ipmi_spec.rb b/spec/classes/ironic_drivers_ipmi_spec.rb index 345f7688..050b6dd4 100644 --- a/spec/classes/ironic_drivers_ipmi_spec.rb +++ b/spec/classes/ironic_drivers_ipmi_spec.rb @@ -50,20 +50,17 @@ describe 'ironic::drivers::ipmi' do end - context 'on Debian platforms' do - let :facts do - @default_facts.merge({ :osfamily => 'Debian' }) + on_supported_os({ + :supported_os => OSDefaults.get_supported_os + }).each do |os,facts| + context "on #{os}" do + let (:facts) do + facts.merge!(OSDefaults.get_facts()) + end + + it_behaves_like 'ironic ipmi driver' + end - - it_configures 'ironic ipmi driver' - end - - context 'on RedHat platforms' do - let :facts do - @default_facts.merge({ :osfamily => 'RedHat' }) - end - - it_configures 'ironic ipmi driver' end end diff --git a/spec/classes/ironic_drivers_pxe_spec.rb b/spec/classes/ironic_drivers_pxe_spec.rb index 27889109..ba342629 100644 --- a/spec/classes/ironic_drivers_pxe_spec.rb +++ b/spec/classes/ironic_drivers_pxe_spec.rb @@ -111,20 +111,20 @@ describe 'ironic::drivers::pxe' do end - context 'on Debian platforms' do - let :facts do - @default_facts.merge({ :osfamily => 'Debian' }) + on_supported_os({ + :supported_os => OSDefaults.get_supported_os + }).each do |os,facts| + context "on #{os}" do + let (:facts) do + facts.merge!(OSDefaults.get_facts({ + :concat_basedir => '/var/lib/puppet/concat', + :fqdn => 'some.host.tld', + })) + end + + it_behaves_like 'ironic pxe driver' + end - - it_configures 'ironic pxe driver' - end - - context 'on RedHat platforms' do - let :facts do - @default_facts.merge({ :osfamily => 'RedHat' }) - end - - it_configures 'ironic pxe driver' end end diff --git a/spec/classes/ironic_drivers_ssh_spec.rb b/spec/classes/ironic_drivers_ssh_spec.rb index 8d726196..fcc9f84a 100644 --- a/spec/classes/ironic_drivers_ssh_spec.rb +++ b/spec/classes/ironic_drivers_ssh_spec.rb @@ -43,7 +43,7 @@ describe 'ironic::drivers::ssh' do let (:facts) do facts.merge!(OSDefaults.get_facts()) end - it_configures 'ironic driver ssh' + it_behaves_like 'ironic driver ssh' end end diff --git a/spec/classes/ironic_init_spec.rb b/spec/classes/ironic_init_spec.rb index db1ff52d..06e811a4 100644 --- a/spec/classes/ironic_init_spec.rb +++ b/spec/classes/ironic_init_spec.rb @@ -282,29 +282,30 @@ describe 'ironic' do end end - context 'on Debian platforms' do - let :facts do - @default_facts.merge({ :osfamily => 'Debian' }) - end + on_supported_os({ + :supported_os => OSDefaults.get_supported_os + }).each do |os,facts| + context "on #{os}" do + let (:facts) do + facts.merge!(OSDefaults.get_facts({ + :concat_basedir => '/var/lib/puppet/concat', + :fqdn => 'some.host.tld', + })) + end - let :platform_params do - { :common_package_name => 'ironic-common', - :lib_package_name => 'python-ironic-lib' } - end + let :platform_params do + case facts[:osfamily] + when 'Debian' + { :common_package_name => 'ironic-common', + :lib_package_name => 'python-ironic-lib' } + when 'RedHat' + { :common_package_name => 'openstack-ironic-common', + :lib_package_name => 'python-ironic-lib' } + end + end - it_configures 'ironic' + it_behaves_like 'ironic' + end end - context 'on RedHat platforms' do - let :facts do - @default_facts.merge({ :osfamily => 'RedHat' }) - end - - let :platform_params do - { :common_package_name => 'openstack-ironic-common', - :lib_package_name => 'python-ironic-lib' } - end - - it_configures 'ironic' - end end diff --git a/spec/classes/ironic_inspector_authtoken_spec.rb b/spec/classes/ironic_inspector_authtoken_spec.rb index ce983963..91d9a4d8 100644 --- a/spec/classes/ironic_inspector_authtoken_spec.rb +++ b/spec/classes/ironic_inspector_authtoken_spec.rb @@ -138,7 +138,7 @@ describe 'ironic::inspector::authtoken' do facts.merge!(OSDefaults.get_facts()) end - it_configures 'ironic inspector authtoken' + it_behaves_like 'ironic inspector authtoken' end end diff --git a/spec/classes/ironic_inspector_db_mysql_spec.rb b/spec/classes/ironic_inspector_db_mysql_spec.rb index d5301699..fb5c86f3 100644 --- a/spec/classes/ironic_inspector_db_mysql_spec.rb +++ b/spec/classes/ironic_inspector_db_mysql_spec.rb @@ -54,7 +54,7 @@ describe 'ironic::inspector::db::mysql' do facts.merge(OSDefaults.get_facts()) end - it_configures 'ironic::inspector::db::mysql' + it_behaves_like 'ironic::inspector::db::mysql' end end diff --git a/spec/classes/ironic_inspector_db_postgresql_spec.rb b/spec/classes/ironic_inspector_db_postgresql_spec.rb index db81f49d..053003a5 100644 --- a/spec/classes/ironic_inspector_db_postgresql_spec.rb +++ b/spec/classes/ironic_inspector_db_postgresql_spec.rb @@ -32,7 +32,7 @@ describe 'ironic::inspector::db::postgresql' do facts.merge(OSDefaults.get_facts()) end - it_configures 'ironic::inspector::db::postgresql' + it_behaves_like 'ironic::inspector::db::postgresql' end end diff --git a/spec/classes/ironic_inspector_db_spec.rb b/spec/classes/ironic_inspector_db_spec.rb index d99a9525..ab502e70 100644 --- a/spec/classes/ironic_inspector_db_spec.rb +++ b/spec/classes/ironic_inspector_db_spec.rb @@ -74,15 +74,7 @@ describe 'ironic::inspector::db' do end - context 'on Debian platforms' do - let :facts do - @default_facts.merge({ :osfamily => 'Debian', - :operatingsystem => 'Debian', - :operatingsystemrelease => 'jessie', - }) - end - - it_configures 'ironic::inspector::db' + shared_examples 'ironic::inspector::db on Debian platforms' do context 'using pymysql driver' do let :params do @@ -114,14 +106,7 @@ describe 'ironic::inspector::db' do end - context 'on Redhat platforms' do - let :facts do - @default_facts.merge({ :osfamily => 'RedHat', - :operatingsystemrelease => '7.1', - }) - end - - it_configures 'ironic::inspector::db' + shared_examples 'ironic::inspector::db on Redhat platforms' do context 'using pymysql driver' do let :params do @@ -132,4 +117,26 @@ describe 'ironic::inspector::db' do end end + on_supported_os({ + :supported_os => OSDefaults.get_supported_os + }).each do |os,facts| + context "on #{os}" do + let (:facts) do + facts.merge!(OSDefaults.get_facts({ + :concat_basedir => '/var/lib/puppet/concat', + :fqdn => 'some.host.tld', + })) + end + + case facts[:osfamily] + when 'Debian' + it_behaves_like 'ironic::inspector::db on Debian platforms' + when 'RedHat' + it_behaves_like 'ironic::inspector::db on Redhat platforms' + end + + it_behaves_like 'ironic::inspector::db' + end + end + end diff --git a/spec/classes/ironic_inspector_db_sync_spec.rb b/spec/classes/ironic_inspector_db_sync_spec.rb index 59f4644e..b142e10b 100644 --- a/spec/classes/ironic_inspector_db_sync_spec.rb +++ b/spec/classes/ironic_inspector_db_sync_spec.rb @@ -23,7 +23,7 @@ describe 'ironic::inspector::db::sync' do let (:facts) do facts.merge(OSDefaults.get_facts()) end - it_configures 'inspector-dbsync' + it_behaves_like 'inspector-dbsync' end end diff --git a/spec/classes/ironic_inspector_logging_spec.rb b/spec/classes/ironic_inspector_logging_spec.rb index 4e4929da..9e37d32a 100644 --- a/spec/classes/ironic_inspector_logging_spec.rb +++ b/spec/classes/ironic_inspector_logging_spec.rb @@ -120,20 +120,16 @@ describe 'ironic::inspector::logging' do } end - context 'on Debian platforms' do - let :facts do - @default_facts.merge({ :osfamily => 'Debian' }) + on_supported_os({ + :supported_os => OSDefaults.get_supported_os + }).each do |os,facts| + context "on #{os}" do + let (:facts) do + facts.merge!(OSDefaults.get_facts()) + end + + it_behaves_like 'ironic-inspector-logging' end - - it_configures 'ironic-inspector-logging' - end - - context 'on RedHat platforms' do - let :facts do - @default_facts.merge({ :osfamily => 'RedHat' }) - end - - it_configures 'ironic-inspector-logging' end end diff --git a/spec/classes/ironic_inspector_spec.rb b/spec/classes/ironic_inspector_spec.rb index da14ef66..878187c3 100644 --- a/spec/classes/ironic_inspector_spec.rb +++ b/spec/classes/ironic_inspector_spec.rb @@ -220,37 +220,29 @@ describe 'ironic::inspector' do end end - context 'on Debian platforms' do - let :facts do - @default_facts.merge({ - :osfamily => 'Debian', - :operatingsystem => 'Debian', - :operatingsystemrelease => '7.0' - }) + on_supported_os({ + :supported_os => OSDefaults.get_supported_os + }).each do |os,facts| + context "on #{os}" do + let (:facts) do + facts.merge!(OSDefaults.get_facts({ + :concat_basedir => '/var/lib/puppet/concat', + :fqdn => 'some.host.tld', + })) + end + + let :platform_params do + case facts[:osfamily] + when 'Debian' + { :inspector_package => 'ironic-inspector', + :inspector_service => 'ironic-inspector' } + when 'RedHat' + { :inspector_service => 'ironic-inspector' } + end + end + + it_behaves_like 'ironic inspector' end - - let :platform_params do - { :inspector_package => 'ironic-inspector', - :inspector_service => 'ironic-inspector' } - end - - it_configures 'ironic inspector' - end - - context 'on RedHat platforms' do - let :facts do - @default_facts.merge({ - :osfamily => 'RedHat', - :operatingsystem => 'CentOS', - :operatingsystemrelease => '7.2.1511' - }) - end - - let :platform_params do - { :inspector_service => 'ironic-inspector' } - end - - it_configures 'ironic inspector' end end diff --git a/spec/classes/ironic_keystone_auth_inspector_spec.rb b/spec/classes/ironic_keystone_auth_inspector_spec.rb index b6a6b395..e1be429d 100644 --- a/spec/classes/ironic_keystone_auth_inspector_spec.rb +++ b/spec/classes/ironic_keystone_auth_inspector_spec.rb @@ -22,135 +22,146 @@ require 'spec_helper' describe 'ironic::keystone::auth_inspector' do - let :facts do - @default_facts.merge({ :osfamily => 'Debian' }) - end + shared_examples_for 'ironic keystone auth inspector' do - describe 'with default class parameters' do - let :params do - { :password => 'ironic_inspector_password', - :tenant => 'foobar' } + describe 'with default class parameters' do + let :params do + { :password => 'ironic_inspector_password', + :tenant => 'foobar' } + end + + it { is_expected.to contain_keystone_user('ironic-inspector').with( + :ensure => 'present', + :password => 'ironic_inspector_password', + ) } + + it { is_expected.to contain_keystone_user_role('ironic-inspector@foobar').with( + :ensure => 'present', + :roles => ['admin'] + )} + + it { is_expected.to contain_keystone_service('ironic-inspector::baremetal-introspection').with( + :ensure => 'present', + :type => 'baremetal-introspection', + :description => 'Bare Metal Introspection Service' + ) } + + it { is_expected.to contain_keystone_endpoint('RegionOne/ironic-inspector::baremetal-introspection').with( + :ensure => 'present', + :public_url => "http://127.0.0.1:5050", + :admin_url => "http://127.0.0.1:5050", + :internal_url => "http://127.0.0.1:5050" + ) } end - it { is_expected.to contain_keystone_user('ironic-inspector').with( - :ensure => 'present', - :password => 'ironic_inspector_password', - ) } + describe 'when configuring ironic-inspector' do + let :pre_condition do + "class { 'ironic::inspector': auth_password => 'test' }" + end - it { is_expected.to contain_keystone_user_role('ironic-inspector@foobar').with( - :ensure => 'present', - :roles => ['admin'] - )} + let :params do + { :password => 'ironic_password', + :tenant => 'foobar' } + end - it { is_expected.to contain_keystone_service('ironic-inspector::baremetal-introspection').with( - :ensure => 'present', - :type => 'baremetal-introspection', - :description => 'Bare Metal Introspection Service' - ) } - - it { is_expected.to contain_keystone_endpoint('RegionOne/ironic-inspector::baremetal-introspection').with( - :ensure => 'present', - :public_url => "http://127.0.0.1:5050", - :admin_url => "http://127.0.0.1:5050", - :internal_url => "http://127.0.0.1:5050" - ) } - end - - describe 'when configuring ironic-inspector' do - let :pre_condition do - "class { 'ironic::inspector': auth_password => 'test' }" end - let :params do - { :password => 'ironic_password', - :tenant => 'foobar' } - end + describe 'with endpoint parameters' do + let :params do + { :password => 'ironic_password', + :public_url => 'https://10.0.0.10:5050', + :admin_url => 'https://10.0.0.11:5050', + :internal_url => 'https://10.0.0.11:5050' } + end - end - - describe 'with endpoint parameters' do - let :params do - { :password => 'ironic_password', + it { is_expected.to contain_keystone_endpoint('RegionOne/ironic-inspector::baremetal-introspection').with( + :ensure => 'present', :public_url => 'https://10.0.0.10:5050', :admin_url => 'https://10.0.0.11:5050', - :internal_url => 'https://10.0.0.11:5050' } + :internal_url => 'https://10.0.0.11:5050' + ) } end - it { is_expected.to contain_keystone_endpoint('RegionOne/ironic-inspector::baremetal-introspection').with( - :ensure => 'present', - :public_url => 'https://10.0.0.10:5050', - :admin_url => 'https://10.0.0.11:5050', - :internal_url => 'https://10.0.0.11:5050' - ) } + describe 'when overriding auth name' do + let :params do + { :password => 'foo', + :auth_name => 'inspecty' } + end + + it { is_expected.to contain_keystone_user('inspecty') } + it { is_expected.to contain_keystone_user_role('inspecty@services') } + it { is_expected.to contain_keystone_service('inspecty::baremetal-introspection') } + it { is_expected.to contain_keystone_endpoint('RegionOne/inspecty::baremetal-introspection') } + end + + describe 'when overriding service name' do + let :params do + { + :service_name => 'inspector_service', + :password => 'ironic_password', + } + end + + it { is_expected.to contain_keystone_user('ironic-inspector') } + it { is_expected.to contain_keystone_user_role('ironic-inspector@services') } + it { is_expected.to contain_keystone_service('inspector_service::baremetal-introspection') } + it { is_expected.to contain_keystone_endpoint('RegionOne/inspector_service::baremetal-introspection') } + end + + describe 'when disabling user configuration' do + + let :params do + { + :password => 'ironic_password', + :configure_user => false + } + end + + it { is_expected.not_to contain_keystone_user('ironic-inspector') } + + it { is_expected.to contain_keystone_user_role('ironic-inspector@services') } + + it { is_expected.to contain_keystone_service('ironic-inspector::baremetal-introspection').with( + :ensure => 'present', + :type => 'baremetal-introspection', + :description => 'Bare Metal Introspection Service' + ) } + + end + + describe 'when disabling user and user role configuration' do + + let :params do + { + :password => 'ironic_password', + :configure_user => false, + :configure_user_role => false + } + end + + it { is_expected.not_to contain_keystone_user('ironic-inspector') } + + it { is_expected.not_to contain_keystone_user_role('ironic-inspector@services') } + + it { is_expected.to contain_keystone_service('ironic-inspector::baremetal-introspection').with( + :ensure => 'present', + :type => 'baremetal-introspection', + :description => 'Bare Metal Introspection Service' + ) } + + end end - describe 'when overriding auth name' do - let :params do - { :password => 'foo', - :auth_name => 'inspecty' } + on_supported_os({ + :supported_os => OSDefaults.get_supported_os + }).each do |os,facts| + context "on #{os}" do + let (:facts) do + facts.merge(OSDefaults.get_facts()) + end + + it_behaves_like 'ironic keystone auth inspector' end - - it { is_expected.to contain_keystone_user('inspecty') } - it { is_expected.to contain_keystone_user_role('inspecty@services') } - it { is_expected.to contain_keystone_service('inspecty::baremetal-introspection') } - it { is_expected.to contain_keystone_endpoint('RegionOne/inspecty::baremetal-introspection') } - end - - describe 'when overriding service name' do - let :params do - { - :service_name => 'inspector_service', - :password => 'ironic_password', - } - end - - it { is_expected.to contain_keystone_user('ironic-inspector') } - it { is_expected.to contain_keystone_user_role('ironic-inspector@services') } - it { is_expected.to contain_keystone_service('inspector_service::baremetal-introspection') } - it { is_expected.to contain_keystone_endpoint('RegionOne/inspector_service::baremetal-introspection') } - end - - describe 'when disabling user configuration' do - - let :params do - { - :password => 'ironic_password', - :configure_user => false - } - end - - it { is_expected.not_to contain_keystone_user('ironic-inspector') } - - it { is_expected.to contain_keystone_user_role('ironic-inspector@services') } - - it { is_expected.to contain_keystone_service('ironic-inspector::baremetal-introspection').with( - :ensure => 'present', - :type => 'baremetal-introspection', - :description => 'Bare Metal Introspection Service' - ) } - - end - - describe 'when disabling user and user role configuration' do - - let :params do - { - :password => 'ironic_password', - :configure_user => false, - :configure_user_role => false - } - end - - it { is_expected.not_to contain_keystone_user('ironic-inspector') } - - it { is_expected.not_to contain_keystone_user_role('ironic-inspector@services') } - - it { is_expected.to contain_keystone_service('ironic-inspector::baremetal-introspection').with( - :ensure => 'present', - :type => 'baremetal-introspection', - :description => 'Bare Metal Introspection Service' - ) } - end end diff --git a/spec/classes/ironic_keystone_auth_spec.rb b/spec/classes/ironic_keystone_auth_spec.rb index 681e2e21..e8902d87 100644 --- a/spec/classes/ironic_keystone_auth_spec.rb +++ b/spec/classes/ironic_keystone_auth_spec.rb @@ -22,133 +22,145 @@ require 'spec_helper' describe 'ironic::keystone::auth' do - let :facts do - @default_facts.merge({ :osfamily => 'Debian' }) - end + shared_examples_for 'ironic keystone auth' do - describe 'with default class parameters' do - let :params do - { :password => 'ironic_password', - :tenant => 'foobar' } + describe 'with default class parameters' do + let :params do + { :password => 'ironic_password', + :tenant => 'foobar' } + end + + it { is_expected.to contain_keystone_user('ironic').with( + :ensure => 'present', + :password => 'ironic_password', + ) } + + it { is_expected.to contain_keystone_user_role('ironic@foobar').with( + :ensure => 'present', + :roles => ['admin'] + )} + + it { is_expected.to contain_keystone_service('ironic::baremetal').with( + :ensure => 'present', + :description => 'Ironic Bare Metal Provisioning Service' + ) } + + it { is_expected.to contain_keystone_endpoint('RegionOne/ironic::baremetal').with( + :ensure => 'present', + :public_url => "http://127.0.0.1:6385", + :admin_url => "http://127.0.0.1:6385", + :internal_url => "http://127.0.0.1:6385" + ) } end - it { is_expected.to contain_keystone_user('ironic').with( - :ensure => 'present', - :password => 'ironic_password', - ) } + describe 'when configuring ironic-server' do + let :pre_condition do + "class { 'ironic::server': auth_password => 'test' }" + end - it { is_expected.to contain_keystone_user_role('ironic@foobar').with( - :ensure => 'present', - :roles => ['admin'] - )} + let :params do + { :password => 'ironic_password', + :tenant => 'foobar' } + end - it { is_expected.to contain_keystone_service('ironic::baremetal').with( - :ensure => 'present', - :description => 'Ironic Bare Metal Provisioning Service' - ) } - - it { is_expected.to contain_keystone_endpoint('RegionOne/ironic::baremetal').with( - :ensure => 'present', - :public_url => "http://127.0.0.1:6385", - :admin_url => "http://127.0.0.1:6385", - :internal_url => "http://127.0.0.1:6385" - ) } - end - - describe 'when configuring ironic-server' do - let :pre_condition do - "class { 'ironic::server': auth_password => 'test' }" + #FIXME it { should contain_keystone_endpoint('RegionOne/ironic').with_notify('Service[ironic-server]') } end - let :params do - { :password => 'ironic_password', - :tenant => 'foobar' } - end + describe 'with endpoint parameters' do + let :params do + { :password => 'ironic_password', + :public_url => 'https://10.0.0.10:6385', + :admin_url => 'https://10.0.0.11:6385', + :internal_url => 'https://10.0.0.11:6385' } + end - #FIXME it { should contain_keystone_endpoint('RegionOne/ironic').with_notify('Service[ironic-server]') } - end - - describe 'with endpoint parameters' do - let :params do - { :password => 'ironic_password', + it { is_expected.to contain_keystone_endpoint('RegionOne/ironic::baremetal').with( + :ensure => 'present', :public_url => 'https://10.0.0.10:6385', :admin_url => 'https://10.0.0.11:6385', - :internal_url => 'https://10.0.0.11:6385' } + :internal_url => 'https://10.0.0.11:6385' + ) } end - it { is_expected.to contain_keystone_endpoint('RegionOne/ironic::baremetal').with( - :ensure => 'present', - :public_url => 'https://10.0.0.10:6385', - :admin_url => 'https://10.0.0.11:6385', - :internal_url => 'https://10.0.0.11:6385' - ) } - end + describe 'when overriding auth name' do + let :params do + { :password => 'foo', + :auth_name => 'ironicy' } + end - describe 'when overriding auth name' do - let :params do - { :password => 'foo', - :auth_name => 'ironicy' } + it { is_expected.to contain_keystone_user('ironicy') } + it { is_expected.to contain_keystone_user_role('ironicy@services') } + it { is_expected.to contain_keystone_service('ironic::baremetal') } + it { is_expected.to contain_keystone_endpoint('RegionOne/ironic::baremetal') } end - it { is_expected.to contain_keystone_user('ironicy') } - it { is_expected.to contain_keystone_user_role('ironicy@services') } - it { is_expected.to contain_keystone_service('ironic::baremetal') } - it { is_expected.to contain_keystone_endpoint('RegionOne/ironic::baremetal') } - end + describe 'when overriding service name' do + let :params do + { + :service_name => 'ironic_service', + :password => 'ironic_password', + } + end - describe 'when overriding service name' do - let :params do - { - :service_name => 'ironic_service', - :password => 'ironic_password', - } + it { is_expected.to contain_keystone_user('ironic') } + it { is_expected.to contain_keystone_user_role('ironic@services') } + it { is_expected.to contain_keystone_service('ironic_service::baremetal') } + it { is_expected.to contain_keystone_endpoint('RegionOne/ironic_service::baremetal') } end - it { is_expected.to contain_keystone_user('ironic') } - it { is_expected.to contain_keystone_user_role('ironic@services') } - it { is_expected.to contain_keystone_service('ironic_service::baremetal') } - it { is_expected.to contain_keystone_endpoint('RegionOne/ironic_service::baremetal') } - end + describe 'when disabling user configuration' do - describe 'when disabling user configuration' do + let :params do + { + :password => 'ironic_password', + :configure_user => false + } + end + + it { is_expected.not_to contain_keystone_user('ironic') } + + it { is_expected.to contain_keystone_user_role('ironic@services') } + + it { is_expected.to contain_keystone_service('ironic::baremetal').with( + :ensure => 'present', + :description => 'Ironic Bare Metal Provisioning Service' + ) } - let :params do - { - :password => 'ironic_password', - :configure_user => false - } end - it { is_expected.not_to contain_keystone_user('ironic') } + describe 'when disabling user and user role configuration' do - it { is_expected.to contain_keystone_user_role('ironic@services') } + let :params do + { + :password => 'ironic_password', + :configure_user => false, + :configure_user_role => false + } + end - it { is_expected.to contain_keystone_service('ironic::baremetal').with( - :ensure => 'present', - :description => 'Ironic Bare Metal Provisioning Service' - ) } + it { is_expected.not_to contain_keystone_user('ironic') } + + it { is_expected.not_to contain_keystone_user_role('ironic@services') } + + it { is_expected.to contain_keystone_service('ironic::baremetal').with( + :ensure => 'present', + :description => 'Ironic Bare Metal Provisioning Service' + ) } + + end end - describe 'when disabling user and user role configuration' do + on_supported_os({ + :supported_os => OSDefaults.get_supported_os + }).each do |os,facts| + context "on #{os}" do + let (:facts) do + facts.merge(OSDefaults.get_facts()) + end - let :params do - { - :password => 'ironic_password', - :configure_user => false, - :configure_user_role => false - } + it_behaves_like 'ironic keystone auth' end - - it { is_expected.not_to contain_keystone_user('ironic') } - - it { is_expected.not_to contain_keystone_user_role('ironic@services') } - - it { is_expected.to contain_keystone_service('ironic::baremetal').with( - :ensure => 'present', - :description => 'Ironic Bare Metal Provisioning Service' - ) } - end end diff --git a/spec/classes/ironic_logging_spec.rb b/spec/classes/ironic_logging_spec.rb index 06a2e85a..f61ee4a6 100644 --- a/spec/classes/ironic_logging_spec.rb +++ b/spec/classes/ironic_logging_spec.rb @@ -120,20 +120,17 @@ describe 'ironic::logging' do } end - context 'on Debian platforms' do - let :facts do - @default_facts.merge({ :osfamily => 'Debian' }) + on_supported_os({ + :supported_os => OSDefaults.get_supported_os + }).each do |os,facts| + context "on #{os}" do + let (:facts) do + facts.merge!(OSDefaults.get_facts()) + end + + it_behaves_like 'ironic-logging' + end - - it_configures 'ironic-logging' - end - - context 'on RedHat platforms' do - let :facts do - @default_facts.merge({ :osfamily => 'RedHat' }) - end - - it_configures 'ironic-logging' end end diff --git a/spec/classes/ironic_policy_spec.rb b/spec/classes/ironic_policy_spec.rb index 14111afe..69d740f8 100644 --- a/spec/classes/ironic_policy_spec.rb +++ b/spec/classes/ironic_policy_spec.rb @@ -32,7 +32,7 @@ describe 'ironic::policy' do facts.merge!(OSDefaults.get_facts()) end - it_configures 'ironic policies' + it_behaves_like 'ironic policies' end end diff --git a/spec/classes/ironic_pxe_spec.rb b/spec/classes/ironic_pxe_spec.rb index 41325487..87ef3cb1 100644 --- a/spec/classes/ironic_pxe_spec.rb +++ b/spec/classes/ironic_pxe_spec.rb @@ -123,28 +123,17 @@ describe 'ironic::pxe' do end end - context 'on Debian platforms' do - let :facts do - @default_facts.merge({ - :osfamily => 'Debian', - :operatingsystem => 'Debian', - :operatingsystemrelease => '7.0' - }) + on_supported_os({ + :supported_os => OSDefaults.get_supported_os + }).each do |os,facts| + context "on #{os}" do + let (:facts) do + facts.merge!(OSDefaults.get_facts()) + end + + it_behaves_like 'ironic pxe' + end - - it_configures 'ironic pxe' - end - - context 'on RedHat platforms' do - let :facts do - @default_facts.merge({ - :osfamily => 'RedHat', - :operatingsystem => 'CentOS', - :operatingsystemrelease => '7.2.1511' - }) - end - - it_configures 'ironic pxe' end end diff --git a/spec/classes/ironic_wsgi_apache_spec.rb b/spec/classes/ironic_wsgi_apache_spec.rb index 7964424a..c486ee6d 100644 --- a/spec/classes/ironic_wsgi_apache_spec.rb +++ b/spec/classes/ironic_wsgi_apache_spec.rb @@ -2,23 +2,15 @@ require 'spec_helper' describe 'ironic::wsgi::apache' do - let :global_facts do - OSDefaults.get_facts({ - :os_workers => 8, - :concat_basedir => '/var/lib/puppet/concat', - :fqdn => 'some.host.tld' - }) - end - shared_examples_for 'apache serving ironic with mod_wsgi' do - it { is_expected.to contain_service('httpd').with_name(platform_parameters[:httpd_service_name]) } + it { is_expected.to contain_service('httpd').with_name(platform_params[:httpd_service_name]) } it { is_expected.to contain_class('ironic::params') } it { is_expected.to contain_class('apache') } it { is_expected.to contain_class('apache::mod::wsgi') } describe 'with default parameters' do - it { is_expected.to contain_file("#{platform_parameters[:wsgi_script_path]}").with( + it { is_expected.to contain_file("#{platform_params[:wsgi_script_path]}").with( 'ensure' => 'directory', 'owner' => 'ironic', 'group' => 'ironic', @@ -28,28 +20,28 @@ describe 'ironic::wsgi::apache' do it { is_expected.to contain_file('ironic_wsgi').with( 'ensure' => 'file', - 'path' => "#{platform_parameters[:wsgi_script_path]}/app", - 'source' => "#{platform_parameters[:wsgi_script_source]}", + 'path' => "#{platform_params[:wsgi_script_path]}/app", + 'source' => "#{platform_params[:wsgi_script_source]}", 'owner' => 'ironic', 'group' => 'ironic', 'mode' => '0644' )} - it { is_expected.to contain_file('ironic_wsgi').that_requires("File[#{platform_parameters[:wsgi_script_path]}]") } + it { is_expected.to contain_file('ironic_wsgi').that_requires("File[#{platform_params[:wsgi_script_path]}]") } it { is_expected.to contain_apache__vhost('ironic_wsgi').with( 'servername' => 'some.host.tld', 'ip' => nil, 'port' => '6385', - 'docroot' => "#{platform_parameters[:wsgi_script_path]}", + 'docroot' => "#{platform_params[:wsgi_script_path]}", 'docroot_owner' => 'ironic', 'docroot_group' => 'ironic', 'ssl' => 'true', 'wsgi_daemon_process' => 'ironic', 'wsgi_process_group' => 'ironic', - 'wsgi_script_aliases' => { '/' => "#{platform_parameters[:wsgi_script_path]}/app" }, + 'wsgi_script_aliases' => { '/' => "#{platform_params[:wsgi_script_path]}/app" }, 'require' => 'File[ironic_wsgi]' )} - it { is_expected.to contain_concat("#{platform_parameters[:httpd_ports_file]}") } + it { is_expected.to contain_concat("#{platform_params[:httpd_ports_file]}") } end describe 'when overriding parameters using different ports' do @@ -67,58 +59,54 @@ describe 'ironic::wsgi::apache' do 'servername' => 'dummy.host', 'ip' => '10.42.51.1', 'port' => '12345', - 'docroot' => "#{platform_parameters[:wsgi_script_path]}", + 'docroot' => "#{platform_params[:wsgi_script_path]}", 'docroot_owner' => 'ironic', 'docroot_group' => 'ironic', 'ssl' => 'false', 'wsgi_daemon_process' => 'ironic', 'wsgi_process_group' => 'ironic', - 'wsgi_script_aliases' => { '/' => "#{platform_parameters[:wsgi_script_path]}/app" }, + 'wsgi_script_aliases' => { '/' => "#{platform_params[:wsgi_script_path]}/app" }, 'require' => 'File[ironic_wsgi]' )} - it { is_expected.to contain_concat("#{platform_parameters[:httpd_ports_file]}") } + it { is_expected.to contain_concat("#{platform_params[:httpd_ports_file]}") } end end - context 'on RedHat platforms' do - let :facts do - global_facts.merge({ - :osfamily => 'RedHat', - :operatingsystemrelease => '7.0' - }) - end + on_supported_os({ + :supported_os => OSDefaults.get_supported_os + }).each do |os,facts| + context "on #{os}" do + let (:facts) do + facts.merge(OSDefaults.get_facts({ + :os_workers => 8, + :concat_basedir => '/var/lib/puppet/concat', + :fqdn => 'some.host.tld' + })) + end - let :platform_parameters do - { - :httpd_service_name => 'httpd', - :httpd_ports_file => '/etc/httpd/conf/ports.conf', - :wsgi_script_path => '/var/www/cgi-bin/ironic', - :wsgi_script_source => '/usr/lib/python2.7/site-packages/ironic/api/app.wsgi', - } - end + let :platform_params do + case facts[:osfamily] + when 'Debian' + { + :httpd_service_name => 'apache2', + :httpd_ports_file => '/etc/apache2/ports.conf', + :wsgi_script_path => '/usr/lib/cgi-bin/ironic', + :wsgi_script_source => '/usr/lib/python2.7/dist-packages/ironic/api/app.wsgi', + } + when 'RedHat' + { + :httpd_service_name => 'httpd', + :httpd_ports_file => '/etc/httpd/conf/ports.conf', + :wsgi_script_path => '/var/www/cgi-bin/ironic', + :wsgi_script_source => '/usr/lib/python2.7/site-packages/ironic/api/app.wsgi', + } + end + end - it_configures 'apache serving ironic with mod_wsgi' + it_behaves_like 'apache serving ironic with mod_wsgi' + + end end - context 'on Debian platforms' do - let :facts do - global_facts.merge({ - :osfamily => 'Debian', - :operatingsystem => 'Debian', - :operatingsystemrelease => '7.0' - }) - end - - let :platform_parameters do - { - :httpd_service_name => 'apache2', - :httpd_ports_file => '/etc/apache2/ports.conf', - :wsgi_script_path => '/usr/lib/cgi-bin/ironic', - :wsgi_script_source => '/usr/lib/python2.7/dist-packages/ironic/api/app.wsgi', - } - end - - it_configures 'apache serving ironic with mod_wsgi' - end end