summaryrefslogtreecommitdiff
path: root/openstackclient
diff options
context:
space:
mode:
Diffstat (limited to 'openstackclient')
-rw-r--r--openstackclient/volume/client.py11
-rw-r--r--openstackclient/volume/v2/volume.py10
2 files changed, 15 insertions, 6 deletions
diff --git a/openstackclient/volume/client.py b/openstackclient/volume/client.py
index 1fbfaaee..64e8b9f3 100644
--- a/openstackclient/volume/client.py
+++ b/openstackclient/volume/client.py
@@ -29,6 +29,7 @@ API_VERSIONS = {
"1": "cinderclient.v1.client.Client",
"2": "cinderclient.v2.client.Client",
"3": "cinderclient.v3.client.Client",
+ "3.42": "cinderclient.v3.client.Client",
}
@@ -47,14 +48,19 @@ def make_client(instance):
except Exception:
del API_VERSIONS['1']
- if instance._api_version[API_NAME] == '1':
+ version = instance._api_version[API_NAME]
+ from cinderclient import api_versions
+ # convert to APIVersion object
+ version = api_versions.get_api_version(version)
+
+ if version.ver_major == '1':
# Monkey patch for v1 cinderclient
volumes.Volume.NAME_ATTR = 'display_name'
volume_snapshots.Snapshot.NAME_ATTR = 'display_name'
volume_client = utils.get_client_class(
API_NAME,
- instance._api_version[API_NAME],
+ version.ver_major,
API_VERSIONS
)
LOG.debug('Instantiating volume client: %s', volume_client)
@@ -76,6 +82,7 @@ def make_client(instance):
http_log_debug=http_log_debug,
region_name=instance.region_name,
endpoint_override=endpoint_override,
+ api_version=version,
**kwargs
)
diff --git a/openstackclient/volume/v2/volume.py b/openstackclient/volume/v2/volume.py
index 1e0cb183..cab0b2f4 100644
--- a/openstackclient/volume/v2/volume.py
+++ b/openstackclient/volume/v2/volume.py
@@ -605,14 +605,16 @@ class SetVolume(command.Command):
result = 0
if parsed_args.size:
try:
- if volume.status != 'available':
- msg = (_("Volume is in %s state, it must be available "
- "before size can be extended") % volume.status)
- raise exceptions.CommandError(msg)
if parsed_args.size <= volume.size:
msg = (_("New size must be greater than %s GB")
% volume.size)
raise exceptions.CommandError(msg)
+ if volume.status != 'available' and \
+ not volume_client.api_version.matches('3.42'):
+
+ msg = (_("Volume is in %s state, it must be available "
+ "before size can be extended") % volume.status)
+ raise exceptions.CommandError(msg)
volume_client.volumes.extend(volume.id, parsed_args.size)
except Exception as e:
LOG.error(_("Failed to set volume size: %s"), e)