Files
puppet-neutron/spec/unit/provider/neutron_network/openstack_spec.rb
Takashi Kajinami 0235eb47aa Remove tenant_* properties
These were deprecated[1] during the past cycle so can be removed now.

[1] 91c9bc3f33

Change-Id: Ib1d2a70a8e40680ebb582cbf4e59a0c018c21447
2023-03-13 12:08:53 +09:00

340 lines
10 KiB
Ruby

require 'puppet'
require 'spec_helper'
require 'puppet/provider/neutron_network/openstack'
provider_class = Puppet::Type.type(:neutron_network).provider(:openstack)
describe provider_class do
let(:set_env) do
ENV['OS_USERNAME'] = 'test'
ENV['OS_PASSWORD'] = 'abc123'
ENV['OS_PROJECT_NAME'] = 'test'
ENV['OS_AUTH_URL'] = 'http://127.0.0.1:5000'
end
describe 'manage networks' do
let :net_name do
'net1'
end
let :net_attrs do
{
:name => net_name,
:ensure => 'present',
}
end
let :resource do
Puppet::Type::Neutron_network.new(net_attrs)
end
let :provider do
provider_class.new(resource)
end
before :each do
set_env
end
describe '#create' do
context 'with defaults' do
it 'creates network' do
expect(provider_class).to receive(:openstack)
.with('network', 'create', '--format', 'shell',
['net1'])
.and_return('admin_state_up="True"
availability_zone_hints="[]"
id="076520cc-b783-4cf5-a4a9-4cb5a5e93a9b"
project_id="60f9544eb94c42a6b7e8e98c2be981b1"
router_external="False"
shared="False"
mtu="1500"')
provider.create
expect(provider.exists?).to be_truthy
expect(provider.admin_state_up).to eq('True')
expect(provider.project_id).to eq('60f9544eb94c42a6b7e8e98c2be981b1')
expect(provider.router_external).to eq('False')
expect(provider.shared).to eq('False')
expect(provider.mtu).to eq('1500')
end
end
context 'with admin_state_up' do
let :net_attrs do
{
:name => net_name,
:ensure => 'present',
:admin_state_up => 'False',
}
end
it 'creates network' do
expect(provider_class).to receive(:openstack)
.with('network', 'create', '--format', 'shell',
['net1', '--disable'])
.and_return('admin_state_up="False"
availability_zone_hints="[]"
id="076520cc-b783-4cf5-a4a9-4cb5a5e93a9b"
project_id="60f9544eb94c42a6b7e8e98c2be981b1"
router_external="False"
shared="False"
mtu="1500"')
provider.create
expect(provider.exists?).to be_truthy
expect(provider.admin_state_up).to eq('False')
end
end
context 'with shared' do
let :net_attrs do
{
:name => net_name,
:ensure => 'present',
:shared => 'True',
}
end
it 'creates network' do
expect(provider_class).to receive(:openstack)
.with('network', 'create', '--format', 'shell',
['net1', '--share'])
.and_return('admin_state_up="True"
availability_zone_hints="[]"
id="076520cc-b783-4cf5-a4a9-4cb5a5e93a9b"
project_id="60f9544eb94c42a6b7e8e98c2be981b1"
router_external="False"
shared="True"
mtu="1500"')
provider.create
expect(provider.exists?).to be_truthy
expect(provider.shared).to eq('True')
end
end
context 'with project_name' do
let :net_attrs do
{
:name => net_name,
:ensure => 'present',
:project_name => 'openstack',
}
end
it 'creates network' do
expect(provider_class).to receive(:openstack)
.with('network', 'create', '--format', 'shell',
['net1', '--project=openstack'])
.and_return('admin_state_up="True"
availability_zone_hints="[]"
id="076520cc-b783-4cf5-a4a9-4cb5a5e93a9b"
project_id="60f9544eb94c42a6b7e8e98c2be981b1"
router_external="False"
shared="False"
mtu="1500"')
provider.create
expect(provider.exists?).to be_truthy
end
end
context 'with provider_network' do
let :net_attrs do
{
:name => net_name,
:ensure => 'present',
:provider_network_type => 'vlan',
:provider_physical_network => 'datacentre',
:provider_segmentation_id => 10,
}
end
it 'creates network' do
expect(provider_class).to receive(:openstack)
.with('network', 'create', '--format', 'shell',
['net1', '--provider-network-type=vlan',
'--provider-physical-network=datacentre',
'--provider-segmentation-id=10'])
.and_return('admin_state_up="True"
availability_zone_hints="[]"
id="076520cc-b783-4cf5-a4a9-4cb5a5e93a9b"
project_id="60f9544eb94c42a6b7e8e98c2be981b1"
provider_network_type="vlan"
provider_physical_network="datacentre"
provider_segmentation_id="10"
router_external="False"
shared="False"
mtu="1500"')
provider.create
expect(provider.exists?).to be_truthy
expect(provider.provider_network_type).to eq('vlan')
expect(provider.provider_physical_network).to eq('datacentre')
expect(provider.provider_segmentation_id).to eq('10')
end
end
context 'with router_external' do
let :net_attrs do
{
:name => net_name,
:ensure => 'present',
:router_external => 'True',
}
end
it 'creates network' do
expect(provider_class).to receive(:openstack)
.with('network', 'create', '--format', 'shell',
['net1', '--external'])
.and_return('admin_state_up="True"
availability_zone_hints="[]"
id="076520cc-b783-4cf5-a4a9-4cb5a5e93a9b"
project_id="60f9544eb94c42a6b7e8e98c2be981b1"
router_external="True"
shared="False"
mtu="1500"')
provider.create
expect(provider.exists?).to be_truthy
expect(provider.router_external).to eq('True')
end
end
context 'with mtu' do
let :net_attrs do
{
:name => net_name,
:mtu => 9000,
}
end
it 'creates network' do
expect(provider_class).to receive(:openstack)
.with('network', 'create', '--format', 'shell',
['net1', '--mtu=9000'])
.and_return('admin_state_up="True"
availability_zone_hints="[]"
id="076520cc-b783-4cf5-a4a9-4cb5a5e93a9b"
project_id="60f9544eb94c42a6b7e8e98c2be981b1"
router_external="True"
shared="False"
mtu="9000"')
provider.create
expect(provider.exists?).to be_truthy
expect(provider.mtu).to eq('9000')
end
end
end
describe '#destroy' do
it 'removes network' do
expect(provider_class).to receive(:openstack)
.with('network', 'delete', 'net1')
provider.destroy
expect(provider.exists?).to be_falsey
end
end
describe '#flush' do
context '.admin_state_up' do
it 'updates network' do
expect(provider_class).to receive(:openstack)
.with('network', 'set', ['net1', '--disable'])
provider.admin_state_up = 'False'
provider.flush
expect(provider_class).to receive(:openstack)
.with('network', 'set', ['net1', '--enable'])
provider.admin_state_up = 'True'
provider.flush
end
end
context '.shared' do
it 'updates network' do
expect(provider_class).to receive(:openstack)
.with('network', 'set', ['net1', '--share'])
provider.shared = 'True'
provider.flush
expect(provider_class).to receive(:openstack)
.with('network', 'set', ['net1', '--no-share'])
provider.shared = 'False'
provider.flush
end
end
context '.router_external' do
it 'updates network' do
expect(provider_class).to receive(:openstack)
.with('network', 'set', ['net1', '--external'])
provider.router_external = 'True'
provider.flush
expect(provider_class).to receive(:openstack)
.with('network', 'set', ['net1', '--internal'])
provider.router_external = 'False'
provider.flush
end
end
context '.mtu' do
it 'updates mtu' do
expect(provider_class).to receive(:openstack)
.with('network', 'set', ['net1', '--mtu=1490'])
provider.mtu = 1490
provider.flush
end
end
end
describe '#instances' do
it 'lists networks' do
expect(provider_class).to receive(:openstack)
.with('network', 'list', '--quiet', '--format', 'csv', [])
.and_return('"ID","Name","Subnets"
"076520cc-b783-4cf5-a4a9-4cb5a5e93a9b","net1","[\'dd5e0ef1-2c88-4b0b-ba08-7df65be87963\']",
"34e8f42b-89db-4a5b-92db-76ca7073414d","net2","[\'0da7a631-0f8f-4e51-8b1c-7a29d0d4f7b5\']",
')
expect(provider_class).to receive(:openstack)
.with('network', 'show', '--format', 'shell',
'076520cc-b783-4cf5-a4a9-4cb5a5e93a9b')
.and_return('admin_state_up="True"
availability_zone_hints="[]"
id="076520cc-b783-4cf5-a4a9-4cb5a5e93a9b"
project_id="60f9544eb94c42a6b7e8e98c2be981b1"
router_external="False"
shared="False"
mtu="1500"')
expect(provider_class).to receive(:openstack)
.with('network', 'show', '--format', 'shell',
'34e8f42b-89db-4a5b-92db-76ca7073414d')
.and_return('admin_state_up="False"
availability_zone_hints="[]"
id="34e8f42b-89db-4a5b-92db-76ca7073414d"
project_id="60f9544eb94c42a6b7e8e98c2be981b1"
router_external="True"
shared="True"
mtu="9000"')
instances = provider_class.instances
expect(instances.length).to eq(2)
expect(instances[0].id).to eq('076520cc-b783-4cf5-a4a9-4cb5a5e93a9b')
expect(instances[0].name).to eq('net1')
expect(instances[0].admin_state_up).to eq('True')
expect(instances[0].router_external).to eq('False')
expect(instances[0].project_id).to eq('60f9544eb94c42a6b7e8e98c2be981b1')
expect(instances[0].shared).to eq('False')
expect(instances[0].mtu).to eq('1500')
expect(instances[1].id).to eq('34e8f42b-89db-4a5b-92db-76ca7073414d')
expect(instances[1].name).to eq('net2')
expect(instances[1].admin_state_up).to eq('False')
expect(instances[1].project_id).to eq('60f9544eb94c42a6b7e8e98c2be981b1')
expect(instances[1].router_external).to eq('True')
expect(instances[1].shared).to eq('True')
expect(instances[1].mtu).to eq('9000')
end
end
end
end