Skip to content

pulp/pulp_workflow

Repository files navigation

pulp-workflow

Warning: This is a community plugin and is not officially supported. Scheduling tasks incorrectly can cause serious issues in your Pulp instance. Always test in a development environment first before applying changes to production.

A Pulp plugin that introduces the Workflow model. Workflows build on top of tasks in Pulp allowing users to:

  • Schedule tasks to run at any given time
  • Run sequences of tasks in a specific order
  • Set up callback services to run on workflow lifecycle events (e.g. running, completed, failed, canceled, finished)

A Workflow owns one or more WorkflowTask rows. Each task records the task_name, task_args, task_kwargs, and any reserved_resources to use when dispatching it. Workflows are immutable after creation: to change a workflow, cancel it (if it has not yet started) and create a new one.

Demo

The demo walks through syncing and publishing a file repo via a Workflow, with a callback that notifies a messaging service (e.g. Discord/Slack) on completion. Watch the YouTube demo for a video walkthrough, or follow the written demo guide to run it yourself end-to-end.

CLI

If you're using the pulp-cli, be sure to check out our pulp-workflow plugin.

Endpoints

Method URL Description
GET /pulp/api/v3/workflow/workflows/ List workflows
POST /pulp/api/v3/workflow/workflows/ Create a workflow (with tasks)
GET /pulp/api/v3/workflow/workflows/<pk>/ Retrieve a workflow
PATCH /pulp/api/v3/workflow/workflows/<pk>/ Cancel a workflow (body: {"state": "canceled"}). Works whether the workflow is waiting or running; returns 409 only if the workflow is already in a terminal state. Only "canceled" is accepted as the target state.
GET /pulp/api/v3/workflow/callback-services/ List callback services
POST /pulp/api/v3/workflow/callback-services/ Register a callback service (an executable on the worker host)
GET /pulp/api/v3/workflow/callback-services/<pk>/ Retrieve a callback service
PUT, PATCH /pulp/api/v3/workflow/callback-services/<pk>/ Update a callback service
DELETE /pulp/api/v3/workflow/callback-services/<pk>/ Delete a callback service

Callbacks

A CallbackService is a registered executable on the Pulp worker host that can be attached to a workflow to run on lifecycle events (running, completed, failed, canceled, or the synthetic finished event that fires on any terminal state).

CallbackServices can be registered via the API (see Endpoints) or via management commands, which is useful for image-bootstrap scenarios where a callback needs to exist before the API serves traffic:

pulpcore-manager add-callback-service <name> <script-path>
pulpcore-manager list-callback-services
pulpcore-manager remove-callback-service <name>

add-callback-service resolves the script path, runs the same validation as the API (absolute path, file exists, executable bit set), and persists the CallbackService row. Names must be unique within a domain; re-running with the same name fails with a clear error rather than silently updating.

list-callback-services takes no arguments and prints each registered CallbackService name on its own line (empty output when none exist).

remove-callback-service deletes the row with the given name, or exits with an error if no such row exists.

Design

For details on how workflows execute, integrate with pulpcore TaskGroups, and handle cancellation, see the design doc.

About

Schedule and orchestrate tasks in Pulp

Resources

License

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors