It would be useful for operators to make sure all stacks are being run under the same logic in order to support the service better.
Whether or not a stack action is run under convergence is sticky, meaning that if the current “convergence_engine” setting is True when the stack-create is run, then that stack will always be run with the convergence logic (the same is also true for convergence_engine=False).
This spec proposes a new tool for operators that migrates any stack created under the legacy mode to convergence mode.
This will only convert stack that are in a sane state (*_COMPLETE) and will warn the operator if they need to re-run the command to catch stacks currently have actions in progress.
The steps the operator will need to take are:
Extend heat-manage as follows:
heat-manage migrate-convergence-1 <stack_id>
This command will call code in stack.py to get stack with stack_id and all it nested stuff. We need to set convergence = True, prev_raw_template_id = None and remove appropriate raw template, generate and add new traversal_id and set current_template_id for all resources in these stacks. Also we need to fill needed_by and requires columns in the database with corresponding dependencies.