-
Notifications
You must be signed in to change notification settings - Fork 38
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add Workflow engine and version to RunWorkflow parameters #181
Comments
@vsmalladi thanks for suggesting this! I agree, that as we see broader adoption of WES we will run into this issue more and more. Especially when we have multi-engine backends behind a singular WES entry point. I have a few suggestions, so interested to hear what you think:
|
@patmagee Here are some of my thoughts
|
I agree with the need for this, and I also agree with defaults being broadcast so that, e.g., one can also pull an appropriate WES from a service registry ("give me a WES for engine X version Y"). Semantically and for consistency, I tend to not favor including these in the Couple of thoughts here:
I therefore think that
Tagging some more people: @denis-yuen @svedziok @vinjana |
Shouldn't the engine version be able to error correctly based on the workflow_type version and repo that is provided? So if you say wdl: 1.1 and cromwell 79 then here are the errors I see:
Otherwise keeping this combination will be very onerous on the implementer |
I agree that support for multiple engine versions on the WES side is necessary for reproducibility. However, documenting all valid combinations of language and engine versions can become very complex for the WES implementer/provider. From the WES provider side, it would be much easier to support only specific engine versions (for nextflow, cromwell, cwltool, toil, etc.) and give this information back to the user. The engine should be able to handle the language version of a specific run and return an error if a workflow language version is not supported by the chosen engine. |
My last point was motivated by the idea that it would be rather terrible user experience if if a client first needed to test WES instance by instance to see if there's a WES that supports running a given workflow, especially if it involves user interaction. But thinking about it, I agree with you @vsmalladi and @vsmalladi, returning an error is probably not too terrible, because it is arguably a fair requirement on users to check themselves if a given workflow engine (version) is capable of running a workflow of a specific type and version. Perhaps it's helpful to play this through a bit and summarize the current state as well as the one proposed in #182:
So in terms of broadcasting workflow types and type versions, the proposed solution covers all the angles I can think of. But one thing might still be worth discussing:
|
This is a really great discussion and It looks like we ended up in pretty good place. FWIW, I also agree that trying to map the supported workflow types and version to every single engine would be very tedious for the engine implementer, and likely would be tedious for the user as well. To that end, I like the initial suggestion from @vsmalladi with the tweak you suggested @uniqueg to make it more inline with the In regards to the range selectors, I do not think that it really makes sense for the current use case. I doubt an implementer would allow for a dynamic range of engines as opposed to offering several discrete versions of a single engine. For example If you specified a range of |
I was thinking of ranges more for specifying supported workflow type versions (rather than engine versions). The workflow types I am familiar with only have a couple of versions, but there may be some with frequent updates and where engines are backward compatible with respect to the workflow type versions they support. In such cases it would be tedious to enumerate every one of them. However, it's the definition of feature creep to try to address problems that nobody ever ran into. If we ever get a complaint we can still reevaluate. |
1 similar comment
I was thinking of ranges more for specifying supported workflow type versions (rather than engine versions). The workflow types I am familiar with only have a couple of versions, but there may be some with frequent updates and where engines are backward compatible with respect to the workflow type versions they support. In such cases it would be tedious to enumerate every one of them. However, it's the definition of feature creep to try to address problems that nobody ever ran into. If we ever get a complaint we can still reevaluate. |
Ya i think it worth making a new issue for this range discussion. But this also goes into discussion about how many legacy versions of an engine are support and for how long. |
I don't even think it's worth opening an issue. We can leave that up to the first person running in to that problem :) |
…a request. Closes #181 (#182) * Add in support for workflow enginer and version when submitting a request. * Expand out Workflow Engine version to by array of strings. * Update RunRequest.yaml * Add in workflow_engine and version to the run spec. * Fix typo * Fix for consitency * Add more clarity about engine and version * Update description * Address changes requested. * Fix indentation. * Resolve reorganization of yaml's into 1 single yaml. * Remove preempted with accidental merge. * Add required parameter for: - workflow_type - workflow_type_version - workflow_url
As workflow engines evolve there will be a difference between workflow language definition vs the version of the runner. I am suggesting we add two new required parameters to include in the WES spec to support running workflows that are actually supported by and tested by the developers of the workflow in question.
If a workflow is on Dockstore and has only been tested on Cromwell version 79, you should be able to run on Cromwell and can test with different Cromwell versions. WDL can be made with the new 1.1 spect, but Cromwell won't support that and thus WES with only Cromwell and no MiniWDL support wouldn't be able to run the 1.1 spec version.
With Nextflow there is a DSL-1/DSL-2 of the langauge that has different support for version of the Nextflow runner.
Overall I think this will provide the user more control on what runners and versions they can run their workflow so they can be confident that their workflow runs.
Suggesting to add these:
The text was updated successfully, but these errors were encountered: