Skip to content

oadp-1.5: OADP-6765: feat(bsl): concatenate all CA certificates from BSLs and include system defaults - #1969

Merged
weshayutin merged 6 commits into
openshift:oadp-1.5from
kaovilai:OADP-6765-oadp-1.5
Sep 30, 2025
Merged

weshayutin merged 6 commits into
openshift:oadp-1.5from
kaovilai:OADP-6765-oadp-1.5

Conversation

@kaovilai

Copy link
Copy Markdown
Member
  • feat(bsl): concatenate all CA certificates from BSLs and include system defaults
  • feat(bsl): ensure BSL reconciliation preserves default field to avoid conflicts with Velero management

Why the changes were made

How to test the changes made

kaovilai and others added 2 commits September 29, 2025 08:28
…em defaults

Instead of using "first one wins" approach, now collects and concatenates all
unique CA certificates from BackupStorageLocations. Also includes system default
CA certificates when custom certificates are present.

Changes:
- Modified processCACertForBSLs() to collect all unique CA certificates
- Added deduplication logic to avoid including same certificate multiple times
- Added getSystemCACertificates() helper to retrieve system CA bundles
- System defaults are only included when custom CAs are present
- Updated tests to verify concatenation and deduplication behavior

This allows for more flexible multi-cloud/multi-endpoint configurations where
different BSLs may require different CA certificates.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
… conflicts with Velero management

Signed-off-by: Tiger Kaovilai <tkaovila@redhat.com>
@openshift-ci openshift-ci Bot added the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Sep 29, 2025
@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Sep 29, 2025
@openshift-ci

openshift-ci Bot commented Sep 29, 2025

Copy link
Copy Markdown

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-robot

openshift-ci-robot commented Sep 29, 2025 •

Copy link
Copy Markdown

@kaovilai: This pull request references OADP-6765 which is a valid jira issue.

Details

In response to this:

  • feat(bsl): concatenate all CA certificates from BSLs and include system defaults
  • feat(bsl): ensure BSL reconciliation preserves default field to avoid conflicts with Velero management

Why the changes were made

How to test the changes made

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.

@kaovilai
kaovilai marked this pull request as ready for review September 29, 2025 12:30
@openshift-ci openshift-ci Bot added approved Indicates a PR has been approved by an approver from all required OWNERS files. and removed do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. labels Sep 29, 2025
@openshift-ci
openshift-ci Bot requested review from mrnold and sseago September 29, 2025 12:30
@kaovilai

kaovilai commented Sep 29, 2025 •

Copy link
Copy Markdown
Member Author

feedback from officehours:

  • disable cacert mounting if no imagestreambackup
  • double check cacert from bsl outside dpa is also read in

@weshayutin

Copy link
Copy Markdown
Contributor

@kaovilai

oc oadp backup describe parks1-mino-1 --details
Name:         parks1-mino-1
Namespace:    openshift-adp
Labels:       velero.io/storage-location=minio
Annotations:  velero.io/resource-timeout=10m0s
              velero.io/source-cluster-k8s-gitversion=v1.33.4
              velero.io/source-cluster-k8s-major-version=1
              velero.io/source-cluster-k8s-minor-version=33

Phase:  WaitingForPluginOperationsPartiallyFailed

Warnings:  <error getting warnings: Get "https://ec2-34-211-145-1.us-west-2.compute.amazonaws.com:9000/test1/velero/backups/parks1-mino-1/parks1-mino-1-results.gz?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=oadpteamminio%2F20250929%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20250929T140237Z&X-Amz-Expires=600&X-Amz-SignedHeaders=host&x-id=GetObject&X-Amz-Signature=95ab99627222c852eb0b8f5b82dd52033be5ac277a17bbaa7e43ab185d13c4da": tls: failed to verify certificate: x509: certificate signed by unknown authority>

Errors:  <error getting errors: Get "https://ec2-34-211-145-1.us-west-2.compute.amazonaws.com:9000/test1/velero/backups/parks1-mino-1/parks1-mino-1-results.gz?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=oadpteamminio%2F20250929%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20250929T140237Z&X-Amz-Expires=600&X-Amz-SignedHeaders=host&x-id=GetObject&X-Amz-Signature=95ab99627222c852eb0b8f5b82dd52033be5ac277a17bbaa7e43ab185d13c4da": tls: failed to verify certificate: x509: certificate signed by unknown authority>

Namespaces:
  Included:  parks-app
  Excluded:  <none>

Resources:
  Included:        *
  Excluded:        <none>
  Cluster-scoped:  auto

Label selector:  <none>

Or label selector:  <none>

Storage Location:  minio

Velero-Native Snapshot PVs:  auto
Snapshot Move Data:          true
Data Mover:                  velero

TTL:  720h0m0s

CSISnapshotTimeout:    10m0s
ItemOperationTimeout:  4h0m0s

Hooks:  <none>

Backup Format Version:  1.1.0

Started:    2025-09-29 08:01:58 -0600 MDT
Completed:  <n/a>

Expiration:  2025-10-29 08:01:58 -0600 MDT

Total items to be backed up:  93
Items backed up:              93

Backup Item Operations:  <error getting operation info: Get "https://ec2-34-211-145-1.us-west-2.compute.amazonaws.com:9000/test1/velero/backups/parks1-mino-1/parks1-mino-1-itemoperations.json.gz?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=oadpteamminio%2F20250929%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20250929T140238Z&X-Amz-Expires=600&X-Amz-SignedHeaders=host&x-id=GetObject&X-Amz-Signature=afc640cebb0e9a0228a041d7c4f2dab5e78efeebec31d3b2be7383c3c01864a0": tls: failed to verify certificate: x509: certificate signed by unknown authority>
Resource List:           <error getting backup resource list: Get "https://ec2-34-211-145-1.us-west-2.compute.amazonaws.com:9000/test1/velero/backups/parks1-mino-1/parks1-mino-1-resource-list.json.gz?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=oadpteamminio%2F20250929%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20250929T140238Z&X-Amz-Expires=600&X-Amz-SignedHeaders=host&x-id=GetObject&X-Amz-Signature=375282debc6a910a33f69c01b47e10a517ba6d40c7c70706e8617a088d5376f5": tls: failed to verify certificate: x509: certificate signed by unknown authority>

Backup Volumes:
  <error getting backup volume info: Get "https://ec2-34-211-145-1.us-west-2.compute.amazonaws.com:9000/test1/velero/backups/parks1-mino-1/parks1-mino-1-volumeinfo.json.gz?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=oadpteamminio%2F20250929%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20250929T140238Z&X-Amz-Expires=600&X-Amz-SignedHeaders=host&x-id=GetObject&X-Amz-Signature=2c37f38e0bae05f8aae9465b85393b4e5317833393d623e0d535147732c46db3": tls: failed to verify certificate: x509: certificate signed by unknown authority>

HooksAttempted:  0
HooksFailed:     0
apiVersion: oadp.openshift.io/v1alpha1
kind: DataProtectionApplication
metadata:
  creationTimestamp: "2025-09-29T13:35:50Z"
  generation: 5
  name: dpa-sample
  namespace: openshift-adp
  resourceVersion: "392491"
  uid: 8792570c-d609-4028-b2a9-769a134860b0
spec:
  backupImages: true
  backupLocations:
  - name: guardian-minio
    velero:
      accessMode: ReadWrite
      backupSyncPeriod: 30s
      config:
        region: us-west-2
        s3ForcePathStyle: "true"
        s3Url: https://s3.us-west-2.amazonaws.com
      credential:
        key: cloud
        name: cloud-credentials
      default: true
      objectStorage:
        bucket: cvpbucket3uswest2
        prefix: velero
      provider: aws
  configuration:
    nodeAgent:
      enable: true
      uploaderType: kopia
    velero:
      defaultPlugins:
      - kubevirt
      - csi
      - openshift
      - aws
      - hypershift
      disableFsBackup: false
  logFormat: text
  nonAdmin:
    enable: false
  snapshotLocations:
  - velero:
      config:
        profile: default
        region: us-west-2
      provider: aws
status:
  conditions:
  - lastTransitionTime: "2025-09-29T13:35:50Z"
    message: Reconcile complete
    reason: Complete
    status: "True"
    type: Reconciled
whayutin@fedora:~/OPENSHIFT/git/KONVEYOR/mig-demo-apps/apps/parks-app$ oc get bsl
NAME             PHASE       LAST VALIDATED   AGE   DEFAULT
guardian-minio   Available   20s              18m   true
minio            Available   40s              20m   false
whayutin@fedora:~/OPENSHIFT/git/KONVEYOR/mig-demo-apps/apps/parks-app$ oc get bsl minio 
NAME    PHASE       LAST VALIDATED   AGE   DEFAULT
minio   Available   45s              20m   false
whayutin@fedora:~/OPENSHIFT/git/KONVEYOR/mig-demo-apps/apps/parks-app$ oc get bsl minio  -o yaml
apiVersion: velero.io/v1
kind: BackupStorageLocation
metadata:
  creationTimestamp: "2025-09-29T13:43:11Z"
  generation: 42
  name: minio
  namespace: openshift-adp
  resourceVersion: "393557"
  uid: effd7170-be51-4dca-a96a-7e6ca5b4e30b
spec:
  config:
    checksumAlgorithm: ""
    profile: default
    publicUrl: https://ec2-34-211-145-1.us-west-2.compute.amazonaws.com:9000
    region: us-west-2
    s3ForcePathStyle: "true"
    s3Url: https://ec2-34-211-145-1.us-west-2.compute.amazonaws.com:9000
  credential:
    key: cloud
    name: minio-credentials
  default: false
  objectStorage:
    bucket: test1
    caCert: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVVENDQWZpZ0F3SUJBZ0lRSUhiYytvcVlINnBMYVVRQURtZmhrREFLQmdncWhrak9QUVFEQWpCZk1Sd3cKR2dZRFZRUUtFeE5EWlhKMFoyVnVJRVJsZG1Wc2IzQnRaVzUwTVQ4d1BRWURWUVFMRERadGFXNXBieTExYzJWeQpRR2x3TFRFM01pMHpNUzB4TWkweE9UTXVkWE10ZDJWemRDMHlMbU52YlhCMWRHVXVhVzUwWlhKdVlXd3dIaGNOCk1qVXdPVEEwTVRZMU1UUTNXaGNOTWpZd09UQTBNVFkxTVRRM1dqQmZNUnd3R2dZRFZRUUtFeE5EWlhKMFoyVnUKSUVSbGRtVnNiM0J0Wlc1ME1UOHdQUVlEVlFRTEREWnRhVzVwYnkxMWMyVnlRR2x3TFRFM01pMHpNUzB4TWkweApPVE11ZFhNdGQyVnpkQzB5TG1OdmJYQjFkR1V1YVc1MFpYSnVZV3d3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPClBRTUJCd05DQUFSalBSc0g1bi9JdUVzdjhmVXZXMVBiaDk2SCtONkE3NUxuUlZ0TG55aEpjRnB4dmY4VDFidkgKNGRyYTRMKzRWOFhsZ3JWdDFyNGNWYmR5M1hWWDJvV1ZvNEdWTUlHU01BNEdBMVVkRHdFQi93UUVBd0lDcERBVApCZ05WSFNVRUREQUtCZ2dyQmdFRkJRY0RBVEFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQjBHQTFVZERnUVdCQlNSCmtYSjc4UDZKSVJUb0N5R3BjWWo1d2h3RnFqQTdCZ05WSFJFRU5EQXlnakJsWXpJdE16UXRNakV4TFRFME5TMHgKTG5WekxYZGxjM1F0TWk1amIyMXdkWFJsTG1GdFlYcHZibUYzY3k1amIyMHdDZ1lJS29aSXpqMEVBd0lEUndBdwpSQUlnRzhEQVdpWCttUWl5TW9HT1pCRmRrZmpkckRxWjQ3dXdqZkpEV1g0WUhQY0NJR3NsQzc5R0RVSlVEK1FjCkR0TnkwSXVGWjNsK3BCdlhIc2pZaGpTdHVDQSsKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
    prefix: velero
  provider: aws
status:
  lastSyncedTime: "2025-09-29T14:03:02Z"
  lastValidationTime: "2025-09-29T14:03:12Z"
  phase: Available

…d tests for validation

Signed-off-by: Tiger Kaovilai <tkaovila@redhat.com>
Comment on lines +1043 to +1049
caPaths := []string{
"/etc/ssl/certs/ca-certificates.crt", // Debian/Ubuntu
"/etc/pki/tls/certs/ca-bundle.crt", // RHEL/CentOS/Fedora
"/etc/ssl/ca-bundle.pem", // OpenSSL
"/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem", // RHEL 7+
"/etc/ssl/cert.pem", // Alpine/OpenSSL
}

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

"/etc/pki/tls/certs/ca-bundle.crt"

works for wes oadp controller manager. softlinked to "/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem"

We can consider just this single path if it has all we need for normal aws operations.

@weshayutin

Copy link
Copy Markdown
Contributor
whayutin@fedora:~/OPENSHIFT/git/OADP/oadp-operator$ oc oadp backup get
NAME                     STATUS      ERRORS   WARNINGS   CREATED                         EXPIRES   STORAGE LOCATION   SELECTOR
guardian-minio-mysql-1   Completed   0        0          2025-09-29 10:45:56 -0600 MDT   29d       guardian-minio     <none>
minio-mysql-1            Completed   0        0          2025-09-29 11:01:14 -0600 MDT   29d       minio              <none>
parks1-guardian-mino-1   Completed   0        0          2025-09-29 10:40:51 -0600 MDT   29d       guardian-minio     <none>
parks1-minio-1           Completed   0        0          2025-09-29 10:43:32 -0600 MDT   29d       minio              <none>
whayutin@fedora:~/OPENSHIFT/git/OADP/oadp-operator$ oc oadp restore get
NAME                     BACKUP                   STATUS      STARTED                         COMPLETED                       ERRORS   WARNINGS   CREATED                         SELECTOR
guardian-minio-mysql-1   guardian-minio-mysql-1   Completed   2025-09-29 11:15:20 -0600 MDT   2025-09-29 11:16:09 -0600 MDT   0        6          2025-09-29 11:15:20 -0600 MDT   <none>
minio-mysql-1            minio-mysql-1            Completed   2025-09-29 11:18:48 -0600 MDT   2025-09-29 11:19:29 -0600 MDT   0        7          2025-09-29 11:18:47 -0600 MDT   <none>
parks1-minio-1           parks1-minio-1           Completed   2025-09-29 11:12:23 -0600 MDT   2025-09-29 11:12:59 -0600 MDT   0        7          2025-09-29 11:12:23 -0600 MDT   <none>
whayutin@fedora:~/OPENSHIFT/git/OADP/oadp-operator$ 
whayutin@fedora:~/OPENSHIFT/git/OADP/oadp-operator$ 
whayutin@fedora:~/OPENSHIFT/git/OADP/oadp-operator$ oc get dpa dpa-sample -o yaml
apiVersion: oadp.openshift.io/v1alpha1
kind: DataProtectionApplication
metadata:
  creationTimestamp: "2025-09-29T16:36:37Z"
  generation: 1
  name: dpa-sample
  namespace: openshift-adp
  resourceVersion: "437739"
  uid: 416e5f65-ac64-47bd-92a8-f24b09f45956
spec:
  backupImages: true
  backupLocations:
  - name: guardian-minio
    velero:
      accessMode: ReadWrite
      backupSyncPeriod: 30s
      config:
        region: us-west-2
        s3ForcePathStyle: "true"
        s3Url: https://s3.us-west-2.amazonaws.com
      credential:
        key: cloud
        name: cloud-credentials
      default: true
      objectStorage:
        bucket: cvpbucket3uswest2
        prefix: velero
      provider: aws
  configuration:
    nodeAgent:
      enable: true
      uploaderType: kopia
    velero:
      defaultPlugins:
      - kubevirt
      - csi
      - openshift
      - aws
      - hypershift
      disableFsBackup: false
  logFormat: text
  nonAdmin:
    enable: false
  snapshotLocations:
  - velero:
      config:
        profile: default
        region: us-west-2
      provider: aws
status:
  conditions:
  - lastTransitionTime: "2025-09-29T16:37:49Z"
    message: Reconcile complete
    reason: Complete
    status: "True"
    type: Reconciled
whayutin@fedora:~/OPENSHIFT/git/OADP/oadp-operator$ oc get bsl
NAME             PHASE       LAST VALIDATED   AGE   DEFAULT
guardian-minio   Available   31s              42m   true
minio            Available   31s              42m   false
whayutin@fedora:~/OPENSHIFT/git/OADP/oadp-operator$ oc get bsl minio -o yaml
apiVersion: velero.io/v1
kind: BackupStorageLocation
metadata:
  creationTimestamp: "2025-09-29T16:38:21Z"
  generation: 86
  labels:
    app.kubernetes.io/component: bsl
  name: minio
  namespace: openshift-adp
  resourceVersion: "450567"
  uid: da2c261e-c177-43ed-9d57-eebd77eb4891
spec:
  config:
    checksumAlgorithm: ""
    profile: default
    publicUrl: https://et-2.compute.amazonaws.com:9000
    region: us-west-2
    s3ForcePathStyle: "true"
    s3Url: https://ec2-3e.amazonaws.com:9000
  credential:
    key: cloud
    name: minio-credentials
  default: false
  objectStorage:
    bucket: test1
    caCert: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVVENDQWZpZ0F3SUJBZ0lRSUhiYytvcVlINnBMYVVRQURtZmhrREFLQmdnc1lJS29aSXpqMEVBd0lEUndBdwpSQUlnRzhEQVdpWCttUWl5TW9HT1pCRmRrZmpkckRxWjQ3dXdqZkpEV1g0WUhQY0NJR3NsQzc5R0RVSlVEK1FjCkR0TnkwSXVGWjNsK3BCdlhIc2pZaGpTdHVDQSsKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
    prefix: velero
  provider: aws
status:
  lastSyncedTime: "2025-09-29T17:20:09Z"
  lastValidationTime: "2025-09-29T17:20:09Z"
  phase: Available
whayutin@fedora:~/OPENSHIFT/git/OADP/oadp-operator$ 

Comment thread internal/controller/bsl.go
sseago
sseago previously approved these changes Sep 29, 2025
@kaovilai
kaovilai dismissed stale reviews from sseago and shubham-pampattiwar via 964b4ca September 29, 2025 18:24
sseago
sseago previously approved these changes Sep 29, 2025
weshayutin
weshayutin previously approved these changes Sep 29, 2025

@weshayutin weshayutin 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.

/LGTM

@openshift-ci openshift-ci Bot added the lgtm Indicates that a PR is ready to be merged. label Sep 29, 2025
@kaovilai

Copy link
Copy Markdown
Member Author

/retest

@openshift-ci-robot

Copy link
Copy Markdown

/retest-required

Remaining retests: 0 against base HEAD 7f0ad66 and 2 for PR HEAD 964b4ca in total

@weshayutin

Copy link
Copy Markdown
Contributor

tested w/ multiple apps, mysql-persistent and parks app w/ image streams etc.
backup and restore operations work on both aws s3 and minio when configured together as ibm fusion has it. :)
Seems good to go to me :)

@kaovilai

Copy link
Copy Markdown
Member Author
Summarizing 1 Failure:
  [FAIL] Multiple BSL with custom CA cert tests BSL CA certificate handling with multiple BSLs [It] three BSLs with backupImages=false (no CA cert handling)
  /go/src/github.com/openshift/oadp-operator/tests/e2e/backup_restore_suite_test.go:712
Ran 28 of 40 Specs in 5180.662 seconds
FAIL! -- 27 Passed | 1 Failed | 0 Pending | 12 Skipped

one test case failed. checking if flake

@openshift-ci openshift-ci Bot removed the lgtm Indicates that a PR is ready to be merged. label Sep 29, 2025
@openshift-ci

openshift-ci Bot commented Sep 29, 2025

Copy link
Copy Markdown

New changes are detected. LGTM label has been removed.

@weshayutin

Copy link
Copy Markdown
Contributor

@kaovilai hrm..

…e with e2e

Signed-off-by: Tiger Kaovilai <tkaovila@redhat.com>
…e test files

Signed-off-by: Tiger Kaovilai <tkaovila@redhat.com>
@kaovilai

Copy link
Copy Markdown
Member Author

The added e2e cases is fixed.

@openshift-ci

openshift-ci Bot commented Sep 30, 2025

Copy link
Copy Markdown

@kaovilai: 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.

@weshayutin

Copy link
Copy Markdown
Contributor

testing this again.. @kaovilai thanks for having it lined up and passing.

@kaovilai

Copy link
Copy Markdown
Member Author

I didn't change the single thing about the controller code since your last test so I expect same results

@weshayutin

Copy link
Copy Markdown
Contributor

ran through various tests again w/ multiple bsl and certs

whayutin@fedora:~/OPENSHIFT/git/OADP/mig-demo-apps/apps/parks-app$ oc oadp backup get
NAME                     STATUS      ERRORS   WARNINGS   CREATED                         EXPIRES   STORAGE LOCATION   SELECTOR
guardian-minio-mysql-1   Completed   0        0          2025-09-30 08:44:18 -0600 MDT   29d       guardian-minio     <none>
minio-mysql-1            Completed   0        0          2025-09-30 08:44:32 -0600 MDT   29d       minio              <none>
parks-app-backup-2       Completed   0        0          2025-09-30 08:21:13 -0600 MDT   29d       minio              <none>
whayutin@fedora:~/OPENSHIFT/git/OADP/mig-demo-apps/apps/parks-app$ 

@kaovilai kaovilai left a comment •

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Consider cert rotation, configmap rollout/updates to velero deployment.
kubernetes/kubernetes#22368
says to relink deployment to new configmap to propagate cert change

@weshayutin weshayutin 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.

/approve /LGTM

@openshift-ci

openshift-ci Bot commented Sep 30, 2025

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: kaovilai, shubham-pampattiwar, weshayutin

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:
  • OWNERS [kaovilai,shubham-pampattiwar]

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@weshayutin
weshayutin merged commit dcead30 into openshift:oadp-1.5 Sep 30, 2025
12 of 13 checks passed
@kaovilai

Copy link
Copy Markdown
Member Author

/cherry-pick oadp-dev

@openshift-cherrypick-robot

Copy link
Copy Markdown
Contributor

@kaovilai: new pull request created: #1972

Details

In response to this:

/cherry-pick oadp-dev

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.

@sseago

sseago commented Sep 22, 2026

Copy link
Copy Markdown
Contributor

/cherry-pick oadp-1.4

@openshift-cherrypick-robot

Copy link
Copy Markdown
Contributor

@sseago: #1969 failed to apply on top of branch "oadp-1.4":

Applying: feat(bsl): concatenate all CA certificates from BSLs and include system defaults
Using index info to reconstruct a base tree...
A	internal/controller/bsl.go
A	internal/controller/bsl_test.go
Falling back to patching base and 3-way merge...
Auto-merging controllers/bsl_test.go
CONFLICT (content): Merge conflict in controllers/bsl_test.go
CONFLICT (modify/delete): internal/controller/bsl.go deleted in HEAD and modified in feat(bsl): concatenate all CA certificates from BSLs and include system defaults.  Version feat(bsl): concatenate all CA certificates from BSLs and include system defaults of internal/controller/bsl.go left in tree.
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
hint: When you have resolved this problem, run "git am --continue".
hint: If you prefer to skip this patch, run "git am --skip" instead.
hint: To restore the original branch and stop patching, run "git am --abort".
hint: Disable this message with "git config set advice.mergeConflict false"
Patch failed at 0001 feat(bsl): concatenate all CA certificates from BSLs and include system defaults

Details

In response to this:

/cherry-pick oadp-1.4

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.

redhat-chai-bot added a commit to redhat-chai-bot/oadp-operator that referenced this pull request Sep 23, 2026
Restore gofmt import ordering in controllers/bsl_test.go. The cherry-pick
of openshift#1969 left github.com/stretchr/testify/assert out of gofmt import
order, which makes `make test` fail at the fmt-isupdated gate (CI runs
`make test submit-coverage`).

Combined with the DPA/CloudStorage namespace alignment already on this
branch, TestProcessCACertForBSLs now passes and `make test` is green
(unit tests, fmt, api, and bundle checks all pass).

Signed-off-by: Chai Bot <chai-bot@redhat.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
openshift-merge-bot Bot pushed a commit that referenced this pull request Oct 5, 2026
…BSLs and include system defaults (#1969)

* feat(bsl): concatenate all CA certificates from BSLs and include system defaults

Instead of using "first one wins" approach, now collects and concatenates all
unique CA certificates from BackupStorageLocations. Also includes system default
CA certificates when custom certificates are present.

Changes:
- Modified processCACertForBSLs() to collect all unique CA certificates
- Added deduplication logic to avoid including same certificate multiple times
- Added getSystemCACertificates() helper to retrieve system CA bundles
- System defaults are only included when custom CAs are present
- Updated tests to verify concatenation and deduplication behavior

This allows for more flexible multi-cloud/multi-endpoint configurations where
different BSLs may require different CA certificates.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* feat(bsl): ensure BSL reconciliation preserves default field to avoid conflicts with Velero management

Signed-off-by: Tiger Kaovilai <tkaovila@redhat.com>

* feat(bsl): enhance CA certificate processing for multiple BSLs and add tests for validation

Signed-off-by: Tiger Kaovilai <tkaovila@redhat.com>

* PEM verify + `podman run -v `pwd`:`pwd` -w `pwd` quay.io/konveyor/builder:ubi9-v1.23 sh -c "make lint-fix"`

Signed-off-by: Tiger Kaovilai <tkaovila@redhat.com>

* refactor(nginx): reorganize deployment YAML structure to be compatible with e2e

Signed-off-by: Tiger Kaovilai <tkaovila@redhat.com>

* feat(e2e): add CA certificate handling for default e2e BSL in multiple test files

Signed-off-by: Tiger Kaovilai <tkaovila@redhat.com>

---------

Signed-off-by: Tiger Kaovilai <tkaovila@redhat.com>
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit dcead30)
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. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants