Merge "move xtremio exceptions"

This commit is contained in:
Zuul 2019-05-14 01:02:37 +00:00 committed by Gerrit Code Review
commit 0bc7bd7435
3 changed files with 22 additions and 23 deletions

View File

@ -1180,19 +1180,6 @@ class WebDAVClientError(VolumeDriverException):
"Destination Volume: %(dst)s, Method: %(method)s.") "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 # StorPool driver
class StorPoolConfigurationInvalid(CinderException): class StorPoolConfigurationInvalid(CinderException):
message = _("Invalid parameter %(param)s in the %(section)s section " message = _("Invalid parameter %(param)s in the %(section)s section "

View File

@ -536,7 +536,7 @@ class XtremIODriverISCSITestCase(BaseXtremIODriverTestCase):
@mock.patch.object(xtremio.XtremIOClient4, 'create_snapshot') @mock.patch.object(xtremio.XtremIOClient4, 'create_snapshot')
def test_clone_volume_exceed_array_limit(self, create_snap, req): 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 req.side_effect = xms_request
self.driver.db = mock.Mock() self.driver.db = mock.Mock()
(self.driver.db. (self.driver.db.
@ -556,7 +556,7 @@ class XtremIODriverISCSITestCase(BaseXtremIODriverTestCase):
"message": "too_many_snapshots_per_vol", "message": "too_many_snapshots_per_vol",
"error_code": 400 "error_code": 400
} }
self.assertRaises(exception.XtremIOSnapshotsLimitExceeded, self.assertRaises(xtremio.XtremIOSnapshotsLimitExceeded,
self.driver.client.handle_errors, self.driver.client.handle_errors,
response, '', '') response, '', '')
@ -568,7 +568,7 @@ class XtremIODriverISCSITestCase(BaseXtremIODriverTestCase):
"message": "too_many_objs", "message": "too_many_objs",
"error_code": 400 "error_code": 400
} }
self.assertRaises(exception.XtremIOSnapshotsLimitExceeded, self.assertRaises(xtremio.XtremIOSnapshotsLimitExceeded,
self.driver.client.handle_errors, self.driver.client.handle_errors,
response, '', '') response, '', '')

View File

@ -101,6 +101,18 @@ XTREMIO_OID_NAME = 1
XTREMIO_OID_INDEX = 2 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): class XtremIOClient(object):
def __init__(self, configuration, cluster_id): def __init__(self, configuration, cluster_id):
self.configuration = configuration self.configuration = configuration
@ -121,7 +133,7 @@ class XtremIOClient(object):
def req(self, object_type='volumes', method='GET', data=None, def req(self, object_type='volumes', method='GET', data=None,
name=None, idx=None, ver='v1'): 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_count,
self.configuration.xtremio_array_busy_retry_interval, 1) self.configuration.xtremio_array_busy_retry_interval, 1)
def _do_req(object_type, method, data, name, idx, ver): def _do_req(object_type, method, data, name, idx, ver):
@ -188,11 +200,11 @@ class XtremIOClient(object):
{'key': key, 'msg': err_msg, }) {'key': key, 'msg': err_msg, })
raise exception.VolumeNotFound(volume_id=key) raise exception.VolumeNotFound(volume_id=key)
elif ALREADY_MAPPED_ERR in err_msg: elif ALREADY_MAPPED_ERR in err_msg:
raise exception.XtremIOAlreadyMappedError() raise XtremIOAlreadyMappedError()
elif err_msg == SYSTEM_BUSY: elif err_msg == SYSTEM_BUSY:
raise exception.XtremIOArrayBusy() raise XtremIOArrayBusy()
elif err_msg in (TOO_MANY_OBJECTS, TOO_MANY_SNAPSHOTS_PER_VOL): 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 msg = _('Bad response from XMS, %s') % response.text
LOG.error(msg) LOG.error(msg)
raise exception.VolumeBackendAPIException(message=msg) raise exception.VolumeBackendAPIException(message=msg)
@ -510,7 +522,7 @@ class XtremIOVolumeDriver(san.SanDriver):
try: try:
self.client.create_snapshot(snapshot_id, volume['id']) self.client.create_snapshot(snapshot_id, volume['id'])
except exception.XtremIOSnapshotsLimitExceeded as e: except XtremIOSnapshotsLimitExceeded as e:
raise exception.CinderException(e.message) raise exception.CinderException(e.message)
# extend the snapped volume if requested size is larger then original # extend the snapped volume if requested size is larger then original
@ -543,7 +555,7 @@ class XtremIOVolumeDriver(san.SanDriver):
'%d snapshots per volume' % limit) '%d snapshots per volume' % limit)
try: try:
self.client.create_snapshot(src_vref['id'], volume['id']) self.client.create_snapshot(src_vref['id'], volume['id'])
except exception.XtremIOSnapshotsLimitExceeded as e: except XtremIOSnapshotsLimitExceeded as e:
raise exception.CinderException(e.message) raise exception.CinderException(e.message)
# extend the snapped volume if requested size is larger then original # 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) lunmap = self._obj_from_result(res)
LOG.info('Created lun-map:\n%s', lunmap) LOG.info('Created lun-map:\n%s', lunmap)
except exception.XtremIOAlreadyMappedError: except XtremIOAlreadyMappedError:
LOG.info('Volume already mapped, retrieving %(ig)s, %(vol)s', LOG.info('Volume already mapped, retrieving %(ig)s, %(vol)s',
{'ig': ig, 'vol': volume['id']}) {'ig': ig, 'vol': volume['id']})
lunmap = self.client.find_lunmap(ig, volume['id']) lunmap = self.client.find_lunmap(ig, volume['id'])