24a60a49d9
Parameters of type dict must be at the end of the shell command to not cause conflict with the network name current shell generated /usr/bin/neutron port-create --format=shell --name=testport \ --fixed-ip ip_address=172.19.0.2 --binding:host_id=aio \ --binding:profile type=dict interface_name=veth1 net-edge1-gw1 this fails since it matches the first word without "--" to the network name correct call /usr/bin/neutron port-create --format=shell --name=testport \ --fixed-ip ip_address=172.19.0.2 --binding:host_id=aio net-edge1-gw1 \ --binding:profile type=dict interface_name=veth1 Change-Id: Iaa24d52f4f42e0535ad2d0aed1c0a67178af091a
111 lines
3.5 KiB
Ruby
111 lines
3.5 KiB
Ruby
require 'puppet'
|
|
require 'spec_helper'
|
|
require 'puppet/provider/neutron_port/neutron'
|
|
|
|
provider_class = Puppet::Type.type(:neutron_port).provider(:neutron)
|
|
|
|
describe provider_class do
|
|
|
|
let :port_name do
|
|
'port1'
|
|
end
|
|
|
|
let :port_attrs do
|
|
{
|
|
:name => port_name,
|
|
:ensure => 'present',
|
|
:admin_state_up => 'True',
|
|
:tenant_id => '60f9544eb94c42a6b7e8e98c2be981b1',
|
|
:network_name => 'net1',
|
|
}
|
|
end
|
|
|
|
let :resource do
|
|
Puppet::Type::Neutron_port.new(port_attrs)
|
|
end
|
|
|
|
let :provider do
|
|
provider_class.new(resource)
|
|
end
|
|
|
|
describe 'when creating a port' do
|
|
|
|
it 'should call port-create with appropriate command line options' do
|
|
provider.class.stubs(:get_tenant_id).returns(port_attrs[:tenant_id])
|
|
|
|
output = 'Created a new port:
|
|
admin_state_up="True"
|
|
device_id=""
|
|
device_owner=""
|
|
fixed_ips="{\"subnet_id\": \"40af01ac-52c7-4235-bbcf-d9c02325ab5e\", \"ip_address\": \"192.168.0.39\"}"
|
|
id="5222573b-314d-45f9-b6bd-299288ba667a"
|
|
mac_address="fa:16:3e:45:3c:10"
|
|
name="port1"
|
|
network_id="98873773-aa34-4b87-af05-70903659246f"
|
|
security_groups="f1f0c3a3-9f2c-46b9-b2a5-b97d9a87bd7e"
|
|
status="ACTIVE"
|
|
tenant_id="60f9544eb94c42a6b7e8e98c2be981b1"'
|
|
|
|
provider.expects(:auth_neutron).with('port-create',
|
|
'--format=shell', "--name=#{port_attrs[:name]}",
|
|
["--tenant_id=#{port_attrs[:tenant_id]}"],
|
|
port_attrs[:network_name],
|
|
[]).returns(output)
|
|
|
|
provider.create
|
|
end
|
|
end
|
|
|
|
describe 'when creating a port with binding profile and host_id' do
|
|
|
|
let :port_attrs do
|
|
{
|
|
:name => port_name,
|
|
:ensure => 'present',
|
|
:admin_state_up => 'True',
|
|
:tenant_id => '60f9544eb94c42a6b7e8e98c2be981b1',
|
|
:network_name => 'net1',
|
|
:binding_host_id => 'edge1',
|
|
:binding_profile => { 'interface_name' => 'eth1' },
|
|
}
|
|
end
|
|
|
|
let :resource do
|
|
Puppet::Type::Neutron_port.new(port_attrs)
|
|
end
|
|
|
|
it 'should call port-create with appropriate command line options' do
|
|
|
|
provider.class.stubs(:get_tenant_id).returns(port_attrs[:tenant_id])
|
|
provider.class.stubs(:get_binding_host_id).returns(port_attrs[:binding_host_id])
|
|
provider.class.stubs(:get_binding_profile).returns(port_attrs[:binding_profile])
|
|
|
|
output = 'Created a new port:
|
|
admin_state_up="True"
|
|
device_id=""
|
|
device_owner=""
|
|
fixed_ips="{\"subnet_id\": \"40af01ac-52c7-4235-bbcf-d9c02325ab5e\", \"ip_address\": \"192.168.0.39\"}"
|
|
id="5222573b-314d-45f9-b6bd-299288ba667a"
|
|
mac_address="fa:16:3e:45:3c:10"
|
|
name="port1"
|
|
network_id="98873773-aa34-4b87-af05-70903659246f"
|
|
security_groups="f1f0c3a3-9f2c-46b9-b2a5-b97d9a87bd7e"
|
|
status="ACTIVE"
|
|
tenant_id="60f9544eb94c42a6b7e8e98c2be981b1"
|
|
binding_host_id="edge1"
|
|
binding_profile="{\"interface_name\": \"eth1\"}"'
|
|
|
|
provider.expects(:auth_neutron).with('port-create',
|
|
'--format=shell', "--name=#{port_attrs[:name]}",
|
|
["--tenant_id=#{port_attrs[:tenant_id]}",
|
|
"--binding:host_id=#{port_attrs[:binding_host_id]}",
|
|
],
|
|
port_attrs[:network_name],
|
|
['--binding:profile','type=dict','interface_name=eth1']).returns(output)
|
|
|
|
provider.create
|
|
end
|
|
end
|
|
|
|
end
|