Handle not having cinderclient.v1 available
The Cinder v1 API was deprecated several years ago and may be removed from python-cinderclient in the near future. To handle the case where v1 is no longer present, this updates cinderclient initialization to work without it and give an appropriate error if v1 is requested with a version where it is no longer available. Change-Id: I277d7b48b8ad4cce383ec3722f8117938378f615 Signed-off-by: Sean McGinnis <sean.mcginnis@gmail.com>
This commit is contained in:
parent
e3dc30fe8c
commit
651f0c38a1
@ -15,8 +15,8 @@
|
|||||||
|
|
||||||
import mock
|
import mock
|
||||||
|
|
||||||
from cinderclient.v1 import volume_snapshots
|
from cinderclient.v3 import volume_snapshots
|
||||||
from cinderclient.v1 import volumes
|
from cinderclient.v3 import volumes
|
||||||
from osc_lib import exceptions
|
from osc_lib import exceptions
|
||||||
from osc_lib import utils
|
from osc_lib import utils
|
||||||
|
|
||||||
|
@ -131,7 +131,6 @@ class TestVolumeCreate(TestVolume):
|
|||||||
imageRef=None,
|
imageRef=None,
|
||||||
source_volid=None,
|
source_volid=None,
|
||||||
consistencygroup_id=None,
|
consistencygroup_id=None,
|
||||||
multiattach=False,
|
|
||||||
scheduler_hints=None,
|
scheduler_hints=None,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -149,7 +148,6 @@ class TestVolumeCreate(TestVolume):
|
|||||||
'--availability-zone', self.new_volume.availability_zone,
|
'--availability-zone', self.new_volume.availability_zone,
|
||||||
'--consistency-group', consistency_group.id,
|
'--consistency-group', consistency_group.id,
|
||||||
'--hint', 'k=v',
|
'--hint', 'k=v',
|
||||||
'--multi-attach',
|
|
||||||
self.new_volume.name,
|
self.new_volume.name,
|
||||||
]
|
]
|
||||||
verifylist = [
|
verifylist = [
|
||||||
@ -159,7 +157,6 @@ class TestVolumeCreate(TestVolume):
|
|||||||
('availability_zone', self.new_volume.availability_zone),
|
('availability_zone', self.new_volume.availability_zone),
|
||||||
('consistency_group', consistency_group.id),
|
('consistency_group', consistency_group.id),
|
||||||
('hint', {'k': 'v'}),
|
('hint', {'k': 'v'}),
|
||||||
('multi_attach', True),
|
|
||||||
('name', self.new_volume.name),
|
('name', self.new_volume.name),
|
||||||
]
|
]
|
||||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||||
@ -180,7 +177,6 @@ class TestVolumeCreate(TestVolume):
|
|||||||
imageRef=None,
|
imageRef=None,
|
||||||
source_volid=None,
|
source_volid=None,
|
||||||
consistencygroup_id=consistency_group.id,
|
consistencygroup_id=consistency_group.id,
|
||||||
multiattach=True,
|
|
||||||
scheduler_hints={'k': 'v'},
|
scheduler_hints={'k': 'v'},
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -251,7 +247,6 @@ class TestVolumeCreate(TestVolume):
|
|||||||
imageRef=None,
|
imageRef=None,
|
||||||
source_volid=None,
|
source_volid=None,
|
||||||
consistencygroup_id=None,
|
consistencygroup_id=None,
|
||||||
multiattach=False,
|
|
||||||
scheduler_hints=None,
|
scheduler_hints=None,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -290,7 +285,6 @@ class TestVolumeCreate(TestVolume):
|
|||||||
imageRef=image.id,
|
imageRef=image.id,
|
||||||
source_volid=None,
|
source_volid=None,
|
||||||
consistencygroup_id=None,
|
consistencygroup_id=None,
|
||||||
multiattach=False,
|
|
||||||
scheduler_hints=None,
|
scheduler_hints=None,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -329,7 +323,6 @@ class TestVolumeCreate(TestVolume):
|
|||||||
imageRef=image.id,
|
imageRef=image.id,
|
||||||
source_volid=None,
|
source_volid=None,
|
||||||
consistencygroup_id=None,
|
consistencygroup_id=None,
|
||||||
multiattach=False,
|
|
||||||
scheduler_hints=None,
|
scheduler_hints=None,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -367,7 +360,6 @@ class TestVolumeCreate(TestVolume):
|
|||||||
imageRef=None,
|
imageRef=None,
|
||||||
source_volid=None,
|
source_volid=None,
|
||||||
consistencygroup_id=None,
|
consistencygroup_id=None,
|
||||||
multiattach=False,
|
|
||||||
scheduler_hints=None,
|
scheduler_hints=None,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -406,7 +398,6 @@ class TestVolumeCreate(TestVolume):
|
|||||||
imageRef=None,
|
imageRef=None,
|
||||||
source_volid=None,
|
source_volid=None,
|
||||||
consistencygroup_id=None,
|
consistencygroup_id=None,
|
||||||
multiattach=False,
|
|
||||||
scheduler_hints=None,
|
scheduler_hints=None,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -449,7 +440,6 @@ class TestVolumeCreate(TestVolume):
|
|||||||
imageRef=None,
|
imageRef=None,
|
||||||
source_volid=None,
|
source_volid=None,
|
||||||
consistencygroup_id=None,
|
consistencygroup_id=None,
|
||||||
multiattach=False,
|
|
||||||
scheduler_hints=None,
|
scheduler_hints=None,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -501,7 +491,6 @@ class TestVolumeCreate(TestVolume):
|
|||||||
imageRef=None,
|
imageRef=None,
|
||||||
source_volid=None,
|
source_volid=None,
|
||||||
consistencygroup_id=None,
|
consistencygroup_id=None,
|
||||||
multiattach=False,
|
|
||||||
scheduler_hints=None,
|
scheduler_hints=None,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -37,10 +37,17 @@ def make_client(instance):
|
|||||||
|
|
||||||
# Defer client imports until we actually need them
|
# Defer client imports until we actually need them
|
||||||
from cinderclient import extension
|
from cinderclient import extension
|
||||||
from cinderclient.v1.contrib import list_extensions
|
from cinderclient.v3.contrib import list_extensions
|
||||||
from cinderclient.v1 import volume_snapshots
|
from cinderclient.v3 import volume_snapshots
|
||||||
from cinderclient.v1 import volumes
|
from cinderclient.v3 import volumes
|
||||||
|
|
||||||
|
# Try a small import to check if cinderclient v1 is supported
|
||||||
|
try:
|
||||||
|
from cinderclient.v1 import services # noqa
|
||||||
|
except Exception:
|
||||||
|
del API_VERSIONS['1']
|
||||||
|
|
||||||
|
if instance._api_version[API_NAME] == '1':
|
||||||
# Monkey patch for v1 cinderclient
|
# Monkey patch for v1 cinderclient
|
||||||
volumes.Volume.NAME_ATTR = 'display_name'
|
volumes.Volume.NAME_ATTR = 'display_name'
|
||||||
volume_snapshots.Snapshot.NAME_ATTR = 'display_name'
|
volume_snapshots.Snapshot.NAME_ATTR = 'display_name'
|
||||||
|
@ -212,6 +212,9 @@ class CreateVolume(command.ShowOne):
|
|||||||
raise exceptions.CommandError(
|
raise exceptions.CommandError(
|
||||||
_("ERROR: --user is deprecated, please use"
|
_("ERROR: --user is deprecated, please use"
|
||||||
" --os-username instead."))
|
" --os-username instead."))
|
||||||
|
if parsed_args.multi_attach:
|
||||||
|
LOG.warning(_("'--multi-attach' option is no longer supported by "
|
||||||
|
"the block storage service."))
|
||||||
|
|
||||||
volume = volume_client.volumes.create(
|
volume = volume_client.volumes.create(
|
||||||
size=size,
|
size=size,
|
||||||
@ -224,7 +227,6 @@ class CreateVolume(command.ShowOne):
|
|||||||
imageRef=image,
|
imageRef=image,
|
||||||
source_volid=source_volume,
|
source_volid=source_volume,
|
||||||
consistencygroup_id=consistency_group,
|
consistencygroup_id=consistency_group,
|
||||||
multiattach=parsed_args.multi_attach,
|
|
||||||
scheduler_hints=parsed_args.hint,
|
scheduler_hints=parsed_args.hint,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user