provider/neutron.rb: fix list_router_ports
The json output of neutron router-interface-list may contain an an empty 'fixed_ips' field for a port, but JSON.parse does not work with empty strings. A check is added to ensure that empty 'fixed_ips' fields are directly removed. Change-Id: Ie130e1c0b9b8fbbfc679ce0c8b5320226249617f
This commit is contained in:
parent
d5b2757363
commit
791a0f146b
@ -210,8 +210,10 @@ correctly configured.")
|
||||
|
||||
self.find_and_parse_json(cmd_output).each do |port|
|
||||
if port['fixed_ips']
|
||||
if !port['fixed_ips'].empty?
|
||||
fixed_ips = JSON.parse(port['fixed_ips'])
|
||||
port['subnet_id'] = fixed_ips['subnet_id']
|
||||
end
|
||||
port.delete('fixed_ips')
|
||||
end
|
||||
results << port
|
||||
|
@ -243,6 +243,29 @@ describe Puppet::Provider::Neutron do
|
||||
expect(result).to eql(expected)
|
||||
end
|
||||
|
||||
|
||||
it 'should handle empty fixed_ips field' do
|
||||
output = '''
|
||||
[
|
||||
{
|
||||
"id": "1345e576-a21f-4c2e-b24a-b245639852ab",
|
||||
"name": "",
|
||||
"mac_address": "fa:16:3e:e3:e6:38",
|
||||
"fixed_ips": ""
|
||||
}
|
||||
]
|
||||
'''
|
||||
expected =
|
||||
[{ "name"=>"",
|
||||
"id"=>"1345e576-a21f-4c2e-b24a-b245639852ab",
|
||||
"mac_address"=>"fa:16:3e:e3:e6:38"}]
|
||||
klass.expects(:auth_neutron).
|
||||
with('router-port-list', '--format=json', router).
|
||||
returns(output)
|
||||
result = klass.list_router_ports(router)
|
||||
expect(result).to eql(expected)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
describe 'when parsing creation output' do
|
||||
|
Loading…
Reference in New Issue
Block a user