summaryrefslogtreecommitdiff
path: root/novaclient/shell.py
diff options
context:
space:
mode:
authorStephen Finucane <sfinucan@redhat.com>2020-04-08 09:57:41 +0100
committerStephen Finucane <stephenfin@redhat.com>2020-04-08 17:27:33 +0100
commitea092b29880e71f0ba2d8e1eb93a9cf73edee2a2 (patch)
tree9380571295753ddc46901f75f0d98eb86d37e2e9 /novaclient/shell.py
parentd712c0fbc7a320f6eea4f8741f2f8d6e517a6507 (diff)
downloadpython-novaclient-ea092b29880e71f0ba2d8e1eb93a9cf73edee2a2.tar.gz
Make 'server list --config-drive' a boolean option
Instead of passing through whatever the user provides and exposing this bug in the REST API, simply make the opt a boolean one in expectation of a day where the API issues have been resolved. This also introduces machinery necessary to use more of these types of opts in the future. Change-Id: I9033540ac65ac0ee7337f16bdd002060652092ea Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
Diffstat (limited to 'novaclient/shell.py')
-rw-r--r--novaclient/shell.py23
1 files changed, 17 insertions, 6 deletions
diff --git a/novaclient/shell.py b/novaclient/shell.py
index a5d1e937..22952b7c 100644
--- a/novaclient/shell.py
+++ b/novaclient/shell.py
@@ -442,6 +442,7 @@ class OpenStackComputeShell(object):
action_help = desc.strip()
arguments = getattr(callback, 'arguments', [])
+ groups = {}
subparser = subparsers.add_parser(
command,
@@ -456,10 +457,14 @@ class OpenStackComputeShell(object):
)
self.subcommands[command] = subparser
for (args, kwargs) in arguments:
- start_version = kwargs.get("start_version", None)
+ kwargs = kwargs.copy()
+
+ start_version = kwargs.pop("start_version", None)
+ end_version = kwargs.pop("end_version", None)
+ group = kwargs.pop("group", None)
+
if start_version:
start_version = api_versions.APIVersion(start_version)
- end_version = kwargs.get("end_version", None)
if end_version:
end_version = api_versions.APIVersion(end_version)
else:
@@ -471,10 +476,16 @@ class OpenStackComputeShell(object):
"end": end_version.get_string()})
if not version.matches(start_version, end_version):
continue
- kw = kwargs.copy()
- kw.pop("start_version", None)
- kw.pop("end_version", None)
- subparser.add_argument(*args, **kw)
+
+ if group:
+ if group not in groups:
+ groups[group] = (
+ subparser.add_mutually_exclusive_group()
+ )
+ kwargs['dest'] = kwargs.get('dest', group)
+ groups[group].add_argument(*args, **kwargs)
+ else:
+ subparser.add_argument(*args, **kwargs)
subparser.set_defaults(func=callback)
def setup_debugging(self, debug):