Active
AI Generated
Backup Result Routing
Partial is neither pass nor fail
Description
Backup jobs often return outcomes that binary workflows mishandle. Switch on backup_result — partial success is neither pass nor fail.
Why it matters
- Partial backup success gets its own path — neither celebrated as success nor treated as total failure.
- Operators get retry, escalate, or log actions matched to backup_result, not binary job status.
- Reduces false all-clear pages when only half the targets backed up.
AO building blocks
Automation orchestrator step types this workflow uses on the canvas. See all building blocks
-
Triggers
Manual trigger
Starts a workflow when a user clicks Run in the UI or calls the workflow execution API — the simplest entry point for on-demand runs like demos, break-glass remediation, or operator-initiated changes. No extra configuration is required, and runs appear in history with the triggering user as the source.
-
Logic
Switch step
Evaluates conditions and routes execution to the first matching branch, supporting up to 100 ordered paths plus a fallback when nothing matches. Use it to branch on severity tiers, environment (dev/staging/prod), or AI agent output categories where a binary conditional isn't enough.
-
AAP execution
AAP job template
Launches a single Ansible Automation Platform job template from the workflow, polling until the job completes and exposing results to downstream steps. The standard bridge between automation orchestrator reasoning and AAP execution — one playbook with resolved inventory, credentials, limits, and extra vars.
Interactive Experience
Workflow
flowchart LR
A@{ img: "https://ansible-tmm.github.io/aap-orchestrator-demos/assets/icons/manual-trigger.png", label: "Schedule or Event", pos: "b", h: 96, constraint: "on" } --> B@{ img: "https://ansible-tmm.github.io/aap-orchestrator-demos/assets/icons/launch-aap-job-template.png", label: "Check Backup Result", pos: "b", h: 96, constraint: "on" }
B --> C@{ img: "https://ansible-tmm.github.io/aap-orchestrator-demos/assets/icons/switch-node.png", label: "backup_result", pos: "b", h: 96, constraint: "on" }
C -->|success| D@{ img: "https://ansible-tmm.github.io/aap-orchestrator-demos/assets/icons/launch-aap-job-template.png", label: "Verify Backup", pos: "b", h: 96, constraint: "on" }
C -->|partial| E@{ img: "https://ansible-tmm.github.io/aap-orchestrator-demos/assets/icons/launch-aap-job-template.png", label: "Retry Partial", pos: "b", h: 96, constraint: "on" }
C -->|failed| F@{ img: "https://ansible-tmm.github.io/aap-orchestrator-demos/assets/icons/launch-aap-job-template.png", label: "Escalate", pos: "b", h: 96, constraint: "on" }
C -->|skipped| G@{ img: "https://ansible-tmm.github.io/aap-orchestrator-demos/assets/icons/launch-aap-job-template.png", label: "Log Skipped", pos: "b", h: 96, constraint: "on" }
D --> H@{ img: "https://ansible-tmm.github.io/aap-orchestrator-demos/assets/icons/launch-aap-job-template.png", label: "Notify Chatroom", pos: "b", h: 96, constraint: "on" }
E --> H
F --> H
G --> H
classDef noBorder fill:transparent,stroke:transparent
class A,B,C,D,E,F,G,H noBorder
Switch routing
| backup_result | Action | |
|---|---|---|
success |
Verify restore point | log OK |
partial |
Retry failed targets | notify ops |
failed |
Escalate | open incident |
skipped |
Log reason | check schedule |
Playbooks
| Playbook | What it does | Runs on |
|---|---|---|
check_backup.yml
|
Reads backup status file and publishes backup_result artifact for the AO switch. | RHEL node |
verify_backup.yml
|
Verifies a successful backup by checking file integrity and size. | RHEL node |
retry_backup.yml
|
Retries partial backup targeting failed items. | RHEL node |
escalate_backup.yml
|
Gathers log tail and creates escalation summary for failed backups. | RHEL node |
log_skipped.yml
|
Checks cron/timer schedules and logs skip reason. | RHEL node |
notify_chatroom.yml
|
Posts backup results to Mattermost. | localhost (Mattermost API) |
AI Generated
This demo's playbooks and workflow were generated by AI to illustrate the pattern. They have not been fully tested in a live environment. Review and adapt before using in production.