Merge "Overwrite/Clear Flavor property"

This commit is contained in:
Jenkins 2017-02-13 18:19:26 +00:00 committed by Gerrit Code Review
commit 655e73683a
4 changed files with 46 additions and 0 deletions

View File

@ -144,6 +144,7 @@ Set flavor properties
.. code:: bash
openstack flavor set
[--no-property]
[--property <key=value> [...] ]
[--project <project>]
[--project-domain <project-domain>]
@ -162,6 +163,11 @@ Set flavor properties
Domain the project belongs to (name or ID).
This can be used in case collisions between project names exist.
.. option:: --no-property
Remove all properties from this flavor (specify both --no-property and --property
to remove the current properties before setting new properties.)
.. describe:: <flavor>
Flavor to modify (name or ID)

View File

@ -312,6 +312,14 @@ class SetFlavor(command.Command):
metavar="<flavor>",
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>",
@ -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)

View File

@ -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,

View File

@ -0,0 +1,6 @@
---
features:
- |
Add support to clear/overwrite all flavor properties using
``--no-property`` option with ``flavor set`` command.
[ Blueprint `allow-overwrite-set-options <https://blueprints.launchpad.net/python-openstackclient/+spec/allow-overwrite-set-options>` _]