ystia / yorc

Ystia Orchestrator
https://ystia.github.io
Apache License 2.0
67 stars 23 forks source link

Feature/job replay #772

Closed laurentganne closed 3 years ago

laurentganne commented 3 years ago

Pull Request description

Added the ability to replay workflow steps, even if they were successful. This can be used to replay the successful submission of a job after a failure during the execution of this job.

Description of the change

What I did

rest/http_api.md tasks/tasks.go allowing to change a DONE step (to resubmit a job that failed during its execution for example)

tasks/workflow/step.go Not ending the workflow on a step failure if this step has "on failure" next steps

tasks/workflow/worker.go endAction() and runAction(): should not notify the task error if there are on failure steps, to go on in the workflow executing these on failure steps runWorkflowStep(): on workflow replay, when an asynchronous step is done, its next steps must be registered

tasks/workflow/consul_test.go tasks/workflow/testdata/workflow.yaml tasks/workflow/worker_test.go

Added a test checking replaying a workflow containing workflow with an asynchronous step already done, will now execute steps following this asynchronous step

How to verify it

Tested on a LEXIS step with a job performing data transfers between Compute locations: Using a workflow containing job steps, make the job executing a data transfer fail. Then use yorc command :

yorc deployments tasks update-step-state <deployment ID> <task ID> <step name> initial

to re-iniitlalise the run step that was on error and the submit step that was successful.

Then use yorc command:

yorc deployments tasks resume <deployment ID> <task ID>

to replay the workflow. Check the job is resubmitted, then monitored until its end.

Description for the changelog

Allow to replay workflow steps even if they are not in error (GH-771)

Applicable Issues

771