Expand versioning to graphs and nodes
What we already have
We can currently specify the version of the graph language to describe a workflow in the workflow description
{"graph": {"version": "1.0"}}
and we have a version to a workflow task implementation
class MyTask(Task, version="1.2"):
...
which is used in the hashing scheme.
What we should add
We need to add required task versioning and graph versioning. What I propose:
{"graph": {"version": "1.0", "graph_version":"1.4"}
"nodes": [
{"id": "task1", "task_identifier":"myproject.MyTask", "task_version":">=1.1,<2"}
]
}
The "task_version"
will be used by ewoks to check the version of the task and raise an exception if it doesn't. In this example it will check whether the current MyTask version 1.2
satifies >=1.1,<2
(which it does in this case). The version pattern can be anything that for example pip would use.
The "graph_version"
is not used by ewoks but by any version control system we use. Not sure about this one. If we use git for example, the version does not need to be inside the workflow description itself (it's a git tag for example).
@payno @svensson @koumouts @andy.gotz What do you thinks?