Process UUID, updating and versioning #107
Labels
project/DACCS
Related to DACCS project (https://github.com/orgs/DACCS-Climate)
triage/enhancement
New feature or request
triage/experimental
Something related to experimental features and/or package version
triage/feature
New requested feature.
Main feature
In order to support process updates for things like metadata (abstract, title, etc.), a new route method should be added:
PATCH /processes/{id}
with update payload like{"abstract": "<text>"}
Process versioning issues and considerations
processVersion
(the field specified by WPS standard). Internally, we will treat this new version as a totally different process.latest
matching one, and requesting the literalUUID
will return that specific version (relates to discovery Improve discovery/listing of deployed processes #102).UUID
as input. It is generated automatically and used to manage versions.get_any_version
method as bothversion
andprocessVersion
keys are used to reflect the same information at different locations (ie: process list vs single process description).<slug>
will return the latest process, an explicit<uuid>
will pin to tag version, and for convenience,<slug>:<version>
for a more readable slug-pinned version.<slug>:latest
resolved as<slug>
to match docker style references).- [ ] we can consider storing a commit hash if the reference is from a git repository (eg: reference notebook, relates to Process Package generation from Jupyter Notebook definition #63)link
items namedpredecessor-version
,successor-version
andlatest-version
that should refer to the corresponding semantically ordered versions when available (as per https://www.iana.org/assignments/link-relations/link-relations.xhtml)link
item namedversion-history
Process deployment issues
To make sure that latest versions are executed by ADES, an EMS workflow will need to make sure to validate the process with specific
UUID
. Up to this point, an existing process-id (slug) on the ADES was assumed to be already deployed. Since the slug name was used instead of anUUID
, this is both insecure (could be a conflicting process named the same) but also doesn't help to know exactly which process package was executed. Worst, if process is updated, undeployed, re-deployed, an old job execution doesn't point to the real process definition that was executed. This makes it hard (if not impossible) to audit the results.Therefore, process deployment should accept in body an optional
source
dictionary :And process description should provide it as a link if available:
Optionally, an EMS could update back its process links with successful response of deployed ADES link references for tracking deployed instances (note: they could be undeployed later on, so must test links to be sure).
Support for other implementations
Since we are not the only ADES providers, we cannot assume the source
UUID
is always available in the process description. For this reason, we need to use the local-EMSUUID
as the remote-ADES process-id slug for deployment.Using that
UUID
directly as the process-id slug will remove any chance to search corresponding processes by version on an ADES that supports it, but this is acceptable as it is only a working unit. The EMS (user interface) will have versioning, and ADES that support versions will have a link referencing back to the original EMS process.If the ADES supports versions though (it provides the
links[].source
), the EMS should validate that the reference refers correctly to itself and the localUUID
it self-assigned for that process.The text was updated successfully, but these errors were encountered: