summaryrefslogtreecommitdiff
path: root/openstackclient/compute
diff options
context:
space:
mode:
authorMarek Aufart <maufart@redhat.com>2015-03-17 15:38:24 +0100
committerSteve Martinelli <stevemar@ca.ibm.com>2015-03-19 13:54:19 -0400
commit621434451f561e7ef7c549a134f3bfadcf10520f (patch)
treec063b57af26961467ecd4f7ce3856e216fb2caf0 /openstackclient/compute
parenta8c44074f93815ea670d4bc09156795c66505f31 (diff)
downloadpython-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.py78
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)))