Merge "Introduce overwrite functionality in `osc subnet set`"
				
					
				
			This commit is contained in:
		@@ -231,6 +231,7 @@ Set subnet properties
 | 
			
		||||
        [--no-allocation-pool]
 | 
			
		||||
        [--dhcp | --no-dhcp]
 | 
			
		||||
        [--dns-nameserver <dns-nameserver>]
 | 
			
		||||
        [--no-dns-nameserver]
 | 
			
		||||
        [--gateway <gateway-ip>]
 | 
			
		||||
        [--host-route destination=<subnet>,gateway=<ip-address>]
 | 
			
		||||
        [--no-host-route]
 | 
			
		||||
@@ -263,6 +264,12 @@ Set subnet properties
 | 
			
		||||
 | 
			
		||||
     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>
 | 
			
		||||
 | 
			
		||||
     Specify a gateway for the subnet. The options are:
 | 
			
		||||
 
 | 
			
		||||
@@ -84,6 +84,15 @@ def _get_common_parse_arguments(parser, is_create=True):
 | 
			
		||||
        help=_("DNS server for this subnet "
 | 
			
		||||
               "(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(
 | 
			
		||||
        '--host-route',
 | 
			
		||||
        metavar='destination=<subnet>,gateway=<ip-address>',
 | 
			
		||||
@@ -532,7 +541,10 @@ class SetSubnet(command.Command):
 | 
			
		||||
        attrs = _get_attrs(self.app.client_manager, parsed_args,
 | 
			
		||||
                           is_create=False)
 | 
			
		||||
        if 'dns_nameservers' in attrs:
 | 
			
		||||
            if not parsed_args.no_dns_nameservers:
 | 
			
		||||
                attrs['dns_nameservers'] += obj.dns_nameservers
 | 
			
		||||
        elif parsed_args.no_dns_nameservers:
 | 
			
		||||
            attrs['dns_nameservers'] = []
 | 
			
		||||
        if 'host_routes' in attrs:
 | 
			
		||||
            if not parsed_args.no_host_route:
 | 
			
		||||
                attrs['host_routes'] += obj.host_routes
 | 
			
		||||
 
 | 
			
		||||
@@ -925,13 +925,16 @@ class TestSetSubnet(TestSubnet):
 | 
			
		||||
            {'host_routes': [{'destination': '10.20.20.0/24',
 | 
			
		||||
                              'nexthop': '10.20.20.1'}],
 | 
			
		||||
             '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)
 | 
			
		||||
        arglist = [
 | 
			
		||||
            '--host-route', 'destination=10.30.30.30/24,gateway=10.30.30.1',
 | 
			
		||||
            '--no-host-route',
 | 
			
		||||
            '--allocation-pool', 'start=8.8.8.100,end=8.8.8.150',
 | 
			
		||||
            '--no-allocation-pool',
 | 
			
		||||
            '--dns-nameserver', '10.1.10.1',
 | 
			
		||||
            '--no-dns-nameservers',
 | 
			
		||||
            _testsubnet.name,
 | 
			
		||||
        ]
 | 
			
		||||
        verifylist = [
 | 
			
		||||
@@ -939,6 +942,8 @@ class TestSetSubnet(TestSubnet):
 | 
			
		||||
                "destination": "10.30.30.30/24", "gateway": "10.30.30.1"}]),
 | 
			
		||||
            ('allocation_pools', [{
 | 
			
		||||
                '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_allocation_pool', True),
 | 
			
		||||
        ]
 | 
			
		||||
@@ -948,6 +953,7 @@ class TestSetSubnet(TestSubnet):
 | 
			
		||||
            'host_routes': [{
 | 
			
		||||
                "destination": "10.30.30.30/24", "nexthop": "10.30.30.1"}],
 | 
			
		||||
            '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(
 | 
			
		||||
            _testsubnet, **attrs)
 | 
			
		||||
 
 | 
			
		||||
@@ -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>` _]
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user