Weaver: Workflow Execution Management Service (EMS); Application, Deployment and Execution Service (ADES); OGC API - Processes; WPS; CWL Application Package
Weaver allows auto-inference of CWL Workflow step IDs to references to a local process.
For example, a workflow containing run: some-step.cwl infers that the process ID some-step should be used for that sub-operation. If that process is found locally during deployment, the Workflow definition is permitted.
However, when using the CLI (or python client) to deploy a new Workflow, this inference does not work.
Using WeaverClient.deploy, a pre-check of the CWL is performed to quickly generate an error if the input CWL is invalid. Since in that context, the client is not the remote server, it does not contain the self reference to its own URL, which causes local process lookup o fail. Steps require having an explicit URL to the remote process to succeed. However, this defeats the purpose of the auto-inference of the process ID location.
How to Reproduce
Pick any workflow from the test suite, or define your own with a remote process as sub-step.
Use only run: <process-id>.cwl in the step definition.
Pass this CWL definition to WeaverClient.deploy(cwl=...).
As a counter-example, replacing by run: https://full-path.to/processes/{process-id} should succeed.
Expected behavior
The CLI/client should inject the settings for the targeted URL instance.
Since a deployment is performed, this information can be known in advance.
Using only the ID of the process in the steps should resolve the same way as using the full URL to the same server instance where the workflow is being deployed to.
Describe the bug
Weaver allows auto-inference of CWL Workflow step IDs to references to a local process. For example, a workflow containing
run: some-step.cwl
infers that the process IDsome-step
should be used for that sub-operation. If that process is found locally during deployment, the Workflow definition is permitted.However, when using the CLI (or python client) to deploy a new Workflow, this inference does not work. Using
WeaverClient.deploy
, a pre-check of the CWL is performed to quickly generate an error if the input CWL is invalid. Since in that context, the client is not the remote server, it does not contain the self reference to its own URL, which causes local process lookup o fail. Steps require having an explicit URL to the remote process to succeed. However, this defeats the purpose of the auto-inference of the process ID location.How to Reproduce
run: <process-id>.cwl
in the step definition.WeaverClient.deploy(cwl=...)
.As a counter-example, replacing by
run: https://full-path.to/processes/{process-id}
should succeed.Expected behavior
The CLI/client should inject the settings for the targeted URL instance. Since a deployment is performed, this information can be known in advance. Using only the ID of the process in the steps should resolve the same way as using the full URL to the same server instance where the workflow is being deployed to.