puppet-vswitch/spec/acceptance/basic_vswitch_spec.rb
Takashi Kajinami 10202ad22f vs_config: Fix broken idempotency with nil/empty value
If the value is nil or empty then the option should NOT exist. This
change fixes the logic to determine whether the option already exists
which is causing broken idempotency.

Closes-Bug: #1987419
Change-Id: I56f85ca35f8e9ee4e5e8d07c714b65f655b1e9ae
2022-08-24 08:56:32 +09:00

135 lines
3.5 KiB
Ruby

require 'spec_helper_acceptance'
describe 'basic vswitch' do
context 'default parameters' do
it 'should work with no errors' do
pp= <<-EOS
include openstack_integration
include openstack_integration::repos
include vswitch::ovs
vs_bridge { 'br-ci1':
ensure => present,
}
vs_bridge { 'br-ci2':
ensure => present,
external_ids => 'bridge-id=br-ci2'
}
vs_bridge { 'br-ci3':
ensure => present,
mac_table_size => 50000,
}
vs_bridge { 'br-ci4':
ensure => present,
external_ids => 'bridge-id=br-ci4',
mac_table_size => 50000,
}
~> exec { 'create_loop1_port':
path => '/usr/bin:/bin:/usr/sbin:/sbin',
provider => shell,
command => 'ip link add name loop1 type dummy && ip addr add 127.2.0.1/24 dev loop1',
before => Vs_port['loop1'],
refreshonly => true,
}
-> vs_port { 'loop1':
ensure => present,
bridge => 'br-ci4',
}
vs_config { 'external_ids:ovn-remote':
ensure => present,
value => 'tcp:127.0.0.1:2300',
}
vs_config { 'other_config:thisshouldexist':
ensure => present,
value => 'customvalue',
}
vs_config { 'other_config:thisshouldnotexist':
ensure => present,
value => undef,
}
vs_config { 'other_config:thisshouldnotexist2':
ensure => present,
value => '',
}
vs_config { 'other_config:thisshouldnotexist3':
ensure => present,
value => [],
}
EOS
# Run it twice and test for idempotency
apply_manifest(pp, :catch_failures => true)
apply_manifest(pp, :catch_changes => true)
end
it 'should have br-ci1 bridge' do
command('ovs-vsctl show') do |r|
expect(r.stdout).to match(/br-ci1/)
end
end
it 'should have br-ci2 bridge' do
command('ovs-vsctl show') do |r|
expect(r.stdout).to match(/br-ci2/)
end
end
it 'should have external_ids on br-ci2 bridge' do
command('ovs-vsctl br-get-external-id br-ci2') do |r|
expect(r.stdout).to match(/bridge-id=br-ci2/)
end
end
it 'should have br-ci3 bridge' do
command('ovs-vsctl show') do |r|
expect(r.stdout).to match(/br-ci3/)
end
end
it 'should have mac-table-size on br-ci3 bridge' do
command('ovs-vsctl get Bridge br-ci3 other-config:mac-table-size') do |r|
expect(r.stdout).to match(/\"50000\"/)
end
end
it 'should have br-ci4 bridge' do
command('ovs-vsctl show') do |r|
expect(r.stdout).to match(/br-ci4/)
end
end
it 'should have external_ids on br-ci4 bridge' do
command('ovs-vsctl br-get-external-id br-ci4') do |r|
expect(r.stdout).to match(/bridge-id=br-ci4/)
end
end
it 'should have mac-table-size on br-ci4 bridge' do
command('ovs-vsctl get Bridge br-ci4 other-config:mac-table-size') do |r|
expect(r.stdout).to match(/\"50000\"/)
end
end
it 'should get remote addr' do
command('ovs-vsctl get Open_vSwitch . external_ids:ovn-remote') do |r|
expect(r.stdout).to match(/\"tcp:127.0.0.1:2300\"/)
end
end
it 'should get other config' do
command('sudo ovs-vsctl get Open_Vswitch . other_config') do |r|
expect(r.stdout).to match(/\"{thishshouldexist=customvalue}"/)
end
end
end
end