summaryrefslogtreecommitdiff
path: root/cinderclient/v3/shell.py
diff options
context:
space:
mode:
authorBrian Rosmaita <rosmaita.fossdev@gmail.com>2022-11-08 11:58:38 -0500
committerBrian Rosmaita <rosmaita.fossdev@gmail.com>2022-11-08 18:48:18 -0500
commit9df653571d4da06c25222189be27e87a6da75628 (patch)
tree86a222edebb9fc3a763a7ef1fd71507fef4d1715 /cinderclient/v3/shell.py
parent6f67187b8255ae231f82a9deaaf9156c868153a0 (diff)
downloadpython-cinderclient-9.2.0.tar.gz
Handle downgraded client for snapshot-create9.2.0
When a CLI user specifies --os-volume api-version 3.66, the shell will execute the appropriate shell code, but if the server only supports < 3.66, the client is automatically downgraded and correctly uses the pre-3.66 SnapshotManager.create() method. In that case, the 'force' parameter, which is technically not allowed in mv 3.66 (but which silently accepts a True value for backward compatibility), will have a value of None, which the pre-3.66 code happily passes to cinder as '"force": null' in the request body, and which then fails the Block Storage API request-schema check. Handle this situation by detecting a None 'force' value and setting it to its pre-3.66 default value of False. Change-Id: I3ad8283c2a9aaac58c8d2b50fa7ac86b617e5dd3 Closes-bug: #1995883
Diffstat (limited to 'cinderclient/v3/shell.py')
-rw-r--r--cinderclient/v3/shell.py2
1 files changed, 2 insertions, 0 deletions
diff --git a/cinderclient/v3/shell.py b/cinderclient/v3/shell.py
index 60239c7..2ea1848 100644
--- a/cinderclient/v3/shell.py
+++ b/cinderclient/v3/shell.py
@@ -2213,6 +2213,7 @@ def do_snapshot_list(cs, args):
'than forcing it to be available. From microversion 3.66, '
'all snapshots are "forced" and this option is invalid. '
'Default=False.')
+# FIXME: is this second declaration of --force really necessary?
@utils.arg('--force',
metavar='<True>',
nargs='?',
@@ -2253,6 +2254,7 @@ def do_snapshot_create(cs, args):
snapshot_metadata = shell_utils.extract_metadata(args)
volume = utils.find_volume(cs, args.volume)
+
snapshot = cs.volume_snapshots.create(volume.id,
args.force,
args.name,