Skip to content

feat: virtual-hosted S3 addressing (CLI + in-pod)#83

Open
mostlymaxi wants to merge 4 commits into
mainfrom
feat/s3-virtual-hosted
Open

feat: virtual-hosted S3 addressing (CLI + in-pod)#83
mostlymaxi wants to merge 4 commits into
mainfrom
feat/s3-virtual-hosted

Conversation

@mostlymaxi

@mostlymaxi mostlymaxi commented Jun 10, 2026

Copy link
Copy Markdown
Owner

Adds a virtual_host toggle to [artifact_repository.s3] so cargo-athena uses virtual-hosted-style S3 addressing (https://<bucket>.<endpoint>/<key>) for providers that require it, instead of the default path-style.

Two halves:

  • CLI (publish / submit / emulate): the object_store client uses with_virtual_hosted_style_request. Works today.
  • In-pod: the emitted Argo artifact carries addressingStyle (upstream PR #15734) so the executor uses the same style for the binary tarball and load/save_artifact! objects. addressingStyle is newer than every supported Argo (v4.0.5 / v3.7.14 / v3.6.19 all predate it), so this half is inert until a cluster runs an Argo that ships #15734. On the current matrix the emitted key is silently pruned on admission, so it is harmless to set.

The config stays a bool; s3_loc maps it onto Argo's tri-state addressingStyle: true becomes virtual-hosted, false becomes "" (auto-detect). The empty default is skip-serialized, which buys three things:

  • every existing WorkflowTemplate golden stays byte-identical (only virtual_host = true emits the key),
  • no spurious submit drift against WTs from a pre-virtual_host binary (absent field deserializes to "", so "" == ""),
  • setting it on a pre-#15734 cluster never breaks a submit (the unknown key is pruned, not rejected).

from_template now reads the style off the emitted artifact instead of a threaded bool, so the describe/ls run metadata has a single source of truth. New unit test locks the mapping and the skip-when-empty serialization.

Build / clippy / test / fmt / mdbook green; goldens unchanged.

@mostlymaxi mostlymaxi changed the title feat(cli): virtual-hosted S3 addressing (athena.toml virtual_hosted) feat(cli): S3 addressing_style (path | virtual-hosted) in athena.toml Jun 10, 2026
@mostlymaxi
mostlymaxi force-pushed the feat/s3-virtual-hosted branch from c5237ed to 4ca0411 Compare June 10, 2026 16:43
Add `[artifact_repository.s3] virtual_host` (bool, default false =
path-style, what MinIO / most S3-compatible stores want). When true the
CLI's object_store client uses virtual-hosted-style requests; resolved
to a bool on S3Ref so publish / submit / emulate use one style for the
binary tarball and load/save_artifact objects alike.

CLI-side only for now: the in-pod Argo executor auto-detects until
upstream Argo exposes the toggle on its S3 artifact. Regenerates the
describe/ls metadata goldens (S3Ref's bool); emitted WorkflowTemplate
YAML is unchanged.
@mostlymaxi mostlymaxi changed the title feat(cli): S3 addressing_style (path | virtual-hosted) in athena.toml feat(cli): virtual_host S3 addressing (athena.toml) Jun 10, 2026
@mostlymaxi
mostlymaxi force-pushed the feat/s3-virtual-hosted branch from 4ca0411 to 216af80 Compare June 10, 2026 17:13
Emit the addressing style onto every S3 artifact so the in-pod executor
uses it too, not just the CLI client. api::S3Artifact gains
addressing_style; s3_loc maps virtual_host true -> "virtual-hosted",
false -> "" (omitted, auto-detect). Skip-when-empty keeps goldens
byte-identical and lets pre-#15734 Argo ignore the unknown field.
from_template reads the style off the emitted artifact instead of a
threaded bool, so the run metadata has one source of truth.
@mostlymaxi mostlymaxi changed the title feat(cli): virtual_host S3 addressing (athena.toml) feat: virtual-hosted S3 addressing (CLI + in-pod) Jul 8, 2026
mostlymaxi and others added 2 commits July 8, 2026 12:20
addressingStyle (PR #15734) is newer than every supported Argo (v4.0.5 /
v3.7.14 / v3.6.19), so the in-pod half is inert on all of them today.
Reword the caveat and the mirrored comments to say that plainly instead
of implying only "older" executors ignore it, and link the support
matrix. CLI side is unaffected.
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.

1 participant