Deletion of in-progress stack
Unlike in legacy engine case, the stack in in-progress state couldn't be deleted in convergence. This patch fixes this issue so that the behaviour is compatible. Change-Id: I79bb14d5d7744ba2a012e23e690608dc7db1fbc5 Closes-Bug: #1545063 Closes-Bug: #1592374
This commit is contained in:
parent
0f48b1d66c
commit
6dc3ab9b01
|
@ -1357,10 +1357,14 @@ class EngineService(service.Service):
|
|||
self.resource_enforcer.enforce_stack(stack)
|
||||
|
||||
if stack.convergence and cfg.CONF.convergence_engine:
|
||||
template = templatem.Template.create_empty_template(
|
||||
from_template=stack.t)
|
||||
stack.thread_group_mgr = self.thread_group_mgr
|
||||
stack.converge_stack(template=template, action=stack.DELETE)
|
||||
def convergence_delete():
|
||||
stack.thread_group_mgr = self.thread_group_mgr
|
||||
self.worker_service.stop_all_workers(stack)
|
||||
template = templatem.Template.create_empty_template(
|
||||
from_template=stack.t)
|
||||
stack.converge_stack(template=template, action=stack.DELETE)
|
||||
|
||||
self.thread_group_mgr.start(stack.id, convergence_delete)
|
||||
return
|
||||
|
||||
lock = stack_lock.StackLock(cnxt, stack.id, self.engine_id)
|
||||
|
|
|
@ -41,8 +41,9 @@ class Engine(message_processor.MessageProcessor):
|
|||
|
||||
queue = message_queue.MessageQueue('engine')
|
||||
|
||||
def __init__(self):
|
||||
def __init__(self, worker):
|
||||
super(Engine, self).__init__('engine')
|
||||
self.worker = worker
|
||||
|
||||
def scenario_template_to_hot(self, scenario_tmpl):
|
||||
"""Converts the scenario template into hot template."""
|
||||
|
@ -75,6 +76,7 @@ class Engine(message_processor.MessageProcessor):
|
|||
cnxt = utils.dummy_context()
|
||||
srv = service.EngineService("host", "engine")
|
||||
srv.thread_group_mgr = SynchronousThreadGroupManager()
|
||||
srv.worker_service = self.worker
|
||||
hot_tmpl = self.scenario_template_to_hot(scenario_tmpl)
|
||||
srv.create_stack(cnxt, stack_name, hot_tmpl,
|
||||
params={}, files={}, environment_files=None, args={})
|
||||
|
@ -85,6 +87,7 @@ class Engine(message_processor.MessageProcessor):
|
|||
db_stack = db_api.stack_get_by_name(cnxt, stack_name)
|
||||
srv = service.EngineService("host", "engine")
|
||||
srv.thread_group_mgr = SynchronousThreadGroupManager()
|
||||
srv.worker_service = self.worker
|
||||
hot_tmpl = self.scenario_template_to_hot(scenario_tmpl)
|
||||
stack_identity = {'stack_name': stack_name,
|
||||
'stack_id': db_stack.id,
|
||||
|
@ -103,6 +106,7 @@ class Engine(message_processor.MessageProcessor):
|
|||
'path': ''}
|
||||
srv = service.EngineService("host", "engine")
|
||||
srv.thread_group_mgr = SynchronousThreadGroupManager()
|
||||
srv.worker_service = self.worker
|
||||
srv.delete_stack(cnxt, stack_identity)
|
||||
|
||||
@message_processor.asynchronous
|
||||
|
|
|
@ -28,8 +28,8 @@ class Processes(object):
|
|||
global worker
|
||||
global event_loop
|
||||
|
||||
engine = engine_wrapper.Engine()
|
||||
worker = worker_wrapper.Worker()
|
||||
engine = engine_wrapper.Engine(worker)
|
||||
|
||||
event_loop = event_loop_module.EventLoop(engine, worker)
|
||||
|
||||
|
|
|
@ -35,3 +35,6 @@ class Worker(message_processor.MessageProcessor):
|
|||
current_traversal,
|
||||
data, is_update,
|
||||
adopt_stack_data)
|
||||
|
||||
def stop_all_workers(self, current_stack):
|
||||
pass
|
||||
|
|
Loading…
Reference in New Issue