<div dir="ltr"><p style="font-size:13px;margin:0in"><font face="verdana, sans-serif">Resending to see if this fixes the formatting for outlines below.</font></p><p style="font-size:13px;margin:0in"><font face="verdana, sans-serif"><br></font></p><p style="font-size:13px;margin:0in"><font face="verdana, sans-serif">I want to continue the discussion on the workflow "resume" feature.</font></p><p style="font-size:13px;margin:0in"><font face="verdana, sans-serif"><br></font></p><p style="font-size:13px;margin:0in"><font face="verdana, sans-serif">Resuming from our last conversation @ </font><a href="http://lists.openstack.org/pipermail/openstack-dev/2015-March/060265.html" target="_blank">http://lists.openstack.org/pipermail/openstack-dev/2015-March/060265.html</a><span style="font-family:verdana,sans-serif">. I don't think we should limit how users resume. There may be different possible scenarios. User can fix the environment or condition that led to the failure of the current task and the user wants to just re-run the failed task.  Or user can actually fix the environment/condition which include fixing what the task was doing, then just want to continue the next set of task(s).</span></p><p style="font-size:13px;margin:0in"><font face="verdana, sans-serif"><br></font></p><p style="font-size:13px;margin:0in"><font face="verdana, sans-serif">The following is a list of proposed changes.</font></p><p style="font-size:13px;margin:0in"><span style="font-family:verdana,sans-serif"><br></span></p><p style="font-size:13px;margin:0in"><span style="font-family:verdana,sans-serif">1. A new CLI operation to resume WF (i.e. mistral workflow-resume).</span></p><p style="font-size:13px;margin:0in"><span style="font-family:verdana,sans-serif">    A. If no additional info is provided, assume this WF is manually paused and there are no task/action execution errors. The WF state is updated to RUNNING. Update using the put method @ ExecutionsController. The put method checks that there's no task/action execution errors.</span></p><p style="font-size:13px;margin:0in"><span style="font-family:verdana,sans-serif">    B. If WF is in an error state</span></p><p style="font-size:13px;margin:0in"><span style="font-family:verdana,sans-serif">        i. To resume from failed task, the workflow-resume command requires the WF execution ID, task name, and/or task input.</span></p><p style="font-size:13px;margin:0in"><span style="font-family:verdana,sans-serif">        ii. To resume from failed with-items task</span></p><p style="font-size:13px;margin:0in"><span style="font-family:verdana,sans-serif">            a. Re-run the entire task (re-run all items) requires WF execution ID, task name </span><span style="font-family:verdana,sans-serif">           </span><span style="font-family:verdana,sans-serif"> </span><span style="font-family:verdana,sans-serif">and/or task input.</span></p><p style="font-size:13px;margin:0in"><span style="font-family:verdana,sans-serif">           </span><span style="font-family:verdana,sans-serif"> b. </span><span style="font-family:verdana,sans-serif">Re-run a single item requires WF execution ID, task name, with-items index, and/or task input for the item.</span></p><p style="font-size:13px;margin:0in"><span style="font-family:verdana,sans-serif">           </span><span style="font-family:verdana,sans-serif"> c. </span><span style="font-family:verdana,sans-serif">Re-run selected items requires WF execution ID, task name, with-items indices, and/or task input for each items.</span></p><p style="font-size:13px;margin:0in"><span style="font-family:verdana,sans-serif">           </span><span style="font-family:verdana,sans-serif">     - T</span><span style="font-family:verdana,sans-serif">o resume from the next task(s), the workflow-resume command requires the WF execution ID, failed task name, output for the failed task, and a flag to skip the failed task.</span></p><p style="font-size:13px;margin:0in"><span style="font-family:verdana,sans-serif"><br></span></p><p style="font-size:13px;margin:0in"><span style="font-family:verdana,sans-serif">2. Make ERROR -> RUNNING as valid state transition @ is_valid_transition function.</span></p><p style="font-size:13px;margin:0in"><span style="font-family:verdana,sans-serif"><br></span></p><p style="font-size:13px;margin:0in"><span style="font-family:verdana,sans-serif">3. Add a comments field to Execution model. Add a note that indicates the execution is launched by workflow-resume. Auto-populated in this case.</span></p><p style="font-size:13px;margin:0in"><span style="font-family:verdana,sans-serif"><br></span></p><p style="font-size:13px;margin:0in"><span style="font-family:verdana,sans-serif">4. Resume from failed task.</span></p><p style="font-size:13px;margin:0in"><span style="font-family:verdana,sans-serif">    A. Re-run task with the same task inputs >> POST new action execution for the task execution @ ActionExecutionsController</span><span style="font-family:verdana,sans-serif"> </span></p><p style="font-size:13px;margin:0in"><span style="font-family:verdana,sans-serif">    B. Re-run task with different task inputs >> POST new action execution for the task execution, allowed for different input @ ActionExecutionsController</span></p><p style="font-size:13px;margin:0in"><span style="font-family:verdana,sans-serif"><br></span></p><p style="font-size:13px;margin:0in"><span style="font-family:verdana,sans-serif">5. Resume from next task(s).</span></p><p style="font-size:13px;margin:0in"><span style="font-family:verdana,sans-serif">    A. Inject a noop task execution or noop action execution (undecided yet) for the failed task with appropriate output.  The spec is an adhoc spec that copies conditions from the failed task. This provides some audit functionality and should trigger the next set of task executions (in case of branching and such). </span></p><div class="gmail_extra"><br></div></div>