diff --git a/Gemfile b/Gemfile index 571fd65d..4c65317a 100644 --- a/Gemfile +++ b/Gemfile @@ -3,6 +3,7 @@ source 'https://rubygems.org' group :development, :test do gem 'puppetlabs_spec_helper', :require => false gem 'rspec-puppet', '~> 2.1.0', :require => false + gem 'minitest', '~> 4.7', :require => 'minitest/unit' gem 'metadata-json-lint' gem 'puppet-lint-param-docs' diff --git a/spec/acceptance/basic_designate_spec.rb b/spec/acceptance/basic_designate_spec.rb index febb310d..928e234a 100644 --- a/spec/acceptance/basic_designate_spec.rb +++ b/spec/acceptance/basic_designate_spec.rb @@ -9,10 +9,33 @@ describe 'basic designate' do Exec { logoutput => 'on_failure' } # Common resources - include ::apt - class { '::openstack_extras::repo::debian::ubuntu': - release => 'kilo', - package_require => true, + case $::osfamily { + 'Debian': { + include ::apt + class { '::openstack_extras::repo::debian::ubuntu': + release => 'kilo', + package_require => true, + } + $package_provider = 'apt' + } + 'RedHat': { + class { '::openstack_extras::repo::redhat::redhat': + # Kilo is not GA yet, so let's use the testing repo + manage_rdo => false, + repo_hash => { + 'rdo-kilo-testing' => { + 'baseurl' => 'https://repos.fedorapeople.org/repos/openstack/openstack-kilo/testing/el7/', + # packages are not GA so not signed + 'gpgcheck' => '0', + 'priority' => 97, + }, + }, + } + $package_provider = 'yum' + } + default: { + fail("Unsupported osfamily (${::osfamily})") + } } class { '::mysql::server': } @@ -20,6 +43,7 @@ describe 'basic designate' do class { '::rabbitmq': delete_guest_user => true, erlang_cookie => 'secrete', + package_provider => $package_provider, } rabbitmq_vhost { '/': @@ -62,33 +86,40 @@ describe 'basic designate' do admin_url => "https://${::fqdn}:35357/", } - # Designate resources - class { '::designate::db::mysql': - password => 'a_big_secret', + case $::osfamily { + 'Debian': { + # Designate resources + class { '::designate::db::mysql': + password => 'a_big_secret', + } + class { '::designate::keystone::auth': + password => 'a_big_secret', + } + class { '::designate': + rabbit_userid => 'designate', + rabbit_password => 'an_even_bigger_secret', + rabbit_host => '127.0.0.1', + } + class { '::designate::api': + enabled => true, + auth_strategy => 'keystone', + keystone_password => 'a_big_secret', + } + class { '::designate::backend::bind9': + rndc_config_file => '', + rndc_key_file => '', + } + include ::designate::client + class { '::designate::agent': } + class { '::designate::db': + database_connection => 'mysql://designate:a_big_secret@127.0.0.1/designate?charset=utf8', + } + include ::designate::dns + } + 'RedHat': { + warning("Designate packaging is not ready on ${::osfamily}.") + } } - class { '::designate::keystone::auth': - password => 'a_big_secret', - } - class { '::designate': - rabbit_userid => 'designate', - rabbit_password => 'an_even_bigger_secret', - rabbit_host => '127.0.0.1', - } - class { '::designate::api': - enabled => true, - auth_strategy => 'keystone', - keystone_password => 'a_big_secret', - } - class { '::designate::backend::bind9': - rndc_config_file => '', - rndc_key_file => '', - } - include ::designate::client - class { '::designate::agent': } - class { '::designate::db': - database_connection => 'mysql://designate:a_big_secret@127.0.0.1/designate?charset=utf8', - } - include ::designate::dns EOS @@ -98,8 +129,10 @@ describe 'basic designate' do apply_manifest(pp, :catch_failures => true) end - describe port(9001) do - it { is_expected.to be_listening.with('tcp') } + if os[:family] == 'Debian' + describe port(9001) do + it { is_expected.to be_listening.with('tcp') } + end end end diff --git a/spec/acceptance/nodesets/nodepool-centos7.yml b/spec/acceptance/nodesets/nodepool-centos7.yml new file mode 100644 index 00000000..aed4f0b2 --- /dev/null +++ b/spec/acceptance/nodesets/nodepool-centos7.yml @@ -0,0 +1,9 @@ +HOSTS: + centos-70-x64: + roles: + - master + platform: el-7-x86_64 + hypervisor : none + ip: 127.0.0.1 +CONFIG: + type: foss diff --git a/spec/acceptance/nodesets/nodepool.yml b/spec/acceptance/nodesets/nodepool-trusty.yml similarity index 100% rename from spec/acceptance/nodesets/nodepool.yml rename to spec/acceptance/nodesets/nodepool-trusty.yml diff --git a/spec/spec_helper_acceptance.rb b/spec/spec_helper_acceptance.rb index 14fb7669..49723542 100644 --- a/spec/spec_helper_acceptance.rb +++ b/spec/spec_helper_acceptance.rb @@ -27,16 +27,20 @@ RSpec.configure do |c| # install library modules from the forge on host, puppet('module','install','puppetlabs-inifile'), { :acceptable_exit_codes => 0 } + # pin apt module until openstack_extras use >= 2.0.0 version + on host, puppet('module','install','puppetlabs-apt','--version','1.8.0'), { :acceptable_exit_codes => 0 } on host, puppet('module','install','theforeman/dns'), { :acceptable_exit_codes => 0 } on host, puppet('module','install','puppetlabs-mysql'), { :acceptable_exit_codes => 0 } on host, puppet('module','install','dprince/qpid'), { :acceptable_exit_codes => 0 } on host, puppet('module','install','stahnma-epel'), { :acceptable_exit_codes => 0 } - on host, puppet('module','install','puppetlabs-rabbitmq'), { :acceptable_exit_codes => 0 } # install puppet modules from git, use master shell('git clone https://git.openstack.org/stackforge/puppet-openstacklib /etc/puppet/modules/openstacklib') shell('git clone https://git.openstack.org/stackforge/puppet-keystone /etc/puppet/modules/keystone') shell('git clone https://git.openstack.org/stackforge/puppet-openstack_extras /etc/puppet/modules/openstack_extras') + # TODO(EmilienM) Cloning RabbitMQ module for now because we wait for a release including + # https://github.com/enovance/puppetlabs-rabbitmq/commit/0227f762070ffbbea3c28d6a60174de98fa4cc1c + shell('git clone https://github.com/puppetlabs/puppetlabs-rabbitmq/ /etc/puppet/modules/rabbitmq') # Install the module being tested puppet_module_install(:source => proj_root, :module_name => 'designate')