summaryrefslogtreecommitdiff
path: root/openstackclient/compute
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2016-09-29 19:22:31 +0000
committerGerrit Code Review <review@openstack.org>2016-09-29 19:22:31 +0000
commit15069ef50e609dca769d6a50f6af92b2c8211238 (patch)
treeffb7792602125e4a51d454951322c3961d7affc2 /openstackclient/compute
parent2026dee17e7b6b8d738345fd27dc905efb6561f1 (diff)
parent63715569160785ffeac05e34b604136440a9f865 (diff)
downloadpython-openstackclient-15069ef50e609dca769d6a50f6af92b2c8211238.tar.gz
Merge "Support "--no" option in aggregate set"
Diffstat (limited to 'openstackclient/compute')
-rw-r--r--openstackclient/compute/v2/aggregate.py33
1 files changed, 28 insertions, 5 deletions
diff --git a/openstackclient/compute/v2/aggregate.py b/openstackclient/compute/v2/aggregate.py
index 2e2838c5..58d529e9 100644
--- a/openstackclient/compute/v2/aggregate.py
+++ b/openstackclient/compute/v2/aggregate.py
@@ -248,6 +248,14 @@ class SetAggregate(command.Command):
help=_("Property to set on <aggregate> "
"(repeat option to set multiple properties)")
)
+ parser.add_argument(
+ "--no-property",
+ dest="no_property",
+ action="store_true",
+ help=_("Remove all properties from <aggregate> "
+ "(specify both --property and --no-property to "
+ "overwrite the current properties)"),
+ )
return parser
def take_action(self, parsed_args):
@@ -269,10 +277,23 @@ class SetAggregate(command.Command):
kwargs
)
+ set_property = {}
+ if parsed_args.no_property:
+ # NOTE(RuiChen): "availability_zone" is removed from response of
+ # aggregate show and create commands, don't see it
+ # anywhere, so pop it, avoid the unexpected server
+ # exception(can't unset the availability zone from
+ # aggregate metadata in nova).
+ set_property.update({key: None
+ for key in aggregate.metadata.keys()
+ if key != 'availability_zone'})
if parsed_args.property:
+ set_property.update(parsed_args.property)
+
+ if set_property:
compute_client.aggregates.set_metadata(
aggregate,
- parsed_args.property
+ set_property
)
@@ -326,7 +347,6 @@ class UnsetAggregate(command.Command):
"--property",
metavar="<key>",
action='append',
- required=True,
help=_("Property to remove from aggregate "
"(repeat option to remove multiple properties)")
)
@@ -338,6 +358,9 @@ class UnsetAggregate(command.Command):
compute_client.aggregates,
parsed_args.aggregate)
- unset_property = {key: None for key in parsed_args.property}
- compute_client.aggregates.set_metadata(aggregate,
- unset_property)
+ unset_property = {}
+ if parsed_args.property:
+ unset_property.update({key: None for key in parsed_args.property})
+ if unset_property:
+ compute_client.aggregates.set_metadata(aggregate,
+ unset_property)