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)
|
self.resource_enforcer.enforce_stack(stack)
|
||||||
|
|
||||||
if stack.convergence and cfg.CONF.convergence_engine:
|
if stack.convergence and cfg.CONF.convergence_engine:
|
||||||
template = templatem.Template.create_empty_template(
|
def convergence_delete():
|
||||||
from_template=stack.t)
|
stack.thread_group_mgr = self.thread_group_mgr
|
||||||
stack.thread_group_mgr = self.thread_group_mgr
|
self.worker_service.stop_all_workers(stack)
|
||||||
stack.converge_stack(template=template, action=stack.DELETE)
|
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
|
return
|
||||||
|
|
||||||
lock = stack_lock.StackLock(cnxt, stack.id, self.engine_id)
|
lock = stack_lock.StackLock(cnxt, stack.id, self.engine_id)
|
||||||
|
|
|
@ -41,8 +41,9 @@ class Engine(message_processor.MessageProcessor):
|
||||||
|
|
||||||
queue = message_queue.MessageQueue('engine')
|
queue = message_queue.MessageQueue('engine')
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self, worker):
|
||||||
super(Engine, self).__init__('engine')
|
super(Engine, self).__init__('engine')
|
||||||
|
self.worker = worker
|
||||||
|
|
||||||
def scenario_template_to_hot(self, scenario_tmpl):
|
def scenario_template_to_hot(self, scenario_tmpl):
|
||||||
"""Converts the scenario template into hot template."""
|
"""Converts the scenario template into hot template."""
|
||||||
|
@ -75,6 +76,7 @@ class Engine(message_processor.MessageProcessor):
|
||||||
cnxt = utils.dummy_context()
|
cnxt = utils.dummy_context()
|
||||||
srv = service.EngineService("host", "engine")
|
srv = service.EngineService("host", "engine")
|
||||||
srv.thread_group_mgr = SynchronousThreadGroupManager()
|
srv.thread_group_mgr = SynchronousThreadGroupManager()
|
||||||
|
srv.worker_service = self.worker
|
||||||
hot_tmpl = self.scenario_template_to_hot(scenario_tmpl)
|
hot_tmpl = self.scenario_template_to_hot(scenario_tmpl)
|
||||||
srv.create_stack(cnxt, stack_name, hot_tmpl,
|
srv.create_stack(cnxt, stack_name, hot_tmpl,
|
||||||
params={}, files={}, environment_files=None, args={})
|
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)
|
db_stack = db_api.stack_get_by_name(cnxt, stack_name)
|
||||||
srv = service.EngineService("host", "engine")
|
srv = service.EngineService("host", "engine")
|
||||||
srv.thread_group_mgr = SynchronousThreadGroupManager()
|
srv.thread_group_mgr = SynchronousThreadGroupManager()
|
||||||
|
srv.worker_service = self.worker
|
||||||
hot_tmpl = self.scenario_template_to_hot(scenario_tmpl)
|
hot_tmpl = self.scenario_template_to_hot(scenario_tmpl)
|
||||||
stack_identity = {'stack_name': stack_name,
|
stack_identity = {'stack_name': stack_name,
|
||||||
'stack_id': db_stack.id,
|
'stack_id': db_stack.id,
|
||||||
|
@ -103,6 +106,7 @@ class Engine(message_processor.MessageProcessor):
|
||||||
'path': ''}
|
'path': ''}
|
||||||
srv = service.EngineService("host", "engine")
|
srv = service.EngineService("host", "engine")
|
||||||
srv.thread_group_mgr = SynchronousThreadGroupManager()
|
srv.thread_group_mgr = SynchronousThreadGroupManager()
|
||||||
|
srv.worker_service = self.worker
|
||||||
srv.delete_stack(cnxt, stack_identity)
|
srv.delete_stack(cnxt, stack_identity)
|
||||||
|
|
||||||
@message_processor.asynchronous
|
@message_processor.asynchronous
|
||||||
|
|
|
@ -28,8 +28,8 @@ class Processes(object):
|
||||||
global worker
|
global worker
|
||||||
global event_loop
|
global event_loop
|
||||||
|
|
||||||
engine = engine_wrapper.Engine()
|
|
||||||
worker = worker_wrapper.Worker()
|
worker = worker_wrapper.Worker()
|
||||||
|
engine = engine_wrapper.Engine(worker)
|
||||||
|
|
||||||
event_loop = event_loop_module.EventLoop(engine, worker)
|
event_loop = event_loop_module.EventLoop(engine, worker)
|
||||||
|
|
||||||
|
|
|
@ -35,3 +35,6 @@ class Worker(message_processor.MessageProcessor):
|
||||||
current_traversal,
|
current_traversal,
|
||||||
data, is_update,
|
data, is_update,
|
||||||
adopt_stack_data)
|
adopt_stack_data)
|
||||||
|
|
||||||
|
def stop_all_workers(self, current_stack):
|
||||||
|
pass
|
||||||
|
|
Loading…
Reference in New Issue