@@ -153,36 +153,33 @@ func (r *OpenStackMachineReconciler) Reconcile(ctx context.Context, req ctrl.Req
153
153
}
154
154
scope := scope .NewWithLogger (clientScope , log )
155
155
156
+ clusterName := names .ClusterName (cluster )
157
+
158
+ // Handle deleted machines
159
+ if ! openStackMachine .DeletionTimestamp .IsZero () {
160
+ return r .reconcileDelete (scope , clusterName , infraCluster , machine , openStackMachine )
161
+ }
162
+
163
+ // Handle non-deleted clusters
164
+ return r .reconcileNormal (ctx , scope , clusterName , infraCluster , machine , openStackMachine )
165
+ }
166
+
167
+ func resolveMachineResources (scope * scope.WithLogger , clusterName string , openStackCluster * infrav1.OpenStackCluster , openStackMachine * infrav1.OpenStackMachine , machine * clusterv1.Machine ) (bool , error ) {
156
168
// Resolve and store referenced resources
157
169
changed , err := compute .ResolveReferencedMachineResources (scope ,
158
170
& openStackMachine .Spec , & openStackMachine .Status .ReferencedResources ,
159
- names . ClusterName ( cluster ) , openStackMachine .Name ,
160
- infraCluster , getManagedSecurityGroup (infraCluster , machine ))
171
+ clusterName , openStackMachine .Name ,
172
+ openStackCluster , getManagedSecurityGroup (openStackCluster , machine ))
161
173
if err != nil {
162
- return reconcile. Result {} , err
174
+ return false , err
163
175
}
164
176
if changed {
165
177
// If the referenced resources have changed, we need to update the OpenStackMachine status now.
166
- return reconcile. Result {} , nil
178
+ return true , nil
167
179
}
168
180
169
181
// Adopt any existing dependent resources
170
- changed , err = compute .AdoptDependentMachineResources (scope , & openStackMachine .Status .ReferencedResources , & openStackMachine .Status .DependentResources )
171
- if err != nil {
172
- return reconcile.Result {}, err
173
- }
174
- if changed {
175
- // If the dependent resources have changed, we need to update the OpenStackMachine status now.
176
- return reconcile.Result {}, nil
177
- }
178
-
179
- // Handle deleted machines
180
- if ! openStackMachine .DeletionTimestamp .IsZero () {
181
- return r .reconcileDelete (scope , cluster , infraCluster , machine , openStackMachine )
182
- }
183
-
184
- // Handle non-deleted clusters
185
- return r .reconcileNormal (ctx , scope , cluster , infraCluster , machine , openStackMachine )
182
+ return compute .AdoptDependentMachineResources (scope , & openStackMachine .Status .ReferencedResources , & openStackMachine .Status .DependentResources )
186
183
}
187
184
188
185
func patchMachine (ctx context.Context , patchHelper * patch.Helper , openStackMachine * infrav1.OpenStackMachine , machine * clusterv1.Machine , options ... patch.Option ) error {
@@ -253,11 +250,9 @@ func (r *OpenStackMachineReconciler) SetupWithManager(ctx context.Context, mgr c
253
250
Complete (r )
254
251
}
255
252
256
- func (r * OpenStackMachineReconciler ) reconcileDelete (scope * scope.WithLogger , cluster * clusterv1. Cluster , openStackCluster * infrav1.OpenStackCluster , machine * clusterv1.Machine , openStackMachine * infrav1.OpenStackMachine ) (ctrl.Result , error ) { //nolint:unparam
253
+ func (r * OpenStackMachineReconciler ) reconcileDelete (scope * scope.WithLogger , clusterName string , openStackCluster * infrav1.OpenStackCluster , machine * clusterv1.Machine , openStackMachine * infrav1.OpenStackMachine ) (ctrl.Result , error ) { //nolint:unparam
257
254
scope .Logger ().Info ("Reconciling Machine delete" )
258
255
259
- clusterName := names .ClusterName (cluster )
260
-
261
256
computeService , err := compute .NewService (scope )
262
257
if err != nil {
263
258
return ctrl.Result {}, err
@@ -268,6 +263,13 @@ func (r *OpenStackMachineReconciler) reconcileDelete(scope *scope.WithLogger, cl
268
263
return ctrl.Result {}, err
269
264
}
270
265
266
+ // We may have resources to adopt if the cluster is ready
267
+ if openStackCluster .Status .Ready {
268
+ if _ , err := resolveMachineResources (scope , clusterName , openStackCluster , openStackMachine , machine ); err != nil {
269
+ return ctrl.Result {}, err
270
+ }
271
+ }
272
+
271
273
if openStackCluster .Spec .APIServerLoadBalancer .IsEnabled () {
272
274
loadBalancerService , err := loadbalancer .NewService (scope )
273
275
if err != nil {
@@ -480,7 +482,7 @@ func (r *OpenStackMachineReconciler) reconcileDeleteFloatingAddressFromPool(scop
480
482
return r .Client .Update (context .Background (), claim )
481
483
}
482
484
483
- func (r * OpenStackMachineReconciler ) reconcileNormal (ctx context.Context , scope * scope.WithLogger , cluster * clusterv1. Cluster , openStackCluster * infrav1.OpenStackCluster , machine * clusterv1.Machine , openStackMachine * infrav1.OpenStackMachine ) (_ ctrl.Result , reterr error ) {
485
+ func (r * OpenStackMachineReconciler ) reconcileNormal (ctx context.Context , scope * scope.WithLogger , clusterName string , openStackCluster * infrav1.OpenStackCluster , machine * clusterv1.Machine , openStackMachine * infrav1.OpenStackMachine ) (_ ctrl.Result , reterr error ) {
484
486
var err error
485
487
486
488
// If the OpenStackMachine is in an error state, return early.
@@ -495,12 +497,16 @@ func (r *OpenStackMachineReconciler) reconcileNormal(ctx context.Context, scope
495
497
return ctrl.Result {}, nil
496
498
}
497
499
498
- if ! cluster .Status .InfrastructureReady {
500
+ if ! openStackCluster .Status .Ready {
499
501
scope .Logger ().Info ("Cluster infrastructure is not ready yet, re-queuing machine" )
500
502
conditions .MarkFalse (openStackMachine , infrav1 .InstanceReadyCondition , infrav1 .WaitingForClusterInfrastructureReason , clusterv1 .ConditionSeverityInfo , "" )
501
503
return ctrl.Result {RequeueAfter : waitForClusterInfrastructureReadyDuration }, nil
502
504
}
503
505
506
+ if changed , err := resolveMachineResources (scope , clusterName , openStackCluster , openStackMachine , machine ); changed || err != nil {
507
+ return ctrl.Result {}, err
508
+ }
509
+
504
510
// Make sure bootstrap data is available and populated.
505
511
if machine .Spec .Bootstrap .DataSecretName == nil {
506
512
scope .Logger ().Info ("Bootstrap data secret reference is not yet available" )
@@ -513,8 +519,6 @@ func (r *OpenStackMachineReconciler) reconcileNormal(ctx context.Context, scope
513
519
}
514
520
scope .Logger ().Info ("Reconciling Machine" )
515
521
516
- clusterName := names .ClusterName (cluster )
517
-
518
522
computeService , err := compute .NewService (scope )
519
523
if err != nil {
520
524
return ctrl.Result {}, err
0 commit comments