Skip to content

USHIFT-7381: Add PCP dashboard post step for MicroShift e2e jobs#82007

Open
suleymanakbas91 wants to merge 4 commits into
openshift:mainfrom
suleymanakbas91:feat/pcp-dashboard-step
Open

USHIFT-7381: Add PCP dashboard post step for MicroShift e2e jobs#82007
suleymanakbas91 wants to merge 4 commits into
openshift:mainfrom
suleymanakbas91:feat/pcp-dashboard-step

Conversation

@suleymanakbas91

@suleymanakbas91 suleymanakbas91 commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Add openshift-microshift-infra-pcp-dashboard CI step that generates interactive Chart.js PCP performance dashboards from VM/hypervisor PCP archives
  • Insert it as the first post step in the openshift-microshift-e2e-metal-tests workflow, with best_effort: true so failures don't block the job
  • Uses the edge-tooling-ai-helpers CI image (has pcp2json + all PCP scripts) — no script duplication

The output custom-link-pcp.html with <title>Test PCP</title> is automatically picked up by the existing Spyglass HTML lens and rendered as a collapsible "Test PCP" toggle alongside "Test Logs" and "VM Logs".

Depends on

Test plan

  • Trigger a MicroShift e2e job with this workflow change and verify the "Test PCP" toggle appears in Prow results
  • Verify dashboard shows CPU, memory, I/O, disk charts for all scenarios and hypervisor

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Adds a best-effort openshift-microshift-infra-pcp-dashboard post-step to the MicroShift metal E2E workflow (openshift-microshift-e2e-metal-tests) as the first post action, so PCP dashboard generation happens after tests without blocking job completion.
  • The step runs via the edge-tooling-ai-helpers CI image and fetches VM and hypervisor PCP archives plus junit.xml from the remote scenario directory over SSH, then uses generate-dashboard.sh (now supporting --local) to generate an interactive Chart.js PCP dashboard artifact (custom-link-pcp.html).
  • Spyglass renders the new artifact as a collapsible “Test PCP” toggle alongside existing “Test Logs” and “VM Logs”, including CPU, memory, I/O, and disk charts.
  • Registers the new step in ci-operator/step-registry with the specified resources/timeout/grace period and RHSM creds mounting, adds step OWNERS/review metadata, and improves copy/scp error handling by warning explicitly when hypervisor pmlogger log retrieval fails rather than silently suppressing it.

Add a new CI step that generates an interactive Chart.js PCP performance
dashboard (CPU, memory, I/O, disk) from scenario VM and hypervisor PCP
archives. The output is a custom-link-pcp.html artifact that Spyglass
renders as a "Test PCP" toggle in Prow job results.

Uses the edge-tooling-ai-helpers CI image which contains pcp2json and
all PCP dashboard scripts — no script duplication needed.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@openshift-ci
openshift-ci Bot requested review from jogeo and kasturinarra July 16, 2026 12:34
@openshift-ci

openshift-ci Bot commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: suleymanakbas91

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

The pull request process is described here

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

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

@openshift-ci openshift-ci Bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Jul 16, 2026
@openshift-merge-bot

Copy link
Copy Markdown
Contributor

@suleymanakbas91, 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: test openshift-microshift-infra-pcp-dashboard contains best_effort without timeout
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 commented Jul 16, 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: 45257788-6cd9-4bb3-8510-f424b97cb38d

📥 Commits

Reviewing files that changed from the base of the PR and between 2e405b3 and 710062f.

📒 Files selected for processing (1)
  • ci-operator/step-registry/openshift/microshift/infra/pcp-dashboard/openshift-microshift-infra-pcp-dashboard-ref.metadata.json

Walkthrough

Adds a PCP dashboard CI step that collects MicroShift performance artifacts, generates custom-link-pcp.html, and cleans up temporary files. The step is registered with credentials and resources, assigned ownership metadata, and added to the metal E2E workflow’s post-action chain.

Changes

MicroShift PCP dashboard

Layer / File(s) Summary
Step contract and workflow wiring
ci-operator/step-registry/openshift/microshift/infra/pcp-dashboard/openshift-microshift-infra-pcp-dashboard-ref.yaml, ci-operator/step-registry/openshift/microshift/infra/pcp-dashboard/openshift-microshift-infra-pcp-dashboard-ref.metadata.json, ci-operator/step-registry/openshift/microshift/infra/pcp-dashboard/OWNERS, ci-operator/step-registry/openshift/microshift/e2e/metal-tests/openshift-microshift-e2e-metal-tests-workflow.yaml
Registers the dashboard step, defines its execution settings and review metadata, and adds it to the workflow post-action chain.
Artifact collection and dashboard generation
ci-operator/step-registry/openshift/microshift/infra/pcp-dashboard/openshift-microshift-infra-pcp-dashboard-commands.sh
Stages remote PCP data and test results, optionally copies pmlogger logs, generates custom-link-pcp.html, and removes temporary files.

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

Sequence Diagram(s)

sequenceDiagram
  participant E2EWorkflow
  participant PCPDashboardStep
  participant RemoteScenario
  participant DashboardGenerator
  participant ProwArtifacts
  E2EWorkflow->>PCPDashboardStep: invoke post step
  PCPDashboardStep->>RemoteScenario: retrieve PCP archives and junit.xml
  PCPDashboardStep->>RemoteScenario: copy optional pmlogger logs
  PCPDashboardStep->>DashboardGenerator: generate Test PCP dashboard
  DashboardGenerator-->>ProwArtifacts: write custom-link-pcp.html
Loading

Suggested reviewers: kasturinarra, jogeo


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 new PCP dashboard script echoes ${INSTANCE_PREFIX} and runs with set -x; INSTANCE_PREFIX is ${HOST_USER}@${IP_ADDRESS}, so logs can expose internal host IPs. Avoid printing ${INSTANCE_PREFIX} and disable xtrace around ssh/scp or redact the host/IP before logging.
✅ 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 summarizes the main change: adding a PCP dashboard post step to MicroShift e2e jobs.
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 Only a metadata JSON ownership file changed; no Ginkgo tests or titles were added or modified, so there are no unstable test names to flag.
Test Structure And Quality ✅ Passed The PR only changes a step-registry metadata JSON; no Ginkgo test code or assertions/timeouts are touched, so the check is not applicable.
Microshift Test Compatibility ✅ Passed No new Ginkgo e2e tests were added; the patch only changes CI registry YAML, OWNERS metadata, and a shell command script.
Single Node Openshift (Sno) Test Compatibility ✅ Passed No Ginkgo tests were added or modified; the PR only adds CI/dashboard step-registry plumbing, so the SNO test check is not applicable.
Topology-Aware Scheduling Compatibility ✅ Passed The PR only adds CI step-registry/workflow files; no pod affinity, node selectors, replicas, or topology-dependent scheduling logic was introduced.
Ote Binary Stdout Contract ✅ Passed PR only adds ci-operator step-registry YAML and a bash step script; no OTE binary process-level stdout writes were introduced.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed No new Ginkgo tests were added; the diff only adds a step-registry workflow, script, and metadata, and the changed files contain no It/Describe/Context/When blocks.
No-Weak-Crypto ✅ Passed Scanned the modified step-registry files; they only add PCP dashboard workflow/commands metadata and contain no weak crypto or secret-comparison code.
Container-Privileges ✅ Passed The new workflow/ref only add a normal step; no privileged, hostPID/Network/IPC, allowPrivilegeEscalation, SYS_ADMIN, or explicit root settings appear.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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

@suleymanakbas91 suleymanakbas91 changed the title feat: add PCP dashboard post step for MicroShift e2e jobs USHIFT-7381: Add PCP dashboard post step for MicroShift e2e jobs Jul 16, 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 Jul 16, 2026
@openshift-ci-robot

openshift-ci-robot commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

@suleymanakbas91: This pull request references USHIFT-7381 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 story to target the "5.0.0" version, but no target version was set.

Details

In response to this:

Summary

  • Add openshift-microshift-infra-pcp-dashboard CI step that generates interactive Chart.js PCP performance dashboards from VM/hypervisor PCP archives
  • Insert it as the first post step in the openshift-microshift-e2e-metal-tests workflow, with best_effort: true so failures don't block the job
  • Uses the edge-tooling-ai-helpers CI image (has pcp2json + all PCP scripts) — no script duplication

The output custom-link-pcp.html with <title>Test PCP</title> is automatically picked up by the existing Spyglass HTML lens and rendered as a collapsible "Test PCP" toggle alongside "Test Logs" and "VM Logs".

Depends on

Test plan

  • Trigger a MicroShift e2e job with this workflow change and verify the "Test PCP" toggle appears in Prow results
  • Verify dashboard shows CPU, memory, I/O, disk charts for all scenarios and hypervisor

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Adds a best-effort PCP dashboard post-step to the MicroShift metal E2E workflow.
  • Collects VM and hypervisor PCP archives, generates an interactive Chart.js dashboard, and publishes custom-link-pcp.html for Spyglass as a “Test PCP” toggle.
  • Uses the existing edge-tooling-ai-helpers image and defines required ownership, credentials, resources, and execution configuration.

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

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🧹 Nitpick comments (1)
ci-operator/step-registry/openshift/microshift/infra/pcp-dashboard/openshift-microshift-infra-pcp-dashboard-commands.sh (1)

21-26: 🗄️ Data Integrity & Integration | 🔵 Trivial | ⚡ Quick win

Make optional pmlog copy failures explicit.

|| true suppresses scp’s failure status, so permission or network errors are treated like an empty directory and the artifact may omit hypervisor metrics without a clear status. Keep this path non-blocking, but emit a warning or status marker.

The PR objective says the dashboard includes hypervisor metrics while pmlogger collection is optional.

🤖 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/openshift/microshift/infra/pcp-dashboard/openshift-microshift-infra-pcp-dashboard-commands.sh`
around lines 21 - 26, Update the pmlog copy block around PMLOGS_DIR so scp
failures remain non-blocking but are explicitly reported. Replace the silent `||
true` handling with a warning or status marker when the scp command fails, while
preserving successful artifact copying and optional collection behavior.
🤖 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/openshift/microshift/infra/pcp-dashboard/openshift-microshift-infra-pcp-dashboard-commands.sh`:
- Around line 1-2: Remove the global xtrace option from the shell script’s
startup configuration, changing the top-level set command to enable only
errexit, nounset, and pipefail. Do not add replacement tracing around the
authenticated SSH/SCP operations.

---

Nitpick comments:
In
`@ci-operator/step-registry/openshift/microshift/infra/pcp-dashboard/openshift-microshift-infra-pcp-dashboard-commands.sh`:
- Around line 21-26: Update the pmlog copy block around PMLOGS_DIR so scp
failures remain non-blocking but are explicitly reported. Replace the silent `||
true` handling with a warning or status marker when the scp command fails, while
preserving successful artifact copying and optional collection behavior.
🪄 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: b596178d-b81e-4dc0-a2bd-44a2a80eef59

📥 Commits

Reviewing files that changed from the base of the PR and between 270539c and c4bc774.

📒 Files selected for processing (4)
  • ci-operator/step-registry/openshift/microshift/e2e/metal-tests/openshift-microshift-e2e-metal-tests-workflow.yaml
  • ci-operator/step-registry/openshift/microshift/infra/pcp-dashboard/OWNERS
  • ci-operator/step-registry/openshift/microshift/infra/pcp-dashboard/openshift-microshift-infra-pcp-dashboard-commands.sh
  • ci-operator/step-registry/openshift/microshift/infra/pcp-dashboard/openshift-microshift-infra-pcp-dashboard-ref.yaml

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@suleymanakbas91

Copy link
Copy Markdown
Contributor Author

Addressed the pmlog copy warning in 7de2372 — replaced silent || true with an explicit warning message when scp fails. Skipped the -x removal since all MicroShift step scripts follow the set -xeuo pipefail convention.

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

@suleymanakbas91, 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: test openshift-microshift-infra-pcp-dashboard contains best_effort without timeout
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.

suleymanakbas91 and others added 2 commits July 16, 2026 15:12
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@openshift-merge-bot

Copy link
Copy Markdown
Contributor

[REHEARSALNOTIFIER]
@suleymanakbas91: the pj-rehearse plugin accommodates running rehearsal tests for the changes in this PR. Expand 'Interacting with pj-rehearse' for usage details. The following rehearsable tests have been affected by this change:

Test name Repo Type Reason
pull-ci-openshift-microshift-main-e2e-aws-tests openshift/microshift presubmit Registry content changed
pull-ci-openshift-microshift-main-e2e-aws-tests-arm openshift/microshift presubmit Registry content changed
pull-ci-openshift-microshift-main-e2e-aws-tests-periodic openshift/microshift presubmit Registry content changed
pull-ci-openshift-microshift-main-e2e-aws-tests-periodic-arm openshift/microshift presubmit Registry content changed
pull-ci-openshift-microshift-main-e2e-aws-tests-bootc-el9 openshift/microshift presubmit Registry content changed
pull-ci-openshift-microshift-main-e2e-aws-tests-bootc-el10 openshift/microshift presubmit Registry content changed
pull-ci-openshift-microshift-main-e2e-aws-tests-bootc-arm-el9 openshift/microshift presubmit Registry content changed
pull-ci-openshift-microshift-main-e2e-aws-tests-bootc-arm-el10 openshift/microshift presubmit Registry content changed
pull-ci-openshift-microshift-main-e2e-aws-tests-bootc-periodic-el9 openshift/microshift presubmit Registry content changed
pull-ci-openshift-microshift-main-e2e-aws-tests-bootc-periodic-el10 openshift/microshift presubmit Registry content changed
pull-ci-openshift-microshift-main-e2e-aws-tests-bootc-periodic-arm-el9 openshift/microshift presubmit Registry content changed
pull-ci-openshift-microshift-main-e2e-aws-tests-bootc-periodic-arm-el10 openshift/microshift presubmit Registry content changed
pull-ci-openshift-microshift-main-e2e-aws-tests-release openshift/microshift presubmit Registry content changed
pull-ci-openshift-microshift-main-e2e-aws-tests-release-arm openshift/microshift presubmit Registry content changed
pull-ci-openshift-microshift-main-e2e-aws-tests-bootc-release-el9 openshift/microshift presubmit Registry content changed
pull-ci-openshift-microshift-main-e2e-aws-tests-bootc-release-el10 openshift/microshift presubmit Registry content changed
pull-ci-openshift-microshift-main-e2e-aws-tests-bootc-release-arm-el9 openshift/microshift presubmit Registry content changed
pull-ci-openshift-microshift-main-e2e-aws-tests-bootc-release-arm-el10 openshift/microshift presubmit Registry content changed
pull-ci-openshift-microshift-main-e2e-aws-tests-bootc-upstream openshift/microshift presubmit Registry content changed
pull-ci-openshift-microshift-main-e2e-aws-tests-bootc-upstream-arm openshift/microshift presubmit Registry content changed
pull-ci-openshift-microshift-main-e2e-aws-tests-bootc-c2cc openshift/microshift presubmit Registry content changed
pull-ci-openshift-microshift-main-e2e-aws-tests-bootc-c2cc-arm openshift/microshift presubmit Registry content changed
pull-ci-openshift-microshift-release-5.1-e2e-aws-tests openshift/microshift presubmit Registry content changed
pull-ci-openshift-microshift-release-5.1-e2e-aws-tests-arm openshift/microshift presubmit Registry content changed
pull-ci-openshift-microshift-release-5.1-e2e-aws-tests-periodic openshift/microshift presubmit Registry content changed

A total of 222 jobs have been affected by this change. The above listing is non-exhaustive and limited to 25 jobs.

A full list of affected jobs can be found here

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.

@suleymanakbas91

Copy link
Copy Markdown
Contributor Author

/pj-rehearse

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

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

@openshift-ci

openshift-ci Bot commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

@suleymanakbas91: 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/rehearse/openshift/microshift/main/e2e-aws-tests-periodic-arm 710062f link unknown /pj-rehearse pull-ci-openshift-microshift-main-e2e-aws-tests-periodic-arm

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

approved Indicates a PR has been approved by an approver from all required OWNERS files. 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