Fix stack lock ActionInProgress in the admin case
When the engine starts and tries to reset the status of stacks in progress, it tries to acquire the stack lock on them. The stack lock queries the database to retrieve the name of the stack, but does a tenant-scope query, thus fails when as we use the admin context during startup. This fixes it by passing tenant_safe=False. Change-Id: I4393fdb601eedb36d7288afd57fb5a1c96af7216 Closes-Bug: #1516712
This commit is contained in:
parent
c349747945
commit
9924d780e8
|
@ -69,6 +69,7 @@ class StackLock(object):
|
|||
return
|
||||
|
||||
stack = stack_object.Stack.get_by_id(self.context, self.stack_id,
|
||||
tenant_safe=False,
|
||||
show_deleted=True)
|
||||
if (lock_engine_id == self.engine_id or
|
||||
self.engine_alive(self.context, lock_engine_id)):
|
||||
|
|
|
@ -31,8 +31,8 @@ class StackLockTest(common.HeatTestCase):
|
|||
stack.id = self.stack_id
|
||||
stack.name = "test_stack"
|
||||
stack.action = "CREATE"
|
||||
self.patchobject(stack_object.Stack, 'get_by_id',
|
||||
return_value=stack)
|
||||
self.mock_get_by_id = self.patchobject(
|
||||
stack_object.Stack, 'get_by_id', return_value=stack)
|
||||
|
||||
class TestThreadLockException(Exception):
|
||||
pass
|
||||
|
@ -57,6 +57,11 @@ class StackLockTest(common.HeatTestCase):
|
|||
self.engine_id)
|
||||
|
||||
self.assertRaises(exception.ActionInProgress, slock.acquire)
|
||||
self.mock_get_by_id.assert_called_once_with(
|
||||
self.context,
|
||||
self.stack_id,
|
||||
tenant_safe=False,
|
||||
show_deleted=True)
|
||||
mock_create.assert_called_once_with(self.stack_id, self.engine_id)
|
||||
|
||||
def test_successful_acquire_existing_lock_engine_dead(self):
|
||||
|
@ -85,6 +90,11 @@ class StackLockTest(common.HeatTestCase):
|
|||
self.engine_id)
|
||||
self.patchobject(slock, 'engine_alive', return_value=True)
|
||||
self.assertRaises(exception.ActionInProgress, slock.acquire)
|
||||
self.mock_get_by_id.assert_called_once_with(
|
||||
self.context,
|
||||
self.stack_id,
|
||||
tenant_safe=False,
|
||||
show_deleted=True)
|
||||
|
||||
mock_create.assert_called_once_with(self.stack_id, self.engine_id)
|
||||
|
||||
|
@ -100,6 +110,11 @@ class StackLockTest(common.HeatTestCase):
|
|||
self.engine_id)
|
||||
self.patchobject(slock, 'engine_alive', return_value=False)
|
||||
self.assertRaises(exception.ActionInProgress, slock.acquire)
|
||||
self.mock_get_by_id.assert_called_once_with(
|
||||
self.context,
|
||||
self.stack_id,
|
||||
tenant_safe=False,
|
||||
show_deleted=True)
|
||||
|
||||
mock_create.assert_called_once_with(self.stack_id, self.engine_id)
|
||||
mock_steal.assert_called_once_with(self.stack_id, 'fake-engine-id',
|
||||
|
@ -135,6 +150,11 @@ class StackLockTest(common.HeatTestCase):
|
|||
self.engine_id)
|
||||
self.patchobject(slock, 'engine_alive', return_value=False)
|
||||
self.assertRaises(exception.ActionInProgress, slock.acquire)
|
||||
self.mock_get_by_id.assert_called_with(
|
||||
self.context,
|
||||
self.stack_id,
|
||||
tenant_safe=False,
|
||||
show_deleted=True)
|
||||
|
||||
mock_create.assert_has_calls(
|
||||
[mock.call(self.stack_id, self.engine_id)] * 2)
|
||||
|
|
Loading…
Reference in New Issue