diff options
author | Jenkins <jenkins@review.openstack.org> | 2016-11-08 10:17:23 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2016-11-08 10:17:23 +0000 |
commit | 265a894814d525d81091cd65d55d5d0ce44763ae (patch) | |
tree | 6fd9a5aab97454145d66d7ef8f9b506ed296d532 | |
parent | ae3b079a46811663d20998e8b5d31ad79f3242db (diff) | |
parent | 827b55bce9dccda61130f5ea419185814f68b751 (diff) | |
download | heat-265a894814d525d81091cd65d55d5d0ce44763ae.tar.gz |
Merge "Fix resource_signal with convergence" into stable/newton
-rw-r--r-- | heat/engine/service.py | 6 | ||||
-rw-r--r-- | heat/tests/engine/service/test_stack_resources.py | 15 |
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) |