
This commit contains changes that I made to get quantum working with folsom. While these changes do not lead to the fully automated install of a fully functional quantum environment, they are much closer, with only a few minor issues with floating ip routing and the metadata server left. This commit also updates the nova tests to be able to use quantum. Again though, it does not work 100%. Change-Id: I35e13123a7cfa2f8cf147aedf7c1f92e440d0cd8
266 lines
8.7 KiB
Ruby
266 lines
8.7 KiB
Ruby
require 'spec_helper'
|
|
|
|
describe 'openstack::compute' do
|
|
|
|
let :default_params do
|
|
{
|
|
:private_interface => 'eth0',
|
|
:internal_address => '0.0.0.0',
|
|
:nova_user_password => 'nova_pass',
|
|
:rabbit_password => 'rabbit_pw',
|
|
:rabbit_host => '127.0.0.1',
|
|
:rabbit_virtual_host => '/',
|
|
: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
|
|
|
|
let :facts do
|
|
{
|
|
:operatingsystem => 'Ubuntu',
|
|
:osfamily => 'Debian',
|
|
}
|
|
end
|
|
|
|
describe "when using default class parameters" do
|
|
let :params do
|
|
default_params
|
|
end
|
|
it {
|
|
should contain_class('nova').with(
|
|
:sql_connection => 'mysql://user:pass@host/dbname/',
|
|
:rabbit_host => '127.0.0.1',
|
|
:rabbit_userid => 'nova',
|
|
:rabbit_password => 'rabbit_pw',
|
|
:rabbit_virtual_host => '/',
|
|
:image_service => 'nova.image.glance.GlanceImageService',
|
|
:glance_api_servers => false,
|
|
:verbose => 'False'
|
|
)
|
|
should contain_class('nova::compute').with(
|
|
:enabled => true,
|
|
:vnc_enabled => true,
|
|
:vncserver_proxyclient_address => '0.0.0.0',
|
|
:vncproxy_host => false
|
|
)
|
|
should contain_class('nova::compute::libvirt').with(
|
|
:libvirt_type => 'kvm',
|
|
:vncserver_listen => '0.0.0.0'
|
|
)
|
|
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 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
|
|
})
|
|
}
|
|
end
|
|
|
|
describe "when overriding parameters, but not enabling multi-host or volume management" do
|
|
let :override_params do
|
|
{
|
|
:private_interface => 'eth1',
|
|
:internal_address => '127.0.0.1',
|
|
:public_interface => 'eth2',
|
|
:sql_connection => 'mysql://user:passwd@host/name',
|
|
:nova_user_password => 'nova_pass',
|
|
: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
|
|
let :params do
|
|
default_params.merge(override_params)
|
|
end
|
|
it do
|
|
should contain_class('nova').with(
|
|
:sql_connection => 'mysql://user:passwd@host/name',
|
|
: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('multi_host').with( :value => 'False' )
|
|
should contain_nova_config('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
|
|
|
|
describe "when enabling volume management" do
|
|
let :params do
|
|
default_params.merge({
|
|
:manage_volumes => true
|
|
})
|
|
end
|
|
|
|
it do
|
|
should contain_nova_config('multi_host').with({ 'value' => 'False'})
|
|
should_not contain_class('nova::api')
|
|
should contain_class('nova::network').with({
|
|
'enabled' => false,
|
|
'install_service' => false
|
|
})
|
|
end
|
|
end
|
|
|
|
describe 'when quantum is false' do
|
|
describe 'configuring for multi host' do
|
|
let :params do
|
|
default_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('multi_host').with(:value => 'True')
|
|
should contain_nova_config('send_arp_for_ha').with( :value => 'True')
|
|
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,
|
|
:admin_tenant_name => 'services',
|
|
:admin_user => 'nova',
|
|
:admin_password => 'nova_pass'
|
|
)}
|
|
end
|
|
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
|
|
|
|
describe "when configuring for multi host without a public interface" do
|
|
let :params do
|
|
default_params.merge({
|
|
:multi_host => true
|
|
})
|
|
end
|
|
|
|
it {
|
|
expect { should raise_error(Puppet::Error) }
|
|
}
|
|
end
|
|
|
|
describe "when enabling volume management and using multi host" do
|
|
let :params do
|
|
default_params.merge({
|
|
:multi_host => true,
|
|
:public_interface => 'eth0',
|
|
:manage_volumes => true,
|
|
})
|
|
end
|
|
|
|
it {
|
|
should contain_nova_config('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
|
|
let :params do
|
|
default_params.merge({
|
|
:internal_address => '127.0.0.1',
|
|
:public_interface => 'eth3',
|
|
:quantum => true,
|
|
:keystone_host => '127.0.0.1',
|
|
:quantum_host => '127.0.0.1',
|
|
:quantum_user_password => 'quantum_user_password',
|
|
})
|
|
end
|
|
it 'should configure quantum' do
|
|
should contain_class('quantum').with(
|
|
:verbose => 'False',
|
|
:debug => 'False',
|
|
:rabbit_host => default_params[:rabbit_host],
|
|
:rabbit_password => default_params[:rabbit_password]
|
|
)
|
|
should contain_class('quantum::agents::ovs').with(
|
|
:enable_tunneling => true,
|
|
:local_ip => '127.0.0.1'
|
|
)
|
|
should contain_class('nova::compute::quantum')
|
|
should contain_class('nova::network::quantum').with(
|
|
:quantum_admin_password => 'quantum_user_password',
|
|
:quantum_connection_host => '127.0.0.1',
|
|
:quantum_url => "http://127.0.0.1:9696",
|
|
:quantum_admin_tenant_name => 'services',
|
|
:quantum_admin_auth_url => "http://127.0.0.1:35357/v2.0"
|
|
)
|
|
end
|
|
end
|
|
|
|
end
|