Skip to content

Commit

Permalink
chore: improve enqueueForClusterWideResource function
Browse files Browse the repository at this point in the history
  • Loading branch information
JoaoBraveCoding committed May 8, 2024
1 parent 0c76944 commit 261a928
Showing 1 changed file with 24 additions and 33 deletions.
57 changes: 24 additions & 33 deletions internal/controllers/watcher/controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -77,50 +77,41 @@ func (r *WatcherReconciler) enqueueForClusterSpecificResource() handler.EventHan

func (r *WatcherReconciler) enqueueForClusterWideResource() handler.EventHandler {
return handler.EnqueueRequestsFromMapFunc(func(ctx context.Context, obj client.Object) []reconcile.Request {
clusterset, ok := obj.GetAnnotations()["cluster.open-cluster-management.io/clusterset"]
if ok {
selector := labels.SelectorFromSet(labels.Set{
"cluster.open-cluster-management.io/clusterset": clusterset,
})
addonList := &addonapiv1alpha1.ManagedClusterAddOnList{}
if err := r.Client.List(ctx, addonList, &client.ListOptions{
LabelSelector: labels.SelectorFromSet(labels.Set{
"open-cluster-management.io/addon-name": "multicluster-observability-addon",
}),
}); err != nil {
r.Log.Error(err, "Error listing managedclusteraddon resources in event handler")
return nil
}

clustersetValue, clustersetExists := obj.GetAnnotations()["cluster.open-cluster-management.io/clusterset"]
var clustersInClusterSet map[string]struct{}
if clustersetExists {
clusterList := &clusterv1.ManagedClusterList{}
if err := r.Client.List(ctx, clusterList, &client.ListOptions{
LabelSelector: selector,
LabelSelector: labels.SelectorFromSet(labels.Set{
"cluster.open-cluster-management.io/clusterset": clustersetValue,
}),
}); err != nil {
r.Log.Error(err, "Error listing managedcluster resources in event handler")
return nil
}
var requests []reconcile.Request
clustersInClusterSet = make(map[string]struct{}, len(clusterList.Items))
for _, cluster := range clusterList.Items {
key := client.ObjectKey{Name: "multicluster-observability-addon", Namespace: cluster.GetName()}
addon := &addonapiv1alpha1.ManagedClusterAddOn{}
if err := r.Client.Get(ctx, key, addon); err != nil {
if apierrors.IsNotFound(err) {
continue
}
r.Log.Error(err, "Error getting matching mcoa managedclusteraddon resource in event handler")
return nil
}
requests = append(requests, reconcile.Request{
NamespacedName: types.NamespacedName{
Namespace: addon.Namespace,
Name: addon.Name,
},
})
clustersInClusterSet[cluster.Name] = struct{}{}
}
return requests

}
// No clusterset label we will simply re-trigger a reconciliation on all mcoa installations
addonList := &addonapiv1alpha1.ManagedClusterAddOnList{}
if err := r.Client.List(ctx, addonList, &client.ListOptions{
LabelSelector: labels.SelectorFromSet(labels.Set{
"open-cluster-management.io/addon-name": "multicluster-observability-addon",
})}); err != nil {
r.Log.Error(err, "Error listing managedclusteraddon resources in event handler")
return nil
}

var requests []reconcile.Request
for _, addon := range addonList.Items {
_, installed := clustersInClusterSet[addon.Namespace]
if clustersetExists && !installed {
continue
}

requests = append(requests, reconcile.Request{
NamespacedName: types.NamespacedName{
Namespace: addon.Namespace,
Expand Down

0 comments on commit 261a928

Please sign in to comment.