Commit Graph
8 Commits
Author SHA1 Message Date
Shubham Pampattiwar f457a95802 Remove unused DeleteSecretIfAny/DeleteConfigMapIfAny helpers
These single-object delete helpers were introduced earlier but are no
longer called in production code: DeleteSecretsWithLabel and
DeleteConfigMapsWithLabel now delete inline with UID preconditions.
Remove the dead functions and their tests.

Signed-off-by: Shubham Pampattiwar <spampatt@redhat.com>
2026-08-18 10:28:27 -07:00
Shubham Pampattiwar e498c5f79b Address review: generic labels param and copy placement
- Make CopySecret/CopyConfigMap accept a generic labels map instead of
  hardcoding the backup-pvc-secret label, aligning with the generic
  DeleteSecretsWithLabel helper. Move the BackupPVCSecretLabel constant
  from util/kube to the exposer package where it is used.
- Move the secret/configmap copy in Expose() to after
  WaitVolumeSnapshotReady and before createBackupVS. That is the most
  likely failure point, and nothing needs cleanup before it.

Signed-off-by: Shubham Pampattiwar <spampatt@redhat.com>
2026-08-18 10:28:27 -07:00
Shubham Pampattiwar 7db0b391ff Address review feedback: ownership, BinaryData, preconditions, placement
- Fix premature deletion of shared secrets/configmaps: check owner label
  in addition to data equality. Same data + different owner is now a
  collision, preventing one DataUpload's CleanUp from removing resources
  another DataUpload is still using.
- Copy BinaryData in CopyConfigMap and include it in the equality check,
  so configmaps with binary payloads (e.g., CA bundles) are not silently
  truncated.
- Add UID preconditions to DeleteSecretsWithLabel and
  DeleteConfigMapsWithLabel to avoid TOCTOU races where a recreated
  object with the same name could be deleted.
- Move secret/configmap copy to the beginning of Expose(), before any
  intermediate objects are created, so failure doesn't require cleanup.

Signed-off-by: Shubham Pampattiwar <spampatt@redhat.com>
2026-08-18 10:28:27 -07:00
Shubham Pampattiwar c15cf084e3 Add configmap copy support and move secret copy after accept
- Add ConfigMapNames field to BackupPVC config for copying tenant
  configmaps (e.g., ceph-csi-kms-config with Vault connection overrides)
- Add CopyConfigMap, DeleteConfigMapIfAny, DeleteConfigMapsWithLabel
  utilities mirroring the secret copy functions
- Move secret/configmap copy after acceptDataUpload() so only the
  accepting node handles it, avoiding multi-node contest
- Clean up copied configmaps in CleanUp() alongside secrets

Signed-off-by: Shubham Pampattiwar <spampatt@redhat.com>
2026-08-18 10:28:27 -07:00
Shubham Pampattiwar f91f669e77 Fix linter issues in secret utilities
- Fix import ordering in test file (gofmt)
- Add nolint:gosec for BackupPVCSecretLabel constant (not a credential)
- Use assert.Error instead of assert.True(err != nil) (testifylint)

Signed-off-by: Shubham Pampattiwar <spampatt@redhat.com>
2026-08-18 10:28:27 -07:00
Shubham Pampattiwar f65652bfc3 Add secret copy utilities for backup PVC provisioning
Add CopySecret, DeleteSecretIfAny, and DeleteSecretsWithLabel utilities
for copying namespace-scoped secrets to the Velero namespace during
datamover backup PVC creation.

CopySecret handles three cases:
- Secret does not exist in target: copies it with a tracking label
- Secret exists with same data: no-op (same source namespace)
- Secret exists with different data: returns ErrSecretCollision so the
  caller can requeue

Signed-off-by: Shubham Pampattiwar <spampatt@redhat.com>
2026-08-18 10:28:27 -07:00
Xun Jiang 49b670a791 Replace github.com/pkg/errors by github.com/cockroachdb/errors
Change errors.Cause to errors.Is, because github.com/cockroachdb/errors
New() function create a error with error stack with depth 1, but
github.com/pkg/errors's New() function create error with no depth.

Signed-off-by: Xun Jiang <xun.jiang@broadcom.com>
2026-06-10 15:55:57 +08:00
Bridget McErleanandGitHub 9dbd238c89 Use controller-runtime client to get restic secrets (#3320)
* Use kubebuilder client for fetching restic secrets

Instead of using a SecretInformer for fetching secrets for restic, use
the cached client provided by the controller-runtime manager.

In order to use this client, the scheme for Secrets must be added to the
scheme used by the manager so this is added when creating the manager in
both the velero and restic servers.

This change also refactors some of the tests to add a shared utility for
creating a fake controller-runtime client which is now used among all
tests which use that client. This has been added to ensure that all
tests use the same client with the same scheme.

Signed-off-by: Bridget McErlean <bmcerlean@vmware.com>

* Add builder for SecretKeySelector

Signed-off-by: Bridget McErlean <bmcerlean@vmware.com>
2021-02-18 10:30:52 -08:00