Merge "Introduce overwrite functionality in `osc subnet set`"

This commit is contained in:
Jenkins 2016-12-01 21:57:15 +00:00 committed by Gerrit Code Review
commit 3a509be871
4 changed files with 34 additions and 2 deletions

View File

@ -231,6 +231,7 @@ Set subnet properties
[--no-allocation-pool] [--no-allocation-pool]
[--dhcp | --no-dhcp] [--dhcp | --no-dhcp]
[--dns-nameserver <dns-nameserver>] [--dns-nameserver <dns-nameserver>]
[--no-dns-nameserver]
[--gateway <gateway-ip>] [--gateway <gateway-ip>]
[--host-route destination=<subnet>,gateway=<ip-address>] [--host-route destination=<subnet>,gateway=<ip-address>]
[--no-host-route] [--no-host-route]
@ -263,6 +264,12 @@ Set subnet properties
DNS server for this subnet (repeat option to set multiple DNS servers) DNS server for this subnet (repeat option to set multiple DNS servers)
.. option:: --no-dns-nameservers
Clear existing information of DNS servers.
Specify both --dns-nameserver and --no-dns-nameservers
to overwrite the current DNS server information.
.. option:: --gateway <gateway> .. option:: --gateway <gateway>
Specify a gateway for the subnet. The options are: Specify a gateway for the subnet. The options are:

View File

@ -84,6 +84,15 @@ def _get_common_parse_arguments(parser, is_create=True):
help=_("DNS server for this subnet " help=_("DNS server for this subnet "
"(repeat option to set multiple DNS servers)") "(repeat option to set multiple DNS servers)")
) )
if not is_create:
parser.add_argument(
'--no-dns-nameservers',
action='store_true',
help=_("Clear existing information of DNS Nameservers. "
"Specify both --dns-nameserver and --no-dns-nameserver "
"to overwrite the current DNS Nameserver information.")
)
parser.add_argument( parser.add_argument(
'--host-route', '--host-route',
metavar='destination=<subnet>,gateway=<ip-address>', metavar='destination=<subnet>,gateway=<ip-address>',
@ -532,7 +541,10 @@ class SetSubnet(command.Command):
attrs = _get_attrs(self.app.client_manager, parsed_args, attrs = _get_attrs(self.app.client_manager, parsed_args,
is_create=False) is_create=False)
if 'dns_nameservers' in attrs: if 'dns_nameservers' in attrs:
if not parsed_args.no_dns_nameservers:
attrs['dns_nameservers'] += obj.dns_nameservers attrs['dns_nameservers'] += obj.dns_nameservers
elif parsed_args.no_dns_nameservers:
attrs['dns_nameservers'] = []
if 'host_routes' in attrs: if 'host_routes' in attrs:
if not parsed_args.no_host_route: if not parsed_args.no_host_route:
attrs['host_routes'] += obj.host_routes attrs['host_routes'] += obj.host_routes

View File

@ -925,13 +925,16 @@ class TestSetSubnet(TestSubnet):
{'host_routes': [{'destination': '10.20.20.0/24', {'host_routes': [{'destination': '10.20.20.0/24',
'nexthop': '10.20.20.1'}], 'nexthop': '10.20.20.1'}],
'allocation_pools': [{'start': '8.8.8.200', 'allocation_pools': [{'start': '8.8.8.200',
'end': '8.8.8.250'}], }) 'end': '8.8.8.250'}],
'dns_nameservers': ["10.0.0.1"], })
self.network.find_subnet = mock.Mock(return_value=_testsubnet) self.network.find_subnet = mock.Mock(return_value=_testsubnet)
arglist = [ arglist = [
'--host-route', 'destination=10.30.30.30/24,gateway=10.30.30.1', '--host-route', 'destination=10.30.30.30/24,gateway=10.30.30.1',
'--no-host-route', '--no-host-route',
'--allocation-pool', 'start=8.8.8.100,end=8.8.8.150', '--allocation-pool', 'start=8.8.8.100,end=8.8.8.150',
'--no-allocation-pool', '--no-allocation-pool',
'--dns-nameserver', '10.1.10.1',
'--no-dns-nameservers',
_testsubnet.name, _testsubnet.name,
] ]
verifylist = [ verifylist = [
@ -939,6 +942,8 @@ class TestSetSubnet(TestSubnet):
"destination": "10.30.30.30/24", "gateway": "10.30.30.1"}]), "destination": "10.30.30.30/24", "gateway": "10.30.30.1"}]),
('allocation_pools', [{ ('allocation_pools', [{
'start': '8.8.8.100', 'end': '8.8.8.150'}]), 'start': '8.8.8.100', 'end': '8.8.8.150'}]),
('dns_nameservers', ['10.1.10.1']),
('no_dns_nameservers', True),
('no_host_route', True), ('no_host_route', True),
('no_allocation_pool', True), ('no_allocation_pool', True),
] ]
@ -948,6 +953,7 @@ class TestSetSubnet(TestSubnet):
'host_routes': [{ 'host_routes': [{
"destination": "10.30.30.30/24", "nexthop": "10.30.30.1"}], "destination": "10.30.30.30/24", "nexthop": "10.30.30.1"}],
'allocation_pools': [{'start': '8.8.8.100', 'end': '8.8.8.150'}], 'allocation_pools': [{'start': '8.8.8.100', 'end': '8.8.8.150'}],
'dns_nameservers': ["10.1.10.1"],
} }
self.network.update_subnet.assert_called_once_with( self.network.update_subnet.assert_called_once_with(
_testsubnet, **attrs) _testsubnet, **attrs)

View File

@ -0,0 +1,7 @@
---
features:
- |
``subnet set`` command now allows the user to overwrite/clear dns-nameserver information
of a subnet by using the option ``no-dns-nameserver``.
[ Blueprint `allow-overwrite-set-options <https://blueprints.launchpad.net/python-openstackclient/+spec/allow-overwrite-set-options>` _]