Skip to content

Instantly share code, notes, and snippets.

@mayankshah1607
Created October 25, 2021 14:23
Show Gist options
  • Save mayankshah1607/d7983f5f9937f8528bcaa160d223df9c to your computer and use it in GitHub Desktop.
Save mayankshah1607/d7983f5f9937f8528bcaa160d223df9c to your computer and use it in GitHub Desktop.
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