
This commit refactors the db connection params in openstack::compute from a single parameter that represents the connection string to individual parameters for each db_name, db_user, db_password, and db_host. This patch is intended for two purposes. 1. now that the compute requires two seperate db connections (cinder and nova), by breaking them down to these parameters, they can share their db_host parameter. 2. it simplifies the anount of information users have to specify to a password. In most cases, the defaults will be sufficient for all other data. Change-Id: I01a5a987a6a5b390b0a132b4f9b3261aae9c1f13
293 lines
10 KiB
Ruby
293 lines
10 KiB
Ruby
require 'spec_helper'
|
|
|
|
describe 'openstack::compute' do
|
|
|
|
let :params do
|
|
{
|
|
:private_interface => 'eth0',
|
|
:internal_address => '127.0.0.2',
|
|
:nova_user_password => 'nova_pass',
|
|
:rabbit_password => 'rabbit_pw',
|
|
:rabbit_host => '127.0.0.1',
|
|
:rabbit_virtual_host => '/',
|
|
:nova_admin_tenant_name => 'services',
|
|
:nova_admin_user => 'nova',
|
|
:enabled_apis => 'ec2,osapi_compute,metadata',
|
|
:nova_db_password => 'pass',
|
|
:cinder_db_password => 'cinder_pass',
|
|
:quantum => false,
|
|
:fixed_range => '10.0.0.0/16'
|
|
}
|
|
end
|
|
|
|
let :facts do
|
|
{
|
|
:operatingsystem => 'Ubuntu',
|
|
:osfamily => 'Debian',
|
|
}
|
|
end
|
|
|
|
describe "when using default class parameters" do
|
|
it {
|
|
should contain_class('nova').with(
|
|
:sql_connection => 'mysql://nova:pass@127.0.0.1/nova',
|
|
:rabbit_host => '127.0.0.1',
|
|
:rabbit_userid => 'openstack',
|
|
:rabbit_password => 'rabbit_pw',
|
|
:rabbit_virtual_host => '/',
|
|
:image_service => 'nova.image.glance.GlanceImageService',
|
|
:glance_api_servers => false,
|
|
:verbose => false
|
|
)
|
|
should_not contain_resources('nova_config').with_purge(true)
|
|
should contain_class('nova::compute').with(
|
|
:enabled => true,
|
|
:vnc_enabled => true,
|
|
:vncserver_proxyclient_address => '127.0.0.2',
|
|
:vncproxy_host => false
|
|
)
|
|
should contain_class('nova::compute::libvirt').with(
|
|
:libvirt_type => 'kvm',
|
|
:vncserver_listen => '127.0.0.2'
|
|
)
|
|
should contain_nova_config('DEFAULT/multi_host').with( :value => 'False' )
|
|
should contain_nova_config('DEFAULT/send_arp_for_ha').with( :value => 'False' )
|
|
should_not contain_class('nova::api')
|
|
should contain_class('nova::network').with({
|
|
:enabled => false,
|
|
:install_service => false,
|
|
:private_interface => 'eth0',
|
|
:public_interface => nil,
|
|
:fixed_range => '10.0.0.0/16',
|
|
:floating_range => false,
|
|
:network_manager => 'nova.network.manager.FlatDHCPManager',
|
|
:config_overrides => {},
|
|
:create_networks => false,
|
|
:enabled => false,
|
|
:install_service => false
|
|
})
|
|
should contain_class('openstack::cinder::storage').with(
|
|
:sql_connection => 'mysql://cinder:cinder_pass@127.0.0.1/cinder',
|
|
:rabbit_password => 'rabbit_pw',
|
|
:rabbit_userid => 'openstack',
|
|
:rabbit_host => '127.0.0.1',
|
|
:rabbit_virtual_host => '/',
|
|
:volume_group => 'cinder-volumes',
|
|
:iscsi_ip_address => '127.0.0.1',
|
|
:enabled => true,
|
|
:verbose => false,
|
|
:setup_test_volume => false,
|
|
:volume_driver => 'iscsi'
|
|
)
|
|
}
|
|
end
|
|
|
|
describe "when overriding parameters, but not enabling multi-host or volume management" do
|
|
before do
|
|
params.merge!(
|
|
:private_interface => 'eth1',
|
|
:internal_address => '127.0.0.1',
|
|
:public_interface => 'eth2',
|
|
:nova_user_password => 'nova_pass',
|
|
:nova_db_user => 'nova_user',
|
|
:nova_db_name => 'novadb',
|
|
:rabbit_host => 'my_host',
|
|
:rabbit_password => 'my_rabbit_pw',
|
|
:rabbit_user => 'my_rabbit_user',
|
|
:rabbit_virtual_host => '/foo',
|
|
:glance_api_servers => ['controller:9292'],
|
|
:libvirt_type => 'qemu',
|
|
:vncproxy_host => '127.0.0.2',
|
|
:vnc_enabled => false,
|
|
:verbose => true
|
|
)
|
|
end
|
|
it do
|
|
should contain_class('nova').with(
|
|
:sql_connection => 'mysql://nova_user:pass@127.0.0.1/novadb',
|
|
:rabbit_host => 'my_host',
|
|
:rabbit_userid => 'my_rabbit_user',
|
|
:rabbit_password => 'my_rabbit_pw',
|
|
:rabbit_virtual_host => '/foo',
|
|
:image_service => 'nova.image.glance.GlanceImageService',
|
|
:glance_api_servers => ['controller:9292'],
|
|
:verbose => true
|
|
)
|
|
should contain_class('nova::compute').with(
|
|
:enabled => true,
|
|
:vnc_enabled => false,
|
|
:vncserver_proxyclient_address => '127.0.0.1',
|
|
:vncproxy_host => '127.0.0.2'
|
|
)
|
|
should contain_class('nova::compute::libvirt').with(
|
|
:libvirt_type => 'qemu',
|
|
:vncserver_listen => '127.0.0.1'
|
|
)
|
|
should contain_nova_config('DEFAULT/multi_host').with( :value => 'False' )
|
|
should contain_nova_config('DEFAULT/send_arp_for_ha').with( :value => 'False' )
|
|
should_not contain_class('nova::api')
|
|
should contain_class('nova::network').with({
|
|
:enabled => false,
|
|
:install_service => false,
|
|
:private_interface => 'eth1',
|
|
:public_interface => 'eth2',
|
|
:create_networks => false,
|
|
:enabled => false,
|
|
:install_service => false
|
|
})
|
|
end
|
|
end
|
|
|
|
context 'with cinder' do
|
|
before do
|
|
params.merge!(
|
|
:manage_volumes => false
|
|
)
|
|
end
|
|
it { should_not contain_class('openstack::cinder::storage') }
|
|
|
|
end
|
|
|
|
describe 'when quantum is false' do
|
|
|
|
describe 'configuring for multi host' do
|
|
before do
|
|
params.merge!(
|
|
:multi_host => true,
|
|
:public_interface => 'eth0',
|
|
:quantum => false
|
|
)
|
|
end
|
|
|
|
it 'should configure nova for multi-host' do
|
|
#should contain_class('keystone::python')
|
|
should contain_nova_config('DEFAULT/multi_host').with(:value => 'True')
|
|
should contain_nova_config('DEFAULT/send_arp_for_ha').with( :value => 'True')
|
|
should contain_class('nova::network').with({
|
|
'enabled' => true,
|
|
'install_service' => true
|
|
})
|
|
should_not contain_class('openstack::quantum')
|
|
end
|
|
|
|
describe 'with defaults' do
|
|
it { should contain_class('nova::api').with(
|
|
:enabled => true,
|
|
:admin_tenant_name => 'services',
|
|
:admin_user => 'nova',
|
|
:admin_password => 'nova_pass',
|
|
:enabled_apis => 'ec2,osapi_compute,metadata'
|
|
)}
|
|
end
|
|
end
|
|
|
|
describe 'when overriding network params' do
|
|
before do
|
|
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
|
|
|
|
describe "when configuring for multi host without a public interface" do
|
|
before do
|
|
params.merge!( :multi_host => true )
|
|
end
|
|
|
|
it {
|
|
expect { should raise_error(Puppet::Error) }
|
|
}
|
|
end
|
|
|
|
describe "when enabling volume management and using multi host" do
|
|
before do
|
|
params.merge!(
|
|
:multi_host => true,
|
|
:public_interface => 'eth0',
|
|
:manage_volumes => true
|
|
)
|
|
end
|
|
|
|
it {
|
|
should contain_nova_config('DEFAULT/multi_host').with({ 'value' => 'True'})
|
|
should contain_class('nova::api')
|
|
should contain_class('nova::network').with({
|
|
'enabled' => true,
|
|
'install_service' => true
|
|
})
|
|
}
|
|
end
|
|
|
|
describe 'when configuring quantum' do
|
|
before do
|
|
params.merge!(
|
|
:internal_address => '127.0.0.1',
|
|
:public_interface => 'eth3',
|
|
:quantum => true,
|
|
:keystone_host => '127.0.0.3',
|
|
:quantum_host => '127.0.0.2',
|
|
:quantum_user_password => 'quantum_user_password'
|
|
)
|
|
end
|
|
|
|
it 'should configure quantum' do
|
|
should contain_class('openstack::quantum').with(
|
|
:db_host => '127.0.0.1',
|
|
:ovs_local_ip => params[:internal_address],
|
|
:rabbit_host => params[:rabbit_host],
|
|
:rabbit_user => 'openstack',
|
|
:rabbit_password => params[:rabbit_password],
|
|
:enable_ovs_agent => true,
|
|
:firewall_driver => false,
|
|
:enable_l3_agent => false,
|
|
:enable_dhcp_agent => false,
|
|
:auth_url => 'http://127.0.0.1:35357/v2.0',
|
|
:user_password => params[:quantum_user_password],
|
|
:keystone_host => params[:keystone_host],
|
|
:enabled => true,
|
|
:enable_server => false,
|
|
:verbose => false
|
|
)
|
|
|
|
should contain_class('nova::compute::quantum').with(
|
|
:libvirt_vif_driver => 'nova.virt.libvirt.vif.LibvirtGenericVIFDriver'
|
|
)
|
|
|
|
should contain_class('nova::network::quantum').with(
|
|
:quantum_admin_password => 'quantum_user_password',
|
|
:quantum_auth_strategy => 'keystone',
|
|
:quantum_url => "http://127.0.0.2:9696",
|
|
:quantum_admin_tenant_name => 'services',
|
|
:quantum_admin_username => 'quantum',
|
|
:quantum_admin_auth_url => "http://127.0.0.3:35357/v2.0"
|
|
)
|
|
|
|
should_not contain_class('quantum::server')
|
|
should_not contain_class('quantum::plugins::ovs')
|
|
should_not contain_class('quantum::agents::dhcp')
|
|
should_not contain_class('quantum::agents::l3')
|
|
end
|
|
end
|
|
|
|
end
|