Skip to content

Commit 02169f4

Browse files
committed
handle nil cluster network & SG precedence, add TerminalError
Signed-off-by: Bharath Nallapeta <[email protected]> addressed PR comments on secGroups Signed-off-by: Bharath Nallapeta <[email protected]>
1 parent 6cff41e commit 02169f4

File tree

1 file changed

+14
-2
lines changed

1 file changed

+14
-2
lines changed

controllers/openstackmachine_controller.go

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -522,7 +522,8 @@ func openStackMachineSpecToOpenStackServerSpec(openStackMachineSpec *infrav1.Ope
522522
serverPorts = make([]infrav1.PortOpts, 1)
523523
}
524524
for i := range serverPorts {
525-
if serverPorts[i].Network == nil {
525+
// Only inject the default network when we actually have an ID.
526+
if serverPorts[i].Network == nil && defaultNetworkID != "" {
526527
serverPorts[i].Network = &infrav1.NetworkParam{
527528
ID: &defaultNetworkID,
528529
}
@@ -589,7 +590,18 @@ func (r *OpenStackMachineReconciler) getOrCreateMachineServer(ctx context.Contex
589590
}
590591
return openStackCluster.Spec.IdentityRef
591592
}()
592-
machineServerSpec := openStackMachineSpecToOpenStackServerSpec(&openStackMachine.Spec, identityRef, compute.InstanceTags(&openStackMachine.Spec, openStackCluster), failureDomain, userDataRef, getManagedSecurityGroup(openStackCluster, machine), openStackCluster.Status.Network.ID)
593+
// Determine default network ID if the cluster status exposes one.
594+
var defaultNetworkID string
595+
if openStackCluster.Status.Network != nil {
596+
defaultNetworkID = openStackCluster.Status.Network.ID
597+
}
598+
599+
// If no cluster network is available AND the machine spec did not define any ports with a network, we cannot choose a network.
600+
if defaultNetworkID == "" && len(openStackMachine.Spec.Ports) == 0 {
601+
return nil, capoerrors.Terminal(infrav1.InvalidMachineSpecReason, "no network configured: cluster network is missing and machine spec does not define ports with a network")
602+
}
603+
604+
machineServerSpec := openStackMachineSpecToOpenStackServerSpec(&openStackMachine.Spec, identityRef, compute.InstanceTags(&openStackMachine.Spec, openStackCluster), failureDomain, userDataRef, getManagedSecurityGroup(openStackCluster, machine), defaultNetworkID)
593605
machineServer = &infrav1alpha1.OpenStackServer{
594606
ObjectMeta: metav1.ObjectMeta{
595607
Labels: map[string]string{

0 commit comments

Comments
 (0)