GENI Workflows

Tag a workflow once, inherit it everywhere

Tags have always been how you slice cost in GENI Workflows: label a submission client=acme, and its compute shows up under that client. The problem was that the label had to be applied to every single submission. Miss one, and its cost silently falls outside your report.

From today, tags attach to the workflow as well. Every submission of every version of that workflow inherits them.

Tag at registration

Terminal window
geni workflow create \
--workflow-name wgs-germline --workflow-version v2.1.0 \
--file wgs-germline.zip \
--tag client=acme --tag project=dnabr

Every run of wgs-germline from now on carries client=acme and project=dnabr, whether it was submitted from the CLI, from CI, or by someone who has never heard of your billing setup.

Change them later

Terminal window
geni workflow update wgs-germline \
--edit-tag client=acme \
--add-tag stage=prod \
--remove-tag project

Tags live on the workflow, not the version, so this applies to v1.0.0 and v2.1.0 alike.

Filter by them

Terminal window
geni workflow list --tag client=acme --show-tag stage

Repeating --tag narrows the result to workflows carrying all the given tags. --show-tag adds a tag as a column.

Three rules worth knowing

A submission tag wins. If a submission passes --tag client=other, that value overrides the workflow’s client for that run. Inheritance is a default, not a lock.

Keys must be registered first. As with submission tags, the key has to exist in the tag registry, which only an administrator can add to. An unregistered key fails the request with 422.

Terminal window
geni tag create client

Re-uploading a version never clears tags. Only the keys you supply are upserted; anything you do not mention is left alone. That means pushing v2.2.0 of a workflow does not wipe the labels you set six months ago. To actually remove one, use geni workflow update --remove-tag, or PATCH /workflows/:name on the API.

Why this matters

The reason to care is cost attribution. Cost data comes from the AWS Cost and Usage Report and the GCP FOCUS billing export — actual billed cost, not an estimate. But a per-client total is only as trustworthy as the tagging behind it, and per-submission tagging depends on every person and every script remembering.

Attaching the label to the workflow moves that decision to the place where it is actually known: when you register the pipeline, you already know which client it belongs to.

Getting it

Requires CLI geni-bioinfo@0.1.34 or later.

Terminal window
npm install -g geni-bioinfo

Full details in the tagging guide.