Append existing information during subnet set

Existing values of --dns-nameserver, --allocation-pool and --houst-routes
is currently overwritten when a user executes 'port set', but
actually that data should be appended.
This patch fixes the issue.

Closes-Bug: #1564447
Change-Id: I3dba9afa68d869abb3960b55a6880401a10eebf7
This commit is contained in:
reedip 2016-04-08 11:41:33 +09:00 committed by Reedip
parent 7ad529ec24
commit 03d932ea0b
2 changed files with 26 additions and 0 deletions

View File

@ -366,6 +366,12 @@ class SetSubnet(command.Command):
if not attrs:
msg = "Nothing specified to be set"
raise exceptions.CommandError(msg)
if 'dns_nameservers' in attrs:
attrs['dns_nameservers'] += obj.dns_nameservers
if 'host_routes' in attrs:
attrs['host_routes'] += obj.host_routes
if 'allocation_pools' in attrs:
attrs['allocation_pools'] += obj.allocation_pools
client.update_subnet(obj, **attrs)
return

View File

@ -536,6 +536,26 @@ class TestSetSubnet(TestSubnet):
self.assertRaises(exceptions.CommandError, self.cmd.take_action,
parsed_args)
def test_append_options(self):
_testsubnet = network_fakes.FakeSubnet.create_one_subnet(
{'dns_nameservers': ["10.0.0.1"]})
self.network.find_subnet = mock.Mock(return_value=_testsubnet)
arglist = [
'--dns-nameserver', '10.0.0.2',
_testsubnet.name,
]
verifylist = [
('dns_nameservers', ['10.0.0.2']),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
result = self.cmd.take_action(parsed_args)
attrs = {
'dns_nameservers': ['10.0.0.2', '10.0.0.1'],
}
self.network.update_subnet.assert_called_once_with(
_testsubnet, **attrs)
self.assertIsNone(result)
class TestShowSubnet(TestSubnet):
# The subnets to be shown