feat(storage): add copy command - #887
Draft
natalie-o-perret wants to merge 5 commits into
Draft
Conversation
natalie-o-perret
changed the base branch from
master
to
build/update-golang-x-deps
August 4, 2026 16:57
natalie-o-perret
force-pushed
the
feat/storage-copy
branch
from
August 4, 2026 17:12
1eee4ba to
abb3210
Compare
natalie-o-perret
marked this pull request as ready for review
August 4, 2026 17:13
natalie-o-perret
changed the base branch from
build/update-golang-x-deps
to
fix/unlisted-template-ids
August 4, 2026 17:24
natalie-o-perret
marked this pull request as draft
August 4, 2026 17:30
natalie-o-perret
changed the base branch from
fix/unlisted-template-ids
to
build/update-golang-x-deps
August 4, 2026 19:46
Contributor
Author
|
[SC-192277] |
natalie-o-perret
force-pushed
the
build/update-golang-x-deps
branch
from
August 6, 2026 08:29
338b079 to
36370ab
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Depends on #885.
Adds
exo storage copy(cp) for server-side copies of objects and recursive prefixes within or across buckets.exo storage movenow reuses the copy path before deleting sources and gains themvalias; unsafe identical or overlapping same-bucket paths are rejected. Closes #883.Checklist
(For exoscale contributors)
CHANGELOG.md)Testing
Local validation:
go fmt ./... && git diff --check: passed with no formatting diffmake lint: passedgolangci-lint run --timeout 4m: passed with 0 issuesgo vet ./...: passedmake build: passedmake test-verbose: passed with the race detector enabled(cd tests/e2e && go test -v): passed all no-API scenariosgovulncheck ./...: reported no vulnerabilities in called codeLive SOS smoke test using two temporary private buckets in
ch-gva-2and a 42-byte fixture. The account selector is omitted and bucket names are represented by$SRCand$DST.Live command transcript
Version
Single-object copy
The source remained after the copy.
cpalias across bucketsRecursive prefix copy across buckets
Both source objects remained after the recursive copy.
Content verification
cmpexited successfully without output.Dry-run and overlap guard
The dry-run destination was not created.
Existing
movecommandThe old
copies/copied.txtkey was removed and the source fixtures were unchanged.mvalias across bucketsThe old
$DST/alias/copied-by-cp.txtkey was removed.Recursive move regression
Cleanup
The storage API CI job passes. The unrelated compute API job fails during NLB setup because the shared test account has exceeded its network load balancer quota.
Note
AI assistance: PR description, test scaffolding.