Skip to content

add OpenPERouter baremetal E2E deploy-verify lane - #83156

Open
oribon wants to merge 1 commit into
openshift:mainfrom
oribon:openperouter_e2e_step1
Open

add OpenPERouter baremetal E2E deploy-verify lane#83156
oribon wants to merge 1 commit into
openshift:mainfrom
oribon:openperouter_e2e_step1

Conversation

@oribon

@oribon oribon commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

Baseline for the openperouter-e2e-metal test. Currently deploys the operator via OLM bundle on a baremetal OCP cluster and verifies all components (operator, webhook, controller, router) come up healthy. The full E2E lane will extend this with containerlab fabric setup and test execution.

The bundle image is now built using bundle.Dockerfile rather than bundle.Dockerfile.openshift (like the other telco-5g projects using konflux here).

The workflow inserts an iptables pre step before devscripts-setup. EXTRA_NETWORK_NAMES creates additional NICs on each node. The installer's bootstrap gather collects ALL NIC IPs and SSHes to each for log gathering. Since the extra networks are unreachable via SSH, this avoids timeouts on attempts to gather them.

Co-Authored-By: Claude Opus 4.6 (1M context) noreply@anthropic.com
Signed-off-by: Ori Braunshtein obraunsh@redhat.com

Summary by CodeRabbit

Adds the openperouter-e2e-metal OpenShift CI lane for OpenPERouter.

  • Builds and deploys the operator bundle through OLM on the build05 Equinix bare-metal profile.
  • Tests dual-stack networking, extra networks, two workers, and a local registry.
  • Verifies the operator, webhook, controller, and router become healthy.
  • Adds iptables rules that reject SSH traffic to unreachable extra-network subnets.
  • Prevents SSH log-gathering timeouts during bare-metal test cleanup.

@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 Aug 10, 2026
@coderabbitai

coderabbitai Bot commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

Walkthrough

The CI configuration updates OpenPerOuter bundle builds and adds a dual-stack Equinix metal end-to-end test. The workflow applies extra-network firewall rules, deploys the operator bundle, creates an OpenPERouter resource, and validates workload readiness.

Changes

OpenPerOuter bare-metal validation

Layer / File(s) Summary
Bundle and metal test configuration
ci-operator/config/openshift-kni/openperouter/...
Adds the dev-scripts:test image, updates bundle build settings and pullspec substitution, and defines the dual-stack openperouter-e2e-metal test.
Workflow and network setup
ci-operator/step-registry/baremetalds/openperouter-e2e/...
Adds workflow wiring, ownership metadata, and IPv4/IPv6 TCP/22 rejection rules for extra networks.
Operator deployment and health validation
ci-operator/step-registry/baremetalds/openperouter-e2e/test/*
Installs Operator SDK, deploys OO_BUNDLE, creates the OpenPERouter resource, waits for workloads, and validates pod states.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Sequence Diagram(s)

sequenceDiagram
  participant CI as CI workflow
  participant Host as dev-scripts host
  participant SDK as Operator SDK and OLM
  participant Cluster as OpenShift cluster
  CI->>Host: Apply extra-network SSH reject rules
  CI->>SDK: Install Operator SDK and deploy OO_BUNDLE
  SDK->>Cluster: Create OpenPERouter namespace and resource
  Cluster-->>SDK: Report deployments and daemonsets
  SDK-->>CI: Return pod readiness status
Loading

Suggested reviewers: fedepaol, maiqueb


Important

Pre-merge checks failed

Please resolve all errors before merging. Addressing warnings is optional.

❌ Failed checks (1 error)

Check name Status Explanation Resolution
No-Sensitive-Data-In-Logs ❌ Error The test logs oc get pods ... -o wide, which includes pod IP addresses and node names, exposing internal network and hostname data in CI logs. Replace wide output with readiness-only output, or explicitly redact the pod IP and node columns before writing diagnostics to CI logs.
✅ Passed checks (14 passed)
Check name Status Explanation
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 The PR adds CI shell/YAML steps only; no Ginkgo It, Describe, Context, or When declarations or dynamic test titles are present. The lane name is static.
Test Structure And Quality ✅ Passed The commit adds no Go or Ginkgo test code; its E2E test is a Bash script, so the Ginkgo-specific requirements are not applicable.
Microshift Test Compatibility ✅ Passed The pull request adds shell/YAML CI steps only; scans found no new Ginkgo definitions or MicroShift compatibility targets requiring review.
Single Node Openshift (Sno) Test Compatibility ✅ Passed The PR adds CI YAML and shell workflow steps, not Ginkgo tests; changed files contain no It(), Describe(), Context(), or When() constructs requiring SNO review.
Topology-Aware Scheduling Compatibility ✅ Passed The PR changes only ci-operator CI configuration, workflow, and test scripts; no operator/controller/deployment sources or topology-sensitive scheduling fields were added or modified.
Ote Binary Stdout Contract ✅ Passed The PR changes only CI YAML, JSON, and shell workflow files; it adds no Go OTE binary or process-level test setup that can write non-JSON stdout.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed The PR adds only Bash and YAML CI steps; the changed hunks contain no new Ginkgo It(), Describe(), Context(), or When() tests, so this check is not applicable.
No-Weak-Crypto ✅ Passed The commit additions contain no MD5, SHA-1, DES, 3DES, RC4, Blowfish, ECB, custom crypto, or secret/token comparisons; scripts use SSH, iptables, and OLM commands only.
Container-Privileges ✅ Passed Changed files contain no privileged:true, hostPID/hostNetwork/hostIPC, SYS_ADMIN, or allowPrivilegeEscalation:true; root SSH targets the bare-metal host for documented setup actions.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly identifies the main change: adding a bare-metal OpenPERouter E2E deployment and verification lane.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@openshift-ci
openshift-ci Bot requested review from fedepaol and maiqueb August 10, 2026 06:15
@oribon

oribon commented Aug 10, 2026

Copy link
Copy Markdown
Contributor Author

/pj-rehearse

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

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

@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: 3

🤖 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/baremetalds/openperouter-e2e/iptables/baremetalds-openperouter-e2e-iptables-commands.sh`:
- Line 18: Remove the -x option from the remote shell setup in
ci-operator/step-registry/baremetalds/openperouter-e2e/iptables/baremetalds-openperouter-e2e-iptables-commands.sh:18-18
and
ci-operator/step-registry/baremetalds/openperouter-e2e/test/baremetalds-openperouter-e2e-test-commands.sh:14-14,
keeping both scripts at set -euo pipefail by default.

In
`@ci-operator/step-registry/baremetalds/openperouter-e2e/test/baremetalds-openperouter-e2e-test-commands.sh`:
- Around line 63-71: Update the pod validation block in the baremetal
openperouter E2E command to inspect each non-completed pod’s Ready condition,
not just its phase. Treat Running pods with a non-ready condition such as 0/1 as
failures, report them through NOT_READY, and print the success message only when
every non-completed pod is Ready.
- Around line 51-56: Update the DaemonSet creation loop in the controller/router
wait flow to enforce a 300-second deadline; if oc get daemonset does not succeed
within that period, print an error and exit nonzero. Preserve the existing
polling interval and rollout status handling after creation.
🪄 Autofix

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: Pro Plus

Run ID: 8375c2c2-6920-4b4d-8844-c4f217b8eb90

📥 Commits

Reviewing files that changed from the base of the PR and between 750f2a7 and b35033d.

⛔ Files ignored due to path filters (1)
  • ci-operator/jobs/openshift-kni/openperouter/openshift-kni-openperouter-main-presubmits.yaml is excluded by !ci-operator/jobs/**
📒 Files selected for processing (9)
  • ci-operator/config/openshift-kni/openperouter/openshift-kni-openperouter-main.yaml
  • ci-operator/step-registry/baremetalds/openperouter-e2e/OWNERS
  • ci-operator/step-registry/baremetalds/openperouter-e2e/baremetalds-openperouter-e2e-workflow.yaml
  • ci-operator/step-registry/baremetalds/openperouter-e2e/iptables/OWNERS
  • ci-operator/step-registry/baremetalds/openperouter-e2e/iptables/baremetalds-openperouter-e2e-iptables-commands.sh
  • ci-operator/step-registry/baremetalds/openperouter-e2e/iptables/baremetalds-openperouter-e2e-iptables-ref.yaml
  • ci-operator/step-registry/baremetalds/openperouter-e2e/test/OWNERS
  • ci-operator/step-registry/baremetalds/openperouter-e2e/test/baremetalds-openperouter-e2e-test-commands.sh
  • ci-operator/step-registry/baremetalds/openperouter-e2e/test/baremetalds-openperouter-e2e-test-ref.yaml

@oribon
oribon force-pushed the openperouter_e2e_step1 branch from b35033d to 5c78f49 Compare August 10, 2026 06:22
@coderabbitai

coderabbitai Bot commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

Note

GitHub couldn't provide a complete incremental comparison for this pull request, so CodeRabbit is performing a full review instead. This review may take a little longer.

@oribon
oribon force-pushed the openperouter_e2e_step1 branch from 5c78f49 to b2556bb Compare August 10, 2026 06:30
@oribon

oribon commented Aug 10, 2026

Copy link
Copy Markdown
Contributor Author

/pj-rehearse

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

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

@oribon
oribon force-pushed the openperouter_e2e_step1 branch from b2556bb to 479b385 Compare August 10, 2026 09:21
@coderabbitai

coderabbitai Bot commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

Note

GitHub couldn't provide a complete incremental comparison for this pull request, so CodeRabbit is performing a full review instead. This review may take a little longer.

@oribon

oribon commented Aug 10, 2026

Copy link
Copy Markdown
Contributor Author

/pj-rehearse

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

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

@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

♻️ Duplicate comments (1)
ci-operator/step-registry/baremetalds/openperouter-e2e/test/baremetalds-openperouter-e2e-test-commands.sh (1)

68-76: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Check Pod phase and Ready condition directly.

The grep accepts a 1/1 Terminating row. It also rejects a healthy pod with more than five containers. Query the Pod phase and the Ready condition instead of parsing displayed readiness counts.

Proposed fix
-NOT_READY=$(oc get pods -n openshift-openperouter-system --no-headers | grep -v "Completed" | grep -v "1/1\|2/2\|3/3\|4/4\|5/5" || true)
+NOT_READY="$(oc get pods -n openshift-openperouter-system \
+  -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.status.phase}{"\t"}{range .status.conditions[?(@.type=="Ready")]}{.status}{end}{"\n"}{end}' |
+  awk -F '\t' '$2 != "Succeeded" && ($2 != "Running" || $3 != "True")')"
🤖 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/baremetalds/openperouter-e2e/test/baremetalds-openperouter-e2e-test-commands.sh`
around lines 68 - 76, Replace the readiness-count parsing in the pod
verification block with direct checks of each pod’s phase and Ready condition.
Update the logic around NOT_READY to identify pods only when phase is not
Running or the Ready condition is not True, so terminating pods and healthy pods
with any container count are handled correctly.
🤖 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/baremetalds/openperouter-e2e/test/baremetalds-openperouter-e2e-test-commands.sh`:
- Around line 20-21: Update the Operator SDK download curl command in the test
setup to fail on HTTP errors and enforce both connection and total request
timeouts, while preserving the existing output path and versioned download URL.

---

Duplicate comments:
In
`@ci-operator/step-registry/baremetalds/openperouter-e2e/test/baremetalds-openperouter-e2e-test-commands.sh`:
- Around line 68-76: Replace the readiness-count parsing in the pod verification
block with direct checks of each pod’s phase and Ready condition. Update the
logic around NOT_READY to identify pods only when phase is not Running or the
Ready condition is not True, so terminating pods and healthy pods with any
container count are handled correctly.
🪄 Autofix

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: Pro Plus

Run ID: 2f3b5e68-485b-4dac-9fa3-5930ffc353d9

📥 Commits

Reviewing files that changed from the base of the PR and between 7f6bc53 and 479b385.

⛔ Files ignored due to path filters (1)
  • ci-operator/jobs/openshift-kni/openperouter/openshift-kni-openperouter-main-presubmits.yaml is excluded by !ci-operator/jobs/**
📒 Files selected for processing (12)
  • ci-operator/config/openshift-kni/openperouter/openshift-kni-openperouter-main.yaml
  • ci-operator/step-registry/baremetalds/openperouter-e2e/OWNERS
  • ci-operator/step-registry/baremetalds/openperouter-e2e/baremetalds-openperouter-e2e-workflow.metadata.json
  • ci-operator/step-registry/baremetalds/openperouter-e2e/baremetalds-openperouter-e2e-workflow.yaml
  • ci-operator/step-registry/baremetalds/openperouter-e2e/iptables/OWNERS
  • ci-operator/step-registry/baremetalds/openperouter-e2e/iptables/baremetalds-openperouter-e2e-iptables-commands.sh
  • ci-operator/step-registry/baremetalds/openperouter-e2e/iptables/baremetalds-openperouter-e2e-iptables-ref.metadata.json
  • ci-operator/step-registry/baremetalds/openperouter-e2e/iptables/baremetalds-openperouter-e2e-iptables-ref.yaml
  • ci-operator/step-registry/baremetalds/openperouter-e2e/test/OWNERS
  • ci-operator/step-registry/baremetalds/openperouter-e2e/test/baremetalds-openperouter-e2e-test-commands.sh
  • ci-operator/step-registry/baremetalds/openperouter-e2e/test/baremetalds-openperouter-e2e-test-ref.metadata.json
  • ci-operator/step-registry/baremetalds/openperouter-e2e/test/baremetalds-openperouter-e2e-test-ref.yaml
🚧 Files skipped from review as they are similar to previous changes (8)
  • ci-operator/step-registry/baremetalds/openperouter-e2e/test/OWNERS
  • ci-operator/step-registry/baremetalds/openperouter-e2e/iptables/baremetalds-openperouter-e2e-iptables-ref.yaml
  • ci-operator/step-registry/baremetalds/openperouter-e2e/baremetalds-openperouter-e2e-workflow.yaml
  • ci-operator/step-registry/baremetalds/openperouter-e2e/OWNERS
  • ci-operator/step-registry/baremetalds/openperouter-e2e/iptables/baremetalds-openperouter-e2e-iptables-commands.sh
  • ci-operator/config/openshift-kni/openperouter/openshift-kni-openperouter-main.yaml
  • ci-operator/step-registry/baremetalds/openperouter-e2e/iptables/OWNERS
  • ci-operator/step-registry/baremetalds/openperouter-e2e/test/baremetalds-openperouter-e2e-test-ref.yaml

Comment on lines +20 to +21
curl -sLo /usr/local/bin/operator-sdk \
"https://github.com/operator-framework/operator-sdk/releases/download/${OPERATOR_SDK_VERSION}/operator-sdk_linux_amd64"

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 | ⚡ Quick win

Bound and validate the Operator SDK download.

curl -sLo accepts HTTP error responses and has no connection or total timeout. A stalled GitHub request can consume the full 3600-second step timeout. Fail on HTTP errors and set bounded timeouts.

Proposed fix
-curl -sLo /usr/local/bin/operator-sdk \
+curl --fail --silent --show-error --location --retry 3 \
+  --connect-timeout 30 --max-time 300 \
+  -o /usr/local/bin/operator-sdk \
   "https://github.com/operator-framework/operator-sdk/releases/download/${OPERATOR_SDK_VERSION}/operator-sdk_linux_amd64"
📝 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
curl -sLo /usr/local/bin/operator-sdk \
"https://github.com/operator-framework/operator-sdk/releases/download/${OPERATOR_SDK_VERSION}/operator-sdk_linux_amd64"
curl --fail --silent --show-error --location --retry 3 \
--connect-timeout 30 --max-time 300 \
-o /usr/local/bin/operator-sdk \
"https://github.com/operator-framework/operator-sdk/releases/download/${OPERATOR_SDK_VERSION}/operator-sdk_linux_amd64"
🤖 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/baremetalds/openperouter-e2e/test/baremetalds-openperouter-e2e-test-commands.sh`
around lines 20 - 21, Update the Operator SDK download curl command in the test
setup to fail on HTTP errors and enforce both connection and total request
timeouts, while preserving the existing output path and versioned download URL.

@oribon
oribon force-pushed the openperouter_e2e_step1 branch from 479b385 to e8ce01b Compare August 10, 2026 10:18
@oribon

oribon commented Aug 10, 2026

Copy link
Copy Markdown
Contributor Author

/pj-rehearse

@coderabbitai

coderabbitai Bot commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

Note

GitHub couldn't provide a complete incremental comparison for this pull request, so CodeRabbit is performing a full review instead. This review may take a little longer.

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

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

@oribon

oribon commented Aug 10, 2026

Copy link
Copy Markdown
Contributor Author

/pj-rehearse

@coderabbitai

coderabbitai Bot commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

Note

GitHub couldn't provide a complete incremental comparison for this pull request, so CodeRabbit is performing a full review instead. This review may take a little longer.

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

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

@oribon
oribon force-pushed the openperouter_e2e_step1 branch from 354c49a to 0e38b9a Compare August 11, 2026 05:53
@oribon

oribon commented Aug 11, 2026

Copy link
Copy Markdown
Contributor Author

/pj-rehearse

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

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

Comment on lines +67 to +70
TOSWITCH1_NETWORK_SUBNET_V4='192.168.11.0/24'
TOSWITCH1_NETWORK_SUBNET_V6='2001:db8:11::/64'
TOSWITCH2_NETWORK_SUBNET_V4='192.168.12.0/24'
TOSWITCH2_NETWORK_SUBNET_V6='2001:db8:12::/64'

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.

who consume these variables?
script at ci-operator/step-registry/baremetalds/openperouter-e2e/iptables/baremetalds-openperouter-e2e-iptables-commands.sh has the same values. maybe there we should use the env variables

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

done

Comment on lines -12 to +18
- dockerfile_path: operator/bundle.Dockerfile.openshift
- context_dir: operator
dockerfile_path: bundle.Dockerfile

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.

since the current PR is not really executing tests, can we deploy the Dockerfile.openshift image? Does it have deployment issues too?

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.

yeah, let's use the openshift dockerfile, so we have a clear signal of the bits that will land downstream.

@oribon oribon Aug 12, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

we are using Dockerfile.openshift for the build itself, and that is what is mentioned in the substitutions (so that the end result is that we do use the openshift build from the given PR).
as for using bundle.Dockerfile vs bundle.Dockerfile.openshift (which wrap the olm manifests), bundle.Dockerfile.openshift did some problems, and given that they are practically the same (manifests wise, minus the overlay pins that konflux does that I think aren't related to a given PR) I flipped to bundle.Dockerfile.this is the same as the other projects under telco5g-konflux e.g oran-o2ims and lifecycle-agent, although they don't have bundle.Dockerfile.openshift (but their bundle.Dockerfile is pretty much the same as ours)

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.

I understand.
I don't like testing a bundle that is not the one that goes to production, but the konflux build for the bundle is so complicated that using the operator/bundle.Dockerfile.openshift file for Prow jobs has a risk of not testing the right code (the PR code).

I'm ok on keeping this.

Unfortunately, we can't add a comment to these file

@oribon
oribon force-pushed the openperouter_e2e_step1 branch from 6974e9a to 6b07c58 Compare August 12, 2026 15:41
@oribon

oribon commented Aug 12, 2026

Copy link
Copy Markdown
Contributor Author

/pj-rehearse

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

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

@oribon
oribon force-pushed the openperouter_e2e_step1 branch from 6b07c58 to e64aa8e Compare August 13, 2026 06:02
@oribon

oribon commented Aug 13, 2026

Copy link
Copy Markdown
Contributor Author

/pj-rehearse

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

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

@oribon
oribon force-pushed the openperouter_e2e_step1 branch from e64aa8e to f7fc8b3 Compare August 13, 2026 10:16
@oribon

oribon commented Aug 13, 2026

Copy link
Copy Markdown
Contributor Author

/pj-rehearse

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

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

@oribon

oribon commented Aug 13, 2026

Copy link
Copy Markdown
Contributor Author

/pj-rehearse

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

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

@oribon
oribon force-pushed the openperouter_e2e_step1 branch from 3229118 to 0a8d42e Compare August 14, 2026 06:59
@oribon

oribon commented Aug 14, 2026

Copy link
Copy Markdown
Contributor Author

/pj-rehearse

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

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

TOSWITCH2_NETWORK_SUBNET_V4='192.168.12.0/24'
TOSWITCH2_NETWORK_SUBNET_V6='2001:db8:12::/64'
NUM_WORKERS=2
ENABLE_LOCAL_REGISTRY=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.

Suggested change
ENABLE_LOCAL_REGISTRY=true
ENABLE_LOCAL_REGISTRY=true
OPENSHIFT_INSTALL_GATHER_BOOTSTRAP=false

can you try this? if it solves the long install time, we can get rid of the iptables rules

@oribon oribon Aug 18, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

you're right about the iptables fix not working correctly 😅
compared this to metallb's and there gather takes 2 mins where here it took 90.
about setting the gather_bootstrap var, I've already tried it (before trying the iptables approach) and sadly it does not work, the reason being dev-scripts related:
it is hardcoded in

after the devscripts-config var is already read above.
I wanted to avoid doing changes to the global devscripts script, even if it is harmless like changing to:

export OPENSHIFT_INSTALL_GATHER_BOOTSTRAP=${OPENSHIFT_INSTALL_GATHER_BOOTSTRAP:-true}

I'll try another hack with iptables and if it doesn't work again then we should propose^^ in a separate pr (or just go that route because it's cleaner, and better and will allow us to just use the devscripts-chain instead of hacking a custom step in-between)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

yep, didn't work. as we discussed, we should try submitting the pr to fix that dev-scripts env var, and ultimately here disable the gather bootstrap step, which will also allow us to use the ofcir chain like metallb instead of unpacking just to insert a hack (that doesn't even work perfectly)

Baseline for the openperouter-e2e-metal test. Currently deploys the
operator via OLM bundle on a baremetal OCP cluster and verifies all
components (operator, webhook, controller, router) come up healthy.
The full E2E lane will extend this with containerlab fabric setup
and test execution.

The bundle image is now built using bundle.Dockerfile rather than
bundle.Dockerfile.openshift (like the other telco-5g projects using
konflux here).

The workflow inserts an iptables pre step before devscripts-setup.
EXTRA_NETWORK_NAMES creates additional NICs on each node. The
installer's bootstrap gather collects ALL NIC IPs and SSHes to
each for log gathering. Since the extra networks are unreachable via SSH,
this avoids timeouts on attempts to gather them.
This is the reason we unpacked the dev-scripts chain instead of calling
it directly.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Ori Braunshtein <obraunsh@redhat.com>
@oribon
oribon force-pushed the openperouter_e2e_step1 branch from 0a8d42e to a94a3a0 Compare August 18, 2026 11:30
@oribon

oribon commented Aug 18, 2026

Copy link
Copy Markdown
Contributor Author

/pj-rehearse

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

@oribon: 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]
@oribon: 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-kni-openperouter-main-openperouter-e2e-metal openshift-kni/openperouter presubmit Presubmit changed
pull-ci-openshift-kni-openperouter-main-ci-bundle-operator-bundle openshift-kni/openperouter presubmit Ci-operator config changed
pull-ci-openshift-kni-openperouter-main-images openshift-kni/openperouter presubmit Ci-operator config changed
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.

@oribon

oribon commented Aug 18, 2026

Copy link
Copy Markdown
Contributor Author

/pj-rehearse

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

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

@zeeke

zeeke commented Aug 23, 2026

Copy link
Copy Markdown
Contributor

/lgtm

I'll open another PR with the improvements described here

@openshift-ci openshift-ci Bot added the lgtm Indicates that a PR is ready to be merged. label Aug 23, 2026
@openshift-ci

openshift-ci Bot commented Aug 23, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: oribon, zeeke
Once this PR has been reviewed and has the lgtm label, please assign mahnoorasghar 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 commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

@oribon: all tests passed!

Full PR test history. Your PR dashboard.

Details

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

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

Labels

lgtm Indicates that a PR is ready to be merged.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants