diff options
author | Anant Patil <anant.patil@hp.com> | 2016-08-18 15:31:23 +0530 |
---|---|---|
committer | Thomas Herve <therve@redhat.com> | 2016-09-10 09:22:36 +0200 |
commit | 873a40851dd7807c6de0ee73affb7af2be875519 (patch) | |
tree | d269dbd3117932111bf788e4aef3718d485199e3 /heat/tests/db | |
parent | b9d1e30a013cdb95350e5818cc63f4b6f3953bd7 (diff) | |
download | heat-873a40851dd7807c6de0ee73affb7af2be875519.tar.gz |
Convergence: basic framework for cancelling workers
Implements mechanism to cancel existing workers (in_progress resources).
The stack-cancel-update request lands in one of the engines, and if
there are any workers in that engine which are working for the stack,
they are cancelled first and then other engines are requested to cancel
the workers.
Change-Id: I464c4fdb760247d436473af49448f7797dc0130d
Diffstat (limited to 'heat/tests/db')
-rw-r--r-- | heat/tests/db/test_sqlalchemy_api.py | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/heat/tests/db/test_sqlalchemy_api.py b/heat/tests/db/test_sqlalchemy_api.py index 9b9f7515c..a266978a7 100644 --- a/heat/tests/db/test_sqlalchemy_api.py +++ b/heat/tests/db/test_sqlalchemy_api.py @@ -2436,6 +2436,35 @@ class DBAPIResourceTest(common.HeatTestCase): self.assertRaises(exception.NotFound, db_api.resource_get, self.ctx, resource.id) + def test_engine_get_all_locked_by_stack(self): + values = [ + {'name': 'res1', 'action': rsrc.Resource.DELETE, + 'root_stack_id': self.stack.id, + 'status': rsrc.Resource.COMPLETE}, + {'name': 'res2', 'action': rsrc.Resource.DELETE, + 'root_stack_id': self.stack.id, + 'status': rsrc.Resource.IN_PROGRESS, 'engine_id': 'engine-001'}, + {'name': 'res3', 'action': rsrc.Resource.UPDATE, + 'root_stack_id': self.stack.id, + 'status': rsrc.Resource.IN_PROGRESS, 'engine_id': 'engine-002'}, + {'name': 'res4', 'action': rsrc.Resource.CREATE, + 'root_stack_id': self.stack.id, + 'status': rsrc.Resource.COMPLETE}, + {'name': 'res5', 'action': rsrc.Resource.INIT, + 'root_stack_id': self.stack.id, + 'status': rsrc.Resource.COMPLETE}, + {'name': 'res6', 'action': rsrc.Resource.CREATE, + 'root_stack_id': self.stack.id, + 'status': rsrc.Resource.IN_PROGRESS, 'engine_id': 'engine-001'}, + {'name': 'res6'}, + ] + for val in values: + create_resource(self.ctx, self.stack, **val) + + engines = db_api.engine_get_all_locked_by_stack(self.ctx, + self.stack.id) + self.assertEqual({'engine-001', 'engine-002'}, engines) + class DBAPIStackLockTest(common.HeatTestCase): def setUp(self): |