diff --git a/openstackclient/volume/client.py b/openstackclient/volume/client.py
index 1fbfaaee78..64e8b9f34d 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 1e0cb183fc..cab0b2f4c7 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)