Skip to content

feat: add Data Router / ReportPortal integration for rhdh-plugin-export-overlays#78824

Open
zdrapela wants to merge 9 commits intoopenshift:mainfrom
zdrapela:overlay-data-router
Open

feat: add Data Router / ReportPortal integration for rhdh-plugin-export-overlays#78824
zdrapela wants to merge 9 commits intoopenshift:mainfrom
zdrapela:overlay-data-router

Conversation

@zdrapela
Copy link
Copy Markdown
Contributor

@zdrapela zdrapela commented May 5, 2026

Summary

Overlay data-router integration

  • Create new redhat-developer-rhdh-plugin-export-overlays-send-data-router step that sends JUnit test results to Data Router for ReportPortal ingestion
  • Update overlay test step to write platform metadata (IS_OPENSHIFT, CONTAINER_PLATFORM, CONTAINER_PLATFORM_VERSION, RHDH_VERSION) and JUnit XML to SHARED_DIR
  • Wire data-router + gather post steps into both e2e-ocp-helm and e2e-ocp-helm-nightly test definitions
  • ReportPortal launch attributes: job_type, pr, job_name, rhdh_version, install_method (dynamic), cluster_type, container_platform, container_platform_version, component=plugins

rhdh data-router gap fix

  • Add redhat-developer-rhdh-send-data-router post step to tests that were missing it:
    • e2e-ocp-operator-auth-providers-nightly: main, release-1.8, release-1.9
    • e2e-ocp-helm-upgrade-nightly: main, release-1.9

Depends on:

Jira: https://redhat.atlassian.net/browse/RHIDP-13047

@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 May 5, 2026
@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci Bot commented May 5, 2026

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

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 5, 2026

Walkthrough

Adds a Data Router / ReportPortal post-step to two e2e Helm test jobs; the Helm test script now exports platform metadata and JUnit results to SHARED_DIR, and a new step reads those artifacts, formats metadata and JUnit XML, and sends them to Data Router / ReportPortal.

Changes

Data Router / ReportPortal Integration

Layer / File(s) Summary
Platform Metadata Export
ci-operator/step-registry/.../ocp/helm/redhat-developer-rhdh-plugin-export-overlays-ocp-helm-commands.sh
Helm test script writes IS_OPENSHIFT.txt, CONTAINER_PLATFORM.txt, CONTAINER_PLATFORM_VERSION.txt, and RHDH_VERSION.txt into SHARED_DIR and copies playwright-report/junit-results.xml to ${SHARED_DIR}/junit-results-overlay-e2e.xml when present.
New Step Registry Definition
ci-operator/step-registry/.../send/data-router/...-send-data-router-ref.yaml, ...-send-data-router-ref.metadata.json, .../send/data-router/OWNERS
Adds a new redhat-developer-rhdh-plugin-export-overlays-send-data-router ref, declaring its commands script, credential mount (/tmp/secrets), source image (droute:latest), resource requests, and owners/metadata.
Data Router / ReportPortal Logic
ci-operator/step-registry/.../send/data-router/redhat-developer-rhdh-plugin-export-overlays-send-data-router-commands.sh
New Bash step loads secrets from /tmp/secrets, reads platform metadata from SHARED_DIR, validates required vars, generates a Data Router metadata JSON via jq, processes JUnit XML (copy originals, rewrite attachment placeholders to artifact URLs, fix <property> tags), sends results via droute send with up to 10 retries, and for periodic jobs polls droute request get (up to 30 attempts) to obtain and save a ReportPortal launch URL; on permanent failure writes a failure status to SHARED_DIR/ARTIFACT_DIR.
Test Pipeline Wiring
ci-operator/config/.../redhat-developer-rhdh-plugin-export-overlays-main.yaml
Adds a post step with ref: redhat-developer-rhdh-plugin-export-overlays-send-data-router and chain: gather to the e2e-ocp-helm and e2e-ocp-helm-nightly test job entries.

Sequence Diagram

sequenceDiagram
    participant Job as Helm Test Job
    participant SharedDir as SHARED_DIR
    participant DataRouter as Data Router Step
    participant DRoute as droute CLI
    participant ReportPortal as ReportPortal

    Job->>SharedDir: write platform metadata (IS_OPENSHIFT, CONTAINER_PLATFORM, RHDH_VERSION)
    Job->>SharedDir: write JUnit results (junit-results-overlay-e2e.xml)

    DataRouter->>SharedDir: read metadata & JUnit files
    DataRouter->>DataRouter: generate metadata JSON & process JUnit XML (attachments, properties)
    DataRouter->>DRoute: droute send (with retries)
    DRoute->>ReportPortal: deliver results
    ReportPortal-->>DRoute: return request id

    DataRouter->>DRoute: poll droute request get
    DRoute->>ReportPortal: request launch status
    ReportPortal-->>DRoute: return launch URL
    DRoute-->>DataRouter: forward launch URL

    DataRouter->>SharedDir: save STATUS_URL_REPORTPORTAL / status files
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

🚥 Pre-merge checks | ✅ 11 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 50.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (11 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately and specifically describes the main change: adding Data Router/ReportPortal integration to the rhdh-plugin-export-overlays CI pipeline.
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 PR modifies CI/CD configurations (YAML), shell scripts, and metadata files. Contains no Go test code or Ginkgo tests. Custom check for test names is not applicable.
Test Structure And Quality ✅ Passed Custom check for Ginkgo test quality is not applicable. PR only modifies CI/CD configuration (YAML), bash scripts, and metadata files. No Ginkgo test code present.
Microshift Test Compatibility ✅ Passed No new Ginkgo e2e tests added. PR only modifies CI infrastructure and configuration files. Custom check does not apply.
Single Node Openshift (Sno) Test Compatibility ✅ Passed Check not applicable. PR contains no new Ginkgo e2e tests—only CI/CD infrastructure changes (YAML configs, bash scripts, metadata). SNO compatibility check applies only to new test code.
Topology-Aware Scheduling Compatibility ✅ Passed This PR adds CI/CD pipeline configuration and test scripts, not deployment manifests, operators, or controllers. The check applies only to those three types of changes and is not applicable here.
Ote Binary Stdout Contract ✅ Passed OTE Binary Stdout Contract check is not applicable. PR contains only YAML CI configs, bash scripts, and metadata files — no Go code that could violate stdout JSON protocol.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed This PR contains only CI infrastructure changes (YAML configs, bash scripts, metadata) - no new Ginkgo e2e test code. The custom check applies only to new e2e tests, which are not present here.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Tip

💬 Introducing Slack Agent: The best way for teams to turn conversations into code.

Slack Agent is built on CodeRabbit's deep understanding of your code, so your team can collaborate across the entire SDLC without losing context.

  • Generate code and open pull requests
  • Plan features and break down work
  • Investigate incidents and troubleshoot customer tickets together
  • Automate recurring tasks and respond to alerts with triggers
  • Summarize progress and report instantly

Built for teams:

  • Shared memory across your entire org—no repeating context
  • Per-thread sandboxes to safely plan and execute work
  • Governance built-in—scoped access, auditability, and budget controls

One agent for your entire SDLC. Right inside Slack.

👉 Get started


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 and usage tips.

@openshift-ci openshift-ci Bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label May 5, 2026
@zdrapela zdrapela force-pushed the overlay-data-router branch from 4312bde to b4e2d31 Compare May 5, 2026 12:24
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🧹 Nitpick comments (4)
ci-operator/step-registry/redhat-developer/rhdh-plugin-export-overlays/send/data-router/redhat-developer-rhdh-plugin-export-overlays-send-data-router-ref.yaml (1)

8-11: ⚡ Quick win

Consider pinning droute to a specific image tag instead of latest

tag: latest means any update to the dno/droute:latest image can silently change CLI behaviour (flags, output format), breaking the --results handling, the grep "request:" parsing, or the droute request get output format without a corresponding change in this step.

♻️ Proposed fix
   from_image:
     name: droute
     namespace: dno
-    tag: latest
+    tag: v<version>  # pin to the version validated against this script
🤖 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/redhat-developer/rhdh-plugin-export-overlays/send/data-router/redhat-developer-rhdh-plugin-export-overlays-send-data-router-ref.yaml`
around lines 8 - 11, The step currently uses an unpinned image tag
(from_image.name: droute, from_image.namespace: dno, from_image.tag: latest);
change from_image.tag from "latest" to a specific immutable identifier (a fixed
semver tag or an image digest) to prevent unexpected CLI/behavior changes—update
the tag value in the same YAML block (or replace with an image digest) so the CI
step always pulls a known, tested dno/droute image.
ci-operator/step-registry/redhat-developer/rhdh-plugin-export-overlays/send/data-router/redhat-developer-rhdh-plugin-export-overlays-send-data-router-commands.sh (3)

29-32: 💤 Low value

Typo: TRESHOLDTHRESHOLD

🔤 Proposed fix
-DATA_ROUTER_AUTO_FINALIZATION_TRESHOLD="0.9"
+DATA_ROUTER_AUTO_FINALIZATION_THRESHOLD="0.9"
 DATA_ROUTER_PROJECT="main"
 METADATA_OUTPUT="data_router_metadata_output.json"
-export DATA_ROUTER_AUTO_FINALIZATION_TRESHOLD DATA_ROUTER_PROJECT METADATA_OUTPUT
+export DATA_ROUTER_AUTO_FINALIZATION_THRESHOLD DATA_ROUTER_PROJECT METADATA_OUTPUT

Also update line 173:

-    --argjson auto_finalization_threshold "$DATA_ROUTER_AUTO_FINALIZATION_TRESHOLD" \
+    --argjson auto_finalization_threshold "$DATA_ROUTER_AUTO_FINALIZATION_THRESHOLD" \
🤖 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/redhat-developer/rhdh-plugin-export-overlays/send/data-router/redhat-developer-rhdh-plugin-export-overlays-send-data-router-commands.sh`
around lines 29 - 32, Rename the misspelled environment variable
DATA_ROUTER_AUTO_FINALIZATION_TRESHOLD to
DATA_ROUTER_AUTO_FINALIZATION_THRESHOLD everywhere it's declared and exported
(update the declaration DATA_ROUTER_AUTO_FINALIZATION_TRESHOLD and the export
line), and also update any other references to the old name (e.g., the usage at
the later occurrence around the previous line 173) so all code uses
DATA_ROUTER_AUTO_FINALIZATION_THRESHOLD consistently.

270-271: 💤 Low value

Use a distinct variable name for the polling loop's max_attempts

Re-declaring local max_attempts=30 in the same function scope shadows the outer max_attempts=10. While functionally safe (the first loop has already exited), it's misleading to a future reader and looks like a copy-paste error.

♻️ Proposed fix
-    local max_attempts=30
-    local wait_seconds=2
+    local max_poll_attempts=30
+    local wait_seconds=2
     local DATA_ROUTER_REQUEST_OUTPUT=""
     local REPORTPORTAL_LAUNCH_URL=""

-    for ((i = 1; i <= max_attempts; i++)); do
-      echo "Attempt ${i} of ${max_attempts}: Checking Data Router request completion..."
+    for ((i = 1; i <= max_poll_attempts; i++)); do
+      echo "Attempt ${i} of ${max_poll_attempts}: Checking Data Router request completion..."
       ...
-        if ((i < max_attempts)); then
+        if ((i < max_poll_attempts)); then
       ...
     done

-    echo "Warning: Could not retrieve ReportPortal launch URL after ${max_attempts} attempts"
+    echo "Warning: Could not retrieve ReportPortal launch URL after ${max_poll_attempts} attempts"
🤖 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/redhat-developer/rhdh-plugin-export-overlays/send/data-router/redhat-developer-rhdh-plugin-export-overlays-send-data-router-commands.sh`
around lines 270 - 271, The second polling loop re-declares local
max_attempts=30 which shadows the earlier max_attempts=10 and is confusing;
change the redeclared variable to a distinct name (e.g., max_attempts_poll2 or
attempts_remaining) and update any references in that loop accordingly (also
consider updating wait_seconds naming if needed) so the two loops use clearly
separate variables instead of shadowing max_attempts.

229-243: ⚡ Quick win

Hoist the JUnit file-existence check out of the retry loop

The junit_files_found check (lines 232–238) produces the same result on every retry iteration since process_junit_files doesn't remove files and nothing adds new ones mid-loop. Running this traversal up to 10 times is unnecessary.

Also, when no files are found the function returns without calling save_status_data_router_failed, so no failure marker is written despite the ERROR: log message.

♻️ Proposed fix
+  # Check for JUnit files once, before the retry loop
+  local junit_files_found=false
+  for file in "${SHARED_DIR}"/junit-*.xml; do
+    if [[ -f "$file" ]]; then
+      junit_files_found=true
+      break
+    fi
+  done
+
+  if [[ "$junit_files_found" == false ]]; then
+    echo "ERROR: No JUnit results files (junit-*.xml) found in ${SHARED_DIR}"
+    save_status_data_router_failed true
+    return
+  fi
+
   for ((i = 1; i <= max_attempts; i++)); do
     echo "Attempt ${i} of ${max_attempts} to send test results through Data Router."
 
-    local junit_files_found=false
-    for file in "${SHARED_DIR}"/junit-*.xml; do
-      if [[ -f "$file" ]]; then
-        junit_files_found=true
-        break
-      fi
-    done
-
-    if [[ "$junit_files_found" == false ]]; then
-      echo "ERROR: No JUnit results files (junit-*.xml) found in ${SHARED_DIR}"
-      return
-    fi
-
🤖 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/redhat-developer/rhdh-plugin-export-overlays/send/data-router/redhat-developer-rhdh-plugin-export-overlays-send-data-router-commands.sh`
around lines 229 - 243, Move the JUnit-existence traversal out of the retry
loop: before the for ((i=1; i<=max_attempts; i++)) loop, check for any
"${SHARED_DIR}"/junit-*.xml files (set junit_files_found) and if none are found
call save_status_data_router_failed and return early; then remove the inner
file-checking block inside the retry loop so retries only cover the send/process
attempt (e.g., process_junit_files/send_data_router logic). Ensure you reference
the same variables and functions (max_attempts, junit_files_found, SHARED_DIR,
save_status_data_router_failed, process_junit_files) so the early-exit behavior
and failure marker are correctly applied.
🤖 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/redhat-developer/rhdh-plugin-export-overlays/send/data-router/redhat-developer-rhdh-plugin-export-overlays-send-data-router-commands.sh`:
- Around line 36-40: The three variable assignments IS_OPENSHIFT,
CONTAINER_PLATFORM, and CONTAINER_PLATFORM_VERSION should use the same guarded
fallback as RHDH_VERSION so they won't be empty if the shared files are missing;
update the reads that set IS_OPENSHIFT, CONTAINER_PLATFORM, and
CONTAINER_PLATFORM_VERSION to capture failures (e.g., redirect errors and
default to a sensible value like "unknown" or "false") before exporting them so
the metadata JSON contains explicit fallback values rather than empty strings.
- Around line 245-250: The --results argument is currently passed a quoted glob
which prevents shell expansion when invoking droute send; fix by expanding the
glob into an array (e.g., results=( "${SHARED_DIR}"/junit-*.xml ) ), ensure the
array is non-empty or handle the no-match case, and then pass the expanded list
to droute as separate arguments (e.g., --results "${results[@]}") when calling
droute send; apply the same change to the other droute send invocation that uses
--results.

---

Nitpick comments:
In
`@ci-operator/step-registry/redhat-developer/rhdh-plugin-export-overlays/send/data-router/redhat-developer-rhdh-plugin-export-overlays-send-data-router-commands.sh`:
- Around line 29-32: Rename the misspelled environment variable
DATA_ROUTER_AUTO_FINALIZATION_TRESHOLD to
DATA_ROUTER_AUTO_FINALIZATION_THRESHOLD everywhere it's declared and exported
(update the declaration DATA_ROUTER_AUTO_FINALIZATION_TRESHOLD and the export
line), and also update any other references to the old name (e.g., the usage at
the later occurrence around the previous line 173) so all code uses
DATA_ROUTER_AUTO_FINALIZATION_THRESHOLD consistently.
- Around line 270-271: The second polling loop re-declares local max_attempts=30
which shadows the earlier max_attempts=10 and is confusing; change the
redeclared variable to a distinct name (e.g., max_attempts_poll2 or
attempts_remaining) and update any references in that loop accordingly (also
consider updating wait_seconds naming if needed) so the two loops use clearly
separate variables instead of shadowing max_attempts.
- Around line 229-243: Move the JUnit-existence traversal out of the retry loop:
before the for ((i=1; i<=max_attempts; i++)) loop, check for any
"${SHARED_DIR}"/junit-*.xml files (set junit_files_found) and if none are found
call save_status_data_router_failed and return early; then remove the inner
file-checking block inside the retry loop so retries only cover the send/process
attempt (e.g., process_junit_files/send_data_router logic). Ensure you reference
the same variables and functions (max_attempts, junit_files_found, SHARED_DIR,
save_status_data_router_failed, process_junit_files) so the early-exit behavior
and failure marker are correctly applied.

In
`@ci-operator/step-registry/redhat-developer/rhdh-plugin-export-overlays/send/data-router/redhat-developer-rhdh-plugin-export-overlays-send-data-router-ref.yaml`:
- Around line 8-11: The step currently uses an unpinned image tag
(from_image.name: droute, from_image.namespace: dno, from_image.tag: latest);
change from_image.tag from "latest" to a specific immutable identifier (a fixed
semver tag or an image digest) to prevent unexpected CLI/behavior changes—update
the tag value in the same YAML block (or replace with an image digest) so the CI
step always pulls a known, tested dno/droute image.
🪄 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: 45bd22c8-9148-4ef6-ab6c-ae852ac77bfb

📥 Commits

Reviewing files that changed from the base of the PR and between 639f0af and 4312bde.

📒 Files selected for processing (6)
  • ci-operator/config/redhat-developer/rhdh-plugin-export-overlays/redhat-developer-rhdh-plugin-export-overlays-main.yaml
  • ci-operator/step-registry/redhat-developer/rhdh-plugin-export-overlays/ocp/helm/redhat-developer-rhdh-plugin-export-overlays-ocp-helm-commands.sh
  • ci-operator/step-registry/redhat-developer/rhdh-plugin-export-overlays/send/data-router/OWNERS
  • ci-operator/step-registry/redhat-developer/rhdh-plugin-export-overlays/send/data-router/redhat-developer-rhdh-plugin-export-overlays-send-data-router-commands.sh
  • ci-operator/step-registry/redhat-developer/rhdh-plugin-export-overlays/send/data-router/redhat-developer-rhdh-plugin-export-overlays-send-data-router-ref.metadata.json
  • ci-operator/step-registry/redhat-developer/rhdh-plugin-export-overlays/send/data-router/redhat-developer-rhdh-plugin-export-overlays-send-data-router-ref.yaml

Comment on lines +36 to +40
IS_OPENSHIFT=$(cat "$SHARED_DIR/IS_OPENSHIFT.txt")
CONTAINER_PLATFORM=$(cat "$SHARED_DIR/CONTAINER_PLATFORM.txt")
CONTAINER_PLATFORM_VERSION=$(cat "$SHARED_DIR/CONTAINER_PLATFORM_VERSION.txt")
RHDH_VERSION=$(cat "$SHARED_DIR/RHDH_VERSION.txt" 2>/dev/null || echo "unknown")
export IS_OPENSHIFT CONTAINER_PLATFORM CONTAINER_PLATFORM_VERSION RHDH_VERSION
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 fallbacks for IS_OPENSHIFT, CONTAINER_PLATFORM, and CONTAINER_PLATFORM_VERSION

RHDH_VERSION has a || echo "unknown" guard (line 39), but the three reads above it silently produce empty strings if the test step failed before writing the metadata files. With set +o errexit, there is no error; the metadata JSON is sent with empty attribute values.

♻️ Proposed fix
-IS_OPENSHIFT=$(cat "$SHARED_DIR/IS_OPENSHIFT.txt")
-CONTAINER_PLATFORM=$(cat "$SHARED_DIR/CONTAINER_PLATFORM.txt")
-CONTAINER_PLATFORM_VERSION=$(cat "$SHARED_DIR/CONTAINER_PLATFORM_VERSION.txt")
+IS_OPENSHIFT=$(cat "$SHARED_DIR/IS_OPENSHIFT.txt" 2>/dev/null || echo "unknown")
+CONTAINER_PLATFORM=$(cat "$SHARED_DIR/CONTAINER_PLATFORM.txt" 2>/dev/null || echo "unknown")
+CONTAINER_PLATFORM_VERSION=$(cat "$SHARED_DIR/CONTAINER_PLATFORM_VERSION.txt" 2>/dev/null || echo "unknown")
📝 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
IS_OPENSHIFT=$(cat "$SHARED_DIR/IS_OPENSHIFT.txt")
CONTAINER_PLATFORM=$(cat "$SHARED_DIR/CONTAINER_PLATFORM.txt")
CONTAINER_PLATFORM_VERSION=$(cat "$SHARED_DIR/CONTAINER_PLATFORM_VERSION.txt")
RHDH_VERSION=$(cat "$SHARED_DIR/RHDH_VERSION.txt" 2>/dev/null || echo "unknown")
export IS_OPENSHIFT CONTAINER_PLATFORM CONTAINER_PLATFORM_VERSION RHDH_VERSION
IS_OPENSHIFT=$(cat "$SHARED_DIR/IS_OPENSHIFT.txt" 2>/dev/null || echo "unknown")
CONTAINER_PLATFORM=$(cat "$SHARED_DIR/CONTAINER_PLATFORM.txt" 2>/dev/null || echo "unknown")
CONTAINER_PLATFORM_VERSION=$(cat "$SHARED_DIR/CONTAINER_PLATFORM_VERSION.txt" 2>/dev/null || echo "unknown")
RHDH_VERSION=$(cat "$SHARED_DIR/RHDH_VERSION.txt" 2>/dev/null || echo "unknown")
export IS_OPENSHIFT CONTAINER_PLATFORM CONTAINER_PLATFORM_VERSION RHDH_VERSION
🤖 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/redhat-developer/rhdh-plugin-export-overlays/send/data-router/redhat-developer-rhdh-plugin-export-overlays-send-data-router-commands.sh`
around lines 36 - 40, The three variable assignments IS_OPENSHIFT,
CONTAINER_PLATFORM, and CONTAINER_PLATFORM_VERSION should use the same guarded
fallback as RHDH_VERSION so they won't be empty if the shared files are missing;
update the reads that set IS_OPENSHIFT, CONTAINER_PLATFORM, and
CONTAINER_PLATFORM_VERSION to capture failures (e.g., redirect errors and
default to a sensible value like "unknown" or "false") before exporting them so
the metadata JSON contains explicit fallback values rather than empty strings.

Comment on lines +245 to +250
if output=$(droute send --metadata "$(get_metadata_output_path)" \
--url "${DATA_ROUTER_URL}" \
--username "${DATA_ROUTER_USERNAME}" \
--password "${DATA_ROUTER_PASSWORD}" \
--results "${SHARED_DIR}/junit-*.xml" \
--verbose --wirelog 2>&1) && \
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Search for existing droute send --results usages in the repo to understand
# whether glob patterns are quoted or unquoted (revealing the convention).
rg -n --type sh -A2 'droute send' | grep -E 'droute send|--results'

Repository: openshift/release

Length of output: 1151


🏁 Script executed:

# Read the target file to verify the exact code at the mentioned lines
cat -n ci-operator/step-registry/redhat-developer/rhdh-plugin-export-overlays/send/data-router/redhat-developer-rhdh-plugin-export-overlays-send-data-router-commands.sh | sed -n '70,80p;230,250p'

Repository: openshift/release

Length of output: 1332


🏁 Script executed:

# Also check the other droute send usage mentioned in the initial results
cat -n ci-operator/step-registry/redhat-developer/rhdh/send/data-router/redhat-developer-rhdh-send-data-router-commands.sh | sed -n '280,295p'

Repository: openshift/release

Length of output: 900


🏁 Script executed:

# Check the send-results-to-reportportal file as well
cat -n ci-operator/step-registry/send-results/to-reportportal/send-results-to-reportportal-commands.sh | sed -n '520,545p'

Repository: openshift/release

Length of output: 1071


🏁 Script executed:

# Search for any documentation or comments about droute in the repository
rg -n 'droute' --type sh -B2 -A2 | head -100

Repository: openshift/release

Length of output: 9343


--results receives a quoted glob pattern that won't expand

The issue is confirmed. Line 249 passes --results "${SHARED_DIR}/junit-*.xml" with the glob pattern fully quoted, preventing shell expansion. This contradicts lines 74 and 233 in the same file, which correctly unquote the glob ("${SHARED_DIR}"/junit-*.xml) to allow shell expansion.

The code checks for file existence with an unquoted glob at line 233, then passes a quoted glob to droute send. If droute expects actual file paths (not glob patterns), it will fail. Either way, this inconsistency is a bug.

The proposed fix is correct—extract the glob into an array and expand it:

🐛 Proposed fix
-    if output=$(droute send --metadata "$(get_metadata_output_path)" \
-        --url "${DATA_ROUTER_URL}" \
-        --username "${DATA_ROUTER_USERNAME}" \
-        --password "${DATA_ROUTER_PASSWORD}" \
-        --results "${SHARED_DIR}/junit-*.xml" \
-        --verbose --wirelog 2>&1) && \
+    # shellcheck disable=SC2206  # intentional word-splitting for glob expansion
+    local junit_files=( "${SHARED_DIR}"/junit-*.xml )
+    if output=$(droute send --metadata "$(get_metadata_output_path)" \
+        --url "${DATA_ROUTER_URL}" \
+        --username "${DATA_ROUTER_USERNAME}" \
+        --password "${DATA_ROUTER_PASSWORD}" \
+        --results "${junit_files[@]}" \
+        --verbose --wirelog 2>&1) && \

The same issue exists at line 289 in redhat-developer-rhdh-send-data-router-commands.sh.

📝 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
if output=$(droute send --metadata "$(get_metadata_output_path)" \
--url "${DATA_ROUTER_URL}" \
--username "${DATA_ROUTER_USERNAME}" \
--password "${DATA_ROUTER_PASSWORD}" \
--results "${SHARED_DIR}/junit-*.xml" \
--verbose --wirelog 2>&1) && \
# shellcheck disable=SC2206 # intentional word-splitting for glob expansion
local junit_files=( "${SHARED_DIR}"/junit-*.xml )
if output=$(droute send --metadata "$(get_metadata_output_path)" \
--url "${DATA_ROUTER_URL}" \
--username "${DATA_ROUTER_USERNAME}" \
--password "${DATA_ROUTER_PASSWORD}" \
--results "${junit_files[@]}" \
--verbose --wirelog 2>&1) && \
🤖 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/redhat-developer/rhdh-plugin-export-overlays/send/data-router/redhat-developer-rhdh-plugin-export-overlays-send-data-router-commands.sh`
around lines 245 - 250, The --results argument is currently passed a quoted glob
which prevents shell expansion when invoking droute send; fix by expanding the
glob into an array (e.g., results=( "${SHARED_DIR}"/junit-*.xml ) ), ensure the
array is non-empty or handle the no-match case, and then pass the expanded list
to droute as separate arguments (e.g., --results "${results[@]}") when calling
droute send; apply the same change to the other droute send invocation that uses
--results.

@zdrapela zdrapela force-pushed the overlay-data-router branch from b4e2d31 to 71ddce7 Compare May 6, 2026 14:01
@openshift-merge-bot
Copy link
Copy Markdown
Contributor

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

could not determine changed registry steps: could not load step registry: load cluster profile list: unmarshal file /var/tmp/gitrepo1004306397/ci-operator/step-registry/cluster-profiles/cluster-profiles-config.yaml: error unmarshaling JSON: while decoding JSON: json: cannot unmarshal array into Go value of type api.ClusterProfilesList
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.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

♻️ Duplicate comments (2)
ci-operator/step-registry/redhat-developer/rhdh-plugin-export-overlays/send/data-router/redhat-developer-rhdh-plugin-export-overlays-send-data-router-commands.sh (2)

36-40: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

[Still unresolved from previous review] Missing fallbacks for IS_OPENSHIFT, CONTAINER_PLATFORM, and CONTAINER_PLATFORM_VERSION.

With set +o errexit active, if any of these files are absent (e.g., when the test step fails before writing them), cat silently fails and the variables are empty strings. The ReportPortal metadata JSON is then submitted with blank attribute values. RHDH_VERSION already has 2>/dev/null || echo "unknown" — the same guard should be applied to the three reads above it.

♻️ Proposed fix
-IS_OPENSHIFT=$(cat "$SHARED_DIR/IS_OPENSHIFT.txt")
-CONTAINER_PLATFORM=$(cat "$SHARED_DIR/CONTAINER_PLATFORM.txt")
-CONTAINER_PLATFORM_VERSION=$(cat "$SHARED_DIR/CONTAINER_PLATFORM_VERSION.txt")
+IS_OPENSHIFT=$(cat "$SHARED_DIR/IS_OPENSHIFT.txt" 2>/dev/null || echo "unknown")
+CONTAINER_PLATFORM=$(cat "$SHARED_DIR/CONTAINER_PLATFORM.txt" 2>/dev/null || echo "unknown")
+CONTAINER_PLATFORM_VERSION=$(cat "$SHARED_DIR/CONTAINER_PLATFORM_VERSION.txt" 2>/dev/null || echo "unknown")
🤖 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/redhat-developer/rhdh-plugin-export-overlays/send/data-router/redhat-developer-rhdh-plugin-export-overlays-send-data-router-commands.sh`
around lines 36 - 40, The three variable reads IS_OPENSHIFT, CONTAINER_PLATFORM,
and CONTAINER_PLATFORM_VERSION currently use plain cat and can produce empty
strings when their files are missing; change their assignments (the lines that
set IS_OPENSHIFT, CONTAINER_PLATFORM, and CONTAINER_PLATFORM_VERSION) to guard
each cat with redirection and an or-fallback like `2>/dev/null || echo
"<fallback>"` (e.g., fallback "unknown" or "false" as appropriate) so they never
end up empty, then export the variables as before; ensure you only modify the
assignments for IS_OPENSHIFT, CONTAINER_PLATFORM, and CONTAINER_PLATFORM_VERSION
and leave RHDH_VERSION handling intact.

255-260: ⚠️ Potential issue | 🔴 Critical | ⚡ Quick win

[Still unresolved from previous review] Quoted glob in --results prevents shell expansion — droute send receives a literal pattern string.

Line 259 passes "${SHARED_DIR}/junit-*.xml" fully quoted, so bash does not expand the glob; droute receives the literal string /tmp/shared/junit-*.xml as the argument. This contradicts the unquoted globs used correctly at lines 74 ("${SHARED_DIR}"/junit-results-*.xml) and 243 ("${SHARED_DIR}"/junit-*.xml) in the same file. If droute does not perform its own glob expansion, this will cause every droute send attempt to fail, exhausting all 10 retries and always writing STATUS_DATA_ROUTER_FAILED=true.

🐛 Proposed fix
+    # shellcheck disable=SC2206  # intentional word-splitting for glob expansion
+    local junit_files=( "${SHARED_DIR}"/junit-*.xml )
     if output=$(droute send --metadata "$(get_metadata_output_path)" \
         --url "${DATA_ROUTER_URL}" \
         --username "${DATA_ROUTER_USERNAME}" \
         --password "${DATA_ROUTER_PASSWORD}" \
-        --results "${SHARED_DIR}/junit-*.xml" \
+        --results "${junit_files[@]}" \
         --verbose --wirelog 2>&1) && \
🤖 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/redhat-developer/rhdh-plugin-export-overlays/send/data-router/redhat-developer-rhdh-plugin-export-overlays-send-data-router-commands.sh`
around lines 255 - 260, The --results argument to droute send is passing a
quoted glob so the shell won't expand it; change the invocation of droute send
(the command that includes --results "${SHARED_DIR}/junit-*.xml") to allow shell
globbing by quoting only the directory portion, e.g. use --results
"${SHARED_DIR}"/junit-*.xml (matching the existing patterns used at the other
droute calls) so the shell expands the junit-*.xml files before droute receives
them.
🧹 Nitpick comments (1)
ci-operator/step-registry/redhat-developer/rhdh-plugin-export-overlays/send/data-router/redhat-developer-rhdh-plugin-export-overlays-send-data-router-ref.yaml (1)

8-11: ⚡ Quick win

Consider pinning the droute image to a specific tag or digest.

tag: latest means any update to dno/droute:latest — including breaking CLI changes to --results, --metadata, or the output format of droute request get — will silently affect all jobs using this step. A pinned semver tag (e.g., v1.2.3) or image digest would make upgrades intentional and auditable.

♻️ Proposed change
   from_image:
     name: droute
     namespace: dno
-    tag: latest
+    tag: v<X.Y.Z>   # pin to a known-good version
🤖 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/redhat-developer/rhdh-plugin-export-overlays/send/data-router/redhat-developer-rhdh-plugin-export-overlays-send-data-router-ref.yaml`
around lines 8 - 11, The from_image block in this step uses an unpinned image
tag (from_image.name: droute, namespace: dno, tag: latest); change the tag to a
fixed, auditable value (either a semver tag like v1.2.3 or an image digest) so
jobs don't automatically pick up breaking updates—update the tag field in the
from_image stanza to the chosen pinned tag or replace it with an image digest
string.
🤖 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/redhat-developer/rhdh-plugin-export-overlays/send/data-router/redhat-developer-rhdh-plugin-export-overlays-send-data-router-commands.sh`:
- Around line 288-294: The current extraction assigns REPORTPORTAL_LAUNCH_URL
from DATA_ROUTER_REQUEST_OUTPUT using grep -o 'https://[^"]*' which can yield
multiple newline matches; update the pipeline that sets REPORTPORTAL_LAUNCH_URL
(the line that reads DATA_ROUTER_REQUEST_OUTPUT and creates
REPORTPORTAL_LAUNCH_URL) to select only the first match (for example pipe the
grep output to head -n1 or use awk 'NR==1') and ensure any surrounding
whitespace/newlines are trimmed before passing the value to
save_status_url_reportportal so STATUS_URL_REPORTPORTAL.txt contains a single
well-formed URL.
- Around line 250-252: The check for junit_files_found currently echoes
"ERROR..." and returns without setting status; change this to a non-error skip
by replacing the error log with a "WARNING: No JUnit..." using the existing
junit_files_found and SHARED_DIR variables and then record an explicit skipped
status (call save_status_data_router_skipped or, if that helper doesn't exist,
create and write a STATUS_DATA_ROUTER_SKIPPED marker) before returning so the
pipeline knows the step was intentionally skipped rather than failed.

---

Duplicate comments:
In
`@ci-operator/step-registry/redhat-developer/rhdh-plugin-export-overlays/send/data-router/redhat-developer-rhdh-plugin-export-overlays-send-data-router-commands.sh`:
- Around line 36-40: The three variable reads IS_OPENSHIFT, CONTAINER_PLATFORM,
and CONTAINER_PLATFORM_VERSION currently use plain cat and can produce empty
strings when their files are missing; change their assignments (the lines that
set IS_OPENSHIFT, CONTAINER_PLATFORM, and CONTAINER_PLATFORM_VERSION) to guard
each cat with redirection and an or-fallback like `2>/dev/null || echo
"<fallback>"` (e.g., fallback "unknown" or "false" as appropriate) so they never
end up empty, then export the variables as before; ensure you only modify the
assignments for IS_OPENSHIFT, CONTAINER_PLATFORM, and CONTAINER_PLATFORM_VERSION
and leave RHDH_VERSION handling intact.
- Around line 255-260: The --results argument to droute send is passing a quoted
glob so the shell won't expand it; change the invocation of droute send (the
command that includes --results "${SHARED_DIR}/junit-*.xml") to allow shell
globbing by quoting only the directory portion, e.g. use --results
"${SHARED_DIR}"/junit-*.xml (matching the existing patterns used at the other
droute calls) so the shell expands the junit-*.xml files before droute receives
them.

---

Nitpick comments:
In
`@ci-operator/step-registry/redhat-developer/rhdh-plugin-export-overlays/send/data-router/redhat-developer-rhdh-plugin-export-overlays-send-data-router-ref.yaml`:
- Around line 8-11: The from_image block in this step uses an unpinned image tag
(from_image.name: droute, namespace: dno, tag: latest); change the tag to a
fixed, auditable value (either a semver tag like v1.2.3 or an image digest) so
jobs don't automatically pick up breaking updates—update the tag field in the
from_image stanza to the chosen pinned tag or replace it with an image digest
string.
🪄 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: d701c66f-33e4-46c7-907f-082ebf1e0101

📥 Commits

Reviewing files that changed from the base of the PR and between 4312bde and 71ddce7.

📒 Files selected for processing (6)
  • ci-operator/config/redhat-developer/rhdh-plugin-export-overlays/redhat-developer-rhdh-plugin-export-overlays-main.yaml
  • ci-operator/step-registry/redhat-developer/rhdh-plugin-export-overlays/ocp/helm/redhat-developer-rhdh-plugin-export-overlays-ocp-helm-commands.sh
  • ci-operator/step-registry/redhat-developer/rhdh-plugin-export-overlays/send/data-router/OWNERS
  • ci-operator/step-registry/redhat-developer/rhdh-plugin-export-overlays/send/data-router/redhat-developer-rhdh-plugin-export-overlays-send-data-router-commands.sh
  • ci-operator/step-registry/redhat-developer/rhdh-plugin-export-overlays/send/data-router/redhat-developer-rhdh-plugin-export-overlays-send-data-router-ref.metadata.json
  • ci-operator/step-registry/redhat-developer/rhdh-plugin-export-overlays/send/data-router/redhat-developer-rhdh-plugin-export-overlays-send-data-router-ref.yaml
✅ Files skipped from review due to trivial changes (1)
  • ci-operator/step-registry/redhat-developer/rhdh-plugin-export-overlays/send/data-router/OWNERS

Comment on lines +250 to +252
if [[ "$junit_files_found" == false ]]; then
echo "ERROR: No JUnit results files (junit-*.xml) found in ${SHARED_DIR}"
return
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

return after "ERROR:" log leaves STATUS_DATA_ROUTER_FAILED unset.

When no JUnit files exist in SHARED_DIR (e.g., tests were legitimately skipped because no workspaces changed), the script logs "ERROR: No JUnit results files" but returns without calling save_status_data_router_failed. This leaves the status file absent and the "ERROR:" prefix creates a misleading impression. Either save a failure status to make the condition explicit, or downgrade the log to "WARNING:" if absence of JUnit files is an expected non-failure condition.

♻️ Proposed fix (treat as non-error skip)
     if [[ "$junit_files_found" == false ]]; then
-      echo "ERROR: No JUnit results files (junit-*.xml) found in ${SHARED_DIR}"
-      return
+      echo "WARNING: No JUnit results files (junit-*.xml) found in ${SHARED_DIR}. Skipping Data Router upload."
+      return 0
     fi
📝 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
if [[ "$junit_files_found" == false ]]; then
echo "ERROR: No JUnit results files (junit-*.xml) found in ${SHARED_DIR}"
return
if [[ "$junit_files_found" == false ]]; then
echo "WARNING: No JUnit results files (junit-*.xml) found in ${SHARED_DIR}. Skipping Data Router upload."
return 0
🤖 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/redhat-developer/rhdh-plugin-export-overlays/send/data-router/redhat-developer-rhdh-plugin-export-overlays-send-data-router-commands.sh`
around lines 250 - 252, The check for junit_files_found currently echoes
"ERROR..." and returns without setting status; change this to a non-error skip
by replacing the error log with a "WARNING: No JUnit..." using the existing
junit_files_found and SHARED_DIR variables and then record an explicit skipped
status (call save_status_data_router_skipped or, if that helper doesn't exist,
create and write a STATUS_DATA_ROUTER_SKIPPED marker) before returning so the
pipeline knows the step was intentionally skipped rather than failed.

Comment on lines +288 to +294
DATA_ROUTER_REQUEST_OUTPUT=$(droute request get \
--url "${DATA_ROUTER_URL}" \
--username "${DATA_ROUTER_USERNAME}" \
--password "${DATA_ROUTER_PASSWORD}" \
"${DATA_ROUTER_REQUEST_ID}")

REPORTPORTAL_LAUNCH_URL=$(echo "$DATA_ROUTER_REQUEST_OUTPUT" | grep -o 'https://[^"]*')
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot May 6, 2026

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

grep -o 'https://[^"]*' can return multiple matches as a newline-separated string.

If droute request get output contains more than one HTTPS URL (e.g., a log line plus the actual launch URL), REPORTPORTAL_LAUNCH_URL becomes a multi-line string. The -n check passes (non-empty), and save_status_url_reportportal saves the entire multi-line value to STATUS_URL_REPORTPORTAL.txt. Tightening the pattern or taking only the first match avoids storing a malformed URL.

♻️ Proposed fix
-      REPORTPORTAL_LAUNCH_URL=$(echo "$DATA_ROUTER_REQUEST_OUTPUT" | grep -o 'https://[^"]*')
+      REPORTPORTAL_LAUNCH_URL=$(echo "$DATA_ROUTER_REQUEST_OUTPUT" | grep -o 'https://[^"[:space:]]*' | head -n1)
🤖 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/redhat-developer/rhdh-plugin-export-overlays/send/data-router/redhat-developer-rhdh-plugin-export-overlays-send-data-router-commands.sh`
around lines 288 - 294, The current extraction assigns REPORTPORTAL_LAUNCH_URL
from DATA_ROUTER_REQUEST_OUTPUT using grep -o 'https://[^"]*' which can yield
multiple newline matches; update the pipeline that sets REPORTPORTAL_LAUNCH_URL
(the line that reads DATA_ROUTER_REQUEST_OUTPUT and creates
REPORTPORTAL_LAUNCH_URL) to select only the first match (for example pipe the
grep output to head -n1 or use awk 'NR==1') and ensure any surrounding
whitespace/newlines are trimmed before passing the value to
save_status_url_reportportal so STATUS_URL_REPORTPORTAL.txt contains a single
well-formed URL.

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.

There is always just one URL

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.

@zdrapela, understood — if the droute request get output is guaranteed to contain exactly one HTTPS URL, the current pattern is fine as-is. Thanks for the clarification!

@openshift-merge-bot
Copy link
Copy Markdown
Contributor

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

could not determine changed registry steps: could not load step registry: load cluster profile list: unmarshal file /var/tmp/gitrepo3831571743/ci-operator/step-registry/cluster-profiles/cluster-profiles-config.yaml: error unmarshaling JSON: while decoding JSON: json: cannot unmarshal array into Go value of type api.ClusterProfilesList
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.

@zdrapela zdrapela marked this pull request as ready for review May 6, 2026 14:29
@openshift-ci openshift-ci Bot removed the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label May 6, 2026
@openshift-ci openshift-ci Bot requested review from albarbaro and josephca May 6, 2026 14:33
@zdrapela
Copy link
Copy Markdown
Contributor Author

zdrapela commented May 6, 2026

/pj-rehearse periodic-ci-redhat-developer-rhdh-main-e2e-ocp-operator-auth-providers-nightly periodic-ci-redhat-developer-rhdh-main-e2e-ocp-helm-upgrade-nightly

@openshift-merge-bot
Copy link
Copy Markdown
Contributor

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

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

could not determine changed registry steps: could not load step registry: load cluster profile list: unmarshal file /var/tmp/gitrepo2235426414/ci-operator/step-registry/cluster-profiles/cluster-profiles-config.yaml: error unmarshaling JSON: while decoding JSON: json: cannot unmarshal array into Go value of type api.ClusterProfilesList
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-merge-bot
Copy link
Copy Markdown
Contributor

@zdrapela, pj-rehearse: unable to determine affected jobs ERROR:

could not determine changed registry steps: could not load step registry: load cluster profile list: unmarshal file /var/tmp/gitrepo671613421/ci-operator/step-registry/cluster-profiles/cluster-profiles-config.yaml: error unmarshaling JSON: while decoding JSON: json: cannot unmarshal array into Go value of type api.ClusterProfilesList

If the problem persists, please contact Test Platform.

zdrapela and others added 9 commits May 6, 2026 16:59
…rt-overlays

Create a new send-data-router step for the overlay repo that sends
JUnit test results to Data Router for ReportPortal ingestion. The
overlay test step now writes platform metadata and JUnit XML to
SHARED_DIR for the data-router post step to consume.

Changes:
- New step: redhat-developer-rhdh-plugin-export-overlays-send-data-router
- Overlay test step writes IS_OPENSHIFT, CONTAINER_PLATFORM,
  CONTAINER_PLATFORM_VERSION, and RHDH_VERSION to SHARED_DIR
- Overlay test step copies junit-results.xml to SHARED_DIR
- Both e2e-ocp-helm and e2e-ocp-helm-nightly jobs now include
  data-router and gather post steps

Jira: https://redhat.atlassian.net/browse/RHIDP-13047

Assisted-by: OpenCode
Fix process_junit_files to strip ../node_modules/.cache/ prefix from
Playwright attachment paths so they resolve to the correct GCS location
(artifacts/e2e-test-results/...).

Derive install_method from JOB_NAME (operator vs helm-chart) instead
of hardcoding, matching the rhdh data-router pattern.

Add component=plugins attribute to ReportPortal launch metadata.

Assisted-by: OpenCode
Align with rhdh data-router convention where the suffix identifies
the test step (e.g., junit-results-showcase-ci-nightly.xml in rhdh).

Assisted-by: OpenCode
Use a glob instead of a hardcoded filename so any junit-*.xml files
produced by Playwright are forwarded to the data-router step.

Assisted-by: OpenCode
Use junit-*.xml glob (matching droute send pattern) instead of
junit-results-*.xml which would miss junit-results.xml.

Assisted-by: OpenCode
Prevent validate_required_vars from killing the entire post chain
when secrets are missing, allowing the gather chain to still run.
Also fix comment typo (junit-results-*.xml → junit-*.xml) and add
missing trailing newlines to metadata JSON files.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Data-router failures should not prevent artifact gathering or fail
the overall job. Add allow_best_effort_post_steps and best_effort
with a 5m timeout on the send-data-router step reference.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add redhat-developer-rhdh-send-data-router + send-alert + gather post
steps to tests that were missing them:

- e2e-ocp-operator-auth-providers-nightly: main, release-1.8, release-1.9
- e2e-ocp-helm-upgrade-nightly: main, release-1.9

Also fix overlay config to use plain ref syntax (no best_effort/timeout
on ref steps) matching the rhdh pattern.

Assisted-by: OpenCode
@zdrapela zdrapela force-pushed the overlay-data-router branch from e1fcf17 to ac5ac55 Compare May 6, 2026 14:59
@zdrapela
Copy link
Copy Markdown
Contributor Author

zdrapela commented May 6, 2026

/pj-rehearse abort

@openshift-merge-bot
Copy link
Copy Markdown
Contributor

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

@zdrapela
Copy link
Copy Markdown
Contributor Author

zdrapela commented May 6, 2026

/pj-rehearse periodic-ci-redhat-developer-rhdh-main-e2e-ocp-operator-auth-providers-nightly periodic-ci-redhat-developer-rhdh-main-e2e-ocp-helm-upgrade-nightly

@openshift-merge-bot
Copy link
Copy Markdown
Contributor

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

@zdrapela
Copy link
Copy Markdown
Contributor Author

zdrapela commented May 6, 2026

/pj-rehearse abort

@openshift-merge-bot
Copy link
Copy Markdown
Contributor

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

@zdrapela
Copy link
Copy Markdown
Contributor Author

zdrapela commented May 6, 2026

/pj-rehearse periodic-ci-redhat-developer-rhdh-main-e2e-ocp-operator-auth-providers-nightly

@openshift-merge-bot
Copy link
Copy Markdown
Contributor

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

@zdrapela
Copy link
Copy Markdown
Contributor Author

zdrapela commented May 6, 2026

/pj-rehearse periodic-ci-redhat-developer-rhdh-main-e2e-ocp-helm-upgrade-nightly

@openshift-merge-bot
Copy link
Copy Markdown
Contributor

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

@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci Bot commented May 6, 2026

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: zdrapela
Once this PR has been reviewed and has the lgtm label, please assign bear-redhat 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 removed the approved Indicates a PR has been approved by an approver from all required OWNERS files. label May 6, 2026
@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci Bot commented May 6, 2026

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: zdrapela
Once this PR has been reviewed and has the lgtm label, please assign kadel 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-merge-bot
Copy link
Copy Markdown
Contributor

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

could not determine changed registry steps: could not load step registry: load cluster profile list: unmarshal file /var/tmp/gitrepo1883172175/ci-operator/step-registry/cluster-profiles/cluster-profiles-config.yaml: error unmarshaling JSON: while decoding JSON: json: cannot unmarshal array into Go value of type api.ClusterProfilesList
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-merge-bot
Copy link
Copy Markdown
Contributor

@zdrapela, pj-rehearse: unable to determine affected jobs ERROR:

could not determine changed registry steps: could not load step registry: load cluster profile list: unmarshal file /var/tmp/gitrepo4208330536/ci-operator/step-registry/cluster-profiles/cluster-profiles-config.yaml: error unmarshaling JSON: while decoding JSON: json: cannot unmarshal array into Go value of type api.ClusterProfilesList

If the problem persists, please contact Test Platform.

@openshift-merge-bot
Copy link
Copy Markdown
Contributor

@zdrapela, pj-rehearse: unable to determine affected jobs ERROR:

could not determine changed registry steps: could not load step registry: load cluster profile list: unmarshal file /var/tmp/gitrepo852977825/ci-operator/step-registry/cluster-profiles/cluster-profiles-config.yaml: error unmarshaling JSON: while decoding JSON: json: cannot unmarshal array into Go value of type api.ClusterProfilesList

If the problem persists, please contact Test Platform.

@openshift-merge-bot
Copy link
Copy Markdown
Contributor

@zdrapela, pj-rehearse: unable to determine affected jobs ERROR:

could not determine changed registry steps: could not load step registry: load cluster profile list: unmarshal file /var/tmp/gitrepo755119580/ci-operator/step-registry/cluster-profiles/cluster-profiles-config.yaml: error unmarshaling JSON: while decoding JSON: json: cannot unmarshal array into Go value of type api.ClusterProfilesList

If the problem persists, please contact Test Platform.

@zdrapela
Copy link
Copy Markdown
Contributor Author

zdrapela commented May 6, 2026

/retest

@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci Bot commented May 6, 2026

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

Test name Commit Details Required Rerun command
ci/prow/owners ac5ac55 link true /test owners

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

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants