@@ -479,7 +479,18 @@ func (r *OpenStackMachineReconciler) getMachineServer(ctx context.Context, openS
479
479
480
480
// openStackMachineSpecToOpenStackServerSpec converts an OpenStackMachineSpec to an OpenStackServerSpec.
481
481
// It returns the OpenStackServerSpec object and an error if there is any.
482
- func openStackMachineSpecToOpenStackServerSpec (openStackMachineSpec * infrav1.OpenStackMachineSpec , identityRef infrav1.OpenStackIdentityReference , tags []string , failureDomain string , userDataRef * corev1.LocalObjectReference , defaultSecGroup * string , defaultNetworkID string ) * infrav1alpha1.OpenStackServerSpec {
482
+ func openStackMachineSpecToOpenStackServerSpec (openStackMachineSpec * infrav1.OpenStackMachineSpec , identityRef infrav1.OpenStackIdentityReference , tags []string , failureDomain string , userDataRef * corev1.LocalObjectReference , defaultSecGroup * string , clusterNetwork * infrav1.NetworkStatusWithSubnets ) (* infrav1alpha1.OpenStackServerSpec , error ) {
483
+ // Determine default network ID if the cluster status exposes one.
484
+ var defaultNetworkID string
485
+ if clusterNetwork != nil {
486
+ defaultNetworkID = clusterNetwork .ID
487
+ }
488
+
489
+ // If no cluster network is available AND the machine spec did not define any ports with a network, we cannot choose a network.
490
+ if defaultNetworkID == "" && len (openStackMachineSpec .Ports ) == 0 {
491
+ return nil , capoerrors .Terminal (infrav1 .InvalidMachineSpecReason , "no network configured: cluster network is missing and machine spec does not define ports with a network" )
492
+ }
493
+
483
494
openStackServerSpec := & infrav1alpha1.OpenStackServerSpec {
484
495
AdditionalBlockDevices : openStackMachineSpec .AdditionalBlockDevices ,
485
496
ConfigDrive : openStackMachineSpec .ConfigDrive ,
@@ -535,7 +546,7 @@ func openStackMachineSpecToOpenStackServerSpec(openStackMachineSpec *infrav1.Ope
535
546
}
536
547
openStackServerSpec .Ports = serverPorts
537
548
538
- return openStackServerSpec
549
+ return openStackServerSpec , nil
539
550
}
540
551
541
552
// reconcileMachineServer reconciles the OpenStackServer object for the OpenStackMachine.
@@ -584,18 +595,10 @@ func (r *OpenStackMachineReconciler) getOrCreateMachineServer(ctx context.Contex
584
595
}
585
596
return openStackCluster .Spec .IdentityRef
586
597
}()
587
- // Determine default network ID if the cluster status exposes one.
588
- var defaultNetworkID string
589
- if openStackCluster .Status .Network != nil {
590
- defaultNetworkID = openStackCluster .Status .Network .ID
591
- }
592
-
593
- // If no cluster network is available AND the machine spec did not define any ports with a network, we cannot choose a network.
594
- if defaultNetworkID == "" && len (openStackMachine .Spec .Ports ) == 0 {
595
- return nil , capoerrors .Terminal (infrav1 .InvalidMachineSpecReason , "no network configured: cluster network is missing and machine spec does not define ports with a network" )
598
+ machineServerSpec , err := openStackMachineSpecToOpenStackServerSpec (& openStackMachine .Spec , identityRef , compute .InstanceTags (& openStackMachine .Spec , openStackCluster ), failureDomain , userDataRef , getManagedSecurityGroup (openStackCluster , machine ), openStackCluster .Status .Network )
599
+ if err != nil {
600
+ return nil , err
596
601
}
597
-
598
- machineServerSpec := openStackMachineSpecToOpenStackServerSpec (& openStackMachine .Spec , identityRef , compute .InstanceTags (& openStackMachine .Spec , openStackCluster ), failureDomain , userDataRef , getManagedSecurityGroup (openStackCluster , machine ), defaultNetworkID )
599
602
machineServer = & infrav1alpha1.OpenStackServer {
600
603
ObjectMeta : metav1.ObjectMeta {
601
604
Labels : map [string ]string {
0 commit comments