diff options
Diffstat (limited to 'openstackclient')
| -rw-r--r-- | openstackclient/compute/v2/flavor.py | 17 | ||||
| -rw-r--r-- | openstackclient/tests/unit/compute/v2/test_flavor.py | 17 |
2 files changed, 34 insertions, 0 deletions
diff --git a/openstackclient/compute/v2/flavor.py b/openstackclient/compute/v2/flavor.py index 7cd22ed7..7e213f73 100644 --- a/openstackclient/compute/v2/flavor.py +++ b/openstackclient/compute/v2/flavor.py @@ -313,6 +313,14 @@ class SetFlavor(command.Command): help=_("Flavor to modify (name or ID)") ) parser.add_argument( + "--no-property", + action="store_true", + help=_("Remove all properties from this flavor " + "(specify both --no-property and --property" + " to remove the current properties before setting" + " new properties.)"), + ) + parser.add_argument( "--property", metavar="<key=value>", action=parseractions.KeyValueAction, @@ -336,6 +344,15 @@ class SetFlavor(command.Command): flavor = _find_flavor(compute_client, parsed_args.flavor) result = 0 + key_list = [] + if parsed_args.no_property: + try: + for key in flavor.get_keys().keys(): + key_list.append(key) + flavor.unset_keys(key_list) + except Exception as e: + LOG.error(_("Failed to clear flavor property: %s"), e) + result += 1 if parsed_args.property: try: flavor.set_keys(parsed_args.property) diff --git a/openstackclient/tests/unit/compute/v2/test_flavor.py b/openstackclient/tests/unit/compute/v2/test_flavor.py index 632fcda1..4cdbb25b 100644 --- a/openstackclient/tests/unit/compute/v2/test_flavor.py +++ b/openstackclient/tests/unit/compute/v2/test_flavor.py @@ -528,6 +528,23 @@ class TestFlavorSet(TestFlavor): self.flavor.set_keys.assert_called_with({'FOO': '"B A R"'}) self.assertIsNone(result) + def test_flavor_set_no_property(self): + arglist = [ + '--no-property', + 'baremetal' + ] + verifylist = [ + ('no_property', True), + ('flavor', 'baremetal') + ] + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + + result = self.cmd.take_action(parsed_args) + self.flavors_mock.find.assert_called_with(name=parsed_args.flavor, + is_public=None) + self.flavor.unset_keys.assert_called_with(['property']) + self.assertIsNone(result) + def test_flavor_set_project(self): arglist = [ '--project', self.project.id, |
