Merge "move kaminario driver exceptions"
This commit is contained in:
commit
1b0ad2da1b
@ -1129,15 +1129,6 @@ class NotSupportedOperation(Invalid):
|
|||||||
code = 405
|
code = 405
|
||||||
|
|
||||||
|
|
||||||
# Kaminario K2
|
|
||||||
class KaminarioCinderDriverException(VolumeDriverException):
|
|
||||||
message = _("KaminarioCinderDriver failure: %(reason)s")
|
|
||||||
|
|
||||||
|
|
||||||
class KaminarioRetryableException(VolumeDriverException):
|
|
||||||
message = _("Kaminario retryable exception: %(reason)s")
|
|
||||||
|
|
||||||
|
|
||||||
class AttachmentSpecsNotFound(NotFound):
|
class AttachmentSpecsNotFound(NotFound):
|
||||||
message = _("Attachment %(attachment_id)s has no "
|
message = _("Attachment %(attachment_id)s has no "
|
||||||
"key %(specs_key)s.")
|
"key %(specs_key)s.")
|
||||||
|
@ -78,10 +78,10 @@ class FakeSaveObject(FakeK2Obj):
|
|||||||
|
|
||||||
class FakeSaveObjectExp(FakeSaveObject):
|
class FakeSaveObjectExp(FakeSaveObject):
|
||||||
def save(self):
|
def save(self):
|
||||||
raise exception.KaminarioCinderDriverException("test")
|
raise kaminario_common.KaminarioCinderDriverException("test")
|
||||||
|
|
||||||
def delete(self):
|
def delete(self):
|
||||||
raise exception.KaminarioCinderDriverException("test")
|
raise kaminario_common.KaminarioCinderDriverException("test")
|
||||||
|
|
||||||
|
|
||||||
class FakeSearchObject(object):
|
class FakeSearchObject(object):
|
||||||
@ -159,7 +159,7 @@ class TestKaminarioCommon(test.TestCase):
|
|||||||
def test_create_volume_with_exception(self):
|
def test_create_volume_with_exception(self):
|
||||||
"""Test create_volume_with_exception."""
|
"""Test create_volume_with_exception."""
|
||||||
self.driver.client = FakeKrestException()
|
self.driver.client = FakeKrestException()
|
||||||
self.assertRaises(exception.KaminarioCinderDriverException,
|
self.assertRaises(kaminario_common.KaminarioCinderDriverException,
|
||||||
self.driver.create_volume, self.vol)
|
self.driver.create_volume, self.vol)
|
||||||
|
|
||||||
def test_delete_volume(self):
|
def test_delete_volume(self):
|
||||||
@ -170,7 +170,7 @@ class TestKaminarioCommon(test.TestCase):
|
|||||||
def test_delete_volume_with_exception(self):
|
def test_delete_volume_with_exception(self):
|
||||||
"""Test delete_volume_with_exception."""
|
"""Test delete_volume_with_exception."""
|
||||||
self.driver.client = FakeKrestException()
|
self.driver.client = FakeKrestException()
|
||||||
self.assertRaises(exception.KaminarioCinderDriverException,
|
self.assertRaises(kaminario_common.KaminarioCinderDriverException,
|
||||||
self.driver.delete_volume, self.vol)
|
self.driver.delete_volume, self.vol)
|
||||||
|
|
||||||
def test_create_snapshot(self):
|
def test_create_snapshot(self):
|
||||||
@ -189,7 +189,7 @@ class TestKaminarioCommon(test.TestCase):
|
|||||||
def test_create_snapshot_with_exception(self):
|
def test_create_snapshot_with_exception(self):
|
||||||
"""Test create_snapshot_with_exception."""
|
"""Test create_snapshot_with_exception."""
|
||||||
self.driver.client = FakeKrestException()
|
self.driver.client = FakeKrestException()
|
||||||
self.assertRaises(exception.KaminarioCinderDriverException,
|
self.assertRaises(kaminario_common.KaminarioCinderDriverException,
|
||||||
self.driver.create_snapshot, self.snap)
|
self.driver.create_snapshot, self.snap)
|
||||||
|
|
||||||
def test_delete_snapshot(self):
|
def test_delete_snapshot(self):
|
||||||
@ -200,7 +200,7 @@ class TestKaminarioCommon(test.TestCase):
|
|||||||
def test_delete_snapshot_with_exception(self):
|
def test_delete_snapshot_with_exception(self):
|
||||||
"""Test delete_snapshot_with_exception."""
|
"""Test delete_snapshot_with_exception."""
|
||||||
self.driver.client = FakeKrestException()
|
self.driver.client = FakeKrestException()
|
||||||
self.assertRaises(exception.KaminarioCinderDriverException,
|
self.assertRaises(kaminario_common.KaminarioCinderDriverException,
|
||||||
self.driver.delete_snapshot, self.snap)
|
self.driver.delete_snapshot, self.snap)
|
||||||
|
|
||||||
@mock.patch.object(utils, 'brick_get_connector_properties')
|
@mock.patch.object(utils, 'brick_get_connector_properties')
|
||||||
@ -222,7 +222,7 @@ class TestKaminarioCommon(test.TestCase):
|
|||||||
mock_brick_get.return_value = CONNECTOR
|
mock_brick_get.return_value = CONNECTOR
|
||||||
mock_copy_volume.return_value = None
|
mock_copy_volume.return_value = None
|
||||||
self.driver.client = FakeKrestException()
|
self.driver.client = FakeKrestException()
|
||||||
self.assertRaises(exception.KaminarioCinderDriverException,
|
self.assertRaises(kaminario_common.KaminarioCinderDriverException,
|
||||||
self.driver.create_volume_from_snapshot, self.vol,
|
self.driver.create_volume_from_snapshot, self.vol,
|
||||||
self.snap)
|
self.snap)
|
||||||
|
|
||||||
@ -245,7 +245,7 @@ class TestKaminarioCommon(test.TestCase):
|
|||||||
mock_copy_volume.return_value = None
|
mock_copy_volume.return_value = None
|
||||||
self.driver.terminate_connection = mock.Mock()
|
self.driver.terminate_connection = mock.Mock()
|
||||||
self.driver.client = FakeKrestException()
|
self.driver.client = FakeKrestException()
|
||||||
self.assertRaises(exception.KaminarioCinderDriverException,
|
self.assertRaises(kaminario_common.KaminarioCinderDriverException,
|
||||||
self.driver.create_cloned_volume, self.vol, self.vol)
|
self.driver.create_cloned_volume, self.vol, self.vol)
|
||||||
|
|
||||||
def test_extend_volume(self):
|
def test_extend_volume(self):
|
||||||
@ -258,13 +258,13 @@ class TestKaminarioCommon(test.TestCase):
|
|||||||
"""Test extend_volume_with_exception."""
|
"""Test extend_volume_with_exception."""
|
||||||
self.driver.client = FakeKrestException()
|
self.driver.client = FakeKrestException()
|
||||||
new_size = 256
|
new_size = 256
|
||||||
self.assertRaises(exception.KaminarioCinderDriverException,
|
self.assertRaises(kaminario_common.KaminarioCinderDriverException,
|
||||||
self.driver.extend_volume, self.vol, new_size)
|
self.driver.extend_volume, self.vol, new_size)
|
||||||
|
|
||||||
def test_initialize_connection_with_exception(self):
|
def test_initialize_connection_with_exception(self):
|
||||||
"""Test initialize_connection_with_exception."""
|
"""Test initialize_connection_with_exception."""
|
||||||
self.driver.client = FakeKrestException()
|
self.driver.client = FakeKrestException()
|
||||||
self.assertRaises(exception.KaminarioCinderDriverException,
|
self.assertRaises(kaminario_common.KaminarioCinderDriverException,
|
||||||
self.driver.initialize_connection, self.vol,
|
self.driver.initialize_connection, self.vol,
|
||||||
CONNECTOR)
|
CONNECTOR)
|
||||||
|
|
||||||
@ -354,7 +354,7 @@ class TestKaminarioCommon(test.TestCase):
|
|||||||
rep = Replication()
|
rep = Replication()
|
||||||
self.driver.replica = rep
|
self.driver.replica = rep
|
||||||
self.driver.client = FakeKrestException()
|
self.driver.client = FakeKrestException()
|
||||||
self.assertRaises(exception.KaminarioCinderDriverException,
|
self.assertRaises(kaminario_common.KaminarioCinderDriverException,
|
||||||
self.driver._create_volume_replica, self.vol,
|
self.driver._create_volume_replica, self.vol,
|
||||||
vg, vg, rep.rpo)
|
vg, vg, rep.rpo)
|
||||||
|
|
||||||
@ -425,7 +425,7 @@ class TestKaminarioCommon(test.TestCase):
|
|||||||
self.driver.replica = Replication()
|
self.driver.replica = Replication()
|
||||||
self.driver.target = FakeKrestException()
|
self.driver.target = FakeKrestException()
|
||||||
self.driver._check_for_status = mock.Mock()
|
self.driver._check_for_status = mock.Mock()
|
||||||
self.assertRaises(exception.KaminarioCinderDriverException,
|
self.assertRaises(kaminario_common.KaminarioCinderDriverException,
|
||||||
self.driver._delete_volume_replica, self.vol,
|
self.driver._delete_volume_replica, self.vol,
|
||||||
'test', 'test')
|
'test', 'test')
|
||||||
|
|
||||||
|
@ -72,6 +72,15 @@ K2HTTPError = requests.exceptions.HTTPError
|
|||||||
K2_RETRY_ERRORS = ("MC_ERR_BUSY", "MC_ERR_BUSY_SPECIFIC",
|
K2_RETRY_ERRORS = ("MC_ERR_BUSY", "MC_ERR_BUSY_SPECIFIC",
|
||||||
"MC_ERR_INPROGRESS", "MC_ERR_START_TIMEOUT")
|
"MC_ERR_INPROGRESS", "MC_ERR_START_TIMEOUT")
|
||||||
|
|
||||||
|
|
||||||
|
class KaminarioCinderDriverException(exception.VolumeDriverException):
|
||||||
|
message = _("KaminarioCinderDriver failure: %(reason)s")
|
||||||
|
|
||||||
|
|
||||||
|
class KaminarioRetryableException(exception.VolumeDriverException):
|
||||||
|
message = _("Kaminario retryable exception: %(reason)s")
|
||||||
|
|
||||||
|
|
||||||
if krest:
|
if krest:
|
||||||
class KrestWrap(krest.EndPoint):
|
class KrestWrap(krest.EndPoint):
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
@ -87,7 +96,7 @@ if krest:
|
|||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
@utils.retry(exception.KaminarioRetryableException,
|
@utils.retry(KaminarioRetryableException,
|
||||||
retries=MAX_K2_RETRY)
|
retries=MAX_K2_RETRY)
|
||||||
def _request(self, method, *args, **kwargs):
|
def _request(self, method, *args, **kwargs):
|
||||||
try:
|
try:
|
||||||
@ -98,7 +107,7 @@ if krest:
|
|||||||
err_code = err.response.status_code
|
err_code = err.response.status_code
|
||||||
err_msg = err.response.text
|
err_msg = err.response.text
|
||||||
if self._should_retry(err_code, err_msg):
|
if self._should_retry(err_code, err_msg):
|
||||||
raise exception.KaminarioRetryableException(
|
raise KaminarioRetryableException(
|
||||||
reason=six.text_type(err_msg))
|
reason=six.text_type(err_msg))
|
||||||
raise
|
raise
|
||||||
finally:
|
finally:
|
||||||
@ -135,7 +144,7 @@ class KaminarioCinderDriver(cinder.volume.driver.ISCSIDriver):
|
|||||||
if krest is None:
|
if krest is None:
|
||||||
msg = _("Unable to import 'krest' python module.")
|
msg = _("Unable to import 'krest' python module.")
|
||||||
LOG.error(msg)
|
LOG.error(msg)
|
||||||
raise exception.KaminarioCinderDriverException(reason=msg)
|
raise KaminarioCinderDriverException(reason=msg)
|
||||||
else:
|
else:
|
||||||
conf = self.configuration
|
conf = self.configuration
|
||||||
self.client = KrestWrap(conf.san_ip,
|
self.client = KrestWrap(conf.san_ip,
|
||||||
@ -156,12 +165,12 @@ class KaminarioCinderDriver(cinder.volume.driver.ISCSIDriver):
|
|||||||
msg = _("K2 REST API version should be "
|
msg = _("K2 REST API version should be "
|
||||||
">= %s.") % K2_MIN_VERSION
|
">= %s.") % K2_MIN_VERSION
|
||||||
LOG.error(msg)
|
LOG.error(msg)
|
||||||
raise exception.KaminarioCinderDriverException(reason=msg)
|
raise KaminarioCinderDriverException(reason=msg)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
msg = _("K2 REST API version search failed.")
|
msg = _("K2 REST API version search failed.")
|
||||||
LOG.error(msg)
|
LOG.error(msg)
|
||||||
raise exception.KaminarioCinderDriverException(reason=msg)
|
raise KaminarioCinderDriverException(reason=msg)
|
||||||
|
|
||||||
def _check_ops(self):
|
def _check_ops(self):
|
||||||
"""Ensure that the options we care about are set."""
|
"""Ensure that the options we care about are set."""
|
||||||
@ -213,7 +222,7 @@ class KaminarioCinderDriver(cinder.volume.driver.ISCSIDriver):
|
|||||||
LOG.debug("Deleting vg: %s for failed volume in K2.", vg_name)
|
LOG.debug("Deleting vg: %s for failed volume in K2.", vg_name)
|
||||||
vg_rs.hits[0].delete()
|
vg_rs.hits[0].delete()
|
||||||
LOG.exception("Creation of volume %s failed.", vol_name)
|
LOG.exception("Creation of volume %s failed.", vol_name)
|
||||||
raise exception.KaminarioCinderDriverException(reason=ex)
|
raise KaminarioCinderDriverException(reason=ex)
|
||||||
|
|
||||||
if self._get_is_replica(volume.volume_type) and self.replica:
|
if self._get_is_replica(volume.volume_type) and self.replica:
|
||||||
self._create_volume_replica(volume, vg, vol, self.replica.rpo)
|
self._create_volume_replica(volume, vg, vol, self.replica.rpo)
|
||||||
@ -239,7 +248,7 @@ class KaminarioCinderDriver(cinder.volume.driver.ISCSIDriver):
|
|||||||
else:
|
else:
|
||||||
msg = _("Unable to find K2peer in source K2:")
|
msg = _("Unable to find K2peer in source K2:")
|
||||||
LOG.error(msg)
|
LOG.error(msg)
|
||||||
raise exception.KaminarioCinderDriverException(reason=msg)
|
raise KaminarioCinderDriverException(reason=msg)
|
||||||
try:
|
try:
|
||||||
LOG.debug("Creating source session with name: %(sname)s and "
|
LOG.debug("Creating source session with name: %(sname)s and "
|
||||||
" target session name: %(tname)s",
|
" target session name: %(tname)s",
|
||||||
@ -274,7 +283,7 @@ class KaminarioCinderDriver(cinder.volume.driver.ISCSIDriver):
|
|||||||
self._delete_by_ref(self.target, "volume_groups",
|
self._delete_by_ref(self.target, "volume_groups",
|
||||||
rvg_name, "remote vg")
|
rvg_name, "remote vg")
|
||||||
self._delete_by_ref(self.client, "volume_groups", vg.name, "vg")
|
self._delete_by_ref(self.client, "volume_groups", vg.name, "vg")
|
||||||
raise exception.KaminarioCinderDriverException(reason=ex)
|
raise KaminarioCinderDriverException(reason=ex)
|
||||||
|
|
||||||
@utils.trace
|
@utils.trace
|
||||||
def _create_failover_volume_replica(self, volume, vg_name, vol_name):
|
def _create_failover_volume_replica(self, volume, vg_name, vol_name):
|
||||||
@ -298,7 +307,7 @@ class KaminarioCinderDriver(cinder.volume.driver.ISCSIDriver):
|
|||||||
else:
|
else:
|
||||||
msg = _("Unable to find K2peer in source K2:")
|
msg = _("Unable to find K2peer in source K2:")
|
||||||
LOG.error(msg)
|
LOG.error(msg)
|
||||||
raise exception.KaminarioCinderDriverException(reason=msg)
|
raise KaminarioCinderDriverException(reason=msg)
|
||||||
try:
|
try:
|
||||||
LOG.debug("Creating source session with name: %(sname)s and "
|
LOG.debug("Creating source session with name: %(sname)s and "
|
||||||
" target session name: %(tname)s",
|
" target session name: %(tname)s",
|
||||||
@ -329,7 +338,7 @@ class KaminarioCinderDriver(cinder.volume.driver.ISCSIDriver):
|
|||||||
session_name, 'remote session')
|
session_name, 'remote session')
|
||||||
self._delete_by_ref(self.client, "volumes", vol_name, "volume")
|
self._delete_by_ref(self.client, "volumes", vol_name, "volume")
|
||||||
self._delete_by_ref(self.client, "volume_groups", vg_name, "vg")
|
self._delete_by_ref(self.client, "volume_groups", vg_name, "vg")
|
||||||
raise exception.KaminarioCinderDriverException(reason=ex)
|
raise KaminarioCinderDriverException(reason=ex)
|
||||||
|
|
||||||
@utils.trace
|
@utils.trace
|
||||||
def _delete_by_ref(self, device, url, name, msg):
|
def _delete_by_ref(self, device, url, name, msg):
|
||||||
@ -565,12 +574,12 @@ class KaminarioCinderDriver(cinder.volume.driver.ISCSIDriver):
|
|||||||
LOG.exception("Creating a view: %(view)s from snapshot: "
|
LOG.exception("Creating a view: %(view)s from snapshot: "
|
||||||
"%(snap)s failed", {"view": view_name,
|
"%(snap)s failed", {"view": view_name,
|
||||||
"snap": snap_name})
|
"snap": snap_name})
|
||||||
raise exception.KaminarioCinderDriverException(reason=ex)
|
raise KaminarioCinderDriverException(reason=ex)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
msg = _("Snapshot: %s search failed in K2.") % snap_name
|
msg = _("Snapshot: %s search failed in K2.") % snap_name
|
||||||
LOG.error(msg)
|
LOG.error(msg)
|
||||||
raise exception.KaminarioCinderDriverException(reason=msg)
|
raise KaminarioCinderDriverException(reason=msg)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
conn = self.initialize_connection(cview, properties)
|
conn = self.initialize_connection(cview, properties)
|
||||||
@ -597,7 +606,7 @@ class KaminarioCinderDriver(cinder.volume.driver.ISCSIDriver):
|
|||||||
self.delete_volume(volume)
|
self.delete_volume(volume)
|
||||||
LOG.exception("Copy to volume: %(vol)s from view: %(view)s "
|
LOG.exception("Copy to volume: %(vol)s from view: %(view)s "
|
||||||
"failed", {"vol": vol_name, "view": view_name})
|
"failed", {"vol": vol_name, "view": view_name})
|
||||||
raise exception.KaminarioCinderDriverException(reason=ex)
|
raise KaminarioCinderDriverException(reason=ex)
|
||||||
|
|
||||||
@utils.trace
|
@utils.trace
|
||||||
def create_cloned_volume(self, volume, src_vref):
|
def create_cloned_volume(self, volume, src_vref):
|
||||||
@ -618,7 +627,7 @@ class KaminarioCinderDriver(cinder.volume.driver.ISCSIDriver):
|
|||||||
"To get this done, create a snapshot from the attached "
|
"To get this done, create a snapshot from the attached "
|
||||||
"volume and then create a volume from the snapshot.")
|
"volume and then create a volume from the snapshot.")
|
||||||
LOG.error(msg)
|
LOG.error(msg)
|
||||||
raise exception.KaminarioCinderDriverException(reason=msg)
|
raise KaminarioCinderDriverException(reason=msg)
|
||||||
try:
|
try:
|
||||||
properties = utils.brick_get_connector_properties()
|
properties = utils.brick_get_connector_properties()
|
||||||
conn = self.initialize_connection(src_vref, properties)
|
conn = self.initialize_connection(src_vref, properties)
|
||||||
@ -642,7 +651,7 @@ class KaminarioCinderDriver(cinder.volume.driver.ISCSIDriver):
|
|||||||
self.terminate_connection(volume, properties)
|
self.terminate_connection(volume, properties)
|
||||||
self.delete_volume(volume)
|
self.delete_volume(volume)
|
||||||
LOG.exception("Create a clone: %s failed.", clone_name)
|
LOG.exception("Create a clone: %s failed.", clone_name)
|
||||||
raise exception.KaminarioCinderDriverException(reason=ex)
|
raise KaminarioCinderDriverException(reason=ex)
|
||||||
|
|
||||||
@utils.trace
|
@utils.trace
|
||||||
def delete_volume(self, volume):
|
def delete_volume(self, volume):
|
||||||
@ -667,7 +676,7 @@ class KaminarioCinderDriver(cinder.volume.driver.ISCSIDriver):
|
|||||||
vg_rs.hits[0].delete()
|
vg_rs.hits[0].delete()
|
||||||
except Exception as ex:
|
except Exception as ex:
|
||||||
LOG.exception("Deletion of volume %s failed.", vol_name)
|
LOG.exception("Deletion of volume %s failed.", vol_name)
|
||||||
raise exception.KaminarioCinderDriverException(reason=ex)
|
raise KaminarioCinderDriverException(reason=ex)
|
||||||
|
|
||||||
@utils.trace
|
@utils.trace
|
||||||
def _delete_volume_replica(self, volume, vg_name, vol_name):
|
def _delete_volume_replica(self, volume, vg_name, vol_name):
|
||||||
@ -766,7 +775,7 @@ class KaminarioCinderDriver(cinder.volume.driver.ISCSIDriver):
|
|||||||
is_auto_deleteable=False).save()
|
is_auto_deleteable=False).save()
|
||||||
except Exception as ex:
|
except Exception as ex:
|
||||||
LOG.exception("Creation of snapshot: %s failed.", snap_name)
|
LOG.exception("Creation of snapshot: %s failed.", snap_name)
|
||||||
raise exception.KaminarioCinderDriverException(reason=ex)
|
raise KaminarioCinderDriverException(reason=ex)
|
||||||
|
|
||||||
@utils.trace
|
@utils.trace
|
||||||
def delete_snapshot(self, snapshot):
|
def delete_snapshot(self, snapshot):
|
||||||
@ -779,7 +788,7 @@ class KaminarioCinderDriver(cinder.volume.driver.ISCSIDriver):
|
|||||||
snap_rs.hits[0].delete()
|
snap_rs.hits[0].delete()
|
||||||
except Exception as ex:
|
except Exception as ex:
|
||||||
LOG.exception("Deletion of snapshot: %s failed.", snap_name)
|
LOG.exception("Deletion of snapshot: %s failed.", snap_name)
|
||||||
raise exception.KaminarioCinderDriverException(reason=ex)
|
raise KaminarioCinderDriverException(reason=ex)
|
||||||
|
|
||||||
@utils.trace
|
@utils.trace
|
||||||
def extend_volume(self, volume, new_size):
|
def extend_volume(self, volume, new_size):
|
||||||
@ -793,7 +802,7 @@ class KaminarioCinderDriver(cinder.volume.driver.ISCSIDriver):
|
|||||||
vol.save()
|
vol.save()
|
||||||
except Exception as ex:
|
except Exception as ex:
|
||||||
LOG.exception("Extending volume: %s failed.", vol_name)
|
LOG.exception("Extending volume: %s failed.", vol_name)
|
||||||
raise exception.KaminarioCinderDriverException(reason=ex)
|
raise KaminarioCinderDriverException(reason=ex)
|
||||||
|
|
||||||
def update_volume_stats(self):
|
def update_volume_stats(self):
|
||||||
conf = self.configuration
|
conf = self.configuration
|
||||||
@ -879,7 +888,7 @@ class KaminarioCinderDriver(cinder.volume.driver.ISCSIDriver):
|
|||||||
name="Best_Effort_Retention").hits[0]
|
name="Best_Effort_Retention").hits[0]
|
||||||
except Exception as ex:
|
except Exception as ex:
|
||||||
LOG.exception("Retention policy search failed in K2.")
|
LOG.exception("Retention policy search failed in K2.")
|
||||||
raise exception.KaminarioCinderDriverException(reason=ex)
|
raise KaminarioCinderDriverException(reason=ex)
|
||||||
|
|
||||||
def _get_volume_object(self, volume):
|
def _get_volume_object(self, volume):
|
||||||
vol_name = self.get_volume_name(volume.id)
|
vol_name = self.get_volume_name(volume.id)
|
||||||
@ -890,7 +899,7 @@ class KaminarioCinderDriver(cinder.volume.driver.ISCSIDriver):
|
|||||||
if not hasattr(vol_rs, 'hits') or vol_rs.total == 0:
|
if not hasattr(vol_rs, 'hits') or vol_rs.total == 0:
|
||||||
msg = _("Unable to find volume: %s from K2.") % vol_name
|
msg = _("Unable to find volume: %s from K2.") % vol_name
|
||||||
LOG.error(msg)
|
LOG.error(msg)
|
||||||
raise exception.KaminarioCinderDriverException(reason=msg)
|
raise KaminarioCinderDriverException(reason=msg)
|
||||||
return vol_rs.hits[0]
|
return vol_rs.hits[0]
|
||||||
|
|
||||||
def _get_lun_number(self, vol, host):
|
def _get_lun_number(self, vol, host):
|
||||||
@ -963,7 +972,7 @@ class KaminarioCinderDriver(cinder.volume.driver.ISCSIDriver):
|
|||||||
LOG.exception("Unable to map volume: %(vol)s to host: "
|
LOG.exception("Unable to map volume: %(vol)s to host: "
|
||||||
"%(host)s", {'host': host_name,
|
"%(host)s", {'host': host_name,
|
||||||
'vol': vol.name})
|
'vol': vol.name})
|
||||||
raise exception.KaminarioCinderDriverException(reason=ex)
|
raise KaminarioCinderDriverException(reason=ex)
|
||||||
# Get lun number.
|
# Get lun number.
|
||||||
if type(volume).__name__ == 'RestObject':
|
if type(volume).__name__ == 'RestObject':
|
||||||
return self._get_lun_number(vol, host)
|
return self._get_lun_number(vol, host)
|
||||||
|
@ -16,7 +16,6 @@
|
|||||||
from oslo_log import log as logging
|
from oslo_log import log as logging
|
||||||
|
|
||||||
from cinder import coordination
|
from cinder import coordination
|
||||||
from cinder import exception
|
|
||||||
from cinder.i18n import _
|
from cinder.i18n import _
|
||||||
from cinder.objects import fields
|
from cinder.objects import fields
|
||||||
from cinder import utils
|
from cinder import utils
|
||||||
@ -57,7 +56,7 @@ class KaminarioFCDriver(common.KaminarioCinderDriver):
|
|||||||
if not connector.get('wwpns'):
|
if not connector.get('wwpns'):
|
||||||
msg = _("No wwpns found in host connector.")
|
msg = _("No wwpns found in host connector.")
|
||||||
LOG.error(msg)
|
LOG.error(msg)
|
||||||
raise exception.KaminarioCinderDriverException(reason=msg)
|
raise common.KaminarioCinderDriverException(reason=msg)
|
||||||
# To support replication failback
|
# To support replication failback
|
||||||
temp_client = None
|
temp_client = None
|
||||||
if (hasattr(volume, 'replication_status') and
|
if (hasattr(volume, 'replication_status') and
|
||||||
@ -145,7 +144,7 @@ class KaminarioFCDriver(common.KaminarioCinderDriver):
|
|||||||
if not target_wwpns:
|
if not target_wwpns:
|
||||||
msg = _("Unable to get FC target wwpns from K2.")
|
msg = _("Unable to get FC target wwpns from K2.")
|
||||||
LOG.error(msg)
|
LOG.error(msg)
|
||||||
raise exception.KaminarioCinderDriverException(reason=msg)
|
raise common.KaminarioCinderDriverException(reason=msg)
|
||||||
return target_wwpns
|
return target_wwpns
|
||||||
|
|
||||||
@utils.trace
|
@utils.trace
|
||||||
@ -162,7 +161,7 @@ class KaminarioFCDriver(common.KaminarioCinderDriver):
|
|||||||
except Exception as ex:
|
except Exception as ex:
|
||||||
LOG.exception("Unable to create host : %s in K2.",
|
LOG.exception("Unable to create host : %s in K2.",
|
||||||
host_name)
|
host_name)
|
||||||
raise exception.KaminarioCinderDriverException(reason=ex)
|
raise common.KaminarioCinderDriverException(reason=ex)
|
||||||
else:
|
else:
|
||||||
# Use existing host.
|
# Use existing host.
|
||||||
LOG.debug("Use existing initiator hostname: %s in K2.", host_name)
|
LOG.debug("Use existing initiator hostname: %s in K2.", host_name)
|
||||||
@ -184,7 +183,7 @@ class KaminarioFCDriver(common.KaminarioCinderDriver):
|
|||||||
LOG.exception("Unable to add wwpn : %(wwpn)s to "
|
LOG.exception("Unable to add wwpn : %(wwpn)s to "
|
||||||
"host: %(host)s in K2.",
|
"host: %(host)s in K2.",
|
||||||
{'wwpn': wwpn, 'host': host_name})
|
{'wwpn': wwpn, 'host': host_name})
|
||||||
raise exception.KaminarioCinderDriverException(reason=ex)
|
raise common.KaminarioCinderDriverException(reason=ex)
|
||||||
return host, host_rs, host_name
|
return host, host_rs, host_name
|
||||||
|
|
||||||
def _build_initiator_target_map(self, connector, all_target_wwns):
|
def _build_initiator_target_map(self, connector, all_target_wwns):
|
||||||
|
@ -16,7 +16,6 @@
|
|||||||
from oslo_log import log as logging
|
from oslo_log import log as logging
|
||||||
|
|
||||||
from cinder import coordination
|
from cinder import coordination
|
||||||
from cinder import exception
|
|
||||||
from cinder.i18n import _
|
from cinder.i18n import _
|
||||||
from cinder import interface
|
from cinder import interface
|
||||||
from cinder.objects import fields
|
from cinder.objects import fields
|
||||||
@ -109,7 +108,7 @@ class KaminarioISCSIDriver(common.KaminarioCinderDriver):
|
|||||||
if not iscsi_portals:
|
if not iscsi_portals:
|
||||||
msg = _("Unable to get ISCSI IP address from K2.")
|
msg = _("Unable to get ISCSI IP address from K2.")
|
||||||
LOG.error(msg)
|
LOG.error(msg)
|
||||||
raise exception.KaminarioCinderDriverException(reason=msg)
|
raise common.KaminarioCinderDriverException(reason=msg)
|
||||||
LOG.debug("Searching system state for target iqn in K2.")
|
LOG.debug("Searching system state for target iqn in K2.")
|
||||||
sys_state_rs = self.client.search("system/state")
|
sys_state_rs = self.client.search("system/state")
|
||||||
|
|
||||||
@ -120,7 +119,7 @@ class KaminarioISCSIDriver(common.KaminarioCinderDriver):
|
|||||||
if not target_iqns:
|
if not target_iqns:
|
||||||
msg = _("Unable to get target iqn from K2.")
|
msg = _("Unable to get target iqn from K2.")
|
||||||
LOG.error(msg)
|
LOG.error(msg)
|
||||||
raise exception.KaminarioCinderDriverException(reason=msg)
|
raise common.KaminarioCinderDriverException(reason=msg)
|
||||||
return iscsi_portals, target_iqns
|
return iscsi_portals, target_iqns
|
||||||
|
|
||||||
@utils.trace
|
@utils.trace
|
||||||
@ -143,7 +142,7 @@ class KaminarioISCSIDriver(common.KaminarioCinderDriver):
|
|||||||
self._delete_host_by_name(host_name)
|
self._delete_host_by_name(host_name)
|
||||||
LOG.exception("Unable to create host: %s in K2.",
|
LOG.exception("Unable to create host: %s in K2.",
|
||||||
host_name)
|
host_name)
|
||||||
raise exception.KaminarioCinderDriverException(reason=ex)
|
raise common.KaminarioCinderDriverException(reason=ex)
|
||||||
else:
|
else:
|
||||||
LOG.debug("Use existing initiator hostname: %s in K2.", host_name)
|
LOG.debug("Use existing initiator hostname: %s in K2.", host_name)
|
||||||
host = host_rs.hits[0]
|
host = host_rs.hits[0]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user