@@ -430,6 +430,9 @@ func reconcileNetworkComponents(log logr.Logger, osProviderClient *gophercloud.P
430
430
}
431
431
432
432
func (r * OpenStackClusterReconciler ) SetupWithManager (ctx context.Context , mgr ctrl.Manager , options controller.Options ) error {
433
+ clusterToInfraFn := util .ClusterToInfrastructureMapFunc (infrav1 .GroupVersion .WithKind ("OpenStackCluster" ))
434
+ log := ctrl .LoggerFrom (ctx )
435
+
433
436
return ctrl .NewControllerManagedBy (mgr ).
434
437
WithOptions (options ).
435
438
For (& infrav1.OpenStackCluster {},
@@ -450,9 +453,27 @@ func (r *OpenStackClusterReconciler) SetupWithManager(ctx context.Context, mgr c
450
453
).
451
454
Watches (
452
455
& source.Kind {Type : & clusterv1.Cluster {}},
453
- handler .EnqueueRequestsFromMapFunc (util .ClusterToInfrastructureMapFunc (infrav1 .GroupVersion .WithKind ("OpenStackCluster" ))),
456
+ handler .EnqueueRequestsFromMapFunc (func (o client.Object ) []reconcile.Request {
457
+ requests := clusterToInfraFn (o )
458
+ if len (requests ) < 1 {
459
+ return nil
460
+ }
461
+
462
+ c := & infrav1.OpenStackCluster {}
463
+ if err := r .Client .Get (ctx , requests [0 ].NamespacedName , c ); err != nil {
464
+ log .V (4 ).Error (err , "Failed to get OpenStack cluster" )
465
+ return nil
466
+ }
467
+
468
+ if annotations .IsExternallyManaged (c ) {
469
+ log .V (4 ).Info ("OpenStackCluster is externally managed, skipping mapping." )
470
+ return nil
471
+ }
472
+ return requests
473
+ }),
454
474
builder .WithPredicates (predicates .ClusterUnpaused (ctrl .LoggerFrom (ctx ))),
455
475
).
456
476
WithEventFilter (predicates .ResourceNotPausedAndHasFilterLabel (ctrl .LoggerFrom (ctx ), r .WatchFilterValue )).
477
+ WithEventFilter (predicates .ResourceIsNotExternallyManaged (ctrl .LoggerFrom (ctx ))).
457
478
Complete (r )
458
479
}
0 commit comments