Created
October 25, 2021 14:23
-
-
Save mayankshah1607/d7983f5f9937f8528bcaa160d223df9c to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/controllers/clusterconfigmap_controller.go b/controllers/clusterconfigmap_controller.go | |
index 913832f..675fea3 100644 | |
--- a/controllers/clusterconfigmap_controller.go | |
+++ b/controllers/clusterconfigmap_controller.go | |
@@ -24,7 +24,9 @@ import ( | |
"k8s.io/apimachinery/pkg/types" | |
ref "k8s.io/client-go/tools/reference" | |
+ "sigs.k8s.io/controller-runtime/pkg/handler" | |
"sigs.k8s.io/controller-runtime/pkg/predicate" | |
+ "sigs.k8s.io/controller-runtime/pkg/source" | |
ctrl "sigs.k8s.io/controller-runtime" | |
"sigs.k8s.io/controller-runtime/pkg/event" | |
@@ -42,8 +44,9 @@ import ( | |
// ClusterConfigMapReconciler reconciles a ClusterConfigMap object | |
type ClusterConfigMapReconciler struct { | |
client.Client | |
- Scheme *runtime.Scheme | |
- Log logr.Logger | |
+ Scheme *runtime.Scheme | |
+ Log logr.Logger | |
+ requeueCh chan event.GenericEvent | |
} | |
var configMapNameKey = ".metadata.name" | |
@@ -169,16 +172,21 @@ func (r *ClusterConfigMapReconciler) SetupWithManager(mgr ctrl.Manager) error { | |
}); err != nil { | |
return err | |
} | |
+ r.requeueCh = make(chan event.GenericEvent) | |
return ctrl.NewControllerManagedBy(mgr). | |
For(&extensionsv1alpha1.ClusterConfigMap{}). | |
Owns(&corev1.ConfigMap{}). | |
+ Watches(&source.Channel{ | |
+ Source: r.requeueCh, | |
+ }, &handler.EnqueueRequestForObject{}). | |
Complete(r) | |
} | |
type NamespaceReconicler struct { | |
client.Client | |
- Scheme *runtime.Scheme | |
- Log logr.Logger | |
+ Scheme *runtime.Scheme | |
+ Log logr.Logger | |
+ CCMReconciler *ClusterConfigMapReconciler | |
} | |
//+kubebuilder:rbac:groups=extensions.toolkit.fluxcd.io,resources=clusterconfigmaps,verbs=get;list;watch | |
@@ -204,24 +212,27 @@ func (r *NamespaceReconicler) Reconcile(ctx context.Context, req ctrl.Request) ( | |
items := clusterConfigMaps.Items | |
// Loop through the ClusterConfigMaps, check if the labels are a subset of the Namespace's labels | |
// and create the ConfigMap accordingly. | |
- for _, clusterConfigMap := range items { | |
+ for i, clusterConfigMap := range items { | |
clusterConfigMap := clusterConfigMap | |
clusterConfigMapLables := clusterConfigMap.Spec.GenerateTo.NamespaceSelectors.MatchLabels | |
if isMapSubset(namespaceLabels, clusterConfigMapLables) { | |
- data := clusterConfigMap.Spec.Data | |
- configMap := corev1.ConfigMap{ | |
- ObjectMeta: metav1.ObjectMeta{ | |
- Labels: make(map[string]string), | |
- Annotations: make(map[string]string), | |
- Name: clusterConfigMap.GetName(), | |
- Namespace: namespace.GetName(), | |
- }, | |
- Data: data, | |
- } | |
- identifier := types.NamespacedName{Namespace: namespace.GetName(), Name: clusterConfigMap.GetName()} | |
- if err := upsertConfigmap(ctx, identifier, configMap, r.Client); err != nil { | |
- return ctrl.Result{}, err | |
- } | |
+ // requeue the CCM over to its reconciler, no need to reconciler here | |
+ r.CCMReconciler.requeueCh <- event.GenericEvent{Object: &items[i]} | |
+ | |
+ // data := clusterConfigMap.Spec.Data | |
+ // configMap := corev1.ConfigMap{ | |
+ // ObjectMeta: metav1.ObjectMeta{ | |
+ // Labels: make(map[string]string), | |
+ // Annotations: make(map[string]string), | |
+ // Name: clusterConfigMap.GetName(), | |
+ // Namespace: namespace.GetName(), | |
+ // }, | |
+ // Data: data, | |
+ // } | |
+ // identifier := types.NamespacedName{Namespace: namespace.GetName(), Name: clusterConfigMap.GetName()} | |
+ // if err := upsertConfigmap(ctx, identifier, configMap, r.Client); err != nil { | |
+ // return ctrl.Result{}, err | |
+ // } | |
} | |
} | |
return ctrl.Result{}, nil | |
diff --git a/main.go b/main.go | |
index ff9bdf0..93b9c80 100644 | |
--- a/main.go | |
+++ b/main.go | |
@@ -78,18 +78,21 @@ func main() { | |
os.Exit(1) | |
} | |
- if err = (&controllers.ClusterConfigMapReconciler{ | |
+ ccmReconciler := &controllers.ClusterConfigMapReconciler{ | |
Client: mgr.GetClient(), | |
Scheme: mgr.GetScheme(), | |
Log: ctrl.Log.WithName("controllers").WithName("ClusterConfigMap"), | |
- }).SetupWithManager(mgr); err != nil { | |
+ } | |
+ | |
+ if err = ccmReconciler.SetupWithManager(mgr); err != nil { | |
setupLog.Error(err, "unable to create controller", "controller", "ClusterConfigMap") | |
os.Exit(1) | |
} | |
if err = (&controllers.NamespaceReconicler{ | |
- Client: mgr.GetClient(), | |
- Scheme: mgr.GetScheme(), | |
- Log: ctrl.Log.WithName("controllers").WithName("Namespace"), | |
+ Client: mgr.GetClient(), | |
+ Scheme: mgr.GetScheme(), | |
+ Log: ctrl.Log.WithName("controllers").WithName("Namespace"), | |
+ CCMReconciler: ccmReconciler, | |
}).SetupWithManager(mgr); err != nil { | |
setupLog.Error(err, "unable to create controller", "controller", "Namespace") | |
os.Exit(1) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment