From b986a241d01afc5d2f65aeaee8f4c05b45b50620 Mon Sep 17 00:00:00 2001 From: "Walter A. Boring IV" Date: Wed, 8 May 2019 19:10:02 +0000 Subject: [PATCH] move xtremio exceptions This patch moves the xtremio exceptions to the driver. Change-Id: I61cda4dab24e1f6065e9e78e5b956fbd953fd332 --- cinder/exception.py | 13 ---------- .../volume/drivers/dell_emc/test_xtremio.py | 6 ++--- cinder/volume/drivers/dell_emc/xtremio.py | 26 ++++++++++++++----- 3 files changed, 22 insertions(+), 23 deletions(-) diff --git a/cinder/exception.py b/cinder/exception.py index 0232e26c2e3..b0c83315231 100644 --- a/cinder/exception.py +++ b/cinder/exception.py @@ -1226,19 +1226,6 @@ class WebDAVClientError(VolumeDriverException): "Destination Volume: %(dst)s, Method: %(method)s.") -# XtremIO Drivers -class XtremIOAlreadyMappedError(VolumeDriverException): - message = _("Volume to Initiator Group mapping already exists") - - -class XtremIOArrayBusy(VolumeDriverException): - message = _("System is busy, retry operation.") - - -class XtremIOSnapshotsLimitExceeded(VolumeDriverException): - message = _("Exceeded the limit of snapshots per volume") - - # StorPool driver class StorPoolConfigurationInvalid(CinderException): message = _("Invalid parameter %(param)s in the %(section)s section " diff --git a/cinder/tests/unit/volume/drivers/dell_emc/test_xtremio.py b/cinder/tests/unit/volume/drivers/dell_emc/test_xtremio.py index bf698c1f8d3..f58e584678c 100644 --- a/cinder/tests/unit/volume/drivers/dell_emc/test_xtremio.py +++ b/cinder/tests/unit/volume/drivers/dell_emc/test_xtremio.py @@ -536,7 +536,7 @@ class XtremIODriverISCSITestCase(BaseXtremIODriverTestCase): @mock.patch.object(xtremio.XtremIOClient4, 'create_snapshot') def test_clone_volume_exceed_array_limit(self, create_snap, req): - create_snap.side_effect = exception.XtremIOSnapshotsLimitExceeded() + create_snap.side_effect = xtremio.XtremIOSnapshotsLimitExceeded() req.side_effect = xms_request self.driver.db = mock.Mock() (self.driver.db. @@ -556,7 +556,7 @@ class XtremIODriverISCSITestCase(BaseXtremIODriverTestCase): "message": "too_many_snapshots_per_vol", "error_code": 400 } - self.assertRaises(exception.XtremIOSnapshotsLimitExceeded, + self.assertRaises(xtremio.XtremIOSnapshotsLimitExceeded, self.driver.client.handle_errors, response, '', '') @@ -568,7 +568,7 @@ class XtremIODriverISCSITestCase(BaseXtremIODriverTestCase): "message": "too_many_objs", "error_code": 400 } - self.assertRaises(exception.XtremIOSnapshotsLimitExceeded, + self.assertRaises(xtremio.XtremIOSnapshotsLimitExceeded, self.driver.client.handle_errors, response, '', '') diff --git a/cinder/volume/drivers/dell_emc/xtremio.py b/cinder/volume/drivers/dell_emc/xtremio.py index e9522f228e5..bbcc21e1889 100644 --- a/cinder/volume/drivers/dell_emc/xtremio.py +++ b/cinder/volume/drivers/dell_emc/xtremio.py @@ -101,6 +101,18 @@ XTREMIO_OID_NAME = 1 XTREMIO_OID_INDEX = 2 +class XtremIOAlreadyMappedError(exception.VolumeDriverException): + message = _("Volume to Initiator Group mapping already exists") + + +class XtremIOArrayBusy(exception.VolumeDriverException): + message = _("System is busy, retry operation.") + + +class XtremIOSnapshotsLimitExceeded(exception.VolumeDriverException): + message = _("Exceeded the limit of snapshots per volume") + + class XtremIOClient(object): def __init__(self, configuration, cluster_id): self.configuration = configuration @@ -121,7 +133,7 @@ class XtremIOClient(object): def req(self, object_type='volumes', method='GET', data=None, name=None, idx=None, ver='v1'): - @utils.retry(exception.XtremIOArrayBusy, + @utils.retry(XtremIOArrayBusy, self.configuration.xtremio_array_busy_retry_count, self.configuration.xtremio_array_busy_retry_interval, 1) def _do_req(object_type, method, data, name, idx, ver): @@ -188,11 +200,11 @@ class XtremIOClient(object): {'key': key, 'msg': err_msg, }) raise exception.VolumeNotFound(volume_id=key) elif ALREADY_MAPPED_ERR in err_msg: - raise exception.XtremIOAlreadyMappedError() + raise XtremIOAlreadyMappedError() elif err_msg == SYSTEM_BUSY: - raise exception.XtremIOArrayBusy() + raise XtremIOArrayBusy() elif err_msg in (TOO_MANY_OBJECTS, TOO_MANY_SNAPSHOTS_PER_VOL): - raise exception.XtremIOSnapshotsLimitExceeded() + raise XtremIOSnapshotsLimitExceeded() msg = _('Bad response from XMS, %s') % response.text LOG.error(msg) raise exception.VolumeBackendAPIException(message=msg) @@ -510,7 +522,7 @@ class XtremIOVolumeDriver(san.SanDriver): try: self.client.create_snapshot(snapshot_id, volume['id']) - except exception.XtremIOSnapshotsLimitExceeded as e: + except XtremIOSnapshotsLimitExceeded as e: raise exception.CinderException(e.message) # extend the snapped volume if requested size is larger then original @@ -543,7 +555,7 @@ class XtremIOVolumeDriver(san.SanDriver): '%d snapshots per volume' % limit) try: self.client.create_snapshot(src_vref['id'], volume['id']) - except exception.XtremIOSnapshotsLimitExceeded as e: + except XtremIOSnapshotsLimitExceeded as e: raise exception.CinderException(e.message) # extend the snapped volume if requested size is larger then original @@ -785,7 +797,7 @@ class XtremIOVolumeDriver(san.SanDriver): lunmap = self._obj_from_result(res) LOG.info('Created lun-map:\n%s', lunmap) - except exception.XtremIOAlreadyMappedError: + except XtremIOAlreadyMappedError: LOG.info('Volume already mapped, retrieving %(ig)s, %(vol)s', {'ig': ig, 'vol': volume['id']}) lunmap = self.client.find_lunmap(ig, volume['id'])