ba0eb6f2f6
Also need to remove installing explicit installation of openvswitch and call vswitch::ovs instead. Adding testcases to neutron_agents_n1kv_vem_spec.rb and fixing an error in neutron_plugins_ml2_spec.rb Change-Id: I2b4ada801610d7081ac3e2469bcacd6ea5ec8e7d Closes-Bug: 1421449
216 lines
5.9 KiB
Ruby
216 lines
5.9 KiB
Ruby
require 'spec_helper'
|
|
|
|
describe 'neutron::agents::n1kv_vem' do
|
|
|
|
let :facts do
|
|
{ :osfamily => 'RedHat' }
|
|
end
|
|
|
|
it 'should have a n1kv-vem config file' do
|
|
should contain_file('/etc/n1kv/n1kv.conf').with(
|
|
:ensure => 'present',
|
|
:owner => 'root',
|
|
:group => 'root',
|
|
:mode => '0664'
|
|
)
|
|
end
|
|
|
|
it 'install n1kv-vem' do
|
|
should contain_package('libnl').with_before('Package[nexus1000v]')
|
|
should contain_service('openvswitch').with_notify('Package[nexus1000v]')
|
|
should contain_package('nexus1000v').with_notify('Service[nexus1000v]')
|
|
should contain_service('nexus1000v').with_ensure('running')
|
|
end
|
|
|
|
context 'with local file vem rpm' do
|
|
let :params do
|
|
{
|
|
:n1kv_source => 'vem.rpm'
|
|
}
|
|
end
|
|
|
|
it 'verify dependency' do
|
|
should contain_package('nexus1000v').with_source('/var/n1kv/vem.rpm')
|
|
should contain_file('/var/n1kv/vem.rpm').that_requires('File[/var/n1kv]')
|
|
should contain_file('/var/n1kv/vem.rpm').with(
|
|
:owner => 'root',
|
|
:group => 'root',
|
|
:mode => '0664'
|
|
)
|
|
end
|
|
end
|
|
|
|
context 'remote vem rpm' do
|
|
let :params do
|
|
{
|
|
:n1kv_source => 'http://www.cisco.com/repo'
|
|
}
|
|
end
|
|
|
|
it 'verify dependency' do
|
|
should contain_package('nexus1000v').without_source
|
|
should contain_yumrepo('cisco-vem-repo').with(
|
|
:baseurl => 'http://www.cisco.com/repo',
|
|
:enabled => 1
|
|
)
|
|
end
|
|
end
|
|
|
|
it 'execute reread config upon config change' do
|
|
should contain_exec('vemcmd reread config') \
|
|
.that_subscribes_to('File[/etc/n1kv/n1kv.conf]')
|
|
end
|
|
|
|
context 'verify n1kv.conf default' do
|
|
let :params do
|
|
{
|
|
:n1kv_vsm_ip => '9.0.0.1',
|
|
:n1kv_vsm_domain_id => 900,
|
|
:host_mgmt_intf => 'eth9',
|
|
:portdb => 'ovs',
|
|
:fastpath_flood => 'disable'
|
|
}
|
|
end
|
|
it do
|
|
should contain_file('/etc/n1kv/n1kv.conf') \
|
|
.with_content(/^l3control-ipaddr 9.0.0.1/)
|
|
should contain_file('/etc/n1kv/n1kv.conf') \
|
|
.with_content(/^switch-domain 900/)
|
|
should contain_file('/etc/n1kv/n1kv.conf') \
|
|
.with_content(/^host-mgmt-intf eth9/)
|
|
should contain_file('/etc/n1kv/n1kv.conf') \
|
|
.with_content(/^portdb ovs/)
|
|
should contain_file('/etc/n1kv/n1kv.conf') \
|
|
.without_content(/^phys/)
|
|
should contain_file('/etc/n1kv/n1kv.conf') \
|
|
.without_content(/^virt/)
|
|
should contain_file('/etc/n1kv/n1kv.conf') \
|
|
.with_content(/^node-type compute/)
|
|
should contain_file('/etc/n1kv/n1kv.conf') \
|
|
.with_content(/^fastpath-flood disable/)
|
|
end
|
|
end
|
|
|
|
context 'verify node_type' do
|
|
let :params do
|
|
{
|
|
:node_type => 'network',
|
|
}
|
|
end
|
|
it do
|
|
should contain_file('/etc/n1kv/n1kv.conf') \
|
|
.with_content(/^node-type network/)
|
|
should contain_file('/etc/n1kv/n1kv.conf') \
|
|
.without_content(/^node-type compute/)
|
|
end
|
|
end
|
|
|
|
context 'verify portdb' do
|
|
let :params do
|
|
{
|
|
:portdb => 'vem',
|
|
}
|
|
end
|
|
it do
|
|
should contain_file('/etc/n1kv/n1kv.conf') \
|
|
.with_content(/^portdb vem/)
|
|
should contain_file('/etc/n1kv/n1kv.conf') \
|
|
.without_content(/^portdb ovs/)
|
|
end
|
|
end
|
|
|
|
context 'verify fastpath_flood' do
|
|
let :params do
|
|
{
|
|
:fastpath_flood => 'enable',
|
|
}
|
|
end
|
|
it do
|
|
should contain_file('/etc/n1kv/n1kv.conf') \
|
|
.with_content(/^fastpath-flood enable/)
|
|
should contain_file('/etc/n1kv/n1kv.conf') \
|
|
.without_content(/^fastpath-flood disable/)
|
|
end
|
|
end
|
|
|
|
context 'verify n1kv.conf with uplinks' do
|
|
let :params do
|
|
{
|
|
:uplink_profile => { 'eth1' => 'prof1',
|
|
'eth2' => 'prof2'
|
|
}
|
|
}
|
|
end
|
|
it do
|
|
should contain_file('/etc/n1kv/n1kv.conf') \
|
|
.with_content(/^phys eth1 profile prof1/)
|
|
should contain_file('/etc/n1kv/n1kv.conf') \
|
|
.with_content(/^phys eth2 profile prof2/)
|
|
end
|
|
|
|
end
|
|
|
|
context 'verify n1kv.conf with vtep info' do
|
|
let :params do
|
|
{
|
|
:vtep_config => { 'vtep1' => { 'profile' => 'profint',
|
|
'ipmode' => 'dhcp'
|
|
},
|
|
'vtep2' => { 'profile' => 'profint',
|
|
'ipmode' => 'static',
|
|
'ipaddress' => '192.168.1.1',
|
|
'netmask' => '255.255.255.0'
|
|
}
|
|
}
|
|
}
|
|
end
|
|
it do
|
|
should contain_file('/etc/n1kv/n1kv.conf') \
|
|
.with_content(/^virt vtep1 profile profint mode dhcp/)
|
|
should contain_file('/etc/n1kv/n1kv.conf') \
|
|
.with_content(/^virt vtep2 profile profint mode static/)
|
|
end
|
|
|
|
end
|
|
|
|
context 'with manage_service as false' do
|
|
let :params do
|
|
{
|
|
:manage_service => false
|
|
}
|
|
end
|
|
it 'should not start/stop service' do
|
|
should contain_service('nexus1000v').without_ensure
|
|
end
|
|
end
|
|
|
|
context 'with manage_service true and enable_service false' do
|
|
let :params do
|
|
{
|
|
:manage_service => true,
|
|
:enable => false
|
|
}
|
|
end
|
|
it 'should stop service' do
|
|
should contain_service('nexus1000v').with_ensure('stopped')
|
|
end
|
|
end
|
|
|
|
context 'verify sysctl setting with vteps_in_same_subnet true' do
|
|
let :params do
|
|
{
|
|
:vteps_in_same_subnet => true
|
|
}
|
|
end
|
|
it do
|
|
should contain_sysctl__value('net.ipv4.conf.default.rp_filter').with_value('2')
|
|
should contain_sysctl__value('net.ipv4.conf.all.rp_filter').with_value('2')
|
|
should contain_sysctl__value('net.ipv4.conf.default.arp_ignore').with_value('1')
|
|
should contain_sysctl__value('net.ipv4.conf.all.arp_ignore').with_value('1')
|
|
should contain_sysctl__value('net.ipv4.conf.all.arp_announce').with_value('2')
|
|
should contain_sysctl__value('net.ipv4.conf.default.arp_announce').with_value('2')
|
|
end
|
|
end
|
|
|
|
end
|