
This adds defined anchor points for external modules to hook into the software install, config and service dependency chain. This allows external modules to manage software installation (virtualenv, containers, etc) and service management (pacemaker) without needing rely on resources that may change or be renamed. Change-Id: I0b524e354b095f2642fd38a2f88536d15bcdf855
247 lines
8.2 KiB
Ruby
247 lines
8.2 KiB
Ruby
require 'spec_helper'
|
|
|
|
describe 'nova::network' do
|
|
|
|
let :pre_condition do
|
|
'include nova'
|
|
end
|
|
|
|
let :default_params do
|
|
{
|
|
:private_interface => 'eth1',
|
|
:fixed_range => '10.0.0.0/32',
|
|
}
|
|
end
|
|
|
|
let :params do
|
|
default_params
|
|
end
|
|
|
|
describe 'on debian platforms' do
|
|
|
|
let :facts do
|
|
@default_facts.merge({ :osfamily => 'Debian' })
|
|
end
|
|
|
|
it { is_expected.to contain_sysctl__value('net.ipv4.ip_forward').with_value('1') }
|
|
|
|
describe 'when installing service' do
|
|
|
|
it { is_expected.to contain_package('nova-network').with(
|
|
'name' => 'nova-network',
|
|
'ensure' => 'present',
|
|
'notify' => ['Anchor[nova::install::end]'],
|
|
) }
|
|
|
|
describe 'with enabled as true' do
|
|
it { is_expected.to contain_service('nova-network').with(
|
|
'name' => 'nova-network',
|
|
'ensure' => 'running',
|
|
'hasstatus' => true,
|
|
'enable' => true
|
|
)}
|
|
end
|
|
describe 'when enabled is set to false' do
|
|
let :params do
|
|
default_params.merge(:enabled => false)
|
|
end
|
|
it { is_expected.to contain_service('nova-network').with(
|
|
'name' => 'nova-network',
|
|
'ensure' => 'stopped',
|
|
'hasstatus' => true,
|
|
'enable' => false
|
|
)}
|
|
end
|
|
end
|
|
describe 'when not installing service' do
|
|
|
|
let :params do
|
|
default_params.merge(:install_service => false)
|
|
end
|
|
|
|
it { is_expected.to_not contain_package('nova-network') }
|
|
it { is_expected.to_not contain_service('nova-network') }
|
|
|
|
end
|
|
|
|
describe 'when not creating networks' do
|
|
let :params do
|
|
default_params.merge(:create_networks => false)
|
|
end
|
|
it { is_expected.to_not contain_nova__manage__network('nova-vm-net') }
|
|
it { is_expected.to_not contain_nova__manage__floating('nova-vm-floating') }
|
|
end
|
|
|
|
describe 'when creating networks' do
|
|
it { is_expected.to contain_nova__manage__network('nova-vm-net').with(
|
|
:network => '10.0.0.0/32',
|
|
:num_networks => '1'
|
|
) }
|
|
it { is_expected.to_not contain__nova__manage__floating('nova-vm-floating') }
|
|
describe 'when number of networks is set' do
|
|
let :params do
|
|
default_params.merge(:num_networks => '2')
|
|
end
|
|
it { is_expected.to contain_nova__manage__network('nova-vm-net').with(
|
|
:num_networks => '2'
|
|
) }
|
|
end
|
|
describe 'when floating range is set' do
|
|
let :params do
|
|
default_params.merge(:floating_range => '10.0.0.0/30')
|
|
end
|
|
it { is_expected.to contain_nova_config('DEFAULT/floating_range').with_value('10.0.0.0/30') }
|
|
it { is_expected.to contain_nova_config('DEFAULT/auto_assign_floating_ip').with_value('false') }
|
|
it { is_expected.to contain_nova_config('DEFAULT/multi_host').with_value('false') }
|
|
it { is_expected.to contain_nova__manage__floating('nova-vm-floating').with_network('10.0.0.0/30') }
|
|
end
|
|
end
|
|
|
|
describe 'when creating networks, but service nova-network is disabled' do
|
|
let :params do
|
|
default_params.merge(:enabled => false)
|
|
end
|
|
it { is_expected.to_not contain_nova__manage__network('nova-vm-net') }
|
|
it { is_expected.to_not contain_nova__manage__floating('nova-vm-floating') }
|
|
end
|
|
|
|
describe 'when configuring networks' do
|
|
describe 'when configuring flatdhcpmanager' do
|
|
let :params do
|
|
default_params.merge(:network_manager => 'nova.network.manager.FlatDHCPManager')
|
|
end
|
|
it { is_expected.to contain_class('nova::network::flatdhcp').with(
|
|
:fixed_range => '10.0.0.0/32',
|
|
:public_interface => nil,
|
|
:flat_interface => 'eth1',
|
|
:flat_network_bridge => 'br100',
|
|
:force_dhcp_release => true,
|
|
:flat_injected => false,
|
|
:dhcp_domain => 'novalocal',
|
|
:dhcpbridge => '/usr/bin/nova-dhcpbridge',
|
|
:dhcpbridge_flagfile => '/etc/nova/nova.conf'
|
|
) }
|
|
describe 'when overriding parameters' do
|
|
let :params do
|
|
default_params.merge(
|
|
{
|
|
:network_manager => 'nova.network.manager.FlatDHCPManager',
|
|
:public_interface => 'eth0',
|
|
:config_overrides =>
|
|
{
|
|
'flat_network_bridge' => 'br400',
|
|
'force_dhcp_release' => false,
|
|
'flat_injected' => true,
|
|
'dhcp_domain' => 'not-novalocal',
|
|
'dhcpbridge' => '/tmp/bridge',
|
|
'dhcpbridge_flagfile' => '/tmp/file',
|
|
}
|
|
}
|
|
)
|
|
end
|
|
it { is_expected.to contain_class('nova::network::flatdhcp').with(
|
|
:fixed_range => '10.0.0.0/32',
|
|
:public_interface => 'eth0',
|
|
:flat_interface => 'eth1',
|
|
:flat_network_bridge => 'br400',
|
|
#:force_dhcp_release => false,
|
|
:flat_injected => true,
|
|
:dhcp_domain => 'not-novalocal',
|
|
:dhcpbridge => '/tmp/bridge',
|
|
:dhcpbridge_flagfile => '/tmp/file'
|
|
) }
|
|
|
|
end
|
|
end
|
|
describe 'when configuring flatmanager' do
|
|
let :params do
|
|
default_params.merge(:network_manager => 'nova.network.manager.FlatManager')
|
|
end
|
|
it { is_expected.to contain_class('nova::network::flat').with(
|
|
:fixed_range => '10.0.0.0/32',
|
|
:public_interface => nil,
|
|
:flat_interface => 'eth1',
|
|
:flat_network_bridge => 'br100'
|
|
) }
|
|
describe 'when overriding flat network params' do
|
|
let :params do
|
|
default_params.merge(
|
|
{
|
|
:network_manager => 'nova.network.manager.FlatManager',
|
|
:public_interface => 'eth0',
|
|
:config_overrides => {'flat_network_bridge' => 'br400' }
|
|
}
|
|
)
|
|
end
|
|
it { is_expected.to contain_class('nova::network::flat').with(
|
|
:public_interface => 'eth0',
|
|
:flat_network_bridge => 'br400'
|
|
) }
|
|
end
|
|
end
|
|
describe 'when configuring vlan' do
|
|
let :params do
|
|
default_params.merge(:network_manager => 'nova.network.manager.VlanManager')
|
|
end
|
|
it { is_expected.to contain_class('nova::network::vlan').with(
|
|
:fixed_range => '10.0.0.0/32',
|
|
:public_interface => nil,
|
|
:vlan_interface => 'eth1',
|
|
:force_dhcp_release => true,
|
|
:dhcp_domain => 'novalocal',
|
|
:dhcpbridge => '/usr/bin/nova-dhcpbridge',
|
|
:dhcpbridge_flagfile => '/etc/nova/nova.conf'
|
|
) }
|
|
describe 'when overriding parameters' do
|
|
let :params do
|
|
default_params.merge(
|
|
{
|
|
}
|
|
)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
describe 'with package version' do
|
|
let :params do
|
|
default_params.merge(:ensure_package => '2012.1-2')
|
|
end
|
|
it { is_expected.to contain_package('nova-network').with(
|
|
'ensure' => '2012.1-2'
|
|
)}
|
|
end
|
|
|
|
describe 'when creating network with nameservers' do
|
|
let :params do
|
|
default_params.merge(
|
|
{
|
|
:create_networks => true,
|
|
:dns1 => '8.8.8.8',
|
|
:dns2 => '8.8.4.4'
|
|
}
|
|
)
|
|
end
|
|
it { is_expected.to contain_class('nova::network').with(
|
|
:dns1 => '8.8.8.8',
|
|
:dns2 => '8.8.4.4'
|
|
) }
|
|
it { is_expected.to contain_nova__manage__network('nova-vm-net').with(
|
|
:dns1 => '8.8.8.8',
|
|
:dns2 => '8.8.4.4'
|
|
) }
|
|
end
|
|
end
|
|
describe 'on rhel' do
|
|
let :facts do
|
|
@default_facts.merge({ :osfamily => 'RedHat' })
|
|
end
|
|
it { is_expected.to contain_service('nova-network').with(
|
|
'name' => 'openstack-nova-network',
|
|
'ensure' => 'running',
|
|
'hasstatus' => true,
|
|
'enable' => true
|
|
)}
|
|
it { is_expected.to contain_package('nova-network').with_name('openstack-nova-network') }
|
|
end
|
|
end
|