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, 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>/ |
Stop a workflow (body: {"state": "canceled"}). Removes the workflow's schedule so no further runs are created and cancels any of its runs still in progress. Idempotent: always returns 200. Only "canceled" is accepted as the target state. |
| GET | /pulp/api/v3/workflow/workflow-runs/ |
List all runs across every workflow (filter by workflow to scope to a single workflow's run history). A flat convenience collection; each run's pulp_href points to its canonical nested URL below. |
| GET | /pulp/api/v3/workflow/workflows/<workflow_pk>/runs/ |
List a workflow's runs |
| GET | /pulp/api/v3/workflow/workflows/<workflow_pk>/runs/<pk>/ |
Retrieve a workflow run |
| PATCH | /pulp/api/v3/workflow/workflows/<workflow_pk>/runs/<pk>/ |
Cancel a workflow run (body: {"state": "canceled"}). Works while the run is waiting or running; returns 409 if the run 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, or the synthetic finished event that fires on any
non-canceled terminal state). Callbacks are not currently supported for
cancellation.
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.
Metadata
Release files for pulp-workflow 0.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| pulp_workflow-0.4.0.tar.gz | 46.9 kB | With provenance | Details for pulp_workflow-0.4.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| pulp_workflow-0.4.0-py3-none-any.whl | Python 3 | none | any | Details for pulp_workflow-0.4.0-py3-none-any.whl |
Total release size: 104.9 kB
Release files / pulp_workflow-0.4.0.tar.gz
| Download URL | pulp_workflow-0.4.0.tar.gz |
|---|---|
| Size | 46.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7122055363e856180b218420856e073cefe081403defeff6ab11ca37d7aa731f
|
|
BLAKE2b-256 checksum How to use checksums |
31e69c4f3fbd605a333cfd976513c2b52071f22529f90c489228bd20bb9c977d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 24, 2026.
Transparency logRelease files / pulp_workflow-0.4.0-py3-none-any.whl
| Download URL | pulp_workflow-0.4.0-py3-none-any.whl |
|---|---|
| Size | 58.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b44bbba15a7ad243ea2ae02e91bca08534ba51dfb0b512e0195626f916e8b28e
|
|
BLAKE2b-256 checksum How to use checksums |
a8b73fa8425116be91bc913dea70ab4126c1040fdd99b038d162595dd76c1ad7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 24, 2026.
Transparency logSecurity for pulp-workflow 0.4.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
Both files in this release have been uploaded with provenance metadata.
Attestation for pulp_workflow-0.4.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 24, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.