Problem
GuestCluster creates CDI and KubeVirt resources for CRC instances. It creates HyperShift HostedCluster and NodePool resources for HCP instances, with KubeVirt workers. The controller starts those operations without confirming that their platform operands can serve them. A missing provider CRD, missing singleton CR, degraded HCO, disabled HyperShift component, or unavailable HyperShift API produces opaque reconciliation errors.
The current cluster exposes a second failure mode: MultiClusterEngine/engine remains Progressing and Available=False, even though its MCE 2.17.2 CSV installed, the HyperShift operator has two ready replicas, the HostedCluster and NodePool CRDs are established, and the existing GuestCluster HostedCluster is Available=True.
MCE marks its local-cluster unavailable because the registration lease stopped on 2026-08-19. Its Klusterlet identifies as caxu-virt and connects to https://api.eng.opdev.io:6443; MCE expects local-cluster on https://api.caxu-virt.opdev.io:6443. The aggregate MCE phase therefore does not describe whether GuestCluster can create HCP resources.
Scope
- Gate CRC provisioning and CRC Ready-state KubeVirt checks on a healthy singleton
HyperConverged.
- Gate HCP provisioning on HCO plus usable HyperShift services from MCE.
- Keep CRCBundle reconciliation, ClusterPool reconciliation, ClusterLease reconciliation, HCP lease projection, and deletion paths available when a dependency has problems.
Proposed Work
- List HCO and MCE CRs through unstructured clients so the operator starts when either provider CRD is absent.
- Require one HCO CR with fresh status,
Available=True, Progressing=False, and Degraded=False.
- Require one MCE CR with its
hypershift component enabled, established HostedCluster and NodePool APIs, and an available hypershift/operator Deployment. Treat MCE phase=Progressing as diagnostic data, not a blocker.
- Run checks before CRC creates CDI or KubeVirt resources and before HCP creates its namespace, secrets, HostedCluster, or NodePool. Keep deletion outside these gates.
- Publish
HyperConvergedReady and MultiClusterEngineReady conditions on ClusterInstance. Include APIUnavailable, OperandNotFound, MultipleOperandsFound, StatusStale, OperandNotReady, and ComponentDisabled reasons.
- Mark blocked instances as
PhaseProvisioning and Ready=False, then requeue after 20 seconds without a controller error.
- Add read-only RBAC for HyperConverged and MultiClusterEngine resources. Avoid provider CR watches because missing CRDs can stop manager startup.
- Add focused tests for missing APIs and operands, readiness states, HCP and CRC isolation, recovery, no-side-effect blocking, and deletion bypass.
Acceptance Criteria
- CRC instances continue when MCE is absent or its aggregate phase is
Progressing.
- HCP instances start when HCO and HyperShift services are usable, even if MCE aggregate status remains stale due to an unrelated local-cluster lease.
- The status condition tells the cluster administrator which dependency needs action before the controller creates provider resources.
- CRCBundles continue when HCO or MCE has problems.
Problem
GuestCluster creates CDI and KubeVirt resources for CRC instances. It creates HyperShift
HostedClusterandNodePoolresources for HCP instances, with KubeVirt workers. The controller starts those operations without confirming that their platform operands can serve them. A missing provider CRD, missing singleton CR, degraded HCO, disabled HyperShift component, or unavailable HyperShift API produces opaque reconciliation errors.The current cluster exposes a second failure mode:
MultiClusterEngine/engineremainsProgressingandAvailable=False, even though its MCE 2.17.2 CSV installed, the HyperShift operator has two ready replicas, the HostedCluster and NodePool CRDs are established, and the existing GuestCluster HostedCluster isAvailable=True.MCE marks its
local-clusterunavailable because the registration lease stopped on 2026-08-19. Its Klusterlet identifies ascaxu-virtand connects tohttps://api.eng.opdev.io:6443; MCE expectslocal-clusteronhttps://api.caxu-virt.opdev.io:6443. The aggregate MCE phase therefore does not describe whether GuestCluster can create HCP resources.Scope
HyperConverged.Proposed Work
Available=True,Progressing=False, andDegraded=False.hypershiftcomponent enabled, established HostedCluster and NodePool APIs, and an availablehypershift/operatorDeployment. Treat MCEphase=Progressingas diagnostic data, not a blocker.HyperConvergedReadyandMultiClusterEngineReadyconditions onClusterInstance. IncludeAPIUnavailable,OperandNotFound,MultipleOperandsFound,StatusStale,OperandNotReady, andComponentDisabledreasons.PhaseProvisioningandReady=False, then requeue after 20 seconds without a controller error.Acceptance Criteria
Progressing.