From 9f1cbb7dce993b80be935ca02e37f09aea49d349 Mon Sep 17 00:00:00 2001 From: Tiger Kaovilai Date: Thu, 6 Aug 2026 11:14:09 -0400 Subject: [PATCH 1/9] Add unit-test presubmit for kdm-controller/kdm-plugin oadp-dev MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit migtools/kubevirt-datamover-controller and migtools/kubevirt-datamover-plugin (oadp-dev branch) had zero CI test coverage — only image builds. Both ship a self-contained `make test` (envtest for the controller, plain go test for the plugin), so wire that up as a standard unit-test presubmit. disable_sparse_checkout is required: without it prowgen defaults these repos to a Dockerfile-only sparse checkout (fine for the image-build job, but it starves `make test` of the Makefile/go source it needs). Partial step toward openshift/oadp-operator#1832 (Group A2: controllers reconciled by the operator, gated on a DPA feature flag). The harder half — installing oadp-operator via OLM against the PR-built kdm image and running its e2e suite — is blocked on there being no reusable oadp-dev catalog/index image (oadp-operator's ci-index is built ephemeral, per-PR, and never promoted), so that part isn't in this PR. Signed-off-by: Tiger Kaovilai --- ...ubevirt-datamover-controller-oadp-dev.yaml | 13 ++++ ...ls-kubevirt-datamover-plugin-oadp-dev.yaml | 13 ++++ ...mover-controller-oadp-dev-postsubmits.yaml | 4 +- ...amover-controller-oadp-dev-presubmits.yaml | 76 ++++++++++++++++++- ...datamover-plugin-oadp-dev-postsubmits.yaml | 4 +- ...-datamover-plugin-oadp-dev-presubmits.yaml | 76 ++++++++++++++++++- 6 files changed, 174 insertions(+), 12 deletions(-) diff --git a/ci-operator/config/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev.yaml b/ci-operator/config/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev.yaml index 6cd5562fe088b..dab925e5feef8 100644 --- a/ci-operator/config/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev.yaml +++ b/ci-operator/config/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev.yaml @@ -13,6 +13,8 @@ promotion: to: - namespace: konveyor tag: oadp-dev +prowgen: + disable_sparse_checkout: true resources: '*': limits: @@ -20,6 +22,17 @@ resources: requests: cpu: 100m memory: 200Mi +tests: +- as: unit-test + steps: + test: + - as: unit + commands: make test + from: src + resources: + requests: + cpu: 100m + memory: 200Mi zz_generated_metadata: branch: oadp-dev org: migtools diff --git a/ci-operator/config/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev.yaml b/ci-operator/config/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev.yaml index 3fb476682384d..b84e25be559f7 100644 --- a/ci-operator/config/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev.yaml +++ b/ci-operator/config/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev.yaml @@ -13,6 +13,8 @@ promotion: to: - namespace: konveyor tag: oadp-dev +prowgen: + disable_sparse_checkout: true resources: '*': limits: @@ -20,6 +22,17 @@ resources: requests: cpu: 100m memory: 200Mi +tests: +- as: unit-test + steps: + test: + - as: unit + commands: make test + from: src + resources: + requests: + cpu: 100m + memory: 200Mi zz_generated_metadata: branch: oadp-dev org: migtools diff --git a/ci-operator/jobs/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev-postsubmits.yaml b/ci-operator/jobs/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev-postsubmits.yaml index a01715b010015..90120dd5a6651 100644 --- a/ci-operator/jobs/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev-postsubmits.yaml +++ b/ci-operator/jobs/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev-postsubmits.yaml @@ -6,9 +6,7 @@ postsubmits: - ^oadp-dev$ cluster: build03 decorate: true - decoration_config: - sparse_checkout_files: - - Dockerfile + decoration_config: {} labels: capability/arm64: arm64 ci-operator.openshift.io/is-promotion: "true" diff --git a/ci-operator/jobs/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev-presubmits.yaml b/ci-operator/jobs/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev-presubmits.yaml index 24990c860ac38..b2400b3f768d6 100644 --- a/ci-operator/jobs/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev-presubmits.yaml +++ b/ci-operator/jobs/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev-presubmits.yaml @@ -8,9 +8,7 @@ presubmits: cluster: build01 context: ci/prow/images decorate: true - decoration_config: - sparse_checkout_files: - - Dockerfile + decoration_config: {} labels: capability/arm64: arm64 ci.openshift.io/generator: prowgen @@ -57,3 +55,75 @@ presubmits: secret: secretName: result-aggregator trigger: (?m)^/test( | .* )images,?($|\s.*) + - agent: kubernetes + always_run: true + branches: + - ^oadp-dev$ + - ^oadp-dev- + cluster: build13 + context: ci/prow/unit-test + decorate: true + decoration_config: {} + labels: + ci.openshift.io/generator: prowgen + pj-rehearse.openshift.io/can-be-rehearsed: "true" + name: pull-ci-migtools-kubevirt-datamover-controller-oadp-dev-unit-test + rerun_command: /test unit-test + spec: + containers: + - args: + - --gcs-upload-secret=/secrets/gcs/service-account.json + - --image-import-pull-secret=/etc/pull-secret/.dockerconfigjson + - --lease-server-credentials-file=/etc/boskos/credentials + - --report-credentials-file=/etc/report/credentials + - --target=unit-test + command: + - ci-operator + env: + - name: HTTP_SERVER_IP + valueFrom: + fieldRef: + fieldPath: status.podIP + image: quay-proxy.ci.openshift.org/openshift/ci:ci_ci-operator_latest + imagePullPolicy: Always + name: "" + ports: + - containerPort: 8080 + name: http + resources: + requests: + cpu: 10m + volumeMounts: + - mountPath: /etc/boskos + name: boskos + readOnly: true + - mountPath: /secrets/gcs + name: gcs-credentials + readOnly: true + - mountPath: /secrets/manifest-tool + name: manifest-tool-local-pusher + readOnly: true + - mountPath: /etc/pull-secret + name: pull-secret + readOnly: true + - mountPath: /etc/report + name: result-aggregator + readOnly: true + serviceAccountName: ci-operator + volumes: + - name: boskos + secret: + items: + - key: credentials + path: credentials + secretName: boskos-credentials + - name: manifest-tool-local-pusher + secret: + secretName: manifest-tool-local-pusher + - name: pull-secret + secret: + secretName: registry-pull-credentials + - name: result-aggregator + secret: + secretName: result-aggregator + trigger: (?m)^/test( | .* )unit-test,?($|\s.*) diff --git a/ci-operator/jobs/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev-postsubmits.yaml b/ci-operator/jobs/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev-postsubmits.yaml index 80bcdb3fa8b48..7275581c7d2fe 100644 --- a/ci-operator/jobs/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev-postsubmits.yaml +++ b/ci-operator/jobs/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev-postsubmits.yaml @@ -6,9 +6,7 @@ postsubmits: - ^oadp-dev$ cluster: build10 decorate: true - decoration_config: - sparse_checkout_files: - - Dockerfile + decoration_config: {} labels: capability/arm64: arm64 ci-operator.openshift.io/is-promotion: "true" diff --git a/ci-operator/jobs/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev-presubmits.yaml b/ci-operator/jobs/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev-presubmits.yaml index eb598fe505c7a..9b2eba7860eb2 100644 --- a/ci-operator/jobs/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev-presubmits.yaml +++ b/ci-operator/jobs/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev-presubmits.yaml @@ -8,9 +8,7 @@ presubmits: cluster: build09 context: ci/prow/images decorate: true - decoration_config: - sparse_checkout_files: - - Dockerfile + decoration_config: {} labels: capability/arm64: arm64 ci.openshift.io/generator: prowgen @@ -57,3 +55,75 @@ presubmits: secret: secretName: result-aggregator trigger: (?m)^/test( | .* )images,?($|\s.*) + - agent: kubernetes + always_run: true + branches: + - ^oadp-dev$ + - ^oadp-dev- + cluster: build13 + context: ci/prow/unit-test + decorate: true + decoration_config: {} + labels: + ci.openshift.io/generator: prowgen + pj-rehearse.openshift.io/can-be-rehearsed: "true" + name: pull-ci-migtools-kubevirt-datamover-plugin-oadp-dev-unit-test + rerun_command: /test unit-test + spec: + containers: + - args: + - --gcs-upload-secret=/secrets/gcs/service-account.json + - --image-import-pull-secret=/etc/pull-secret/.dockerconfigjson + - --lease-server-credentials-file=/etc/boskos/credentials + - --report-credentials-file=/etc/report/credentials + - --target=unit-test + command: + - ci-operator + env: + - name: HTTP_SERVER_IP + valueFrom: + fieldRef: + fieldPath: status.podIP + image: quay-proxy.ci.openshift.org/openshift/ci:ci_ci-operator_latest + imagePullPolicy: Always + name: "" + ports: + - containerPort: 8080 + name: http + resources: + requests: + cpu: 10m + volumeMounts: + - mountPath: /etc/boskos + name: boskos + readOnly: true + - mountPath: /secrets/gcs + name: gcs-credentials + readOnly: true + - mountPath: /secrets/manifest-tool + name: manifest-tool-local-pusher + readOnly: true + - mountPath: /etc/pull-secret + name: pull-secret + readOnly: true + - mountPath: /etc/report + name: result-aggregator + readOnly: true + serviceAccountName: ci-operator + volumes: + - name: boskos + secret: + items: + - key: credentials + path: credentials + secretName: boskos-credentials + - name: manifest-tool-local-pusher + secret: + secretName: manifest-tool-local-pusher + - name: pull-secret + secret: + secretName: registry-pull-credentials + - name: result-aggregator + secret: + secretName: result-aggregator + trigger: (?m)^/test( | .* )unit-test,?($|\s.*) From 4f16f3f790ce4bd8a69e605fc60eb916b33660ef Mon Sep 17 00:00:00 2001 From: Tiger Kaovilai Date: Thu, 6 Aug 2026 14:33:20 -0400 Subject: [PATCH 2/9] Replace unit-test with real oadp-operator e2e for kdm-controller/plugin MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The unit-test presubmit added in the previous commit was redundant with kubevirt-datamover-controller's existing GitHub Actions test.yml, and missed the actual goal: gating these repos' PRs on oadp-operator's real e2e suite (openshift/oadp-operator#1832, Group A2), not local unit tests. Adds the real integration: - oadp-operator's own oadp-dev config now builds an operator bundle/index (operator.bundles) and the ci-Dockerfile e2e test binary, promoting both (as oadp-operator-index / oadp-operator-e2e-tests) on every merge. This is what kdm-controller/plugin need to install oadp-operator via OLM and run its e2e suite — previously only the operator binary was promoted; the bundle/index/test-binary were built ephemeral, per-PR, and only inside oadp-operator's own job. - kdm-controller/plugin presubmits: install oadp-operator via optional-operators-ci-aws from that promoted index, patch the running operator deployment's RELATED_IMAGE_KUBEVIRT_DATAMOVER_CONTROLLER / RELATED_IMAGE_KUBEVIRT_DATAMOVER_PLUGIN env to the PR-built image (oc set env, not the subscribe ref's OO_CONFIG_ENVVARS -- that can only override dependencies a step already declares, not inject a new one), then run `make TEST_VIRT=true test-e2e` from the promoted test binary. TEST_VIRT=true makes the suite install community KubeVirt/HCO itself and run the kubevirt-datamover-labeled specs (incl. VM backup/restore), so no separate CNV step-registry chain is needed. Signed-off-by: Tiger Kaovilai --- ...ubevirt-datamover-controller-oadp-dev.yaml | 54 +++++++++++-- ...ls-kubevirt-datamover-plugin-oadp-dev.yaml | 54 +++++++++++-- .../openshift-oadp-operator-oadp-dev.yaml | 10 +-- ...mover-controller-oadp-dev-postsubmits.yaml | 1 + ...amover-controller-oadp-dev-presubmits.yaml | 76 +++++++++++-------- ...datamover-plugin-oadp-dev-postsubmits.yaml | 1 + ...-datamover-plugin-oadp-dev-presubmits.yaml | 76 +++++++++++-------- ...ft-oadp-operator-oadp-dev-postsubmits.yaml | 4 +- ...ift-oadp-operator-oadp-dev-presubmits.yaml | 4 +- 9 files changed, 195 insertions(+), 85 deletions(-) diff --git a/ci-operator/config/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev.yaml b/ci-operator/config/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev.yaml index dab925e5feef8..6ab2d22fa68ed 100644 --- a/ci-operator/config/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev.yaml +++ b/ci-operator/config/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev.yaml @@ -1,3 +1,12 @@ +base_images: + oadp-operator-index: + name: oadp-operator-index + namespace: konveyor + tag: latest + test-oadp-operator: + name: oadp-operator-e2e-tests + namespace: konveyor + tag: latest build_root: image_stream_tag: name: builder @@ -15,6 +24,12 @@ promotion: tag: oadp-dev prowgen: disable_sparse_checkout: true +releases: + latest: + candidate: + product: ocp + stream: nightly + version: "4.22" resources: '*': limits: @@ -23,16 +38,45 @@ resources: cpu: 100m memory: 200Mi tests: -- as: unit-test +- always_run: false + as: e2e-test-aws + run_if_changed: .+\.go|go\.(\bmod\b|\bsum\b)|Makefile|Dockerfile|.dockerignore|.*\.ya{0,1}ml|.sh steps: + cluster_profile: openshift-org-aws + dependencies: + OO_INDEX: oadp-operator-index + env: + OO_CHANNEL: dev + OO_INSTALL_NAMESPACE: openshift-adp + OO_PACKAGE: oadp-operator + OO_TARGET_NAMESPACES: '!install' test: - - as: unit - commands: make test - from: src + - as: set-related-image + cli: latest + commands: | + oc set env deployment/openshift-adp-controller-manager -n "${OO_INSTALL_NAMESPACE}" RELATED_IMAGE_KUBEVIRT_DATAMOVER_CONTROLLER="${KDM_CONTROLLER_IMAGE}" + oc rollout status deployment/openshift-adp-controller-manager -n "${OO_INSTALL_NAMESPACE}" --timeout=180s + dependencies: + - env: KDM_CONTROLLER_IMAGE + name: kubevirt-datamover-controller + from: cli resources: requests: cpu: 100m - memory: 200Mi + memory: 100Mi + - as: e2e + cli: latest + commands: make TEST_VIRT=true test-e2e + credentials: + - mount_path: /var/run/oadp-credentials + name: oadp-credentials + namespace: test-credentials + from: test-oadp-operator + resources: + requests: + cpu: 1000m + memory: 512Mi + workflow: optional-operators-ci-aws zz_generated_metadata: branch: oadp-dev org: migtools diff --git a/ci-operator/config/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev.yaml b/ci-operator/config/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev.yaml index b84e25be559f7..a123320363965 100644 --- a/ci-operator/config/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev.yaml +++ b/ci-operator/config/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev.yaml @@ -1,3 +1,12 @@ +base_images: + oadp-operator-index: + name: oadp-operator-index + namespace: konveyor + tag: latest + test-oadp-operator: + name: oadp-operator-e2e-tests + namespace: konveyor + tag: latest build_root: image_stream_tag: name: builder @@ -15,6 +24,12 @@ promotion: tag: oadp-dev prowgen: disable_sparse_checkout: true +releases: + latest: + candidate: + product: ocp + stream: nightly + version: "4.22" resources: '*': limits: @@ -23,16 +38,45 @@ resources: cpu: 100m memory: 200Mi tests: -- as: unit-test +- always_run: false + as: e2e-test-aws + run_if_changed: .+\.go|go\.(\bmod\b|\bsum\b)|Makefile|Dockerfile|.dockerignore|.*\.ya{0,1}ml|.sh steps: + cluster_profile: openshift-org-aws + dependencies: + OO_INDEX: oadp-operator-index + env: + OO_CHANNEL: dev + OO_INSTALL_NAMESPACE: openshift-adp + OO_PACKAGE: oadp-operator + OO_TARGET_NAMESPACES: '!install' test: - - as: unit - commands: make test - from: src + - as: set-related-image + cli: latest + commands: | + oc set env deployment/openshift-adp-controller-manager -n "${OO_INSTALL_NAMESPACE}" RELATED_IMAGE_KUBEVIRT_DATAMOVER_PLUGIN="${KDM_PLUGIN_IMAGE}" + oc rollout status deployment/openshift-adp-controller-manager -n "${OO_INSTALL_NAMESPACE}" --timeout=180s + dependencies: + - env: KDM_PLUGIN_IMAGE + name: kubevirt-datamover-plugin + from: cli resources: requests: cpu: 100m - memory: 200Mi + memory: 100Mi + - as: e2e + cli: latest + commands: make TEST_VIRT=true test-e2e + credentials: + - mount_path: /var/run/oadp-credentials + name: oadp-credentials + namespace: test-credentials + from: test-oadp-operator + resources: + requests: + cpu: 1000m + memory: 512Mi + workflow: optional-operators-ci-aws zz_generated_metadata: branch: oadp-dev org: migtools diff --git a/ci-operator/config/openshift/oadp-operator/openshift-oadp-operator-oadp-dev.yaml b/ci-operator/config/openshift/oadp-operator/openshift-oadp-operator-oadp-dev.yaml index 6b3863b6fe8b4..3130af1129817 100644 --- a/ci-operator/config/openshift/oadp-operator/openshift-oadp-operator-oadp-dev.yaml +++ b/ci-operator/config/openshift/oadp-operator/openshift-oadp-operator-oadp-dev.yaml @@ -16,15 +16,11 @@ operator: - dockerfile_path: build/Dockerfile.bundle promotion: to: - - excluded_images: - - test-oadp-operator - name: oadp-operator - namespace: konveyor - additional_images: - oadp-operator-e2e-tests: test-oadp-operator - oadp-operator-index: ci-index + ci-index: oadp-operator-index + test-oadp-operator: oadp-operator-e2e-tests + name: oadp-operator namespace: konveyor - tag: oadp-dev resources: '*': limits: diff --git a/ci-operator/jobs/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev-postsubmits.yaml b/ci-operator/jobs/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev-postsubmits.yaml index 90120dd5a6651..cd0c887ef0e22 100644 --- a/ci-operator/jobs/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev-postsubmits.yaml +++ b/ci-operator/jobs/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev-postsubmits.yaml @@ -11,6 +11,7 @@ postsubmits: capability/arm64: arm64 ci-operator.openshift.io/is-promotion: "true" ci.openshift.io/generator: prowgen + job-release: "4.22" max_concurrency: 1 name: branch-ci-migtools-kubevirt-datamover-controller-oadp-dev-images spec: diff --git a/ci-operator/jobs/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev-presubmits.yaml b/ci-operator/jobs/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev-presubmits.yaml index b2400b3f768d6..ccab99a602b6f 100644 --- a/ci-operator/jobs/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev-presubmits.yaml +++ b/ci-operator/jobs/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev-presubmits.yaml @@ -1,36 +1,55 @@ presubmits: migtools/kubevirt-datamover-controller: - agent: kubernetes - always_run: true + always_run: false branches: - ^oadp-dev$ - ^oadp-dev- - cluster: build01 - context: ci/prow/images + cluster: build11 + context: ci/prow/e2e-test-aws decorate: true decoration_config: {} labels: - capability/arm64: arm64 + ci-operator.openshift.io/cloud: aws + ci-operator.openshift.io/cloud-cluster-profile: openshift-org-aws ci.openshift.io/generator: prowgen + job-release: "4.22" pj-rehearse.openshift.io/can-be-rehearsed: "true" - name: pull-ci-migtools-kubevirt-datamover-controller-oadp-dev-images - rerun_command: /test images + name: pull-ci-migtools-kubevirt-datamover-controller-oadp-dev-e2e-test-aws + rerun_command: /test e2e-test-aws + run_if_changed: .+\.go|go\.(\bmod\b|\bsum\b)|Makefile|Dockerfile|.dockerignore|.*\.ya{0,1}ml|.sh spec: containers: - args: - --gcs-upload-secret=/secrets/gcs/service-account.json - --image-import-pull-secret=/etc/pull-secret/.dockerconfigjson + - --lease-server-credentials-file=/etc/boskos/credentials - --report-credentials-file=/etc/report/credentials - - --target=[images] + - --secret-dir=/secrets/ci-pull-credentials + - --target=e2e-test-aws command: - ci-operator + env: + - name: HTTP_SERVER_IP + valueFrom: + fieldRef: + fieldPath: status.podIP image: quay-proxy.ci.openshift.org/openshift/ci:ci_ci-operator_latest imagePullPolicy: Always name: "" + ports: + - containerPort: 8080 + name: http resources: requests: cpu: 10m volumeMounts: + - mountPath: /etc/boskos + name: boskos + readOnly: true + - mountPath: /secrets/ci-pull-credentials + name: ci-pull-credentials + readOnly: true - mountPath: /secrets/gcs name: gcs-credentials readOnly: true @@ -45,6 +64,15 @@ presubmits: readOnly: true serviceAccountName: ci-operator volumes: + - name: boskos + secret: + items: + - key: credentials + path: credentials + secretName: boskos-credentials + - name: ci-pull-credentials + secret: + secretName: ci-pull-credentials - name: manifest-tool-local-pusher secret: secretName: manifest-tool-local-pusher @@ -54,49 +82,39 @@ presubmits: - name: result-aggregator secret: secretName: result-aggregator - trigger: (?m)^/test( | .* )images,?($|\s.*) + trigger: (?m)^/test( | .* )e2e-test-aws,?($|\s.*) - agent: kubernetes always_run: true branches: - ^oadp-dev$ - ^oadp-dev- - cluster: build13 - context: ci/prow/unit-test + cluster: build01 + context: ci/prow/images decorate: true decoration_config: {} labels: + capability/arm64: arm64 ci.openshift.io/generator: prowgen + job-release: "4.22" pj-rehearse.openshift.io/can-be-rehearsed: "true" - name: pull-ci-migtools-kubevirt-datamover-controller-oadp-dev-unit-test - rerun_command: /test unit-test + name: pull-ci-migtools-kubevirt-datamover-controller-oadp-dev-images + rerun_command: /test images spec: containers: - args: - --gcs-upload-secret=/secrets/gcs/service-account.json - --image-import-pull-secret=/etc/pull-secret/.dockerconfigjson - - --lease-server-credentials-file=/etc/boskos/credentials - --report-credentials-file=/etc/report/credentials - - --target=unit-test + - --target=[images] command: - ci-operator - env: - - name: HTTP_SERVER_IP - valueFrom: - fieldRef: - fieldPath: status.podIP image: quay-proxy.ci.openshift.org/openshift/ci:ci_ci-operator_latest imagePullPolicy: Always name: "" - ports: - - containerPort: 8080 - name: http resources: requests: cpu: 10m volumeMounts: - - mountPath: /etc/boskos - name: boskos - readOnly: true - mountPath: /secrets/gcs name: gcs-credentials readOnly: true @@ -111,12 +129,6 @@ presubmits: readOnly: true serviceAccountName: ci-operator volumes: - - name: boskos - secret: - items: - - key: credentials - path: credentials - secretName: boskos-credentials - name: manifest-tool-local-pusher secret: secretName: manifest-tool-local-pusher @@ -126,4 +138,4 @@ presubmits: - name: result-aggregator secret: secretName: result-aggregator - trigger: (?m)^/test( | .* )unit-test,?($|\s.*) + trigger: (?m)^/test( | .* )images,?($|\s.*) diff --git a/ci-operator/jobs/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev-postsubmits.yaml b/ci-operator/jobs/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev-postsubmits.yaml index 7275581c7d2fe..3a87b9fc02d3e 100644 --- a/ci-operator/jobs/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev-postsubmits.yaml +++ b/ci-operator/jobs/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev-postsubmits.yaml @@ -11,6 +11,7 @@ postsubmits: capability/arm64: arm64 ci-operator.openshift.io/is-promotion: "true" ci.openshift.io/generator: prowgen + job-release: "4.22" max_concurrency: 1 name: branch-ci-migtools-kubevirt-datamover-plugin-oadp-dev-images spec: diff --git a/ci-operator/jobs/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev-presubmits.yaml b/ci-operator/jobs/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev-presubmits.yaml index 9b2eba7860eb2..8a541cd409f12 100644 --- a/ci-operator/jobs/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev-presubmits.yaml +++ b/ci-operator/jobs/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev-presubmits.yaml @@ -1,36 +1,55 @@ presubmits: migtools/kubevirt-datamover-plugin: - agent: kubernetes - always_run: true + always_run: false branches: - ^oadp-dev$ - ^oadp-dev- - cluster: build09 - context: ci/prow/images + cluster: build06 + context: ci/prow/e2e-test-aws decorate: true decoration_config: {} labels: - capability/arm64: arm64 + ci-operator.openshift.io/cloud: aws + ci-operator.openshift.io/cloud-cluster-profile: openshift-org-aws ci.openshift.io/generator: prowgen + job-release: "4.22" pj-rehearse.openshift.io/can-be-rehearsed: "true" - name: pull-ci-migtools-kubevirt-datamover-plugin-oadp-dev-images - rerun_command: /test images + name: pull-ci-migtools-kubevirt-datamover-plugin-oadp-dev-e2e-test-aws + rerun_command: /test e2e-test-aws + run_if_changed: .+\.go|go\.(\bmod\b|\bsum\b)|Makefile|Dockerfile|.dockerignore|.*\.ya{0,1}ml|.sh spec: containers: - args: - --gcs-upload-secret=/secrets/gcs/service-account.json - --image-import-pull-secret=/etc/pull-secret/.dockerconfigjson + - --lease-server-credentials-file=/etc/boskos/credentials - --report-credentials-file=/etc/report/credentials - - --target=[images] + - --secret-dir=/secrets/ci-pull-credentials + - --target=e2e-test-aws command: - ci-operator + env: + - name: HTTP_SERVER_IP + valueFrom: + fieldRef: + fieldPath: status.podIP image: quay-proxy.ci.openshift.org/openshift/ci:ci_ci-operator_latest imagePullPolicy: Always name: "" + ports: + - containerPort: 8080 + name: http resources: requests: cpu: 10m volumeMounts: + - mountPath: /etc/boskos + name: boskos + readOnly: true + - mountPath: /secrets/ci-pull-credentials + name: ci-pull-credentials + readOnly: true - mountPath: /secrets/gcs name: gcs-credentials readOnly: true @@ -45,6 +64,15 @@ presubmits: readOnly: true serviceAccountName: ci-operator volumes: + - name: boskos + secret: + items: + - key: credentials + path: credentials + secretName: boskos-credentials + - name: ci-pull-credentials + secret: + secretName: ci-pull-credentials - name: manifest-tool-local-pusher secret: secretName: manifest-tool-local-pusher @@ -54,49 +82,39 @@ presubmits: - name: result-aggregator secret: secretName: result-aggregator - trigger: (?m)^/test( | .* )images,?($|\s.*) + trigger: (?m)^/test( | .* )e2e-test-aws,?($|\s.*) - agent: kubernetes always_run: true branches: - ^oadp-dev$ - ^oadp-dev- - cluster: build13 - context: ci/prow/unit-test + cluster: build09 + context: ci/prow/images decorate: true decoration_config: {} labels: + capability/arm64: arm64 ci.openshift.io/generator: prowgen + job-release: "4.22" pj-rehearse.openshift.io/can-be-rehearsed: "true" - name: pull-ci-migtools-kubevirt-datamover-plugin-oadp-dev-unit-test - rerun_command: /test unit-test + name: pull-ci-migtools-kubevirt-datamover-plugin-oadp-dev-images + rerun_command: /test images spec: containers: - args: - --gcs-upload-secret=/secrets/gcs/service-account.json - --image-import-pull-secret=/etc/pull-secret/.dockerconfigjson - - --lease-server-credentials-file=/etc/boskos/credentials - --report-credentials-file=/etc/report/credentials - - --target=unit-test + - --target=[images] command: - ci-operator - env: - - name: HTTP_SERVER_IP - valueFrom: - fieldRef: - fieldPath: status.podIP image: quay-proxy.ci.openshift.org/openshift/ci:ci_ci-operator_latest imagePullPolicy: Always name: "" - ports: - - containerPort: 8080 - name: http resources: requests: cpu: 10m volumeMounts: - - mountPath: /etc/boskos - name: boskos - readOnly: true - mountPath: /secrets/gcs name: gcs-credentials readOnly: true @@ -111,12 +129,6 @@ presubmits: readOnly: true serviceAccountName: ci-operator volumes: - - name: boskos - secret: - items: - - key: credentials - path: credentials - secretName: boskos-credentials - name: manifest-tool-local-pusher secret: secretName: manifest-tool-local-pusher @@ -126,4 +138,4 @@ presubmits: - name: result-aggregator secret: secretName: result-aggregator - trigger: (?m)^/test( | .* )unit-test,?($|\s.*) + trigger: (?m)^/test( | .* )images,?($|\s.*) diff --git a/ci-operator/jobs/openshift/oadp-operator/openshift-oadp-operator-oadp-dev-postsubmits.yaml b/ci-operator/jobs/openshift/oadp-operator/openshift-oadp-operator-oadp-dev-postsubmits.yaml index 1e20a7fdb62b1..c67783a916702 100644 --- a/ci-operator/jobs/openshift/oadp-operator/openshift-oadp-operator-oadp-dev-postsubmits.yaml +++ b/ci-operator/jobs/openshift/oadp-operator/openshift-oadp-operator-oadp-dev-postsubmits.yaml @@ -25,8 +25,8 @@ postsubmits: - --promote - --report-credentials-file=/etc/report/credentials - --target=[images] - - --target=ci-index - - --target=test-oadp-operator + - --target=oadp-operator-e2e-tests + - --target=oadp-operator-index command: - ci-operator image: quay-proxy.ci.openshift.org/openshift/ci:ci_ci-operator_latest diff --git a/ci-operator/jobs/openshift/oadp-operator/openshift-oadp-operator-oadp-dev-presubmits.yaml b/ci-operator/jobs/openshift/oadp-operator/openshift-oadp-operator-oadp-dev-presubmits.yaml index 3b9e724bb7536..b4e915bc01d27 100644 --- a/ci-operator/jobs/openshift/oadp-operator/openshift-oadp-operator-oadp-dev-presubmits.yaml +++ b/ci-operator/jobs/openshift/oadp-operator/openshift-oadp-operator-oadp-dev-presubmits.yaml @@ -1445,8 +1445,8 @@ presubmits: - --image-import-pull-secret=/etc/pull-secret/.dockerconfigjson - --report-credentials-file=/etc/report/credentials - --target=[images] - - --target=ci-index - - --target=test-oadp-operator + - --target=oadp-operator-e2e-tests + - --target=oadp-operator-index command: - ci-operator image: quay-proxy.ci.openshift.org/openshift/ci:ci_ci-operator_latest From 6c6405846bc94c3e2cbd08170ef086d7448478f5 Mon Sep 17 00:00:00 2001 From: Tiger Kaovilai Date: Thu, 6 Aug 2026 15:39:53 -0400 Subject: [PATCH 3/9] Use Subscription.spec.config.env for RELATED_IMAGE override; target 5.0 Patching the Deployment directly (oc set env deployment/...) doesn't survive OLM's own reconciliation: CSV.spec is what OLM continuously reconciles the Deployment from, so a direct Deployment edit would very plausibly get reverted mid-test. Subscription.spec.config.env is OLM's documented, supported override mechanism instead -- it wins over a same-named CSV env var and is designed to persist across reconciliation and upgrades. Patch that instead of hand-editing the CSV's deployment array. Also point releases.latest at the 5.0 nightly candidate instead of 4.22, matching the actual current oadp-dev target. (Resource sizing for the e2e step was cross-checked against oadp-operator's own existing e2e-test-kubevirt-aws-periodic job -- already an exact match, no change needed there.) Signed-off-by: Tiger Kaovilai --- .../migtools-kubevirt-datamover-controller-oadp-dev.yaml | 9 +++++++-- .../migtools-kubevirt-datamover-plugin-oadp-dev.yaml | 9 +++++++-- ...bevirt-datamover-controller-oadp-dev-postsubmits.yaml | 2 +- ...ubevirt-datamover-controller-oadp-dev-presubmits.yaml | 4 ++-- ...s-kubevirt-datamover-plugin-oadp-dev-postsubmits.yaml | 2 +- ...ls-kubevirt-datamover-plugin-oadp-dev-presubmits.yaml | 4 ++-- 6 files changed, 20 insertions(+), 10 deletions(-) diff --git a/ci-operator/config/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev.yaml b/ci-operator/config/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev.yaml index 6ab2d22fa68ed..71bd1ea8c8fc4 100644 --- a/ci-operator/config/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev.yaml +++ b/ci-operator/config/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev.yaml @@ -29,7 +29,7 @@ releases: candidate: product: ocp stream: nightly - version: "4.22" + version: "5.0" resources: '*': limits: @@ -54,7 +54,12 @@ tests: - as: set-related-image cli: latest commands: | - oc set env deployment/openshift-adp-controller-manager -n "${OO_INSTALL_NAMESPACE}" RELATED_IMAGE_KUBEVIRT_DATAMOVER_CONTROLLER="${KDM_CONTROLLER_IMAGE}" + SUB=$(cat "${SHARED_DIR}/oo-subscription") + # Subscription.spec.config.env is OLM's supported override mechanism: + # it wins over same-named CSV env vars and survives reconciliation, + # unlike patching the Deployment directly (OLM reconciles that from + # the CSV and would revert it). + oc patch subscription "${SUB}" -n "${OO_INSTALL_NAMESPACE}" --type merge -p "$(jq -n --arg img "${KDM_CONTROLLER_IMAGE}" '{spec:{config:{env:[{name:"RELATED_IMAGE_KUBEVIRT_DATAMOVER_CONTROLLER",value:$img}]}}}')" oc rollout status deployment/openshift-adp-controller-manager -n "${OO_INSTALL_NAMESPACE}" --timeout=180s dependencies: - env: KDM_CONTROLLER_IMAGE diff --git a/ci-operator/config/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev.yaml b/ci-operator/config/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev.yaml index a123320363965..8b3fb5f05f822 100644 --- a/ci-operator/config/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev.yaml +++ b/ci-operator/config/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev.yaml @@ -29,7 +29,7 @@ releases: candidate: product: ocp stream: nightly - version: "4.22" + version: "5.0" resources: '*': limits: @@ -54,7 +54,12 @@ tests: - as: set-related-image cli: latest commands: | - oc set env deployment/openshift-adp-controller-manager -n "${OO_INSTALL_NAMESPACE}" RELATED_IMAGE_KUBEVIRT_DATAMOVER_PLUGIN="${KDM_PLUGIN_IMAGE}" + SUB=$(cat "${SHARED_DIR}/oo-subscription") + # Subscription.spec.config.env is OLM's supported override mechanism: + # it wins over same-named CSV env vars and survives reconciliation, + # unlike patching the Deployment directly (OLM reconciles that from + # the CSV and would revert it). + oc patch subscription "${SUB}" -n "${OO_INSTALL_NAMESPACE}" --type merge -p "$(jq -n --arg img "${KDM_PLUGIN_IMAGE}" '{spec:{config:{env:[{name:"RELATED_IMAGE_KUBEVIRT_DATAMOVER_PLUGIN",value:$img}]}}}')" oc rollout status deployment/openshift-adp-controller-manager -n "${OO_INSTALL_NAMESPACE}" --timeout=180s dependencies: - env: KDM_PLUGIN_IMAGE diff --git a/ci-operator/jobs/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev-postsubmits.yaml b/ci-operator/jobs/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev-postsubmits.yaml index cd0c887ef0e22..30ae0983f4895 100644 --- a/ci-operator/jobs/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev-postsubmits.yaml +++ b/ci-operator/jobs/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev-postsubmits.yaml @@ -11,7 +11,7 @@ postsubmits: capability/arm64: arm64 ci-operator.openshift.io/is-promotion: "true" ci.openshift.io/generator: prowgen - job-release: "4.22" + job-release: "5.0" max_concurrency: 1 name: branch-ci-migtools-kubevirt-datamover-controller-oadp-dev-images spec: diff --git a/ci-operator/jobs/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev-presubmits.yaml b/ci-operator/jobs/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev-presubmits.yaml index ccab99a602b6f..125d7370b0111 100644 --- a/ci-operator/jobs/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev-presubmits.yaml +++ b/ci-operator/jobs/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev-presubmits.yaml @@ -13,7 +13,7 @@ presubmits: ci-operator.openshift.io/cloud: aws ci-operator.openshift.io/cloud-cluster-profile: openshift-org-aws ci.openshift.io/generator: prowgen - job-release: "4.22" + job-release: "5.0" pj-rehearse.openshift.io/can-be-rehearsed: "true" name: pull-ci-migtools-kubevirt-datamover-controller-oadp-dev-e2e-test-aws rerun_command: /test e2e-test-aws @@ -95,7 +95,7 @@ presubmits: labels: capability/arm64: arm64 ci.openshift.io/generator: prowgen - job-release: "4.22" + job-release: "5.0" pj-rehearse.openshift.io/can-be-rehearsed: "true" name: pull-ci-migtools-kubevirt-datamover-controller-oadp-dev-images rerun_command: /test images diff --git a/ci-operator/jobs/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev-postsubmits.yaml b/ci-operator/jobs/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev-postsubmits.yaml index 3a87b9fc02d3e..f607cf372e34d 100644 --- a/ci-operator/jobs/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev-postsubmits.yaml +++ b/ci-operator/jobs/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev-postsubmits.yaml @@ -11,7 +11,7 @@ postsubmits: capability/arm64: arm64 ci-operator.openshift.io/is-promotion: "true" ci.openshift.io/generator: prowgen - job-release: "4.22" + job-release: "5.0" max_concurrency: 1 name: branch-ci-migtools-kubevirt-datamover-plugin-oadp-dev-images spec: diff --git a/ci-operator/jobs/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev-presubmits.yaml b/ci-operator/jobs/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev-presubmits.yaml index 8a541cd409f12..7df65c6b809b9 100644 --- a/ci-operator/jobs/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev-presubmits.yaml +++ b/ci-operator/jobs/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev-presubmits.yaml @@ -13,7 +13,7 @@ presubmits: ci-operator.openshift.io/cloud: aws ci-operator.openshift.io/cloud-cluster-profile: openshift-org-aws ci.openshift.io/generator: prowgen - job-release: "4.22" + job-release: "5.0" pj-rehearse.openshift.io/can-be-rehearsed: "true" name: pull-ci-migtools-kubevirt-datamover-plugin-oadp-dev-e2e-test-aws rerun_command: /test e2e-test-aws @@ -95,7 +95,7 @@ presubmits: labels: capability/arm64: arm64 ci.openshift.io/generator: prowgen - job-release: "4.22" + job-release: "5.0" pj-rehearse.openshift.io/can-be-rehearsed: "true" name: pull-ci-migtools-kubevirt-datamover-plugin-oadp-dev-images rerun_command: /test images From 19a3cb2a7f0e2a3ced1c9629a0f9b299bbf284ed Mon Sep 17 00:00:00 2001 From: Tiger Kaovilai Date: Thu, 6 Aug 2026 16:24:38 -0400 Subject: [PATCH 4/9] Fix set-related-image race; drop unneeded disable_sparse_checkout oc patch subscription ... followed immediately by oc rollout status was racy: rollout status can report the existing rollout as already-complete before OLM has even noticed the Subscription change and pushed a new Deployment generation, letting the e2e suite start against the original promoted image instead of the PR's. Poll the Deployment's own env value until it reflects the override before checking rollout status. Also drop prowgen.disable_sparse_checkout: true -- it was only needed for the unit-test job's `from: src` step, which no longer exists (the e2e steps run from `cli` and `test-oadp-operator`, not `src`). Removing it reverts the images/postsubmit jobs to their original Dockerfile-only sparse checkout, avoiding unrelated churn and CI runtime. Signed-off-by: Tiger Kaovilai --- ...tools-kubevirt-datamover-controller-oadp-dev.yaml | 12 ++++++++++-- .../migtools-kubevirt-datamover-plugin-oadp-dev.yaml | 12 ++++++++++-- ...rt-datamover-controller-oadp-dev-postsubmits.yaml | 4 +++- ...irt-datamover-controller-oadp-dev-presubmits.yaml | 8 ++++++-- ...bevirt-datamover-plugin-oadp-dev-postsubmits.yaml | 4 +++- ...ubevirt-datamover-plugin-oadp-dev-presubmits.yaml | 8 ++++++-- 6 files changed, 38 insertions(+), 10 deletions(-) diff --git a/ci-operator/config/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev.yaml b/ci-operator/config/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev.yaml index 71bd1ea8c8fc4..41c384a7d68b8 100644 --- a/ci-operator/config/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev.yaml +++ b/ci-operator/config/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev.yaml @@ -22,8 +22,6 @@ promotion: to: - namespace: konveyor tag: oadp-dev -prowgen: - disable_sparse_checkout: true releases: latest: candidate: @@ -60,6 +58,16 @@ tests: # unlike patching the Deployment directly (OLM reconciles that from # the CSV and would revert it). oc patch subscription "${SUB}" -n "${OO_INSTALL_NAMESPACE}" --type merge -p "$(jq -n --arg img "${KDM_CONTROLLER_IMAGE}" '{spec:{config:{env:[{name:"RELATED_IMAGE_KUBEVIRT_DATAMOVER_CONTROLLER",value:$img}]}}}')" + echo "Waiting for Deployment to observe RELATED_IMAGE_KUBEVIRT_DATAMOVER_CONTROLLER=${KDM_CONTROLLER_IMAGE}" + for i in $(seq 1 60); do + CURRENT=$(oc get deployment/openshift-adp-controller-manager -n "${OO_INSTALL_NAMESPACE}" -o jsonpath="{.spec.template.spec.containers[?(@.name=='manager')].env[?(@.name=='RELATED_IMAGE_KUBEVIRT_DATAMOVER_CONTROLLER')].value}" 2>/dev/null || true) + [ "${CURRENT}" = "${KDM_CONTROLLER_IMAGE}" ] && break + sleep 5 + done + if [ "${CURRENT}" != "${KDM_CONTROLLER_IMAGE}" ]; then + echo "Timed out waiting for Deployment spec to reflect the Subscription.spec.config.env override" >&2 + exit 1 + fi oc rollout status deployment/openshift-adp-controller-manager -n "${OO_INSTALL_NAMESPACE}" --timeout=180s dependencies: - env: KDM_CONTROLLER_IMAGE diff --git a/ci-operator/config/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev.yaml b/ci-operator/config/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev.yaml index 8b3fb5f05f822..c6c01fb95b413 100644 --- a/ci-operator/config/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev.yaml +++ b/ci-operator/config/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev.yaml @@ -22,8 +22,6 @@ promotion: to: - namespace: konveyor tag: oadp-dev -prowgen: - disable_sparse_checkout: true releases: latest: candidate: @@ -60,6 +58,16 @@ tests: # unlike patching the Deployment directly (OLM reconciles that from # the CSV and would revert it). oc patch subscription "${SUB}" -n "${OO_INSTALL_NAMESPACE}" --type merge -p "$(jq -n --arg img "${KDM_PLUGIN_IMAGE}" '{spec:{config:{env:[{name:"RELATED_IMAGE_KUBEVIRT_DATAMOVER_PLUGIN",value:$img}]}}}')" + echo "Waiting for Deployment to observe RELATED_IMAGE_KUBEVIRT_DATAMOVER_PLUGIN=${KDM_PLUGIN_IMAGE}" + for i in $(seq 1 60); do + CURRENT=$(oc get deployment/openshift-adp-controller-manager -n "${OO_INSTALL_NAMESPACE}" -o jsonpath="{.spec.template.spec.containers[?(@.name=='manager')].env[?(@.name=='RELATED_IMAGE_KUBEVIRT_DATAMOVER_PLUGIN')].value}" 2>/dev/null || true) + [ "${CURRENT}" = "${KDM_PLUGIN_IMAGE}" ] && break + sleep 5 + done + if [ "${CURRENT}" != "${KDM_PLUGIN_IMAGE}" ]; then + echo "Timed out waiting for Deployment spec to reflect the Subscription.spec.config.env override" >&2 + exit 1 + fi oc rollout status deployment/openshift-adp-controller-manager -n "${OO_INSTALL_NAMESPACE}" --timeout=180s dependencies: - env: KDM_PLUGIN_IMAGE diff --git a/ci-operator/jobs/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev-postsubmits.yaml b/ci-operator/jobs/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev-postsubmits.yaml index 30ae0983f4895..5b5e4ce363dec 100644 --- a/ci-operator/jobs/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev-postsubmits.yaml +++ b/ci-operator/jobs/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev-postsubmits.yaml @@ -6,7 +6,9 @@ postsubmits: - ^oadp-dev$ cluster: build03 decorate: true - decoration_config: {} + decoration_config: + sparse_checkout_files: + - Dockerfile labels: capability/arm64: arm64 ci-operator.openshift.io/is-promotion: "true" diff --git a/ci-operator/jobs/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev-presubmits.yaml b/ci-operator/jobs/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev-presubmits.yaml index 125d7370b0111..6f4e7c8cfad00 100644 --- a/ci-operator/jobs/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev-presubmits.yaml +++ b/ci-operator/jobs/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev-presubmits.yaml @@ -8,7 +8,9 @@ presubmits: cluster: build11 context: ci/prow/e2e-test-aws decorate: true - decoration_config: {} + decoration_config: + sparse_checkout_files: + - Dockerfile labels: ci-operator.openshift.io/cloud: aws ci-operator.openshift.io/cloud-cluster-profile: openshift-org-aws @@ -91,7 +93,9 @@ presubmits: cluster: build01 context: ci/prow/images decorate: true - decoration_config: {} + decoration_config: + sparse_checkout_files: + - Dockerfile labels: capability/arm64: arm64 ci.openshift.io/generator: prowgen diff --git a/ci-operator/jobs/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev-postsubmits.yaml b/ci-operator/jobs/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev-postsubmits.yaml index f607cf372e34d..3eac88bdb87c0 100644 --- a/ci-operator/jobs/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev-postsubmits.yaml +++ b/ci-operator/jobs/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev-postsubmits.yaml @@ -6,7 +6,9 @@ postsubmits: - ^oadp-dev$ cluster: build10 decorate: true - decoration_config: {} + decoration_config: + sparse_checkout_files: + - Dockerfile labels: capability/arm64: arm64 ci-operator.openshift.io/is-promotion: "true" diff --git a/ci-operator/jobs/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev-presubmits.yaml b/ci-operator/jobs/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev-presubmits.yaml index 7df65c6b809b9..653dceea47163 100644 --- a/ci-operator/jobs/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev-presubmits.yaml +++ b/ci-operator/jobs/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev-presubmits.yaml @@ -8,7 +8,9 @@ presubmits: cluster: build06 context: ci/prow/e2e-test-aws decorate: true - decoration_config: {} + decoration_config: + sparse_checkout_files: + - Dockerfile labels: ci-operator.openshift.io/cloud: aws ci-operator.openshift.io/cloud-cluster-profile: openshift-org-aws @@ -91,7 +93,9 @@ presubmits: cluster: build09 context: ci/prow/images decorate: true - decoration_config: {} + decoration_config: + sparse_checkout_files: + - Dockerfile labels: capability/arm64: arm64 ci.openshift.io/generator: prowgen From 6b7491092159a8870a81be3f3cbf86b946b503af Mon Sep 17 00:00:00 2001 From: Tiger Kaovilai Date: Thu, 6 Aug 2026 16:36:43 -0400 Subject: [PATCH 5/9] Fix additional_images key/value direction (was backwards) additional_images maps {destination-name: pipeline-source-tag} -- I had it backwards (ci-index: oadp-operator-index instead of oadp-operator-index: ci-index), and had it on the wrong promotion.to[] entry. Confirmed via ci-tools source (ImageTargets() inserts the *value* as a required build target) and two working examples elsewhere in this repo (quay-operator, vertical-pod-autoscaler-operator): the value must be a real pipeline tag. With the original ordering, the postsubmit's generated promote targets were `oadp-operator-e2e-tests`/ `oadp-operator-index` -- neither is a real pipeline image in this config, so the actual postsubmit run would have failed outright once merged. Also: the original single promotion.to[] entry has an explicit `name` (shared-imagestream mode), where each promoted image becomes a *tag* under that one name rather than its own imagestream -- fine for the existing lone "oadp-operator" image, but wrong for what I actually want (oadp-operator-index and oadp-operator-e2e-tests as their own separate imagestreams, matching the kdm repos' base_images references). Moved additional_images to a second to[] entry with no `name` and an explicit `tag: latest`, which is the tag-mode that produces per-key imagestreams instead. Added excluded_images to the original entry so it doesn't also try to sweep the newly-added test-oadp-operator image into the shared "oadp-operator" stream. Verified: generated postsubmit promote targets are now `ci-index` and `test-oadp-operator` -- real pipeline tags -- instead of the bogus names. Signed-off-by: Tiger Kaovilai --- .../openshift-oadp-operator-oadp-dev.yaml | 10 +++++++--- .../openshift-oadp-operator-oadp-dev-postsubmits.yaml | 4 ++-- .../openshift-oadp-operator-oadp-dev-presubmits.yaml | 4 ++-- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/ci-operator/config/openshift/oadp-operator/openshift-oadp-operator-oadp-dev.yaml b/ci-operator/config/openshift/oadp-operator/openshift-oadp-operator-oadp-dev.yaml index 3130af1129817..88378c4a7c316 100644 --- a/ci-operator/config/openshift/oadp-operator/openshift-oadp-operator-oadp-dev.yaml +++ b/ci-operator/config/openshift/oadp-operator/openshift-oadp-operator-oadp-dev.yaml @@ -16,11 +16,15 @@ operator: - dockerfile_path: build/Dockerfile.bundle promotion: to: - - additional_images: - ci-index: oadp-operator-index - test-oadp-operator: oadp-operator-e2e-tests + - excluded_images: + - test-oadp-operator name: oadp-operator namespace: konveyor + - additional_images: + oadp-operator-e2e-tests: test-oadp-operator + oadp-operator-index: ci-index + namespace: konveyor + tag: latest resources: '*': limits: diff --git a/ci-operator/jobs/openshift/oadp-operator/openshift-oadp-operator-oadp-dev-postsubmits.yaml b/ci-operator/jobs/openshift/oadp-operator/openshift-oadp-operator-oadp-dev-postsubmits.yaml index c67783a916702..1e20a7fdb62b1 100644 --- a/ci-operator/jobs/openshift/oadp-operator/openshift-oadp-operator-oadp-dev-postsubmits.yaml +++ b/ci-operator/jobs/openshift/oadp-operator/openshift-oadp-operator-oadp-dev-postsubmits.yaml @@ -25,8 +25,8 @@ postsubmits: - --promote - --report-credentials-file=/etc/report/credentials - --target=[images] - - --target=oadp-operator-e2e-tests - - --target=oadp-operator-index + - --target=ci-index + - --target=test-oadp-operator command: - ci-operator image: quay-proxy.ci.openshift.org/openshift/ci:ci_ci-operator_latest diff --git a/ci-operator/jobs/openshift/oadp-operator/openshift-oadp-operator-oadp-dev-presubmits.yaml b/ci-operator/jobs/openshift/oadp-operator/openshift-oadp-operator-oadp-dev-presubmits.yaml index b4e915bc01d27..3b9e724bb7536 100644 --- a/ci-operator/jobs/openshift/oadp-operator/openshift-oadp-operator-oadp-dev-presubmits.yaml +++ b/ci-operator/jobs/openshift/oadp-operator/openshift-oadp-operator-oadp-dev-presubmits.yaml @@ -1445,8 +1445,8 @@ presubmits: - --image-import-pull-secret=/etc/pull-secret/.dockerconfigjson - --report-credentials-file=/etc/report/credentials - --target=[images] - - --target=oadp-operator-e2e-tests - - --target=oadp-operator-index + - --target=ci-index + - --target=test-oadp-operator command: - ci-operator image: quay-proxy.ci.openshift.org/openshift/ci:ci_ci-operator_latest From 0ac78b1f8dca1b347a0e7cd2b48dc2cc0d856bd4 Mon Sep 17 00:00:00 2001 From: Tiger Kaovilai Date: Thu, 6 Aug 2026 16:42:03 -0400 Subject: [PATCH 6/9] Fix oadp-dev/oadp-1.6 tag collision; add oadp-1.6 e2e wiring oadp-dev and oadp-1.6 both promoting oadp-operator-index/ oadp-operator-e2e-tests to the same konveyor namespace under tag "latest" would collide -- whichever branch's postsubmit ran last would clobber the other's promoted image. Give oadp-dev's entry an explicit tag: oadp-dev instead, matching the branch-specific-tag/shared-name convention the kdm repos' own promotion already uses. Updated their base_images tag references to match. Replicates the same real oadp-operator e2e wiring (see prior commits on this branch) for the oadp-1.6 branch: - oadp-operator's oadp-1.6 base config: same two-entry promotion split (existing name-mode entry + excluded_images, new tag-mode entry for oadp-operator-index/oadp-operator-e2e-tests tagged oadp-1.6). - kdm-controller/kdm-plugin oadp-1.6 configs: same e2e-test-aws presubmit, adjusted for this branch: OO_CHANNEL: stable (matching oadp-operator's own oadp-1.6 e2e jobs, vs "dev" for oadp-dev), and dependency names pointing at this branch's own local build names (kubevirt-datamover-controller-oadp-1.6 / -plugin-oadp-1.6). Signed-off-by: Tiger Kaovilai --- ...ubevirt-datamover-controller-oadp-1.6.yaml | 70 +++++++++++++++ ...ubevirt-datamover-controller-oadp-dev.yaml | 4 +- ...ls-kubevirt-datamover-plugin-oadp-1.6.yaml | 70 +++++++++++++++ ...ls-kubevirt-datamover-plugin-oadp-dev.yaml | 4 +- .../openshift-oadp-operator-oadp-dev.yaml | 2 +- ...mover-controller-oadp-1.6-postsubmits.yaml | 1 + ...amover-controller-oadp-1.6-presubmits.yaml | 86 +++++++++++++++++++ ...datamover-plugin-oadp-1.6-postsubmits.yaml | 1 + ...-datamover-plugin-oadp-1.6-presubmits.yaml | 86 +++++++++++++++++++ 9 files changed, 319 insertions(+), 5 deletions(-) diff --git a/ci-operator/config/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-1.6.yaml b/ci-operator/config/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-1.6.yaml index 0841369a62368..fe7c594867371 100644 --- a/ci-operator/config/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-1.6.yaml +++ b/ci-operator/config/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-1.6.yaml @@ -1,3 +1,12 @@ +base_images: + oadp-operator-index: + name: oadp-operator-index + namespace: konveyor + tag: oadp-1.6 + test-oadp-operator: + name: oadp-operator-e2e-tests + namespace: konveyor + tag: oadp-1.6 build_root: image_stream_tag: name: builder @@ -13,6 +22,12 @@ promotion: to: - name: kubevirt-datamover-controller namespace: konveyor +releases: + latest: + candidate: + product: ocp + stream: nightly + version: "5.0" resources: '*': limits: @@ -20,6 +35,61 @@ resources: requests: cpu: 100m memory: 200Mi +tests: +- always_run: false + as: e2e-test-aws + run_if_changed: .+\.go|go\.(\bmod\b|\bsum\b)|Makefile|Dockerfile|.dockerignore|.*\.ya{0,1}ml|.sh + steps: + cluster_profile: openshift-org-aws + dependencies: + OO_INDEX: oadp-operator-index + env: + OO_CHANNEL: stable + OO_INSTALL_NAMESPACE: openshift-adp + OO_PACKAGE: oadp-operator + OO_TARGET_NAMESPACES: '!install' + test: + - as: set-related-image + cli: latest + commands: | + SUB=$(cat "${SHARED_DIR}/oo-subscription") + # Subscription.spec.config.env is OLM's supported override mechanism: + # it wins over same-named CSV env vars and survives reconciliation, + # unlike patching the Deployment directly (OLM reconciles that from + # the CSV and would revert it). + oc patch subscription "${SUB}" -n "${OO_INSTALL_NAMESPACE}" --type merge -p "$(jq -n --arg img "${KDM_CONTROLLER_IMAGE}" '{spec:{config:{env:[{name:"RELATED_IMAGE_KUBEVIRT_DATAMOVER_CONTROLLER",value:$img}]}}}')" + echo "Waiting for Deployment to observe RELATED_IMAGE_KUBEVIRT_DATAMOVER_CONTROLLER=${KDM_CONTROLLER_IMAGE}" + for i in $(seq 1 60); do + CURRENT=$(oc get deployment/openshift-adp-controller-manager -n "${OO_INSTALL_NAMESPACE}" -o jsonpath="{.spec.template.spec.containers[?(@.name=='manager')].env[?(@.name=='RELATED_IMAGE_KUBEVIRT_DATAMOVER_CONTROLLER')].value}" 2>/dev/null || true) + [ "${CURRENT}" = "${KDM_CONTROLLER_IMAGE}" ] && break + sleep 5 + done + if [ "${CURRENT}" != "${KDM_CONTROLLER_IMAGE}" ]; then + echo "Timed out waiting for Deployment spec to reflect the Subscription.spec.config.env override" >&2 + exit 1 + fi + oc rollout status deployment/openshift-adp-controller-manager -n "${OO_INSTALL_NAMESPACE}" --timeout=180s + dependencies: + - env: KDM_CONTROLLER_IMAGE + name: kubevirt-datamover-controller-oadp-1.6 + from: cli + resources: + requests: + cpu: 100m + memory: 100Mi + - as: e2e + cli: latest + commands: make TEST_VIRT=true test-e2e + credentials: + - mount_path: /var/run/oadp-credentials + name: oadp-credentials + namespace: test-credentials + from: test-oadp-operator + resources: + requests: + cpu: 1000m + memory: 512Mi + workflow: optional-operators-ci-aws zz_generated_metadata: branch: oadp-1.6 org: migtools diff --git a/ci-operator/config/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev.yaml b/ci-operator/config/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev.yaml index 41c384a7d68b8..64d2c7d40a731 100644 --- a/ci-operator/config/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev.yaml +++ b/ci-operator/config/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev.yaml @@ -2,11 +2,11 @@ base_images: oadp-operator-index: name: oadp-operator-index namespace: konveyor - tag: latest + tag: oadp-dev test-oadp-operator: name: oadp-operator-e2e-tests namespace: konveyor - tag: latest + tag: oadp-dev build_root: image_stream_tag: name: builder diff --git a/ci-operator/config/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-1.6.yaml b/ci-operator/config/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-1.6.yaml index 74ebd47549d07..f33cf32181951 100644 --- a/ci-operator/config/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-1.6.yaml +++ b/ci-operator/config/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-1.6.yaml @@ -1,3 +1,12 @@ +base_images: + oadp-operator-index: + name: oadp-operator-index + namespace: konveyor + tag: oadp-1.6 + test-oadp-operator: + name: oadp-operator-e2e-tests + namespace: konveyor + tag: oadp-1.6 build_root: image_stream_tag: name: builder @@ -13,6 +22,12 @@ promotion: to: - name: kubevirt-datamover-plugin namespace: konveyor +releases: + latest: + candidate: + product: ocp + stream: nightly + version: "5.0" resources: '*': limits: @@ -20,6 +35,61 @@ resources: requests: cpu: 100m memory: 200Mi +tests: +- always_run: false + as: e2e-test-aws + run_if_changed: .+\.go|go\.(\bmod\b|\bsum\b)|Makefile|Dockerfile|.dockerignore|.*\.ya{0,1}ml|.sh + steps: + cluster_profile: openshift-org-aws + dependencies: + OO_INDEX: oadp-operator-index + env: + OO_CHANNEL: stable + OO_INSTALL_NAMESPACE: openshift-adp + OO_PACKAGE: oadp-operator + OO_TARGET_NAMESPACES: '!install' + test: + - as: set-related-image + cli: latest + commands: | + SUB=$(cat "${SHARED_DIR}/oo-subscription") + # Subscription.spec.config.env is OLM's supported override mechanism: + # it wins over same-named CSV env vars and survives reconciliation, + # unlike patching the Deployment directly (OLM reconciles that from + # the CSV and would revert it). + oc patch subscription "${SUB}" -n "${OO_INSTALL_NAMESPACE}" --type merge -p "$(jq -n --arg img "${KDM_PLUGIN_IMAGE}" '{spec:{config:{env:[{name:"RELATED_IMAGE_KUBEVIRT_DATAMOVER_PLUGIN",value:$img}]}}}')" + echo "Waiting for Deployment to observe RELATED_IMAGE_KUBEVIRT_DATAMOVER_PLUGIN=${KDM_PLUGIN_IMAGE}" + for i in $(seq 1 60); do + CURRENT=$(oc get deployment/openshift-adp-controller-manager -n "${OO_INSTALL_NAMESPACE}" -o jsonpath="{.spec.template.spec.containers[?(@.name=='manager')].env[?(@.name=='RELATED_IMAGE_KUBEVIRT_DATAMOVER_PLUGIN')].value}" 2>/dev/null || true) + [ "${CURRENT}" = "${KDM_PLUGIN_IMAGE}" ] && break + sleep 5 + done + if [ "${CURRENT}" != "${KDM_PLUGIN_IMAGE}" ]; then + echo "Timed out waiting for Deployment spec to reflect the Subscription.spec.config.env override" >&2 + exit 1 + fi + oc rollout status deployment/openshift-adp-controller-manager -n "${OO_INSTALL_NAMESPACE}" --timeout=180s + dependencies: + - env: KDM_PLUGIN_IMAGE + name: kubevirt-datamover-plugin-oadp-1.6 + from: cli + resources: + requests: + cpu: 100m + memory: 100Mi + - as: e2e + cli: latest + commands: make TEST_VIRT=true test-e2e + credentials: + - mount_path: /var/run/oadp-credentials + name: oadp-credentials + namespace: test-credentials + from: test-oadp-operator + resources: + requests: + cpu: 1000m + memory: 512Mi + workflow: optional-operators-ci-aws zz_generated_metadata: branch: oadp-1.6 org: migtools diff --git a/ci-operator/config/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev.yaml b/ci-operator/config/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev.yaml index c6c01fb95b413..54a6e1b1d4c93 100644 --- a/ci-operator/config/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev.yaml +++ b/ci-operator/config/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev.yaml @@ -2,11 +2,11 @@ base_images: oadp-operator-index: name: oadp-operator-index namespace: konveyor - tag: latest + tag: oadp-dev test-oadp-operator: name: oadp-operator-e2e-tests namespace: konveyor - tag: latest + tag: oadp-dev build_root: image_stream_tag: name: builder diff --git a/ci-operator/config/openshift/oadp-operator/openshift-oadp-operator-oadp-dev.yaml b/ci-operator/config/openshift/oadp-operator/openshift-oadp-operator-oadp-dev.yaml index 88378c4a7c316..6b3863b6fe8b4 100644 --- a/ci-operator/config/openshift/oadp-operator/openshift-oadp-operator-oadp-dev.yaml +++ b/ci-operator/config/openshift/oadp-operator/openshift-oadp-operator-oadp-dev.yaml @@ -24,7 +24,7 @@ promotion: oadp-operator-e2e-tests: test-oadp-operator oadp-operator-index: ci-index namespace: konveyor - tag: latest + tag: oadp-dev resources: '*': limits: diff --git a/ci-operator/jobs/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-1.6-postsubmits.yaml b/ci-operator/jobs/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-1.6-postsubmits.yaml index 6e6a435045bc0..15a55b786d20b 100644 --- a/ci-operator/jobs/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-1.6-postsubmits.yaml +++ b/ci-operator/jobs/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-1.6-postsubmits.yaml @@ -13,6 +13,7 @@ postsubmits: capability/arm64: arm64 ci-operator.openshift.io/is-promotion: "true" ci.openshift.io/generator: prowgen + job-release: "5.0" max_concurrency: 1 name: branch-ci-migtools-kubevirt-datamover-controller-oadp-1.6-images spec: diff --git a/ci-operator/jobs/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-1.6-presubmits.yaml b/ci-operator/jobs/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-1.6-presubmits.yaml index e2a48e2137d1e..939656a640fab 100644 --- a/ci-operator/jobs/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-1.6-presubmits.yaml +++ b/ci-operator/jobs/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-1.6-presubmits.yaml @@ -1,5 +1,90 @@ presubmits: migtools/kubevirt-datamover-controller: + - agent: kubernetes + always_run: false + branches: + - ^oadp-1\.6$ + - ^oadp-1\.6- + cluster: build11 + context: ci/prow/e2e-test-aws + decorate: true + decoration_config: + sparse_checkout_files: + - Dockerfile + labels: + ci-operator.openshift.io/cloud: aws + ci-operator.openshift.io/cloud-cluster-profile: openshift-org-aws + ci.openshift.io/generator: prowgen + job-release: "5.0" + pj-rehearse.openshift.io/can-be-rehearsed: "true" + name: pull-ci-migtools-kubevirt-datamover-controller-oadp-1.6-e2e-test-aws + rerun_command: /test e2e-test-aws + run_if_changed: .+\.go|go\.(\bmod\b|\bsum\b)|Makefile|Dockerfile|.dockerignore|.*\.ya{0,1}ml|.sh + spec: + containers: + - args: + - --gcs-upload-secret=/secrets/gcs/service-account.json + - --image-import-pull-secret=/etc/pull-secret/.dockerconfigjson + - --lease-server-credentials-file=/etc/boskos/credentials + - --report-credentials-file=/etc/report/credentials + - --secret-dir=/secrets/ci-pull-credentials + - --target=e2e-test-aws + command: + - ci-operator + env: + - name: HTTP_SERVER_IP + valueFrom: + fieldRef: + fieldPath: status.podIP + image: quay-proxy.ci.openshift.org/openshift/ci:ci_ci-operator_latest + imagePullPolicy: Always + name: "" + ports: + - containerPort: 8080 + name: http + resources: + requests: + cpu: 10m + volumeMounts: + - mountPath: /etc/boskos + name: boskos + readOnly: true + - mountPath: /secrets/ci-pull-credentials + name: ci-pull-credentials + readOnly: true + - mountPath: /secrets/gcs + name: gcs-credentials + readOnly: true + - mountPath: /secrets/manifest-tool + name: manifest-tool-local-pusher + readOnly: true + - mountPath: /etc/pull-secret + name: pull-secret + readOnly: true + - mountPath: /etc/report + name: result-aggregator + readOnly: true + serviceAccountName: ci-operator + volumes: + - name: boskos + secret: + items: + - key: credentials + path: credentials + secretName: boskos-credentials + - name: ci-pull-credentials + secret: + secretName: ci-pull-credentials + - name: manifest-tool-local-pusher + secret: + secretName: manifest-tool-local-pusher + - name: pull-secret + secret: + secretName: registry-pull-credentials + - name: result-aggregator + secret: + secretName: result-aggregator + trigger: (?m)^/test( | .* )e2e-test-aws,?($|\s.*) - agent: kubernetes always_run: true branches: @@ -14,6 +99,7 @@ presubmits: labels: capability/arm64: arm64 ci.openshift.io/generator: prowgen + job-release: "5.0" pj-rehearse.openshift.io/can-be-rehearsed: "true" name: pull-ci-migtools-kubevirt-datamover-controller-oadp-1.6-images rerun_command: /test images diff --git a/ci-operator/jobs/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-1.6-postsubmits.yaml b/ci-operator/jobs/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-1.6-postsubmits.yaml index 1fde5040ef48e..4e545be58496a 100644 --- a/ci-operator/jobs/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-1.6-postsubmits.yaml +++ b/ci-operator/jobs/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-1.6-postsubmits.yaml @@ -13,6 +13,7 @@ postsubmits: capability/arm64: arm64 ci-operator.openshift.io/is-promotion: "true" ci.openshift.io/generator: prowgen + job-release: "5.0" max_concurrency: 1 name: branch-ci-migtools-kubevirt-datamover-plugin-oadp-1.6-images spec: diff --git a/ci-operator/jobs/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-1.6-presubmits.yaml b/ci-operator/jobs/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-1.6-presubmits.yaml index e50593dde217e..f419440bb065c 100644 --- a/ci-operator/jobs/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-1.6-presubmits.yaml +++ b/ci-operator/jobs/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-1.6-presubmits.yaml @@ -1,5 +1,90 @@ presubmits: migtools/kubevirt-datamover-plugin: + - agent: kubernetes + always_run: false + branches: + - ^oadp-1\.6$ + - ^oadp-1\.6- + cluster: build06 + context: ci/prow/e2e-test-aws + decorate: true + decoration_config: + sparse_checkout_files: + - Dockerfile + labels: + ci-operator.openshift.io/cloud: aws + ci-operator.openshift.io/cloud-cluster-profile: openshift-org-aws + ci.openshift.io/generator: prowgen + job-release: "5.0" + pj-rehearse.openshift.io/can-be-rehearsed: "true" + name: pull-ci-migtools-kubevirt-datamover-plugin-oadp-1.6-e2e-test-aws + rerun_command: /test e2e-test-aws + run_if_changed: .+\.go|go\.(\bmod\b|\bsum\b)|Makefile|Dockerfile|.dockerignore|.*\.ya{0,1}ml|.sh + spec: + containers: + - args: + - --gcs-upload-secret=/secrets/gcs/service-account.json + - --image-import-pull-secret=/etc/pull-secret/.dockerconfigjson + - --lease-server-credentials-file=/etc/boskos/credentials + - --report-credentials-file=/etc/report/credentials + - --secret-dir=/secrets/ci-pull-credentials + - --target=e2e-test-aws + command: + - ci-operator + env: + - name: HTTP_SERVER_IP + valueFrom: + fieldRef: + fieldPath: status.podIP + image: quay-proxy.ci.openshift.org/openshift/ci:ci_ci-operator_latest + imagePullPolicy: Always + name: "" + ports: + - containerPort: 8080 + name: http + resources: + requests: + cpu: 10m + volumeMounts: + - mountPath: /etc/boskos + name: boskos + readOnly: true + - mountPath: /secrets/ci-pull-credentials + name: ci-pull-credentials + readOnly: true + - mountPath: /secrets/gcs + name: gcs-credentials + readOnly: true + - mountPath: /secrets/manifest-tool + name: manifest-tool-local-pusher + readOnly: true + - mountPath: /etc/pull-secret + name: pull-secret + readOnly: true + - mountPath: /etc/report + name: result-aggregator + readOnly: true + serviceAccountName: ci-operator + volumes: + - name: boskos + secret: + items: + - key: credentials + path: credentials + secretName: boskos-credentials + - name: ci-pull-credentials + secret: + secretName: ci-pull-credentials + - name: manifest-tool-local-pusher + secret: + secretName: manifest-tool-local-pusher + - name: pull-secret + secret: + secretName: registry-pull-credentials + - name: result-aggregator + secret: + secretName: result-aggregator + trigger: (?m)^/test( | .* )e2e-test-aws,?($|\s.*) - agent: kubernetes always_run: true branches: @@ -14,6 +99,7 @@ presubmits: labels: capability/arm64: arm64 ci.openshift.io/generator: prowgen + job-release: "5.0" pj-rehearse.openshift.io/can-be-rehearsed: "true" name: pull-ci-migtools-kubevirt-datamover-plugin-oadp-1.6-images rerun_command: /test images From 2bd790eecff8f72833b8f10136ad07d13cf09de4 Mon Sep 17 00:00:00 2001 From: Tiger Kaovilai Date: Thu, 6 Aug 2026 17:35:13 -0400 Subject: [PATCH 7/9] Use double-quoted JSONPath string literals in set-related-image steps CodeRabbit flagged the single-quoted @.name=='manager' style filter comparisons as risky. Kubernetes' JSONPath implementation documents double-quoted string literals in filter expressions; switch to that form (escaped, since the outer jsonpath argument is itself double-quoted) to remove any doubt about whether the polling loop's match would silently fail to parse. Signed-off-by: Tiger Kaovilai --- .../migtools-kubevirt-datamover-controller-oadp-1.6.yaml | 2 +- .../migtools-kubevirt-datamover-controller-oadp-dev.yaml | 2 +- .../migtools-kubevirt-datamover-plugin-oadp-1.6.yaml | 2 +- .../migtools-kubevirt-datamover-plugin-oadp-dev.yaml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ci-operator/config/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-1.6.yaml b/ci-operator/config/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-1.6.yaml index fe7c594867371..57aa6d21d7a75 100644 --- a/ci-operator/config/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-1.6.yaml +++ b/ci-operator/config/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-1.6.yaml @@ -60,7 +60,7 @@ tests: oc patch subscription "${SUB}" -n "${OO_INSTALL_NAMESPACE}" --type merge -p "$(jq -n --arg img "${KDM_CONTROLLER_IMAGE}" '{spec:{config:{env:[{name:"RELATED_IMAGE_KUBEVIRT_DATAMOVER_CONTROLLER",value:$img}]}}}')" echo "Waiting for Deployment to observe RELATED_IMAGE_KUBEVIRT_DATAMOVER_CONTROLLER=${KDM_CONTROLLER_IMAGE}" for i in $(seq 1 60); do - CURRENT=$(oc get deployment/openshift-adp-controller-manager -n "${OO_INSTALL_NAMESPACE}" -o jsonpath="{.spec.template.spec.containers[?(@.name=='manager')].env[?(@.name=='RELATED_IMAGE_KUBEVIRT_DATAMOVER_CONTROLLER')].value}" 2>/dev/null || true) + CURRENT=$(oc get deployment/openshift-adp-controller-manager -n "${OO_INSTALL_NAMESPACE}" -o jsonpath="{.spec.template.spec.containers[?(@.name==\"manager\")].env[?(@.name==\"RELATED_IMAGE_KUBEVIRT_DATAMOVER_CONTROLLER\")].value}" 2>/dev/null || true) [ "${CURRENT}" = "${KDM_CONTROLLER_IMAGE}" ] && break sleep 5 done diff --git a/ci-operator/config/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev.yaml b/ci-operator/config/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev.yaml index 64d2c7d40a731..8b4039404fa1a 100644 --- a/ci-operator/config/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev.yaml +++ b/ci-operator/config/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev.yaml @@ -60,7 +60,7 @@ tests: oc patch subscription "${SUB}" -n "${OO_INSTALL_NAMESPACE}" --type merge -p "$(jq -n --arg img "${KDM_CONTROLLER_IMAGE}" '{spec:{config:{env:[{name:"RELATED_IMAGE_KUBEVIRT_DATAMOVER_CONTROLLER",value:$img}]}}}')" echo "Waiting for Deployment to observe RELATED_IMAGE_KUBEVIRT_DATAMOVER_CONTROLLER=${KDM_CONTROLLER_IMAGE}" for i in $(seq 1 60); do - CURRENT=$(oc get deployment/openshift-adp-controller-manager -n "${OO_INSTALL_NAMESPACE}" -o jsonpath="{.spec.template.spec.containers[?(@.name=='manager')].env[?(@.name=='RELATED_IMAGE_KUBEVIRT_DATAMOVER_CONTROLLER')].value}" 2>/dev/null || true) + CURRENT=$(oc get deployment/openshift-adp-controller-manager -n "${OO_INSTALL_NAMESPACE}" -o jsonpath="{.spec.template.spec.containers[?(@.name==\"manager\")].env[?(@.name==\"RELATED_IMAGE_KUBEVIRT_DATAMOVER_CONTROLLER\")].value}" 2>/dev/null || true) [ "${CURRENT}" = "${KDM_CONTROLLER_IMAGE}" ] && break sleep 5 done diff --git a/ci-operator/config/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-1.6.yaml b/ci-operator/config/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-1.6.yaml index f33cf32181951..357b0e4b3b5bb 100644 --- a/ci-operator/config/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-1.6.yaml +++ b/ci-operator/config/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-1.6.yaml @@ -60,7 +60,7 @@ tests: oc patch subscription "${SUB}" -n "${OO_INSTALL_NAMESPACE}" --type merge -p "$(jq -n --arg img "${KDM_PLUGIN_IMAGE}" '{spec:{config:{env:[{name:"RELATED_IMAGE_KUBEVIRT_DATAMOVER_PLUGIN",value:$img}]}}}')" echo "Waiting for Deployment to observe RELATED_IMAGE_KUBEVIRT_DATAMOVER_PLUGIN=${KDM_PLUGIN_IMAGE}" for i in $(seq 1 60); do - CURRENT=$(oc get deployment/openshift-adp-controller-manager -n "${OO_INSTALL_NAMESPACE}" -o jsonpath="{.spec.template.spec.containers[?(@.name=='manager')].env[?(@.name=='RELATED_IMAGE_KUBEVIRT_DATAMOVER_PLUGIN')].value}" 2>/dev/null || true) + CURRENT=$(oc get deployment/openshift-adp-controller-manager -n "${OO_INSTALL_NAMESPACE}" -o jsonpath="{.spec.template.spec.containers[?(@.name==\"manager\")].env[?(@.name==\"RELATED_IMAGE_KUBEVIRT_DATAMOVER_PLUGIN\")].value}" 2>/dev/null || true) [ "${CURRENT}" = "${KDM_PLUGIN_IMAGE}" ] && break sleep 5 done diff --git a/ci-operator/config/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev.yaml b/ci-operator/config/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev.yaml index 54a6e1b1d4c93..14aedb7acae21 100644 --- a/ci-operator/config/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev.yaml +++ b/ci-operator/config/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev.yaml @@ -60,7 +60,7 @@ tests: oc patch subscription "${SUB}" -n "${OO_INSTALL_NAMESPACE}" --type merge -p "$(jq -n --arg img "${KDM_PLUGIN_IMAGE}" '{spec:{config:{env:[{name:"RELATED_IMAGE_KUBEVIRT_DATAMOVER_PLUGIN",value:$img}]}}}')" echo "Waiting for Deployment to observe RELATED_IMAGE_KUBEVIRT_DATAMOVER_PLUGIN=${KDM_PLUGIN_IMAGE}" for i in $(seq 1 60); do - CURRENT=$(oc get deployment/openshift-adp-controller-manager -n "${OO_INSTALL_NAMESPACE}" -o jsonpath="{.spec.template.spec.containers[?(@.name=='manager')].env[?(@.name=='RELATED_IMAGE_KUBEVIRT_DATAMOVER_PLUGIN')].value}" 2>/dev/null || true) + CURRENT=$(oc get deployment/openshift-adp-controller-manager -n "${OO_INSTALL_NAMESPACE}" -o jsonpath="{.spec.template.spec.containers[?(@.name==\"manager\")].env[?(@.name==\"RELATED_IMAGE_KUBEVIRT_DATAMOVER_PLUGIN\")].value}" 2>/dev/null || true) [ "${CURRENT}" = "${KDM_PLUGIN_IMAGE}" ] && break sleep 5 done From e28b730cd802819f14a04a88cb8e9561e77ac716 Mon Sep 17 00:00:00 2001 From: Tiger Kaovilai Date: Tue, 11 Aug 2026 10:51:52 -0400 Subject: [PATCH 8/9] Promote oadp-operator bundle directly; install via operator-sdk run bundle The promoted oadp-operator-index bakes in a reference to the bundle image from its own building job's ephemeral namespace, which becomes unreachable once that namespace is torn down - BundleUnpackFailed on rehearsal confirmed this. Promote the bundle itself instead (skip_building_index) and install it directly via operator-sdk run bundle, which needs no index/catalog at all. Also fixes a self-referential OO_INSTALL_MODE bug in the shared optional-operators-operator-sdk-non-ci-bundle-image step that silently dropped the install-mode flag for every consumer. Signed-off-by: Tiger Kaovilai --- ...ubevirt-datamover-controller-oadp-1.6.yaml | 24 ++++++++++--------- ...ubevirt-datamover-controller-oadp-dev.yaml | 24 ++++++++++--------- ...ls-kubevirt-datamover-plugin-oadp-1.6.yaml | 24 ++++++++++--------- ...ls-kubevirt-datamover-plugin-oadp-dev.yaml | 24 ++++++++++--------- .../openshift-oadp-operator-oadp-1.6.yaml | 6 +++-- .../openshift-oadp-operator-oadp-dev.yaml | 6 +++-- ...ft-oadp-operator-oadp-1.6-postsubmits.yaml | 2 +- ...ift-oadp-operator-oadp-1.6-presubmits.yaml | 12 +++++----- ...ft-oadp-operator-oadp-dev-postsubmits.yaml | 2 +- ...ift-oadp-operator-oadp-dev-presubmits.yaml | 12 +++++----- ...erator-sdk-non-ci-bundle-image-commands.sh | 2 +- 11 files changed, 75 insertions(+), 63 deletions(-) diff --git a/ci-operator/config/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-1.6.yaml b/ci-operator/config/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-1.6.yaml index 57aa6d21d7a75..47c7f2a01dbee 100644 --- a/ci-operator/config/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-1.6.yaml +++ b/ci-operator/config/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-1.6.yaml @@ -1,8 +1,4 @@ base_images: - oadp-operator-index: - name: oadp-operator-index - namespace: konveyor - tag: oadp-1.6 test-oadp-operator: name: oadp-operator-e2e-tests namespace: konveyor @@ -41,18 +37,25 @@ tests: run_if_changed: .+\.go|go\.(\bmod\b|\bsum\b)|Makefile|Dockerfile|.dockerignore|.*\.ya{0,1}ml|.sh steps: cluster_profile: openshift-org-aws - dependencies: - OO_INDEX: oadp-operator-index env: - OO_CHANNEL: stable + OO_BUNDLE: registry.ci.openshift.org/konveyor/oadp-operator-bundle:oadp-1.6 + OO_INSTALL_MODE: OwnNamespace OO_INSTALL_NAMESPACE: openshift-adp - OO_PACKAGE: oadp-operator - OO_TARGET_NAMESPACES: '!install' + post: + - chain: ipi-aws-post + pre: + - chain: ipi-aws-pre + - ref: optional-operators-operator-sdk-non-ci-bundle-image test: - as: set-related-image cli: latest commands: | - SUB=$(cat "${SHARED_DIR}/oo-subscription") + SUB=$(oc get subscription -n "${OO_INSTALL_NAMESPACE}" -o jsonpath='{.items[0].metadata.name}') + if [ -z "${SUB}" ]; then + echo "No Subscription found in namespace ${OO_INSTALL_NAMESPACE}" >&2 + exit 1 + fi + echo "Discovered Subscription: ${SUB}" # Subscription.spec.config.env is OLM's supported override mechanism: # it wins over same-named CSV env vars and survives reconciliation, # unlike patching the Deployment directly (OLM reconciles that from @@ -89,7 +92,6 @@ tests: requests: cpu: 1000m memory: 512Mi - workflow: optional-operators-ci-aws zz_generated_metadata: branch: oadp-1.6 org: migtools diff --git a/ci-operator/config/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev.yaml b/ci-operator/config/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev.yaml index 8b4039404fa1a..072af29afb7c3 100644 --- a/ci-operator/config/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev.yaml +++ b/ci-operator/config/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev.yaml @@ -1,8 +1,4 @@ base_images: - oadp-operator-index: - name: oadp-operator-index - namespace: konveyor - tag: oadp-dev test-oadp-operator: name: oadp-operator-e2e-tests namespace: konveyor @@ -41,18 +37,25 @@ tests: run_if_changed: .+\.go|go\.(\bmod\b|\bsum\b)|Makefile|Dockerfile|.dockerignore|.*\.ya{0,1}ml|.sh steps: cluster_profile: openshift-org-aws - dependencies: - OO_INDEX: oadp-operator-index env: - OO_CHANNEL: dev + OO_BUNDLE: registry.ci.openshift.org/konveyor/oadp-operator-bundle:oadp-dev + OO_INSTALL_MODE: OwnNamespace OO_INSTALL_NAMESPACE: openshift-adp - OO_PACKAGE: oadp-operator - OO_TARGET_NAMESPACES: '!install' + post: + - chain: ipi-aws-post + pre: + - chain: ipi-aws-pre + - ref: optional-operators-operator-sdk-non-ci-bundle-image test: - as: set-related-image cli: latest commands: | - SUB=$(cat "${SHARED_DIR}/oo-subscription") + SUB=$(oc get subscription -n "${OO_INSTALL_NAMESPACE}" -o jsonpath='{.items[0].metadata.name}') + if [ -z "${SUB}" ]; then + echo "No Subscription found in namespace ${OO_INSTALL_NAMESPACE}" >&2 + exit 1 + fi + echo "Discovered Subscription: ${SUB}" # Subscription.spec.config.env is OLM's supported override mechanism: # it wins over same-named CSV env vars and survives reconciliation, # unlike patching the Deployment directly (OLM reconciles that from @@ -89,7 +92,6 @@ tests: requests: cpu: 1000m memory: 512Mi - workflow: optional-operators-ci-aws zz_generated_metadata: branch: oadp-dev org: migtools diff --git a/ci-operator/config/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-1.6.yaml b/ci-operator/config/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-1.6.yaml index 357b0e4b3b5bb..f7cc955673864 100644 --- a/ci-operator/config/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-1.6.yaml +++ b/ci-operator/config/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-1.6.yaml @@ -1,8 +1,4 @@ base_images: - oadp-operator-index: - name: oadp-operator-index - namespace: konveyor - tag: oadp-1.6 test-oadp-operator: name: oadp-operator-e2e-tests namespace: konveyor @@ -41,18 +37,25 @@ tests: run_if_changed: .+\.go|go\.(\bmod\b|\bsum\b)|Makefile|Dockerfile|.dockerignore|.*\.ya{0,1}ml|.sh steps: cluster_profile: openshift-org-aws - dependencies: - OO_INDEX: oadp-operator-index env: - OO_CHANNEL: stable + OO_BUNDLE: registry.ci.openshift.org/konveyor/oadp-operator-bundle:oadp-1.6 + OO_INSTALL_MODE: OwnNamespace OO_INSTALL_NAMESPACE: openshift-adp - OO_PACKAGE: oadp-operator - OO_TARGET_NAMESPACES: '!install' + post: + - chain: ipi-aws-post + pre: + - chain: ipi-aws-pre + - ref: optional-operators-operator-sdk-non-ci-bundle-image test: - as: set-related-image cli: latest commands: | - SUB=$(cat "${SHARED_DIR}/oo-subscription") + SUB=$(oc get subscription -n "${OO_INSTALL_NAMESPACE}" -o jsonpath='{.items[0].metadata.name}') + if [ -z "${SUB}" ]; then + echo "No Subscription found in namespace ${OO_INSTALL_NAMESPACE}" >&2 + exit 1 + fi + echo "Discovered Subscription: ${SUB}" # Subscription.spec.config.env is OLM's supported override mechanism: # it wins over same-named CSV env vars and survives reconciliation, # unlike patching the Deployment directly (OLM reconciles that from @@ -89,7 +92,6 @@ tests: requests: cpu: 1000m memory: 512Mi - workflow: optional-operators-ci-aws zz_generated_metadata: branch: oadp-1.6 org: migtools diff --git a/ci-operator/config/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev.yaml b/ci-operator/config/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev.yaml index 14aedb7acae21..a7b63599c2c93 100644 --- a/ci-operator/config/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev.yaml +++ b/ci-operator/config/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev.yaml @@ -1,8 +1,4 @@ base_images: - oadp-operator-index: - name: oadp-operator-index - namespace: konveyor - tag: oadp-dev test-oadp-operator: name: oadp-operator-e2e-tests namespace: konveyor @@ -41,18 +37,25 @@ tests: run_if_changed: .+\.go|go\.(\bmod\b|\bsum\b)|Makefile|Dockerfile|.dockerignore|.*\.ya{0,1}ml|.sh steps: cluster_profile: openshift-org-aws - dependencies: - OO_INDEX: oadp-operator-index env: - OO_CHANNEL: dev + OO_BUNDLE: registry.ci.openshift.org/konveyor/oadp-operator-bundle:oadp-dev + OO_INSTALL_MODE: OwnNamespace OO_INSTALL_NAMESPACE: openshift-adp - OO_PACKAGE: oadp-operator - OO_TARGET_NAMESPACES: '!install' + post: + - chain: ipi-aws-post + pre: + - chain: ipi-aws-pre + - ref: optional-operators-operator-sdk-non-ci-bundle-image test: - as: set-related-image cli: latest commands: | - SUB=$(cat "${SHARED_DIR}/oo-subscription") + SUB=$(oc get subscription -n "${OO_INSTALL_NAMESPACE}" -o jsonpath='{.items[0].metadata.name}') + if [ -z "${SUB}" ]; then + echo "No Subscription found in namespace ${OO_INSTALL_NAMESPACE}" >&2 + exit 1 + fi + echo "Discovered Subscription: ${SUB}" # Subscription.spec.config.env is OLM's supported override mechanism: # it wins over same-named CSV env vars and survives reconciliation, # unlike patching the Deployment directly (OLM reconciles that from @@ -89,7 +92,6 @@ tests: requests: cpu: 1000m memory: 512Mi - workflow: optional-operators-ci-aws zz_generated_metadata: branch: oadp-dev org: migtools diff --git a/ci-operator/config/openshift/oadp-operator/openshift-oadp-operator-oadp-1.6.yaml b/ci-operator/config/openshift/oadp-operator/openshift-oadp-operator-oadp-1.6.yaml index be749c95d0374..30e36950eba5c 100644 --- a/ci-operator/config/openshift/oadp-operator/openshift-oadp-operator-oadp-1.6.yaml +++ b/ci-operator/config/openshift/oadp-operator/openshift-oadp-operator-oadp-1.6.yaml @@ -13,7 +13,9 @@ images: to: test-oadp-operator operator: bundles: - - dockerfile_path: build/Dockerfile.bundle + - as: oadp-operator-bundle + dockerfile_path: build/Dockerfile.bundle + skip_building_index: true promotion: to: - excluded_images: @@ -21,8 +23,8 @@ promotion: name: oadp-operator namespace: konveyor - additional_images: + oadp-operator-bundle: oadp-operator-bundle oadp-operator-e2e-tests: test-oadp-operator - oadp-operator-index: ci-index namespace: konveyor tag: oadp-1.6 resources: diff --git a/ci-operator/config/openshift/oadp-operator/openshift-oadp-operator-oadp-dev.yaml b/ci-operator/config/openshift/oadp-operator/openshift-oadp-operator-oadp-dev.yaml index 6b3863b6fe8b4..b9be0fa4f907c 100644 --- a/ci-operator/config/openshift/oadp-operator/openshift-oadp-operator-oadp-dev.yaml +++ b/ci-operator/config/openshift/oadp-operator/openshift-oadp-operator-oadp-dev.yaml @@ -13,7 +13,9 @@ images: to: test-oadp-operator operator: bundles: - - dockerfile_path: build/Dockerfile.bundle + - as: oadp-operator-bundle + dockerfile_path: build/Dockerfile.bundle + skip_building_index: true promotion: to: - excluded_images: @@ -21,8 +23,8 @@ promotion: name: oadp-operator namespace: konveyor - additional_images: + oadp-operator-bundle: oadp-operator-bundle oadp-operator-e2e-tests: test-oadp-operator - oadp-operator-index: ci-index namespace: konveyor tag: oadp-dev resources: diff --git a/ci-operator/jobs/openshift/oadp-operator/openshift-oadp-operator-oadp-1.6-postsubmits.yaml b/ci-operator/jobs/openshift/oadp-operator/openshift-oadp-operator-oadp-1.6-postsubmits.yaml index 0890fd1aa182d..a4ffc5f7b86e6 100644 --- a/ci-operator/jobs/openshift/oadp-operator/openshift-oadp-operator-oadp-1.6-postsubmits.yaml +++ b/ci-operator/jobs/openshift/oadp-operator/openshift-oadp-operator-oadp-1.6-postsubmits.yaml @@ -25,7 +25,7 @@ postsubmits: - --promote - --report-credentials-file=/etc/report/credentials - --target=[images] - - --target=ci-index + - --target=oadp-operator-bundle - --target=test-oadp-operator command: - ci-operator diff --git a/ci-operator/jobs/openshift/oadp-operator/openshift-oadp-operator-oadp-1.6-presubmits.yaml b/ci-operator/jobs/openshift/oadp-operator/openshift-oadp-operator-oadp-1.6-presubmits.yaml index 8d0800ecf3ad3..456f72e5b6a0c 100644 --- a/ci-operator/jobs/openshift/oadp-operator/openshift-oadp-operator-oadp-1.6-presubmits.yaml +++ b/ci-operator/jobs/openshift/oadp-operator/openshift-oadp-operator-oadp-1.6-presubmits.yaml @@ -1894,7 +1894,7 @@ presubmits: - ^oadp-1\.6$ - ^oadp-1\.6- cluster: build01 - context: ci/prow/ci-index + context: ci/prow/ci-bundle-oadp-operator-bundle decorate: true decoration_config: sparse_checkout_files: @@ -1903,15 +1903,15 @@ presubmits: labels: ci.openshift.io/generator: prowgen pj-rehearse.openshift.io/can-be-rehearsed: "true" - name: pull-ci-openshift-oadp-operator-oadp-1.6-ci-index - rerun_command: /test ci-index + name: pull-ci-openshift-oadp-operator-oadp-1.6-ci-bundle-oadp-operator-bundle + rerun_command: /test ci-bundle-oadp-operator-bundle spec: containers: - args: - --gcs-upload-secret=/secrets/gcs/service-account.json - --image-import-pull-secret=/etc/pull-secret/.dockerconfigjson - --report-credentials-file=/etc/report/credentials - - --target=ci-index + - --target=oadp-operator-bundle command: - ci-operator image: quay-proxy.ci.openshift.org/openshift/ci:ci_ci-operator_latest @@ -1944,7 +1944,7 @@ presubmits: - name: result-aggregator secret: secretName: result-aggregator - trigger: (?m)^/test( | .* )ci-index,?($|\s.*) + trigger: (?m)^/test( | .* )ci-bundle-oadp-operator-bundle,?($|\s.*) - agent: kubernetes always_run: true branches: @@ -1970,7 +1970,7 @@ presubmits: - --image-import-pull-secret=/etc/pull-secret/.dockerconfigjson - --report-credentials-file=/etc/report/credentials - --target=[images] - - --target=ci-index + - --target=oadp-operator-bundle - --target=test-oadp-operator command: - ci-operator diff --git a/ci-operator/jobs/openshift/oadp-operator/openshift-oadp-operator-oadp-dev-postsubmits.yaml b/ci-operator/jobs/openshift/oadp-operator/openshift-oadp-operator-oadp-dev-postsubmits.yaml index 1e20a7fdb62b1..4aed8eb33a8e7 100644 --- a/ci-operator/jobs/openshift/oadp-operator/openshift-oadp-operator-oadp-dev-postsubmits.yaml +++ b/ci-operator/jobs/openshift/oadp-operator/openshift-oadp-operator-oadp-dev-postsubmits.yaml @@ -25,7 +25,7 @@ postsubmits: - --promote - --report-credentials-file=/etc/report/credentials - --target=[images] - - --target=ci-index + - --target=oadp-operator-bundle - --target=test-oadp-operator command: - ci-operator diff --git a/ci-operator/jobs/openshift/oadp-operator/openshift-oadp-operator-oadp-dev-presubmits.yaml b/ci-operator/jobs/openshift/oadp-operator/openshift-oadp-operator-oadp-dev-presubmits.yaml index 3b9e724bb7536..49c938f9f7380 100644 --- a/ci-operator/jobs/openshift/oadp-operator/openshift-oadp-operator-oadp-dev-presubmits.yaml +++ b/ci-operator/jobs/openshift/oadp-operator/openshift-oadp-operator-oadp-dev-presubmits.yaml @@ -1369,7 +1369,7 @@ presubmits: - ^oadp-dev$ - ^oadp-dev- cluster: build05 - context: ci/prow/ci-index + context: ci/prow/ci-bundle-oadp-operator-bundle decorate: true decoration_config: sparse_checkout_files: @@ -1378,15 +1378,15 @@ presubmits: labels: ci.openshift.io/generator: prowgen pj-rehearse.openshift.io/can-be-rehearsed: "true" - name: pull-ci-openshift-oadp-operator-oadp-dev-ci-index - rerun_command: /test ci-index + name: pull-ci-openshift-oadp-operator-oadp-dev-ci-bundle-oadp-operator-bundle + rerun_command: /test ci-bundle-oadp-operator-bundle spec: containers: - args: - --gcs-upload-secret=/secrets/gcs/service-account.json - --image-import-pull-secret=/etc/pull-secret/.dockerconfigjson - --report-credentials-file=/etc/report/credentials - - --target=ci-index + - --target=oadp-operator-bundle command: - ci-operator image: quay-proxy.ci.openshift.org/openshift/ci:ci_ci-operator_latest @@ -1419,7 +1419,7 @@ presubmits: - name: result-aggregator secret: secretName: result-aggregator - trigger: (?m)^/test( | .* )ci-index,?($|\s.*) + trigger: (?m)^/test( | .* )ci-bundle-oadp-operator-bundle,?($|\s.*) - agent: kubernetes always_run: true branches: @@ -1445,7 +1445,7 @@ presubmits: - --image-import-pull-secret=/etc/pull-secret/.dockerconfigjson - --report-credentials-file=/etc/report/credentials - --target=[images] - - --target=ci-index + - --target=oadp-operator-bundle - --target=test-oadp-operator command: - ci-operator diff --git a/ci-operator/step-registry/optional-operators/operator-sdk/non-ci-bundle-image/optional-operators-operator-sdk-non-ci-bundle-image-commands.sh b/ci-operator/step-registry/optional-operators/operator-sdk/non-ci-bundle-image/optional-operators-operator-sdk-non-ci-bundle-image-commands.sh index 88cb5d7c467fe..70b8e2a6274ec 100755 --- a/ci-operator/step-registry/optional-operators/operator-sdk/non-ci-bundle-image/optional-operators-operator-sdk-non-ci-bundle-image-commands.sh +++ b/ci-operator/step-registry/optional-operators/operator-sdk/non-ci-bundle-image/optional-operators-operator-sdk-non-ci-bundle-image-commands.sh @@ -63,7 +63,7 @@ fi INSTALL_MODE_ARG="" if [[ -n ${OO_INSTALL_MODE} ]]; then - INSTALL_MODE_ARG=--install-mode="${INSTALL_MODE_ARG}" + INSTALL_MODE_ARG=--install-mode="${OO_INSTALL_MODE}" fi ( cd /tmp From 4ab3ce8e148fffbda78abe4930bbbc80e9acb8b7 Mon Sep 17 00:00:00 2001 From: Tiger Kaovilai Date: Tue, 11 Aug 2026 11:30:23 -0400 Subject: [PATCH 9/9] Dump Subscription/CSV on set-related-image timeout for diagnosis If the Deployment env poll times out, we can't yet tell whether OLM failed to propagate Subscription.spec.config.env to an already-Succeeded CSV (the likely cause) versus the Subscription patch having gone to the wrong object. Capture both objects as artifacts so a re-run isn't needed to distinguish them. Signed-off-by: Tiger Kaovilai --- .../migtools-kubevirt-datamover-controller-oadp-1.6.yaml | 2 ++ .../migtools-kubevirt-datamover-controller-oadp-dev.yaml | 2 ++ .../migtools-kubevirt-datamover-plugin-oadp-1.6.yaml | 2 ++ .../migtools-kubevirt-datamover-plugin-oadp-dev.yaml | 2 ++ 4 files changed, 8 insertions(+) diff --git a/ci-operator/config/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-1.6.yaml b/ci-operator/config/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-1.6.yaml index 47c7f2a01dbee..19541bdc52687 100644 --- a/ci-operator/config/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-1.6.yaml +++ b/ci-operator/config/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-1.6.yaml @@ -69,6 +69,8 @@ tests: done if [ "${CURRENT}" != "${KDM_CONTROLLER_IMAGE}" ]; then echo "Timed out waiting for Deployment spec to reflect the Subscription.spec.config.env override" >&2 + oc get subscription "${SUB}" -n "${OO_INSTALL_NAMESPACE}" -o yaml > "${ARTIFACT_DIR}/subscription-${SUB}.yaml" || true + oc get csv -n "${OO_INSTALL_NAMESPACE}" -o yaml > "${ARTIFACT_DIR}/csvs.yaml" || true exit 1 fi oc rollout status deployment/openshift-adp-controller-manager -n "${OO_INSTALL_NAMESPACE}" --timeout=180s diff --git a/ci-operator/config/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev.yaml b/ci-operator/config/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev.yaml index 072af29afb7c3..d57361ac25c3b 100644 --- a/ci-operator/config/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev.yaml +++ b/ci-operator/config/migtools/kubevirt-datamover-controller/migtools-kubevirt-datamover-controller-oadp-dev.yaml @@ -69,6 +69,8 @@ tests: done if [ "${CURRENT}" != "${KDM_CONTROLLER_IMAGE}" ]; then echo "Timed out waiting for Deployment spec to reflect the Subscription.spec.config.env override" >&2 + oc get subscription "${SUB}" -n "${OO_INSTALL_NAMESPACE}" -o yaml > "${ARTIFACT_DIR}/subscription-${SUB}.yaml" || true + oc get csv -n "${OO_INSTALL_NAMESPACE}" -o yaml > "${ARTIFACT_DIR}/csvs.yaml" || true exit 1 fi oc rollout status deployment/openshift-adp-controller-manager -n "${OO_INSTALL_NAMESPACE}" --timeout=180s diff --git a/ci-operator/config/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-1.6.yaml b/ci-operator/config/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-1.6.yaml index f7cc955673864..0fc39b7a8652c 100644 --- a/ci-operator/config/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-1.6.yaml +++ b/ci-operator/config/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-1.6.yaml @@ -69,6 +69,8 @@ tests: done if [ "${CURRENT}" != "${KDM_PLUGIN_IMAGE}" ]; then echo "Timed out waiting for Deployment spec to reflect the Subscription.spec.config.env override" >&2 + oc get subscription "${SUB}" -n "${OO_INSTALL_NAMESPACE}" -o yaml > "${ARTIFACT_DIR}/subscription-${SUB}.yaml" || true + oc get csv -n "${OO_INSTALL_NAMESPACE}" -o yaml > "${ARTIFACT_DIR}/csvs.yaml" || true exit 1 fi oc rollout status deployment/openshift-adp-controller-manager -n "${OO_INSTALL_NAMESPACE}" --timeout=180s diff --git a/ci-operator/config/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev.yaml b/ci-operator/config/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev.yaml index a7b63599c2c93..01232b1c71bcf 100644 --- a/ci-operator/config/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev.yaml +++ b/ci-operator/config/migtools/kubevirt-datamover-plugin/migtools-kubevirt-datamover-plugin-oadp-dev.yaml @@ -69,6 +69,8 @@ tests: done if [ "${CURRENT}" != "${KDM_PLUGIN_IMAGE}" ]; then echo "Timed out waiting for Deployment spec to reflect the Subscription.spec.config.env override" >&2 + oc get subscription "${SUB}" -n "${OO_INSTALL_NAMESPACE}" -o yaml > "${ARTIFACT_DIR}/subscription-${SUB}.yaml" || true + oc get csv -n "${OO_INSTALL_NAMESPACE}" -o yaml > "${ARTIFACT_DIR}/csvs.yaml" || true exit 1 fi oc rollout status deployment/openshift-adp-controller-manager -n "${OO_INSTALL_NAMESPACE}" --timeout=180s