Commit 252a8d2
committed
feat: add workflow missing-tools install request button
When a workflow run fails because required tools are not installed, Galaxy
now detects which tools are missing and surfaces a one-click
'Request Installation' button so users can notify admins without leaving
the workflow run page.
Backend changes:
- workflows.py: pass missing_tool_ids as extra_error_info on the
MessageException so the list is serialised into the JSON error response
- notifications.py: add optional tool_ids and workflow_name fields to
ToolRequestNotificationContent so admin notifications include the
workflow context
- tool_request_form.py: mirror the same two fields on ToolRequestFormData
and wire them through to the notification content
- test_tool_request_form.py: add integration test that submits a request
with tool_ids + workflow_name and verifies both appear in the admin
notification
Frontend changes (client/src/components/Workflow/Run/):
- services.js: add WorkflowMissingToolsError class (extends Error, carries
missingToolIds[]); update getRunData() catch to detect missing_tool_ids
in the error response and throw the typed error before rethrowSimple()
would strip structured data
- WorkflowMissingToolsRequest.vue: new component — shows a button with
count badge, a GModal confirmation dialog, and uses localStorage keyed
on the sorted tool-ID set to disable the button after a successful
request (avoids hammering); hidden for anonymous users and when the
feature flag enable_tool_request_form is false; falls back gracefully
when workflowName is not yet available
- WorkflowMissingToolsRequest.test.ts: 25-test suite covering visibility
rules (feature flag, anonymous, empty IDs), cancel path, payload shape,
singular/plural copy, localStorage deduplication, storage-key sorting,
in-flight disabled state, error recovery/retry, and modal re-open
- WorkflowRun.vue: import and render WorkflowMissingToolsRequest inside
the danger BAlert when a WorkflowMissingToolsError is caught; call
getWorkflowInfo() as a best-effort fallback to populate workflowName on
both the standard and instance (props.instance) code paths
- schema.ts: add tool_ids and workflow_name to ToolRequestFormData type1 parent d777a95 commit 252a8d2
9 files changed
Lines changed: 686 additions & 9 deletions
File tree
- client/src
- api/schema
- components/Workflow/Run
- lib/galaxy
- managers
- schema
- webapps/galaxy/services
- test/integration
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
23652 | 23652 | | |
23653 | 23653 | | |
23654 | 23654 | | |
| 23655 | + | |
| 23656 | + | |
| 23657 | + | |
| 23658 | + | |
| 23659 | + | |
23655 | 23660 | | |
23656 | 23661 | | |
23657 | 23662 | | |
| |||
23662 | 23667 | | |
23663 | 23668 | | |
23664 | 23669 | | |
| 23670 | + | |
| 23671 | + | |
| 23672 | + | |
| 23673 | + | |
| 23674 | + | |
23665 | 23675 | | |
23666 | 23676 | | |
23667 | 23677 | | |
| |||
23753 | 23763 | | |
23754 | 23764 | | |
23755 | 23765 | | |
| 23766 | + | |
| 23767 | + | |
| 23768 | + | |
| 23769 | + | |
| 23770 | + | |
23756 | 23771 | | |
23757 | 23772 | | |
23758 | 23773 | | |
| |||
23763 | 23778 | | |
23764 | 23779 | | |
23765 | 23780 | | |
| 23781 | + | |
| 23782 | + | |
| 23783 | + | |
| 23784 | + | |
| 23785 | + | |
23766 | 23786 | | |
23767 | 23787 | | |
23768 | 23788 | | |
| |||
0 commit comments