From fb4e4a34dceff8cd313daed1686752d66d9194fa Mon Sep 17 00:00:00 2001 From: Angus Salkeld Date: Thu, 22 Aug 2013 17:17:33 +1000 Subject: [PATCH] Catch a NotFound exception in signal_responder delete If the alarm does not get created (error condition) and the url does not get created (no one referenced it) then the delete will fail with a NotFound. Change-Id: I431ebef9b9341548176d977e336558df9f5deb6c --- heat/engine/signal_responder.py | 5 ++++- heat/tests/test_signal.py | 16 ++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/heat/engine/signal_responder.py b/heat/engine/signal_responder.py index ca0f01f3..8d005fca 100644 --- a/heat/engine/signal_responder.py +++ b/heat/engine/signal_responder.py @@ -57,7 +57,10 @@ class SignalResponder(resource.Resource): self.keystone().delete_stack_user(self.resource_id) except clients.hkc.kc.exceptions.NotFound: pass - db_api.resource_data_delete(self, 'ec2_signed_url') + try: + db_api.resource_data_delete(self, 'ec2_signed_url') + except exception.NotFound: + pass def _get_signed_url(self, signal_type=SIGNAL): """Create properly formatted and pre-signed URL. diff --git a/heat/tests/test_signal.py b/heat/tests/test_signal.py index 5442fb16..963a63a8 100644 --- a/heat/tests/test_signal.py +++ b/heat/tests/test_signal.py @@ -129,6 +129,22 @@ class SignalTest(HeatTestCase): self.assertEqual(first_url, second_url) self.m.VerifyAll() + @utils.stack_delete_after + def test_FnGetAtt_delete_not_found(self): + self.stack = self.create_stack() + + self.m.ReplayAll() + self.stack.create() + + rsrc = self.stack.resources['signal_handler'] + self.assertEqual(rsrc.state, (rsrc.CREATE, rsrc.COMPLETE)) + + rsrc.delete() + rsrc.resource_id = 'not-none' + rsrc.delete() + + self.m.VerifyAll() + @utils.stack_delete_after def test_signal(self): test_d = {'Data': 'foo', 'Reason': 'bar', -- 2.45.2