You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
In a “hosted control plane” setup (where the control plane runs outside of OpenStack, and only worker nodes are provisioned in OpenStack), OpenStackCluster.Status.Network can remain nil. Currently, the CAPO code in OpenStackMachineReconciler.getOrCreateMachineServer() assumes openStackCluster.Status.Network is always non-nil. This leads to a nil pointer dereference (panic) when calling:
machineServerSpec := openStackMachineSpecToOpenStackServerSpec(
&openStackMachine.Spec,
identityRef,
compute.InstanceTags(&openStackMachine.Spec, openStackCluster),
failureDomain,
userDataRef,
getManagedSecurityGroup(openStackCluster, machine),
openStackCluster.Status.Network.ID, // <- panic if .Network is nil
)
The controller then crashes, making it impossible to provision worker nodes.
In HPC scenarios, there is no control-plane node running in OpenStack, so CAPO never populates OpenStackCluster.Status.Network.
The machine reconciliation panics in openstackmachine_controller.go due to a nil pointer dereference on openStackCluster.Status.Network.ID.
What did you expect to happen:
That CAPO would handle the absence of status.network gracefully—e.g. by marking the OpenStackMachine with a condition or requeueing—rather than panicking.
Environment:
Cluster API Provider OpenStack version (Or git rev-parse HEAD if manually built):
Cluster-API version:
OpenStack version:
Minikube/KIND version:
Kubernetes version (use kubectl version):
OS (e.g. from /etc/os-release):
The text was updated successfully, but these errors were encountered:
/kind bug
What steps did you take and what happened:
In a “hosted control plane” setup (where the control plane runs outside of OpenStack, and only worker nodes are provisioned in OpenStack), OpenStackCluster.Status.Network can remain nil. Currently, the CAPO code in OpenStackMachineReconciler.getOrCreateMachineServer() assumes openStackCluster.Status.Network is always non-nil. This leads to a nil pointer dereference (panic) when calling:
The controller then crashes, making it impossible to provision worker nodes.
Logs:
What did you expect to happen:
That CAPO would handle the absence of status.network gracefully—e.g. by marking the OpenStackMachine with a condition or requeueing—rather than panicking.
Environment:
git rev-parse HEAD
if manually built):kubectl version
):/etc/os-release
):The text was updated successfully, but these errors were encountered: