diff options
| author | Marek Aufart <maufart@redhat.com> | 2015-03-17 15:38:24 +0100 |
|---|---|---|
| committer | Steve Martinelli <stevemar@ca.ibm.com> | 2015-03-19 13:54:19 -0400 |
| commit | 621434451f561e7ef7c549a134f3bfadcf10520f (patch) | |
| tree | c063b57af26961467ecd4f7ce3856e216fb2caf0 /openstackclient/compute | |
| parent | a8c44074f93815ea670d4bc09156795c66505f31 (diff) | |
| download | python-openstackclient-621434451f561e7ef7c549a134f3bfadcf10520f.tar.gz | |
Add the ability to set and unset flavor properties
Added flavor set and unset command which allow manage flavor
properties called extra_specs.
Command flavor show output was extended with these properties.
Closes-Bug: 1434137
Change-Id: Ie469bade802de18aab9d58eda3fff46064008163
Diffstat (limited to 'openstackclient/compute')
| -rw-r--r-- | openstackclient/compute/v2/flavor.py | 78 |
1 files changed, 75 insertions, 3 deletions
diff --git a/openstackclient/compute/v2/flavor.py b/openstackclient/compute/v2/flavor.py index 195c9a0d..eb18a433 100644 --- a/openstackclient/compute/v2/flavor.py +++ b/openstackclient/compute/v2/flavor.py @@ -22,6 +22,7 @@ from cliff import command from cliff import lister from cliff import show +from openstackclient.common import parseractions from openstackclient.common import utils @@ -237,8 +238,79 @@ class ShowFlavor(show.ShowOne): def take_action(self, parsed_args): self.log.debug("take_action(%s)", parsed_args) compute_client = self.app.client_manager.compute - flavor = utils.find_resource(compute_client.flavors, - parsed_args.flavor)._info.copy() - flavor.pop("links") + resource_flavor = utils.find_resource(compute_client.flavors, + parsed_args.flavor) + flavor = resource_flavor._info.copy() + flavor.pop("links", None) + + flavor['properties'] = utils.format_dict(resource_flavor.get_keys()) + + return zip(*sorted(six.iteritems(flavor))) + + +class SetFlavor(show.ShowOne): + """Set flavor properties""" + + log = logging.getLogger(__name__ + ".SetFlavor") + + def get_parser(self, prog_name): + parser = super(SetFlavor, self).get_parser(prog_name) + parser.add_argument( + "--property", + metavar="<key=value>", + action=parseractions.KeyValueAction, + help='Property to add or modify for this flavor ' + '(repeat option to set multiple properties)', + ) + parser.add_argument( + "flavor", + metavar="<flavor>", + help="Flavor to modify (name or ID)", + ) + return parser + + def take_action(self, parsed_args): + self.log.debug("take_action(%s)", parsed_args) + compute_client = self.app.client_manager.compute + resource_flavor = compute_client.flavors.find(name=parsed_args.flavor) + + resource_flavor.set_keys(parsed_args.property) + + flavor = resource_flavor._info.copy() + flavor['properties'] = utils.format_dict(resource_flavor.get_keys()) + flavor.pop("links", None) + return zip(*sorted(six.iteritems(flavor))) + + +class UnsetFlavor(show.ShowOne): + """Unset flavor properties""" + + log = logging.getLogger(__name__ + ".UnsetFlavor") + + def get_parser(self, prog_name): + parser = super(UnsetFlavor, self).get_parser(prog_name) + parser.add_argument( + "--property", + metavar="<key>", + action='append', + help='Property to remove from flavor ' + '(repeat option to unset multiple properties)', + ) + parser.add_argument( + "flavor", + metavar="<flavor>", + help="Flavor to modify (name or ID)", + ) + return parser + + def take_action(self, parsed_args): + self.log.debug("take_action(%s)", parsed_args) + compute_client = self.app.client_manager.compute + resource_flavor = compute_client.flavors.find(name=parsed_args.flavor) + + resource_flavor.unset_keys(parsed_args.property) + flavor = resource_flavor._info.copy() + flavor['properties'] = utils.format_dict(resource_flavor.get_keys()) + flavor.pop("links", None) return zip(*sorted(six.iteritems(flavor))) |
