summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2016-11-08 10:17:23 +0000
committerGerrit Code Review <review@openstack.org>2016-11-08 10:17:23 +0000
commit265a894814d525d81091cd65d55d5d0ce44763ae (patch)
tree6fd9a5aab97454145d66d7ef8f9b506ed296d532
parentae3b079a46811663d20998e8b5d31ad79f3242db (diff)
parent827b55bce9dccda61130f5ea419185814f68b751 (diff)
downloadheat-265a894814d525d81091cd65d55d5d0ce44763ae.tar.gz
Merge "Fix resource_signal with convergence" into stable/newton
-rw-r--r--heat/engine/service.py6
-rw-r--r--heat/tests/engine/service/test_stack_resources.py15
2 files changed, 17 insertions, 4 deletions
diff --git a/heat/engine/service.py b/heat/engine/service.py
index bcd7801b5..8b98d13dd 100644
--- a/heat/engine/service.py
+++ b/heat/engine/service.py
@@ -1767,11 +1767,11 @@ class EngineService(service.Service):
return stack.access_allowed(access_key, resource_name)
def _verify_stack_resource(self, stack, resource_name):
- if resource_name not in stack:
+ resource = stack.resource_get(resource_name)
+ if not resource:
raise exception.ResourceNotFound(resource_name=resource_name,
stack_name=stack.name)
- resource = stack[resource_name]
if resource.id is None:
raise exception.ResourceNotAvailable(resource_name=resource_name)
@@ -1828,7 +1828,7 @@ class EngineService(service.Service):
stack = parser.Stack.load(cnxt, stack=s, use_stored_context=True)
self._verify_stack_resource(stack, resource_name)
- rsrc = stack[resource_name]
+ rsrc = stack.resource_get(resource_name)
if callable(rsrc.signal):
rsrc._signal_check_action()
diff --git a/heat/tests/engine/service/test_stack_resources.py b/heat/tests/engine/service/test_stack_resources.py
index fc9251db8..c75295c8e 100644
--- a/heat/tests/engine/service/test_stack_resources.py
+++ b/heat/tests/engine/service/test_stack_resources.py
@@ -332,7 +332,6 @@ class StackResourcesServiceTest(common.HeatTestCase):
stack_name = 'signal_reception_async'
self.stack = self._stack_create(stack_name)
test_data = {'food': 'yum'}
-
self.eng.resource_signal(self.ctx,
dict(self.stack.identifier()),
'WebServerScaleDownPolicy',
@@ -356,6 +355,20 @@ class StackResourcesServiceTest(common.HeatTestCase):
sync_call=True)
mock_signal.assert_called_once_with(mock.ANY, False)
+ def test_signal_reception_get_resource_none(self):
+ stack_name = 'signal_reception_no_resource'
+ self.stack = self._stack_create(stack_name)
+ test_data = {'food': 'yum'}
+
+ self.patchobject(stack.Stack, 'resource_get',
+ return_value=None)
+ ex = self.assertRaises(dispatcher.ExpectedException,
+ self.eng.resource_signal, self.ctx,
+ dict(self.stack.identifier()),
+ 'WebServerScaleDownPolicy',
+ test_data)
+ self.assertEqual(exception.ResourceNotFound, ex.exc_info[0])
+
def test_signal_reception_no_resource(self):
stack_name = 'signal_reception_no_resource'
self.stack = self._stack_create(stack_name)