Skip to content

OCPBUGS-65957: test(e2e): fix TestNodePool test failure when installing cilium as external cni - #7263

Closed
wewang58 wants to merge 1 commit into
openshift:mainfrom
wewang58:fix_TestNodePool_failure
Closed

OCPBUGS-65957: test(e2e): fix TestNodePool test failure when installing cilium as external cni#7263
wewang58 wants to merge 1 commit into
openshift:mainfrom
wewang58:fix_TestNodePool_failure

Conversation

@wewang58

@wewang58 wewang58 commented Nov 20, 2025

Copy link
Copy Markdown
Contributor

What this PR does / why we need it:

The pr update NodePoolReplicas is 1 for NodePoolTests, because On ARO HCP with Cilium, we need at least one worker node to install cilium-olm operator before individual tests run

Which issue(s) this PR fixes:

Fixes:

 TestNodePool/HostedCluster0/ValidateHostedCluster/InstallCilium/InstallCilium expand_less 	10m1s
{Failed  === RUN   TestNodePool/HostedCluster0/ValidateHostedCluster/InstallCilium/InstallCilium
    util.go:1296: Installing Cilium operator version 1.15.1
    util.go:1315: Applying manifest from https://raw.githubusercontent.com/isovalent/olm-for-cilium/main/manifests/cilium.v1.15.1/cluster-network-03-cilium-ciliumconfigs-crd.yaml
    util.go:1315: Applying manifest from https://raw.githubusercontent.com/isovalent/olm-for-cilium/main/manifests/cilium.v1.15.1/cluster-network-06-cilium-00000-cilium-namespace.yaml
    util.go:1315: Applying manifest from https://raw.githubusercontent.com/isovalent/olm-for-cilium/main/manifests/cilium.v1.15.1/cluster-network-06-cilium-00001-cilium-olm-serviceaccount.yaml
    util.go:1315: Applying manifest from https://raw.githubusercontent.com/isovalent/olm-for-cilium/main/manifests/cilium.v1.15.1/cluster-network-06-cilium-00002-cilium-olm-deployment.yaml
    util.go:1321: Verifying Cilium resources creation
    util.go:1329: Waiting for cilium-olm deployment to be ready
    util.go:1338: 
        Timed out after 600.001s.
        cilium-olm deployment should be ready
        Expected
            <bool>: false
        to be true
                --- FAIL: TestNodePool/HostedCluster0/ValidateHostedCluster/InstallCilium/InstallCilium (600.59s)

Special notes for your reviewer:

The pr is depend on :#7077, because ExternalCNIProvider is defined in pr7077

Checklist:

  • Subject and description added to both, commit and PR.
  • Relevant issues have been referenced.
  • This change includes docs.
  • This change includes unit tests.

Summary by CodeRabbit

  • Tests
    • Improved test behavior for Azure (ARO HCP) environments using Cilium: tests now ensure at least one worker node is present so the Cilium operator can deploy successfully, preventing false failures in those platform-specific scenarios.

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

Copy link
Copy Markdown

@wewang58: This pull request explicitly references no jira issue.

Details

In response to this:

What this PR does / why we need it:

The pr update NodePoolReplicas is 1 for NodePoolTests, because On ARO HCP with Cilium, we need at least one worker node to install cilium-olm operator before individual tests run

Which issue(s) this PR fixes:

Fixes::```
TestNodePool/HostedCluster0/ValidateHostedCluster/InstallCilium/InstallCilium expand_less 10m1s
{Failed === RUN TestNodePool/HostedCluster0/ValidateHostedCluster/InstallCilium/InstallCilium
util.go:1296: Installing Cilium operator version 1.15.1
util.go:1315: Applying manifest from https://raw.githubusercontent.com/isovalent/olm-for-cilium/main/manifests/cilium.v1.15.1/cluster-network-03-cilium-ciliumconfigs-crd.yaml
util.go:1315: Applying manifest from https://raw.githubusercontent.com/isovalent/olm-for-cilium/main/manifests/cilium.v1.15.1/cluster-network-06-cilium-00000-cilium-namespace.yaml
util.go:1315: Applying manifest from https://raw.githubusercontent.com/isovalent/olm-for-cilium/main/manifests/cilium.v1.15.1/cluster-network-06-cilium-00001-cilium-olm-serviceaccount.yaml
util.go:1315: Applying manifest from https://raw.githubusercontent.com/isovalent/olm-for-cilium/main/manifests/cilium.v1.15.1/cluster-network-06-cilium-00002-cilium-olm-deployment.yaml
util.go:1315: Applying manifest from https://raw.githubusercontent.com/isovalent/olm-for-cilium/main/manifests/cilium.v1.15.1/cluster-network-06-cilium-00003-cilium-olm-service.yaml
util.go:1315: Applying manifest from https://raw.githubusercontent.com/isovalent/olm-for-cilium/main/manifests/cilium.v1.15.1/cluster-network-06-cilium-00004-cilium-olm-leader-election-role.yaml
util.go:1315: Applying manifest from https://raw.githubusercontent.com/isovalent/olm-for-cilium/main/manifests/cilium.v1.15.1/cluster-network-06-cilium-00005-cilium-olm-role.yaml
util.go:1315: Applying manifest from https://raw.githubusercontent.com/isovalent/olm-for-cilium/main/manifests/cilium.v1.15.1/cluster-network-06-cilium-00006-leader-election-rolebinding.yaml
util.go:1315: Applying manifest from https://raw.githubusercontent.com/isovalent/olm-for-cilium/main/manifests/cilium.v1.15.1/cluster-network-06-cilium-00007-cilium-olm-rolebinding.yaml
util.go:1315: Applying manifest from https://raw.githubusercontent.com/isovalent/olm-for-cilium/main/manifests/cilium.v1.15.1/cluster-network-06-cilium-00008-cilium-cilium-olm-clusterrole.yaml
util.go:1315: Applying manifest from https://raw.githubusercontent.com/isovalent/olm-for-cilium/main/manifests/cilium.v1.15.1/cluster-network-06-cilium-00009-cilium-cilium-clusterrole.yaml
util.go:1315: Applying manifest from https://raw.githubusercontent.com/isovalent/olm-for-cilium/main/manifests/cilium.v1.15.1/cluster-network-06-cilium-00010-cilium-cilium-olm-clusterrolebinding.yaml
util.go:1315: Applying manifest from https://raw.githubusercontent.com/isovalent/olm-for-cilium/main/manifests/cilium.v1.15.1/cluster-network-06-cilium-00011-cilium-cilium-clusterrolebinding.yaml
util.go:1321: Verifying Cilium resources creation
util.go:1329: Waiting for cilium-olm deployment to be ready
util.go:1338:
Timed out after 600.001s.
cilium-olm deployment should be ready
Expected
: false
to be true
--- FAIL: TestNodePool/HostedCluster0/ValidateHostedCluster/InstallCilium/InstallCilium (600.59s)

## Special notes for your reviewer:
The pr is depend on :https://github.com/openshift/hypershift/pull/7077, because ExternalCNIProvider is defined in pr7077

## Checklist:
- [ ] Subject and description added to both, commit and PR.
- [ ] Relevant issues have been referenced.
- [ ] This change includes docs. 
- [ ] This change includes unit tests.

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 Nov 20, 2025

Copy link
Copy Markdown
Contributor

Walkthrough

Adds a platform-specific guard in the node pool test to ensure at least one worker node exists when running on Azure (ARO HCP) with Cilium as the external CNI by setting NodePoolReplicas to 1 in that scenario.

Changes

Cohort / File(s) Summary
Platform-specific node pool configuration
test/e2e/nodepool_test.go
Adds a conditional in executeNodePoolTests that sets NodePoolReplicas = 1 when platform is Azure (ARO HCP) and external CNI is Cilium, ensuring cilium-olm can deploy.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (2 warnings)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Test Structure And Quality ⚠️ Warning Code references non-existent ExternalCNIProvider field on PlatformAgnosticOptions struct, blocking compilation. Add ExternalCNIProvider field to PlatformAgnosticOptions or core.RawCreateOptions struct, pending PR 7077 dependency.
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly references the specific test failure (TestNodePool) and the root cause (installing cilium as external CNI), directly matching the changes in the PR.
Stable And Deterministic Test Names ✅ Passed PR modifies test setup logic conditionally setting NodePoolReplicas based on platform and CNI provider, without introducing dynamic content into static test name declarations.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 golangci-lint (2.5.0)

Error: can't load config: unsupported version of the configuration: "" See https://golangci-lint.run/docs/product/migration-guide for migration instructions
The command is terminated due to an error: can't load config: unsupported version of the configuration: "" See https://golangci-lint.run/docs/product/migration-guide for migration instructions

Tip

Try Coding Plans. Let us write the prompt for your AI agent so you can ship faster (with fewer bugs).
Share your feedback on Discord.


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

@openshift-ci openshift-ci Bot added do-not-merge/needs-area do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. labels Nov 20, 2025
@openshift-ci

openshift-ci Bot commented Nov 20, 2025

Copy link
Copy Markdown
Contributor

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

@openshift-ci openshift-ci Bot added the area/testing Indicates the PR includes changes for e2e testing label Nov 20, 2025
@openshift-ci

openshift-ci Bot commented Nov 20, 2025

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: wewang58
Once this PR has been reviewed and has the lgtm label, please assign csrwng 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

@wewang58

Copy link
Copy Markdown
Contributor Author

e2e test : TestNodePool/HostedCluster0/ValidateHostedCluster/InstallCilium/InstallCilium and TestNodePool/HostedCluster2/ValidateHostedCluster/InstallCilium/InstallCilium passed in the job, other TestNodePool/HostedCluster2/Main/TestAdditionalTrustBundlePropagation/AdditionalTrustBundlePropagationTest expand_more failure seems it's not related.

@celebdor celebdor changed the title NO-JIRA: test(e2e): fix TestNodePool test failure when installing cilium as external cni OCPBUGS-65957: test(e2e): fix TestNodePool test failure when installing cilium as external cni Dec 1, 2025
@openshift-ci-robot openshift-ci-robot added jira/severity-low Referenced Jira bug's severity is low for the branch this PR is targeting. jira/invalid-bug Indicates that a referenced Jira bug is invalid for the branch this PR is targeting. labels Dec 1, 2025
@openshift-ci-robot

Copy link
Copy Markdown

@wewang58: This pull request references Jira Issue OCPBUGS-65957, which is invalid:

  • expected the bug to target the "4.21.0" version, but no target version was set

Comment /jira refresh to re-evaluate validity if changes to the Jira bug are made, or edit the title of this pull request to link to a different bug.

The bug has been updated to refer to the pull request using the external bug tracker.

Details

In response to this:

What this PR does / why we need it:

The pr update NodePoolReplicas is 1 for NodePoolTests, because On ARO HCP with Cilium, we need at least one worker node to install cilium-olm operator before individual tests run

Which issue(s) this PR fixes:

Fixes:

TestNodePool/HostedCluster0/ValidateHostedCluster/InstallCilium/InstallCilium expand_less 	10m1s
{Failed  === RUN   TestNodePool/HostedCluster0/ValidateHostedCluster/InstallCilium/InstallCilium
   util.go:1296: Installing Cilium operator version 1.15.1
   util.go:1315: Applying manifest from https://raw.githubusercontent.com/isovalent/olm-for-cilium/main/manifests/cilium.v1.15.1/cluster-network-03-cilium-ciliumconfigs-crd.yaml
   util.go:1315: Applying manifest from https://raw.githubusercontent.com/isovalent/olm-for-cilium/main/manifests/cilium.v1.15.1/cluster-network-06-cilium-00000-cilium-namespace.yaml
   util.go:1315: Applying manifest from https://raw.githubusercontent.com/isovalent/olm-for-cilium/main/manifests/cilium.v1.15.1/cluster-network-06-cilium-00001-cilium-olm-serviceaccount.yaml
   util.go:1315: Applying manifest from https://raw.githubusercontent.com/isovalent/olm-for-cilium/main/manifests/cilium.v1.15.1/cluster-network-06-cilium-00002-cilium-olm-deployment.yaml
   util.go:1321: Verifying Cilium resources creation
   util.go:1329: Waiting for cilium-olm deployment to be ready
   util.go:1338: 
       Timed out after 600.001s.
       cilium-olm deployment should be ready
       Expected
           <bool>: false
       to be true
               --- FAIL: TestNodePool/HostedCluster0/ValidateHostedCluster/InstallCilium/InstallCilium (600.59s)

Special notes for your reviewer:

The pr is depend on :#7077, because ExternalCNIProvider is defined in pr7077

Checklist:

  • Subject and description added to both, commit and PR.
  • Relevant issues have been referenced.
  • This change includes docs.
  • This change includes unit tests.

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.

@wewang58

wewang58 commented Dec 2, 2025

Copy link
Copy Markdown
Contributor Author

/jira refresh

@openshift-ci-robot openshift-ci-robot added jira/valid-bug Indicates that a referenced Jira bug is valid for the branch this PR is targeting. and removed jira/invalid-bug Indicates that a referenced Jira bug is invalid for the branch this PR is targeting. labels Dec 2, 2025
@openshift-ci-robot

Copy link
Copy Markdown

@wewang58: This pull request references Jira Issue OCPBUGS-65957, which is valid.

3 validation(s) were run on this bug
  • bug is open, matching expected state (open)
  • bug target version (4.21.0) matches configured target version for branch (4.21.0)
  • bug is in the state POST, which is one of the valid states (NEW, ASSIGNED, POST)

Requesting review from QA contact:
/cc @wewang58

Details

In response to this:

/jira refresh

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

@openshift-ci

openshift-ci Bot commented Dec 2, 2025

Copy link
Copy Markdown
Contributor

@openshift-ci-robot: GitHub didn't allow me to request PR reviews from the following users: wewang58.

Note that only openshift members and repo collaborators can review this PR, and authors cannot review their own PRs.

Details

In response to this:

@wewang58: This pull request references Jira Issue OCPBUGS-65957, which is valid.

3 validation(s) were run on this bug
  • bug is open, matching expected state (open)
  • bug target version (4.21.0) matches configured target version for branch (4.21.0)
  • bug is in the state POST, which is one of the valid states (NEW, ASSIGNED, POST)

Requesting review from QA contact:
/cc @wewang58

In response to this:

/jira refresh

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

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

@wewang58

wewang58 commented Mar 3, 2026

Copy link
Copy Markdown
Contributor Author

Since #7423 is merged, the pr can be reviewed.

@wewang58
wewang58 marked this pull request as ready for review March 3, 2026 01:44
@openshift-ci openshift-ci Bot removed the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Mar 3, 2026
@openshift-ci
openshift-ci Bot requested review from devguyio and sjenning March 3, 2026 01:46
@openshift-ci-robot openshift-ci-robot added jira/invalid-bug Indicates that a referenced Jira bug is invalid for the branch this PR is targeting. and removed jira/valid-bug Indicates that a referenced Jira bug is valid for the branch this PR is targeting. labels Mar 3, 2026
@openshift-ci-robot

Copy link
Copy Markdown

@wewang58: This pull request references Jira Issue OCPBUGS-65957, which is invalid:

  • expected the bug to target either version "4.22." or "openshift-4.22.", but it targets "4.21.z" instead

Comment /jira refresh to re-evaluate validity if changes to the Jira bug are made, or edit the title of this pull request to link to a different bug.

Details

In response to this:

What this PR does / why we need it:

The pr update NodePoolReplicas is 1 for NodePoolTests, because On ARO HCP with Cilium, we need at least one worker node to install cilium-olm operator before individual tests run

Which issue(s) this PR fixes:

Fixes:

TestNodePool/HostedCluster0/ValidateHostedCluster/InstallCilium/InstallCilium expand_less 	10m1s
{Failed  === RUN   TestNodePool/HostedCluster0/ValidateHostedCluster/InstallCilium/InstallCilium
   util.go:1296: Installing Cilium operator version 1.15.1
   util.go:1315: Applying manifest from https://raw.githubusercontent.com/isovalent/olm-for-cilium/main/manifests/cilium.v1.15.1/cluster-network-03-cilium-ciliumconfigs-crd.yaml
   util.go:1315: Applying manifest from https://raw.githubusercontent.com/isovalent/olm-for-cilium/main/manifests/cilium.v1.15.1/cluster-network-06-cilium-00000-cilium-namespace.yaml
   util.go:1315: Applying manifest from https://raw.githubusercontent.com/isovalent/olm-for-cilium/main/manifests/cilium.v1.15.1/cluster-network-06-cilium-00001-cilium-olm-serviceaccount.yaml
   util.go:1315: Applying manifest from https://raw.githubusercontent.com/isovalent/olm-for-cilium/main/manifests/cilium.v1.15.1/cluster-network-06-cilium-00002-cilium-olm-deployment.yaml
   util.go:1321: Verifying Cilium resources creation
   util.go:1329: Waiting for cilium-olm deployment to be ready
   util.go:1338: 
       Timed out after 600.001s.
       cilium-olm deployment should be ready
       Expected
           <bool>: false
       to be true
               --- FAIL: TestNodePool/HostedCluster0/ValidateHostedCluster/InstallCilium/InstallCilium (600.59s)

Special notes for your reviewer:

The pr is depend on :#7077, because ExternalCNIProvider is defined in pr7077

Checklist:

  • Subject and description added to both, commit and PR.
  • Relevant issues have been referenced.
  • This change includes docs.
  • This change includes unit tests.

Summary by CodeRabbit

  • Tests
  • Improved test validation for Azure deployments with Cilium to ensure proper cluster configuration.

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.

@wewang58

wewang58 commented Mar 4, 2026

Copy link
Copy Markdown
Contributor Author

/retest

@openshift-ci

openshift-ci Bot commented Mar 4, 2026

Copy link
Copy Markdown
Contributor

@wewang58: The following test 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/prow/e2e-aws-4-21 c3da0bc link true /test e2e-aws-4-21

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.

…ternal cni

This commit fixes the TestNodePool test failure when installing cilium
as an external CNI by adjusting the test assertions and configurations
to account for external CNIs.
@wewang58
wewang58 force-pushed the fix_TestNodePool_failure branch from c3da0bc to a7f35f1 Compare March 6, 2026 01:54
@openshift-ci-robot

Copy link
Copy Markdown

@wewang58: This pull request references Jira Issue OCPBUGS-65957, which is invalid:

  • expected the bug to target either version "4.22." or "openshift-4.22.", but it targets "4.21.z" instead

Comment /jira refresh to re-evaluate validity if changes to the Jira bug are made, or edit the title of this pull request to link to a different bug.

Details

In response to this:

What this PR does / why we need it:

The pr update NodePoolReplicas is 1 for NodePoolTests, because On ARO HCP with Cilium, we need at least one worker node to install cilium-olm operator before individual tests run

Which issue(s) this PR fixes:

Fixes:

TestNodePool/HostedCluster0/ValidateHostedCluster/InstallCilium/InstallCilium expand_less 	10m1s
{Failed  === RUN   TestNodePool/HostedCluster0/ValidateHostedCluster/InstallCilium/InstallCilium
   util.go:1296: Installing Cilium operator version 1.15.1
   util.go:1315: Applying manifest from https://raw.githubusercontent.com/isovalent/olm-for-cilium/main/manifests/cilium.v1.15.1/cluster-network-03-cilium-ciliumconfigs-crd.yaml
   util.go:1315: Applying manifest from https://raw.githubusercontent.com/isovalent/olm-for-cilium/main/manifests/cilium.v1.15.1/cluster-network-06-cilium-00000-cilium-namespace.yaml
   util.go:1315: Applying manifest from https://raw.githubusercontent.com/isovalent/olm-for-cilium/main/manifests/cilium.v1.15.1/cluster-network-06-cilium-00001-cilium-olm-serviceaccount.yaml
   util.go:1315: Applying manifest from https://raw.githubusercontent.com/isovalent/olm-for-cilium/main/manifests/cilium.v1.15.1/cluster-network-06-cilium-00002-cilium-olm-deployment.yaml
   util.go:1321: Verifying Cilium resources creation
   util.go:1329: Waiting for cilium-olm deployment to be ready
   util.go:1338: 
       Timed out after 600.001s.
       cilium-olm deployment should be ready
       Expected
           <bool>: false
       to be true
               --- FAIL: TestNodePool/HostedCluster0/ValidateHostedCluster/InstallCilium/InstallCilium (600.59s)

Special notes for your reviewer:

The pr is depend on :#7077, because ExternalCNIProvider is defined in pr7077

Checklist:

  • Subject and description added to both, commit and PR.
  • Relevant issues have been referenced.
  • This change includes docs.
  • This change includes unit tests.

Summary by CodeRabbit

  • Tests
  • Improved test behavior for Azure (ARO HCP) environments using Cilium: tests now ensure at least one worker node is present so the Cilium operator can deploy successfully, preventing false failures in those platform-specific scenarios.

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 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: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@test/e2e/nodepool_test.go`:
- Around line 213-217: The code references clusterOpts.ExternalCNIProvider which
doesn't exist; add a new field ExternalCNIProvider string to the
PlatformAgnosticOptions struct (or to its embedded core.RawCreateOptions if you
prefer centralizing raw flags) and wire it into any flag/option parsing so
clusterOpts.ExternalCNIProvider is populated before the check in
nodepool_test.go; ensure the new field name matches the check and update
usages/tests accordingly.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository: openshift/coderabbit/.coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: a74e7e46-8812-4abe-a49f-a1c8738ecbb0

📥 Commits

Reviewing files that changed from the base of the PR and between c3da0bc and a7f35f1.

📒 Files selected for processing (1)
  • test/e2e/nodepool_test.go

Comment thread test/e2e/nodepool_test.go
Comment on lines +213 to +217
// On ARO HCP with Cilium, we need at least one worker node to install cilium-olm operator
// before individual tests run. The cilium-olm deployment requires worker nodes to schedule its pods.
if globalOpts.Platform == hyperv1.AzurePlatform && clusterOpts.ExternalCNIProvider == "cilium" {
clusterOpts.NodePoolReplicas = 1
}

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.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Verify ExternalCNIProvider field definition and usage patterns

echo "=== ExternalCNIProvider field definition and usage ==="
rg -n 'ExternalCNIProvider' --type=go -B2 -A2

echo ""
echo "=== Cilium provider references with context ==="
rg -n '"cilium"' --type=go -B2 -A2

Repository: openshift/hypershift

Length of output: 3461


🏁 Script executed:

#!/bin/bash
# Find ExternalCNIProvider definition and assignment patterns

echo "=== Search for ExternalCNIProvider struct/field definition ==="
rg -n 'ExternalCNIProvider' --type=go

echo ""
echo "=== Search for other CNI provider strings (openstack, none, etc.) ==="
rg -n '"openstack"|"none"|"aws"|"external"' --type=go | grep -i cni | head -20

echo ""
echo "=== Search for CNI provider enum or constant definitions ==="
rg -n 'const.*CNI|type.*CNI' --type=go | head -20

echo ""
echo "=== Check clusterOpts structure around line 213 ==="
sed -n '190,230p' test/e2e/nodepool_test.go

Repository: openshift/hypershift

Length of output: 3103


🏁 Script executed:

#!/bin/bash
# Find DefaultClusterOptions function and struct definition

echo "=== Search for DefaultClusterOptions function ==="
rg -n 'func.*DefaultClusterOptions' --type=go -A10

echo ""
echo "=== Search for struct containing ExternalCNIProvider ==="
rg -n 'type.*struct' --type=go | head -30

echo ""
echo "=== Search for ExternalCNIProvider assignment/initialization ==="
rg -n 'ExternalCNIProvider\s*=' --type=go

echo ""
echo "=== Broader search for ExternalCNIProvider in all files ==="
find . -name "*.go" -type f ! -path "*/vendor/*" -exec grep -l "ExternalCNIProvider" {} \;

Repository: openshift/hypershift

Length of output: 3940


🏁 Script executed:

#!/bin/bash
# Find PlatformAgnosticOptions struct definition

echo "=== Search for PlatformAgnosticOptions struct definition ==="
rg -n 'type PlatformAgnosticOptions' --type=go -A50

echo ""
echo "=== Check full DefaultClusterOptions function ==="
sed -n '181,250p' test/e2e/util/options.go

Repository: openshift/hypershift

Length of output: 6735


🏁 Script executed:

#!/bin/bash
# Search for ExternalCNIProvider in core package

echo "=== Search for core.RawCreateOptions struct definition ==="
rg -n 'type RawCreateOptions' --type=go -A50 | head -100

echo ""
echo "=== Direct search for ExternalCNIProvider in all non-vendor Go files ==="
find . -name "*.go" -type f ! -path "*/vendor/*" -exec grep -l "ExternalCNIProvider" {} \;

echo ""
echo "=== Check if code compiles by looking for test files ==="
ls -la test/e2e/nodepool_test.go

Repository: openshift/hypershift

Length of output: 7315


🏁 Script executed:

#!/bin/bash
# Find core package RawCreateOptions

echo "=== Search for core.RawCreateOptions in cmd/cluster/core ==="
find cmd/cluster/core -name "*.go" -exec grep -l "type RawCreateOptions" {} \;

echo ""
echo "=== Read the core RawCreateOptions struct ==="
find cmd/cluster/core -name "*.go" -exec grep -n "type RawCreateOptions" -A100 {} + | head -150

Repository: openshift/hypershift

Length of output: 7182


Code will not compile — ExternalCNIProvider field does not exist on clusterOpts.

The referenced field clusterOpts.ExternalCNIProvider does not exist in either the PlatformAgnosticOptions struct or its embedded core.RawCreateOptions struct. The field would need to be added to one of these structs before this code can compile.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@test/e2e/nodepool_test.go` around lines 213 - 217, The code references
clusterOpts.ExternalCNIProvider which doesn't exist; add a new field
ExternalCNIProvider string to the PlatformAgnosticOptions struct (or to its
embedded core.RawCreateOptions if you prefer centralizing raw flags) and wire it
into any flag/option parsing so clusterOpts.ExternalCNIProvider is populated
before the check in nodepool_test.go; ensure the new field name matches the
check and update usages/tests accordingly.

@wewang58

wewang58 commented Mar 6, 2026

Copy link
Copy Markdown
Contributor Author

/jira refresh

@openshift-ci-robot

Copy link
Copy Markdown

@wewang58: This pull request references Jira Issue OCPBUGS-65957, which is invalid:

  • expected the bug to target either version "4.22." or "openshift-4.22.", but it targets "4.21.z" instead

Comment /jira refresh to re-evaluate validity if changes to the Jira bug are made, or edit the title of this pull request to link to a different bug.

Details

In response to this:

/jira refresh

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.

@wewang58

wewang58 commented Mar 6, 2026

Copy link
Copy Markdown
Contributor Author

/jira refresh

@openshift-ci-robot openshift-ci-robot added jira/valid-bug Indicates that a referenced Jira bug is valid for the branch this PR is targeting. and removed jira/invalid-bug Indicates that a referenced Jira bug is invalid for the branch this PR is targeting. labels Mar 6, 2026
@openshift-ci-robot

Copy link
Copy Markdown

@wewang58: This pull request references Jira Issue OCPBUGS-65957, which is valid.

3 validation(s) were run on this bug
  • bug is open, matching expected state (open)
  • bug target version (4.22.0) matches configured target version for branch (4.22.0)
  • bug is in the state POST, which is one of the valid states (NEW, ASSIGNED, POST)

Requesting review from QA contact:
/cc @wewang58

Details

In response to this:

/jira refresh

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

@openshift-ci

openshift-ci Bot commented Mar 6, 2026

Copy link
Copy Markdown
Contributor

@openshift-ci-robot: GitHub didn't allow me to request PR reviews from the following users: wewang58.

Note that only openshift members and repo collaborators can review this PR, and authors cannot review their own PRs.

Details

In response to this:

@wewang58: This pull request references Jira Issue OCPBUGS-65957, which is valid.

3 validation(s) were run on this bug
  • bug is open, matching expected state (open)
  • bug target version (4.22.0) matches configured target version for branch (4.22.0)
  • bug is in the state POST, which is one of the valid states (NEW, ASSIGNED, POST)

Requesting review from QA contact:
/cc @wewang58

In response to this:

/jira refresh

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

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

@wewang58

wewang58 commented Mar 9, 2026

Copy link
Copy Markdown
Contributor Author

/retest

@wewang58

Copy link
Copy Markdown
Contributor Author

/retest-required

@wewang58

Copy link
Copy Markdown
Contributor Author

/retest

@wewang58

Copy link
Copy Markdown
Contributor Author

/test e2e-aks-cilium

@openshift-bot

Copy link
Copy Markdown

Stale PRs are closed after 21d of inactivity.

If this PR is still relevant, comment to refresh it or remove the stale label.
Mark the PR as fresh by commenting /remove-lifecycle stale.

If this PR is safe to close now please do so with /close.

/lifecycle stale

@openshift-ci openshift-ci Bot added the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Apr 22, 2026
@hypershift-jira-solve-ci

Copy link
Copy Markdown
Contributor

Test Failure Analysis Complete

Job Information

Test Failure Analysis

Error

enterprise-contract-mce-211 / hypershift-cli-mce-211: 258 success, 99 warnings, 2 failures
hypershift-operator-enterprise-contract / hypershift-operator-main: 236 success, 6 warnings, 60 failures
hypershift-operator-main-enterprise-contract / hypershift-operator-main: 236 success, 6 warnings, 60 failures

Summary

These three failures are not caused by the PR's code changes (which only touch test/e2e/nodepool_test.go). They are Red Hat Konflux Enterprise Contract (EC) verification failures caused by stale Konflux pipeline configuration from the MCE 2.11 era. PR #7263 was created on 2025-11-20 when mce-211 Tekton pipelines were active. Those pipelines were replaced by mce-217 on 2026-02-17, and later by mce-50 on 2026-04-20. However, the Konflux Application and IntegrationTestScenarios for mce-211 still exist in the crt-redhat-acm-tenant namespace, so Konflux continues to run the obsolete EC checks against PR #7263's snapshots. Other open PRs on main created after the migration run mce-217 or mce-50 EC checks and pass or report NEUTRAL. The build pipelines themselves pass (-on-pull-request checks all succeed); only the post-build EC policy verification fails because the snapshots were built with outdated Tekton tasks that no longer satisfy current EC policy requirements.

Root Cause

The root cause is a stale Konflux pipeline association for this long-lived PR:

  1. MCE 2.11 pipeline era (2025-11-06): .tekton/hypershift-cli-mce-211-*.yaml files were added to the repo, creating the Konflux Application hypershift-cli-mce-211 and its enterprise-contract-mce-211 IntegrationTestScenario.

  2. PR OCPBUGS-65957: test(e2e): fix TestNodePool test failure when installing cilium as external cni #7263 created (2025-11-20): Konflux associated this PR with the mce-211 pipeline definitions.

  3. MCE 2.17 migration (2026-02-17): The .tekton files were renamed from mce-211mce-217. New PRs began using mce-217 pipelines, but Konflux still had the mce-211 Application/IntegrationTestScenario configured in the tenant.

  4. MCE 5.0 branch cut (2026-04-20): Pipeline configs moved to mce-50. Current PRs on main now run mce-50 checks.

  5. EC policy drift: Enterprise Contract policies are continuously updated (stricter Tekton task version requirements, provenance attestation rules, security policies). The mce-211 build pipeline uses outdated Tekton tasks that no longer satisfy these evolved policies. This explains:

    • 60 EC failures on hypershift-operator-main: Many individual EC rules have been tightened since the mce-211 era.
    • 2 EC failures on hypershift-cli-mce-211: Fewer policy changes affected this component.
  6. Proof this is pre-existing: Other open PRs on main created in March 2026 (e.g., PRs build(deps): bump requests from 2.32.4 to 2.33.0 in /hypershift-ci-python #8081, build(deps): bump google.golang.org/grpc from 1.79.2 to 1.79.3 #8006, build(deps): bump pyasn1 from 0.6.2 to 0.6.3 in /hypershift-ci-python #7990) run mce-217 EC checks and all pass. The identical hypershift-operator-enterprise-contract and hypershift-operator-main-enterprise-contract checks also pass on those PRs, confirming the failure is specific to the stale mce-211 snapshot, not the PR's code.

Recommendations
  1. These failures can be safely ignored for merging PR OCPBUGS-65957: test(e2e): fix TestNodePool test failure when installing cilium as external cni #7263. They are unrelated to the PR's test code changes and are caused entirely by stale Konflux infrastructure configuration.

  2. Rebase or recreate the PR to trigger fresh Konflux builds using the current mce-50 pipeline definitions. Since the PR only changes test/e2e/nodepool_test.go, a rebase onto current main should resolve the stale pipeline association and produce passing EC checks.

  3. Clean up orphaned Konflux resources: The enterprise-contract-mce-211 IntegrationTestScenario and hypershift-cli-mce-211 Application should be removed from the crt-redhat-acm-tenant namespace in Konflux, as they reference obsolete pipeline definitions that can never pass current EC policies.

  4. Consider closing this stale PR: It has been open for 5+ months and is labeled lifecycle/stale. If the fix is still needed, opening a fresh PR against current main would avoid all stale pipeline issues.

Evidence
Evidence Detail
PR creation date 2025-11-20 (5+ months old, lifecycle/stale label)
PR changes Only test/e2e/nodepool_test.go — no build/pipeline changes
Failing EC checks enterprise-contract-mce-211 (mce-211 era pipeline, no longer in .tekton)
Current .tekton pipeline version mce-50 (as of 2026-04-20 branch cut)
MCE 2.11 → 2.17 migration 2026-02-17 — .tekton files renamed from mce-211 to mce-217
MCE 2.17 → 5.0 migration 2026-04-20 — .tekton files renamed from mce-217 to mce-50
Build pipelines All -on-pull-request builds pass (hypershift-cli, hypershift-operator, hypershift-release)
EC check on recent PRs PRs #8081, #8006, #7990 (same main branch) → hypershift-operator-enterprise-contract: SUCCESS
EC check on PR #7263 hypershift-operator-enterprise-contract: FAILURE (60 failures)
Snapshot verified hypershift-operator-20260323-071344-000 (built from 2025-11-20 code with stale tasks)
Konflux tenant crt-redhat-acm-tenant still has orphaned mce-211 Application and IntegrationTestScenario

@openshift-ci

openshift-ci Bot commented May 13, 2026

Copy link
Copy Markdown
Contributor

Stale PRs rot after 14d of inactivity.

Mark the PR as fresh by commenting /remove-lifecycle rotten.
Rotten PRs close after an additional 7d of inactivity.

If this PR is safe to close now please do so with /close.

/lifecycle rotten
/remove-lifecycle stale

@openshift-ci openshift-ci Bot added lifecycle/rotten Denotes an issue or PR that has aged beyond stale and will be auto-closed. and removed lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. labels May 13, 2026
@openshift-ci

openshift-ci Bot commented May 20, 2026

Copy link
Copy Markdown
Contributor

Rotten PRs close after 7d of inactivity.

Reopen the PR by commenting /reopen.
Mark the PR as fresh by commenting /remove-lifecycle rotten.

/close

@openshift-ci openshift-ci Bot closed this May 20, 2026
@openshift-ci

openshift-ci Bot commented May 20, 2026

Copy link
Copy Markdown
Contributor

@openshift-ci[bot]: Closed this PR.

Details

In response to this:

Rotten PRs close after 7d of inactivity.

Reopen the PR by commenting /reopen.
Mark the PR as fresh by commenting /remove-lifecycle rotten.

/close

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.

@openshift-ci-robot

Copy link
Copy Markdown

@wewang58: This pull request references Jira Issue OCPBUGS-65957. The bug has been updated to no longer refer to the pull request using the external bug tracker. All external bug links have been closed. The bug has been moved to the NEW state.

Details

In response to this:

What this PR does / why we need it:

The pr update NodePoolReplicas is 1 for NodePoolTests, because On ARO HCP with Cilium, we need at least one worker node to install cilium-olm operator before individual tests run

Which issue(s) this PR fixes:

Fixes:

TestNodePool/HostedCluster0/ValidateHostedCluster/InstallCilium/InstallCilium expand_less 	10m1s
{Failed  === RUN   TestNodePool/HostedCluster0/ValidateHostedCluster/InstallCilium/InstallCilium
   util.go:1296: Installing Cilium operator version 1.15.1
   util.go:1315: Applying manifest from https://raw.githubusercontent.com/isovalent/olm-for-cilium/main/manifests/cilium.v1.15.1/cluster-network-03-cilium-ciliumconfigs-crd.yaml
   util.go:1315: Applying manifest from https://raw.githubusercontent.com/isovalent/olm-for-cilium/main/manifests/cilium.v1.15.1/cluster-network-06-cilium-00000-cilium-namespace.yaml
   util.go:1315: Applying manifest from https://raw.githubusercontent.com/isovalent/olm-for-cilium/main/manifests/cilium.v1.15.1/cluster-network-06-cilium-00001-cilium-olm-serviceaccount.yaml
   util.go:1315: Applying manifest from https://raw.githubusercontent.com/isovalent/olm-for-cilium/main/manifests/cilium.v1.15.1/cluster-network-06-cilium-00002-cilium-olm-deployment.yaml
   util.go:1321: Verifying Cilium resources creation
   util.go:1329: Waiting for cilium-olm deployment to be ready
   util.go:1338: 
       Timed out after 600.001s.
       cilium-olm deployment should be ready
       Expected
           <bool>: false
       to be true
               --- FAIL: TestNodePool/HostedCluster0/ValidateHostedCluster/InstallCilium/InstallCilium (600.59s)

Special notes for your reviewer:

The pr is depend on :#7077, because ExternalCNIProvider is defined in pr7077

Checklist:

  • Subject and description added to both, commit and PR.
  • Relevant issues have been referenced.
  • This change includes docs.
  • This change includes unit tests.

Summary by CodeRabbit

  • Tests
  • Improved test behavior for Azure (ARO HCP) environments using Cilium: tests now ensure at least one worker node is present so the Cilium operator can deploy successfully, preventing false failures in those platform-specific scenarios.

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.

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

Labels

area/testing Indicates the PR includes changes for e2e testing jira/severity-low Referenced Jira bug's severity is low for the branch this PR is targeting. jira/valid-bug Indicates that a referenced Jira bug is valid for the branch this PR is targeting. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. lifecycle/rotten Denotes an issue or PR that has aged beyond stale and will be auto-closed.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants