Merge "Make the error message of alarm-not-found clear"

This commit is contained in:
Jenkins 2014-07-28 20:42:48 +00:00 committed by Gerrit Code Review
commit 9d8f9af40e
3 changed files with 21 additions and 7 deletions

View File

@ -88,6 +88,17 @@ class EntityNotFound(ClientSideError):
status_code=404)
class AlarmNotFound(ClientSideError):
def __init__(self, alarm, auth_project):
if not auth_project:
msg = _('Alarm %s not found') % alarm
else:
msg = _('Alarm %(alarm_id)s not found in project %'
'(project)s') % {
'alarm_id': alarm, 'project': auth_project}
super(AlarmNotFound, self).__init__(msg, status_code=404)
class AdvEnum(wtypes.wsproperty):
"""Handle default and mandatory for wtypes.Enum."""
def __init__(self, name, *args, **kwargs):
@ -1767,7 +1778,7 @@ class Alarm(_Base):
alarms = list(pecan.request.alarm_storage_conn.get_alarms(
alarm_id=id, project=project))
if not alarms:
raise EntityNotFound(_('Alarm'), id)
raise AlarmNotFound(id, project)
tc_names = [tc.name for tc in alarm.time_constraints]
if len(tc_names) > len(set(tc_names)):
@ -1881,7 +1892,7 @@ class AlarmController(rest.RestController):
alarms = list(self.conn.get_alarms(alarm_id=self._id,
project=auth_project))
if not alarms:
raise EntityNotFound(_('Alarm'), self._id)
raise AlarmNotFound(alarm=self._id, auth_project=auth_project)
return alarms[0]
def _record_change(self, data, now, on_behalf_of=None, type=None):

View File

@ -235,7 +235,7 @@ class TestAlarms(v2.FunctionalTest,
def test_get_not_existing_alarm(self):
resp = self.get_json('/alarms/alarm-id-3', expect_errors=True)
self.assertEqual(404, resp.status_code)
self.assertEqual("Alarm alarm-id-3 Not Found",
self.assertEqual('Alarm alarm-id-3 not found',
jsonutils.loads(resp.body)['error_message']
['faultstring'])
@ -1089,7 +1089,9 @@ class TestAlarms(v2.FunctionalTest,
'X-Project-Id': str(uuid.uuid4())}
resp = self.post_json('/alarms', params=json, status=404,
headers=an_other_user_auth)
self.assertEqual("Alarm a Not Found",
self.assertEqual("Alarm a not found in project "
"%s" %
an_other_user_auth['X-Project-Id'],
jsonutils.loads(resp.body)['error_message']
['faultstring'])
@ -1122,7 +1124,8 @@ class TestAlarms(v2.FunctionalTest,
headers['X-Roles'] = 'admin'
resp = self.post_json('/alarms', params=json, status=404,
headers=headers)
self.assertEqual("Alarm a Not Found",
self.assertEqual("Alarm a not found in project "
"aprojectidthatisnotmine",
jsonutils.loads(resp.body)['error_message']
['faultstring'])

View File

@ -213,12 +213,12 @@ class TestApiMiddleware(v2.FunctionalTest):
def test_translated_then_untranslated_error(self):
resp = self.get_json('/alarms/alarm-id-3', expect_errors=True)
self.assertEqual(404, resp.status_code)
self.assertEqual("Alarm alarm-id-3 Not Found",
self.assertEqual("Alarm alarm-id-3 not found",
json.loads(resp.body)['error_message']
['faultstring'])
with mock.patch('ceilometer.api.controllers.'
'v2.EntityNotFound') as CustomErrorClass:
'v2.AlarmNotFound') as CustomErrorClass:
CustomErrorClass.return_value = wsme.exc.ClientSideError(
"untranslated_error", status_code=404)
resp = self.get_json('/alarms/alarm-id-5', expect_errors=True)