Workflow import silently drops addons: imported services deploy with no Ingress and 404
Symptom
A workflow imported into Studio is valid and reports Deployed, the pod runs — and no Ingress is ever created. Every URL answers 404. Studio shows no error, because from its point of view nothing failed.
Reported against 26.9.0.
Root cause — confirmed in the code
studio/ryax/studio/infrastructure/packaging/packaging_import.py:268 builds each
action with an explicit field list that omits both addon fields:
workflow_action = WorkflowAction(
id=..., name=..., technical_name=..., description=..., kind=...,
version=..., has_dynamic_outputs=..., position_x=..., position_y=...,
inputs=[...], outputs=[...], action_id=...,
deployment_status=WorkflowActionDeployStatus.NONE,
resources=WorkflowActionResources(...),
)Both fields exist on the entity and default to empty
(studio/ryax/studio/domain/workflow/entities/workflow_action.py):
addons_inputs: list[WorkflowActionAddonInput] = field(default_factory=list) # :77
addons: Dict[str, dict] = field(default_factory=dict) # :87grep -n addon packaging_import.py returns nothing. The importer has never
known about addons.
No addon means no HTTP addon, which is what creates the Ingress — hence a running pod with no route to it.
Why it is worse than it looks
It is silent. The workflow validates, deploys and reports success; the only evidence is a 404 at a URL Studio does not display. It also poisons what comes after: the action definition the Runner stores at this first deploy has no addon inputs, and that definition is never updated — see the companion issue.
Reproduction
- Export a workflow containing an action with the HTTP addon.
- Import it (or import any workflow whose action needs an addon).
- Deploy. Status is
Deployed, the pod runs,kubectl get ingressis empty, the URL 404s.
Workaround in place
The demo builds workflows through the UI APIs instead of importing them.
Acceptance criteria
- An imported workflow round-trips its addons: export → import → export is
stable with respect to
addonsandaddons_inputs. - A test covers the round trip; the export side lives beside the importer in
studio/ryax/studio/infrastructure/packaging/.
Found while migrating the CAPE demo to Ryax 26.9.0: ryax-tech/public/cape-tools/cape-agentic-infra#2 (comment 3905714558)