Merge "Fix exception handling for python3"

This commit is contained in:
Zuul 2017-11-24 10:32:56 +00:00 committed by Gerrit Code Review
commit 9f64836e1a
8 changed files with 45 additions and 46 deletions

View File

@ -300,7 +300,7 @@ class MetricsRepository(metrics_repository.AbstractMetricsRepository):
return json_metric_list
except InfluxDBClientError as ex:
if ex.message.startswith(MEASUREMENT_NOT_FOUND_MSG):
if str(ex).startswith(MEASUREMENT_NOT_FOUND_MSG):
return []
else:
LOG.exception(ex)
@ -585,8 +585,8 @@ class MetricsRepository(metrics_repository.AbstractMetricsRepository):
except exceptions.RepositoryException as ex:
if (isinstance(ex.message, InfluxDBClientError) and
ex.message.message.startswith(MEASUREMENT_NOT_FOUND_MSG)):
if (len(ex.args) and isinstance(ex.args[0], InfluxDBClientError) and
str(ex.args[0]).startswith(MEASUREMENT_NOT_FOUND_MSG)):
return json_measurement_list
@ -598,7 +598,7 @@ class MetricsRepository(metrics_repository.AbstractMetricsRepository):
except InfluxDBClientError as ex:
if ex.message.startswith(MEASUREMENT_NOT_FOUND_MSG):
if str(ex).startswith(MEASUREMENT_NOT_FOUND_MSG):
return json_measurement_list
@ -696,8 +696,8 @@ class MetricsRepository(metrics_repository.AbstractMetricsRepository):
except exceptions.RepositoryException as ex:
if (isinstance(ex.message, InfluxDBClientError) and
ex.message.message.startswith(MEASUREMENT_NOT_FOUND_MSG)):
if (len(ex.args) and isinstance(ex.args[0], InfluxDBClientError) and
str(ex.args[0]).startswith(MEASUREMENT_NOT_FOUND_MSG)):
return json_statistics_list
@ -709,7 +709,7 @@ class MetricsRepository(metrics_repository.AbstractMetricsRepository):
except InfluxDBClientError as ex:
if ex.message.startswith(MEASUREMENT_NOT_FOUND_MSG):
if str(ex).startswith(MEASUREMENT_NOT_FOUND_MSG):
return json_statistics_list

View File

@ -204,7 +204,7 @@ class TestNotificationValidation(base.BaseTestCase):
ex = self.assertRaises(schemas_exceptions.ValidationException,
schemas_notifications.parse_and_validate,
notification, valid_periods)
self.assertEqual("Period can only be set with webhooks", ex.message)
self.assertEqual("Period can only be set with webhooks", str(ex))
def test_validation_for_webhook(self):
notification = {"name": "MyWebhook", "type": "WEBHOOK", "address": "http://somedomain.com"}
@ -226,21 +226,21 @@ class TestNotificationValidation(base.BaseTestCase):
ex = self.assertRaises(schemas_exceptions.ValidationException,
schemas_notifications.parse_and_validate,
notification, valid_periods)
self.assertEqual("Address //somedomain.com does not have URL scheme", ex.message)
self.assertEqual("Address //somedomain.com does not have URL scheme", str(ex))
def test_validation_exception_for_webhook_no_netloc(self):
notification = {"name": "MyWebhook", "type": "WEBHOOK", "address": "http://"}
ex = self.assertRaises(schemas_exceptions.ValidationException,
schemas_notifications.parse_and_validate,
notification, valid_periods)
self.assertEqual("Address http:// does not have network location", ex.message)
self.assertEqual("Address http:// does not have network location", str(ex))
def test_validation_exception_for_webhook_invalid_scheme(self):
notification = {"name": "MyWebhook", "type": "WEBHOOK", "address": "ftp://somedomain.com"}
ex = self.assertRaises(schemas_exceptions.ValidationException,
schemas_notifications.parse_and_validate,
notification, valid_periods)
self.assertEqual("Address ftp://somedomain.com scheme is not in ['http', 'https']", ex.message)
self.assertEqual("Address ftp://somedomain.com scheme is not in ['http', 'https']", str(ex))
def test_validation_exception_for_webhook_invalid_period(self):
notification = {"name": "MyWebhook", "type": "WEBHOOK", "address": "//somedomain.com",
@ -248,7 +248,7 @@ class TestNotificationValidation(base.BaseTestCase):
ex = self.assertRaises(schemas_exceptions.ValidationException,
schemas_notifications.parse_and_validate,
notification, valid_periods)
self.assertEqual("10 is not a valid period, not in [0, 60]", ex.message)
self.assertEqual("10 is not a valid period, not in [0, 60]", str(ex))
def test_validation_for_pagerduty(self):
notification = {"name": "MyPagerduty", "type": "PAGERDUTY",
@ -264,7 +264,7 @@ class TestNotificationValidation(base.BaseTestCase):
ex = self.assertRaises(schemas_exceptions.ValidationException,
schemas_notifications.parse_and_validate,
notification, valid_periods)
self.assertEqual("Period can only be set with webhooks", ex.message)
self.assertEqual("Period can only be set with webhooks", str(ex))
def test_validation_for_max_name_address(self):
name = "A" * 250
@ -300,7 +300,7 @@ class TestNotificationValidation(base.BaseTestCase):
ex = self.assertRaises(schemas_exceptions.ValidationException,
schemas_notifications.parse_and_validate,
notification, valid_periods)
self.assertEqual("expected int for dictionary value @ data['period']", ex.message)
self.assertEqual("expected int for dictionary value @ data['period']", str(ex))
def test_validation_exception_for_invalid_period_non_int(self):
notification = {"name": "MyWebhook", "type": "WEBHOOK", "address": "//somedomain.com",
@ -308,14 +308,14 @@ class TestNotificationValidation(base.BaseTestCase):
ex = self.assertRaises(schemas_exceptions.ValidationException,
schemas_notifications.parse_and_validate,
notification, valid_periods)
self.assertEqual("Period zero must be a valid integer", ex.message)
self.assertEqual("Period zero must be a valid integer", str(ex))
def test_validation_exception_for_missing_period(self):
notification = {"name": "MyEmail", "type": "EMAIL", "address": "name@domain."}
ex = self.assertRaises(schemas_exceptions.ValidationException,
schemas_notifications.parse_and_validate,
notification, valid_periods, require_all=True)
self.assertEqual("Period is required", ex.message)
self.assertEqual("Period is required", str(ex))
class TestAlarmDefinitionValidation(base.BaseTestCase):

View File

@ -372,7 +372,7 @@ class AlarmDefinitions(alarm_definitions_api_v2.AlarmDefinitionsV2API,
except Exception as ex:
LOG.debug(ex)
raise HTTPUnprocessableEntityError('Unprocessable Entity', ex.message)
raise HTTPUnprocessableEntityError('Unprocessable Entity', str(ex))
def _alarm_definition_update_or_patch(self, tenant_id,
definition_id,
@ -620,7 +620,7 @@ def get_query_alarm_definition_name(alarm_definition, return_none=False):
raise Exception("Missing name")
except Exception as ex:
LOG.debug(ex)
raise HTTPUnprocessableEntityError('Unprocessable Entity', ex.message)
raise HTTPUnprocessableEntityError('Unprocessable Entity', str(ex))
def get_query_alarm_definition_expression(alarm_definition,
@ -636,7 +636,7 @@ def get_query_alarm_definition_expression(alarm_definition,
raise Exception("Missing expression")
except Exception as ex:
LOG.debug(ex)
raise HTTPUnprocessableEntityError('Unprocessable Entity', ex.message)
raise HTTPUnprocessableEntityError('Unprocessable Entity', str(ex))
def get_query_alarm_definition_description(alarm_definition,
@ -726,7 +726,7 @@ def get_query_alarm_definition_actions_enabled(alarm_definition,
return ''
except Exception as ex:
LOG.debug(ex)
raise HTTPUnprocessableEntityError('Unprocessable Entity', ex.message)
raise HTTPUnprocessableEntityError('Unprocessable Entity', str(ex))
def get_comma_separated_str_as_list(comma_separated_str):

View File

@ -179,4 +179,4 @@ class Alarming(object):
LOG.exception(ex)
raise falcon.HTTPInternalServerError(
'Message queue service unavailable'.encode('utf8'),
ex.message.encode('utf8'))
str(ex).encode('utf8'))

View File

@ -133,7 +133,7 @@ def get_query_param(req, param_name, required=False, default_val=None):
return default_val
except Exception as ex:
LOG.debug(ex)
raise HTTPUnprocessableEntityError('Unprocessable Entity', ex.message)
raise HTTPUnprocessableEntityError('Unprocessable Entity', str(ex))
def get_query_name(req, name_required=False):
@ -153,7 +153,7 @@ def get_query_name(req, name_required=False):
return ''
except Exception as ex:
LOG.debug(ex)
raise HTTPUnprocessableEntityError('Unprocessable Entity', ex.message)
raise HTTPUnprocessableEntityError('Unprocessable Entity', str(ex))
def get_query_dimensions(req, param_key='dimensions'):
@ -189,7 +189,7 @@ def get_query_dimensions(req, param_key='dimensions'):
return dimensions
except Exception as ex:
LOG.debug(ex)
raise HTTPUnprocessableEntityError('Unprocessable Entity', ex.message)
raise HTTPUnprocessableEntityError('Unprocessable Entity', str(ex))
def get_query_starttime_timestamp(req, required=True):
@ -204,7 +204,7 @@ def get_query_starttime_timestamp(req, required=True):
return None
except Exception as ex:
LOG.debug(ex)
raise HTTPUnprocessableEntityError('Unprocessable Entity', ex.message)
raise HTTPUnprocessableEntityError('Unprocessable Entity', str(ex))
def get_query_endtime_timestamp(req, required=True):
@ -219,7 +219,7 @@ def get_query_endtime_timestamp(req, required=True):
return None
except Exception as ex:
LOG.debug(ex)
raise HTTPUnprocessableEntityError('Unprocessable Entity', ex.message)
raise HTTPUnprocessableEntityError('Unprocessable Entity', str(ex))
def validate_start_end_timestamps(start_timestamp, end_timestamp=None):
@ -255,7 +255,7 @@ def get_query_statistics(req):
raise Exception("Missing statistics")
except Exception as ex:
LOG.debug(ex)
raise HTTPUnprocessableEntityError('Unprocessable Entity', ex.message)
raise HTTPUnprocessableEntityError('Unprocessable Entity', str(ex))
def get_query_period(req):
@ -274,7 +274,7 @@ def get_query_period(req):
return None
except Exception as ex:
LOG.debug(ex)
raise HTTPUnprocessableEntityError('Unprocessable Entity', ex.message)
raise HTTPUnprocessableEntityError('Unprocessable Entity', str(ex))
def get_query_group_by(req):
@ -289,7 +289,7 @@ def get_query_group_by(req):
return None
except Exception as ex:
LOG.debug(ex)
raise HTTPUnprocessableEntityError('Unprocessable Entity', ex.message)
raise HTTPUnprocessableEntityError('Unprocessable Entity', str(ex))
def validate_query_name(name):
@ -304,7 +304,7 @@ def validate_query_name(name):
metric_validation.validate_name(name)
except Exception as ex:
LOG.debug(ex)
raise HTTPUnprocessableEntityError('Unprocessable Entity', ex.message)
raise HTTPUnprocessableEntityError('Unprocessable Entity', str(ex))
def validate_query_dimensions(dimensions):
@ -328,7 +328,7 @@ def validate_query_dimensions(dimensions):
metric_validation.validate_dimension_value(key, value)
except Exception as ex:
LOG.debug(ex)
raise HTTPUnprocessableEntityError('Unprocessable Entity', ex.message)
raise HTTPUnprocessableEntityError('Unprocessable Entity', str(ex))
def paginate(resource, uri, limit):

View File

@ -68,7 +68,7 @@ class Metrics(metrics_api_v2.MetricsV2API):
except Exception as ex:
LOG.exception(ex)
raise falcon.HTTPInternalServerError('Service unavailable',
ex.message)
str(ex))
def _send_metrics(self, metrics):
try:
@ -76,7 +76,7 @@ class Metrics(metrics_api_v2.MetricsV2API):
except message_queue_exceptions.MessageQueueException as ex:
LOG.exception(ex)
raise falcon.HTTPServiceUnavailable('Service unavailable',
ex.message, 60)
str(ex), 60)
def _list_metrics(self, tenant_id, name, dimensions, req_uri, offset,
limit, start_timestamp, end_timestamp):
@ -101,7 +101,7 @@ class Metrics(metrics_api_v2.MetricsV2API):
metric_validation.validate(metrics)
except Exception as ex:
LOG.exception(ex)
raise HTTPUnprocessableEntityError("Unprocessable Entity", ex.message)
raise HTTPUnprocessableEntityError("Unprocessable Entity", str(ex))
tenant_id = (
helpers.get_x_tenant_or_tenant_id(req,
@ -152,7 +152,7 @@ class MetricsMeasurements(metrics_api_v2.MetricsMeasurementsV2API):
except Exception as ex:
LOG.exception(ex)
raise falcon.HTTPInternalServerError('Service unavailable',
ex.message)
str(ex))
@resource.resource_try_catch_block
def on_get(self, req, res):
@ -214,7 +214,7 @@ class MetricsStatistics(metrics_api_v2.MetricsStatisticsV2API):
except Exception as ex:
LOG.exception(ex)
raise falcon.HTTPInternalServerError('Service unavailable',
ex.message)
str(ex))
@resource.resource_try_catch_block
def on_get(self, req, res):
@ -279,7 +279,7 @@ class MetricsNames(metrics_api_v2.MetricsNamesV2API):
except Exception as ex:
LOG.exception(ex)
raise falcon.HTTPInternalServerError('Service unavailable',
ex.message)
str(ex))
@resource.resource_try_catch_block
def on_get(self, req, res):
@ -320,8 +320,7 @@ class DimensionValues(metrics_api_v2.DimensionValuesV2API):
except Exception as ex:
LOG.exception(ex)
raise falcon.HTTPInternalServerError('Service unavailable',
ex.message)
raise falcon.HTTPInternalServerError('Service unavailable', str(ex))
@resource.resource_try_catch_block
def on_get(self, req, res):
@ -365,7 +364,7 @@ class DimensionNames(metrics_api_v2.DimensionNamesV2API):
except Exception as ex:
LOG.exception(ex)
raise falcon.HTTPInternalServerError('Service unavailable',
ex.message)
str(ex))
@resource.resource_try_catch_block
def on_get(self, req, res):

View File

@ -58,7 +58,7 @@ class Notifications(notifications_api_v2.NotificationsV2API):
schemas_notifications.parse_and_validate(notification, self.valid_periods, require_all=require_all)
except schemas_exceptions.ValidationException as ex:
LOG.exception(ex)
raise falcon.HTTPBadRequest('Bad Request', ex.message)
raise falcon.HTTPBadRequest('Bad Request', str(ex))
def _validate_name_not_conflicting(self, tenant_id, name, expected_id=None):
notification = self._notifications_repo.find_notification_by_name(tenant_id, name)

View File

@ -34,17 +34,17 @@ def resource_try_catch_block(fun):
raise falcon.HTTPNotFound
except exceptions.MultipleMetricsException as ex:
raise falcon.HTTPConflict("MultipleMetrics", ex.message)
raise falcon.HTTPConflict("MultipleMetrics", str(ex))
except exceptions.AlreadyExistsException as ex:
raise falcon.HTTPConflict(ex.__class__.__name__, ex.message)
raise falcon.HTTPConflict(ex.__class__.__name__, str(ex))
except exceptions.InvalidUpdateException as ex:
raise HTTPUnprocessableEntityError(ex.__class__.__name__, ex.message)
raise HTTPUnprocessableEntityError(ex.__class__.__name__, str(ex))
except exceptions.RepositoryException as ex:
LOG.exception(ex)
msg = " ".join(map(str, ex.message.args))
msg = " ".join(map(str, ex.args[0].args))
raise falcon.HTTPInternalServerError('The repository was unable '
'to process your request',
msg)
@ -52,6 +52,6 @@ def resource_try_catch_block(fun):
except Exception as ex:
LOG.exception(ex)
raise falcon.HTTPInternalServerError('Service unavailable',
ex.message)
str(ex))
return try_it