Skip to content

[WIP] CNTRLPLANE-3719: Calico/Cilium jobs for release-5.0#81133

Open
mgencur wants to merge 4 commits into
openshift:mainfrom
mgencur:calico_cilium_5.0
Open

[WIP] CNTRLPLANE-3719: Calico/Cilium jobs for release-5.0#81133
mgencur wants to merge 4 commits into
openshift:mainfrom
mgencur:calico_cilium_5.0

Conversation

@mgencur

@mgencur mgencur commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

https://redhat.atlassian.net/browse/CNTRLPLANE-3719

This PR currently adds only the following configs:

  • e2e-aws-conformance-cilium-private
  • e2e-aws-conformance-calico
  • e2e-aws-conformance-calico-private

The other configs should be migrated after https://redhat.atlassian.net/browse/CNTRLPLANE-3732 because they need to be placed in a different CI config that doesn't exist yet:

  • e2e-kubevirt-metal-conformance-calico
  • e2e-agent-connected-calico-ipv4-metal-conformance
  • e2e-kubevirt-metal-conformance-cilium
  • e2e-agent-connected-cilium-ipv4-metal-conformance

Summary by CodeRabbit

This update moves several HyperShift conformance periodic jobs onto the newer workflow/step-registry layout and expands CI coverage for AWS and KubeVirt bare-metal conformance.

What changed

  • Added new periodic jobs for:
    • AWS Cilium private conformance
    • AWS Calico conformance
    • AWS Calico private conformance
    • KubeVirt metal Cilium conformance
    • KubeVirt metal Calico conformance
  • Migrated the private AWS Calico/Cilium periodics to dedicated hypershift-aws-conformance-* workflows.
  • Added new workflow definitions and metadata entries under the HyperShift step registry for the new conformance jobs.
  • Updated supporting CI logic for:
    • Calico guest-cluster health checks
    • pull-secret rollout waiting
    • CNI provider handling in the AWS create chain
    • additional conformance skip rules for Calico/Cilium jobs

Practical impact

These changes formalize the HyperShift CI path for Calico and Cilium conformance on AWS, including private-cluster variants, while preparing the remaining KubeVirt-metal and agent-connected jobs for a later migration once the required CI config exists.

mgencur and others added 4 commits June 26, 2026 12:01
Port three calico conformance tests from 4.21 to the 4.22 periodics
config: e2e-aws-conformance-calico, e2e-aws-conformance-calico-private,
and e2e-kubevirt-metal-conformance-calico. LVM operator bumped to
stable-4.22; ODF kept at stable-4.21.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…o hypershift step registry

Move cucushift-installer-rehearse-aws-ipi-ovn-hypershift-private-guest-{calico,cilium}
workflows from cucushift/ to hypershift/aws/conformance-{calico,cilium}-private/.
Consolidate TEST_SKIPS into the workflow definitions and remove them from
individual CI configs (4.19-4.22 periodics). Delete the now-unused cucushift
workflow files.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…OCP 5.0

Copy calico and cilium AWS conformance tests from 4.22 periodics to 5.0:
- e2e-aws-conformance-cilium-private
- e2e-aws-conformance-calico
- e2e-aws-conformance-calico-private

Kubevirt-metal variants will be added separately.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@openshift-ci openshift-ci Bot added the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Jun 26, 2026
@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Jun 26, 2026
@openshift-ci-robot

openshift-ci-robot commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

@mgencur: This pull request references CNTRLPLANE-3719 which is a valid jira issue.

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

Details

In response to this:

https://redhat.atlassian.net/browse/CNTRLPLANE-3719

This PR currently adds only the following configs:

  • e2e-aws-conformance-cilium-private
  • e2e-aws-conformance-calico
  • e2e-aws-conformance-calico-private

The other configs should be migrated after https://redhat.atlassian.net/browse/CNTRLPLANE-3732 because they need to be placed in a different CI config that doesn't exist yet:

  • e2e-kubevirt-metal-conformance-calico
  • e2e-agent-connected-calico-ipv4-metal-conformance
  • e2e-kubevirt-metal-conformance-cilium
  • e2e-agent-connected-cilium-ipv4-metal-conformance

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

@coderabbitai

coderabbitai Bot commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

Walkthrough

The PR adds new private HyperShift conformance workflows for cilium and calico, retargets periodic jobs to those workflows, updates shared CNI and rollout-checking scripts, and adjusts kubevirt baremetalds conformance settings and skip lists.

Changes

HyperShift conformance workflow migration

Layer / File(s) Summary
Cilium private workflow migration
ci-operator/step-registry/hypershift/aws/conformance-cilium-private/..., ci-operator/step-registry/cucushift/installer/rehearse/aws/ipi/ovn/hypershift/private/guest/cilium/...
The new cilium private workflow is defined, its metadata path points to the new YAML, and the old private guest cilium workflow file is removed.
Calico private workflow
ci-operator/step-registry/hypershift/aws/conformance-calico-private/...
The new calico private workflow is defined and its metadata path points to the new YAML.
CNI support and skip lists
ci-operator/step-registry/hypershift/aws/create/hypershift-aws-create-chain.yaml, ci-operator/step-registry/hypershift/aws/conformance-cilium/..., ci-operator/step-registry/hypershift/aws/conformance-calico/...
The create chain accepts calico as a CNI provider and applies the load-balancer annotation for cilium and calico, and the cilium and calico conformance workflows update their skip lists.
Calico health-check and pull-secret sync
ci-operator/step-registry/cucushift/hypershift-extended/calico/health-check/..., ci-operator/step-registry/cucushift/hypershift-extended/enable-qe/pull-secret/...
The calico health-check script patches cni-config, restarts calico-node, and waits for status checks, and the pull-secret script waits for MachineDeployment rollout conditions after patching the HostedCluster secret.
KubeVirt baremetalds tweaks
ci-operator/step-registry/hypershift/kubevirt/baremetalds/conformance-calico/..., ci-operator/step-registry/hypershift/kubevirt/baremetalds/conformance-cilium/...
The calico baremetalds workflow adds HYPERSHIFT_NODE_CPU_CORES, and the cilium baremetalds workflow expands TEST_SKIPS with Service endpoint cases.
Periodic job updates
ci-operator/config/openshift/hypershift/openshift-hypershift-release-4.19__periodics.yaml, ci-operator/config/openshift/hypershift/openshift-hypershift-release-4.20__periodics.yaml, ci-operator/config/openshift/hypershift/openshift-hypershift-release-4.21__periodics.yaml, ci-operator/config/openshift/hypershift/openshift-hypershift-release-4.22__periodics.yaml, ci-operator/config/openshift/hypershift/openshift-hypershift-release-5.0__periodics.yaml
Release periodic configs retarget existing private conformance jobs to the new workflows and add new cilium, calico, and kubevirt periodic jobs in later release branches.

Sequence Diagram(s)

sequenceDiagram
  participant HypershiftAwsConformanceCiliumPrivate as "hypershift-aws-conformance-cilium-private"
  participant HypershiftAwsCreateChain as "hypershift-aws-create-chain"
  participant HypershiftConformance as "hypershift-conformance"
  participant ReportPortal
  HypershiftAwsConformanceCiliumPrivate->>HypershiftAwsCreateChain: pre provisioning and enablement steps
  HypershiftAwsConformanceCiliumPrivate->>HypershiftConformance: run conformance tests
  HypershiftAwsConformanceCiliumPrivate->>ReportPortal: send post-run results
Loading

Estimated review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Suggested reviewers

  • sjenning
  • bryan-cox
  • enxebre
🚥 Pre-merge checks | ✅ 14 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Single Node Openshift (Sno) Test Compatibility ⚠️ Warning Added kubevirt-metal conformance jobs use workflows with NUM_MASTERS=3/NUM_WORKERS=0 and no SNO guard, so they assume a multi-node cluster. Add a [Skipped:SingleReplicaTopology] label or runtime SNO skip, or keep these jobs out of SNO-targeted CI configs.
✅ Passed checks (14 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly matches the PR’s main change: adding Calico/Cilium jobs for the 5.0 release.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Stable And Deterministic Test Names ✅ Passed No Ginkgo test titles were added or changed; the PR only updates CI YAML/workflow scripts and static job names.
Test Structure And Quality ✅ Passed PR only touches CI YAML/workflow scripts; no Ginkgo test files or It blocks were modified.
Microshift Test Compatibility ✅ Passed No new Ginkgo test code was added; the PR only changes CI YAML/workflow scripts, so MicroShift API compatibility isn’t implicated.
Topology-Aware Scheduling Compatibility ✅ Passed Only CI workflows/scripts changed; no anti-affinity, topology spread, nodeSelector/affinity, replicas, or control-plane scheduling assumptions were added.
Ote Binary Stdout Contract ✅ Passed Only CI config and shell scripts changed; no OTE binary/main/TestMain code was touched, so stdout contract risk isn't applicable.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed No new Ginkgo test code was added; the PR only changes CI configs/workflow wiring, with no added IPv4 assumptions or external-host dependencies.
No-Weak-Crypto ✅ Passed Inspected all changed configs/scripts; no MD5/SHA1/DES/RC4/3DES/Blowfish/ECB, custom crypto, or non-constant-time secret/token comparisons were introduced.
Container-Privileges ✅ Passed No changed manifest/workflow contains privileged flags; diff scan found no privileged/host*/allowPrivilegeEscalation/SYS_ADMIN/root settings.
No-Sensitive-Data-In-Logs ✅ Passed PASS: The new log lines only announce rollout/wait status; no passwords, tokens, API keys, PII, or hostnames are printed in the added code.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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

@openshift-ci

openshift-ci Bot commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: mgencur
Once this PR has been reviewed and has the lgtm label, please assign enxebre for approval. For more information see the Code Review Process.

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

Details Needs approval from an approver in each of these files:

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

@openshift-ci openshift-ci Bot requested review from bryan-cox and csrwng June 26, 2026 10:07
@mgencur

mgencur commented Jun 26, 2026

Copy link
Copy Markdown
Contributor Author

/pj-rehearse periodic-ci-openshift-hypershift-release-5.0-periodics-e2e-aws-conformance-calico periodic-ci-openshift-hypershift-release-5.0-periodics-e2e-aws-conformance-calico-private periodic-ci-openshift-hypershift-release-5.0-periodics-e2e-aws-conformance-cilium-private

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

@mgencur: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel.

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

[REHEARSALNOTIFIER]
@mgencur: the pj-rehearse plugin accommodates running rehearsal tests for the changes in this PR. Expand 'Interacting with pj-rehearse' for usage details. The following rehearsable tests have been affected by this change:

Test name Repo Type Reason
pull-ci-openshift-origin-main-e2e-hypershift-conformance openshift/origin presubmit Registry content changed
pull-ci-openshift-origin-main-e2e-aws-tls-observed-config-hypershift openshift/origin presubmit Registry content changed
pull-ci-openshift-origin-release-5.1-e2e-hypershift-conformance openshift/origin presubmit Registry content changed
pull-ci-openshift-origin-release-5.1-e2e-aws-tls-observed-config-hypershift openshift/origin presubmit Registry content changed
pull-ci-openshift-origin-release-5.0-e2e-hypershift-conformance openshift/origin presubmit Registry content changed
pull-ci-openshift-origin-release-5.0-e2e-aws-tls-observed-config-hypershift openshift/origin presubmit Registry content changed
pull-ci-openshift-origin-release-4.23-e2e-hypershift-conformance openshift/origin presubmit Registry content changed
pull-ci-openshift-origin-release-4.23-e2e-aws-tls-observed-config-hypershift openshift/origin presubmit Registry content changed
pull-ci-openshift-origin-release-4.22-e2e-hypershift-conformance openshift/origin presubmit Registry content changed
pull-ci-openshift-origin-release-4.21-e2e-hypershift-conformance openshift/origin presubmit Registry content changed
pull-ci-openshift-origin-release-4.20-e2e-hypershift-conformance openshift/origin presubmit Registry content changed
pull-ci-openshift-origin-release-4.19-e2e-hypershift-conformance openshift/origin presubmit Registry content changed
pull-ci-openshift-monitoring-plugin-main-e2e-hypershift-conformance openshift/monitoring-plugin presubmit Registry content changed
pull-ci-openshift-monitoring-plugin-release-5.1-e2e-hypershift-conformance openshift/monitoring-plugin presubmit Registry content changed
pull-ci-openshift-monitoring-plugin-release-5.0-e2e-hypershift-conformance openshift/monitoring-plugin presubmit Registry content changed
pull-ci-openshift-monitoring-plugin-release-4.23-e2e-hypershift-conformance openshift/monitoring-plugin presubmit Registry content changed
pull-ci-openshift-monitoring-plugin-release-4.22-e2e-hypershift-conformance openshift/monitoring-plugin presubmit Registry content changed
pull-ci-openshift-monitoring-plugin-release-4.21-e2e-hypershift-conformance openshift/monitoring-plugin presubmit Registry content changed
pull-ci-openshift-monitoring-plugin-release-4.20-e2e-hypershift-conformance openshift/monitoring-plugin presubmit Registry content changed
pull-ci-openshift-monitoring-plugin-release-4.19-e2e-hypershift-conformance openshift/monitoring-plugin presubmit Registry content changed
pull-ci-openshift-monitoring-plugin-release-4.18-e2e-hypershift-conformance openshift/monitoring-plugin presubmit Registry content changed
pull-ci-openshift-monitoring-plugin-release-coo-ocp-4.19-e2e-hypershift-conformance openshift/monitoring-plugin presubmit Registry content changed
pull-ci-openshift-monitoring-plugin-release-coo-0.5-e2e-hypershift-conformance openshift/monitoring-plugin presubmit Registry content changed
pull-ci-openshift-monitoring-plugin-release-coo-ocp-4.22-e2e-hypershift-conformance openshift/monitoring-plugin presubmit Registry content changed
pull-ci-openshift-cluster-image-registry-operator-main-e2e-hypershift-conformance openshift/cluster-image-registry-operator presubmit Registry content changed

A total of 702 jobs have been affected by this change. The above listing is non-exhaustive and limited to 25 jobs.

A full list of affected jobs can be found here
Prior to this PR being merged, you will need to either run and acknowledge or opt to skip these rehearsals.

Interacting with pj-rehearse

Comment: /pj-rehearse to run up to 5 rehearsals
Comment: /pj-rehearse skip to opt-out of rehearsals
Comment: /pj-rehearse {test-name}, with each test separated by a space, to run one or more specific rehearsals
Comment: /pj-rehearse more to run up to 10 rehearsals
Comment: /pj-rehearse max to run up to 25 rehearsals
Comment: /pj-rehearse auto-ack to run up to 5 rehearsals, and add the rehearsals-ack label on success
Comment: /pj-rehearse list to get an up-to-date list of affected jobs
Comment: /pj-rehearse abort to abort all active rehearsals
Comment: /pj-rehearse network-access-allowed to allow rehearsals of tests that have the restrict_network_access field set to false. This must be executed by an openshift org member who is not the PR author

Once you are satisfied with the results of the rehearsals, comment: /pj-rehearse ack to unblock merge. When the rehearsals-ack label is present on your PR, merge will no longer be blocked by rehearsals.
If you would like the rehearsals-ack label removed, comment: /pj-rehearse reject to re-block merging.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 4

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In
`@ci-operator/step-registry/cucushift/hypershift-extended/calico/health-check/cucushift-hypershift-extended-calico-health-check-commands.sh`:
- Line 22: The cni-config annotation command is not idempotent, so retries can
fail if the annotation already exists. Update the oc annotate invocation in the
calico health-check command script to use --overwrite so repeated runs succeed
cleanly under set -e. Use the existing oc annotate configmap cni-config -n
calico-system unsupported.operator.tigera.io/ignore=true command as the target
to adjust.
- Around line 24-26: The `cniVersion` patch in the calico health-check script is
matching an escaped JSON string, but `oc get cm cni-config -o yaml` exposes the
embedded CNI config as raw text, so the substitution never applies. Update the
patching step in the health-check command script to replace the raw `cniVersion`
value directly, and add a check that confirms `0.4.0` is present in the
ConfigMap output before the `calico-node` restart step runs.

In
`@ci-operator/step-registry/cucushift/hypershift-extended/enable-qe/pull-secret/cucushift-hypershift-extended-enable-qe-pull-secret-commands.sh`:
- Around line 144-148: The MachineDeployment rollout check waits for the
transient RollingOut=True state before waiting for RollingOut=False, which can
fail on fast or skipped transitions under set -e. Update the logic in the loop
that uses oc wait on machinedeployment so it only waits for the terminal
RollingOut=False condition, and remove the initial RollingOut=True wait while
keeping the existing md/MD_NAMESPACE/CLUSTER_NAME lookup flow intact.

In
`@ci-operator/step-registry/hypershift/kubevirt/baremetalds/conformance-cilium/hypershift-kubevirt-baremetalds-conformance-cilium-workflow.yaml`:
- Around line 58-62: The TEST_SKIPS alternation for the KubeVirt
conformance-cilium workflow is too broad because the migration skip lost the
“and live migrate hosted control plane” suffix. Update the skip list in the
workflow definition so the original full KubeVirt migration match is preserved,
and add the new Service-related skips as separate alternation entries without
changing the existing migration scope.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Central YAML (inherited)

Review profile: CHILL

Plan: Enterprise

Run ID: 96785943-fa5c-4036-aab7-dc3bf08db878

📥 Commits

Reviewing files that changed from the base of the PR and between dfc2ca4 and 6b0be1e.

⛔ Files ignored due to path filters (2)
  • ci-operator/jobs/openshift/hypershift/openshift-hypershift-release-4.22-periodics.yaml is excluded by !ci-operator/jobs/**
  • ci-operator/jobs/openshift/hypershift/openshift-hypershift-release-5.0-periodics.yaml is excluded by !ci-operator/jobs/**
📒 Files selected for processing (20)
  • ci-operator/config/openshift/hypershift/openshift-hypershift-release-4.19__periodics.yaml
  • ci-operator/config/openshift/hypershift/openshift-hypershift-release-4.20__periodics.yaml
  • ci-operator/config/openshift/hypershift/openshift-hypershift-release-4.21__periodics.yaml
  • ci-operator/config/openshift/hypershift/openshift-hypershift-release-4.22__periodics.yaml
  • ci-operator/config/openshift/hypershift/openshift-hypershift-release-5.0__periodics.yaml
  • ci-operator/step-registry/cucushift/hypershift-extended/calico/health-check/cucushift-hypershift-extended-calico-health-check-commands.sh
  • ci-operator/step-registry/cucushift/hypershift-extended/enable-qe/pull-secret/cucushift-hypershift-extended-enable-qe-pull-secret-commands.sh
  • ci-operator/step-registry/cucushift/installer/rehearse/aws/ipi/ovn/hypershift/private/guest/calico/cucushift-installer-rehearse-aws-ipi-ovn-hypershift-private-guest-calico-workflow.yaml
  • ci-operator/step-registry/cucushift/installer/rehearse/aws/ipi/ovn/hypershift/private/guest/cilium/cucushift-installer-rehearse-aws-ipi-ovn-hypershift-private-guest-cilium-workflow.yaml
  • ci-operator/step-registry/hypershift/aws/conformance-calico-private/OWNERS
  • ci-operator/step-registry/hypershift/aws/conformance-calico-private/hypershift-aws-conformance-calico-private-workflow.metadata.json
  • ci-operator/step-registry/hypershift/aws/conformance-calico-private/hypershift-aws-conformance-calico-private-workflow.yaml
  • ci-operator/step-registry/hypershift/aws/conformance-calico/hypershift-aws-conformance-calico-workflow.yaml
  • ci-operator/step-registry/hypershift/aws/conformance-cilium-private/OWNERS
  • ci-operator/step-registry/hypershift/aws/conformance-cilium-private/hypershift-aws-conformance-cilium-private-workflow.metadata.json
  • ci-operator/step-registry/hypershift/aws/conformance-cilium-private/hypershift-aws-conformance-cilium-private-workflow.yaml
  • ci-operator/step-registry/hypershift/aws/conformance-cilium/hypershift-aws-conformance-cilium-workflow.yaml
  • ci-operator/step-registry/hypershift/aws/create/hypershift-aws-create-chain.yaml
  • ci-operator/step-registry/hypershift/kubevirt/baremetalds/conformance-calico/hypershift-kubevirt-baremetalds-conformance-calico-workflow.yaml
  • ci-operator/step-registry/hypershift/kubevirt/baremetalds/conformance-cilium/hypershift-kubevirt-baremetalds-conformance-cilium-workflow.yaml
💤 Files with no reviewable changes (2)
  • ci-operator/step-registry/cucushift/installer/rehearse/aws/ipi/ovn/hypershift/private/guest/cilium/cucushift-installer-rehearse-aws-ipi-ovn-hypershift-private-guest-cilium-workflow.yaml
  • ci-operator/step-registry/cucushift/installer/rehearse/aws/ipi/ovn/hypershift/private/guest/calico/cucushift-installer-rehearse-aws-ipi-ovn-hypershift-private-guest-calico-workflow.yaml

oc -n calico-system rollout status ds/calico-node --timeout=15m || true

# Annotate the configmap to prevent the operator from reverting the patch.
oc annotate configmap cni-config -n calico-system unsupported.operator.tigera.io/ignore=true

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🩺 Stability & Availability | 🟡 Minor | ⚡ Quick win

Add --overwrite to keep the annotate idempotent on retries.

Without --overwrite, a re-run (or any prior presence of the annotation) makes oc annotate error, and with set -e the whole step aborts.

🛡️ Proposed fix
-oc annotate configmap cni-config -n calico-system unsupported.operator.tigera.io/ignore=true
+oc annotate configmap cni-config -n calico-system unsupported.operator.tigera.io/ignore=true --overwrite
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
oc annotate configmap cni-config -n calico-system unsupported.operator.tigera.io/ignore=true
oc annotate configmap cni-config -n calico-system unsupported.operator.tigera.io/ignore=true --overwrite
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@ci-operator/step-registry/cucushift/hypershift-extended/calico/health-check/cucushift-hypershift-extended-calico-health-check-commands.sh`
at line 22, The cni-config annotation command is not idempotent, so retries can
fail if the annotation already exists. Update the oc annotate invocation in the
calico health-check command script to use --overwrite so repeated runs succeed
cleanly under set -e. Use the existing oc annotate configmap cni-config -n
calico-system unsupported.operator.tigera.io/ignore=true command as the target
to adjust.

Comment on lines +24 to +26
oc -n calico-system get cm cni-config -o yaml | \
sed 's/\\"cniVersion\\": \\"0.3.1\\"/\\"cniVersion\\": \\"0.4.0\\"/' | \
oc apply -f -

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🩺 Stability & Availability | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Inspect how cniVersion is rendered in the cni-config ConfigMap definition/usage in-repo.
rg -nP --type=sh -C3 'cniVersion|cni-config' ci-operator/step-registry/cucushift/hypershift-extended/calico/

Repository: openshift/release

Length of output: 3130


🏁 Script executed:

#!/bin/bash
set -euo pipefail

file=ci-operator/step-registry/cucushift/hypershift-extended/calico/health-check/cucushift-hypershift-extended-calico-health-check-commands.sh

cat -n "$file" | sed -n '1,120p'

printf '\n--- related matches ---\n'
rg -n --context 2 'unsupported.operator.tigera.io/ignore|cniVersion|cni-config|calico-node' ci-operator/step-registry/cucushift/hypershift-extended/calico/

Repository: openshift/release

Length of output: 5277


🏁 Script executed:

#!/bin/bash
set -euo pipefail

file=ci-operator/step-registry/cucushift/hypershift-extended/calico/health-check/cucushift-hypershift-extended-calico-health-check-commands.sh

cat -n "$file" | sed -n '1,120p'

printf '\n--- related matches ---\n'
rg -n --context 2 'unsupported.operator.tigera.io/ignore|cniVersion|cni-config|calico-node' ci-operator/step-registry/cucushift/hypershift-extended/calico/

Repository: openshift/release

Length of output: 5277


Fix the cniVersion patching step
oc get cm -o yaml emits the embedded CNI config as raw JSON text, so the sed 's/\\"cniVersion\\": \\"0.3.1\\"/\\"cniVersion\\": \\"0.4.0\\"/' expression won’t match. Patch the raw cniVersion value directly and assert 0.4.0 is present before restarting calico-node.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@ci-operator/step-registry/cucushift/hypershift-extended/calico/health-check/cucushift-hypershift-extended-calico-health-check-commands.sh`
around lines 24 - 26, The `cniVersion` patch in the calico health-check script
is matching an escaped JSON string, but `oc get cm cni-config -o yaml` exposes
the embedded CNI config as raw text, so the substitution never applies. Update
the patching step in the health-check command script to replace the raw
`cniVersion` value directly, and add a check that confirms `0.4.0` is present in
the ConfigMap output before the `calico-node` restart step runs.

Comment on lines +144 to +148
for md in $(oc get machinedeployments -n "${MD_NAMESPACE}" -l "cluster.x-k8s.io/cluster-name=${CLUSTER_NAME}" -o jsonpath='{.items[*].metadata.name}'); do
oc wait machinedeployment "${md}" -n "${MD_NAMESPACE}" --for=condition=RollingOut=True --timeout=5m
echo "Waiting for MachineDeployment ${md} to finish rolling out..."
oc wait machinedeployment "${md}" -n "${MD_NAMESPACE}" --for=condition=RollingOut=False --timeout=45m
done

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🩺 Stability & Availability | 🟠 Major

🧩 Analysis chain

🌐 Web query:

What is the RollingOut condition on Cluster API MachineDeployment and in which apiVersion (v1beta1 vs v1beta2) is it available?

💡 Result:

In Cluster API, the RollingOut condition on a MachineDeployment is a status condition that indicates whether the deployment is currently in the process of rolling out new machines [1][2]. This condition is part of the v1beta2 API version [1][3]. It is not available in the v1beta1 API version [1][4]. Key details: - Availability: The RollingOut condition was introduced as part of the v1beta2 API improvements [1][5]. In later versions of Cluster API, these v1beta2 conditions were promoted to the top level of the resource status [4]. - Meaning: The condition is set to True when there is at least one machine managed by the MachineDeployment that is not yet up-to-date with the desired specification [1]. It is set to False when all machines are up-to-date [1]. - Reasons: Common reasons associated with this condition include MachineDeploymentRollingOutV1Beta2Reason (when rolling out) and MachineDeploymentNotRollingOutV1Beta2Reason (when fully updated) [1]. While v1beta1 remains a supported API version for many objects in Cluster API, the advanced status conditions like RollingOut are a defining feature of the v1beta2 contract [1][4].

Citations:


🏁 Script executed:

#!/bin/bash
set -euo pipefail

file='ci-operator/step-registry/cucushift/hypershift-extended/enable-qe/pull-secret/cucushift-hypershift-extended-enable-qe-pull-secret-commands.sh'

# Map the file and inspect the relevant section with line numbers.
wc -l "$file"
sed -n '120,170p' "$file"

Repository: openshift/release

Length of output: 3612


🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Inspect the script for surrounding logic and any shell options that affect failure behavior.
grep -nE 'set -e|set -u|set -o pipefail|RollingOut|machinedeployment|oc wait|pullSecret|patch' \
  'ci-operator/step-registry/cucushift/hypershift-extended/enable-qe/pull-secret/cucushift-hypershift-extended-enable-qe-pull-secret-commands.sh'

Repository: openshift/release

Length of output: 1528


🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Check how Cluster API MachineDeployment conditions are used elsewhere in this repo.
rg -n --no-heading 'RollingOut|MachineDeploymentNotRollingOut|MachineDeploymentRollingOut' ci-operator core-services cluster services projects

Repository: openshift/release

Length of output: 701


🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Read the file from the current repository version to understand the exact wait logic.
nl -ba 'ci-operator/step-registry/cucushift/hypershift-extended/enable-qe/pull-secret/cucushift-hypershift-extended-enable-qe-pull-secret-commands.sh' | sed -n '136,156p'

Repository: openshift/release

Length of output: 195


🏁 Script executed:

#!/bin/bash
set -euo pipefail

file='ci-operator/step-registry/cucushift/hypershift-extended/enable-qe/pull-secret/cucushift-hypershift-extended-enable-qe-pull-secret-commands.sh'
nl -ba "$file" | sed -n '130,160p'

Repository: openshift/release

Length of output: 195


Remove the RollingOut=True wait. Waiting for RollingOut=True before RollingOut=False can miss a fast rollout or one that never exposes the True edge, causing a healthy cluster to fail under set -e. Wait only for the terminal RollingOut=False condition. RollingOut is the v1beta2 MachineDeployment condition.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@ci-operator/step-registry/cucushift/hypershift-extended/enable-qe/pull-secret/cucushift-hypershift-extended-enable-qe-pull-secret-commands.sh`
around lines 144 - 148, The MachineDeployment rollout check waits for the
transient RollingOut=True state before waiting for RollingOut=False, which can
fail on fast or skipped transitions under set -e. Update the logic in the loop
that uses oc wait on machinedeployment so it only waits for the terminal
RollingOut=False condition, and remove the initial RollingOut=True wait while
keeping the existing md/MD_NAMESPACE/CLUSTER_NAME lookup flow intact.

Comment on lines +58 to +62
migration when running openshift cluster on KubeVirt virtual machines\|
Services should fallback to local terminating endpoints
when there are no ready endpoints with externalTrafficPolicy=Local\| Services
should be rejected when no endpoints exist\| Services should be rejected for
evicted pods

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "Inspecting the edited TEST_SKIPS entry and sibling workflow patterns..."
rg -n -C2 'migration when running openshift cluster on KubeVirt virtual machines' \
  ci-operator/step-registry/hypershift/kubevirt/baremetalds

echo
echo "Looking for the full live-migrate literal elsewhere in the repo..."
rg -n -C2 'live migrate hosted control plane' ci-operator/step-registry

Repository: openshift/release

Length of output: 5859


🏁 Script executed:

#!/bin/bash
set -euo pipefail

sed -n '52,66p' ci-operator/step-registry/hypershift/kubevirt/baremetalds/conformance-cilium/hypershift-kubevirt-baremetalds-conformance-cilium-workflow.yaml

echo
python3 - <<'PY'
from pathlib import Path
p = Path("ci-operator/step-registry/hypershift/kubevirt/baremetalds/conformance-cilium/hypershift-kubevirt-baremetalds-conformance-cilium-workflow.yaml")
for i, line in enumerate(p.read_text().splitlines(), 1):
    if 55 <= i <= 62:
        print(f"{i}: {line!r}")
PY

Repository: openshift/release

Length of output: 1656


Restore the full KubeVirt migration skip The TEST_SKIPS alternation was shortened to migration when running openshift cluster on KubeVirt virtual machines, which widens the match beyond the original live-migrate case. Keep the and live migrate hosted control plane suffix here and add the new Service skips separately.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@ci-operator/step-registry/hypershift/kubevirt/baremetalds/conformance-cilium/hypershift-kubevirt-baremetalds-conformance-cilium-workflow.yaml`
around lines 58 - 62, The TEST_SKIPS alternation for the KubeVirt
conformance-cilium workflow is too broad because the migration skip lost the
“and live migrate hosted control plane” suffix. Update the skip list in the
workflow definition so the original full KubeVirt migration match is preserved,
and add the new Service-related skips as separate alternation entries without
changing the existing migration scope.

@openshift-ci

openshift-ci Bot commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

@mgencur: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
ci/rehearse/periodic-ci-openshift-hypershift-release-5.0-periodics-e2e-aws-conformance-calico 6b0be1e link unknown /pj-rehearse periodic-ci-openshift-hypershift-release-5.0-periodics-e2e-aws-conformance-calico
ci/rehearse/periodic-ci-openshift-hypershift-release-5.0-periodics-e2e-aws-conformance-calico-private 6b0be1e link unknown /pj-rehearse periodic-ci-openshift-hypershift-release-5.0-periodics-e2e-aws-conformance-calico-private
ci/rehearse/periodic-ci-openshift-hypershift-release-5.0-periodics-e2e-aws-conformance-cilium-private 6b0be1e link unknown /pj-rehearse periodic-ci-openshift-hypershift-release-5.0-periodics-e2e-aws-conformance-cilium-private

Full PR test history. Your PR dashboard.

Details

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants