RPC API: Add a WatchRuleNotFound exception

Change-Id: I7abda2fb745b84925edf685b7fced3541d94a8db
Signed-off-by: Zane Bitter <zbitter@redhat.com>
This commit is contained in:
Zane Bitter 2013-01-17 08:48:27 +01:00
parent 805416ebb1
commit 0f902d50e2
4 changed files with 13 additions and 9 deletions

View File

@ -251,6 +251,7 @@ def map_remote_error(ex):
'ResourceNotFound', 'ResourceNotFound',
'ResourceNotAvailable', 'ResourceNotAvailable',
'PhysicalResourceNotFound', 'PhysicalResourceNotFound',
'WatchRuleNotFound',
'StackExists', 'StackExists',
) )

View File

@ -228,3 +228,7 @@ class ResourceNotAvailable(OpenstackException):
class PhysicalResourceNotFound(OpenstackException): class PhysicalResourceNotFound(OpenstackException):
message = _("The Resource (%(resource_id)s) could not be found.") message = _("The Resource (%(resource_id)s) could not be found.")
class WatchRuleNotFound(OpenstackException):
message = _("The Watch Rule (%(watch_name)s) could not be found.")

View File

@ -15,6 +15,7 @@
import datetime import datetime
from heat.common import exception
from heat.openstack.common import log as logging from heat.openstack.common import log as logging
from heat.openstack.common import timeutils from heat.openstack.common import timeutils
from heat.engine import timestamp from heat.engine import timestamp
@ -70,7 +71,7 @@ class WatchRule(object):
logger.warn('WatchRule.load (%s) db error %s' % logger.warn('WatchRule.load (%s) db error %s' %
(watch_name, str(ex))) (watch_name, str(ex)))
if watch is None: if watch is None:
raise AttributeError('Unknown watch name %s' % watch_name) raise exception.WatchRuleNotFound(watch_name=watch_name)
else: else:
return cls(context=context, return cls(context=context,
watch_name=watch.name, watch_name=watch.name,
@ -251,8 +252,8 @@ class WatchRule(object):
if not self.rule['MetricName'] in data: if not self.rule['MetricName'] in data:
logger.warn('new data has incorrect metric:%s' % logger.warn('new data has incorrect metric:%s' %
(self.rule['MetricName'])) (self.rule['MetricName']))
raise AttributeError('MetricName %s missing' % raise ValueError('MetricName %s missing' %
self.rule['MetricName']) self.rule['MetricName'])
watch_data = { watch_data = {
'data': data, 'data': data,
@ -269,7 +270,7 @@ class WatchRule(object):
''' '''
if state not in self.WATCH_STATES: if state not in self.WATCH_STATES:
raise AttributeError('Unknown watch state %s' % state) raise ValueError('Unknown watch state %s' % state)
if state != self.state: if state != self.state:
if self.rule_action(state): if self.rule_action(state):

View File

@ -720,8 +720,7 @@ class stackServiceTest(unittest.TestCase):
result = self.man.show_watch(self.ctx, watch_name="HttpFailureAlarm") result = self.man.show_watch(self.ctx, watch_name="HttpFailureAlarm")
self.assertEqual(1, len(result)) self.assertEqual(1, len(result))
# watch_name="nonexistent" should raise an AttributeError self.assertRaises(exception.WatchRuleNotFound,
self.assertRaises(AttributeError,
self.man.show_watch, self.man.show_watch,
self.ctx, watch_name="nonexistent") self.ctx, watch_name="nonexistent")
@ -834,7 +833,7 @@ class stackServiceTest(unittest.TestCase):
self.assertNotEqual(db_ret, None) self.assertNotEqual(db_ret, None)
for state in ["HGJHGJHG", "1234", "!\*(&%"]: for state in ["HGJHGJHG", "1234", "!\*(&%"]:
self.assertRaises(AttributeError, self.assertRaises(ValueError,
self.man.set_watch_state, self.man.set_watch_state,
self.ctx, watch_name="OverrideAlarm2", self.ctx, watch_name="OverrideAlarm2",
state=state) state=state)
@ -843,8 +842,7 @@ class stackServiceTest(unittest.TestCase):
db_api.watch_rule_delete(self.ctx, "OverrideAlarm2") db_api.watch_rule_delete(self.ctx, "OverrideAlarm2")
def test_set_watch_state_noexist(self): def test_set_watch_state_noexist(self):
# watch_name="nonexistent" should raise an AttributeError
state = watchrule.WatchRule.ALARM # State valid state = watchrule.WatchRule.ALARM # State valid
self.assertRaises(AttributeError, self.assertRaises(exception.WatchRuleNotFound,
self.man.set_watch_state, self.man.set_watch_state,
self.ctx, watch_name="nonexistent", state=state) self.ctx, watch_name="nonexistent", state=state)