diff --git a/openstackclient/network/v2/network.py b/openstackclient/network/v2/network.py index 1901e2195..973878b9e 100644 --- a/openstackclient/network/v2/network.py +++ b/openstackclient/network/v2/network.py @@ -107,7 +107,7 @@ def _get_attrs_network(client_manager, parsed_args): attrs['availability_zone_hints'] = parsed_args.availability_zone_hints # set description - if parsed_args.description: + if parsed_args.description is not None: attrs['description'] = parsed_args.description # set mtu @@ -139,7 +139,7 @@ def _get_attrs_network(client_manager, parsed_args): if 'no_qos_policy' in parsed_args and parsed_args.no_qos_policy: attrs['qos_policy_id'] = None # Update DNS network options - if parsed_args.dns_domain: + if parsed_args.dns_domain is not None: attrs['dns_domain'] = parsed_args.dns_domain return attrs diff --git a/openstackclient/tests/unit/network/v2/test_network.py b/openstackclient/tests/unit/network/v2/test_network.py index f2fd45baa..2dbb0f822 100644 --- a/openstackclient/tests/unit/network/v2/test_network.py +++ b/openstackclient/tests/unit/network/v2/test_network.py @@ -1063,6 +1063,39 @@ class TestSetNetwork(TestNetwork): ) self.assertIsNone(result) + def test_set_to_empty(self): + # Test if empty strings are accepted to clear any of the fields, + # so once they are set to a value its possible to clear them again. + + arglist = [ + self._network.name, + '--name', + '', + '--description', + '', + '--dns-domain', + '', + ] + verifylist = [ + ('network', self._network.name), + ('description', ''), + ('name', ''), + ('dns_domain', ''), + ] + + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + result = self.cmd.take_action(parsed_args) + + attrs = { + 'name': '', + 'description': '', + 'dns_domain': '', + } + self.network_client.update_network.assert_called_once_with( + self._network, **attrs + ) + self.assertIsNone(result) + def test_set_nothing(self): arglist = [ self._network.name,