Merge "Orphan view and multipath issue in Kaminario driver"

This commit is contained in:
Jenkins 2016-09-08 18:57:46 +00:00 committed by Gerrit Code Review
commit d0e5869460
3 changed files with 25 additions and 1 deletions

View File

@ -202,6 +202,7 @@ class TestKaminarioISCSI(test.TestCase):
"""Test create_volume_from_snapshot."""
mock_brick_get.return_value = CONNECTOR
mock_copy_volume.return_value = None
self.driver._kaminario_disconnect_volume = mock.Mock()
result = self.driver.create_volume_from_snapshot(self.vol, self.snap)
self.assertIsNone(result)
@ -223,6 +224,7 @@ class TestKaminarioISCSI(test.TestCase):
"""Test create_cloned_volume."""
mock_brick_get.return_value = CONNECTOR
mock_copy_volume.return_value = None
self.driver._kaminario_disconnect_volume = mock.Mock()
result = self.driver.create_cloned_volume(self.vol, self.vol)
self.assertIsNone(result)

View File

@ -600,9 +600,14 @@ class KaminarioCinderDriver(cinder.volume.driver.ISCSIDriver):
snapshot.volume.size * units.Ki,
self.configuration.volume_dd_blocksize,
sparse=True)
self._kaminario_disconnect_volume(src_attach_info,
dest_attach_info)
self.terminate_connection(volume, properties)
self.terminate_connection(cview, properties)
cview.delete()
except Exception as ex:
self._kaminario_disconnect_volume(src_attach_info,
dest_attach_info)
self.terminate_connection(cview, properties)
self.terminate_connection(volume, properties)
cview.delete()
@ -625,6 +630,7 @@ class KaminarioCinderDriver(cinder.volume.driver.ISCSIDriver):
src_name = self.get_volume_name(src_vref.id)
src_vol = self.client.search("volumes", name=src_name)
src_map = self.client.search("mappings", volume=src_vol)
src_attach_info = dest_attach_info = None
if src_map.total != 0:
msg = _("K2 driver does not support clone of a attached volume. "
"To get this done, create a snapshot from the attached "
@ -643,10 +649,13 @@ class KaminarioCinderDriver(cinder.volume.driver.ISCSIDriver):
src_vref.size * units.Ki,
self.configuration.volume_dd_blocksize,
sparse=True)
self._kaminario_disconnect_volume(src_attach_info,
dest_attach_info)
self.terminate_connection(volume, properties)
self.terminate_connection(src_vref, properties)
except Exception as ex:
self._kaminario_disconnect_volume(src_attach_info,
dest_attach_info)
self.terminate_connection(src_vref, properties)
self.terminate_connection(volume, properties)
self.delete_volume(volume)
@ -1139,3 +1148,10 @@ class KaminarioCinderDriver(cinder.volume.driver.ISCSIDriver):
self._delete_failover_volume_replica(volume, vg_name, vol_name)
else:
self._delete_volume_replica(volume, vg_name, vol_name)
def _kaminario_disconnect_volume(self, *attach_info):
for info in attach_info:
if (info and info.get('connector') and
info.get('conn', {}).get('data') and info.get('device')):
info['connector'].disconnect_volume(info['conn']['data'],
info['device'])

View File

@ -0,0 +1,6 @@
---
fixes:
- Fixed orphan view in "create_volume_from_snapshot" method
and multipath_devices in "create_volume_from_snapshot" and
"create_cloned_volume" methods in Kaminario iSCSI and FC Cinder Drivers.