puppet-openstack/spec/classes/openstack_compute_spec.rb
Pradeep Kilambi 7eb9ceea7a Expose security_group_api for nova compute
This is already done for control node nova config, turns out
its needed for computes. This commit should take care of exposing
parameter so it can be set appropriately to nova/neutron.

Change-Id: I95a6e9e49cc14c4d5f390b271b60b5aaf2ea2278
2013-08-14 14:13:33 -04:00

333 lines
12 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_hosts => false,
: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',
:neutron => 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_hosts => false,
: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,
:force_config_drive => 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_hosts => false,
: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_hosts => ['rabbit:5673', 'rabbit2:5674'],
: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,
:force_config_drive => true,
: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_hosts => ['rabbit:5673', 'rabbit2:5674'],
: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',
:force_config_drive => true
)
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
context 'with rbd storage' do
before do
params.merge!(
:cinder_volume_driver => 'rbd',
:cinder_rbd_user => 'volumes',
:cinder_rbd_pool => 'volumes'
)
end
it do
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,
:rbd_user => 'volumes',
:rbd_pool => 'volumes',
:volume_driver => 'rbd'
)
end
end
describe 'when neutron is false' do
describe 'configuring for multi host' do
before do
params.merge!(
:multi_host => true,
:public_interface => 'eth0',
:neutron => 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::neutron')
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 neutron' do
before do
params.merge!(
:internal_address => '127.0.0.1',
:public_interface => 'eth3',
:neutron => true,
:keystone_host => '127.0.0.3',
:neutron_host => '127.0.0.2',
:ovs_enable_tunneling => true,
:neutron_user_password => 'neutron_user_password',
:neutron_firewall_driver => false
)
end
it 'should configure neutron' do
should contain_class('openstack::neutron').with(
:db_host => '127.0.0.1',
:ovs_local_ip => params[:internal_address],
:rabbit_host => params[:rabbit_host],
:rabbit_hosts => params[:rabbit_hosts],
:rabbit_user => 'openstack',
:rabbit_password => params[:rabbit_password],
:enable_ovs_agent => true,
:ovs_enable_tunneling => params[:ovs_enable_tunneling],
:firewall_driver => params[:neutron_firewall_driver],
:enable_l3_agent => false,
:enable_dhcp_agent => false,
:auth_url => 'http://127.0.0.1:35357/v2.0',
:user_password => params[:neutron_user_password],
:keystone_host => params[:keystone_host],
:enabled => true,
:enable_server => false,
:verbose => false
)
should contain_class('nova::compute::neutron').with(
:libvirt_vif_driver => 'nova.virt.libvirt.vif.LibvirtGenericVIFDriver'
)
should contain_class('nova::network::neutron').with(
:neutron_admin_password => 'neutron_user_password',
:neutron_auth_strategy => 'keystone',
:neutron_url => "http://127.0.0.2:9696",
:neutron_admin_tenant_name => 'services',
:neutron_admin_username => 'neutron',
:neutron_admin_auth_url => "http://127.0.0.3:35357/v2.0",
:security_group_api => 'neutron'
)
should_not contain_class('neutron::server')
should_not contain_class('neutron::plugins::ovs')
should_not contain_class('neutron::agents::dhcp')
should_not contain_class('neutron::agents::l3')
end
end
end