Skip to content

STOR-2963: Save SELinuxWarningController upgradeability to a ConfigMap - #2720

Merged
openshift-merge-bot[bot] merged 2 commits into
openshift:masterfrom
rvagner78:selinux-warning-carry
Jul 24, 2026
Merged

STOR-2963: Save SELinuxWarningController upgradeability to a ConfigMap#2720
openshift-merge-bot[bot] merged 2 commits into
openshift:masterfrom
rvagner78:selinux-warning-carry

Conversation

@rvagner78

@rvagner78 rvagner78 commented Jul 17, 2026

Copy link
Copy Markdown

KCM's SELinuxWarningController knows how many Pods could get broken by upgrade to Kubernetes 1.37 / a version where SELinuxMount feature gate is enabled.

Add a carry patch to KCM to store the information into a ConfigMap openshift-config/selinux-conflicts.
cluster-storage-operator can read it from there and mark itself Upgradeable: false.

See openshift/enhancements#2010 for details.

This PR reinstates the carry patch from #2671. The remaining commits from that original PR are already upstreamed and present in Kubernetes v1.36.2.

Summary by CodeRabbit

  • New Features

    • Added optional SELinux mount conflict reporting via the selinux-conflicts ConfigMap, including updates as conflict presence changes.
    • Introduced the SELinuxMountGAReadiness feature gate (Alpha, disabled by default) to control when reporting runs.
    • Updated controller permissions to create ConfigMaps and patch the selinux-conflicts ConfigMap when needed.
  • Tests

    • Added unit tests covering conflict detection, ConfigMap create/update behavior, status transitions, and conflict-to-condition mapping.

…ConfigMap

To upgrade OCP to Kubernetes 1.37 with SELinuxMount enabled, we need to
ensure there are no user workloads that could get broken by the feature
gate. SELinuxWarningController in KCP has the information and emits it as a
metric.

To mark the cluster un-upgradeable easily using API objects, store the
information as a ConfigMap too. Reading metrics in an operator is too
complicated.
@openshift-ci-robot openshift-ci-robot added the backports/unvalidated-commits Indicates that not all commits come to merged upstream PRs. label Jul 17, 2026
@openshift-ci-robot

Copy link
Copy Markdown

@rvagner78: the contents of this pull request could not be automatically validated.

The following commits could not be validated and must be approved by a top-level approver:

Comment /validate-backports to re-evaluate validity of the upstream PRs, for example when they are merged upstream.

@coderabbitai

coderabbitai Bot commented Jul 17, 2026

Copy link
Copy Markdown

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository: openshift/coderabbit/.coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 28394e89-b25b-46b4-b2c1-44cbc645fcad

📥 Commits

Reviewing files that changed from the base of the PR and between 4da08ff and 44a83e0.

📒 Files selected for processing (1)
  • test/compatibility_lifecycle/reference/feature_list.md

Walkthrough

Adds a feature-gated controller that periodically reports SELinux conflict presence in an OpenShift ConfigMap, integrates it into the existing warning controller, exposes conflict counting, grants required RBAC permissions, and adds unit tests.

Changes

SELinux conflict reporting

Layer / File(s) Summary
Conflict counting and reporting flow
pkg/controller/volume/selinuxwarning/cache/openshift_patch.go, pkg/controller/volume/selinuxwarning/openshift_upgrade_controller.go, pkg/features/openshift_features.go, test/compatibility_lifecycle/reference/feature_list.md
Adds conflict counting, registers the SELinuxMountGAReadiness feature gate, and periodically applies the selinux-conflicts ConfigMap when the condition changes.
Controller lifecycle and RBAC wiring
pkg/controller/volume/selinuxwarning/selinux_warning_controller.go, plugin/pkg/auth/authorizer/rbac/bootstrappolicy/controller_policy.go, plugin/pkg/auth/authorizer/rbac/bootstrappolicy/testdata/controller-roles.yaml
Starts the reporter with the warning controller and grants ConfigMap creation plus restricted patch permissions.
Reporter behavior validation
pkg/controller/volume/selinuxwarning/openshift_upgrade_controller_test.go
Tests conflict mapping, ConfigMap creation and patching, status transitions, and unchanged-state behavior.

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

Sequence Diagram(s)

sequenceDiagram
  participant SELinuxWarningController
  participant SELinuxConflictsReporterController
  participant volumeCache
  participant KubernetesAPI
  SELinuxWarningController->>SELinuxConflictsReporterController: start Run(ctx)
  SELinuxConflictsReporterController->>volumeCache: GetConflictCount()
  volumeCache-->>SELinuxConflictsReporterController: conflict count
  SELinuxConflictsReporterController->>KubernetesAPI: apply selinux-conflicts ConfigMap
  KubernetesAPI-->>SELinuxConflictsReporterController: apply result
Loading

Possibly related PRs

  • openshift/kubernetes#2668: Refactors the volume cache’s SELinux conflict storage and retrieval methods, which is directly coupled to the new conflict counting interface.

Suggested reviewers: bertinatto, deads2k

🚥 Pre-merge checks | ✅ 15
✅ Passed checks (15 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title matches the main change: persisting SELinux warning upgradeability state in a ConfigMap.
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 All added test titles are static table-driven literals; no Ginkgo/It/Describe names or dynamic values were found.
Test Structure And Quality ✅ Passed These are isolated table-driven unit tests, not Ginkgo; they use fake clients, no cluster resources or waits, and have focused assertions.
Microshift Test Compatibility ✅ Passed No new Ginkgo/e2e tests were added; the new tests are plain Go unit tests with fake clients, so MicroShift-specific API skipping is not applicable.
Single Node Openshift (Sno) Test Compatibility ✅ Passed The added tests are plain testing.T unit tests, not Ginkgo e2e tests, and no SNO-specific multi-node assumptions or missing skips were found.
Topology-Aware Scheduling Compatibility ✅ Passed The PR only adds SELinux conflict reporting, feature-gate wiring, tests, and RBAC for ConfigMaps; no nodeSelector, affinity, spread, replica, or PDB changes appear.
Ote Binary Stdout Contract ✅ Passed No main/init/TestMain/suite-level stdout writes were added; new logging stays inside controller methods and tests.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed No new Ginkgo/e2e tests were added; the new tests are unit tests using fake clients and contain no IPv4-only or external connectivity assumptions.
No-Weak-Crypto ✅ Passed No weak cryptography patterns detected. Code implements SELinux conflict reporting via ConfigMap updates with no MD5, SHA1, DES, RC4, 3DES, Blowfish, ECB, custom crypto implementations, or non-cons...
Container-Privileges ✅ Passed PR only adds controller/RBAC/ConfigMap logic; no pod/deployment manifests or privileged, hostPID, hostNetwork, hostIPC, allowPrivilegeEscalation, or SYS_ADMIN changes found.
No-Sensitive-Data-In-Logs ✅ Passed New logs only report feature-gate state, conflict counts, and ConfigMap update status; no secrets, PII, hostnames, or customer data are logged.
✨ 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 bertinatto and deads2k July 17, 2026 09:45
@rvagner78 rvagner78 changed the title UPSTREAM: <carry>: Store SELinuxWarningController upgrade check as a ConfigMap STOR-2963: Save SELinuxWarningController upgradeability to a ConfigMap Jul 17, 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 17, 2026
@openshift-ci-robot

openshift-ci-robot commented Jul 17, 2026

Copy link
Copy Markdown

@rvagner78: This pull request references STOR-2963 which is a valid jira issue.

Details

In response to this:

KCM's SELinuxWarningController knows how many Pods could get broken by upgrade to Kubernetes 1.37 / a version where SELinuxMount feature gate is enabled.

Add a carry patch to KCM to store the information into a ConfigMap openshift-config/selinux-conflicts.
cluster-storage-operator can read it from there and mark itself Upgradeable: false.

See openshift/enhancements#2010 for details.

This PR reinstates the carry patch from #2671. The remaining commits from that original PR are already upstreamed and present in Kubernetes v1.36.2.

Summary by CodeRabbit

  • New Features

  • Added optional reporting of SELinux mount conflicts through the selinux-conflicts ConfigMap.

  • Reports whether conflicts are present and updates the status as conditions change.

  • Added the SELinuxMountGAReadiness feature gate, disabled by default.

  • Enabled the controller to create and update the required ConfigMap when the feature is enabled.

  • Tests

  • Added coverage for conflict detection, status transitions, ConfigMap creation, and updates.

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

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)
pkg/controller/volume/selinuxwarning/openshift_upgrade_controller.go (1)

41-59: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Prefer wait.UntilWithContext for periodic execution.

Using wait.UntilWithContext instead of a manual timer loop is idiomatic in Kubernetes controllers. It ensures that the first execution happens immediately on startup (rather than being delayed by the 30-second checkInterval) and automatically provides panic recovery via utilruntime.HandleCrash() inside its backoff loop.

Please consider applying the following refactor. Note that this requires adding the wait package to your imports.

♻️ Proposed refactor

Add the required import at the top of the file:

 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+	"k8s.io/apimachinery/pkg/util/wait"
 	utilfeature "k8s.io/apiserver/pkg/util/feature"

Simplify the Run loop:

 func (c *SELinuxConflictsReporterController) Run(ctx context.Context) {
 	logger := klog.FromContext(ctx)
 	if !utilfeature.DefaultFeatureGate.Enabled(features.SELinuxMountGAReadiness) {
 		logger.V(2).Info("SELinuxMountGAReadiness feature gate is disabled, not starting OpenShift SELinux conflicts reporter")
 		return
 	}
 	logger.V(2).Info("Starting OpenShift SELinux conflicts reporter")
-	timer := time.NewTimer(checkInterval)
-	defer timer.Stop()
-	for {
-		select {
-		case <-ctx.Done():
-			return
-		case <-timer.C:
-			c.reportSELinuxConflicts(ctx)
-			timer.Reset(checkInterval)
-		}
-	}
+	wait.UntilWithContext(ctx, c.reportSELinuxConflicts, checkInterval)
 }
🤖 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 `@pkg/controller/volume/selinuxwarning/openshift_upgrade_controller.go` around
lines 41 - 59, Refactor SELinuxConflictsReporterController.Run to use
wait.UntilWithContext for periodic execution instead of the manual timer/select
loop. Preserve the feature-gate check and startup logging, invoke
reportSELinuxConflicts immediately and then at checkInterval while respecting
context cancellation, and add the required wait import.
🤖 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 `@pkg/controller/volume/selinuxwarning/openshift_upgrade_controller_test.go`:
- Around line 152-180: Update the test around reportSELinuxConflicts to assert
fake client write actions, rather than relying only on the final ConfigMap
state, so identical-data patches fail expectNoWrite cases. For transition cases,
invoke c.reportSELinuxConflicts twice and verify exactly one write action
occurred, confirming the first successful write updates previousConflicts and
suppresses the second write.

---

Nitpick comments:
In `@pkg/controller/volume/selinuxwarning/openshift_upgrade_controller.go`:
- Around line 41-59: Refactor SELinuxConflictsReporterController.Run to use
wait.UntilWithContext for periodic execution instead of the manual timer/select
loop. Preserve the feature-gate check and startup logging, invoke
reportSELinuxConflicts immediately and then at checkInterval while respecting
context cancellation, and add the required wait import.
🪄 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: openshift/coderabbit/.coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: af1c68c4-995c-4a6d-8de7-8e9483fb6967

📥 Commits

Reviewing files that changed from the base of the PR and between 78acd4d and 4da08ff.

📒 Files selected for processing (7)
  • pkg/controller/volume/selinuxwarning/cache/openshift_patch.go
  • pkg/controller/volume/selinuxwarning/openshift_upgrade_controller.go
  • pkg/controller/volume/selinuxwarning/openshift_upgrade_controller_test.go
  • pkg/controller/volume/selinuxwarning/selinux_warning_controller.go
  • pkg/features/openshift_features.go
  • plugin/pkg/auth/authorizer/rbac/bootstrappolicy/controller_policy.go
  • plugin/pkg/auth/authorizer/rbac/bootstrappolicy/testdata/controller-roles.yaml

Comment on lines +152 to +180
c.reportSELinuxConflicts(ctx)

if tt.expectNoWrite {
cm, err := fakeClient.CoreV1().ConfigMaps(configMapNamespace).Get(ctx, configMapName, metav1.GetOptions{})
if tt.existingConfigMap != nil {
// The ConfigMap should still exist unchanged.
if err != nil {
t.Fatalf("expected ConfigMap to exist, got error: %v", err)
}
if cm.Data["conflictsPresent"] != tt.existingConfigMap.Data["conflictsPresent"] {
t.Errorf("ConfigMap data changed unexpectedly: got %v, want %v", cm.Data, tt.existingConfigMap.Data)
}
} else {
if err == nil || !apierrors.IsNotFound(err) {
t.Fatalf("expected ConfigMap to not exist, got error: %v", err)
}
}
return
}

cm, err := fakeClient.CoreV1().ConfigMaps(configMapNamespace).Get(ctx, configMapName, metav1.GetOptions{})
if err != nil {
t.Fatalf("failed to get ConfigMap: %v", err)
}
for key, expectedValue := range tt.expectConfigMapData {
if cm.Data[key] != expectedValue {
t.Errorf("ConfigMap data[%q] = %q, want %q", key, cm.Data[key], expectedValue)
}
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Assert client write actions rather than only the final ConfigMap state.

An unnecessary patch with identical data passes expectNoWrite. Also invoke reporting twice after a transition to verify that the successful first write updates previousConflicts and suppresses the second write.

Proposed assertion pattern
 			c.reportSELinuxConflicts(ctx)
+			c.reportSELinuxConflicts(ctx)
+
+			writeCount := 0
+			for _, action := range fakeClient.Actions() {
+				switch action.GetVerb() {
+				case "create", "patch", "update":
+					writeCount++
+				}
+			}
 
 			if tt.expectNoWrite {
+				if writeCount != 0 {
+					t.Fatalf("expected no ConfigMap writes, got %d", writeCount)
+				}

For transition cases, expect exactly one write across both calls.

🤖 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 `@pkg/controller/volume/selinuxwarning/openshift_upgrade_controller_test.go`
around lines 152 - 180, Update the test around reportSELinuxConflicts to assert
fake client write actions, rather than relying only on the final ConfigMap
state, so identical-data patches fail expectNoWrite cases. For transition cases,
invoke c.reportSELinuxConflicts twice and verify exactly one write action
occurred, confirming the first successful write updates previousConflicts and
suppresses the second write.

@openshift-ci-robot

Copy link
Copy Markdown

@rvagner78: the contents of this pull request could not be automatically validated.

The following commits could not be validated and must be approved by a top-level approver:

Comment /validate-backports to re-evaluate validity of the upstream PRs, for example when they are merged upstream.

@openshift-ci-robot

openshift-ci-robot commented Jul 17, 2026

Copy link
Copy Markdown

@rvagner78: This pull request references STOR-2963 which is a valid jira issue.

Details

In response to this:

KCM's SELinuxWarningController knows how many Pods could get broken by upgrade to Kubernetes 1.37 / a version where SELinuxMount feature gate is enabled.

Add a carry patch to KCM to store the information into a ConfigMap openshift-config/selinux-conflicts.
cluster-storage-operator can read it from there and mark itself Upgradeable: false.

See openshift/enhancements#2010 for details.

This PR reinstates the carry patch from #2671. The remaining commits from that original PR are already upstreamed and present in Kubernetes v1.36.2.

Summary by CodeRabbit

  • New Features

  • Added optional SELinux mount conflict reporting via the selinux-conflicts ConfigMap, including updates as conflict presence changes.

  • Introduced the SELinuxMountGAReadiness feature gate (Alpha, disabled by default) to control when reporting runs.

  • Updated controller permissions to create ConfigMaps and patch the selinux-conflicts ConfigMap when needed.

  • Tests

  • Added unit tests covering conflict detection, ConfigMap create/update behavior, status transitions, and conflict-to-condition mapping.

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.

@rvagner78

Copy link
Copy Markdown
Author

/retest

@rvagner78

Copy link
Copy Markdown
Author

/test e2e-aws-ovn-techpreview

@rvagner78

Copy link
Copy Markdown
Author

/test e2e-aws-ovn-techpreview-serial-1of2

@rvagner78

Copy link
Copy Markdown
Author

/test e2e-aws-ovn-techpreview-serial-2of2

@rvagner78

Copy link
Copy Markdown
Author

/test e2e-aws-ovn-fips

@rvagner78

Copy link
Copy Markdown
Author

/test e2e-aws-ovn-cgroupsv2

@openshift-ci

openshift-ci Bot commented Jul 20, 2026

Copy link
Copy Markdown

@rvagner78: This PR was included in a payload test run from openshift/cluster-storage-operator#715
trigger 3 job(s) for the /payload-(with-prs|job|aggregate|job-with-prs|aggregate-with-prs) command

  • periodic-ci-openshift-release-main-ci-5.0-e2e-aws-ovn-techpreview-serial-1of3
  • periodic-ci-openshift-release-main-ci-5.0-e2e-aws-ovn-techpreview-serial-2of3
  • periodic-ci-openshift-release-main-ci-5.0-e2e-aws-ovn-techpreview-serial-3of3

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/078c4380-847c-11f1-9203-9b5af984e1ff-0

@rvagner78

Copy link
Copy Markdown
Author

/test e2e-aws-ovn-fips

@openshift-ci

openshift-ci Bot commented Jul 21, 2026

Copy link
Copy Markdown

@rvagner78: This PR was included in a payload test run from openshift/cluster-storage-operator#715
trigger 3 job(s) for the /payload-(with-prs|job|aggregate|job-with-prs|aggregate-with-prs) command

  • periodic-ci-openshift-release-main-ci-5.0-e2e-aws-ovn-techpreview-serial-1of3
  • periodic-ci-openshift-release-main-ci-5.0-e2e-aws-ovn-techpreview-serial-2of3
  • periodic-ci-openshift-release-main-ci-5.0-e2e-aws-ovn-techpreview-serial-3of3

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/bf495ad0-84c7-11f1-8571-fadc318cb7ed-0

@rvagner78

Copy link
Copy Markdown
Author

/test e2e-aws-ovn-fips

@openshift-ci

openshift-ci Bot commented Jul 21, 2026

Copy link
Copy Markdown

@rvagner78: This PR was included in a payload test run from openshift/cluster-storage-operator#715
trigger 3 job(s) for the /payload-(with-prs|job|aggregate|job-with-prs|aggregate-with-prs) command

  • periodic-ci-openshift-release-main-ci-5.0-e2e-aws-ovn-techpreview-serial-1of3
  • periodic-ci-openshift-release-main-ci-5.0-e2e-aws-ovn-techpreview-serial-2of3
  • periodic-ci-openshift-release-main-ci-5.0-e2e-aws-ovn-techpreview-serial-3of3

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/3e37dcc0-84ed-11f1-8261-f3069dc9f396-0

@rvagner78

Copy link
Copy Markdown
Author

/test e2e-aws-ovn-fips

@openshift-ci

openshift-ci Bot commented Jul 21, 2026

Copy link
Copy Markdown

@rvagner78: This PR was included in a payload test run from openshift/cluster-storage-operator#715
trigger 1 job(s) for the /payload-(with-prs|job|aggregate|job-with-prs|aggregate-with-prs) command

  • periodic-ci-openshift-release-main-ci-5.0-e2e-aws-ovn-techpreview-serial-1of3

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/73b80740-850f-11f1-9cb4-af5855bf2d14-0

@rvagner78

Copy link
Copy Markdown
Author

/test e2e-aws-ovn-fips

@openshift-ci

openshift-ci Bot commented Jul 21, 2026

Copy link
Copy Markdown

@rvagner78: This PR was included in a payload test run from openshift/cluster-storage-operator#715
trigger 1 job(s) for the /payload-(with-prs|job|aggregate|job-with-prs|aggregate-with-prs) command

  • periodic-ci-openshift-release-main-ci-5.0-e2e-aws-ovn-techpreview-serial-3of3

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/1f27d410-8539-11f1-96f0-2533b3cae18e-0

@rvagner78

Copy link
Copy Markdown
Author

/test e2e-aws-ovn-fips

@rvagner78

Copy link
Copy Markdown
Author

/test e2e-aws-ovn-fips

1 similar comment
@rvagner78

Copy link
Copy Markdown
Author

/test e2e-aws-ovn-fips

@rvagner78

Copy link
Copy Markdown
Author

/test hypershift-e2e-aks

@rvagner78

Copy link
Copy Markdown
Author

/retest

@rvagner78

Copy link
Copy Markdown
Author

/test e2e-aws-ovn-fips

@dobsonj

dobsonj commented Jul 23, 2026

Copy link
Copy Markdown
Member

/lgtm

/assign @jubittajohn
for approval

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

Copy link
Copy Markdown

This PR pulls in commit from #2671.
@jsafrane has verified the fix #2671 (comment)
@atiratree lgtm'ed here #2671 (comment)
/lgtm
/approve

@jubittajohn

Copy link
Copy Markdown

/verified by @jsafrane #2671 (comment)

@openshift-ci-robot openshift-ci-robot added the verified Signifies that the PR passed pre-merge verification criteria label Jul 23, 2026
@openshift-ci-robot

Copy link
Copy Markdown

@jubittajohn: This PR has been marked as verified by @jsafrane https://github.com/openshift/kubernetes/pull/2671#issuecomment-4877088702.

Details

In response to this:

/verified by @jsafrane #2671 (comment)

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.

@jubittajohn

Copy link
Copy Markdown

/remove-label backports/unvalidated-commits

@openshift-ci openshift-ci Bot removed the backports/unvalidated-commits Indicates that not all commits come to merged upstream PRs. label Jul 23, 2026
@openshift-ci

openshift-ci Bot commented Jul 23, 2026

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: dobsonj, jubittajohn, rvagner78

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 23, 2026
@jubittajohn

Copy link
Copy Markdown

/retest-required

@openshift-ci

openshift-ci Bot commented Jul 24, 2026

Copy link
Copy Markdown

@rvagner78: all tests passed!

Full PR test history. Your PR dashboard.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

@openshift-merge-bot
openshift-merge-bot Bot merged commit ce96c46 into openshift:master Jul 24, 2026
22 checks passed
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. lgtm Indicates that a PR is ready to be merged. verified Signifies that the PR passed pre-merge verification criteria

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants