Skip to content

Commit 58fb822

Browse files
authored
Merge pull request #897 from asalkeld/externally-managed
✨ add predicates.ResourceIsNotExternallyManaged to cluster controller
2 parents 62092ce + a859720 commit 58fb822

File tree

1 file changed

+22
-1
lines changed

1 file changed

+22
-1
lines changed

controllers/openstackcluster_controller.go

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -430,6 +430,9 @@ func reconcileNetworkComponents(log logr.Logger, osProviderClient *gophercloud.P
430430
}
431431

432432
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+
433436
return ctrl.NewControllerManagedBy(mgr).
434437
WithOptions(options).
435438
For(&infrav1.OpenStackCluster{},
@@ -450,9 +453,27 @@ func (r *OpenStackClusterReconciler) SetupWithManager(ctx context.Context, mgr c
450453
).
451454
Watches(
452455
&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+
}),
454474
builder.WithPredicates(predicates.ClusterUnpaused(ctrl.LoggerFrom(ctx))),
455475
).
456476
WithEventFilter(predicates.ResourceNotPausedAndHasFilterLabel(ctrl.LoggerFrom(ctx), r.WatchFilterValue)).
477+
WithEventFilter(predicates.ResourceIsNotExternallyManaged(ctrl.LoggerFrom(ctx))).
457478
Complete(r)
458479
}

0 commit comments

Comments
 (0)