Bring Redhat support to acceptance tests

OpenStack Infra has jobs to run this on both Ubuntu Trusty and CentOS7.

* Add minitest to Gemfile (dependency to run beaker on centos - see
  http://projects.theforeman.org/issues/2650 for details)
* separate nodepool files to have trusty & centos7 support in OS infra
* spec: add case for repo configuration and support
  RH systems.
* rabbitmq: install module from source
* apt: pin the module
* don't run tests on RH, packages are not ready yet

Change-Id: I45d9cbd30c414abd7fc9f6cfc100b30430273318
Closes-bug: #1444736
This commit is contained in:
Emilien Macchi
2015-05-14 14:09:40 -04:00
parent fc6b14d838
commit 78e0dc117e
5 changed files with 72 additions and 25 deletions
+1
View File
@@ -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-absolute_classname-check'
+57 -24
View File
@@ -9,10 +9,33 @@ describe 'basic ironic' 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 ironic' do
class { '::rabbitmq':
delete_guest_user => true,
erlang_cookie => 'secrete',
package_provider => $package_provider,
}
rabbitmq_vhost { '/':
@@ -63,25 +87,32 @@ describe 'basic ironic' do
admin_url => "https://${::fqdn}:35357/",
}
# Ironic resources
class { '::ironic':
rabbit_userid => 'ironic',
rabbit_password => 'an_even_bigger_secret',
rabbit_host => '127.0.0.1',
database_connection => 'mysql://ironic:a_big_secret@127.0.0.1/ironic?charset=utf8',
case $::osfamily {
'Debian': {
# Ironic resources
class { '::ironic':
rabbit_userid => 'ironic',
rabbit_password => 'an_even_bigger_secret',
rabbit_host => '127.0.0.1',
database_connection => 'mysql://ironic:a_big_secret@127.0.0.1/ironic?charset=utf8',
}
class { '::ironic::db::mysql':
password => 'a_big_secret',
}
class { '::ironic::keystone::auth':
password => 'a_big_secret',
}
class { '::ironic::client': }
class { '::ironic::conductor': }
class { '::ironic::api':
admin_password => 'a_big_secret',
}
class { '::ironic::drivers::ipmi': }
}
'RedHat': {
warning("Ironic packaging is not ready on ${::osfamily}.")
}
}
class { '::ironic::db::mysql':
password => 'a_big_secret',
}
class { '::ironic::keystone::auth':
password => 'a_big_secret',
}
class { '::ironic::client': }
class { '::ironic::conductor': }
class { '::ironic::api':
admin_password => 'a_big_secret',
}
class { '::ironic::drivers::ipmi': }
EOS
@@ -90,8 +121,10 @@ describe 'basic ironic' do
apply_manifest(pp, :catch_changes => true)
end
describe port(6385) do
it { is_expected.to be_listening.with('tcp') }
if os[:family] == 'Debian'
describe port(6385) do
it { is_expected.to be_listening.with('tcp') }
end
end
end
@@ -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
+5 -1
View File
@@ -27,15 +27,19 @@ 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','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 => 'ironic')