Files
puppet-nova/spec/classes/nova_network_spec.rb
Clayton O'Neill cb77bc295f Add hooks for external install & svc management
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
2015-12-08 10:14:11 -05:00

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