Merge "Check for server in attachements when checking for detach complete"
This commit is contained in:
commit
dd9fbb0487
|
@ -128,13 +128,18 @@ class CinderClientPlugin(client_plugin.ClientPlugin):
|
|||
return (isinstance(ex, exceptions.ClientException) and
|
||||
ex.code == 409)
|
||||
|
||||
def check_detach_volume_complete(self, vol_id):
|
||||
def check_detach_volume_complete(self, vol_id, server_id=None):
|
||||
try:
|
||||
vol = self.client().volumes.get(vol_id)
|
||||
except Exception as ex:
|
||||
self.ignore_not_found(ex)
|
||||
return True
|
||||
|
||||
server_ids = [
|
||||
a['server_id'] for a in vol.attachments if 'server_id' in a]
|
||||
if server_id and server_id not in server_ids:
|
||||
return True
|
||||
|
||||
if vol.status in ('in-use', 'detaching'):
|
||||
LOG.debug('%s - volume still in use', vol_id)
|
||||
return False
|
||||
|
|
|
@ -507,9 +507,9 @@ class CinderVolume(vb.BaseVolume, sh.SchedulerHintsMixin):
|
|||
prg_detach.called = True
|
||||
return False
|
||||
if not prg_detach.cinder_complete:
|
||||
cinder_complete_res = self.client_plugin(
|
||||
).check_detach_volume_complete(prg_detach.vol_id)
|
||||
prg_detach.cinder_complete = cinder_complete_res
|
||||
prg_detach.cinder_complete = self.client_plugin(
|
||||
).check_detach_volume_complete(prg_detach.vol_id,
|
||||
prg_detach.srv_id)
|
||||
return False
|
||||
if not prg_detach.nova_complete:
|
||||
prg_detach.nova_complete = self.client_plugin(
|
||||
|
@ -770,7 +770,8 @@ class CinderVolumeAttachment(vb.BaseVolumeAttachment):
|
|||
return True
|
||||
if not prg_detach.cinder_complete:
|
||||
prg_detach.cinder_complete = self.client_plugin(
|
||||
).check_detach_volume_complete(prg_detach.vol_id)
|
||||
).check_detach_volume_complete(prg_detach.vol_id,
|
||||
prg_detach.srv_id)
|
||||
return False
|
||||
if not prg_detach.nova_complete:
|
||||
prg_detach.nova_complete = self.client_plugin(
|
||||
|
|
|
@ -211,7 +211,7 @@ class BaseVolumeAttachment(resource.Resource):
|
|||
|
||||
if not prg.cinder_complete:
|
||||
prg.cinder_complete = self.client_plugin(
|
||||
).check_detach_volume_complete(prg.vol_id)
|
||||
).check_detach_volume_complete(prg.vol_id, prg.srv_id)
|
||||
return False
|
||||
if not prg.nova_complete:
|
||||
prg.nova_complete = self.client_plugin(
|
||||
|
|
|
@ -126,6 +126,8 @@ class FakeVolume(object):
|
|||
setattr(self, key, value)
|
||||
if 'id' not in attrs:
|
||||
self.id = self._ID
|
||||
if 'attachments' not in attrs:
|
||||
self.attachments = [{'server_id': 'WikiDatabase'}]
|
||||
|
||||
|
||||
class FakeBackup(FakeVolume):
|
||||
|
|
Loading…
Reference in New Issue