diff --git a/spec/classes/designate_agent_spec.rb b/spec/classes/designate_agent_spec.rb index 5c74454c..7dad14a1 100644 --- a/spec/classes/designate_agent_spec.rb +++ b/spec/classes/designate_agent_spec.rb @@ -26,6 +26,7 @@ describe 'designate::agent' do ) end + it 'configures designate-agent with default parameters' do is_expected.to contain_designate_config('service:agent/backend_driver').with_value('bind9') end @@ -37,53 +38,45 @@ describe 'designate::agent' do end end end + + context 'with custom package name' do + before do + params.merge!({ :agent_package_name => 'designate-agent-custom-name' }) + end + + it 'configures using custom name' do + is_expected.to contain_package('designate-agent').with( + :name => 'designate-agent-custom-name', + :ensure => 'present', + :tag => ['openstack', 'designate-package'], + ) + end + end end - context 'on Debian platforms' do - let :facts do - { :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 + + let(:platform_params) do + case facts[:osfamily] + when 'Debian' + { + :agent_package_name => 'designate-agent', + :agent_service_name => 'designate-agent' + } + when 'RedHat' + { + :agent_package_name => 'openstack-designate-agent', + :agent_service_name => 'openstack-designate-agent' + } + end + end + it_behaves_like 'designate-agent' end - - let :platform_params do - { - :agent_package_name => 'designate-agent', - :agent_service_name => 'designate-agent' - } - end - - it_configures 'designate-agent' - end - - context 'on RedHat platforms' do - let :facts do - { :osfamily => 'RedHat' } - end - - let :platform_params do - { - :agent_package_name => 'openstack-designate-agent', - :agent_service_name => 'openstack-designate-agent' - } - end - - it_configures 'designate-agent' - end - - context 'with custom package name' do - let :facts do - { :osfamily => 'RedHat' } - end - - let :platform_params do - { :agent_package_name => 'designate-agent-custom-name', - :agent_service_name => 'openstack-designate-agent' - } - end - - before do - params.merge!({ :agent_package_name => 'designate-agent-custom-name' }) - end - - it_configures 'designate-agent' end end diff --git a/spec/classes/designate_api_spec.rb b/spec/classes/designate_api_spec.rb index 0cb87b04..87ca5d72 100644 --- a/spec/classes/designate_api_spec.rb +++ b/spec/classes/designate_api_spec.rb @@ -51,53 +51,45 @@ describe 'designate::api' do end end end + + context 'with custom package name' do + before do + params.merge!({ :api_package_name => 'designate-api-custom-name' }) + end + + it 'configures using custom name' do + is_expected.to contain_package('designate-api').with( + :name => 'designate-api-custom-name', + :ensure => 'present', + :tag => ['openstack', 'designate-package'], + ) + end + end end - context 'on Debian platforms' do - let :facts do - { :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 + + let(:platform_params) do + case facts[:osfamily] + when 'Debian' + { + :api_package_name => 'designate-api', + :api_service_name => 'designate-api' + } + when 'RedHat' + { + :api_package_name => 'openstack-designate-api', + :api_service_name => 'openstack-designate-api' + } + end + end + it_behaves_like 'designate-api' end - - let :platform_params do - { - :api_package_name => 'designate-api', - :api_service_name => 'designate-api' - } - end - - it_configures 'designate-api' - end - - context 'on RedHat platforms' do - let :facts do - { :osfamily => 'RedHat' } - end - - let :platform_params do - { - :api_package_name => 'openstack-designate-api', - :api_service_name => 'openstack-designate-api' - } - end - - it_configures 'designate-api' - end - - context 'with custom package name' do - let :facts do - { :osfamily => 'RedHat' } - end - - let :platform_params do - { :api_package_name => 'designate-api-custom-name', - :api_service_name => 'openstack-designate-api' - } - end - - before do - params.merge!({ :api_package_name => 'designate-api-custom-name' }) - end - - it_configures 'designate-api' end end diff --git a/spec/classes/designate_backend_bind9_spec.rb b/spec/classes/designate_backend_bind9_spec.rb index 22994d10..d4323388 100644 --- a/spec/classes/designate_backend_bind9_spec.rb +++ b/spec/classes/designate_backend_bind9_spec.rb @@ -5,44 +5,61 @@ require 'spec_helper' describe 'designate::backend::bind9' do - let :facts do - { - :osfamily => 'Debian', - :concat_basedir => '/var/lib/puppet/concat', - } - end + shared_examples 'designate-backend-bind9' do + context 'with default params' do + it 'configures designate backend bind9 with default parameters' do + is_expected.to contain_designate_config('backend:bind9/rndc_host').with_value('127.0.0.1') + is_expected.to contain_designate_config('backend:bind9/rndc_port').with_value('953') + is_expected.to contain_designate_config('backend:bind9/rndc_config_file').with_value('/etc/rndc.conf') + is_expected.to contain_designate_config('backend:bind9/rndc_key_file').with_value('/etc/rndc.key') + is_expected.to contain_file_line('dns allow-new-zones') + end + end - context 'with default params' do - it 'configures designate backend bind9 with default parameters' do - is_expected.to contain_designate_config('backend:bind9/rndc_host').with_value('127.0.0.1') - is_expected.to contain_designate_config('backend:bind9/rndc_port').with_value('953') - is_expected.to contain_designate_config('backend:bind9/rndc_config_file').with_value('/etc/rndc.conf') - is_expected.to contain_designate_config('backend:bind9/rndc_key_file').with_value('/etc/rndc.key') - is_expected.to contain_file_line('dns allow-new-zones') + context 'when overriding rndc_config_file' do + let :params do + { :rndc_config_file => '/srv/designate/rndc.conf' } + end + + it 'configures designate bind9 backend with custom rndc_config_file' do + is_expected.to contain_designate_config('backend:bind9/rndc_config_file').with_value(params[:rndc_config_file]) + end + end + + context 'when overriding rndc_host and rndc_port' do + let :params do + { + :rndc_host => '10.0.0.42', + :rndc_port => '1337' + } + end + + it 'configures designate bind9 backend with custom rndc_port and rndc_host' do + is_expected.to contain_designate_config('backend:bind9/rndc_port').with_value(params[:rndc_port]) + is_expected.to contain_designate_config('backend:bind9/rndc_host').with_value(params[:rndc_host]) + end end end - context 'when overriding rndc_config_file' do - let :params do - { :rndc_config_file => '/srv/designate/rndc.conf' } - 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', + })) + end - it 'configures designate bind9 backend with custom rndc_config_file' do - is_expected.to contain_designate_config('backend:bind9/rndc_config_file').with_value(params[:rndc_config_file]) - end - end - - context 'when overriding rndc_host and rndc_port' do - let :params do - { - :rndc_host => '10.0.0.42', - :rndc_port => '1337' - } - end - - it 'configures designate bind9 backend with custom rndc_port and rndc_host' do - is_expected.to contain_designate_config('backend:bind9/rndc_port').with_value(params[:rndc_port]) - is_expected.to contain_designate_config('backend:bind9/rndc_host').with_value(params[:rndc_host]) + let(:platform_params) do + case facts[:osfamily] + when 'Debian' + { } + when 'RedHat' + { } + end + end + it_behaves_like 'designate-backend-bind9' end end diff --git a/spec/classes/designate_backend_powerdns_spec.rb b/spec/classes/designate_backend_powerdns_spec.rb index a79f5a1f..9fbcf8b3 100644 --- a/spec/classes/designate_backend_powerdns_spec.rb +++ b/spec/classes/designate_backend_powerdns_spec.rb @@ -5,28 +5,46 @@ require 'spec_helper' describe 'designate::backend::powerdns' do - let :facts do - { :osfamily => 'Debian' } - end - let :params do { :database_connection => 'mysql://dbserver' } end - context 'with default params' do - it 'configures designate backend powerdns with default parameters' do - is_expected.to contain_designate_config('backend:powerdns/connection').with_value('mysql://dbserver') - is_expected.to contain_designate_config('backend:powerdns/use_db_reconnect').with_value(true) - is_expected.to contain_file('/var/lib/designate').with( - 'ensure' => 'directory', - 'owner' => 'designate', - 'group' => 'designate', - 'mode' => '0750', - ) - end + shared_examples 'designate-backend-powerdns' do + context 'with default params' do + it 'configures designate backend powerdns with default parameters' do + is_expected.to contain_designate_config('backend:powerdns/connection').with_value('mysql://dbserver') + is_expected.to contain_designate_config('backend:powerdns/use_db_reconnect').with_value(true) + is_expected.to contain_file('/var/lib/designate').with( + 'ensure' => 'directory', + 'owner' => 'designate', + 'group' => 'designate', + 'mode' => '0750', + ) + end - it 'includes designate::db::powerdns::sync' do - is_expected.to contain_class('designate::db::powerdns::sync') + it 'includes designate::db::powerdns::sync' do + is_expected.to contain_class('designate::db::powerdns::sync') + end + 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()) + end + + let(:platform_params) do + case facts[:osfamily] + when 'Debian' + { } + when 'RedHat' + { } + end + end + it_behaves_like 'designate-backend-powerdns' end end diff --git a/spec/classes/designate_central_spec.rb b/spec/classes/designate_central_spec.rb index a8fce593..db4da7da 100644 --- a/spec/classes/designate_central_spec.rb +++ b/spec/classes/designate_central_spec.rb @@ -42,53 +42,46 @@ describe 'designate::central' do end end end + + context 'with custom package name' do + before do + params.merge!({ :central_package_name => 'designate-central-custom-name' }) + end + + it 'configures using custom name' do + is_expected.to contain_package('designate-central').with( + :name => 'designate-central-custom-name', + :ensure => 'present', + :tag => ['openstack', 'designate-package'], + ) + end + end end - context 'on Debian platforms' do - let :facts do - { :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 - let :platform_params do - { - :central_package_name => 'designate-central', - :central_service_name => 'designate-central' - } + let(:platform_params) do + case facts[:osfamily] + when 'Debian' + { + :central_package_name => 'designate-central', + :central_service_name => 'designate-central' + } + when 'RedHat' + { + :central_package_name => 'openstack-designate-central', + :central_service_name => 'openstack-designate-central' + } + end + end + it_behaves_like 'designate-central' end - - it_configures 'designate-central' end - context 'on RedHat platforms' do - let :facts do - { :osfamily => 'RedHat' } - end - - let :platform_params do - { - :central_package_name => 'openstack-designate-central', - :central_service_name => 'openstack-designate-central' - } - end - - it_configures 'designate-central' - end - - context 'with custom package name' do - let :facts do - { :osfamily => 'RedHat' } - end - - let :platform_params do - { :central_package_name => 'designate-central-custom-name', - :central_service_name => 'openstack-designate-central' - } - end - - before do - params.merge!({ :central_package_name => 'designate-central-custom-name' }) - end - - it_configures 'designate-central' - end end diff --git a/spec/classes/designate_client_spec.rb b/spec/classes/designate_client_spec.rb index 7e2c5104..7000e07a 100644 --- a/spec/classes/designate_client_spec.rb +++ b/spec/classes/designate_client_spec.rb @@ -4,57 +4,56 @@ require 'spec_helper' describe 'designate::client' do + let :params do + { } + end shared_examples 'designate-client' do - it { is_expected.to contain_class('designate::params') } + context 'with default parameters' do + it { is_expected.to contain_class('designate::params') } - it 'installs designate client package' do - is_expected.to contain_package('python-designateclient').with( - :ensure => 'present', - :name => platform_params[:client_package_name], - :tag => 'openstack' - ) + it 'installs designate client package' do + is_expected.to contain_package('python-designateclient').with( + :ensure => 'present', + :name => platform_params[:client_package_name], + :tag => 'openstack' + ) + end + end + + context 'with custom package name' do + before do + params.merge!({ :client_package_name => 'designate-client-custom-name' }) + end + + it 'configures using custom name' do + is_expected.to contain_package('python-designateclient').with( + :ensure => 'present', + :name => 'designate-client-custom-name', + :tag => 'openstack', + ) + end end end - context 'on Debian platforms' do - let :facts do - { :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 + + let(:platform_params) do + case facts[:osfamily] + when 'Debian' + { :client_package_name => 'python-designateclient' } + when 'RedHat' + { :client_package_name => 'python-designateclient' } + end + end + it_behaves_like 'designate-client' end - - let :platform_params do - { :client_package_name => 'python-designateclient' } - end - - it_configures 'designate-client' - end - - context 'on RedHat platforms' do - let :facts do - { :osfamily => 'RedHat' } - end - - let :platform_params do - { :client_package_name => 'python-designateclient' } - end - - it_configures 'designate-client' - end - - context 'with custom package name' do - let :facts do - { :osfamily => 'RedHat' } - end - - let :platform_params do - { :client_package_name => 'designate-client-custom-name' } - end - - let :params do - { :client_package_name => 'designate-client-custom-name' } - end - - it_configures 'designate-client' end end diff --git a/spec/classes/designate_config_spec.rb b/spec/classes/designate_config_spec.rb index 849f6a1b..1e91f246 100644 --- a/spec/classes/designate_config_spec.rb +++ b/spec/classes/designate_config_spec.rb @@ -1,7 +1,6 @@ require 'spec_helper' describe 'designate::config' do - let :params do { :designate_config => { 'DEFAULT/foo' => { 'value' => 'fooValue' }, @@ -23,23 +22,38 @@ describe 'designate::config' do } end - it 'configures arbitrary designate configurations' do - is_expected.to contain_designate_config('DEFAULT/foo').with_value('fooValue') - is_expected.to contain_designate_config('DEFAULT/bar').with_value('barValue') - is_expected.to contain_designate_config('DEFAULT/baz').with_ensure('absent') + + shared_examples_for 'designate-config' do + it 'configures arbitrary designate configurations' do + is_expected.to contain_designate_config('DEFAULT/foo').with_value('fooValue') + is_expected.to contain_designate_config('DEFAULT/bar').with_value('barValue') + is_expected.to contain_designate_config('DEFAULT/baz').with_ensure('absent') + end + + it 'configures arbitrary designate api-paste configurations' do + is_expected.to contain_designate_api_paste_ini('DEFAULT/foo2').with_value('fooValue') + is_expected.to contain_designate_api_paste_ini('DEFAULT/bar2').with_value('barValue') + is_expected.to contain_designate_api_paste_ini('DEFAULT/baz2').with_ensure('absent') + end + + it 'configures arbitrary designate rootwrap configurations' do + is_expected.to contain_designate_rootwrap_config('DEFAULT/filters_path').with_value('/etc/designate/rootwrap.d,/usr/share/designate/rootwrap') + is_expected.to contain_designate_rootwrap_config('DEFAULT/exec_dirs').with_value('/sbin,/usr/sbin,/bin,/usr/bin') + is_expected.to contain_designate_rootwrap_config('DEFAULT/use_syslog').with_value('False') + is_expected.to contain_designate_rootwrap_config('DEFAULT/syslog_log_facility').with_value('syslog') + is_expected.to contain_designate_rootwrap_config('DEFAULT/syslog_log_level').with_value('ERROR') + end end - it 'configures arbitrary designate api-paste configurations' do - is_expected.to contain_designate_api_paste_ini('DEFAULT/foo2').with_value('fooValue') - is_expected.to contain_designate_api_paste_ini('DEFAULT/bar2').with_value('barValue') - is_expected.to contain_designate_api_paste_ini('DEFAULT/baz2').with_ensure('absent') - 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 'configures arbitrary designate rootwrap configurations' do - is_expected.to contain_designate_rootwrap_config('DEFAULT/filters_path').with_value('/etc/designate/rootwrap.d,/usr/share/designate/rootwrap') - is_expected.to contain_designate_rootwrap_config('DEFAULT/exec_dirs').with_value('/sbin,/usr/sbin,/bin,/usr/bin') - is_expected.to contain_designate_rootwrap_config('DEFAULT/use_syslog').with_value('False') - is_expected.to contain_designate_rootwrap_config('DEFAULT/syslog_log_facility').with_value('syslog') - is_expected.to contain_designate_rootwrap_config('DEFAULT/syslog_log_level').with_value('ERROR') + it_behaves_like 'designate-config' + end end end diff --git a/spec/classes/designate_db_mysql_spec.rb b/spec/classes/designate_db_mysql_spec.rb index 1d2d796c..09cdaaf1 100644 --- a/spec/classes/designate_db_mysql_spec.rb +++ b/spec/classes/designate_db_mysql_spec.rb @@ -1,4 +1,3 @@ -require 'spec_helper' describe 'designate::db::mysql' do @@ -10,11 +9,7 @@ describe 'designate::db::mysql' do { :password => "qwerty" } end - context 'on a Debian osfamily' do - let :facts do - { :osfamily => "Debian" } - end - + shared_examples_for 'designate-db-mysql' do context 'with only required parameters' do let :params do required_params @@ -60,44 +55,25 @@ describe 'designate::db::mysql' do it { is_expected.to contain_openstacklib__db__mysql('designate').with_charset(params[:charset]) } end + + context 'overriding allowed_hosts param with array' do + let :params do + { :allowed_hosts => ['127.0.0.1','%'] }.merge(required_params) + end + + it { is_expected.to contain_openstacklib__db__mysql('designate').with_allowed_hosts(params[:allowed_hosts]) } + end end - describe "overriding allowed_hosts param to array" do - let :facts do - { :osfamily => "Debian" } - end - let :params do - { - :password => 'designatepass', - :allowed_hosts => ['127.0.0.1','%'] - } - 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 - end - - describe "overriding allowed_hosts param to string" do - let :facts do - { :osfamily => 'RedHat' } + it_behaves_like 'designate-db-mysql' end - let :params do - { - :password => 'designatepass2', - :allowed_hosts => '192.168.1.1' - } - end - - end - - describe "overriding allowed_hosts param equals to host param " do - let :facts do - { :osfamily => 'RedHat' } - end - let :params do - { - :password => 'designatepass2', - :allowed_hosts => '127.0.0.1' - } - end - end end diff --git a/spec/classes/designate_db_powerdns_mysql_spec.rb b/spec/classes/designate_db_powerdns_mysql_spec.rb index a2a74962..3f273a98 100644 --- a/spec/classes/designate_db_powerdns_mysql_spec.rb +++ b/spec/classes/designate_db_powerdns_mysql_spec.rb @@ -10,12 +10,9 @@ describe 'designate::db::powerdns::mysql' do { :password => "qwerty" } end - context 'on a Debian osfamily' do - let :facts do - { :osfamily => "Debian" } - end - context 'with only required parameters' do + shared_examples_for 'designate-db-powerdns-mysql' do + context 'with default params' do let :params do required_params end @@ -31,73 +28,36 @@ describe 'designate::db::powerdns::mysql' do let :params do { :charset => 'latin1' }.merge(required_params) end - it { is_expected.to contain_openstacklib__db__mysql('powerdns').with_charset(params[:charset]) } end - end - context 'on a RedHat osfamily' do - let :facts do - { :osfamily => 'RedHat' } - end - - context 'with only required parameters' do + context 'overriding allowed_hosts param with string' do let :params do - required_params + { :allowed_hosts => '127.0.0.1' }.merge(required_params) end - it { is_expected.to contain_openstacklib__db__mysql('powerdns').with( - :user => 'powerdns', - :password_hash => '*AA1420F182E88B9E5F874F6FBE7459291E8F4601', - :charset => 'utf8' - )} + it { is_expected.to contain_openstacklib__db__mysql('powerdns').with_allowed_hosts(params[:allowed_hosts]) } end - context 'when overriding charset' do + context 'overriding allowed_hosts param with array' do let :params do - { :charset => 'latin1' }.merge(required_params) + { :allowed_hosts => ['127.0.0.1','%'] }.merge(required_params) end - it { is_expected.to contain_openstacklib__db__mysql('powerdns').with_charset(params[:charset]) } + it { is_expected.to contain_openstacklib__db__mysql('powerdns').with_allowed_hosts(params[:allowed_hosts]) } end end - describe "overriding allowed_hosts param to array" do - let :facts do - { :osfamily => "Debian" } - end - let :params do - { - :password => 'designatepass', - :allowed_hosts => ['127.0.0.1','%'] - } - 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_behaves_like 'designate-db-powerdns-mysql' + end end - describe "overriding allowed_hosts param to string" do - let :facts do - { :osfamily => 'RedHat' } - end - let :params do - { - :password => 'designatepass2', - :allowed_hosts => '192.168.1.1' - } - end - - end - - describe "overriding allowed_hosts param equals to host param " do - let :facts do - { :osfamily => 'RedHat' } - end - let :params do - { - :password => 'designatepass2', - :allowed_hosts => '127.0.0.1' - } - end - - end end diff --git a/spec/classes/designate_db_powerdns_sync_spec.rb b/spec/classes/designate_db_powerdns_sync_spec.rb index 87eac37d..48e44d42 100644 --- a/spec/classes/designate_db_powerdns_sync_spec.rb +++ b/spec/classes/designate_db_powerdns_sync_spec.rb @@ -5,40 +5,50 @@ require 'spec_helper' describe 'designate::db::powerdns::sync' do - let :facts do - { :osfamily => 'Debian' } - end - - it 'runs designate-powerdns-dbsync' do - is_expected.to contain_exec('designate-powerdns-dbsync').with( - :command => 'designate-manage powerdns sync', - :path => '/usr/bin', - :user => 'root', - :refreshonly => 'true', - :logoutput => 'on_failure', - :subscribe => 'Anchor[designate::config::end]', - :notify => 'Anchor[designate::service::begin]', - ) - end - - describe 'overriding extra_params' do - let :params do - { - :extra_params => '--config-file /etc/designate/designate.conf' - } + shared_examples_for 'designate-db-powerdns-sync' do + context 'with default parameters' do + it 'runs designate-powerdns-dbsync' do + is_expected.to contain_exec('designate-powerdns-dbsync').with( + :command => 'designate-manage powerdns sync', + :path => '/usr/bin', + :user => 'root', + :refreshonly => 'true', + :logoutput => 'on_failure', + :subscribe => 'Anchor[designate::config::end]', + :notify => 'Anchor[designate::service::begin]', + ) + end end - it {is_expected.to contain_exec('designate-powerdns-dbsync').with( - :command => 'designate-manage --config-file /etc/designate/designate.conf powerdns sync', - :path => '/usr/bin', - :user => 'root', - :refreshonly => 'true', - :logoutput => 'on_failure', - :subscribe => 'Anchor[designate::config::end]', - :notify => 'Anchor[designate::service::begin]', - ) - } + context 'with parameter overrides' do + let :params do + { + :extra_params => '--config-file /etc/designate/designate.conf' + } + end + it 'runs designate manage with diffent config' do + is_expected.to contain_exec('designate-powerdns-dbsync').with( + :command => 'designate-manage --config-file /etc/designate/designate.conf powerdns sync', + :path => '/usr/bin', + :user => 'root', + :refreshonly => 'true', + :logoutput => 'on_failure', + :subscribe => 'Anchor[designate::config::end]', + :notify => 'Anchor[designate::service::begin]', + ) + end + 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()) + end + it_behaves_like 'designate-db-powerdns-sync' + end + end end diff --git a/spec/classes/designate_db_spec.rb b/spec/classes/designate_db_spec.rb index a63e651c..1b3546a1 100644 --- a/spec/classes/designate_db_spec.rb +++ b/spec/classes/designate_db_spec.rb @@ -60,13 +60,7 @@ describe 'designate::db' do end end - context 'on Debian platforms' do - let :facts do - { :osfamily => 'Debian' } - end - - it_configures 'designate::db' - + shared_examples_for 'designate::db on Debian' do context 'using pymysql driver' do let :params do { :database_connection => 'mysql+pymysql://designate:designate@localhost/designate', } @@ -82,13 +76,8 @@ describe 'designate::db' do end end - context 'on RedHat platforms' do - let :facts do - { :osfamily => 'RedHat' } - end - - it_configures 'designate::db' + shared_examples_for 'designate::db on RedHat' do context 'using pymysql driver' do let :params do { :database_connection => 'mysql+pymysql://designate:designate@localhost/designate', } @@ -98,4 +87,21 @@ describe 'designate::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()) + end + + case facts[:osfamily] + when 'Debian' + it_configures 'designate::db on Debian' + when 'RedHat' + it_configures 'designate::db on RedHat' + end + it_configures 'designate::db' + end + end end diff --git a/spec/classes/designate_db_sync_spec.rb b/spec/classes/designate_db_sync_spec.rb index 3d334e2e..38349dd9 100644 --- a/spec/classes/designate_db_sync_spec.rb +++ b/spec/classes/designate_db_sync_spec.rb @@ -5,40 +5,50 @@ require 'spec_helper' describe 'designate::db::sync' do - let :facts do - { :osfamily => 'Debian' } - end - - it 'runs designate-dbsync' do - is_expected.to contain_exec('designate-dbsync').with( - :command => 'designate-manage database sync', - :path => '/usr/bin', - :user => 'root', - :refreshonly => 'true', - :logoutput => 'on_failure', - :subscribe => 'Anchor[designate::config::end]', - :notify => 'Anchor[designate::service::begin]', - ) - end - - describe 'overriding extra_params' do - let :params do - { - :extra_params => '--config-file /etc/designate/designate.conf' - } + shared_examples_for 'designate-db-sync' do + context 'with default parameters' do + it 'runs designate-db-sync' do + is_expected.to contain_exec('designate-dbsync').with( + :command => 'designate-manage database sync', + :path => '/usr/bin', + :user => 'root', + :refreshonly => 'true', + :logoutput => 'on_failure', + :subscribe => 'Anchor[designate::config::end]', + :notify => 'Anchor[designate::service::begin]', + ) + end end - it {is_expected.to contain_exec('designate-dbsync').with( - :command => 'designate-manage --config-file /etc/designate/designate.conf database sync', - :path => '/usr/bin', - :user => 'root', - :refreshonly => 'true', - :logoutput => 'on_failure', - :subscribe => 'Anchor[designate::config::end]', - :notify => 'Anchor[designate::service::begin]', - ) - } + context 'with parameter overrides' do + let :params do + { + :extra_params => '--config-file /etc/designate/designate.conf' + } + end + it 'runs designate manage with diffent config' do + is_expected.to contain_exec('designate-dbsync').with( + :command => 'designate-manage --config-file /etc/designate/designate.conf database sync', + :path => '/usr/bin', + :user => 'root', + :refreshonly => 'true', + :logoutput => 'on_failure', + :subscribe => 'Anchor[designate::config::end]', + :notify => 'Anchor[designate::service::begin]', + ) + end + 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()) + end + it_behaves_like 'designate-db-sync' + end + end end diff --git a/spec/classes/designate_dns_spec.rb b/spec/classes/designate_dns_spec.rb index 31449880..b2560d25 100644 --- a/spec/classes/designate_dns_spec.rb +++ b/spec/classes/designate_dns_spec.rb @@ -17,33 +17,29 @@ describe 'designate::dns' do end - context 'on Debian platforms' do - let :facts do - { :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 + + let(:params) do + case facts[:osfamily] + when 'Debian' + { + :designatepath => '/var/cache/bind/bind9', + :designatefile => '/var/cache/bind/bind9/zones.config' + } + when 'RedHat' + { + :designatepath => '/var/named/bind9', + :designatefile => '/var/named/bind9/zones.config' + } + end + end + it_behaves_like 'designate-dns' end - - let :params do - { - :designatepath => '/var/cache/bind/bind9', - :designatefile => '/var/cache/bind/bind9/zones.config' - } - end - - it_configures 'designate-dns' - end - - context 'on RedHat platforms' do - let :facts do - { :osfamily => 'RedHat' } - end - - let :params do - { - :designatepath => '/var/named/bind9', - :designatefile => '/var/named/bind9/zones.config' - } - end - - it_configures 'designate-dns' end end diff --git a/spec/classes/designate_init_spec.rb b/spec/classes/designate_init_spec.rb index 4304a9d9..fb7f8272 100644 --- a/spec/classes/designate_init_spec.rb +++ b/spec/classes/designate_init_spec.rb @@ -47,6 +47,18 @@ describe 'designate' do it_configures 'rabbit with HA support' end + context 'with custom package name' do + let :platform_params do + { :common_package_name => 'designate-common-custom-name' } + end + + before do + params.merge!({ :common_package_name => 'designate-common-custom-name' }) + end + + it_configures 'a designate base installation' + end + end shared_examples_for 'a designate base installation' do @@ -157,43 +169,23 @@ describe 'designate' do end - context 'on Debian platforms' do - let :facts do - { :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 + + let(:platform_params) do + case facts[:osfamily] + when 'Debian' + { :common_package_name => 'designate-common' } + when 'RedHat' + { :common_package_name => 'openstack-designate' } + end + end + it_behaves_like 'designate' end - - let :platform_params do - { :common_package_name => 'designate-common' } - end - - it_configures 'designate' - end - - context 'on RedHat platforms' do - let :facts do - { :osfamily => 'RedHat' } - end - - let :platform_params do - { :common_package_name => 'openstack-designate' } - end - - it_configures 'designate' - end - - context 'with custom package name' do - let :facts do - { :osfamily => 'RedHat' } - end - - let :platform_params do - { :common_package_name => 'designate-common-custom-name' } - end - - before do - params.merge!({ :common_package_name => 'designate-common-custom-name' }) - end - - it_configures 'designate' end end diff --git a/spec/classes/designate_keystone_auth_spec.rb b/spec/classes/designate_keystone_auth_spec.rb index 9a06347b..b0434823 100644 --- a/spec/classes/designate_keystone_auth_spec.rb +++ b/spec/classes/designate_keystone_auth_spec.rb @@ -4,107 +4,106 @@ require 'spec_helper' describe 'designate::keystone::auth' do + shared_examples_for 'designate-keystone-auth' do + context 'with default class parameters' do + let :params do + { :password => 'desigpwd', + :tenant => 'fooboozoo' } + end - let :facts do - { :osfamily => 'Debian' } - end + it { is_expected.to contain_keystone_user('designate').with( + :ensure => 'present', + :password => 'desigpwd', + ) } - describe 'with default class parameters' do - let :params do - { :password => 'desigpwd', - :tenant => 'fooboozoo' } + it { is_expected.to contain_keystone_user_role('designate@fooboozoo').with( + :ensure => 'present', + :roles => ['admin'] + )} + + it { is_expected.to contain_keystone_service('designate::dns').with( + :ensure => 'present', + :description => 'Openstack DNSaas Service' + ) } + + it { is_expected.to contain_keystone_endpoint('RegionOne/designate::dns').with( + :ensure => 'present', + :public_url => "http://127.0.0.1:9001/v1", + :admin_url => "http://127.0.0.1:9001/v1", + :internal_url => "http://127.0.0.1:9001/v1" + ) } end - it { is_expected.to contain_keystone_user('designate').with( - :ensure => 'present', - :password => 'desigpwd', - ) } - it { is_expected.to contain_keystone_user_role('designate@fooboozoo').with( - :ensure => 'present', - :roles => ['admin'] - )} + context 'when overriding endpoint URLs' do + let :params do + { :password => 'desigpwd', + :public_url => 'https://10.10.10.10:81/v2', + :internal_url => 'https://10.10.10.11:81/v2', + :admin_url => 'https://10.10.10.12:81/v2' } + end - it { is_expected.to contain_keystone_service('designate::dns').with( - :ensure => 'present', - :description => 'Openstack DNSaas Service' - ) } - - it { is_expected.to contain_keystone_endpoint('RegionOne/designate::dns').with( - :ensure => 'present', - :public_url => "http://127.0.0.1:9001/v1", - :admin_url => "http://127.0.0.1:9001/v1", - :internal_url => "http://127.0.0.1:9001/v1" - ) } - end - - describe 'when configuring designate-server' do - let :pre_condition do - "class { 'designate::server': auth_password => 'test' }" + it { is_expected.to contain_keystone_endpoint('RegionOne/designate::dns').with( + :ensure => 'present', + :public_url => 'https://10.10.10.10:81/v2', + :internal_url => 'https://10.10.10.11:81/v2', + :admin_url => 'https://10.10.10.12:81/v2' + ) } end - let :params do - { :password => 'desigpwd', - :tenant => 'fooboozoo' } + context 'with deprecated endpoint parameters' do + let :params do + { :password => 'desigpwd', + :public_protocol => 'https', + :public_address => '10.10.10.10', + :port => '81', + :internal_address => '10.10.10.11', + :admin_address => '10.10.10.12' } + end + + it { is_expected.to contain_keystone_endpoint('RegionOne/designate::dns').with( + :ensure => 'present', + :public_url => "https://10.10.10.10:81/v1", + :internal_url => "http://10.10.10.11:81/v1", + :admin_url => "http://10.10.10.12:81/v1" + ) } + end + + context 'when overriding auth name' do + let :params do + { :password => 'foo', + :auth_name => 'designate1' } + end + + it { is_expected.to contain_keystone_user('designate1') } + it { is_expected.to contain_keystone_user_role('designate1@services') } + it { is_expected.to contain_keystone_service('designate1::dns') } + it { is_expected.to contain_keystone_endpoint('RegionOne/designate1::dns') } + end + + context 'when overriding service name' do + let :params do + { :service_name => 'designate_service', + :password => 'foo', + :auth_name => 'designate1' } + end + + it { is_expected.to contain_keystone_user('designate1') } + it { is_expected.to contain_keystone_user_role('designate1@services') } + it { is_expected.to contain_keystone_service('designate_service::dns') } + it { is_expected.to contain_keystone_endpoint('RegionOne/designate_service::dns') } end end - describe 'when overriding endpoint URLs' do - let :params do - { :password => 'desigpwd', - :public_url => 'https://10.10.10.10:81/v2', - :internal_url => 'https://10.10.10.11:81/v2', - :admin_url => 'https://10.10.10.12:81/v2' } + 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 'designate-keystone-auth' end - - it { is_expected.to contain_keystone_endpoint('RegionOne/designate::dns').with( - :ensure => 'present', - :public_url => 'https://10.10.10.10:81/v2', - :internal_url => 'https://10.10.10.11:81/v2', - :admin_url => 'https://10.10.10.12:81/v2' - ) } - end - - describe 'with deprecated endpoint parameters' do - let :params do - { :password => 'desigpwd', - :public_protocol => 'https', - :public_address => '10.10.10.10', - :port => '81', - :internal_address => '10.10.10.11', - :admin_address => '10.10.10.12' } - end - - it { is_expected.to contain_keystone_endpoint('RegionOne/designate::dns').with( - :ensure => 'present', - :public_url => "https://10.10.10.10:81/v1", - :internal_url => "http://10.10.10.11:81/v1", - :admin_url => "http://10.10.10.12:81/v1" - ) } - end - - describe 'when overriding auth name' do - let :params do - { :password => 'foo', - :auth_name => 'designate1' } - end - - it { is_expected.to contain_keystone_user('designate1') } - it { is_expected.to contain_keystone_user_role('designate1@services') } - it { is_expected.to contain_keystone_service('designate1::dns') } - it { is_expected.to contain_keystone_endpoint('RegionOne/designate1::dns') } - end - - describe 'when overriding service name' do - let :params do - { :service_name => 'designate_service', - :password => 'foo', - :auth_name => 'designate1' } - end - - it { is_expected.to contain_keystone_user('designate1') } - it { is_expected.to contain_keystone_user_role('designate1@services') } - it { is_expected.to contain_keystone_service('designate_service::dns') } - it { is_expected.to contain_keystone_endpoint('RegionOne/designate_service::dns') } end end diff --git a/spec/classes/designate_logging_spec.rb b/spec/classes/designate_logging_spec.rb index b918649b..65cc1c6b 100644 --- a/spec/classes/designate_logging_spec.rb +++ b/spec/classes/designate_logging_spec.rb @@ -123,20 +123,16 @@ describe 'designate::logging' do } end - context 'on Debian platforms' do - let :facts do - { :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 'designate-logging' end - - it_configures 'designate-logging' - end - - context 'on RedHat platforms' do - let :facts do - { :osfamily => 'RedHat' } - end - - it_configures 'designate-logging' end end diff --git a/spec/classes/designate_policy_spec.rb b/spec/classes/designate_policy_spec.rb index 1762c79e..001967e7 100644 --- a/spec/classes/designate_policy_spec.rb +++ b/spec/classes/designate_policy_spec.rb @@ -23,19 +23,16 @@ describe 'designate::policy' do end end - context 'on Debian platforms' do - let :facts do - { :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_configures 'designate policies' + it_behaves_like 'designate policies' + end end - context 'on RedHat platforms' do - let :facts do - { :osfamily => 'RedHat' } - end - - it_configures 'designate policies' - end end diff --git a/spec/classes/designate_sink_spec.rb b/spec/classes/designate_sink_spec.rb index ded5ea10..89547e9f 100644 --- a/spec/classes/designate_sink_spec.rb +++ b/spec/classes/designate_sink_spec.rb @@ -34,53 +34,46 @@ describe 'designate::sink' do end end end + + context 'with custom package name' do + before :each do + params.merge!({ :sink_package_name => 'designate-sink-custom-name' }) + end + + it 'configures using custom name' do + is_expected.to contain_package('designate-sink').with( + :name => 'designate-sink-custom-name', + :ensure => 'present', + :tag => ['openstack', 'designate-package'], + ) + end + end end - context 'on Debian platforms' do - let :facts do - { :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 - let :platform_params do - { - :sink_package_name => 'designate-sink', - :sink_service_name => 'designate-sink' - } + let(:platform_params) do + case facts[:osfamily] + when 'Debian' + { + :sink_package_name => 'designate-sink', + :sink_service_name => 'designate-sink' + } + when 'RedHat' + { + :sink_package_name => 'openstack-designate-sink', + :sink_service_name => 'openstack-designate-sink' + } + end + end + it_behaves_like 'designate-sink' end - - it_configures 'designate-sink' end - context 'on RedHat platforms' do - let :facts do - { :osfamily => 'RedHat' } - end - - let :platform_params do - { - :sink_package_name => 'openstack-designate-sink', - :sink_service_name => 'openstack-designate-sink' - } - end - - it_configures 'designate-sink' - end - - context 'with custom package name' do - let :facts do - { :osfamily => 'RedHat' } - end - - let :platform_params do - { :sink_package_name => 'designate-sink-custom-name', - :sink_service_name => 'openstack-designate-sink' - } - end - - before do - params.merge!({ :sink_package_name => 'designate-sink-custom-name' }) - end - - it_configures 'designate-sink' - end end