Skip to content

OCPBUGS-86949: Guard HCCO KubeletConfig CM deletion against transient source absence - #8671

Closed
vsolanki12 wants to merge 79 commits into
openshift:mainfrom
vsolanki12:fix-OCPBUGS-86949
Closed

OCPBUGS-86949: Guard HCCO KubeletConfig CM deletion against transient source absence#8671
vsolanki12 wants to merge 79 commits into
openshift:mainfrom
vsolanki12:fix-OCPBUGS-86949

Conversation

@vsolanki12

Copy link
Copy Markdown
Contributor

What this PR does / why we need it:

HCCO's reconcileKubeletConfig deletes guest-side ConfigMaps whose source is absent from the HCP namespace. During the immutable-to-mutable migration (OCPBUGS-85778) or any transient API error, the source CM can be briefly absent, causing HCCO to delete the guest copy. NTO then regenerates MachineConfigs without it, triggering an MCO node rollout.

This PR:

  • Guards deletion of mirrored CMs: Skips deletion of guest-side CMs carrying NTOMirroredConfigLabel, since their source is expected to reappear on the next reconcile cycle
  • Adds ownership guard to deleteImmutableConfigMapIfNeeded: Refactors to use DeleteIfNeededWithPredicate with a KubeletConfigConfigMapLabel ownership check, preventing accidental deletion of unrelated immutable ConfigMaps
  • Clears stale fields after predicate-based delete: Resets ResourceVersion and Immutable after DeleteIfNeededWithPredicate to avoid stale-resourceVersion errors and immutable leakage on the subsequent CreateOrUpdate

Which issue(s) this PR fixes:

Fixes OCPBUGS-86949

Special notes for your reviewer:

Checklist:

  • Subject and description added to both, commit and PR.
  • Relevant issues have been referenced.
  • This change includes docs.
  • This change includes unit tests.

cblecker and others added 30 commits June 4, 2026 20:02
Add onUpdate test cases for Services, ControllerAvailabilityPolicy, and
Capabilities immutability to the existing envtest YAML test suites.
CEL XValidation rules enforce these fields at the CRD level, but no
onUpdate test cases previously existed to guard against accidental CEL
marker removal.

Ref: GCP-688
Assisted-by: Claude:claude-opus-4-6
…t webhooks

Add unit tests covering three v1 validation equivalents:

- EnsureCustomTolerations: verify toleration propagation from
  hcp.Spec.Tolerations to pod template in the controlplane-component
  framework (the analogous labels test existed; tolerations were missed)
- ValidateConfigurationStatus: verify HCCO hcpstatus controller reads
  guest Authentication and writes to HCP status
- EnsureGuestWebhooksValidated: verify ensureGuestAdmissionWebhooksAreValid
  matching/deletion logic with a fake client, including the URL allowlist
  for control plane service endpoints

Ref: GCP-688
Assisted-by: Claude:claude-opus-4-6
Port the remaining v1 TestCreateCluster validations to the v2 test
framework as Ginkgo specs, enabling retirement of the e2e-gke CI job.

Framework extensions:
- Add pod exec helpers (test/e2e/v2/util/pod_exec.go) for running
  commands in guest cluster pods
- Add REST config and service domain resolution to test context
- Add centralized test context validators (ValidateHostedCluster,
  ValidateGuestCluster) replacing per-test boilerplate

New specs covering:
- ValidateHostedClusterConditions: validate ~20 HC conditions
- EnsureNoCrashingPods: check container RestartCount with tolerations
- EnsureCAPIFinalizers: validate CAPI component finalizers
- EnsureGuestWebhooksValidated: create and validate webhook deletion
- EnsureAdmissionPolicies: validate 5 VAPs exist and enforce correctly
- EnsureNetworkPolicies: validate pod labels and live curl enforcement
- EnsureKubeAPIDNSNameCustomCert: custom TLS cert integration
- EnsureMetricsForwarderWorking: multi-hop metrics pipeline validation
- ValidateMetrics: operator metrics endpoint scraping
- EnsureNodeTuningOperatorMetricsEndpoint: NTO service/metrics check
- EnsureFeatureGateStatus: guest FeatureGate matches ClusterVersion
- EnsureCustomLabels: sweep HCP pods for custom labels
- EnsureCustomTolerations: sweep HCP pods for custom tolerations
- EnsureAllRoutesUseHCPRouter: sweep routes for HCP router label

Also applies centralized test context validators and BDD naming
conventions to existing test files touched during porting.

Ref: GCP-688
Assisted-by: Claude:claude-opus-4-6
Remove the Informing label from WorkloadRegistryValidationTest and
InfrastructureRegistryValidationTest so that unrecognized pods in both
the control plane and infrastructure namespaces fail CI instead of being
silently skipped. Also applies centralized test context validator and
cleans up redundant comments.

Ref: GCP-688
Assisted-by: Claude:claude-opus-4-6
Move EnsureNoCrashingPodsTest from hosted_cluster_health_test.go to
control_plane_workloads_test.go using the per-workload pattern with
individual It blocks per registered workload.

Remove hosted cluster mutation from EnsureMetricsForwarderWorkingTest
so it follows the non-lifecycle verification pattern: skip if the
metrics forwarding annotation is not already set instead of setting it.

Assisted-by: Claude:claude-opus-4-6
…attern

Move EnsureCustomLabelsTest and EnsureCustomTolerationsTest from
hosted_cluster_compliance_test.go to control_plane_workloads_test.go
using the per-workload pattern with individual It blocks per registered
workload, matching the reviewer-requested convention.

Assisted-by: Claude:claude-opus-4-6
- Wrap final Prometheus metrics query in Eventually to prevent CI flakes
  from scrape timing races
- Port certificate rotation and leader election exception paths from v1
  NoCrashingPods to prevent false test failures
- Add error type discrimination to network policy egress test so it
  catches exec/binary failures rather than silently passing
- Wrap OperatorHub update in Eventually to match the Network update retry
  pattern in the same test
- Add private-router egress check to network policy test for parity with
  v1 coverage
- Replace manual toleration loop with Gomega ContainElement matcher
- Fix context.Background() usage in getWorkloadPods helper
- Change t.Errorf to t.Fatalf in webhook assertion default branches
- Extract expectMetricHasLabel helper to deduplicate metric label checks
- Add ClusterVersion condition propagation tests covering CVO mapping,
  nil Upgradeable defaulting, and empty Reason fallback
- Remove redundant what-comments in infrastructure test
- Fix E2E_SERVICE_DOMAIN env var description accuracy

Assisted-by: Claude:claude-opus-4-6
… helpers

Use ValidateHostedCluster/ValidateHostedClusterClient helpers
instead of inline GetHostedCluster + Expect(hc).NotTo(BeNil()) and
GetHostedClusterClient + Expect(guestClient).NotTo(BeNil()) patterns
across all four PR openshift#8527 lifecycle test files.

Also convert bare defer cleanup blocks to DeferCleanup with
apierrors.IsNotFound guards in nodepool_lifecycle_test.go to match
the established cleanup pattern.

Assisted-by: Claude:claude-opus-4-6
Capture patterns and anti-patterns identified during PR openshift#8511 review:

- §13: Non-lifecycle tests must not mutate the hosted cluster
- §14: Per-workload test placement in control_plane_workloads_test.go
- §15: IPv6-safe URL construction via net.JoinHostPort
- §16: Vacuous pass prevention by asserting non-empty lists
- Gotcha: MicroShift guards don't apply to v2 e2e tests
- Architecture: document util/, lifecycle/, cmd/ packages
- Fix envtest version range from 1.31-1.35 to 1.30-1.35

Assisted-by: Claude:claude-opus-4-6
Disable Docstrings, MicroShift, SNO, and OTE pre-merge checks that
are inherited from the org but do not apply to HyperShift.

Assisted-by: Claude:claude-opus-4-6
- Move workload.Name from It() titles into Context() blocks across all
  per-workload test loops to eliminate dynamic test names
- Split EnsureAdmissionPoliciesTest into 4 separate It blocks with
  Ordered + BeforeAll for shared setup
- Add assertion context to bare Expect(err) in payload arch test
- Update AGENTS.md section 14 example to match Context() pattern

Assisted-by: Claude:claude-opus-4-6
Weekly dependabot dependency consolidation.
Vendor updates for root module dependency changes.
Additional generated file updates from dependency changes.
…amping

Add unit and E2E tests for OCPBUGS-78152 / CNTRLPLANE-3040 to prevent
CAS from accumulating replica decrements on paused MachineDeployments.

Unit tests: 9 table-driven cases covering replica clamping for both
MachineDeployment and MachineSet upgrade types, including non-AWS
effectiveMin=1 enforcement.

E2E test: verifies CAS respects pause annotation by polling CAS logs
for paused node group detection, with deferred unpause cleanup.

Extracts shared helpers and constants to reduce duplication across
autoscaling tests.

Refs: OCPBUGS-78152, CNTRLPLANE-3040

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Juan Manuel Parrilla Madrid <jparrill@redhat.com>
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 6.0.0 to 6.0.1.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
-
[Commits](codecov/codecov-action@57e3a13...e79a696
354)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-version: 6.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
The webhook server requires TLS certs on disk before it can start
listening. Previously, certs were only created via `hypershift install`
manifests, meaning the operator would fail to start if the serving cert
secret was not yet present like it is the case when running `hyperhsift
install render` without the `--render-sensitive` flag.

This is used in a scenario where the rendered manifests are pushed to a
gitops workflow and, therefore, secrets can not be rendered.

By adding bootstrap cert generation at startup, the operator is self-sufficient:
if the secret exists, the volume mount delivers certs normally; if it is
missing or empty, certs are generated, persisted, and written to disk.
The secret volume is now marked optional so the pod can start without it.

Signed-off-by: Borja Clemente <bclement@redhat.com>
Test the new certs secret bootstrapping logic in the
hypershift-operator.

Signed-off-by: Borja Clemente <bclement@redhat.com>
Cert secret bootstrapping now lives in the hypershift_operator and the
CLI no longer needs to create the secrets.

Signed-off-by: Borja Clemente <bclement@redhat.com>
…al-dns-validation"

This reverts commit 1d34880, reversing
changes made to c23dbb8.
The openshift-oauth-apiserver was started with --tls-min-version
but without --tls-cipher-suites, unlike standalone OCP and other
CPO-managed components (KCM, kube-scheduler).

This adds the cipher suites arg using config.CipherSuites(),
following the same pattern as kube-controller-manager.
When ConnectDirectlyToCloudAPIs is enabled, the konnectivity sidecar's
dialDirectWithProxy() reads HTTPS_PROXY from the process environment to
route cloud API calls through the management cluster's outbound proxy.
The sidecar container spec was missing these env vars, so the proxy
lookup returned empty and direct connections failed on clusters that
require an outbound proxy.

Conditionally call proxy.SetEnvVars() when building the konnectivity
sidecar container spec, scoped to containers where
ConnectDirectlyToCloudAPIs is true (HTTPS or Socks5 mode).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
ARC runner containers use dash as default shell and don't have gh CLI
installed. Use bash explicitly for the Claude installer and curl for
the GitHub API call.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
ARC runner containers use dash as default shell and don't have gh CLI
installed. Use bash explicitly for the Claude installer and curl for
the GitHub API call.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
ARC runner containers use dash as default shell and don't have gh CLI
installed. Use bash explicitly for the Claude installer and curl for
the GitHub API call.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The container: directive requires containerMode on ARC runners which
needs anyuid SCC and a long-running process. Replace it by installing
Claude and cloning ai-helpers directly in workflow steps.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace fuse-overlayfs with Go 1.24+'s GOCACHEPROG protocol for serving
the EFS-backed Go build cache. fuse-overlayfs required user namespaces
(hostUsers: false) which fails on EFS because NFS does not support
idmapped mounts on RHEL 9's kernel 5.14.

gocacheprog is a small Go program (~180 lines, stdlib only) that
implements the GOCACHEPROG JSON-over-stdin/stdout protocol. GET requests
read from the read-only EFS cache first, then fall back to a writable
local directory. PUT requests write to the local directory only. This
gives zero-copy cache reads with no special SCC, no user namespaces,
and no FUSE — works with the default restricted-v2 SCC.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add sync.WaitGroup to drain in-flight goroutines before exit
- Guard actionFile/outputFile against empty IDs to prevent panic
- Check errors from os.MkdirAll in handlePut
- Use req.BodySize instead of len(req.Body) for action entry size
- Move mkdir inside gocacheprog availability check in action.yaml
- Remove fuse-overlayfs from Dockerfile (no longer needed)
- Add comprehensive unit tests with race detection coverage

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The contrib/ directory is excluded by .dockerignore but the runner
Dockerfile needs contrib/ci/gocacheprog/ in its build context.

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

Copy link
Copy Markdown
Contributor

Pipeline controller notification
This repo is configured to use the pipeline controller. Second-stage tests will be triggered either automatically or after lgtm label is added, depending on the repository configuration. The pipeline controller will automatically detect which contexts are required and will utilize /test Prow commands to trigger the second stage.

For optional jobs, comment /test ? to see a list of all defined jobs. To trigger manually all jobs from second stage use /pipeline required command.

This repository is configured in: LGTM mode

@openshift-ci-robot openshift-ci-robot added jira/severity-low Referenced Jira bug's severity is low for the branch this PR is targeting. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. jira/valid-bug Indicates that a referenced Jira bug is valid for the branch this PR is targeting. labels Jun 4, 2026
@openshift-ci-robot

Copy link
Copy Markdown

@vsolanki12: This pull request references Jira Issue OCPBUGS-86949, which is valid. The bug has been moved to the POST state.

3 validation(s) were run on this bug
  • bug is open, matching expected state (open)
  • bug target version (5.0.0) matches configured target version for branch (5.0.0)
  • bug is in the state ASSIGNED, which is one of the valid states (NEW, ASSIGNED, POST)

The bug has been updated to refer to the pull request using the external bug tracker.

Details

In response to this:

What this PR does / why we need it:

HCCO's reconcileKubeletConfig deletes guest-side ConfigMaps whose source is absent from the HCP namespace. During the immutable-to-mutable migration (OCPBUGS-85778) or any transient API error, the source CM can be briefly absent, causing HCCO to delete the guest copy. NTO then regenerates MachineConfigs without it, triggering an MCO node rollout.

This PR:

  • Guards deletion of mirrored CMs: Skips deletion of guest-side CMs carrying NTOMirroredConfigLabel, since their source is expected to reappear on the next reconcile cycle
  • Adds ownership guard to deleteImmutableConfigMapIfNeeded: Refactors to use DeleteIfNeededWithPredicate with a KubeletConfigConfigMapLabel ownership check, preventing accidental deletion of unrelated immutable ConfigMaps
  • Clears stale fields after predicate-based delete: Resets ResourceVersion and Immutable after DeleteIfNeededWithPredicate to avoid stale-resourceVersion errors and immutable leakage on the subsequent CreateOrUpdate

Which issue(s) this PR fixes:

Fixes OCPBUGS-86949

Special notes for your reviewer:

Checklist:

  • Subject and description added to both, commit and PR.
  • Relevant issues have been referenced.
  • This change includes docs.
  • This change includes unit tests.

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 commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Too many files!

This PR contains 231 files, which is 81 over the limit of 150.

To get a review, narrow the scope:
• coderabbit review --type committed # exclude uncommitted changes
• coderabbit review --dir # limit to a subdirectory
• coderabbit review --base # compare against a closer base

⚙️ Run configuration

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

Review profile: CHILL

Plan: Enterprise

Run ID: ba2d910a-4651-4ee9-b7f5-110b670dbe0d

📥 Commits

Reviewing files that changed from the base of the PR and between 25817d4 and ad0fef1.

⛔ Files ignored due to path filters (63)
  • api/hypershift/v1beta1/zz_generated.deepcopy.go is excluded by !**/zz_generated*.go, !**/zz_generated*
  • api/hypershift/v1beta1/zz_generated.featuregated-crd-manifests/hostedclusters.hypershift.openshift.io/AAA_ungated.yaml is excluded by !**/zz_generated.featuregated-crd-manifests/**
  • api/hypershift/v1beta1/zz_generated.featuregated-crd-manifests/hostedclusters.hypershift.openshift.io/ClusterUpdateAcceptRisks.yaml is excluded by !**/zz_generated.featuregated-crd-manifests/**
  • api/hypershift/v1beta1/zz_generated.featuregated-crd-manifests/hostedclusters.hypershift.openshift.io/ClusterVersionOperatorConfiguration.yaml is excluded by !**/zz_generated.featuregated-crd-manifests/**
  • api/hypershift/v1beta1/zz_generated.featuregated-crd-manifests/hostedclusters.hypershift.openshift.io/ExternalOIDC.yaml is excluded by !**/zz_generated.featuregated-crd-manifests/**
  • api/hypershift/v1beta1/zz_generated.featuregated-crd-manifests/hostedclusters.hypershift.openshift.io/ExternalOIDCWithUIDAndExtraClaimMappings.yaml is excluded by !**/zz_generated.featuregated-crd-manifests/**
  • api/hypershift/v1beta1/zz_generated.featuregated-crd-manifests/hostedclusters.hypershift.openshift.io/ExternalOIDCWithUpstreamParity.yaml is excluded by !**/zz_generated.featuregated-crd-manifests/**
  • api/hypershift/v1beta1/zz_generated.featuregated-crd-manifests/hostedclusters.hypershift.openshift.io/GCPPlatform.yaml is excluded by !**/zz_generated.featuregated-crd-manifests/**
  • api/hypershift/v1beta1/zz_generated.featuregated-crd-manifests/hostedclusters.hypershift.openshift.io/HCPEtcdBackup.yaml is excluded by !**/zz_generated.featuregated-crd-manifests/**
  • api/hypershift/v1beta1/zz_generated.featuregated-crd-manifests/hostedclusters.hypershift.openshift.io/HyperShiftOnlyDynamicResourceAllocation.yaml is excluded by !**/zz_generated.featuregated-crd-manifests/**
  • api/hypershift/v1beta1/zz_generated.featuregated-crd-manifests/hostedclusters.hypershift.openshift.io/ImageStreamImportMode.yaml is excluded by !**/zz_generated.featuregated-crd-manifests/**
  • api/hypershift/v1beta1/zz_generated.featuregated-crd-manifests/hostedclusters.hypershift.openshift.io/KMSEncryptionProvider.yaml is excluded by !**/zz_generated.featuregated-crd-manifests/**
  • api/hypershift/v1beta1/zz_generated.featuregated-crd-manifests/hostedclusters.hypershift.openshift.io/OpenStack.yaml is excluded by !**/zz_generated.featuregated-crd-manifests/**
  • api/hypershift/v1beta1/zz_generated.featuregated-crd-manifests/hostedclusters.hypershift.openshift.io/TLSAdherence.yaml is excluded by !**/zz_generated.featuregated-crd-manifests/**
  • api/hypershift/v1beta1/zz_generated.featuregated-crd-manifests/hostedcontrolplanes.hypershift.openshift.io/AAA_ungated.yaml is excluded by !**/zz_generated.featuregated-crd-manifests/**
  • api/hypershift/v1beta1/zz_generated.featuregated-crd-manifests/hostedcontrolplanes.hypershift.openshift.io/ClusterUpdateAcceptRisks.yaml is excluded by !**/zz_generated.featuregated-crd-manifests/**
  • api/hypershift/v1beta1/zz_generated.featuregated-crd-manifests/hostedcontrolplanes.hypershift.openshift.io/ClusterVersionOperatorConfiguration.yaml is excluded by !**/zz_generated.featuregated-crd-manifests/**
  • api/hypershift/v1beta1/zz_generated.featuregated-crd-manifests/hostedcontrolplanes.hypershift.openshift.io/ExternalOIDC.yaml is excluded by !**/zz_generated.featuregated-crd-manifests/**
  • api/hypershift/v1beta1/zz_generated.featuregated-crd-manifests/hostedcontrolplanes.hypershift.openshift.io/ExternalOIDCWithUIDAndExtraClaimMappings.yaml is excluded by !**/zz_generated.featuregated-crd-manifests/**
  • api/hypershift/v1beta1/zz_generated.featuregated-crd-manifests/hostedcontrolplanes.hypershift.openshift.io/ExternalOIDCWithUpstreamParity.yaml is excluded by !**/zz_generated.featuregated-crd-manifests/**
  • api/hypershift/v1beta1/zz_generated.featuregated-crd-manifests/hostedcontrolplanes.hypershift.openshift.io/GCPPlatform.yaml is excluded by !**/zz_generated.featuregated-crd-manifests/**
  • api/hypershift/v1beta1/zz_generated.featuregated-crd-manifests/hostedcontrolplanes.hypershift.openshift.io/HCPEtcdBackup.yaml is excluded by !**/zz_generated.featuregated-crd-manifests/**
  • api/hypershift/v1beta1/zz_generated.featuregated-crd-manifests/hostedcontrolplanes.hypershift.openshift.io/HyperShiftOnlyDynamicResourceAllocation.yaml is excluded by !**/zz_generated.featuregated-crd-manifests/**
  • api/hypershift/v1beta1/zz_generated.featuregated-crd-manifests/hostedcontrolplanes.hypershift.openshift.io/ImageStreamImportMode.yaml is excluded by !**/zz_generated.featuregated-crd-manifests/**
  • api/hypershift/v1beta1/zz_generated.featuregated-crd-manifests/hostedcontrolplanes.hypershift.openshift.io/KMSEncryptionProvider.yaml is excluded by !**/zz_generated.featuregated-crd-manifests/**
  • api/hypershift/v1beta1/zz_generated.featuregated-crd-manifests/hostedcontrolplanes.hypershift.openshift.io/OpenStack.yaml is excluded by !**/zz_generated.featuregated-crd-manifests/**
  • api/hypershift/v1beta1/zz_generated.featuregated-crd-manifests/hostedcontrolplanes.hypershift.openshift.io/TLSAdherence.yaml is excluded by !**/zz_generated.featuregated-crd-manifests/**
  • client/applyconfiguration/hypershift/v1beta1/ovnipv6config.go is excluded by !client/**
  • client/applyconfiguration/hypershift/v1beta1/ovnkubernetesconfig.go is excluded by !client/**
  • client/applyconfiguration/utils.go is excluded by !client/**
  • cmd/install/assets/crds/hypershift-operator/tests/hostedclusters.hypershift.openshift.io/stable.hostedclusters.azure.testsuite.yaml is excluded by !cmd/install/assets/**/*.yaml
  • cmd/install/assets/crds/hypershift-operator/tests/hostedclusters.hypershift.openshift.io/stable.hostedclusters.capabilities.testsuite.yaml is excluded by !cmd/install/assets/**/*.yaml
  • cmd/install/assets/crds/hypershift-operator/tests/hostedclusters.hypershift.openshift.io/stable.hostedclusters.networking.testsuite.yaml is excluded by !cmd/install/assets/**/*.yaml
  • cmd/install/assets/crds/hypershift-operator/tests/hostedclusters.hypershift.openshift.io/stable.hostedclusters.services.testsuite.yaml is excluded by !cmd/install/assets/**/*.yaml
  • cmd/install/assets/crds/hypershift-operator/tests/hostedclusters.hypershift.openshift.io/stable.hostedclusters.validation.testsuite.yaml is excluded by !cmd/install/assets/**/*.yaml
  • cmd/install/assets/crds/hypershift-operator/zz_generated.crd-manifests/hostedclusters-Hypershift-CustomNoUpgrade.crd.yaml is excluded by !**/zz_generated.crd-manifests/**, !cmd/install/assets/**/*.yaml
  • cmd/install/assets/crds/hypershift-operator/zz_generated.crd-manifests/hostedclusters-Hypershift-Default.crd.yaml is excluded by !**/zz_generated.crd-manifests/**, !cmd/install/assets/**/*.yaml
  • cmd/install/assets/crds/hypershift-operator/zz_generated.crd-manifests/hostedclusters-Hypershift-TechPreviewNoUpgrade.crd.yaml is excluded by !**/zz_generated.crd-manifests/**, !cmd/install/assets/**/*.yaml
  • cmd/install/assets/crds/hypershift-operator/zz_generated.crd-manifests/hostedcontrolplanes-Hypershift-CustomNoUpgrade.crd.yaml is excluded by !**/zz_generated.crd-manifests/**, !cmd/install/assets/**/*.yaml
  • cmd/install/assets/crds/hypershift-operator/zz_generated.crd-manifests/hostedcontrolplanes-Hypershift-Default.crd.yaml is excluded by !**/zz_generated.crd-manifests/**, !cmd/install/assets/**/*.yaml
  • cmd/install/assets/crds/hypershift-operator/zz_generated.crd-manifests/hostedcontrolplanes-Hypershift-TechPreviewNoUpgrade.crd.yaml is excluded by !**/zz_generated.crd-manifests/**, !cmd/install/assets/**/*.yaml
  • control-plane-operator/controllers/hostedcontrolplane/infra/testdata/zz_fixture_TestReconcileInfrastructure_AWS_PublicAndPrivate_Route.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/infra/testdata/zz_fixture_TestReconcileInfrastructure_AWS_Public_Route.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/aws-node-termination-handler/AROSwift/zz_fixture_TestControlPlaneComponents_aws_node_termination_handler_deployment.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/aws-node-termination-handler/GCP/zz_fixture_TestControlPlaneComponents_aws_node_termination_handler_deployment.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/aws-node-termination-handler/IBMCloud/zz_fixture_TestControlPlaneComponents_aws_node_termination_handler_deployment.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/aws-node-termination-handler/TechPreviewNoUpgrade/zz_fixture_TestControlPlaneComponents_aws_node_termination_handler_deployment.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/aws-node-termination-handler/zz_fixture_TestControlPlaneComponents_aws_node_termination_handler_deployment.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/openshift-oauth-apiserver/AROSwift/zz_fixture_TestControlPlaneComponents_openshift_oauth_apiserver_deployment.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/openshift-oauth-apiserver/GCP/zz_fixture_TestControlPlaneComponents_openshift_oauth_apiserver_deployment.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/openshift-oauth-apiserver/IBMCloud/zz_fixture_TestControlPlaneComponents_openshift_oauth_apiserver_deployment.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/openshift-oauth-apiserver/TechPreviewNoUpgrade/zz_fixture_TestControlPlaneComponents_openshift_oauth_apiserver_deployment.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/openshift-oauth-apiserver/zz_fixture_TestControlPlaneComponents_openshift_oauth_apiserver_deployment.yaml is excluded by !**/testdata/**
  • docs/content/reference/aggregated-docs.md is excluded by !docs/content/reference/aggregated-docs.md
  • docs/content/reference/api.md is excluded by !docs/content/reference/api.md
  • go.sum is excluded by !**/*.sum
  • vendor/github.com/openshift/hypershift/api/hypershift/v1beta1/hostedcluster_types.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/openshift/hypershift/api/hypershift/v1beta1/operator.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/openshift/hypershift/api/hypershift/v1beta1/zz_generated.deepcopy.go is excluded by !vendor/**, !**/vendor/**, !**/zz_generated*.go, !**/zz_generated*
  • vendor/google.golang.org/api/compute/v1/compute-api.json is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/api/compute/v1/compute-gen.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/api/internal/version.go is excluded by !vendor/**, !**/vendor/**
  • vendor/modules.txt is excluded by !vendor/**, !**/vendor/**
📒 Files selected for processing (231)
  • .claude/skills/validate-pr-override-images/SKILL.md
  • .claude/skills/validate-pr-override-images/validate-overrides.sh
  • .claude/skills/validate-pr-override-images/verify-pr-in-image.sh
  • .coderabbit.yaml
  • .dockerignore
  • .github/actions/warm-go-cache/action.yaml
  • .github/workflows/address-review-comments.yaml
  • .github/workflows/envtest-kube-reusable.yaml
  • .github/workflows/envtest-ocp-reusable.yaml
  • .github/workflows/gocacheprog-test-reusable.yaml
  • .github/workflows/gocacheprog-test.yaml
  • .github/workflows/lint-reusable.yaml
  • .github/workflows/test-reusable.yaml
  • .github/workflows/validate-cpo-overrides.yaml
  • .github/workflows/verify-reusable.yaml
  • .golangci.yml
  • .tekton/hypershift-gh-actions-runner-pull-request.yaml
  • .tekton/hypershift-gh-actions-runner-push.yaml
  • AGENTS.md
  • Dockerfile.e2e
  • Dockerfile.github-actions-runner
  • api/hypershift/v1beta1/hostedcluster_types.go
  • api/hypershift/v1beta1/operator.go
  • availability-prober/availability_prober.go
  • cmd/bastion/aws/create.go
  • cmd/cluster/azure/create.go
  • cmd/cluster/azure/create_test.go
  • cmd/cluster/core/create.go
  • cmd/cluster/powervs/create.go
  • cmd/infra/aws/iam.go
  • cmd/infra/aws/iam_policies.go
  • cmd/infra/aws/route53.go
  • cmd/infra/aws/route53_test.go
  • cmd/infra/aws/util/errors.go
  • cmd/infra/aws/util/errors_test.go
  • cmd/infra/azure/create_iam.go
  • cmd/infra/azure/rbac.go
  • cmd/infra/powervs/create.go
  • cmd/infra/powervs/destroy.go
  • cmd/install/assets/hypershift_operator.go
  • cmd/install/install.go
  • cmd/install/install_test.go
  • cmd/kubeconfig/create.go
  • cmd/nodepool/core/create.go
  • cmd/nodepool/core/create_test.go
  • codecov.yml
  • contrib/ci/gocacheprog/go.mod
  • contrib/ci/gocacheprog/main.go
  • contrib/ci/gocacheprog/main_test.go
  • contrib/konflux/cpo_4_21_stream.yaml
  • contrib/konflux/cpo_4_22_stream.yaml
  • control-plane-operator/AGENTS.md
  • control-plane-operator/controllers/azureprivatelinkservice/controller.go
  • control-plane-operator/controllers/azureprivatelinkservice/controller_test.go
  • control-plane-operator/controllers/gcpprivateserviceconnect/dns.go
  • control-plane-operator/controllers/gcpprivateserviceconnect/dns_test.go
  • control-plane-operator/controllers/gcpprivateserviceconnect/psc_endpoint_controller.go
  • control-plane-operator/controllers/gcpprivateserviceconnect/psc_endpoint_controller_test.go
  • control-plane-operator/controllers/hostedcontrolplane/csi/kubevirt/kubevirt.go
  • control-plane-operator/controllers/hostedcontrolplane/csi/kubevirt/kubevirt_test.go
  • control-plane-operator/controllers/hostedcontrolplane/hostedcontrolplane_controller.go
  • control-plane-operator/controllers/hostedcontrolplane/hostedcontrolplane_controller_test.go
  • control-plane-operator/controllers/hostedcontrolplane/infra/infra_test.go
  • control-plane-operator/controllers/hostedcontrolplane/ingress/router.go
  • control-plane-operator/controllers/hostedcontrolplane/ingress/router_test.go
  • control-plane-operator/controllers/hostedcontrolplane/kas/auth.go
  • control-plane-operator/controllers/hostedcontrolplane/kas/auth_test.go
  • control-plane-operator/controllers/hostedcontrolplane/kas_pki_setup.go
  • control-plane-operator/controllers/hostedcontrolplane/oauth/idp_convert.go
  • control-plane-operator/controllers/hostedcontrolplane/oauth/idp_convert_test.go
  • control-plane-operator/controllers/hostedcontrolplane/v2/assets/assets.go
  • control-plane-operator/controllers/hostedcontrolplane/v2/assets/aws-node-termination-handler/deployment.yaml
  • control-plane-operator/controllers/hostedcontrolplane/v2/assets/karpenter-operator/role.yaml
  • control-plane-operator/controllers/hostedcontrolplane/v2/cloud_controller_manager/kubevirt/config.go
  • control-plane-operator/controllers/hostedcontrolplane/v2/cloud_controller_manager/powervs/config.go
  • control-plane-operator/controllers/hostedcontrolplane/v2/cno/deployment_init_container_test.go
  • control-plane-operator/controllers/hostedcontrolplane/v2/etcd/statefulset.go
  • control-plane-operator/controllers/hostedcontrolplane/v2/ignitionserver/pki.go
  • control-plane-operator/controllers/hostedcontrolplane/v2/kas/auth.go
  • control-plane-operator/controllers/hostedcontrolplane/v2/kas/auth_test.go
  • control-plane-operator/controllers/hostedcontrolplane/v2/kas/deployment.go
  • control-plane-operator/controllers/hostedcontrolplane/v2/kas/kubeconfig.go
  • control-plane-operator/controllers/hostedcontrolplane/v2/kas/oauth.go
  • control-plane-operator/controllers/hostedcontrolplane/v2/kas/oauth_test.go
  • control-plane-operator/controllers/hostedcontrolplane/v2/kas/secretencryption.go
  • control-plane-operator/controllers/hostedcontrolplane/v2/kas/secretencryption_test.go
  • control-plane-operator/controllers/hostedcontrolplane/v2/oauth/deployment.go
  • control-plane-operator/controllers/hostedcontrolplane/v2/oauth/idp_convert.go
  • control-plane-operator/controllers/hostedcontrolplane/v2/oauth/idp_convert_test.go
  • control-plane-operator/controllers/hostedcontrolplane/v2/oauth_apiserver/deployment.go
  • control-plane-operator/controllers/hostedcontrolplane/v2/oauth_apiserver/deployment_test.go
  • control-plane-operator/controllers/hostedcontrolplane/v2/olm/catalogs/deployment.go
  • control-plane-operator/endpoint-resolver/server_test.go
  • control-plane-operator/hostedclusterconfigoperator/cmd.go
  • control-plane-operator/hostedclusterconfigoperator/controllers/hcpstatus/hcpstatus.go
  • control-plane-operator/hostedclusterconfigoperator/controllers/hcpstatus/hcpstatus_test.go
  • control-plane-operator/hostedclusterconfigoperator/controllers/resources/ingress/reconcile.go
  • control-plane-operator/hostedclusterconfigoperator/controllers/resources/ingress/reconcile_test.go
  • control-plane-operator/hostedclusterconfigoperator/controllers/resources/kas/admissionpolicies.go
  • control-plane-operator/hostedclusterconfigoperator/controllers/resources/kas/admissionpolicies_test.go
  • control-plane-operator/hostedclusterconfigoperator/controllers/resources/kubeadminpassword/reconcile.go
  • control-plane-operator/hostedclusterconfigoperator/controllers/resources/kubeadminpassword/reconcile_test.go
  • control-plane-operator/hostedclusterconfigoperator/controllers/resources/network/reconcile.go
  • control-plane-operator/hostedclusterconfigoperator/controllers/resources/network/reconcile_test.go
  • control-plane-operator/hostedclusterconfigoperator/controllers/resources/registry/admissionpolicies.go
  • control-plane-operator/hostedclusterconfigoperator/controllers/resources/registry/admissionpolicies_test.go
  • control-plane-operator/hostedclusterconfigoperator/controllers/resources/resources.go
  • control-plane-operator/hostedclusterconfigoperator/controllers/resources/resources_test.go
  • control-plane-operator/hostedclusterconfigoperator/operator/config.go
  • control-plane-operator/metrics-proxy/proxy_test.go
  • control-plane-pki-operator/certificatesigningcontroller/certificatesigningcontroller.go
  • control-plane-pki-operator/certificatesigningcontroller/certificatesigningcontroller_test.go
  • control-plane-pki-operator/targetconfigcontroller/targetconfigcontroller.go
  • control-plane-pki-operator/topology/detector.go
  • docs/content/how-to/automated-machine-management/spot-instances.md
  • docs/content/how-to/azure/azure-workload-identity-setup.md
  • docs/content/how-to/azure/create-iam-separately.md
  • docs/content/how-to/azure/create-self-managed-azure-cluster.md
  • docs/content/how-to/azure/deploy-azure-private-clusters.md
  • docs/content/how-to/azure/index.md
  • docs/content/how-to/azure/self-managed-azure-index.md
  • docs/content/reference/infrastructure/azure-self-managed.md
  • docs/mkdocs.yml
  • etcd-backup/etcdbackup.go
  • etcd-recovery/etcdrecovery.go
  • go.mod
  • hack/github-actions-runner/cache-warming-cronjob.yaml
  • hack/github-actions-runner/values.yaml
  • hypershift-ci-python/requirements.txt
  • hypershift-operator/controllers/etcdbackup/reconciler.go
  • hypershift-operator/controllers/etcdbackup/reconciler_test.go
  • hypershift-operator/controllers/hostedcluster/hostedcluster_controller.go
  • hypershift-operator/controllers/hostedcluster/hostedcluster_controller_test.go
  • hypershift-operator/controllers/hostedcluster/hostedcluster_webhook.go
  • hypershift-operator/controllers/hostedcluster/internal/platform/kubevirt/kubevirt_test.go
  • hypershift-operator/controllers/hostedcluster/internal/proxy/validation.go
  • hypershift-operator/controllers/hostedcluster/karpenter.go
  • hypershift-operator/controllers/hostedcluster/karpenter_test.go
  • hypershift-operator/controllers/nodepool/apiserver-haproxy/haproxy.go
  • hypershift-operator/controllers/nodepool/apiserver-haproxy/haproxy_test.go
  • hypershift-operator/controllers/nodepool/aws_test.go
  • hypershift-operator/controllers/nodepool/capi_test.go
  • hypershift-operator/controllers/nodepool/conditions.go
  • hypershift-operator/controllers/nodepool/config.go
  • hypershift-operator/controllers/nodepool/nodepool_controller.go
  • hypershift-operator/controllers/nodepool/nto.go
  • hypershift-operator/controllers/platform/aws/controller.go
  • hypershift-operator/controllers/platform/gcp/privateserviceconnect_controller.go
  • hypershift-operator/controllers/platform/gcp/privateserviceconnect_controller_test.go
  • hypershift-operator/controllers/uwmtelemetry/uwm_telemetry.go
  • hypershift-operator/controllers/uwmtelemetry/uwm_telemetry_test.go
  • hypershift-operator/controllers/webhookcerts/webhookcerts_controller.go
  • hypershift-operator/controllers/webhookcerts/webhookcerts_controller_test.go
  • hypershift-operator/controlplaneoperator-overrides/assets/overrides.yaml
  • hypershift-operator/main.go
  • ignition-server/cmd/start.go
  • ignition-server/controllers/cache.go
  • ignition-server/controllers/local_ignitionprovider.go
  • ignition-server/controllers/tokensecret_controller.go
  • karpenter-operator/controllers/karpenter/karpenter_controller.go
  • karpenter-operator/controllers/karpenter/karpenter_controller_test.go
  • karpenter-operator/controllers/karpenter/machine_approver.go
  • karpenter-operator/controllers/nodeclass/ec2_nodeclass_controller.go
  • karpenter-operator/main.go
  • konnectivity-socks5-proxy/http_proxy.go
  • kubernetes-default-proxy/kubernetes_default_proxy.go
  • kubevirtexternalinfra/externalinfra.go
  • pkg/etcdcli/etcdcli.go
  • sharedingress-config-generator/controller.go
  • sharedingress-config-generator/controller_test.go
  • sharedingress-config-generator/haproxy_client.go
  • support/azureutil/azureutil.go
  • support/controlplane-component/controlplane-component.go
  • support/controlplane-component/controlplane-component_test.go
  • support/controlplane-component/konnectivity-container.go
  • support/controlplane-component/konnectivity-container_test.go
  • support/controlplane-component/kubeconfig.go
  • support/controlplane-component/token-minter-container.go
  • support/gcpapi/gcs_client.go
  • support/globalconfig/proxy.go
  • support/konnectivityproxy/dialer.go
  • support/konnectivityproxy/dialer_test.go
  • support/konnectivityproxy/proxy_dialer.go
  • support/releaseinfo/registryclient/client.go
  • support/releaseinfo/releaseinfo.go
  • support/releaseinfo/releaseinfo_test.go
  • support/supportedversion/version.go
  • support/supportedversion/version_test.go
  • support/thirdparty/docker/pkg/archive/archive.go
  • support/thirdparty/library-go/pkg/image/dockerv1client/types.go
  • support/thirdparty/library-go/pkg/image/registryclient/client.go
  • support/thirdparty/oc/pkg/cli/image/manifest/manifest.go
  • support/util/util.go
  • support/validations/authentication.go
  • sync-fg-configmap/update.go
  • test/e2e/autoscaling_test.go
  • test/e2e/karpenter_test.go
  • test/e2e/util/aws.go
  • test/e2e/util/dump/dump.go
  • test/e2e/util/dump/journals.go
  • test/e2e/util/external_oidc.go
  • test/e2e/util/fixture.go
  • test/e2e/util/generate.go
  • test/e2e/util/node.go
  • test/e2e/util/oauth.go
  • test/e2e/util/reqserving/verifycp.go
  • test/e2e/util/reqserving/verifypods.go
  • test/e2e/util/reqserving/vpa.go
  • test/e2e/util/reqserving/waitfor.go
  • test/e2e/util/sharedoidc.go
  • test/e2e/util/util.go
  • test/e2e/util/version.go
  • test/e2e/v2/AGENTS.md
  • test/e2e/v2/internal/env_vars.go
  • test/e2e/v2/internal/test_context.go
  • test/e2e/v2/tests/backup_restore_test.go
  • test/e2e/v2/tests/control_plane_infrastructure_test.go
  • test/e2e/v2/tests/control_plane_upgrade_test.go
  • test/e2e/v2/tests/control_plane_workloads_test.go
  • test/e2e/v2/tests/etcd_chaos_test.go
  • test/e2e/v2/tests/hosted_cluster_ccm_test.go
  • test/e2e/v2/tests/hosted_cluster_compliance_test.go
  • test/e2e/v2/tests/hosted_cluster_dns_test.go
  • test/e2e/v2/tests/hosted_cluster_health_test.go
  • test/e2e/v2/tests/hosted_cluster_image_registry_test.go
  • test/e2e/v2/tests/hosted_cluster_metrics_test.go
  • test/e2e/v2/tests/hosted_cluster_security_test.go
  • test/e2e/v2/tests/nodepool_autoscaling_test.go
  • test/e2e/v2/tests/nodepool_lifecycle_test.go
  • test/e2e/v2/util/pod_exec.go
  • test/integration/framework/hosted-cluster.go

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ 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 and usage tips.

@openshift-ci openshift-ci Bot added do-not-merge/needs-area do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. labels Jun 4, 2026
@openshift-ci

openshift-ci Bot commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

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

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

openshift-ci Bot commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

PR needs rebase.

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.

@vsolanki12 vsolanki12 closed this Jun 4, 2026
@openshift-ci-robot

Copy link
Copy Markdown

@vsolanki12: This pull request references Jira Issue OCPBUGS-86949. The bug has been updated to no longer refer to the pull request using the external bug tracker. All external bug links have been closed. The bug has been moved to the NEW state.

Details

In response to this:

What this PR does / why we need it:

HCCO's reconcileKubeletConfig deletes guest-side ConfigMaps whose source is absent from the HCP namespace. During the immutable-to-mutable migration (OCPBUGS-85778) or any transient API error, the source CM can be briefly absent, causing HCCO to delete the guest copy. NTO then regenerates MachineConfigs without it, triggering an MCO node rollout.

This PR:

  • Guards deletion of mirrored CMs: Skips deletion of guest-side CMs carrying NTOMirroredConfigLabel, since their source is expected to reappear on the next reconcile cycle
  • Adds ownership guard to deleteImmutableConfigMapIfNeeded: Refactors to use DeleteIfNeededWithPredicate with a KubeletConfigConfigMapLabel ownership check, preventing accidental deletion of unrelated immutable ConfigMaps
  • Clears stale fields after predicate-based delete: Resets ResourceVersion and Immutable after DeleteIfNeededWithPredicate to avoid stale-resourceVersion errors and immutable leakage on the subsequent CreateOrUpdate

Which issue(s) this PR fixes:

Fixes OCPBUGS-86949

Special notes for your reviewer:

Checklist:

  • Subject and description added to both, commit and PR.
  • Relevant issues have been referenced.
  • This change includes docs.
  • This change includes unit tests.

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.

@openshift-ci openshift-ci Bot added the area/ai Indicates the PR includes changes related to AI - Claude agents, Cursor rules, etc. label Jun 4, 2026
@openshift-ci

openshift-ci Bot commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: vsolanki12
Once this PR has been reviewed and has the lgtm label, please assign enxebre for approval. For more information see the Code Review Process.

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

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

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

@openshift-ci openshift-ci Bot added area/api Indicates the PR includes changes for the API area/ci-tooling Indicates the PR includes changes for CI or tooling area/cli Indicates the PR includes changes for CLI area/control-plane-operator Indicates the PR includes changes for the control plane operator - in an OCP release area/control-plane-pki-operator Indicates the PR includes changes for the control plane PKI operator - in an OCP release area/documentation Indicates the PR includes changes for documentation area/hypershift-operator Indicates the PR includes changes for the hypershift operator and API - outside an OCP release area/karpenter-operator Indicates the PR includes changes related to the Karpenter operator area/platform/aws PR/issue for AWS (AWSPlatform) platform area/platform/azure PR/issue for Azure (AzurePlatform) platform area/platform/gcp PR/issue for GCP (GCPPlatform) platform area/platform/kubevirt PR/issue for KubeVirt (KubevirtPlatform) platform area/platform/powervs PR/issue for PowerVS (PowerVSPlatform) platform area/testing Indicates the PR includes changes for e2e testing and removed do-not-merge/needs-area labels Jun 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/ai Indicates the PR includes changes related to AI - Claude agents, Cursor rules, etc. area/api Indicates the PR includes changes for the API area/ci-tooling Indicates the PR includes changes for CI or tooling area/cli Indicates the PR includes changes for CLI area/control-plane-operator Indicates the PR includes changes for the control plane operator - in an OCP release area/control-plane-pki-operator Indicates the PR includes changes for the control plane PKI operator - in an OCP release area/documentation Indicates the PR includes changes for documentation area/hypershift-operator Indicates the PR includes changes for the hypershift operator and API - outside an OCP release area/karpenter-operator Indicates the PR includes changes related to the Karpenter operator area/platform/aws PR/issue for AWS (AWSPlatform) platform area/platform/azure PR/issue for Azure (AzurePlatform) platform area/platform/gcp PR/issue for GCP (GCPPlatform) platform area/platform/kubevirt PR/issue for KubeVirt (KubevirtPlatform) platform area/platform/powervs PR/issue for PowerVS (PowerVSPlatform) platform area/testing Indicates the PR includes changes for e2e testing do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. jira/severity-low Referenced Jira bug's severity is low for the branch this PR is targeting. jira/valid-bug Indicates that a referenced Jira bug is valid for the branch this PR is targeting. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD.

Projects

None yet

Development

Successfully merging this pull request may close these issues.