Skip to content

OSAC-2801: Add CaaS Netris full-install E2E workflow - #110

Merged
openshift-merge-bot[bot] merged 3 commits into
mainfrom
feat/add-caas-netris-e2e
Aug 5, 2026
Merged

openshift-merge-bot[bot] merged 3 commits into
mainfrom
feat/add-caas-netris-e2e

Conversation

@danmanor

@danmanor danmanor commented Aug 3, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • Replaces e2e-caas-full-install.yml (IBM fleet runner) with e2e-caas-netris-full-install.yml (Netris Spectrum-X simulated lab on EC2 c5n.metal)
  • All component images (fulfillment-service, osac-operator, osac-aap EE) are built from the PR's code on the EC2 box and loaded onto the SNO node
  • Installer charts are cloned from the PR's branch via osac-repo/osac-branch

Triggers: pull_request (with path filter), merge_group, schedule (daily at 06:53 UTC), workflow_dispatch

Depends on: osac-project/osac-test-infra#303 (components build support for Netris workflow)

Test plan

  • Full end-to-end tested on rdu-infra-edge-06: deploy-ocp + deploy-osac + setup-caas + deploy-caas
  • Verified components input format matches the reusable workflow interface

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Tests
    • Added automated end-to-end coverage for full Netris CaaS installations.
    • Tests run on schedules, pull requests, merge queues, and manual triggers.
    • Documentation- and metadata-only pull requests are excluded from test runs.
    • Test failures and cancellations are reported automatically to improve validation reliability.

@openshift-ci-robot

openshift-ci-robot commented Aug 3, 2026 •

Copy link
Copy Markdown

@danmanor: This pull request references OSAC-2801 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 task to target the "5.0.0" version, but no target version was set.

Details

In response to this:

Summary

Adds a presubmit + periodic E2E workflow for the CaaS Netris full-install flow. This complements the existing e2e-caas-full-install.yml (IBM fleet runner) and e2e-vmaas-full-install.yml by testing CaaS on a simulated Netris Spectrum-X GPU cluster network.

The workflow:

  1. Provisions an ephemeral EC2 c5n.metal box
  2. Deploys the full Netris lab (~15 VMs: switches, softgates, servers)
  3. Restores OCP SNO from snapshot + recert
  4. Installs OSAC from this PR's code via Helm
  5. Runs the CaaS test suite (discovery, cluster creation)
  6. Tears down the box

Calls osac-test-infra's reusable e2e-caas-netris-full-install.yml workflow, passing osac-repo/osac-branch so the Netris lab clones and builds from the PR's fork/branch.

Triggers: pull_request (with path filter + fork guard), merge_group, schedule (10x/day at :53, staggered from other e2e workflows), workflow_dispatch.

Depends on: osac-project/osac-test-infra#268 (merged)

Test plan

  • Verified reusable workflow inputs match e2e-caas-netris-full-install.yml's workflow_call interface
  • Full end-to-end tested on rdu-infra-edge-06: deploy-ocp + deploy-osac + setup-caas + deploy-caas all passed
  • CI workflow dispatch test

🤖 Generated with Claude Code

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 requested review from vladikr and wgordon17 August 3, 2026 10:43
@openshift-ci

openshift-ci Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: danmanor

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

The pull request process is described here

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

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

@coderabbitai

coderabbitai Bot commented Aug 3, 2026 •

Copy link
Copy Markdown
Contributor

Review Change Stack

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

Adds a GitHub Actions workflow for scheduled, pull-request, merge-group, and manual Netris CaaS full-install E2E tests. It filters pull-request paths, invokes reusable test infrastructure with build overrides, and reports failed or cancelled jobs. The previous full-install workflow is removed.

Changes

Netris CaaS E2E testing

Layer / File(s) Summary
Workflow triggers and change filtering
.github/workflows/e2e-caas-netris-full-install.yml
Defines workflow events, permissions, manual input, concurrency cancellation, and pull-request path filtering.
E2E execution and status reporting
.github/workflows/e2e-caas-netris-full-install.yml
Invokes reusable test infrastructure with repository, branch, and four component image build overrides. The status job reports upstream results and fails when a required job fails or is cancelled.

Estimated code review effort: 2 (Simple) | ~10 minutes

Sequence Diagram(s)

sequenceDiagram
  participant GitHub
  participant ChangeDetection
  participant NetrisE2E
  participant TestInfrastructure
  participant Status
  GitHub->>ChangeDetection: Start workflow and evaluate changed paths
  ChangeDetection->>NetrisE2E: Permit or skip E2E execution
  NetrisE2E->>TestInfrastructure: Invoke Netris full-install tests
  TestInfrastructure-->>NetrisE2E: Return job result
  NetrisE2E->>Status: Report execution result
  Status-->>GitHub: Fail on failure or cancellation
Loading

Possibly related PRs

Suggested labels: ok-to-test

Suggested reviewers: vladikr, wgordon17

🚥 Pre-merge checks | ✅ 10 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Ai-Attribution ⚠️ Warning Commit 4416ff2 uses Co-Authored-By trailer for AI tool (Claude Opus), violating Red Hat attribution requirements which mandate Assisted-by or Generated-by trailers for AI assistance. Replace Co-Authored-By with Assisted-by or Generated-by trailer in commit 4416ff2 to match Red Hat attribution standards for AI tool usage.
✅ Passed checks (10 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly identifies the addition of the CaaS Netris full-install E2E workflow, which is the main change.
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.
No-Hardcoded-Secrets ✅ Passed Workflow files contain no hardcoded secrets: only GitHub context variables, public action references, and configuration metadata.
No-Weak-Crypto ✅ Passed The PR modifies only GitHub Actions workflow YAML files. No cryptographic implementations, weak algorithms, or custom crypto code present in the changes.
No-Injection-Vectors ✅ Passed The PR only adds/removes GitHub workflow YAML; the added workflow has no SQL, eval/exec, unsafe deserialization, os.system, or dangerouslySetInnerHTML sinks.
Container-Privileges ✅ Passed The PR adds no privileged, hostPID, hostNetwork, hostIPC, SYS_ADMIN, allowPrivilegeEscalation, or root container/Kubernetes setting; existing matches are unchanged.
No-Sensitive-Data-In-Logs ✅ Passed The new workflow logs only upstream job result names and statuses; it contains no credentials, PII, internal hostnames, tokens, or secret-bearing commands.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/add-caas-netris-e2e

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.

@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 @.github/workflows/e2e-caas-netris-full-install.yml:
- Around line 53-63: Add pinned SAST and SCA security-gate jobs to the workflow
and include both in the needs list for e2e-caas-netris-full-install so
provisioning cannot start before they pass. If the referenced reusable workflow
builds or publishes artifacts, add Sigstore/cosign signing and verification
gates before deployment, using pinned action or tool versions.
- Around line 18-21: Update the reusable workflow call in
e2e-caas-netris-full-install.yml to forward the test-infra-ref input under with,
using the provided input with main as its fallback so manual dispatch overrides
reach the downstream workflow.
- Line 56: Update the reusable workflow reference in the workflow’s uses
declaration to replace the mutable `@main` ref with the reviewed, immutable full
commit SHA for osac-test-infra. Preserve the existing reusable workflow path and
all surrounding configuration.
🪄 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: osac-project/coderabbit/.coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: e84b746b-fbfa-41b2-9246-707f8a2fae27

📥 Commits

Reviewing files that changed from the base of the PR and between 4f0205d and de56ed6.

📒 Files selected for processing (1)
  • .github/workflows/e2e-caas-netris-full-install.yml

Comment on lines +18 to +21
test-infra-ref:
description: "Branch/ref of osac-test-infra"
required: false
default: "main"

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

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "Files:"
git ls-files .github/workflows | sed -n '1,200p'

echo
echo "Target file relevant sections:"
if [ -f .github/workflows/e2e-caas-netris-full-install.yml ]; then
  wc -l .github/workflows/e2e-caas-netris-full-install.yml
  sed -n '1,140p' .github/workflows/e2e-caas-netris-full-install.yml | cat -n
else
  echo "missing target"
fi

echo
echo "Search reusable usages of this workflow and test-infra-ref:"
rg -n "e2e-caas-netris-full-install|test-infra-ref|on:\|inputs:" .github/workflows || true

Repository: osac-project/osac

Length of output: 6134


Forward test-infra-ref to the reusable workflow.

e2e-caas-netris-full-install.yml accepts test-infra-ref via workflow_dispatch, but the reusable workflow call only forwards osac-repo, osac-branch, and image overrides. Add test-infra-ref: ${{ inputs.test-infra-ref || 'main' }} under with so manual dispatch can override the test-infrastructure ref.

🤖 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 @.github/workflows/e2e-caas-netris-full-install.yml around lines 18 - 21,
Update the reusable workflow call in e2e-caas-netris-full-install.yml to forward
the test-infra-ref input under with, using the provided input with main as its
fallback so manual dispatch overrides reach the downstream workflow.

Comment on lines +53 to +63
e2e-caas-netris-full-install:
needs: changes
if: needs.changes.outputs.should-run == 'true'
uses: osac-project/osac-test-infra/.github/workflows/e2e-caas-netris-full-install.yml@main
with:
osac-repo: ${{ github.event.pull_request.head.repo.clone_url || format('https://github.com/{0}.git', github.repository) }}
osac-branch: ${{ github.event.pull_request.head.ref || github.ref_name }}
osac-operator-image: ''
fulfillment-service-image: ''
osac-aap-ee-image: ''

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.

🔒 Security & Privacy | 🟠 Major | 🏗️ Heavy lift

Add required supply-chain security gates before E2E provisioning.

The workflow has no visible SAST/SCA job before it provisions infrastructure from a PR ref. Add pinned SAST and SCA jobs, and make e2e-caas-netris-full-install depend on them. If the reusable workflow builds or publishes images or artifacts, require Sigstore/cosign signing and verification before deployment.

As per path instructions, “SAST/SCA steps in pipeline” and “Sign artifacts with Sigstore/cosign” are required.

🤖 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 @.github/workflows/e2e-caas-netris-full-install.yml around lines 53 - 63, Add
pinned SAST and SCA security-gate jobs to the workflow and include both in the
needs list for e2e-caas-netris-full-install so provisioning cannot start before
they pass. If the referenced reusable workflow builds or publishes artifacts,
add Sigstore/cosign signing and verification gates before deployment, using
pinned action or tool versions.

Source: Path instructions

e2e-caas-netris-full-install:
needs: changes
if: needs.changes.outputs.should-run == 'true'
uses: osac-project/osac-test-infra/.github/workflows/e2e-caas-netris-full-install.yml@main

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.

🔒 Security & Privacy | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== workflow snippet =="
if [ -f .github/workflows/e2e-caas-netris-full-install.yml ]; then
  nl -ba .github/workflows/e2e-caas-netris-full-install.yml | sed -n '45,65p'
else
  echo "workflow file not found"
fi

echo
echo "== all reusable workflow/action pins in .github/workflows =="
rg -n "uses:\s*[^#]*(?:`@tags`|[A-Za-z0-9_/-]+/.github/workflows/[^[:space:]@]+@|/actions/.*@)" .github/workflows || true

echo
echo "== ref resolution probe for referenced reusable workflow pin =="
python3 - <<'PY'
from urllib.request import urlopen
import json

url = "https://api.github.com/repos/osac-project/osac-test-infra/git/ref/heads/main"
try:
    with urlopen(url, timeout=15) as r:
        data = json.load(r)
    print("status={}".format(r.status))
    print("ref={}".format(data.get("ref")))
    print("type={}".format(data.get("object", {}).get("type")))
    print("sha={}".format(data.get("object", {}).get("sha")))
except Exception as e:
    print(type(e).__name__ + ": " + str(e))
PY

Repository: osac-project/osac

Length of output: 218


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== file exists =="
if [ -f .github/workflows/e2e-caas-netris-full-install.yml ]; then
  echo "yes"
else
  echo "no"
fi

echo
echo "== workflow snippet =="
if [ -f .github/workflows/e2e-caas-netris-full-install.yml ]; then
  awk 'NR>=45 && NR<=65 { printf "%6d\t%s\n", NR, $0 }' .github/workflows/e2e-caas-netris-full-install.yml
fi

echo
echo "== GitHub API ref probe =="
python3 - <<'PY'
from urllib.request import urlopen, Request
import json

url = "https://api.github.com/repos/osac-project/osac-test-infra/git/ref/heads/main"
req = Request(url, headers={"Accept": "application/vnd.github+json", "User-Agent": "review-verify"})
try:
    with urlopen(req, timeout=20) as r:
        data = json.load(r)
    print("status={}".format(r.status))
    print("ref={}".format(data.get("ref")))
    print("object_type={}".format(data.get("object", {}).get("type")))
    print("sha={}".format(data.get("object", {}).get("sha")))
except Exception as e:
    print("{}: {}".format(type(e).__name__, e))
PY

Repository: osac-project/osac

Length of output: 1466


Pin the reusable workflow to an immutable commit SHA.

This step references osac-project/osac-test-infra/.github/workflows/e2e-caas-netris-full-install.yml@main. Since @main is a mutable branch, update this workflow to use a reviewed full commit SHA for that workflow.

🤖 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 @.github/workflows/e2e-caas-netris-full-install.yml at line 56, Update the
reusable workflow reference in the workflow’s uses declaration to replace the
mutable `@main` ref with the reviewed, immutable full commit SHA for
osac-test-infra. Preserve the existing reusable workflow path and all
surrounding configuration.

Source: Path instructions

@danmanor

danmanor commented Aug 3, 2026

Copy link
Copy Markdown
Contributor Author

/hold

@openshift-ci openshift-ci Bot added the do-not-merge/hold Block merge until the label is removed label Aug 3, 2026
@danmanor danmanor changed the title OSAC-2801: Add CaaS Netris full-install E2E workflow WIP: OSAC-2801: Add CaaS Netris full-install E2E workflow Aug 3, 2026
@danmanor
danmanor force-pushed the feat/add-caas-netris-e2e branch from 01a92fe to 474fe22 Compare August 3, 2026 11:06
@danmanor
danmanor force-pushed the feat/add-caas-netris-e2e branch from 474fe22 to 1c4fd1d Compare August 3, 2026 12:59
@coderabbitai

coderabbitai Bot commented Aug 5, 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.

Adds a presubmit + periodic E2E workflow that provisions an ephemeral
EC2 c5n.metal box, deploys the full Netris Spectrum-X simulated lab,
restores OCP SNO from snapshot, installs OSAC via Helm, and runs the
CaaS test suite.

Calls osac-test-infra's e2e-caas-netris-full-install reusable workflow,
passing osac-repo/osac-branch so the Netris lab clones and builds from
the PR's fork/branch.

Triggers: pull_request, merge_group, schedule (10x/day at :53),
workflow_dispatch.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Aug 5, 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.

fulfillment-service and osac-operator Containerfiles reference go.work
from the mono-repo root, so the build context must be "." (repo root),
not the containerfile's parent directory. Matches the vmaas/bmaas
workflow components configuration.

Assisted-by: Claude Code <noreply@anthropic.com>
Signed-off-by: Dan Manor <dmanor@redhat.com>
Skip the gate job entirely when docs-only PRs legitimately skip the e2e
job via the changes filter, instead of running and passing vacuously.

Assisted-by: Claude Code <noreply@anthropic.com>
Signed-off-by: Dan Manor <dmanor@redhat.com>
@danmanor
danmanor enabled auto-merge (rebase) August 5, 2026 15:19
@danmanor danmanor added the lgtm label Aug 5, 2026
@openshift-merge-bot
openshift-merge-bot Bot merged commit eb1219b into main Aug 5, 2026
29 checks passed
@eliorerz
eliorerz deleted the feat/add-caas-netris-e2e branch August 5, 2026 19:02
eliorerz added a commit to osac-project/github-config that referenced this pull request Aug 5, 2026
osac-project/osac#110 replaced e2e-caas-full-install.yml with
e2e-caas-netris-full-install.yml, so the "e2e-caas-full-install / e2e"
required check will never report again -- blocking every future PR on
osac's branch protection forever. Point the required check at the new
workflow's gating job instead.

Signed-off-by: Elior Erez <eerez@redhat.com>
eliorerz added a commit to eliorerz/osac that referenced this pull request Aug 5, 2026
PR osac-project#110 (OSAC-2801) added this suite auto-triggered on every PR. It
started failing on every PR (including unrelated ones) with 'gh:
Resource not accessible by personal access token (HTTP 403)' when
registering the ephemeral EC2 instance as a JIT GitHub Actions runner
-- a separate, still-open token/permissions problem, not addressed
here. PR osac-project#166 reverted it entirely rather than leave every PR red.

Restores the original file (git show 4416ff2) with one substantive
change: the changes job's should-run output now also requires
github.run_attempt != '1' on pull_request events, so the suite is
skipped (not run) on a PR's automatic first check run. schedule/
workflow_dispatch/merge_group are untouched -- always real runs.

github.run_attempt is 1 for a workflow's original run and 2+ for each
rerun. osac-test-infra's existing shared slash-command-handler.yml
(unchanged) already finds an existing PR-triggered run for a given
workflow at the PR's head SHA and reruns it on /test <workflow> --
that's exactly attempt 2+. Keeping on: pull_request means there's
always a run to find and rerun. No new mechanism, no shared-code
changes, no effect on e2e-bmaas/e2e-vmaas/e2e-caas-full-install's own
/test commands.
eliorerz pushed a commit that referenced this pull request Sep 18, 2026
…SAC-3233

OSAC-3233: add organization scope to OIDC login flow

This branch was previously deployed

1 inactive deployment
e2e-test — 1c5e0406 Deployed Aug 5, 2026 by danmanor via e2e-vmaas-full-install / e2e #560
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants