Skip to content

WIP: OSAC-1630: Add Netris based e2e jobs#80852

Open
danmanor wants to merge 4 commits into
openshift:mainfrom
danmanor:osac-netris-lab-ci-workflow
Open

WIP: OSAC-1630: Add Netris based e2e jobs#80852
danmanor wants to merge 4 commits into
openshift:mainfrom
danmanor:osac-netris-lab-ci-workflow

Conversation

@danmanor

@danmanor danmanor commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Restructures the OSAC Netris CI workflow to test actual component code and images instead of always deploying from upstream main
  • Adds e2e-netris-caas presubmit test to all 4 OSAC component repos (osac-operator, fulfillment-service, osac-aap, osac-installer)
  • Each component's PR builds its images, imports upstream images for other components, and the deploy-osac step extracts all code from images onto the installer's submodule paths for exact revision alignment

Changes

Step Registry (ci-operator/step-registry/osac-project/netris/)

  • Lab chain (osac-project-netris-lab): deploy → deploy-ocp → deploy-osac
  • deploy step: make setup && make deploy-lab (installs ansible/make prerequisites first)
  • deploy-ocp step: make deploy-ocp (replaces old configure + ocp-install)
  • deploy-osac step: extracts installer, component code, and CLI from 8 CI-built images, passes component image overrides to Ansible via EXTRA_VARS
  • gather step: make gather (replaces osac-project-gather)
  • CaaS steps moved to netris/caas/ (setup-caas, deploy-caas)
  • CaaS workflow: uses lab chain + CaaS steps, deploy-caas as test phase

CI Configs (ci-operator/config/osac-project/)

  • Each component builds promoted container images (no more duplicate -pr images)
  • Added code images (osac-operator-code, fulfillment-service-code) for submodule alignment
  • Added fulfillment-service and osac-aap-ee promoted images
  • Each e2e-netris-caas test explicitly lists all 8 image dependencies

Image Dependencies per Test

Image What it carries
OSAC_INSTALLER_IMAGE Installer scripts, Helm charts, overlays
OSAC_OPERATOR_IMAGE Operator container
OSAC_OPERATOR_CODE_IMAGE Operator source (submodule overlay)
FULFILLMENT_SERVICE_IMAGE FS service container
FULFILLMENT_SERVICE_CODE_IMAGE FS source (submodule overlay)
OSAC_CLI_IMAGE osac CLI binary
OSAC_AAP_EE_IMAGE AAP execution environment
OSAC_AAP_CODE_IMAGE AAP playbooks/roles source

Summary by CodeRabbit

This PR restructures the OSAC Netris CI workflow so e2e validation deploys the actual component artifacts and images produced by the component repos/CI (instead of always deploying from upstream main builds). It adds an e2e-netris-caas presubmit test across the four OSAC component repositories: osac-operator, fulfillment-service, osac-aap, and osac-installer.

What changed (practical impact)

  • New Netris “lab chain” under ci-operator/step-registry/osac-project/netris/lab/:
    • deploy: runs make setup && make deploy-lab
    • deploy-ocp: runs make deploy-ocp (consolidating OCP deployment prep into one step)
    • deploy-osac: extracts installer, component code, and CLI from eight CI-built container images and deploys OSAC with component image overrides passed to Ansible via EXTRA_VARS
    • gather: runs make gather (replacing the previous gather step behavior)
  • CaaS-specific workflow steps were moved under ci-operator/step-registry/osac-project/netris/caas/, and the new osac-project-netris-caas workflow composes the lab chain plus CAAS setup/deploy phases.

Component CI configuration updates (all four repos)

Under ci-operator/config/osac-project/, each repository’s CI config was updated to support the promoted-image model and to wire explicit image dependencies for e2e-netris-caas:

  • fulfillment-service: adds fulfillment-service-code image promotion/build wiring; adjusts e2e-vmaas to use the promoted component image; adds e2e-netris-caas with dependency wiring.
  • osac-aap: promotes to the EE image (osac-aap-ee) rather than *-pr; adjusts e2e-vmaas; adds e2e-netris-caas.
  • osac-installer: expands base_images.dev-scripts inputs for the full dependency set (installer + CLI + operator/AAp/FS code+EE); adds e2e-netris-caas with intranet capability.
  • osac-operator: changes operator code image build/output to osac-operator-code (instead of osac-operator-pr); updates promotions/exclusions; adjusts e2e-vmaas; adds e2e-netris-caas.

Image dependency model for e2e-netris-caas

The new e2e-netris-caas test explicitly wires eight images:

  • OSAC_INSTALLER_IMAGE
  • OSAC_OPERATOR_IMAGE
  • OSAC_OPERATOR_CODE_IMAGE
  • FULFILLMENT_SERVICE_IMAGE
  • FULFILLMENT_SERVICE_CODE_IMAGE
  • OSAC_CLI_IMAGE
  • OSAC_AAP_EE_IMAGE
  • OSAC_AAP_CODE_IMAGE

When testing a component PR, that component’s locally-built images override upstream images; the other components’ images come from upstream/promoted sources.

Script/step behavior updates

  • The installer step gained NETRIS_INTEGRATION support and refactored the remote SSH bootstrap to use positional arguments passed into the remote script, including NETRIS-derived env flag generation for cluster fulfillment.
  • New/updated netris lab + caas command scripts handle remote SSH/scp of secrets/licenses, cloning netris-test-infra, running make setup/deploy/gather, and performing image extraction from the CI-built containers before deployment.
  • Added/updated step governance via new OWNERS entries and new step/workflow *.ref.yaml plus metadata for the lab chain and CAAS steps.

Jira/automation notes

Automated robot comments indicate the PR references Jira OSAC-1630, but the issue’s configured target version does not match the expected target branch version (warning that the expected task target version should be 5.0.0, while no valid target version is set).

@coderabbitai

coderabbitai Bot commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

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

Review profile: CHILL

Plan: Enterprise

Run ID: 2154fc28-9669-4df3-9b0b-21b5e57c6b1f

📥 Commits

Reviewing files that changed from the base of the PR and between 1028bfb and 327e48f.

📒 Files selected for processing (1)
  • ci-operator/step-registry/osac-project/netris/OWNERS
✅ Files skipped from review due to trivial changes (1)
  • ci-operator/step-registry/osac-project/netris/OWNERS

Walkthrough

Introduces a Netris CaaS end-to-end test pipeline for OSAC components. PR-tagged image names are renamed to stable targets across four CI configs (fulfillment-service, osac-aap, osac-installer, osac-operator), and e2e-netris-caas test jobs are added to each. A new Netris step-registry subtree is created with lab chain steps (deploy, deploy-ocp, deploy-osac, gather) and CaaS steps (setup-caas, deploy-caas), plus a osac-project-netris-caas workflow wiring them. The existing installer step is extended with optional NETRIS_INTEGRATION support.

Changes

Netris CaaS e2e pipeline for OSAC components

Layer / File(s) Summary
PR image rename and base_images expansion
ci-operator/config/osac-project/fulfillment-service/osac-project-fulfillment-service-main.yaml, ci-operator/config/osac-project/osac-aap/osac-project-osac-aap-main.yaml, ci-operator/config/osac-project/osac-installer/osac-project-osac-installer-main.yaml, ci-operator/config/osac-project/osac-operator/osac-project-osac-operator-main.yaml
PR-tagged image build targets (fulfillment-service-pr, osac-aap-pr, osac-operator-pr) are renamed to stable names; promotion exclusion lists updated to enable promotion; base_images expanded with cross-component image stream entries (fulfillment-service code/image, AAP code/EE, operator code/image, CLI, installer) in all four CI configs.
e2e-vmaas update and e2e-netris-caas job addition
ci-operator/config/osac-project/fulfillment-service/osac-project-fulfillment-service-main.yaml, ci-operator/config/osac-project/osac-aap/osac-project-osac-aap-main.yaml, ci-operator/config/osac-project/osac-installer/osac-project-osac-installer-main.yaml, ci-operator/config/osac-project/osac-operator/osac-project-osac-operator-main.yaml
Existing e2e-vmaas tests updated to use renamed stable image names; new e2e-netris-caas test jobs added with intranet capability and full cross-component dependency image environment variable mappings to all four component CI configs.
Installer NETRIS_INTEGRATION environment support
ci-operator/step-registry/osac-project/installer/osac-project-installer-ref.yaml, ci-operator/step-registry/osac-project/installer/osac-project-installer-commands.sh
Declares NETRIS_INTEGRATION env var (default "false") in installer ref YAML; refactors SSH bootstrap from heredoc to bash -s with positional arguments for remote variable initialization; adds conditional Netris API querying (auth token, site ID, tenant IDs, VPC, cluster template) to construct NETRIS_ENV_FLAGS and SSH_MOUNT_FLAGS injected into the podman run invocation when enabled.
Netris lab deployment chain and steps
ci-operator/step-registry/osac-project/netris/lab/...
Introduces osac-project-netris-lab chain wiring three ordered step references. deploy step: checks SSH readiness, transfers Netris license, constructs conditional EXTRA_VARS for optional fulfillment repo/branch overrides, installs remote tooling, clones test-infra repo, runs make setup and make deploy-lab. deploy-ocp step: copies pull-secret, executes make deploy-ocp (OCP SNO via Assisted Installer), retrieves kubeconfig. gather step: best-effort make gather with failure tolerance.
Netris lab deploy-osac step
ci-operator/step-registry/osac-project/netris/lab/deploy-osac/...
deploy-osac step: base64-decodes and transfers AAP license and pull-secret via scp; remotely pulls component images (installer, operator, fulfillment-service, AAP, CLI) using podman; extracts source trees and CLI binary; constructs EXTRA_VARS JSON with license path, image references, and osac_installer_skip_clone flag; executes make deploy-osac. Includes credential mount and image dependency declarations in ref YAML.
Netris CaaS workflow and setup/deploy steps
ci-operator/step-registry/osac-project/netris/caas/...
Introduces osac-project-netris-caas workflow with ordered pre/test/post step sequence. setup-caas step (45m timeout): remote make setup-caas (InfraEnv creation, discovery VM, agent registration). deploy-caas step (60m timeout): remote make deploy-caas (CaaS cluster creation, wait READY). All steps include command scripts, YAML definitions, metadata, and OWNERS files.

Sequence Diagram(s)

sequenceDiagram
  actor CI as CI Job (e2e-netris-caas)
  participant workflow as osac-project-netris-caas
  participant lab as osac-project-netris-lab chain
  participant ci_machine as ci_machine (remote)
  participant installer as osac-installer (podman)
  participant caas as CaaS cluster

  rect rgba(70, 130, 180, 0.5)
    note over workflow,lab: pre: lab setup
    CI->>workflow: trigger workflow
    workflow->>lab: deploy Netris lab
    lab->>ci_machine: SSH: install tooling, clone repo, make setup, make deploy-lab
    lab->>ci_machine: SSH: make deploy-ocp (OCP SNO via Assisted Installer)
    ci_machine-->>lab: kubeconfig
    lab->>ci_machine: podman pull images, extract sources, make deploy-osac
    ci_machine->>installer: run /installer/scripts/setup.sh
  end

  rect rgba(60, 179, 113, 0.5)
    note over workflow,caas: test: CaaS provisioning
    workflow->>ci_machine: SSH: make setup-caas (InfraEnv, agent registration)
    workflow->>ci_machine: SSH: make deploy-caas (create CaaS cluster)
    ci_machine->>caas: cluster reaches READY state
  end

  rect rgba(205, 92, 92, 0.5)
    note over workflow,ci_machine: post: gather diagnostics
    workflow->>ci_machine: SSH: make gather (best-effort, ignore failures)
  end
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

  • openshift/release#80811: Updates the OWNERS_ALIASES definition for osac-cicd to populate the approvers/reviewers configured across the new OWNERS entries introduced in this PR.

Suggested labels

ok-to-test, rehearsals-ack

Suggested reviewers

  • adriengentil
  • eranco74

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 PR logs sensitive deployment data: line 85 of deploy-osac-commands.sh echoes full DEPLOY_CMD containing JSON EXTRA_VARS with license file path that may expose deployment secrets. Remove the 'echo "Deploy command: ${DEPLOY_CMD}"' logging statement (line 85 in deploy-osac-commands.sh) to prevent exposing deployment parameters and license paths in CI logs.
✅ Passed checks (14 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately references the main objective: adding Netris-based e2e jobs to the OSAC CI/CD pipeline. It identifies the specific feature (Netris e2e jobs) and the related Jira issue (OSAC-1630), clearly summarizing the primary 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.
Stable And Deterministic Test Names ✅ Passed This PR contains no Ginkgo test definitions. It is purely CI/CD configuration (YAML, shell scripts, JSON) with 19 JSON files, 14 shell scripts, and 24 YAML files. The check is not applicable to thi...
Test Structure And Quality ✅ Passed PR does not contain Ginkgo test code. Changes are to CI/CD infrastructure (YAML configs, shell scripts, JSON metadata), not test implementations. Check is not applicable.
Microshift Test Compatibility ✅ Passed This PR adds no Ginkgo e2e tests. Changes are CI/CD infrastructure only: YAML configs, shell scripts, and metadata. The e2e-netris-caas is a CI workflow definition, not a Ginkgo test.
Single Node Openshift (Sno) Test Compatibility ✅ Passed PR adds no Ginkgo e2e tests (Go test files). Changes are exclusively CI/CD infrastructure: YAML configs, shell scripts, and metadata files. The custom check for SNO multi-node assumptions is not ap...
Topology-Aware Scheduling Compatibility ✅ Passed PR modifies only CI operator configuration and test orchestration files; does not introduce Kubernetes deployment manifests or operator code with topology-unaware scheduling constraints.
Ote Binary Stdout Contract ✅ Passed PR modifies only YAML CI configs, Bash deployment scripts, and JSON metadata—no Go test code or OTE binaries present.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed This PR does not add any Ginkgo e2e tests. It modifies only CI infrastructure files (YAML configs, shell scripts, metadata) to restructure the OSAC Netris CI workflow. No Go test files with Ginkgo...
No-Weak-Crypto ✅ Passed No weak cryptography patterns detected in PR. Comprehensive scan for MD5, SHA1, DES, RC4, 3DES, Blowfish, ECB, custom crypto implementations, and non-constant-time secret comparisons found no viola...
Container-Privileges ✅ Passed No privileged container directives found: no privileged: true, hostPID/Network/IPC, SYS_ADMIN, allowPrivilegeEscalation, or root escalation patterns in any YAML or script files.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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

@openshift-ci

openshift-ci Bot commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

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

@danmanor danmanor changed the title OSAC: Restructure Netris CI workflow with component image testing WIP: OSAC: Restructure Netris CI workflow with component image testing Jun 22, 2026
@openshift-ci openshift-ci Bot added the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Jun 22, 2026
@openshift-merge-bot

Copy link
Copy Markdown
Contributor

@danmanor, pj-rehearse: unable to determine affected jobs. This could be due to a branch that needs to be rebased. ERROR:

could not load configuration from candidate revision of release repo: failed to load Prow configuration from release repo: job pull-ci-osac-project-fulfillment-service-main-e2e-vmaas is set to always run but also declares skip_if_only_changed targets, which are mutually exclusive
Interacting with pj-rehearse

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

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

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 4

🧹 Nitpick comments (1)
ci-operator/step-registry/osac-project/netris/lab/gather/osac-project-netris-lab-gather-commands.sh (1)

3-4: 🧹 Nitpick | 🔵 Trivial | ⚡ Quick win

Add errexit and keep best-effort behavior scoped to gather calls.

This script should start with set -euo pipefail; right now failures outside explicit || true paths can be silently ignored.

Suggested patch
 set -o nounset
+set -o errexit
 set -o pipefail

As per coding guidelines, step-registry command scripts should default to set -euo pipefail and selectively relax failure handling only where intended.

🤖 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/osac-project/netris/lab/gather/osac-project-netris-lab-gather-commands.sh`
around lines 3 - 4, The script is missing the errexit option which allows silent
failures outside of explicit || true paths. Modify the set commands at lines 3-4
to combine all options using the format `set -euo pipefail` instead of having
separate `set -o nounset` and `set -o pipefail` statements. This ensures that
the script exits on errors (errexit), treats undefined variables as errors
(nounset), and handles pipeline failures (pipefail) as per coding guidelines,
while allowing selective relaxation of failure handling only where explicitly
intended with || true.

Source: Coding guidelines

🤖 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/osac-project/installer/osac-project-installer-commands.sh`:
- Around line 97-138: Replace the string-based construction of NETRIS_ENV_FLAGS
and SSH_MOUNT_FLAGS with bash arrays, then remove the eval command from the
podman run invocation. Convert the current multi-line string assignments into
proper bash array declarations using parentheses, where each flag becomes a
separate array element. Update the podman run command to reference these arrays
with proper expansion syntax (e.g., "${NETRIS_ENV_FLAGS[@]}" and
"${SSH_MOUNT_FLAGS[@]}") to eliminate the need for eval and preserve the
integrity of JSON values like NETRIS_RESOURCE_CLASS_MAP.

In
`@ci-operator/step-registry/osac-project/netris/lab/deploy-ocp/osac-project-netris-lab-deploy-ocp-commands.sh`:
- Around line 29-31: The scp command used to copy the kubeconfig file from
ci_machine to the shared directory lacks a timeout mechanism, which can cause
the step to hang indefinitely during SSH stalls or transient network issues.
Wrap the scp command with the timeout utility (or add timeout-related SSH
options like ConnectTimeout and ServerAliveInterval to the scp invocation) to
ensure the copy operation fails gracefully within a reasonable time if the
remote connection becomes unresponsive, similar to how other remote calls in
this script handle timeouts.

In
`@ci-operator/step-registry/osac-project/netris/lab/deploy/osac-project-netris-lab-deploy-commands.sh`:
- Around line 8-9: The echo statements that output NETRIS_TEST_INFRA_REPO and
NETRIS_TEST_INFRA_BRANCH are logging raw environment variable values that may
contain credentials in authenticated URLs, which can expose sensitive
information in logs. Instead of printing the raw repository URL, modify these
echo statements to either log only whether the variables are set (using a test
condition like checking for non-empty values) or log a sanitized version of the
repository URL with credentials stripped. This ensures sensitive authentication
information is not exposed in the logs while still providing useful debugging
information.

In
`@ci-operator/step-registry/osac-project/netris/lab/deploy/osac-project-netris-lab-deploy-ref.yaml`:
- Around line 14-16: The NETRIS_TEST_INFRA_REPO parameter currently defaults to
a personal GitHub fork (https://github.com/danmanor/netris-test-infra.git),
which introduces supply-chain and availability risks. Replace this default value
with an organization-controlled repository URL that is maintained and controlled
by the organization rather than an individual. If possible, pin the repository
reference to a specific reviewed tag or commit hash for additional security and
stability.

---

Nitpick comments:
In
`@ci-operator/step-registry/osac-project/netris/lab/gather/osac-project-netris-lab-gather-commands.sh`:
- Around line 3-4: The script is missing the errexit option which allows silent
failures outside of explicit || true paths. Modify the set commands at lines 3-4
to combine all options using the format `set -euo pipefail` instead of having
separate `set -o nounset` and `set -o pipefail` statements. This ensures that
the script exits on errors (errexit), treats undefined variables as errors
(nounset), and handles pipeline failures (pipefail) as per coding guidelines,
while allowing selective relaxation of failure handling only where explicitly
intended with || true.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

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

ℹ️ Review info
⚙️ Run configuration

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

Review profile: CHILL

Plan: Enterprise

Run ID: 71532429-09b1-40d4-8242-0b8a8bd79db2

📥 Commits

Reviewing files that changed from the base of the PR and between c111420 and 44dbdb5.

⛔ Files ignored due to path filters (4)
  • ci-operator/jobs/osac-project/fulfillment-service/osac-project-fulfillment-service-main-presubmits.yaml is excluded by !ci-operator/jobs/**
  • ci-operator/jobs/osac-project/osac-aap/osac-project-osac-aap-main-presubmits.yaml is excluded by !ci-operator/jobs/**
  • ci-operator/jobs/osac-project/osac-installer/osac-project-osac-installer-main-presubmits.yaml is excluded by !ci-operator/jobs/**
  • ci-operator/jobs/osac-project/osac-operator/osac-project-osac-operator-main-presubmits.yaml is excluded by !ci-operator/jobs/**
📒 Files selected for processing (36)
  • ci-operator/config/osac-project/fulfillment-service/osac-project-fulfillment-service-main.yaml
  • ci-operator/config/osac-project/osac-aap/osac-project-osac-aap-main.yaml
  • ci-operator/config/osac-project/osac-installer/osac-project-osac-installer-main.yaml
  • ci-operator/config/osac-project/osac-operator/osac-project-osac-operator-main.yaml
  • ci-operator/step-registry/osac-project/installer/osac-project-installer-commands.sh
  • ci-operator/step-registry/osac-project/installer/osac-project-installer-ref.yaml
  • ci-operator/step-registry/osac-project/netris/caas/OWNERS
  • ci-operator/step-registry/osac-project/netris/caas/deploy-caas/OWNERS
  • ci-operator/step-registry/osac-project/netris/caas/deploy-caas/osac-project-netris-caas-deploy-caas-commands.sh
  • ci-operator/step-registry/osac-project/netris/caas/deploy-caas/osac-project-netris-caas-deploy-caas-ref.metadata.json
  • ci-operator/step-registry/osac-project/netris/caas/deploy-caas/osac-project-netris-caas-deploy-caas-ref.yaml
  • ci-operator/step-registry/osac-project/netris/caas/osac-project-netris-caas-workflow.metadata.json
  • ci-operator/step-registry/osac-project/netris/caas/osac-project-netris-caas-workflow.yaml
  • ci-operator/step-registry/osac-project/netris/caas/setup-caas/OWNERS
  • ci-operator/step-registry/osac-project/netris/caas/setup-caas/osac-project-netris-caas-setup-caas-commands.sh
  • ci-operator/step-registry/osac-project/netris/caas/setup-caas/osac-project-netris-caas-setup-caas-ref.metadata.json
  • ci-operator/step-registry/osac-project/netris/caas/setup-caas/osac-project-netris-caas-setup-caas-ref.yaml
  • ci-operator/step-registry/osac-project/netris/lab/OWNERS
  • ci-operator/step-registry/osac-project/netris/lab/deploy-ocp/OWNERS
  • ci-operator/step-registry/osac-project/netris/lab/deploy-ocp/osac-project-netris-lab-deploy-ocp-commands.sh
  • ci-operator/step-registry/osac-project/netris/lab/deploy-ocp/osac-project-netris-lab-deploy-ocp-ref.metadata.json
  • ci-operator/step-registry/osac-project/netris/lab/deploy-ocp/osac-project-netris-lab-deploy-ocp-ref.yaml
  • ci-operator/step-registry/osac-project/netris/lab/deploy-osac/OWNERS
  • ci-operator/step-registry/osac-project/netris/lab/deploy-osac/osac-project-netris-lab-deploy-osac-commands.sh
  • ci-operator/step-registry/osac-project/netris/lab/deploy-osac/osac-project-netris-lab-deploy-osac-ref.metadata.json
  • ci-operator/step-registry/osac-project/netris/lab/deploy-osac/osac-project-netris-lab-deploy-osac-ref.yaml
  • ci-operator/step-registry/osac-project/netris/lab/deploy/OWNERS
  • ci-operator/step-registry/osac-project/netris/lab/deploy/osac-project-netris-lab-deploy-commands.sh
  • ci-operator/step-registry/osac-project/netris/lab/deploy/osac-project-netris-lab-deploy-ref.metadata.json
  • ci-operator/step-registry/osac-project/netris/lab/deploy/osac-project-netris-lab-deploy-ref.yaml
  • ci-operator/step-registry/osac-project/netris/lab/gather/OWNERS
  • ci-operator/step-registry/osac-project/netris/lab/gather/osac-project-netris-lab-gather-commands.sh
  • ci-operator/step-registry/osac-project/netris/lab/gather/osac-project-netris-lab-gather-ref.metadata.json
  • ci-operator/step-registry/osac-project/netris/lab/gather/osac-project-netris-lab-gather-ref.yaml
  • ci-operator/step-registry/osac-project/netris/lab/osac-project-netris-lab-chain.metadata.json
  • ci-operator/step-registry/osac-project/netris/lab/osac-project-netris-lab-chain.yaml

Comment on lines +97 to +138
NETRIS_ENV_FLAGS="\
-e NETWORK_CLASS=netris \
-e NETWORK_STEPS_COLLECTION=netris.steps \
-e EXTERNAL_ACCESS_BASE_DOMAIN=osac.local \
-e EXTERNAL_ACCESS_SUPPORTED_BASE_DOMAINS=osac.local \
-e EXTERNAL_ACCESS_API_INTERNAL_NETWORK=hypershift \
-e HOSTED_CLUSTER_BASE_DOMAIN=osac.local \
-e HOSTED_CLUSTER_CONTROLLER_AVAILABILITY_POLICY=SingleReplica \
-e HOSTED_CLUSTER_INFRASTRUCTURE_AVAILABILITY_POLICY=SingleReplica \
-e NETRIS_CONTROLLER_URL=${NETRIS_CTL_URL} \
-e NETRIS_USERNAME=netris \
-e NETRIS_PASSWORD=netris \
-e NETRIS_SITE_ID=${NETRIS_SITE_ID} \
-e NETRIS_TENANT_ID=${NETRIS_TENANT_ID} \
-e NETRIS_TENANT_NAME=${NETRIS_TENANT_NAME} \
-e NETRIS_MGMT_VPC_ID=${OCP_VPC_ID} \
-e NETRIS_MGMT_VPC_NAME=ocp-sno \
-e NETRIS_RESOURCE_CLASS_MAP=${RESOURCE_CLASS_MAP} \
-e SERVER_SSH_BASTION_HOST=192.168.16.254 \
-e SERVER_SSH_BASTION_USER=root \
-e SERVER_SSH_USER=root \
-e SERVER_MGMT_ROUTE_DESTINATION=192.168.16.0/20 \
-e SERVER_MGMT_ROUTE_GATEWAY=192.168.16.1"

SSH_MOUNT_FLAGS="\
-v /root/.ssh/id_rsa:/installer/overlays/${E2E_KUSTOMIZE_OVERLAY}/files/server-ssh-key:z \
-v /root/.ssh/id_rsa:/installer/overlays/${E2E_KUSTOMIZE_OVERLAY}/files/server-ssh-bastion-key:z"
fi

eval podman run --authfile /root/pull-secret --rm --network=host \
-v \${KUBECONFIG}:/root/.kube/config:z \
-v /root/pull-secret:/installer/overlays/${E2E_KUSTOMIZE_OVERLAY}/files/quay-pull-secret.json:z \
-v /tmp/license.zip:/installer/overlays/${E2E_KUSTOMIZE_OVERLAY}/files/license.zip:z \
${SSH_MOUNT_FLAGS} \
-e INSTALLER_NAMESPACE=${E2E_NAMESPACE} \
-e INSTALLER_KUSTOMIZE_OVERLAY=${E2E_KUSTOMIZE_OVERLAY} \
-e INSTALLER_VM_TEMPLATE=${E2E_VM_TEMPLATE} \
-e DEPLOY_MODE=${DEPLOY_MODE} \
-e VALUES_FILE=${VALUES_FILE} \
-e INGRESS_SERVICE=${INGRESS_SERVICE} \
${NETRIS_ENV_FLAGS} \
${OSAC_INSTALLER_IMAGE} sh /installer/scripts/setup.sh

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
set -euo pipefail

RESOURCE_CLASS_MAP='{"ci-worker":{"server_cluster_template_id":7,"mgmt_interface":"ens4"}}'
NETRIS_ENV_FLAGS="-e NETRIS_RESOURCE_CLASS_MAP=${RESOURCE_CLASS_MAP}"

echo "Second-parse quote stripping with eval:"
eval "set -- run ${NETRIS_ENV_FLAGS}"
printf '  %s\n' "$@"

echo "Second-parse execution risk with eval:"
UNTRUSTED='$(printf EVAL_TRIGGERED >&2)'
eval "printf '%s\n' ${UNTRUSTED}"

Repository: openshift/release

Length of output: 313


🏁 Script executed:

cat -n ci-operator/step-registry/osac-project/installer/osac-project-installer-commands.sh | sed -n '90,145p'

Repository: openshift/release

Length of output: 2752


Replace string-based flag construction with bash arrays to eliminate eval and prevent quote stripping of JSON payloads.

The current code uses eval podman run to execute dynamic flags built as unquoted strings. This creates two critical vulnerabilities:

  1. Command injection: Untrusted values in NETRIS_ENV_FLAGS or SSH_MOUNT_FLAGS can execute arbitrary commands via eval
  2. JSON corruption: The NETRIS_RESOURCE_CLASS_MAP JSON loses internal quotes during shell parsing (quotes are consumed by the first parse, then re-parsed by eval, stripping internal structure)

Use bash arrays instead to pass arguments without a second shell parse. See diff for complete refactoring.

🤖 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/osac-project/installer/osac-project-installer-commands.sh`
around lines 97 - 138, Replace the string-based construction of NETRIS_ENV_FLAGS
and SSH_MOUNT_FLAGS with bash arrays, then remove the eval command from the
podman run invocation. Convert the current multi-line string assignments into
proper bash array declarations using parentheses, where each flag becomes a
separate array element. Update the podman run command to reference these arrays
with proper expansion syntax (e.g., "${NETRIS_ENV_FLAGS[@]}" and
"${SSH_MOUNT_FLAGS[@]}") to eliminate the need for eval and preserve the
integrity of JSON values like NETRIS_RESOURCE_CLASS_MAP.

Comment on lines +29 to +31
scp -F "${SHARED_DIR}/ssh_config" \
"ci_machine:/root/.kube/config" \
"${SHARED_DIR}/kubeconfig"

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

Add a timeout around kubeconfig scp to avoid hanging the step.

The copy-back scp is the only remote call here without a timeout; transient SSH stalls can block this step much longer than needed before failing.

Suggested patch
-scp -F "${SHARED_DIR}/ssh_config" \
+timeout -s 9 2m scp -F "${SHARED_DIR}/ssh_config" \
     "ci_machine:/root/.kube/config" \
     "${SHARED_DIR}/kubeconfig"
📝 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
scp -F "${SHARED_DIR}/ssh_config" \
"ci_machine:/root/.kube/config" \
"${SHARED_DIR}/kubeconfig"
timeout -s 9 2m scp -F "${SHARED_DIR}/ssh_config" \
"ci_machine:/root/.kube/config" \
"${SHARED_DIR}/kubeconfig"
🤖 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/osac-project/netris/lab/deploy-ocp/osac-project-netris-lab-deploy-ocp-commands.sh`
around lines 29 - 31, The scp command used to copy the kubeconfig file from
ci_machine to the shared directory lacks a timeout mechanism, which can cause
the step to hang indefinitely during SSH stalls or transient network issues.
Wrap the scp command with the timeout utility (or add timeout-related SSH
options like ConnectTimeout and ServerAliveInterval to the scp invocation) to
ensure the copy operation fails gracefully within a reasonable time if the
remote connection becomes unresponsive, similar to how other remote calls in
this script handle timeouts.

Comment on lines +8 to +9
echo "NETRIS_TEST_INFRA_REPO: ${NETRIS_TEST_INFRA_REPO}"
echo "NETRIS_TEST_INFRA_BRANCH: ${NETRIS_TEST_INFRA_BRANCH}"

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

Avoid logging the raw repository URL from environment.

Printing NETRIS_TEST_INFRA_REPO verbatim can leak credentials if an authenticated URL is passed. Log a sanitized value (or just whether it is set).

Suggested minimal change
-echo "NETRIS_TEST_INFRA_REPO: ${NETRIS_TEST_INFRA_REPO}"
+echo "NETRIS_TEST_INFRA_REPO: <redacted>"

As per coding guidelines, step-registry command scripts should avoid exposing sensitive material in logs.

📝 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
echo "NETRIS_TEST_INFRA_REPO: ${NETRIS_TEST_INFRA_REPO}"
echo "NETRIS_TEST_INFRA_BRANCH: ${NETRIS_TEST_INFRA_BRANCH}"
echo "NETRIS_TEST_INFRA_REPO: <redacted>"
echo "NETRIS_TEST_INFRA_BRANCH: ${NETRIS_TEST_INFRA_BRANCH}"
🤖 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/osac-project/netris/lab/deploy/osac-project-netris-lab-deploy-commands.sh`
around lines 8 - 9, The echo statements that output NETRIS_TEST_INFRA_REPO and
NETRIS_TEST_INFRA_BRANCH are logging raw environment variable values that may
contain credentials in authenticated URLs, which can expose sensitive
information in logs. Instead of printing the raw repository URL, modify these
echo statements to either log only whether the variables are set (using a test
condition like checking for non-empty values) or log a sanitized version of the
repository URL with credentials stripped. This ensures sensitive authentication
information is not exposed in the logs while still providing useful debugging
information.

Source: Coding guidelines

Comment on lines +14 to +16
- name: NETRIS_TEST_INFRA_REPO
default: "https://github.com/danmanor/netris-test-infra.git"
documentation: Git repository URL for the netris-test-infra project

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

Use an organization-controlled default for NETRIS_TEST_INFRA_REPO.

Defaulting to a personal fork introduces avoidable supply-chain and availability risk for this CI path. Please switch the default to an org-owned repository (ideally pinned to a reviewed tag/commit).

🤖 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/osac-project/netris/lab/deploy/osac-project-netris-lab-deploy-ref.yaml`
around lines 14 - 16, The NETRIS_TEST_INFRA_REPO parameter currently defaults to
a personal GitHub fork (https://github.com/danmanor/netris-test-infra.git),
which introduces supply-chain and availability risks. Replace this default value
with an organization-controlled repository URL that is maintained and controlled
by the organization rather than an individual. If possible, pin the repository
reference to a specific reviewed tag or commit hash for additional security and
stability.

danmanor and others added 2 commits June 22, 2026 12:11
- Add osac-project-netris-caas workflow (CaaS e2e on Netris lab)
- Add caas-discover step (InfraEnv + boot agents with discovery ISO)
- Add caas-setup step (annotate agents, create host type + cluster)
- Update installer step to discover and pass Netris env vars into
  cluster-fulfillment-ig ConfigMap/Secret when NETRIS_INTEGRATION=true
  (controller URL, site/tenant IDs, VPC, resource class map, SSH keys,
  hosted cluster policies, external access domain)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replaces the podman-based installer approach with netris-test-infra
native Ansible deployment. Each component's code and images are
extracted from CI-built container images and passed to the Ansible
roles via EXTRA_VARS.

Step registry changes:
- Add osac-project-netris-lab chain (deploy → deploy-ocp → deploy-osac)
- Add deploy-ocp step (make deploy-ocp)
- Add deploy-osac step with 8 image dependencies for full component
  testing (installer, operator, fulfillment-service, osac-cli,
  osac-aap-ee, osac-aap-code, operator-code, fs-code)
- Add gather step (make gather)
- Move CaaS steps to netris/caas/ (setup-caas, deploy-caas)
- Remove old caas-discover, caas-setup, configure, ocp-install steps
- Update CaaS workflow to use chain + netris-native steps

CI config changes:
- Add e2e-netris-caas presubmit to all 4 component repos
- Add promoted container images (fulfillment-service, osac-aap-ee)
- Add code images (osac-operator-code, fulfillment-service-code)
- Import upstream images for non-tested components via base_images
- Override with locally built PR images for the tested component
- Extract component code onto installer submodule paths for exact
  revision alignment

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@danmanor danmanor force-pushed the osac-netris-lab-ci-workflow branch from 44dbdb5 to e14a940 Compare June 22, 2026 16:11
@danmanor danmanor changed the title WIP: OSAC: Restructure Netris CI workflow with component image testing WIP: NO-ISSUE: Restructure Netris CI workflow with component image testing Jun 22, 2026
@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Jun 22, 2026
@openshift-ci-robot

Copy link
Copy Markdown
Contributor

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

Details

In response to this:

Summary

  • Restructures the OSAC Netris CI workflow to test actual component code and images instead of always deploying from upstream main
  • Adds e2e-netris-caas presubmit test to all 4 OSAC component repos (osac-operator, fulfillment-service, osac-aap, osac-installer)
  • Each component's PR builds its images, imports upstream images for other components, and the deploy-osac step extracts all code from images onto the installer's submodule paths for exact revision alignment

Changes

Step Registry (ci-operator/step-registry/osac-project/netris/)

  • Lab chain (osac-project-netris-lab): deploy → deploy-ocp → deploy-osac
  • deploy step: make setup && make deploy-lab (installs ansible/make prerequisites first)
  • deploy-ocp step: make deploy-ocp (replaces old configure + ocp-install)
  • deploy-osac step: extracts installer, component code, and CLI from 8 CI-built images, passes component image overrides to Ansible via EXTRA_VARS
  • gather step: make gather (replaces osac-project-gather)
  • CaaS steps moved to netris/caas/ (setup-caas, deploy-caas)
  • CaaS workflow: uses lab chain + CaaS steps, deploy-caas as test phase

CI Configs (ci-operator/config/osac-project/)

  • Each component builds promoted container images (no more duplicate -pr images)
  • Added code images (osac-operator-code, fulfillment-service-code) for submodule alignment
  • Added fulfillment-service and osac-aap-ee promoted images
  • Each e2e-netris-caas test explicitly lists all 8 image dependencies

Image Dependencies per Test

Image What it carries
OSAC_INSTALLER_IMAGE Installer scripts, Helm charts, overlays
OSAC_OPERATOR_IMAGE Operator container
OSAC_OPERATOR_CODE_IMAGE Operator source (submodule overlay)
FULFILLMENT_SERVICE_IMAGE FS service container
FULFILLMENT_SERVICE_CODE_IMAGE FS source (submodule overlay)
OSAC_CLI_IMAGE osac CLI binary
OSAC_AAP_EE_IMAGE AAP execution environment
OSAC_AAP_CODE_IMAGE AAP playbooks/roles source

A detailed high-level summary could not be generated for this review. Here is an overview derived from the analyzed file changes:

  • ci-operator/config/osac-project/fulfillment-service/osac-project-fulfillment-service-main.yaml: ## AI-generated summary of changes
  • ci-operator/config/osac-project/osac-aap/osac-project-osac-aap-main.yaml: ## AI-generated summary of changes
  • ci-operator/config/osac-project/osac-installer/osac-project-osac-installer-main.yaml: ## AI-generated summary of changes
  • ci-operator/config/osac-project/osac-operator/osac-project-osac-operator-main.yaml: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/installer/osac-project-installer-commands.sh: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/installer/osac-project-installer-ref.yaml: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/netris/caas/OWNERS: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/netris/caas/deploy-caas/OWNERS: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/netris/caas/deploy-caas/osac-project-netris-caas-deploy-caas-commands.sh: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/netris/caas/deploy-caas/osac-project-netris-caas-deploy-caas-ref.metadata.json: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/netris/caas/deploy-caas/osac-project-netris-caas-deploy-caas-ref.yaml: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/netris/caas/osac-project-netris-caas-workflow.metadata.json: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/netris/caas/osac-project-netris-caas-workflow.yaml: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/netris/caas/setup-caas/OWNERS: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/netris/caas/setup-caas/osac-project-netris-caas-setup-caas-commands.sh: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/netris/caas/setup-caas/osac-project-netris-caas-setup-caas-ref.metadata.json: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/netris/caas/setup-caas/osac-project-netris-caas-setup-caas-ref.yaml: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/netris/lab/OWNERS: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/netris/lab/deploy-ocp/OWNERS: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/netris/lab/deploy-ocp/osac-project-netris-lab-deploy-ocp-commands.sh: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/netris/lab/deploy-ocp/osac-project-netris-lab-deploy-ocp-ref.metadata.json: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/netris/lab/deploy-ocp/osac-project-netris-lab-deploy-ocp-ref.yaml: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/netris/lab/deploy-osac/OWNERS: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/netris/lab/deploy-osac/osac-project-netris-lab-deploy-osac-commands.sh: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/netris/lab/deploy-osac/osac-project-netris-lab-deploy-osac-ref.metadata.json: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/netris/lab/deploy-osac/osac-project-netris-lab-deploy-osac-ref.yaml: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/netris/lab/deploy/OWNERS: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/netris/lab/deploy/osac-project-netris-lab-deploy-commands.sh: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/netris/lab/deploy/osac-project-netris-lab-deploy-ref.metadata.json: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/netris/lab/deploy/osac-project-netris-lab-deploy-ref.yaml: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/netris/lab/gather/OWNERS: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/netris/lab/gather/osac-project-netris-lab-gather-commands.sh: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/netris/lab/gather/osac-project-netris-lab-gather-ref.metadata.json: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/netris/lab/gather/osac-project-netris-lab-gather-ref.yaml: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/netris/lab/osac-project-netris-lab-chain.metadata.json: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/netris/lab/osac-project-netris-lab-chain.yaml: ## AI-generated summary of changes

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.

@danmanor danmanor changed the title WIP: NO-ISSUE: Restructure Netris CI workflow with component image testing WIP: NO-ISSUE: Add Netris based e2e jobs Jun 22, 2026
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@danmanor danmanor changed the title WIP: NO-ISSUE: Add Netris based e2e jobs WIP: OSAC-1630: Add Netris based e2e jobs Jun 22, 2026
@openshift-ci-robot

openshift-ci-robot commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

@danmanor: This pull request references OSAC-1630 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

  • Restructures the OSAC Netris CI workflow to test actual component code and images instead of always deploying from upstream main
  • Adds e2e-netris-caas presubmit test to all 4 OSAC component repos (osac-operator, fulfillment-service, osac-aap, osac-installer)
  • Each component's PR builds its images, imports upstream images for other components, and the deploy-osac step extracts all code from images onto the installer's submodule paths for exact revision alignment

Changes

Step Registry (ci-operator/step-registry/osac-project/netris/)

  • Lab chain (osac-project-netris-lab): deploy → deploy-ocp → deploy-osac
  • deploy step: make setup && make deploy-lab (installs ansible/make prerequisites first)
  • deploy-ocp step: make deploy-ocp (replaces old configure + ocp-install)
  • deploy-osac step: extracts installer, component code, and CLI from 8 CI-built images, passes component image overrides to Ansible via EXTRA_VARS
  • gather step: make gather (replaces osac-project-gather)
  • CaaS steps moved to netris/caas/ (setup-caas, deploy-caas)
  • CaaS workflow: uses lab chain + CaaS steps, deploy-caas as test phase

CI Configs (ci-operator/config/osac-project/)

  • Each component builds promoted container images (no more duplicate -pr images)
  • Added code images (osac-operator-code, fulfillment-service-code) for submodule alignment
  • Added fulfillment-service and osac-aap-ee promoted images
  • Each e2e-netris-caas test explicitly lists all 8 image dependencies

Image Dependencies per Test

Image What it carries
OSAC_INSTALLER_IMAGE Installer scripts, Helm charts, overlays
OSAC_OPERATOR_IMAGE Operator container
OSAC_OPERATOR_CODE_IMAGE Operator source (submodule overlay)
FULFILLMENT_SERVICE_IMAGE FS service container
FULFILLMENT_SERVICE_CODE_IMAGE FS source (submodule overlay)
OSAC_CLI_IMAGE osac CLI binary
OSAC_AAP_EE_IMAGE AAP execution environment
OSAC_AAP_CODE_IMAGE AAP playbooks/roles source

A detailed high-level summary could not be generated for this review. Here is an overview derived from the analyzed file changes:

  • ci-operator/config/osac-project/fulfillment-service/osac-project-fulfillment-service-main.yaml: ## AI-generated summary of changes
  • ci-operator/config/osac-project/osac-aap/osac-project-osac-aap-main.yaml: ## AI-generated summary of changes
  • ci-operator/config/osac-project/osac-installer/osac-project-osac-installer-main.yaml: ## AI-generated summary of changes
  • ci-operator/config/osac-project/osac-operator/osac-project-osac-operator-main.yaml: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/installer/osac-project-installer-commands.sh: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/installer/osac-project-installer-ref.yaml: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/netris/caas/OWNERS: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/netris/caas/deploy-caas/OWNERS: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/netris/caas/deploy-caas/osac-project-netris-caas-deploy-caas-commands.sh: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/netris/caas/deploy-caas/osac-project-netris-caas-deploy-caas-ref.metadata.json: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/netris/caas/deploy-caas/osac-project-netris-caas-deploy-caas-ref.yaml: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/netris/caas/osac-project-netris-caas-workflow.metadata.json: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/netris/caas/osac-project-netris-caas-workflow.yaml: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/netris/caas/setup-caas/OWNERS: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/netris/caas/setup-caas/osac-project-netris-caas-setup-caas-commands.sh: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/netris/caas/setup-caas/osac-project-netris-caas-setup-caas-ref.metadata.json: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/netris/caas/setup-caas/osac-project-netris-caas-setup-caas-ref.yaml: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/netris/lab/OWNERS: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/netris/lab/deploy-ocp/OWNERS: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/netris/lab/deploy-ocp/osac-project-netris-lab-deploy-ocp-commands.sh: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/netris/lab/deploy-ocp/osac-project-netris-lab-deploy-ocp-ref.metadata.json: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/netris/lab/deploy-ocp/osac-project-netris-lab-deploy-ocp-ref.yaml: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/netris/lab/deploy-osac/OWNERS: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/netris/lab/deploy-osac/osac-project-netris-lab-deploy-osac-commands.sh: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/netris/lab/deploy-osac/osac-project-netris-lab-deploy-osac-ref.metadata.json: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/netris/lab/deploy-osac/osac-project-netris-lab-deploy-osac-ref.yaml: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/netris/lab/deploy/OWNERS: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/netris/lab/deploy/osac-project-netris-lab-deploy-commands.sh: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/netris/lab/deploy/osac-project-netris-lab-deploy-ref.metadata.json: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/netris/lab/deploy/osac-project-netris-lab-deploy-ref.yaml: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/netris/lab/gather/OWNERS: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/netris/lab/gather/osac-project-netris-lab-gather-commands.sh: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/netris/lab/gather/osac-project-netris-lab-gather-ref.metadata.json: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/netris/lab/gather/osac-project-netris-lab-gather-ref.yaml: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/netris/lab/osac-project-netris-lab-chain.metadata.json: ## AI-generated summary of changes
  • ci-operator/step-registry/osac-project/netris/lab/osac-project-netris-lab-chain.yaml: ## AI-generated summary of changes

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.

@danmanor

Copy link
Copy Markdown
Contributor Author

/pj-rehearse pull-ci-osac-project-osac-aap-main-e2e-netris-caas

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

Copy link
Copy Markdown
Contributor

@danmanor: your /pj-rehearse request was not processed because the request waited in queue for longer than 5 minutes. Please retry in a few minutes.

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

[REHEARSALNOTIFIER]
@danmanor: 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-osac-project-fulfillment-service-main-e2e-netris-caas osac-project/fulfillment-service presubmit Presubmit changed
pull-ci-osac-project-fulfillment-service-main-e2e-vmaas osac-project/fulfillment-service presubmit Ci-operator config changed
pull-ci-osac-project-fulfillment-service-main-images osac-project/fulfillment-service presubmit Ci-operator config changed
pull-ci-osac-project-fulfillment-service-main-unit osac-project/fulfillment-service presubmit Ci-operator config changed
pull-ci-osac-project-osac-operator-main-e2e-netris-caas osac-project/osac-operator presubmit Presubmit changed
pull-ci-osac-project-osac-operator-main-e2e-vmaas osac-project/osac-operator presubmit Ci-operator config changed
pull-ci-osac-project-osac-operator-main-images osac-project/osac-operator presubmit Ci-operator config changed
pull-ci-osac-project-osac-installer-main-e2e-netris-caas osac-project/osac-installer presubmit Presubmit changed
pull-ci-osac-project-osac-installer-main-e2e-vmaas osac-project/osac-installer presubmit Ci-operator config changed
pull-ci-osac-project-osac-installer-main-images osac-project/osac-installer presubmit Ci-operator config changed
pull-ci-osac-project-osac-aap-main-e2e-netris-caas osac-project/osac-aap presubmit Presubmit changed
pull-ci-osac-project-osac-aap-main-e2e-vmaas osac-project/osac-aap presubmit Ci-operator config changed
pull-ci-osac-project-osac-aap-main-images osac-project/osac-aap presubmit Ci-operator config changed
periodic-ci-osac-project-osac-test-infra-main-e2e-vmaas-full-setup-helm N/A periodic Registry content 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.

@openshift-ci

openshift-ci Bot commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

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

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants