Fix resource_signal with convergence
When doing a stack delete, we update it with an empty template. Therefore checking for the resource in the template would fail in resource_signal. Change-Id: Id8c2226e78ed74138ce9065c4435aa5778726656 Closes-Bug: #1635610
This commit is contained in:
parent
90372215e5
commit
26aa33eb66
|
@ -1773,11 +1773,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)
|
||||
|
||||
|
@ -1834,7 +1834,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()
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue