-
Bug
-
Resolution: Unresolved
-
Normal
-
None
-
4.20.z
-
None
-
False
-
-
None
-
None
-
None
-
None
-
None
-
None
-
None
-
None
-
None
-
None
-
None
-
None
-
None
-
None
Description of problem:
The HyperShift operator (NodePool controller) panics when attempting to reconcile a NodePool for a Hosted Control Plane (HCP) on KubeVirt when spec.management.upgradeType: InPlace is specified. The NodePool remains stuck with no nodes created, and the operator logs show a runtime error: invalid memory address or nil pointer dereference.
Version-Release number of selected component (if applicable):
HCP 4.20 OCP 4.20 MCE 2.10 ACM 2.15
How reproducible:
100%
Steps to Reproduce:
1. Deploy a Hosted Control Plane on KubeVirt. 2. Apply a NodePool manifest using upgradeType: InPlace and strategy: RollingUpdate. 3. Observe the NodePool status (it stays empty). 4. Check the logs of the hypershift-operator pod in the hypershift namespace.
Actual results:
The NodePool controller crashes/panics during reconciliation. No VirtualMachines or Machine objects are created.
{"level":"error","ts":"2026-02-11T12:20:49Z","msg":"Reconciler error","controller":"nodepool","error":"panic: runtime error: invalid memory address or nil pointer dereference [recovered]","stacktrace":"sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).reconcileHandler..."}
Expected results:
The operator should either: Successfully reconcile and create the nodes using the In-Place upgrade logic. Gracefully fail with a validation error if InPlace is not yet supported for the KubeVirt platform in this version.
Additional info:
nodepool YAML:
apiVersion: hypershift.openshift.io/v1beta1
kind: NodePool
metadata:
name: hosted-kubevirt-custom
namespace: clusters
spec:
clusterName: hosted-kubevirt
management:
autoRepair: false
upgradeType: InPlace
replace:
strategy: RollingUpdate
platform:
type: KubeVirt
kubevirt:
compute:
cores: 4
memory: 8Gi