Skip to content

Add medik8s-admins alias to OWNERS_ALIASES - #81378

Merged
openshift-merge-bot[bot] merged 2 commits into
openshift:mainfrom
razo7:medik8s-owners-alias
Jul 17, 2026
Merged

Add medik8s-admins alias to OWNERS_ALIASES#81378
openshift-merge-bot[bot] merged 2 commits into
openshift:mainfrom
razo7:medik8s-owners-alias

Conversation

@razo7

@razo7 razo7 commented Jul 2, 2026

Copy link
Copy Markdown
Member

What

Adds a medik8s-admins alias to OWNERS_ALIASES and updates all 8 step-registry OWNERS files under ci-operator/step-registry/medik8s/ to reference it.

Why

Every step-registry directory under medik8s/ duplicates the same 7-member OWNERS list. When a team member joins or leaves, all files must be updated individually. For example, #80372 added 6 identical copies of the same OWNERS file.

Using an alias centralizes team membership in one place — future changes require editing only OWNERS_ALIASES.

Changes

  • OWNERS_ALIASES: add medik8s-admins group (razo7, mshitrit, weshayutin, mpryc, jmontleon, ugreener, maximunited)
  • 8 OWNERS files under ci-operator/step-registry/medik8s/**/: replace individual name lists with medik8s-admins alias reference
  • Remove emeritus_approvers (beekhof) from root medik8s OWNERS

RHWA-1282

Summary by CodeRabbit

  • Centralizes Medik8s CI ownership under a new medik8s-admins alias and applies it across existing step-registry components.
  • Adds CI steps for deploying ODF from a development catalog and provisioning disconnected NFS-backed storage for SBR testing.
  • Removes beekhof from the Medik8s emeritus approvers list.
  • Adds deployment automation for ODF installation, storage configuration, disconnected image mirroring, and NFS bastion setup.

@razo7

razo7 commented Jul 2, 2026

Copy link
Copy Markdown
Member Author

@coderabbitai

coderabbitai Bot commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

@razo7, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 28 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

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

Review profile: CHILL

Plan: Enterprise

Run ID: 9fca197c-c188-4ed0-93d5-96816f73c5e8

📥 Commits

Reviewing files that changed from the base of the PR and between d55beaa and 4f51713.

📒 Files selected for processing (1)
  • OWNERS_ALIASES

Walkthrough

A new medik8s-admins alias group was added to OWNERS_ALIASES, existing medik8s ownership metadata was consolidated under it, and new ODF deployment and SBR NFS bastion steps were added to the step registry.

Changes

Medik8s step-registry updates

Layer / File(s) Summary
Centralize medik8s ownership
OWNERS_ALIASES, ci-operator/step-registry/medik8s/**/OWNERS, ci-operator/step-registry/medik8s/**/metadata.json
Defines medik8s-admins with seven usernames and uses it for approvers and reviewers across medik8s steps.
Add ODF deployment step
ci-operator/step-registry/medik8s/deploy-odf-dev-catalog/*
Adds a configurable ODF deployment step that installs the catalog and operator, creates a StorageCluster, waits for readiness, and sets the backend storage class as default.
Add SBR NFS bastion step
ci-operator/step-registry/medik8s/sbr/nfs-bastion/*
Adds a step that provisions bastion-hosted NFS storage, creates SBR PersistentVolumes, mirrors a disconnected image, and verifies image pullability.

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

Suggested labels: approved, jira/valid-reference

Suggested reviewers: beekhof, clobrano

Sequence Diagram(s)

sequenceDiagram
  participant StepRegistry
  participant OpenShift
  participant ODF
  StepRegistry->>OpenShift: Apply ODF installation resources
  OpenShift->>ODF: Install operator and create StorageCluster
  ODF->>OpenShift: Report readiness
  StepRegistry->>OpenShift: Set ODF storage class as default
Loading
sequenceDiagram
  participant StepRegistry
  participant AWS
  participant Bastion
  participant OpenShift
  StepRegistry->>AWS: Authorize NFS ingress
  StepRegistry->>Bastion: Start NFS server and prepare export
  StepRegistry->>OpenShift: Create StorageClass and PersistentVolumes
  StepRegistry->>Bastion: Mirror disconnected image
  StepRegistry->>OpenShift: Configure image mirroring and verify pulls
Loading

Important

Pre-merge checks failed

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

❌ Failed checks (1 error, 2 warnings)

Check name Status Explanation Resolution
No-Sensitive-Data-In-Logs ❌ Error The new sbr/nfs-bastion script logs ${MIRROR_REGISTRY_HOST}, exposing a mirror registry hostname/URL in CI output. Remove the hostname from logs or redact it; keep only generic status messages, and avoid echoing any internal registry or cluster identifiers.
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Topology-Aware Scheduling Compatibility ⚠️ Warning deploy-odf-dev-catalog unconditionally labels only worker nodes and creates a StorageCluster with replica: 3, without checking ControlPlaneTopology or node counts. Gate worker-node selection and StorageCluster sizing on topology (SNO/TNF/TNA/External) or broaden placement to avoid assuming dedicated workers.
✅ Passed checks (12 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately captures the primary change: adding the medik8s-admins alias to OWNERS_ALIASES.
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 No Go/Ginkgo test files or It/Describe/Context/When declarations exist under the changed medik8s step-registry subtree, so no unstable test titles were introduced.
Test Structure And Quality ✅ Passed No Ginkgo test code was added or changed in this PR; it only updates step-registry OWNERS, metadata, YAML, and shell scripts.
Microshift Test Compatibility ✅ Passed No new Ginkgo test files or It/Describe/Context/When definitions were added under medik8s; the changes are OWNERS/YAML/shell assets only.
Single Node Openshift (Sno) Test Compatibility ✅ Passed No new Ginkgo e2e tests were added; the PR only changes OWNERS, metadata, and step-registry scripts/YAML, so SNO test compatibility is not applicable.
Ote Binary Stdout Contract ✅ Passed Diff only touches OWNERS/metadata and shell step scripts; no OTE binary entrypoints (main/TestMain/RunSpecs) or stdout-writing Go code were changed.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed No new Ginkgo/e2e test code was added; the PR only updates OWNERS/step-registry files, so IPv4/disconnected compatibility checks aren’t applicable.
No-Weak-Crypto ✅ Passed No MD5/SHA1/DES/RC4/3DES/Blowfish/ECB, custom crypto, or secret/token comparisons were found in the changed files.
Container-Privileges ✅ Passed No added manifest has privileged/hostNetwork/hostPID/hostIPC/allowPrivilegeEscalation settings; only a justified podman --privileged call appears in a script.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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

❤️ Share

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

@openshift-ci
openshift-ci Bot requested review from beekhof and clobrano July 2, 2026 09:40
@openshift-merge-bot openshift-merge-bot Bot added the rehearsals-ack Signifies that rehearsal jobs have been acknowledged label Jul 2, 2026
@razo7
razo7 force-pushed the medik8s-owners-alias branch 2 times, most recently from ffd7eb4 to 4a26580 Compare July 13, 2026 14:40
@razo7

razo7 commented Jul 14, 2026

Copy link
Copy Markdown
Member Author

/retest

Comment thread OWNERS_ALIASES
- mresvanis
- ybettan
- yevgeny-shnaidman
medik8s-admins:

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.

Three medik8s OWNERS files were not migrated to this alias: sbr/OWNERS, sbr/nfs-bastion/OWNERS, and deploy-odf-dev-catalog/OWNERS (all under ci-operator/step-registry/medik8s/). These still list the old members including beekhof, clobrano, and slintes who are being removed from the active team.

Fix: Update those 3 OWNERS files to reference medik8s-admins, then regenerate metadata with make registry-metadata to update medik8s-sbr-nfs-bastion-ref.metadata.json and medik8s-deploy-odf-dev-catalog-ref.metadata.json.

@openshift-ci openshift-ci Bot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Jul 16, 2026
@openshift-merge-bot

Copy link
Copy Markdown
Contributor

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

couldn't prepare candidate: couldn't rebase candidate onto eaacc38ea84c80b617bef90f118c4f842ba732ee due to conflicts
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: 3

🧹 Nitpick comments (1)
ci-operator/step-registry/medik8s/deploy-odf-dev-catalog/medik8s-deploy-odf-dev-catalog-commands.sh (1)

135-137: 🩺 Stability & Availability | 🔵 Trivial

Consider supporting Single Node OpenShift (SNO) or compact topologies.

This command strictly labels nodes with the worker role. If this step ever executes on a Single Node OpenShift (SNO) or a compact cluster (where nodes act as both control plane and workers but might lack the worker role), no nodes will receive the label, causing the StorageCluster provisioning to remain indefinitely pending.

If this step is intended to be topology-aware or support edge deployments, consider dynamically falling back to master nodes if no dedicated worker nodes are found.

🤖 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/medik8s/deploy-odf-dev-catalog/medik8s-deploy-odf-dev-catalog-commands.sh`
around lines 135 - 137, Update the worker-node labeling command in the ODF
deployment step to support SNO and compact topologies: detect whether the worker
selector matches any nodes, and when it does not, fall back to labeling
control-plane/master nodes. Preserve the existing worker-node labeling behavior
when worker nodes are available.
🤖 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/medik8s/deploy-odf-dev-catalog/medik8s-deploy-odf-dev-catalog-commands.sh`:
- Around line 27-31: Replace the predictable /tmp/ps-orig.json,
/tmp/ps-merged.json, and pushd /tmp usage in the deployment script with a unique
TMP_DIR created via mktemp -d; register an EXIT trap to remove it, then use
TMP_DIR for both intermediate files and directory navigation while preserving
the existing merge and secret-update flow.
- Around line 170-171: Update the StorageClass annotation commands to tolerate
missing default-class annotations under errexit: append “|| true” to the xargs
pipeline that removes annotations, and add “--overwrite” to the subsequent oc
annotate command targeting ODF_DEFAULT_SC.

In
`@ci-operator/step-registry/medik8s/sbr/nfs-bastion/medik8s-sbr-nfs-bastion-commands.sh`:
- Around line 218-223: Redirect the stdout of the oc run invocation in the
POD_PHASE command substitution to /dev/null, while preserving its status and the
subsequent timeout polling. Ensure POD_PHASE captures only the final pod phase
so the existing Succeeded check works correctly.

---

Nitpick comments:
In
`@ci-operator/step-registry/medik8s/deploy-odf-dev-catalog/medik8s-deploy-odf-dev-catalog-commands.sh`:
- Around line 135-137: Update the worker-node labeling command in the ODF
deployment step to support SNO and compact topologies: detect whether the worker
selector matches any nodes, and when it does not, fall back to labeling
control-plane/master nodes. Preserve the existing worker-node labeling behavior
when worker nodes are available.
🪄 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: ead1075c-5b55-49f6-8b3e-bcb9cb7dc3a0

📥 Commits

Reviewing files that changed from the base of the PR and between 7b8d7f6 and d55beaa.

📒 Files selected for processing (25)
  • OWNERS_ALIASES
  • ci-operator/step-registry/medik8s/OWNERS
  • ci-operator/step-registry/medik8s/aws-credentials/OWNERS
  • ci-operator/step-registry/medik8s/aws-credentials/medik8s-aws-credentials-ref.metadata.json
  • ci-operator/step-registry/medik8s/catalogsource/OWNERS
  • ci-operator/step-registry/medik8s/catalogsource/medik8s-catalogsource-ref.metadata.json
  • ci-operator/step-registry/medik8s/deploy-odf-dev-catalog/OWNERS
  • ci-operator/step-registry/medik8s/deploy-odf-dev-catalog/medik8s-deploy-odf-dev-catalog-commands.sh
  • ci-operator/step-registry/medik8s/deploy-odf-dev-catalog/medik8s-deploy-odf-dev-catalog-ref.metadata.json
  • ci-operator/step-registry/medik8s/deploy-odf-dev-catalog/medik8s-deploy-odf-dev-catalog-ref.yaml
  • ci-operator/step-registry/medik8s/disconnected-catalogsource/OWNERS
  • ci-operator/step-registry/medik8s/disconnected-catalogsource/medik8s-disconnected-catalogsource-ref.metadata.json
  • ci-operator/step-registry/medik8s/lib/OWNERS
  • ci-operator/step-registry/medik8s/lib/medik8s-lib-ref.metadata.json
  • ci-operator/step-registry/medik8s/operator-subscribe/OWNERS
  • ci-operator/step-registry/medik8s/operator-subscribe/medik8s-operator-subscribe-ref.metadata.json
  • ci-operator/step-registry/medik8s/polarion-reporter/OWNERS
  • ci-operator/step-registry/medik8s/polarion-reporter/medik8s-polarion-reporter-ref.metadata.json
  • ci-operator/step-registry/medik8s/sbr/OWNERS
  • ci-operator/step-registry/medik8s/sbr/nfs-bastion/OWNERS
  • ci-operator/step-registry/medik8s/sbr/nfs-bastion/medik8s-sbr-nfs-bastion-commands.sh
  • ci-operator/step-registry/medik8s/sbr/nfs-bastion/medik8s-sbr-nfs-bastion-ref.metadata.json
  • ci-operator/step-registry/medik8s/sbr/nfs-bastion/medik8s-sbr-nfs-bastion-ref.yaml
  • ci-operator/step-registry/medik8s/setup/OWNERS
  • ci-operator/step-registry/medik8s/setup/medik8s-setup-chain.metadata.json
🚧 Files skipped from review as they are similar to previous changes (5)
  • ci-operator/step-registry/medik8s/operator-subscribe/OWNERS
  • ci-operator/step-registry/medik8s/setup/OWNERS
  • ci-operator/step-registry/medik8s/catalogsource/OWNERS
  • ci-operator/step-registry/medik8s/lib/OWNERS
  • ci-operator/step-registry/medik8s/polarion-reporter/OWNERS

Comment on lines +27 to +31
oc get secret/pull-secret -n openshift-config --template='{{index .data ".dockerconfigjson" | base64decode}}' > /tmp/ps-orig.json
jq '. * input' /tmp/ps-orig.json "${CREDS_FILE}" > /tmp/ps-merged.json
oc set data secret/pull-secret -n openshift-config --from-file=.dockerconfigjson=/tmp/ps-merged.json

pushd /tmp

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🔒 Security & Privacy | 🟡 Minor | ⚡ Quick win

Avoid hardcoded and predictable /tmp paths.

Writing to predictable paths under /tmp introduces symlink and TOCTOU vulnerabilities. It is safer to generate a unique temporary directory using mktemp -d and operate within it. This also resolves static analysis warnings for CWE-377.

🛡️ Proposed security refactor

Update line 7 to clear the new directory on exit:

TMP_DIR="$(mktemp -d)"
trap 'rm -rf "${TMP_DIR}"' EXIT

Then update the file writing and directory navigation:

-oc get secret/pull-secret -n openshift-config --template='{{index .data ".dockerconfigjson" | base64decode}}' > /tmp/ps-orig.json
-jq '. * input' /tmp/ps-orig.json "${CREDS_FILE}" > /tmp/ps-merged.json
-oc set data secret/pull-secret -n openshift-config --from-file=.dockerconfigjson=/tmp/ps-merged.json
-
-pushd /tmp
+oc get secret/pull-secret -n openshift-config --template='{{index .data ".dockerconfigjson" | base64decode}}' > "${TMP_DIR}/ps-orig.json"
+jq '. * input' "${TMP_DIR}/ps-orig.json" "${CREDS_FILE}" > "${TMP_DIR}/ps-merged.json"
+oc set data secret/pull-secret -n openshift-config --from-file=.dockerconfigjson="${TMP_DIR}/ps-merged.json"
+
+pushd "${TMP_DIR}"
📝 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
oc get secret/pull-secret -n openshift-config --template='{{index .data ".dockerconfigjson" | base64decode}}' > /tmp/ps-orig.json
jq '. * input' /tmp/ps-orig.json "${CREDS_FILE}" > /tmp/ps-merged.json
oc set data secret/pull-secret -n openshift-config --from-file=.dockerconfigjson=/tmp/ps-merged.json
pushd /tmp
TMP_DIR="$(mktemp -d)"
trap 'rm -rf "${TMP_DIR}"' EXIT
oc get secret/pull-secret -n openshift-config --template='{{index .data ".dockerconfigjson" | base64decode}}' > "${TMP_DIR}/ps-orig.json"
jq '. * input' "${TMP_DIR}/ps-orig.json" "${CREDS_FILE}" > "${TMP_DIR}/ps-merged.json"
oc set data secret/pull-secret -n openshift-config --from-file=.dockerconfigjson="${TMP_DIR}/ps-merged.json"
pushd "${TMP_DIR}"
🧰 Tools
🪛 ast-grep (0.44.1)

[warning] 27-27: Writing to or reading from a hardcoded, predictable path under /tmp is vulnerable to symlink and TOCTOU attacks: a local attacker can pre-create the file (or a symlink pointing elsewhere) and hijack or corrupt the contents. Generate a unique, unpredictable temporary file with mktemp instead, e.g. tmpfile="$(mktemp)" (or mktemp -d for directories) and reference "$tmpfile".
Context: /tmp/ps-orig.json
Note: [CWE-377] Insecure Temporary File.

(predictable-tmp-file-bash)


[warning] 27-27: Writing to or reading from a hardcoded, predictable path under /tmp is vulnerable to symlink and TOCTOU attacks: a local attacker can pre-create the file (or a symlink pointing elsewhere) and hijack or corrupt the contents. Generate a unique, unpredictable temporary file with mktemp instead, e.g. tmpfile="$(mktemp)" (or mktemp -d for directories) and reference "$tmpfile".
Context: /tmp/ps-merged.json
Note: [CWE-377] Insecure Temporary File.

(predictable-tmp-file-bash)

🤖 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/medik8s/deploy-odf-dev-catalog/medik8s-deploy-odf-dev-catalog-commands.sh`
around lines 27 - 31, Replace the predictable /tmp/ps-orig.json,
/tmp/ps-merged.json, and pushd /tmp usage in the deployment script with a unique
TMP_DIR created via mktemp -d; register an EXIT trap to remove it, then use
TMP_DIR for both intermediate files and directory navigation while preserving
the existing merge and secret-update flow.

Source: Linters/SAST tools

Comment on lines +170 to +171
oc get sc -o name | xargs -I{} oc annotate {} storageclass.kubernetes.io/is-default-class-
oc annotate storageclass "${ODF_DEFAULT_SC}" storageclass.kubernetes.io/is-default-class=true

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🔴 Critical | ⚡ Quick win

Handle missing annotations safely to prevent immediate script failure.

oc annotate <resource> <annotation>- forcefully removes an annotation but will exit with a non-zero code (1) if the target resource does not possess that annotation. Since set -o errexit is active globally in this script, xargs executing against non-default StorageClasses will return an exit code of 123, causing the script to instantly crash.

Append || true to the xargs pipeline to safely swallow these expected errors. It is also recommended to add --overwrite on the subsequent step to ensure robustness if the new target already possessed the annotation.

🐛 Proposed fix
-oc get sc -o name | xargs -I{} oc annotate {} storageclass.kubernetes.io/is-default-class-
-oc annotate storageclass "${ODF_DEFAULT_SC}" storageclass.kubernetes.io/is-default-class=true
+oc get sc -o name | xargs -I{} oc annotate {} storageclass.kubernetes.io/is-default-class- || true
+oc annotate storageclass "${ODF_DEFAULT_SC}" storageclass.kubernetes.io/is-default-class=true --overwrite
📝 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
oc get sc -o name | xargs -I{} oc annotate {} storageclass.kubernetes.io/is-default-class-
oc annotate storageclass "${ODF_DEFAULT_SC}" storageclass.kubernetes.io/is-default-class=true
oc get sc -o name | xargs -I{} oc annotate {} storageclass.kubernetes.io/is-default-class- || true
oc annotate storageclass "${ODF_DEFAULT_SC}" storageclass.kubernetes.io/is-default-class=true --overwrite
🤖 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/medik8s/deploy-odf-dev-catalog/medik8s-deploy-odf-dev-catalog-commands.sh`
around lines 170 - 171, Update the StorageClass annotation commands to tolerate
missing default-class annotations under errexit: append “|| true” to the xargs
pipeline that removes annotations, and add “--overwrite” to the subsequent oc
annotate command targeting ODF_DEFAULT_SC.

Comment on lines +218 to +223
POD_PHASE=$(oc run sbr-ubi-preflight \
--image=registry.access.redhat.com/ubi8/ubi-minimal:latest \
--restart=Never \
--command -- sh -c 'echo PREFLIGHT_OK' 2>/dev/null && \
timeout 30 bash -c 'until [[ $(oc get pod sbr-ubi-preflight -o jsonpath="{.status.phase}" 2>/dev/null) =~ ^(Succeeded|Failed)$ ]]; do sleep 2; done; oc get pod sbr-ubi-preflight -o jsonpath="{.status.phase}"' \
2>/dev/null || true)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Redirect oc run stdout to prevent false timeout failures.

By default, oc run prints a confirmation message (e.g., pod/sbr-ubi-preflight created) to standard output. Because this message is captured by the POD_PHASE=$(...) command substitution alongside the output of the chained timeout command, the resulting POD_PHASE string will contain both elements (e.g., pod/sbr-ubi-preflight created\nSucceeded).

As a result, the check [[ "$POD_PHASE" == "Succeeded" ]] on line 224 will always evaluate to false. This forces the loop to unnecessarily exhaust its full 12-minute duration before proceeding. Redirecting the oc run standard output to /dev/null ensures that POD_PHASE accurately captures only the final pod status.

🐛 Proposed fix
     POD_PHASE=$(oc run sbr-ubi-preflight \
         --image=registry.access.redhat.com/ubi8/ubi-minimal:latest \
         --restart=Never \
-        --command -- sh -c 'echo PREFLIGHT_OK' 2>/dev/null && \
+        --command -- sh -c 'echo PREFLIGHT_OK' >/dev/null 2>&1 && \
         timeout 30 bash -c 'until [[ $(oc get pod sbr-ubi-preflight -o jsonpath="{.status.phase}" 2>/dev/null) =~ ^(Succeeded|Failed)$ ]]; do sleep 2; done; oc get pod sbr-ubi-preflight -o jsonpath="{.status.phase}"' \
         2>/dev/null || true)
📝 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
POD_PHASE=$(oc run sbr-ubi-preflight \
--image=registry.access.redhat.com/ubi8/ubi-minimal:latest \
--restart=Never \
--command -- sh -c 'echo PREFLIGHT_OK' 2>/dev/null && \
timeout 30 bash -c 'until [[ $(oc get pod sbr-ubi-preflight -o jsonpath="{.status.phase}" 2>/dev/null) =~ ^(Succeeded|Failed)$ ]]; do sleep 2; done; oc get pod sbr-ubi-preflight -o jsonpath="{.status.phase}"' \
2>/dev/null || true)
POD_PHASE=$(oc run sbr-ubi-preflight \
--image=registry.access.redhat.com/ubi8/ubi-minimal:latest \
--restart=Never \
--command -- sh -c 'echo PREFLIGHT_OK' >/dev/null 2>&1 && \
timeout 30 bash -c 'until [[ $(oc get pod sbr-ubi-preflight -o jsonpath="{.status.phase}" 2>/dev/null) =~ ^(Succeeded|Failed)$ ]]; do sleep 2; done; oc get pod sbr-ubi-preflight -o jsonpath="{.status.phase}"' \
2>/dev/null || true)
🧰 Tools
🪛 Shellcheck (0.11.0)

[info] 222-222: Expressions don't expand in single quotes, use double quotes for that.

(SC2016)

🤖 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/medik8s/sbr/nfs-bastion/medik8s-sbr-nfs-bastion-commands.sh`
around lines 218 - 223, Redirect the stdout of the oc run invocation in the
POD_PHASE command substitution to /dev/null, while preserving its status and the
subsequent timeout polling. Ensure POD_PHASE captures only the final pod phase
so the existing Succeeded check works correctly.

@razo7
razo7 force-pushed the medik8s-owners-alias branch from d55beaa to 12c5514 Compare July 16, 2026 13:51
@openshift-ci openshift-ci Bot removed the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Jul 16, 2026
razo7 and others added 2 commits July 16, 2026 16:55
Add medik8s-admins alias to OWNERS_ALIASES and update all 8
step-registry OWNERS files under ci-operator/step-registry/medik8s/
to reference it. Remove emeritus_approvers from root OWNERS.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Update 3 missed OWNERS files (sbr/, sbr/nfs-bastion/,
deploy-odf-dev-catalog/) to use the medik8s-admins alias and
regenerate their metadata.json with the alias reference.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@razo7
razo7 force-pushed the medik8s-owners-alias branch from 12c5514 to 4f51713 Compare July 16, 2026 13:56
@openshift-merge-bot

Copy link
Copy Markdown
Contributor

@razo7: pj-rehearse could not automatically process this event because the request waited in queue for longer than 5 minutes. Use /pj-rehearse to trigger rehearsals manually.

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

[REHEARSALNOTIFIER]
@razo7: no rehearsable tests are affected by this change

Note: If this PR includes changes to step registry files (ci-operator/step-registry/) and you expected jobs to be found, try rebasing your PR onto the base branch. This helps pj-rehearse accurately detect changes when the base branch has moved forward.

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.

@razo7

razo7 commented Jul 16, 2026

Copy link
Copy Markdown
Member Author

/retest

@openshift-ci

openshift-ci Bot commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

@razo7: 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/yamllint d55beaa link true /test yamllint

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.

@ugreener ugreener 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.

/lgtm

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

razo7 commented Jul 17, 2026

Copy link
Copy Markdown
Member Author

Can you please approve the PR @pruan-rht ?

@pruan-rht

Copy link
Copy Markdown
Member

/lgtm
/approve

@openshift-ci

openshift-ci Bot commented Jul 17, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: clobrano, pruan-rht, razo7, ugreener

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 17, 2026
@openshift-merge-bot
openshift-merge-bot Bot merged commit 87a0445 into openshift:main Jul 17, 2026
10 checks passed
maximunited added a commit to maximunited/openshift-release that referenced this pull request Jul 19, 2026
Align with openshift#81378 which introduced the medik8s-admins team alias.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
maximunited added a commit to maximunited/openshift-release that referenced this pull request Jul 19, 2026
Align with openshift#81378 by replacing individual usernames with the
medik8s-admins OWNERS alias across all new hypershift step-registry
directories.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
maximunited added a commit to maximunited/openshift-release that referenced this pull request Jul 19, 2026
Align with openshift#81378 which introduced the medik8s-admins team alias.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
fracappa pushed a commit to fracappa/release that referenced this pull request Jul 22, 2026
* Update medik8s-admins alias and step-registry OWNERS

Add medik8s-admins alias to OWNERS_ALIASES and update all 8
step-registry OWNERS files under ci-operator/step-registry/medik8s/
to reference it. Remove emeritus_approvers from root OWNERS.

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

* Migrate sbr and deploy-odf-dev-catalog OWNERS to medik8s-admins alias

Update 3 missed OWNERS files (sbr/, sbr/nfs-bastion/,
deploy-odf-dev-catalog/) to use the medik8s-admins alias and
regenerate their metadata.json with the alias reference.

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

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
maximunited added a commit to maximunited/openshift-release that referenced this pull request Jul 31, 2026
Align with openshift#81378 which introduced the medik8s-admins team alias.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
maximunited added a commit to maximunited/openshift-release that referenced this pull request Jul 31, 2026
Align with openshift#81378 by replacing individual usernames with the
medik8s-admins OWNERS alias across all new hypershift step-registry
directories.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
maximunited added a commit to maximunited/openshift-release that referenced this pull request Jul 31, 2026
Align with openshift#81378 which introduced the medik8s-admins team alias.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
openshift-merge-bot Bot pushed a commit that referenced this pull request Aug 2, 2026
…shift-aws) (#80919)

* feat: add SBR HyperShift e2e job using persistent management cluster (hypershift-aws)

Adds e2e-sbr-hypershift-persistent-aws-odf — an optional presubmit that runs
the SBR smoke + acceptance suite on a HyperShift hosted cluster backed by ODF
storage, using the shared persistent management cluster (cluster_profile:
hypershift-aws) instead of provisioning a new management cluster per run.

New workflow medik8s-sbr-hypershift-persistent (in
step-registry/medik8s/sbr/hypershift-persistent/):

  pre:
    ipi-install-rbac
    hypershift-setup-root-management-cluster  (~2s vs ~17m for nested)
    hypershift-aws-create
    medik8s-sbr-hypershift-apply-image-sources

  test: (identical to e2e-sbr-hypershift-aws-odf)
    medik8s-sbr-hypershift-switch-kubeconfig
    medik8s-sbr-hypershift-wait-nodes
    medik8s-catalogsource / medik8s-operator-subscribe
    odf-prepare-cluster / operatorhub-subscribe-odf-operator
    odf-apply-storage-cluster
    e2e-test (make run-tests, ECO_TEST_FEATURES=sbr-operator)

  post:
    medik8s-sbr-hypershift-restore-kubeconfig
    hypershift-dump / hypershift-debug / hypershift-k8sgpt
    hypershift-aws-destroy  (no destroy-management-cluster)

Job config: cluster_profile=hypershift-aws, m5.4xlarge x3,
ODF stable-4.21, optional=true, trigger=
/test 4.22-konflux-e2e-sbr-hypershift-persistent-aws-odf.

Expected savings vs nested variant: ~23 min/run (management cluster
create + hypershift-install + management cluster destroy eliminated).

Related: #80372 (nested variant; introduces shared step-registry steps)

* ci: use medik8s-setup chain for hypershift-persistent and EFS jobs

Replace individual medik8s-catalogsource + medik8s-operator-subscribe
refs with the medik8s-setup chain, consistent with all other jobs.

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

* Regenerate presubmits: drop stale job-release labels from hypershift jobs

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

* Align hypershift step scripts with #80372's defensive patterns

Address razo7's review: adopt PR #80372's implementations for
apply-image-sources (trap cleanup, jq null-coalescing, entry count
validation, exponential backoff for GitLab, --patch-file) and
wait-nodes (single unified loop checking all 3 invariants atomically).

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

* Add grace_period for apply-image-sources trap handler

The script uses `trap` for temp file cleanup, which requires
grace_period in the step ref to avoid being killed before cleanup runs.

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

* Use medik8s-admins alias in OWNERS files

Align with #81378 which introduced the medik8s-admins team alias.

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

* Consolidate temp file cleanup into single trap handler

Address security review finding: commit_file and patch_file used manual
rm -f which would leak on unexpected exit. All temp files now register
in _tmp_files array and are cleaned up by the EXIT trap.

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

* Regenerate step-registry metadata for medik8s-admins OWNERS

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

* Fix metadata formatting: use tabs, no trailing newline

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

* Address review: transient API tolerance and curl diagnostics

- wait-nodes: retry on transient API failures instead of exiting
- apply-image-sources: log curl stderr on GitLab fetch failures
- restore-kubeconfig: guard cp to not break post-phase chain

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

* fix: determinize env key order for hypershift ODF jobs

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
amogh-redhat pushed a commit to amogh-redhat/release that referenced this pull request Aug 5, 2026
* Update medik8s-admins alias and step-registry OWNERS

Add medik8s-admins alias to OWNERS_ALIASES and update all 8
step-registry OWNERS files under ci-operator/step-registry/medik8s/
to reference it. Remove emeritus_approvers from root OWNERS.

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

* Migrate sbr and deploy-odf-dev-catalog OWNERS to medik8s-admins alias

Update 3 missed OWNERS files (sbr/, sbr/nfs-bastion/,
deploy-odf-dev-catalog/) to use the medik8s-admins alias and
regenerate their metadata.json with the alias reference.

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

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
amogh-redhat pushed a commit to amogh-redhat/release that referenced this pull request Aug 5, 2026
…shift-aws) (openshift#80919)

* feat: add SBR HyperShift e2e job using persistent management cluster (hypershift-aws)

Adds e2e-sbr-hypershift-persistent-aws-odf — an optional presubmit that runs
the SBR smoke + acceptance suite on a HyperShift hosted cluster backed by ODF
storage, using the shared persistent management cluster (cluster_profile:
hypershift-aws) instead of provisioning a new management cluster per run.

New workflow medik8s-sbr-hypershift-persistent (in
step-registry/medik8s/sbr/hypershift-persistent/):

  pre:
    ipi-install-rbac
    hypershift-setup-root-management-cluster  (~2s vs ~17m for nested)
    hypershift-aws-create
    medik8s-sbr-hypershift-apply-image-sources

  test: (identical to e2e-sbr-hypershift-aws-odf)
    medik8s-sbr-hypershift-switch-kubeconfig
    medik8s-sbr-hypershift-wait-nodes
    medik8s-catalogsource / medik8s-operator-subscribe
    odf-prepare-cluster / operatorhub-subscribe-odf-operator
    odf-apply-storage-cluster
    e2e-test (make run-tests, ECO_TEST_FEATURES=sbr-operator)

  post:
    medik8s-sbr-hypershift-restore-kubeconfig
    hypershift-dump / hypershift-debug / hypershift-k8sgpt
    hypershift-aws-destroy  (no destroy-management-cluster)

Job config: cluster_profile=hypershift-aws, m5.4xlarge x3,
ODF stable-4.21, optional=true, trigger=
/test 4.22-konflux-e2e-sbr-hypershift-persistent-aws-odf.

Expected savings vs nested variant: ~23 min/run (management cluster
create + hypershift-install + management cluster destroy eliminated).

Related: openshift#80372 (nested variant; introduces shared step-registry steps)

* ci: use medik8s-setup chain for hypershift-persistent and EFS jobs

Replace individual medik8s-catalogsource + medik8s-operator-subscribe
refs with the medik8s-setup chain, consistent with all other jobs.

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

* Regenerate presubmits: drop stale job-release labels from hypershift jobs

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

* Align hypershift step scripts with openshift#80372's defensive patterns

Address razo7's review: adopt PR openshift#80372's implementations for
apply-image-sources (trap cleanup, jq null-coalescing, entry count
validation, exponential backoff for GitLab, --patch-file) and
wait-nodes (single unified loop checking all 3 invariants atomically).

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

* Add grace_period for apply-image-sources trap handler

The script uses `trap` for temp file cleanup, which requires
grace_period in the step ref to avoid being killed before cleanup runs.

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

* Use medik8s-admins alias in OWNERS files

Align with openshift#81378 which introduced the medik8s-admins team alias.

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

* Consolidate temp file cleanup into single trap handler

Address security review finding: commit_file and patch_file used manual
rm -f which would leak on unexpected exit. All temp files now register
in _tmp_files array and are cleaned up by the EXIT trap.

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

* Regenerate step-registry metadata for medik8s-admins OWNERS

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

* Fix metadata formatting: use tabs, no trailing newline

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

* Address review: transient API tolerance and curl diagnostics

- wait-nodes: retry on transient API failures instead of exiting
- apply-image-sources: log curl stderr on GitLab fetch failures
- restore-kubeconfig: guard cp to not break post-phase chain

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

* fix: determinize env key order for hypershift ODF jobs

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
TimurMP pushed a commit to TimurMP/release that referenced this pull request Aug 9, 2026
…shift-aws) (openshift#80919)

* feat: add SBR HyperShift e2e job using persistent management cluster (hypershift-aws)

Adds e2e-sbr-hypershift-persistent-aws-odf — an optional presubmit that runs
the SBR smoke + acceptance suite on a HyperShift hosted cluster backed by ODF
storage, using the shared persistent management cluster (cluster_profile:
hypershift-aws) instead of provisioning a new management cluster per run.

New workflow medik8s-sbr-hypershift-persistent (in
step-registry/medik8s/sbr/hypershift-persistent/):

  pre:
    ipi-install-rbac
    hypershift-setup-root-management-cluster  (~2s vs ~17m for nested)
    hypershift-aws-create
    medik8s-sbr-hypershift-apply-image-sources

  test: (identical to e2e-sbr-hypershift-aws-odf)
    medik8s-sbr-hypershift-switch-kubeconfig
    medik8s-sbr-hypershift-wait-nodes
    medik8s-catalogsource / medik8s-operator-subscribe
    odf-prepare-cluster / operatorhub-subscribe-odf-operator
    odf-apply-storage-cluster
    e2e-test (make run-tests, ECO_TEST_FEATURES=sbr-operator)

  post:
    medik8s-sbr-hypershift-restore-kubeconfig
    hypershift-dump / hypershift-debug / hypershift-k8sgpt
    hypershift-aws-destroy  (no destroy-management-cluster)

Job config: cluster_profile=hypershift-aws, m5.4xlarge x3,
ODF stable-4.21, optional=true, trigger=
/test 4.22-konflux-e2e-sbr-hypershift-persistent-aws-odf.

Expected savings vs nested variant: ~23 min/run (management cluster
create + hypershift-install + management cluster destroy eliminated).

Related: openshift#80372 (nested variant; introduces shared step-registry steps)

* ci: use medik8s-setup chain for hypershift-persistent and EFS jobs

Replace individual medik8s-catalogsource + medik8s-operator-subscribe
refs with the medik8s-setup chain, consistent with all other jobs.

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

* Regenerate presubmits: drop stale job-release labels from hypershift jobs

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

* Align hypershift step scripts with openshift#80372's defensive patterns

Address razo7's review: adopt PR openshift#80372's implementations for
apply-image-sources (trap cleanup, jq null-coalescing, entry count
validation, exponential backoff for GitLab, --patch-file) and
wait-nodes (single unified loop checking all 3 invariants atomically).

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

* Add grace_period for apply-image-sources trap handler

The script uses `trap` for temp file cleanup, which requires
grace_period in the step ref to avoid being killed before cleanup runs.

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

* Use medik8s-admins alias in OWNERS files

Align with openshift#81378 which introduced the medik8s-admins team alias.

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

* Consolidate temp file cleanup into single trap handler

Address security review finding: commit_file and patch_file used manual
rm -f which would leak on unexpected exit. All temp files now register
in _tmp_files array and are cleaned up by the EXIT trap.

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

* Regenerate step-registry metadata for medik8s-admins OWNERS

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

* Fix metadata formatting: use tabs, no trailing newline

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

* Address review: transient API tolerance and curl diagnostics

- wait-nodes: retry on transient API failures instead of exiting
- apply-image-sources: log curl stderr on GitLab fetch failures
- restore-kubeconfig: guard cp to not break post-phase chain

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

* fix: determinize env key order for hypershift ODF jobs

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
TimurMP pushed a commit to TimurMP/release that referenced this pull request Sep 5, 2026
* Update medik8s-admins alias and step-registry OWNERS

Add medik8s-admins alias to OWNERS_ALIASES and update all 8
step-registry OWNERS files under ci-operator/step-registry/medik8s/
to reference it. Remove emeritus_approvers from root OWNERS.

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

* Migrate sbr and deploy-odf-dev-catalog OWNERS to medik8s-admins alias

Update 3 missed OWNERS files (sbr/, sbr/nfs-bastion/,
deploy-odf-dev-catalog/) to use the medik8s-admins alias and
regenerate their metadata.json with the alias reference.

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

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
TimurMP pushed a commit to TimurMP/release that referenced this pull request Sep 5, 2026
…shift-aws) (openshift#80919)

* feat: add SBR HyperShift e2e job using persistent management cluster (hypershift-aws)

Adds e2e-sbr-hypershift-persistent-aws-odf — an optional presubmit that runs
the SBR smoke + acceptance suite on a HyperShift hosted cluster backed by ODF
storage, using the shared persistent management cluster (cluster_profile:
hypershift-aws) instead of provisioning a new management cluster per run.

New workflow medik8s-sbr-hypershift-persistent (in
step-registry/medik8s/sbr/hypershift-persistent/):

  pre:
    ipi-install-rbac
    hypershift-setup-root-management-cluster  (~2s vs ~17m for nested)
    hypershift-aws-create
    medik8s-sbr-hypershift-apply-image-sources

  test: (identical to e2e-sbr-hypershift-aws-odf)
    medik8s-sbr-hypershift-switch-kubeconfig
    medik8s-sbr-hypershift-wait-nodes
    medik8s-catalogsource / medik8s-operator-subscribe
    odf-prepare-cluster / operatorhub-subscribe-odf-operator
    odf-apply-storage-cluster
    e2e-test (make run-tests, ECO_TEST_FEATURES=sbr-operator)

  post:
    medik8s-sbr-hypershift-restore-kubeconfig
    hypershift-dump / hypershift-debug / hypershift-k8sgpt
    hypershift-aws-destroy  (no destroy-management-cluster)

Job config: cluster_profile=hypershift-aws, m5.4xlarge x3,
ODF stable-4.21, optional=true, trigger=
/test 4.22-konflux-e2e-sbr-hypershift-persistent-aws-odf.

Expected savings vs nested variant: ~23 min/run (management cluster
create + hypershift-install + management cluster destroy eliminated).

Related: openshift#80372 (nested variant; introduces shared step-registry steps)

* ci: use medik8s-setup chain for hypershift-persistent and EFS jobs

Replace individual medik8s-catalogsource + medik8s-operator-subscribe
refs with the medik8s-setup chain, consistent with all other jobs.

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

* Regenerate presubmits: drop stale job-release labels from hypershift jobs

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

* Align hypershift step scripts with openshift#80372's defensive patterns

Address razo7's review: adopt PR openshift#80372's implementations for
apply-image-sources (trap cleanup, jq null-coalescing, entry count
validation, exponential backoff for GitLab, --patch-file) and
wait-nodes (single unified loop checking all 3 invariants atomically).

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

* Add grace_period for apply-image-sources trap handler

The script uses `trap` for temp file cleanup, which requires
grace_period in the step ref to avoid being killed before cleanup runs.

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

* Use medik8s-admins alias in OWNERS files

Align with openshift#81378 which introduced the medik8s-admins team alias.

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

* Consolidate temp file cleanup into single trap handler

Address security review finding: commit_file and patch_file used manual
rm -f which would leak on unexpected exit. All temp files now register
in _tmp_files array and are cleaned up by the EXIT trap.

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

* Regenerate step-registry metadata for medik8s-admins OWNERS

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

* Fix metadata formatting: use tabs, no trailing newline

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

* Address review: transient API tolerance and curl diagnostics

- wait-nodes: retry on transient API failures instead of exiting
- apply-image-sources: log curl stderr on GitLab fetch failures
- restore-kubeconfig: guard cp to not break post-phase chain

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

* fix: determinize env key order for hypershift ODF jobs

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
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. lgtm Indicates that a PR is ready to be merged. rehearsals-ack Signifies that rehearsal jobs have been acknowledged

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants