puppet-neutron/spec/unit/provider/neutron_port/neutron_spec.rb

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