Skip to content

Conversation

@trey-stafford
Copy link
Member

@trey-stafford trey-stafford commented Jan 14, 2026

Adds a new endpoint and CLI for downloading the results of a workflow with a temporary output type. Resolves #110.

See also:

Prior to this PR, final outputs would be placed in a PVC, and these were not particularly accessible without direct access to the PVC. Now there is a new output type, temporary, which zips the final output of a recipe and places it Argo's configured artifact storage (s3). The new service endpoint takes a workflow name and returns a pre-signed URL to the object that users can use to download the data.

The pre-signed url allows access to the data object for 2 hours, and then the URL expires.

The idea here is that workflows with temporary outputs can be cleaned up after a given amount of time. This works well for recipes that do not need to formally publish outputs (e.g,. a subsetting operation).

Along with the PRs mentioned above, the API landing page should not be accessible at: https://localhost:7443/ogdc/api . Note that you will need to accept a security exception, as this HTTPS endpoint utilizes a self-signed (unverified) cert.

@trey-stafford trey-stafford force-pushed the 110-return-published-outputs branch from 6fafb9d to 71bc4dd Compare January 14, 2026 22:34
I could have sworn this was the default behavior...?
@trey-stafford trey-stafford force-pushed the 110-return-published-outputs branch from 59bf0fe to 718897b Compare January 14, 2026 22:39
@trey-stafford trey-stafford force-pushed the 110-return-published-outputs branch from 227e98a to 9401699 Compare January 16, 2026 01:27
input: RecipeInput
output: RecipeOutput = RecipeOutput()
output: DataOneRecipeOutput | TemporaryRecipeOutput | PvcRecipeOutput = (
PvcRecipeOutput()
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Default to PVC output, which was the only and default behavior prior to this PR. This makes it a little more explicit/clear. But do we want this as the default? Maybe temporary output makes more sense as a default?

# location uses a key that's based on the argo workflow name. We could
# probably use `hera` to filter for a matching workflow based on the
# `recipe_config.id`, and check its output, but this will be much easier
# to implement once we track recipe executions in the database.
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Related issue: #148

This should be temporary. Need to address the db component to track recipe executions.
@trey-stafford trey-stafford force-pushed the 110-return-published-outputs branch from b6dc302 to d102260 Compare January 16, 2026 18:56
This is required so that swagger knows it lives under a root path when behind ingress/proxy
@trey-stafford trey-stafford force-pushed the 110-return-published-outputs branch from 6338f36 to 882435d Compare January 16, 2026 19:00
@trey-stafford trey-stafford changed the title WIP: 110 return published outputs Support retrieval of temporary published outputs Jan 20, 2026
@trey-stafford trey-stafford marked this pull request as ready for review January 21, 2026 21:38
Copy link
Member

@rushirajnenuji rushirajnenuji left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed and tested this locally, and it looks good. All my tests passed locally. 🚀

One thing that we should add in the future iterations is the workflow ownership checks before retrieving the temp output artifacts generated by the workflow.

We can go ahead and merge this PR, thank you @trey-stafford for adding this support. 🎉🚀

@trey-stafford trey-stafford merged commit 5cb52c2 into main Feb 3, 2026
1 check passed
@trey-stafford trey-stafford deleted the 110-return-published-outputs branch February 3, 2026 17:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Setup service endpoint for retrieving recipe outputs

2 participants