Skip to content

CNTRLPLANE-2684: CPO etcd-upload subcommand for cloud storage upload - #8017

Merged
openshift-merge-bot[bot] merged 4 commits into
openshift:mainfrom
jparrill:CNTRLPLANE-2684
Mar 29, 2026
Merged

CNTRLPLANE-2684: CPO etcd-upload subcommand for cloud storage upload#8017
openshift-merge-bot[bot] merged 4 commits into
openshift:mainfrom
jparrill:CNTRLPLANE-2684

Conversation

@jparrill

@jparrill jparrill commented Mar 19, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Add etcd-upload subcommand to the control-plane-operator for uploading etcd snapshots to S3 and Azure Blob Storage
  • Support conditional writes (IfNoneMatch) to prevent overwriting existing backups
  • Support server-side encryption: SSE-KMS for S3, encryption scopes for Azure
  • Azure authentication: client-secret (JSON file) and managed-identity (msi-dataplane via SecretProviderClass for ARO HCP), with DefaultAzureCredential fallback
  • Restructure OADP integration tests under test/integration/oadp/ with cli/ and upload/ subdirectories
  • Fix Agent platform resource expectations in OADP CLI tests

Epic

CNTRLPLANE-2676 - HCPEtcdBackup CRD for OADP Integration

Dependencies

Related PRs:

For the reviewers

To run the upload integration tests you need:

  • make control-plane-operator (builds the CPO binary)
  • Authenticated aws CLI and/or az CLI
./test/integration/oadp/run.sh upload aws    # S3 only
./test/integration/oadp/run.sh upload azure  # Azure Blob only
./test/integration/oadp/run.sh upload        # Both (auto-detects)

The script creates all resources (buckets, KMS keys, SPs, storage accounts) and cleans them up on exit.

Test plan

  • Unit tests for S3 uploader (5 cases)
  • Unit tests for Azure Blob uploader (6 cases)
  • Unit tests for Azure credential auth paths (4 cases)
  • Unit tests for CLI flags and factory (5 cases)
  • OADP CLI integration tests pass (all platforms)
  • Integration tests with real S3 bucket (./test/integration/oadp/run.sh upload)
  • Integration tests with real Azure Blob Storage (./test/integration/oadp/run.sh upload)

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • Added an etcd-upload CLI to upload snapshots to S3 or Azure Blob with key-prefix, optional KMS/encryption-scope, and multiple auth modes; exposes an etcd-upload subcommand.
  • Tests

    • Unit tests for S3 and Azure uploaders and CLI behavior.
    • Integration tests and a runnable integration test script for real AWS/Azure uploads.
  • Chores

    • Updated .gitignore to ignore .env and added Azure storage SDK dependency; integration test package reorganizations.

@openshift-ci-robot

Copy link
Copy Markdown

Pipeline controller notification
This repo is configured to use the pipeline controller. Second-stage tests will be triggered either automatically or after lgtm label is added, depending on the repository configuration. The pipeline controller will automatically detect which contexts are required and will utilize /test Prow commands to trigger the second stage.

For optional jobs, comment /test ? to see a list of all defined jobs. To trigger manually all jobs from second stage use /pipeline required command.

This repository is configured in: LGTM mode

@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Mar 19, 2026
@openshift-ci-robot

openshift-ci-robot commented Mar 19, 2026

Copy link
Copy Markdown

@jparrill: This pull request references CNTRLPLANE-2684 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the story to target the "4.22.0" version, but no target version was set.

Details

In response to this:

Summary

  • Add etcd-upload subcommand to the control-plane-operator for uploading etcd snapshots to S3 and Azure Blob Storage
  • Support conditional writes (IfNoneMatch) to prevent overwriting existing backups
  • Support server-side encryption: SSE-KMS for S3, encryption scopes for Azure
  • Azure uses DefaultAzureCredential for Managed Identity / Workload Identity support (ARO)
  • Restructure OADP integration tests under test/integration/oadp/ with cli/ and upload/ subdirectories
  • Fix Agent platform resource expectations in OADP CLI tests

Epic

CNTRLPLANE-2676 - HCPEtcdBackup CRD for OADP Integration

Dependencies

Test plan

  • Unit tests for S3 uploader (6 cases)
  • Unit tests for Azure Blob uploader (6 cases)
  • Unit tests for CLI flags and factory (4 cases)
  • OADP CLI integration tests pass (all platforms)
  • Integration tests with real S3 bucket (./test/integration/oadp/run.sh upload)
  • Integration tests with real Azure Blob Storage (./test/integration/oadp/run.sh upload)

🤖 Generated with Claude Code

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@coderabbitai

coderabbitai Bot commented Mar 19, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Auto reviews are limited based on label configuration.

🚫 Review skipped — only excluded labels are configured. (1)
  • do-not-merge/work-in-progress

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository YAML (base), Organization UI (inherited)

Review profile: CHILL

Plan: Pro

Run ID: 2e4bf80b-4f0f-43fc-a53f-09295a17d40c

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Adds an etcd-upload subcommand to control-plane-operator to upload etcd snapshot files to cloud storage. Introduces a pluggable Uploader interface with S3 and Azure Blob implementations (AWS KMS and Azure encryption-scope/auth support), CLI flags and validation, deterministic object key generation, unit and integration tests, an integration runner script that can provision temporary AWS/Azure resources, an Azure SDK dependency in go.mod, and adds .env to .gitignore. Several integration test packages were renamed from oadp to cli.

Sequence Diagram(s)

sequenceDiagram
  participant User as "User (CLI)"
  participant CPO as "control-plane-operator\n(etcd-upload)"
  participant FS as "Filesystem"
  participant Factory as "UploaderFactory"
  participant Uploader as "Uploader\n(S3 or Azure)"
  participant SDK as "Cloud SDK\n(AWS/Azure)"
  participant Storage as "Cloud Storage\n(S3 or Azure Blob)"

  User->>CPO: run `control-plane-operator etcd-upload --snapshot-path ... --storage-type ...`
  CPO->>FS: stat/open snapshot file
  FS-->>CPO: file handle
  CPO->>CPO: generate object key (prefix + timestamp + ext)
  CPO->>Factory: newUploader(storageType, creds, encryption)
  Factory-->>CPO: Uploader instance
  CPO->>Uploader: Upload(ctx, snapshotPath, key)
  Uploader->>SDK: construct authenticated upload request
  SDK->>Storage: perform upload
  Storage-->>SDK: success (location/etag) or error
  SDK-->>Uploader: upload response or error
  Uploader-->>CPO: UploadResult{URL} or error
  CPO-->>User: print URL or exit non-zero
Loading
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands and usage tips.

@openshift-ci openshift-ci Bot added do-not-merge/needs-area do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. labels Mar 19, 2026
@openshift-ci-robot

openshift-ci-robot commented Mar 19, 2026

Copy link
Copy Markdown

@jparrill: This pull request references CNTRLPLANE-2684 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the story to target the "4.22.0" version, but no target version was set.

Details

In response to this:

Summary

  • Add etcd-upload subcommand to the control-plane-operator for uploading etcd snapshots to S3 and Azure Blob Storage
  • Support conditional writes (IfNoneMatch) to prevent overwriting existing backups
  • Support server-side encryption: SSE-KMS for S3, encryption scopes for Azure
  • Azure uses DefaultAzureCredential for Managed Identity / Workload Identity support (ARO)
  • Restructure OADP integration tests under test/integration/oadp/ with cli/ and upload/ subdirectories
  • Fix Agent platform resource expectations in OADP CLI tests

Epic

CNTRLPLANE-2676 - HCPEtcdBackup CRD for OADP Integration

Dependencies

Test plan

  • Unit tests for S3 uploader (6 cases)
  • Unit tests for Azure Blob uploader (6 cases)
  • Unit tests for CLI flags and factory (4 cases)
  • OADP CLI integration tests pass (all platforms)
  • Integration tests with real S3 bucket (./test/integration/oadp/run.sh upload)
  • Integration tests with real Azure Blob Storage (./test/integration/oadp/run.sh upload)

🤖 Generated with Claude Code

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@openshift-ci

openshift-ci Bot commented Mar 19, 2026

Copy link
Copy Markdown
Contributor

Skipping CI for Draft Pull Request.
If you want CI signal for your change, please convert it to an actual PR.
You can still manually trigger a test run with /test all

@openshift-ci openshift-ci Bot added area/control-plane-operator Indicates the PR includes changes for the control plane operator - in an OCP release area/testing Indicates the PR includes changes for e2e testing approved Indicates a PR has been approved by an approver from all required OWNERS files. and removed do-not-merge/needs-area labels Mar 19, 2026
@openshift-ci-robot

openshift-ci-robot commented Mar 19, 2026

Copy link
Copy Markdown

@jparrill: This pull request references CNTRLPLANE-2684 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the story to target the "4.22.0" version, but no target version was set.

Details

In response to this:

Summary

  • Add etcd-upload subcommand to the control-plane-operator for uploading etcd snapshots to S3 and Azure Blob Storage
  • Support conditional writes (IfNoneMatch) to prevent overwriting existing backups
  • Support server-side encryption: SSE-KMS for S3, encryption scopes for Azure
  • Azure uses DefaultAzureCredential for Managed Identity / Workload Identity support (ARO)
  • Restructure OADP integration tests under test/integration/oadp/ with cli/ and upload/ subdirectories
  • Fix Agent platform resource expectations in OADP CLI tests

Epic

CNTRLPLANE-2676 - HCPEtcdBackup CRD for OADP Integration

Dependencies

Related PRs:

Test plan

  • Unit tests for S3 uploader (6 cases)
  • Unit tests for Azure Blob uploader (6 cases)
  • Unit tests for CLI flags and factory (4 cases)
  • OADP CLI integration tests pass (all platforms)
  • Integration tests with real S3 bucket (./test/integration/oadp/run.sh upload)
  • Integration tests with real Azure Blob Storage (./test/integration/oadp/run.sh upload)

🤖 Generated with Claude Code

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@jparrill

Copy link
Copy Markdown
Contributor Author

/label tide/merge-method-squash

@openshift-ci openshift-ci Bot added the tide/merge-method-squash Denotes a PR that should be squashed by tide when it merges. label Mar 20, 2026
@jparrill

Copy link
Copy Markdown
Contributor Author

/test unit

@sdminonne sdminonne left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Drop some questions and raise a couple of flags.

input.SSEKMSKeyId = aws.String(u.kmsKeyARN)
}

if _, err := u.client.PutObject(ctx, input); err != nil {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I'm reporting here the output of our common friend: any reason for not using transfermanager.New(s3Client) as etcd-backup

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Done! Migrated to transfermanager.New(s3Client) — consistent with etcd-backup. This gives us automatic multipart upload for files >5GB, parallel part uploads, and partial retry on failure.

Note: transfermanager.PutObjectInput doesn't support IfNoneMatch (conditional writes), but since we use timestamp-based key naming ({prefix}/{unix_seconds}.db), collisions are practically impossible. Worth the trade-off for the multipart benefits.

Comment thread etcd-upload/s3_uploader.go Outdated
return nil, fmt.Errorf("--credentials-file is required for S3 storage type")
}

cfg, err := config.LoadDefaultConfig(context.Background(),

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

context.Background() ... Gues the NewS3Uploader should take the caller context caller... (any timeout set)?
Unsure about this. Feel free to push back but happy to hear about it.
TY!

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Good catch, done! NewS3Uploader now takes ctx context.Context as its first parameter. The caller passes the context from signal.NotifyContext so cancellation propagates properly on SIGINT/SIGTERM.

Comment thread etcd-upload/s3_uploader.go Outdated

cfg, err := config.LoadDefaultConfig(context.Background(),
config.WithRegion(region),
config.WithSharedCredentialsFiles([]string{credentialsFile}),

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

is credentialsFile mandatory? Can't we fallaback to role-based? I think we do elsewhere Am I wrong?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

You're right, done! credentialsFile is now optional. When empty, it falls back to the default AWS credential chain (environment variables, shared config, EC2 instance profile, IRSA, etc.) — same pattern as etcd-backup.

Comment thread etcd-upload/etcdupload.go Outdated
@jparrill
jparrill force-pushed the CNTRLPLANE-2684 branch 2 times, most recently from 2c61a5e to e82fc3a Compare March 24, 2026 11:18
@jparrill

Copy link
Copy Markdown
Contributor Author

Addressed reviewer comments + rebase to catch Konflux fixes

@jparrill
jparrill marked this pull request as ready for review March 24, 2026 11:20
@openshift-ci openshift-ci Bot removed the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Mar 24, 2026
@openshift-ci
openshift-ci Bot requested review from bryan-cox and muraee March 24, 2026 11:20
@jparrill
jparrill requested a review from sdminonne March 24, 2026 11:30
@openshift-ci-robot

openshift-ci-robot commented Mar 24, 2026

Copy link
Copy Markdown

@jparrill: This pull request references CNTRLPLANE-2684 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the story to target the "4.22.0" version, but no target version was set.

Details

In response to this:

Summary

  • Add etcd-upload subcommand to the control-plane-operator for uploading etcd snapshots to S3 and Azure Blob Storage
  • Support conditional writes (IfNoneMatch) to prevent overwriting existing backups
  • Support server-side encryption: SSE-KMS for S3, encryption scopes for Azure
  • Azure uses DefaultAzureCredential for Managed Identity / Workload Identity support (ARO)
  • Restructure OADP integration tests under test/integration/oadp/ with cli/ and upload/ subdirectories
  • Fix Agent platform resource expectations in OADP CLI tests

Epic

CNTRLPLANE-2676 - HCPEtcdBackup CRD for OADP Integration

Dependencies

Related PRs:

Test plan

  • Unit tests for S3 uploader (6 cases)
  • Unit tests for Azure Blob uploader (6 cases)
  • Unit tests for CLI flags and factory (4 cases)
  • OADP CLI integration tests pass (all platforms)
  • Integration tests with real S3 bucket (./test/integration/oadp/run.sh upload)
  • Integration tests with real Azure Blob Storage (./test/integration/oadp/run.sh upload)

🤖 Generated with Claude Code

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@jparrill

Copy link
Copy Markdown
Contributor Author

/test e2e-azure-self-managed

2 similar comments
@jparrill

Copy link
Copy Markdown
Contributor Author

/test e2e-azure-self-managed

@jparrill

Copy link
Copy Markdown
Contributor Author

/test e2e-azure-self-managed

@openshift-ci-robot

Copy link
Copy Markdown

/retest-required

Remaining retests: 0 against base HEAD c25481f and 1 for PR HEAD 2eda006 in total

@jparrill

Copy link
Copy Markdown
Contributor Author

/retest-required

4 similar comments
@jparrill

Copy link
Copy Markdown
Contributor Author

/retest-required

@jparrill

Copy link
Copy Markdown
Contributor Author

/retest-required

@jparrill

Copy link
Copy Markdown
Contributor Author

/retest-required

@jparrill

Copy link
Copy Markdown
Contributor Author

/retest-required

@openshift-ci-robot

Copy link
Copy Markdown

/retest-required

Remaining retests: 0 against base HEAD 0ad27df and 0 for PR HEAD 2eda006 in total

@openshift-ci-robot

Copy link
Copy Markdown

/hold

Revision 2eda006 was retested 3 times: holding

@openshift-ci openshift-ci Bot added the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Mar 29, 2026
@jparrill

Copy link
Copy Markdown
Contributor Author

/hold cancel

@openshift-ci openshift-ci Bot removed the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Mar 29, 2026
@jparrill

Copy link
Copy Markdown
Contributor Author

/test e2e-azure-self-managed

@bryan-cox

Copy link
Copy Markdown
Member

#8017 (comment)

@jparrill this is going to keep failing. If you want to lgtm the PR I mentioned in Slack here, I think we can get that test suite back up.

@openshift-ci-robot

Copy link
Copy Markdown

/retest-required

Remaining retests: 0 against base HEAD 0ad27df and 2 for PR HEAD 2eda006 in total

@jparrill

Copy link
Copy Markdown
Contributor Author

@bryan-cox done

@jparrill

Copy link
Copy Markdown
Contributor Author

/retest-required

@bryan-cox

Copy link
Copy Markdown
Member

/test e2e-azure-self-managed

@openshift-ci

openshift-ci Bot commented Mar 29, 2026

Copy link
Copy Markdown
Contributor

@jparrill: all tests passed!

Full PR test history. Your PR dashboard.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

@openshift-merge-bot
openshift-merge-bot Bot merged commit 542f226 into openshift:main Mar 29, 2026
29 checks passed
@jparrill

Copy link
Copy Markdown
Contributor Author

/jira backport release-4.21

@openshift-ci-robot

Copy link
Copy Markdown

@jparrill: The following backport issues have been created:

Queuing cherrypicks to the requested branches to be created after this PR merges:
/cherrypick release-4.21

Details

In response to this:

/jira backport release-4.21

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@openshift-cherrypick-robot

Copy link
Copy Markdown

@openshift-ci-robot: Failed to get PR patch from GitHub. This PR will need to be manually cherrypicked.

Error messagestatus code 406 not one of [200], body: {"message":"Sorry, the diff exceeded the maximum number of lines (20000)","errors":[{"resource":"PullRequest","field":"diff","code":"too_large"}],"documentation_url":"https://docs.github.com/rest/pulls/pulls#get-a-pull-request","status":"406"}
Details

In response to this:

@jparrill: The following backport issues have been created:

Queuing cherrypicks to the requested branches to be created after this PR merges:
/cherrypick release-4.21

In response to this:

/jira backport release-4.21

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

mehabhalodiya pushed a commit to mehabhalodiya/hypershift that referenced this pull request Apr 13, 2026
…penshift#8017)

* build(etcd-upload): add Azure Blob Storage SDK dependency

Vendor the Azure Blob Storage SDK (azblob) required by the
etcd-upload subcommand for Azure Blob storage support.

Ref: CNTRLPLANE-2684

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Juan Manuel Parrilla Madrid <jparrill@redhat.com>

* feat(etcd-upload): add CPO subcommand for cloud storage upload

Add the etcd-upload subcommand to the control-plane-operator for
uploading etcd snapshots to S3 and Azure Blob storage. Uses the AWS
transfer manager for multipart uploads and supports SSE-KMS (S3) and
encryption scopes (Azure). Credentials are optional for S3, falling
back to the default AWS credential chain.

Ref: CNTRLPLANE-2684

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Juan Manuel Parrilla Madrid <jparrill@redhat.com>

* test(etcd-upload): add OADP integration test structure

Add integration tests for the etcd-upload subcommand covering S3 and
Azure Blob uploads with encryption. Includes a self-contained test
runner script that creates and tears down all cloud resources
automatically.

Ref: CNTRLPLANE-2684

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Juan Manuel Parrilla Madrid <jparrill@redhat.com>

* fix(etcd-upload): correct Agent platform resource in OADP CLI tests

Fix the Agent platform resource expectation from
agentclusters.infrastructure.cluster.x-k8s.io to
agentclusters.capi-provider.agent-install.openshift.io. Also make the
integration test runner self-contained with RBAC propagation retry
logic.

Ref: CNTRLPLANE-2684

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Juan Manuel Parrilla Madrid <jparrill@redhat.com>

---------

Signed-off-by: Juan Manuel Parrilla Madrid <jparrill@redhat.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
@jparrill

jparrill commented Jun 5, 2026

Copy link
Copy Markdown
Contributor Author

/jira backport release-4.21,release-4.20

@openshift-ci-robot

Copy link
Copy Markdown

@jparrill: Missing required branches for backport chain:

  • openshift-4.22 OR release-4.22,
Details

In response to this:

/jira backport release-4.21,release-4.20

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

jparrill added a commit to jparrill/hypershift that referenced this pull request Jul 13, 2026
Adjust code from PRs openshift#8010, openshift#8017, openshift#8040 to compile on release-4.21:

- etcd-upload: migrate S3TransferAPI from transfermanager v0.1 API
  (PutObject/PutObjectInput) to v0.2 API (UploadObject/UploadObjectInput)
  resolved by go mod tidy on this branch. Regenerate mock accordingly.
- etcd-backup: fix mapToTags to use url.Values for proper URL-encoding
  of S3 object tag keys/values (bug exposed by backported tests).
- go.mod/vendor: add aws-sdk-go-v2 direct dependencies (config, s3,
  transfermanager) and Azure azblob SDK required by etcd-upload, then
  run go mod tidy + go mod vendor.

Ref: CNTRLPLANE-2678

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Juan Manuel Parrilla Madrid <jparrill@redhat.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. area/control-plane-operator Indicates the PR includes changes for the control plane operator - in an OCP release area/testing Indicates the PR includes changes for e2e testing jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. lgtm Indicates that a PR is ready to be merged. tide/merge-method-squash Denotes a PR that should be squashed by tide when it merges. verified Signifies that the PR passed pre-merge verification criteria

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants