Merge pull request #119 from bodepd/fix_folsom_spec_tests

Fix folsom spec tests
This commit is contained in:
Dan Bode
2012-10-28 22:54:43 -07:00
10 changed files with 519 additions and 413 deletions

View File

@@ -4,8 +4,15 @@ fixtures:
"keystone": "git://github.com/puppetlabs/puppetlabs-keystone.git"
"mysql": "git://github.com/puppetlabs/puppetlabs-mysql.git"
"nova": "git://github.com/puppetlabs/puppetlabs-nova.git"
"glance": "git://github.com/puppetlabs/puppetlabs-glance.git"
"rabbitmq": "git://github.com/puppetlabs/puppetlabs-rabbitmq"
'memcached': 'git://github.com/saz/puppet-memcached'
'horizon': 'git://github.com/puppetlabs/puppetlabs-horizon'
'quantum': 'git://github.com/bodepd/openstack-quantum-puppet'
'cinder': 'git://github.com/puppetlabs/puppetlabs-cinder'
"stdlib": "git://github.com/puppetlabs/puppetlabs-stdlib.git"
"sysctl": "git://github.com/duritong/puppet-sysctl.git"
'inifile': 'git://github.com/cprice-puppet/puppetlabs-inifile'
"create_resources": 'git://github.com/puppetlabs/puppetlabs-create_resources'
symlinks:
"openstack": "#{source_dir}"

3
.gitignore vendored Normal file
View File

@@ -0,0 +1,3 @@
spec/fixtures/modules/*
spec/fixtures/manifests/*
*swp

View File

@@ -57,34 +57,44 @@
#
#
class openstack::all (
# Network Required
# Required Network
$public_address,
$public_interface = 'eth0',
$private_interface = 'eth1',
$public_interface,
$private_interface,
$admin_email,
# required password
$mysql_root_password,
$admin_password,
$rabbit_password,
$keystone_db_password,
$keystone_admin_token,
$glance_db_password,
$glance_user_password,
$nova_db_password,
$nova_user_password,
$secret_key,
$internal_address = '127.0.0.1',
# cinder and quantum password are not required b/c they are
# optional. Not sure what to do about this.
$cinder_user_password = 'cinder_pass',
$cinder_db_password = 'cinder_pass',
$quantum_user_password = 'quantum_pass',
$quantum_db_password = 'quantum_pass',
# Database
$mysql_root_password = 'sql_pass',
$db_type = 'mysql',
$mysql_account_security = true,
$allowed_hosts = ['127.0.0.%'],
# Keystone
$admin_email = 'some_user@some_fake_email_address.foo',
$admin_password = 'ChangeMe',
$keystone_db_password = 'keystone_pass',
$keystone_db_user = 'keystone',
$keystone_db_dbname = 'keystone',
$keystone_admin_token = 'keystone_admin_token',
$keystone_admin_tenant = 'admin',
$region = 'RegionOne',
# Glance Required
$glance_db_password = 'glance_pass',
$glance_db_user = 'glance',
$glance_db_dbname = 'glance',
$glance_user_password = 'glance_pass',
# Nova
$nova_db_password = 'nova_pass',
$nova_db_user = 'nova',
$nova_db_dbname = 'nova',
$nova_user_password = 'nova_pass',
$purge_nova_config = true,
# Network
$network_manager = 'nova.network.manager.FlatDHCPManager',
@@ -96,25 +106,19 @@ class openstack::all (
$network_config = {},
$quantum = true,
# Rabbit
$rabbit_password = 'rabbit_pw',
$rabbit_user = 'nova',
# Horizon
$secret_key = 'dummy_secret_key',
$cache_server_ip = '127.0.0.1',
$cache_server_port = '11211',
$swift = false,
$horizon_app_links = undef,
# if the cinder management components should be installed
$cinder = true,
$cinder_user_password = 'cinder_user_pass',
$cinder_db_password = 'cinder_db_pass',
$cinder_db_user = 'cinder',
$cinder_db_dbname = 'cinder',
$volume_group = 'cinder-volumes',
$cinder_test = false,
#
$quantum_user_password = 'quantum_user_pass',
$quantum_db_password = 'quantum_db_pass',
$quantum_db_user = 'quantum',
$quantum_db_dbname = 'quantum',
# Virtaulization
@@ -159,7 +163,10 @@ class openstack::all (
quantum_db_password => $quantum_db_password,
quantum_db_dbname => $quantum_db_dbname,
allowed_hosts => $allowed_hosts,
enabled => $enabled,
}
} else {
fail("unsupported db type: ${db_type}")
}
####### KEYSTONE ###########
@@ -305,7 +312,7 @@ class openstack::all (
enabled => $enabled,
vnc_enabled => $vnc_enabled,
vncserver_proxyclient_address => $internal_address,
vncproxy_host => 'localhost',
vncproxy_host => $public_address,
}
# Configure libvirt for nova-compute

View File

@@ -103,7 +103,12 @@ class openstack::compute (
# if the compute node should be configured as a multi-host
# compute installation
if $quantum == false {
if ! $quantum {
if ! $fixed_range {
fail("Must specify the fixed range when using nova-networks")
}
if $multi_host {
include keystone::python
nova_config {
@@ -157,7 +162,10 @@ class openstack::compute (
volume_group => $nova_volume,
}
# set in nova::api
if ! defined(Nova_config['volume_api_class']) {
nova_config { 'volume_api_class': value => 'nova.volume.cinder.API' }
}
} else {
# Set up nova-volume
}

View File

@@ -114,7 +114,6 @@ class openstack::controller (
$multi_host = false,
$auto_assign_floating_ip = false,
$network_config = {},
$quantum = true,
# Rabbit
$rabbit_user = 'nova',
# Horizon
@@ -126,11 +125,13 @@ class openstack::controller (
$vnc_enabled = true,
# General
$verbose = 'False',
# cinder
# if the cinder management components should be installed
$cinder = false,
$cinder = true,
$cinder_db_user = 'cinder',
$cinder_db_dbname = 'cinder',
#
# quantum
$quantum = true,
$quantum_db_user = 'quantum',
$quantum_db_dbname = 'quantum',
$enabled = true
@@ -144,7 +145,7 @@ class openstack::controller (
if $admin_address {
$admin_address_real = $admin_address
} else {
$admin_address_real = $public_address
$admin_address_real = $internal_address_real
}
# Ensure things are run in order
@@ -182,6 +183,8 @@ class openstack::controller (
allowed_hosts => $allowed_hosts,
enabled => $enabled,
}
} else {
fail("Unsupported db : ${db_type}")
}
####### KEYSTONE ###########
@@ -198,7 +201,7 @@ class openstack::controller (
admin_password => $admin_password,
public_address => $public_address,
internal_address => $internal_address_real,
admin_address => $admin_address,
admin_address => $admin_address_real,
region => $region,
glance_user_password => $glance_user_password,
nova_user_password => $nova_user_password,

View File

@@ -51,7 +51,6 @@ class openstack::db::mysql (
# Nova
$nova_db_user = 'nova',
$nova_db_dbname = 'nova',
$allowed_hosts = false,
# Cinder
$cinder = true,
$cinder_db_user = 'cinder',
@@ -60,6 +59,7 @@ class openstack::db::mysql (
$quantum = true,
$quantum_db_user = 'quantum',
$quantum_db_dbname = 'quantum',
$allowed_hosts = false,
$enabled = true
) {

View File

@@ -57,7 +57,7 @@ class openstack::nova::controller (
# General
$keystone_host = '127.0.0.1',
$verbose = 'False',
$enabled = true,
$enabled = true
) {
# Configure the db string

View File

@@ -6,6 +6,12 @@ describe 'openstack::compute' do
{
:private_interface => 'eth0',
:internal_address => '0.0.0.0',
:nova_user_password => 'nova_pass',
:rabbit_password => 'rabbit_pw',
:sql_connection => 'mysql://user:pass@host/dbname/',
:cinder_sql_connection => 'mysql://user:pass@host/dbname/',
:quantum => false,
:fixed_range => '10.0.0.0/16',
}
end
@@ -22,13 +28,13 @@ describe 'openstack::compute' do
end
it {
should contain_class('nova').with(
:sql_connection => false,
:rabbit_host => false,
:sql_connection => 'mysql://user:pass@host/dbname/',
:rabbit_host => '127.0.0.1',
:rabbit_userid => 'nova',
:rabbit_password => 'rabbit_pw',
:image_service => 'nova.image.glance.GlanceImageService',
:glance_api_servers => false,
:verbose => false
:verbose => 'False'
)
should contain_class('nova::compute').with(
:enabled => true,
@@ -43,8 +49,6 @@ describe 'openstack::compute' do
should contain_nova_config('multi_host').with( :value => 'False' )
should contain_nova_config('send_arp_for_ha').with( :value => 'False' )
should_not contain_class('nova::api')
should_not contain_class('nova::volume')
should_not contain_class('nova::volume::iscsi')
should contain_class('nova::network').with({
:enabled => false,
:install_service => false,
@@ -82,7 +86,7 @@ describe 'openstack::compute' do
let :params do
default_params.merge(override_params)
end
it {
it do
should contain_class('nova').with(
:sql_connection => 'mysql://user:passwd@host/name',
:rabbit_host => 'my_host',
@@ -105,8 +109,6 @@ describe 'openstack::compute' do
should contain_nova_config('multi_host').with( :value => 'False' )
should contain_nova_config('send_arp_for_ha').with( :value => 'False' )
should_not contain_class('nova::api')
should_not contain_class('nova::volume')
should_not contain_class('nova::volume::iscsi')
should contain_class('nova::network').with({
:enabled => false,
:install_service => false,
@@ -116,7 +118,7 @@ describe 'openstack::compute' do
:enabled => false,
:install_service => false
})
}
end
end
describe "when enabling volume management" do
@@ -129,52 +131,32 @@ describe 'openstack::compute' do
it do
should contain_nova_config('multi_host').with({ 'value' => 'False'})
should_not contain_class('nova::api')
should contain_class('nova::volume').with(:enabled => true)
should contain_class('nova::network').with({
'enabled' => false,
'install_service' => false
})
end
describe 'with default volume settings' do
it { should contain_class('nova::volume::iscsi').with(
:volume_group => 'nova-volumes',
:iscsi_ip_address => '0.0.0.0'
)}
end
describe 'when overriding volume parameters' do
let :params do
default_params.merge({
:manage_volumes => true,
:nova_volume => 'nova-volumes2',
:internal_address => '127.0.0.1'
})
end
it { should contain_class('nova::volume::iscsi').with(
:volume_group => 'nova-volumes2',
:iscsi_ip_address => '127.0.0.1'
) }
end
end
describe "when configuring for multi host" do
describe 'when quantum is false' do
describe 'configuring for multi host' do
let :params do
default_params.merge({
:multi_host => true,
:public_interface => 'eth0'
:public_interface => 'eth0',
:quantum => false
})
end
it {
should contain_class('keystone::python')
should contain_nova_config('multi_host').with({ 'value' => 'True'})
it 'should configure nova for multi-host' do
#should contain_class('keystone::python')
should contain_nova_config('multi_host').with(:value => 'True')
should contain_nova_config('send_arp_for_ha').with( :value => 'True')
should_not contain_class('nova::volume')
should_not contain_class('nova::volume::iscsi')
should contain_class('nova::network').with({
'enabled' => true,
'install_service' => true
})
}
end
describe 'with defaults' do
it { should contain_class('nova::api').with(
:enabled => true,
@@ -183,17 +165,31 @@ describe 'openstack::compute' do
:admin_password => 'nova_pass'
)}
end
describe 'when overrding nova volumes' do
end
describe 'when overriding network params' do
let :params do
default_params.merge({
:multi_host => true,
:public_interface => 'eth0',
:nova_user_password => 'foo'
:manage_volumes => true,
:private_interface => 'eth1',
:public_interface => 'eth2',
:fixed_range => '12.0.0.0/24',
:network_manager => 'nova.network.manager.VlanManager',
:network_config => {'vlan_interface' => 'eth0'}
})
end
it { should contain_class('nova::api').with(
:admin_password => 'foo'
)}
it { should contain_class('nova::network').with({
:private_interface => 'eth1',
:public_interface => 'eth2',
:fixed_range => '12.0.0.0/24',
:floating_range => false,
:network_manager => 'nova.network.manager.VlanManager',
:config_overrides => {'vlan_interface' => 'eth0'},
:create_networks => false,
'enabled' => true,
'install_service' => true
})}
end
end
@@ -221,8 +217,6 @@ describe 'openstack::compute' do
it {
should contain_nova_config('multi_host').with({ 'value' => 'True'})
should contain_class('nova::api')
should contain_class('nova::volume')
should contain_class('nova::volume::iscsi')
should contain_class('nova::network').with({
'enabled' => true,
'install_service' => true
@@ -230,30 +224,4 @@ describe 'openstack::compute' do
}
end
describe 'when overriding network params' do
let :params do
default_params.merge({
:multi_host => true,
:public_interface => 'eth0',
:manage_volumes => true,
:private_interface => 'eth1',
:public_interface => 'eth2',
:fixed_range => '12.0.0.0/24',
:network_manager => 'nova.network.manager.VlanManager',
:network_config => {'vlan_interface' => 'eth0'}
})
end
it { should contain_class('nova::network').with({
:private_interface => 'eth1',
:public_interface => 'eth2',
:fixed_range => '12.0.0.0/24',
:floating_range => false,
:network_manager => 'nova.network.manager.VlanManager',
:config_overrides => {'vlan_interface' => 'eth0'},
:create_networks => false,
'enabled' => true,
'install_service' => true
})}
end
end

View File

@@ -1,13 +1,25 @@
require 'spec_helper'
describe 'openstack::controller' do
# minimum set of default parameters
let :default_params do
{
:private_interface => 'eth0',
:public_interface => 'eth1',
:internal_address => '127.0.0.1',
:public_address => '10.0.0.1',
:export_resources => false,
:admin_email => 'some_user@some_fake_email_address.foo',
:admin_password => 'ChangeMe',
:rabbit_password => 'rabbit_pw',
:keystone_db_password => 'keystone_pass',
:keystone_admin_token => 'keystone_admin_token',
:glance_db_password => 'glance_pass',
:glance_user_password => 'glance_pass',
:nova_db_password => 'nova_pass',
:nova_user_password => 'nova_pass',
:secret_key => 'secret_key',
:quantum => false,
}
end
@@ -15,104 +27,221 @@ describe 'openstack::controller' do
{
:operatingsystem => 'Ubuntu',
:osfamily => 'Debian',
:concat_basedir => '/tmp/',
:puppetversion => '2.7.x',
:memorysize => '2GB',
:processorcount => '2'
}
end
let :params do
default_params
end
it { should_not contain_nova_config('auto_assign_floating_ip') }
describe 'when auto assign floating ip is assigned' do
context 'database' do
context 'with unsupported db type' do
let :params do
default_params.merge(:auto_assign_floating_ip => 'true')
end
it { should contain_nova_config('auto_assign_floating_ip').with(:value => 'True')}
default_params.merge({:db_type => 'sqlite'})
end
it do
should contain_class('mysql::server').with(
:config_hash => {'bind_address' => '0.0.0.0', 'root_password' => 'sql_pass' }
expect { subject }.to raise_error(Puppet::Error)
end
end
context 'with default mysql params' do
let :params do
default_params.merge(
:enabled => true,
:db_type => 'mysql',
:quantum => true,
:cinder => true
)
end
it { should contain_class('mysql::server').with(
:config_hash => {'bind_address' => '0.0.0.0', 'root_password' => 'sql_pass' },
:enabled => true
)
}
it 'should contain openstack db config' do
should contain_class('keystone::db::mysql').with(
:user => 'keystone',
:password => 'keystone_pass',
:dbname => 'keystone',
:allowed_hosts => '%'
)
should contain_class('glance::db::mysql').with(
:user => 'glance',
:password => 'glance_pass',
:dbname => 'glance',
:allowed_hosts => '%'
)
should contain_class('nova::db::mysql').with(
:user => 'nova',
:password => 'nova_pass',
:dbname => 'nova',
:allowed_hosts => '%'
)
should contain_class('cinder::db::mysql').with(
:user => 'cinder',
:password => 'cinder_pass',
:dbname => 'cinder',
:allowed_hosts => '%'
)
should contain_class('quantum::db::mysql').with(
:user => 'quantum',
:password => 'quantum_pass',
:dbname => 'quantum',
:allowed_hosts => '%'
)
end
it { should contain_class('mysql::server::account_security')}
end
context 'when cinder and quantum are false' do
let :params do
default_params.merge(
:quantum => false,
:cinder => false
)
end
it do
should_not contain_class('quantum::db::mysql')
should_not contain_class('cinder::db::mysql')
end
end
context 'when not enabled' do
let :params do
default_params.merge(
{:enabled => false}
)
end
it { should contain_class('mysql::server').with(
:config_hash => {'bind_address' => '0.0.0.0', 'root_password' => 'sql_pass' },
:enabled => false
)
}
['keystone', 'nova', 'glance', 'cinder', 'quantum'].each do |x|
it { should_not contain_class("#{x}::db::mysql") }
end
end
context 'when account secutiry is not enabled' do
let :params do
default_params.merge(
{:mysql_account_security => false}
)
end
it { should_not contain_class('mysql::server::account_security')}
end
end
context 'keystone' do
context 'with default params' do
let :params do
default_params
end
it { should contain_class('keystone').with(
:verbose => 'False',
:debug => 'False',
:catalog_type => 'sql',
:enabled => true,
:admin_token => 'keystone_admin_token',
:sql_connection => "mysql://keystone:keystone_pass@127.0.0.1/keystone"
) }
it 'should contain endpoints' do
should contain_class('keystone::roles::admin').with(
:email => 'some_user@some_fake_email_address.foo',
:password => 'ChangeMe',
:admin_tenant => 'admin'
)
should contain_class('keystone::endpoint').with(
:public_address => '10.0.0.1',
:internal_address => '127.0.0.1',
:admin_address => '127.0.0.1',
:region => 'RegionOne'
)
{
'nova' => 'nova_pass',
'cinder' => 'cinder_pass',
'glance' => 'glance_pass'
}.each do |type, pw|
should contain_class("#{type}::keystone::auth").with(
:password => pw,
:public_address => '10.0.0.1',
:internal_address => '10.0.0.1',
:admin_address => '10.0.0.1',
:region => 'RegionOne'
)
end
end
end
context 'when not enabled' do
let :params do
default_params.merge(:enabled => false)
end
it 'should not configure endpoints' do
should contain_class('keystone').with(:enabled => false)
should_not contain_class('keystone::roles::admin')
should_not contain_class('keystone::endpoint')
should_not contain_class('glance::keystone::auth')
should_not contain_class('nova::keystone::auth')
end
end
end
it do
should contain_class('memcached').with(
:listen_ip => '127.0.0.1'
)
end
describe 'when enabled' do
it 'should contain enabled database configs' do
should contain_class('mysql::server').with(
:enabled => true
)
should contain_class('keystone::db::mysql').with(
:password => 'keystone_pass'
)
should contain_class('glance::db::mysql').with(
:host => '127.0.0.1',
:password => 'glance_pass',
:before => ["Class[Glance::Registry]", "Exec[glance-manage db_sync]"]
)
should contain_class('nova::db::mysql').with(
:password => 'nova_pass',
:host => '127.0.0.1',
:allowed_hosts => '%'
)
end
it 'should contain enabled keystone configs with defaults' do
should contain_class('keystone').with(
:admin_token => 'keystone_admin_token',
:bind_host => '0.0.0.0',
:verbose => false,
:debug => false,
:catalog_type => 'sql',
:enabled => true
)
should contain_class('keystone::config::mysql').with(
:password => 'keystone_pass'
)
should contain_class('keystone::roles::admin').with(
:email => 'some_user@some_fake_email_address.foo',
:password => 'ChangeMe'
)
should contain_class('keystone::endpoint').with(
:public_address => '10.0.0.1',
:internal_address => '127.0.0.1',
:admin_address => '127.0.0.1'
)
should contain_class('glance::keystone::auth').with(
:password => 'glance_pass',
:public_address => '10.0.0.1',
:internal_address => '127.0.0.1',
:admin_address => '127.0.0.1'
#:before => ['Class[glance::api]', 'Class[glance::registry]']
)
should contain_class('nova::keystone::auth').with(
:password => 'nova_pass',
:public_address => '10.0.0.1',
:internal_address => '127.0.0.1',
:admin_address => '127.0.0.1'
#:before => 'Class[nova::api]'
)
context 'config for glance' do
context 'when enabled' do
it 'should contain enabled glance with defaults' do
should contain_class('glance::api').with(
:verbose => false,
:debug => false,
:verbose => 'False',
:debug => 'False',
:auth_type => 'keystone',
:auth_host => '127.0.0.1',
:auth_port => '35357',
:keystone_tenant => 'services',
:keystone_user => 'glance',
:keystone_password => 'glance_pass',
:sql_connection => 'mysql://glance:glance_pass@127.0.0.1/glance',
:enabled => true
)
should contain_class('glance::backend::file')
should contain_class('glance::registry').with(
:verbose => false,
:debug => false,
:verbose => 'False',
:debug => 'False',
:auth_type => 'keystone',
:auth_host => '127.0.0.1',
:auth_port => '35357',
@@ -122,6 +251,82 @@ describe 'openstack::controller' do
:sql_connection => "mysql://glance:glance_pass@127.0.0.1/glance",
:enabled => true
)
should contain_class('glance::backend::file')
end
end
context 'when not enabled' do
let :params do
default_params.merge(:enabled => false)
end
it 'should disable glance services' do
should contain_class('glance::api').with(
:enabled => false
)
should contain_class('glance::registry').with(
:enabled => false
)
end
end
context 'when params are overridden' do
let :params do
default_params.merge(
:verbose => 'False',
:glance_user_password => 'glance_pass2',
:glance_db_password => 'glance_pass3',
:db_host => '127.0.0.2',
:glance_db_user => 'dan',
:glance_db_dbname => 'name',
:db_host => '127.0.0.2'
)
end
it 'should override params for glance' do
should contain_class('glance::api').with(
:verbose => 'False',
:debug => 'False',
:auth_type => 'keystone',
:auth_host => '127.0.0.1',
:auth_port => '35357',
:keystone_tenant => 'services',
:keystone_user => 'glance',
:keystone_password => 'glance_pass2',
:sql_connection => 'mysql://dan:glance_pass3@127.0.0.2/name'
)
should contain_class('glance::registry').with(
:verbose => 'False',
:debug => 'False',
:auth_type => 'keystone',
:auth_host => '127.0.0.1',
:auth_port => '35357',
:keystone_tenant => 'services',
:keystone_user => 'glance',
:keystone_password => 'glance_pass2',
:sql_connection => "mysql://dan:glance_pass3@127.0.0.2/name"
)
end
end
end
context 'config for nova' do
let :facts do
{
:operatingsystem => 'Ubuntu',
:osfamily => 'Debian',
:puppetversion => '2.7.x',
:memorysize => '2GB',
:processorcount => '2'
}
end
context 'with default params' do
it 'should contain enabled nova services' do
should contain_class('nova::rabbitmq').with(
:userid => 'nova',
:password => 'rabbit_pw',
@@ -134,7 +339,7 @@ describe 'openstack::controller' do
:rabbit_password => 'rabbit_pw',
:image_service => 'nova.image.glance.GlanceImageService',
:glance_api_servers => '10.0.0.1:9292',
:verbose => false
:verbose => 'False'
)
should contain_class('nova::api').with(
:enabled => true,
@@ -147,159 +352,20 @@ describe 'openstack::controller' do
should contain_class('nova::scheduler').with(:enabled => true)
should contain_class('nova::objectstore').with(:enabled => true)
should contain_class('nova::vncproxy').with(:enabled => true)
should contain_class('horizon').with(
:secret_key => 'dummy_secret_key',
:cache_server_ip => '127.0.0.1',
:cache_server_port => '11211',
:swift => false,
:quantum => false,
:horizon_app_links => false
)
end
describe 'when overriding params' do
it { should_not contain_nova_config('auto_assign_floating_ip') }
end
context 'when auto assign floating ip is assigned' do
let :params do
default_params.merge(
:keystone_db_password => 'pass',
:glance_db_password => 'pass2',
:nova_db_password => 'pass3',
:verbose => true,
:keystone_admin_token => 'foo',
:nova_user_password => 'pass5',
:glance_user_password => 'pass6',
:admin_email => 'dan@puppetlabs.com',
:admin_address => '127.0.0.2',
:admin_password => 'pass7',
:rabbit_user => 'rabby',
:rabbit_password => 'rabby_pw',
:fixed_range => '10.0.0.0/24',
:floating_range => '11.0.0.0/24',
:network_manager => 'nova.network.manager.VlanManager',
:network_config => {'vlan_interface' => 'eth4'},
:num_networks => 2,
:secret_key => 'real_secret_key',
:cache_server_ip => '127.0.0.2',
:cache_server_port => '11212',
:swift => true,
:quantum => true,
:horizon_app_links => true,
:glance_api_servers => '127.0.0.1:9292'
)
default_params.merge(:auto_assign_floating_ip => 'true')
end
it 'should override db config' do
should contain_class('keystone::db::mysql').with(
:password => 'pass'
)
should contain_class('glance::db::mysql').with(
:password => 'pass2'
)
should contain_class('nova::db::mysql').with(
:password => 'pass3'
)
it { should contain_nova_config('auto_assign_floating_ip').with(:value => 'True')}
end
it 'should override keystone config' do
should contain_class('keystone').with(
:verbose => true,
:debug => true,
:admin_token => 'foo'
)
should contain_class('keystone::config::mysql').with(
:password => 'pass'
)
should contain_class('keystone::endpoint').with(
:admin_address => '127.0.0.2'
)
should contain_class('keystone::roles::admin').with(
:email => 'dan@puppetlabs.com',
:password => 'pass7'
)
should contain_class('glance::keystone::auth').with(
:password => 'pass6',
:admin_address => '127.0.0.2'
)
should contain_class('nova::keystone::auth').with(
:password => 'pass5',
:admin_address => '127.0.0.2'
)
end
it 'should override glance config' do
should contain_class('glance::api').with(
:verbose => true,
:debug => true,
:keystone_password => 'pass6',
:enabled => true
)
should contain_class('glance::registry').with(
:verbose => true,
:debug => true,
:keystone_password => 'pass6',
:sql_connection => "mysql://glance:pass2@127.0.0.1/glance",
:enabled => true
)
end
it 'should override nova config' do
should contain_class('nova::rabbitmq').with(
:userid => 'rabby',
:password => 'rabby_pw',
:enabled => true
)
should contain_class('nova').with(
:sql_connection => 'mysql://nova:pass3@127.0.0.1/nova',
:rabbit_host => '127.0.0.1',
:rabbit_userid => 'rabby',
:rabbit_password => 'rabby_pw',
:image_service => 'nova.image.glance.GlanceImageService',
:glance_api_servers => '127.0.0.1:9292',
:verbose => true
)
should contain_class('nova::api').with(
:enabled => true,
:admin_tenant_name => 'services',
:admin_user => 'nova',
:admin_password => 'pass5'
)
should contain_class('nova::network').with(
:fixed_range => '10.0.0.0/24',
:floating_range => '11.0.0.0/24',
:network_manager => 'nova.network.manager.VlanManager',
:config_overrides => {'vlan_interface' => 'eth4'},
:num_networks => 2
)
end
describe 'it should override horizon params' do
it { should contain_class('horizon').with(
:secret_key => 'real_secret_key',
:cache_server_ip => '127.0.0.2',
:cache_server_port => '11212',
:swift => true,
:quantum => true,
:horizon_app_links => true
)}
end
end
end
describe 'when not enabled' do
context 'when not enabled' do
let :params do
default_params.merge(:enabled => false)
end
it do
should contain_class('mysql::server').with(
:enabled => false
)
should_not contain_class('keystone::db::mysql')
should_not contain_class('glance::db::mysql')
should_not contain_class('nova::db::mysql')
should contain_class('keystone::config::mysql')
should contain_class('keystone').with(:enabled => false)
should_not contain_class('keystone::roles::admin')
should_not contain_class('keystone::endpoint')
should_not contain_class('glance::keystone::auth')
should_not contain_class('nova::keystone::auth')
should contain_class('glance::api').with(:enabled => false)
should contain_class('glance::backend::file')
should contain_class('glance::registry').with(:enabled => false)
it 'should disable everything' do
should contain_class('nova::rabbitmq').with(:enabled => false)
should contain_class('nova::api').with(:enabled => false)
should contain_class('nova::cert').with(:enabled => false)
@@ -309,13 +375,95 @@ describe 'openstack::controller' do
should contain_class('nova::vncproxy').with(:enabled => false)
end
end
end
describe 'nova network config' do
describe 'when enabled' do
context 'config for horizon' do
describe 'when multihost is not set' do
it 'should contain enabled horizon' do
should contain_class('horizon').with(
:secret_key => 'secret_key',
:cache_server_ip => '127.0.0.1',
:cache_server_port => '11211',
:swift => false,
:quantum => false,
:horizon_app_links => false
)
end
end
context 'cinder' do
context 'when disabled' do
let :params do
default_params.merge(:cinder => false)
end
it 'should not contain cinder classes' do
should_not contain_class('cinder::base')
should_not contain_class('cinder::api')
should_not contain_class('cinder:"scheduler')
end
end
context 'when enabled' do
let :params do
default_params
end
it 'should configure cinder using defaults' do
should contain_class('cinder::base').with(
:verbose => 'False',
:sql_connection => 'mysql://cinder:cinder_pass@127.0.0.1/cinder?charset=utf8',
:rabbit_password => 'rabbit_pw'
)
should contain_class('cinder::api').with_keystone_password('cinder_pass')
should contain_class('cinder::scheduler')
end
end
context 'when overriding config' do
let :params do
default_params.merge(
:verbose => 'True',
:rabbit_password => 'rabbit_pw2',
:cinder_user_password => 'foo',
:cinder_db_password => 'bar',
:cinder_db_user => 'baz',
:cinder_db_dbname => 'blah',
:db_host => '127.0.0.2'
)
end
it 'should configure cinder using defaults' do
should contain_class('cinder::base').with(
:verbose => 'True',
:sql_connection => 'mysql://baz:bar@127.0.0.2/blah?charset=utf8',
:rabbit_password => 'rabbit_pw2'
)
should contain_class('cinder::api').with_keystone_password('foo')
should contain_class('cinder::scheduler')
end
end
end
context 'network config' do
context 'when quantum' do
let :params do
default_params.merge(:quantum => true)
end
it { should_not contain_class('nova::network') }
end
context 'when nova network' do
context 'when multi-host is not set' do
let :params do
default_params.merge(:quantum => false, :multi_host => false)
end
it {should contain_class('nova::network').with(
:private_interface => 'eth0',
:public_interface => 'eth1',
@@ -328,11 +476,11 @@ describe 'openstack::controller' do
:enabled => true,
:install_service => true
)}
end
describe 'when multihost is set' do
context 'when multi-host is set' do
let :params do
default_params.merge(:multi_host => true)
default_params.merge(:quantum => false, :multi_host => true)
end
it { should contain_nova_config('multi_host').with(:value => 'True')}
it {should contain_class('nova::network').with(
@@ -340,46 +488,8 @@ describe 'openstack::controller' do
:enabled => false,
:install_service => false
)}
end
end
describe 'when not enabled' do
describe 'when multihost is set' do
let :params do
default_params.merge(
:multi_host => true,
:enabled => false
)
end
it {should contain_class('nova::network').with(
:create_networks => false,
:enabled => false,
:install_service => false
)}
end
describe 'when multihost is not set' do
let :params do
default_params.merge(
:multi_host => false,
:enabled => false
)
end
it {should contain_class('nova::network').with(
:create_networks => false,
:enabled => false,
:install_service => false
)}
end
end
end
end