@@ -106,7 +106,7 @@ func NewRepoSyncReconciler(clusterName string, reconcilerPollingPeriod, hydratio
106
106
scheme : scheme ,
107
107
reconcilerPollingPeriod : reconcilerPollingPeriod ,
108
108
hydrationPollingPeriod : hydrationPollingPeriod ,
109
- syncKind : configsync . RepoSyncKind ,
109
+ syncGVK : kinds . RepoSyncV1Beta1 () ,
110
110
knownHostExist : false ,
111
111
controllerName : "" ,
112
112
},
@@ -130,7 +130,7 @@ func (r *RepoSyncReconciler) Reconcile(ctx context.Context, req controllerruntim
130
130
Name : core .NsReconcilerName (rsRef .Namespace , rsRef .Name ),
131
131
}
132
132
ctx = r .setLoggerValues (ctx ,
133
- logFieldSyncKind , r .syncKind ,
133
+ logFieldSyncKind , r .syncGVK . Kind ,
134
134
logFieldSyncRef , rsRef .String (),
135
135
logFieldReconciler , reconcilerRef .String ())
136
136
rs := & v1beta1.RepoSync {}
@@ -220,7 +220,7 @@ func (r *RepoSyncReconciler) upsertManagedObjects(ctx context.Context, reconcile
220
220
rsRef := client .ObjectKeyFromObject (rs )
221
221
r .logger (ctx ).V (3 ).Info ("Reconciling managed objects" )
222
222
223
- labelMap := ManagedObjectLabelMap (r .syncKind , rsRef )
223
+ labelMap := ManagedObjectLabelMap (r .syncGVK . Kind , rsRef )
224
224
225
225
// Create secret in config-management-system namespace using the
226
226
// existing secret in the reposync.namespace.
@@ -561,11 +561,14 @@ func (r *RepoSyncReconciler) watchConfigMaps(rs *v1beta1.RepoSync) error {
561
561
562
562
func (r * RepoSyncReconciler ) mapMembershipToRepoSyncs (ctx context.Context , o client.Object ) []reconcile.Request {
563
563
// Clear the membership if the cluster is unregistered
564
- if err := r .client .Get (ctx , types.NamespacedName {Name : fleetMembershipName }, & hubv1.Membership {}); err != nil {
564
+ membershipObj := & hubv1.Membership {}
565
+ membershipObj .Name = fleetMembershipName
566
+ membershipRef := client .ObjectKeyFromObject (membershipObj )
567
+ if err := r .client .Get (ctx , membershipRef , membershipObj ); err != nil {
565
568
if apierrors .IsNotFound (err ) {
566
569
klog .Info ("Fleet Membership not found, clearing membership cache" )
567
570
r .membership = nil
568
- return r .requeueAllRepoSyncs ( fleetMembershipName )
571
+ return r .requeueAllRSyncs ( ctx , membershipObj )
569
572
}
570
573
klog .Errorf ("Fleet Membership get failed: %v" , err )
571
574
return nil
@@ -581,28 +584,7 @@ func (r *RepoSyncReconciler) mapMembershipToRepoSyncs(ctx context.Context, o cli
581
584
return nil
582
585
}
583
586
r .membership = m
584
- return r .requeueAllRepoSyncs (fleetMembershipName )
585
- }
586
-
587
- func (r * RepoSyncReconciler ) requeueAllRepoSyncs (name string ) []reconcile.Request {
588
- //TODO: pass through context (reqs updating controller-runtime)
589
- ctx := context .Background ()
590
- allRepoSyncs := & v1beta1.RepoSyncList {}
591
- if err := r .client .List (ctx , allRepoSyncs ); err != nil {
592
- klog .Errorf ("RepoSync list failed: %v" , err )
593
- return nil
594
- }
595
-
596
- requests := make ([]reconcile.Request , len (allRepoSyncs .Items ))
597
- for i , rs := range allRepoSyncs .Items {
598
- requests [i ] = reconcile.Request {
599
- NamespacedName : client .ObjectKeyFromObject (& rs ),
600
- }
601
- }
602
- if len (requests ) > 0 {
603
- klog .Infof ("Changes to %s trigger reconciliations for %d RepoSync objects." , name , len (allRepoSyncs .Items ))
604
- }
605
- return requests
587
+ return r .requeueAllRSyncs (ctx , membershipObj )
606
588
}
607
589
608
590
// mapSecretToRepoSyncs define a mapping from the Secret object to its attached
@@ -633,7 +615,7 @@ func (r *RepoSyncReconciler) mapSecretToRepoSyncs(ctx context.Context, secret cl
633
615
// so requeue the mapped RepoSync object and then return.
634
616
reconcilerName := core .NsReconcilerName (rs .GetNamespace (), rs .GetName ())
635
617
if isUpsertedSecret (& rs , sRef .Name ) {
636
- return requeueRepoSyncRequest ( secret , client .ObjectKeyFromObject (& rs ))
618
+ return r . requeueRSync ( ctx , secret , client .ObjectKeyFromObject (& rs ))
637
619
}
638
620
isSAToken := strings .HasPrefix (sRef .Name , reconcilerName + "-token-" )
639
621
if isSAToken {
@@ -648,7 +630,7 @@ func (r *RepoSyncReconciler) mapSecretToRepoSyncs(ctx context.Context, secret cl
648
630
}
649
631
for _ , s := range serviceAccount .Secrets {
650
632
if s .Name == sRef .Name {
651
- return requeueRepoSyncRequest ( secret , client .ObjectKeyFromObject (& rs ))
633
+ return r . requeueRSync ( ctx , secret , client .ObjectKeyFromObject (& rs ))
652
634
}
653
635
}
654
636
}
@@ -686,9 +668,9 @@ func (r *RepoSyncReconciler) mapSecretToRepoSyncs(ctx context.Context, secret cl
686
668
return requests
687
669
}
688
670
689
- func (r * RepoSyncReconciler ) mapAdmissionWebhookToRepoSyncs (_ context.Context , admissionWebhook client.Object ) []reconcile.Request {
671
+ func (r * RepoSyncReconciler ) mapAdmissionWebhookToRepoSyncs (ctx context.Context , admissionWebhook client.Object ) []reconcile.Request {
690
672
if admissionWebhook .GetName () == webhookconfiguration .Name {
691
- return r .requeueAllRepoSyncs ( admissionWebhook . GetName () )
673
+ return r .requeueAllRSyncs ( ctx , admissionWebhook )
692
674
}
693
675
return nil
694
676
}
@@ -782,7 +764,7 @@ func (r *RepoSyncReconciler) mapConfigMapToRepoSyncs(ctx context.Context, obj cl
782
764
}
783
765
}
784
766
if len (rsRef .Name ) > 0 && len (rsRef .Namespace ) > 0 {
785
- return requeueRepoSyncRequest ( obj , rsRef )
767
+ return r . requeueRSync ( ctx , obj , rsRef )
786
768
}
787
769
return nil
788
770
}
@@ -857,10 +839,10 @@ func (r *RepoSyncReconciler) mapObjectToRepoSync(ctx context.Context, obj client
857
839
}
858
840
}
859
841
860
- allRepoSyncs := & v1beta1. RepoSyncList {}
861
- if err := r . client . List ( ctx , allRepoSyncs ); err != nil {
862
- klog . Errorf ( "failed to list all RepoSyncs for %s (%s): %v " ,
863
- obj . GetObjectKind (). GroupVersionKind (). Kind , objRef , err )
842
+ syncMetaList , err := r . listSyncMetadata ( ctx )
843
+ if err != nil {
844
+ r . logger ( ctx ). Error ( err , "Failed to list objects " ,
845
+ logFieldSyncKind , r . syncGVK . Kind )
864
846
return nil
865
847
}
866
848
@@ -869,19 +851,19 @@ func (r *RepoSyncReconciler) mapObjectToRepoSync(ctx context.Context, obj client
869
851
// For other resources, requeue the mapping RepoSync object and then return.
870
852
var requests []reconcile.Request
871
853
var attachedRSNames []string
872
- for _ , rs := range allRepoSyncs .Items {
873
- reconcilerName := core .NsReconcilerName (rs .GetNamespace (), rs .GetName ())
854
+ for _ , syncMeta := range syncMetaList .Items {
855
+ reconcilerName := core .NsReconcilerName (syncMeta .GetNamespace (), syncMeta .GetName ())
874
856
switch obj .(type ) {
875
857
case * rbacv1.RoleBinding :
876
- if objRef .Name == nsRoleBindingName && objRef .Namespace == rs .Namespace {
858
+ if objRef .Name == nsRoleBindingName && objRef .Namespace == syncMeta .Namespace {
877
859
requests = append (requests , reconcile.Request {
878
- NamespacedName : client .ObjectKeyFromObject (& rs ),
860
+ NamespacedName : client .ObjectKeyFromObject (& syncMeta ),
879
861
})
880
- attachedRSNames = append (attachedRSNames , rs .GetName ())
862
+ attachedRSNames = append (attachedRSNames , syncMeta .GetName ())
881
863
}
882
864
default : // Deployment and ServiceAccount
883
865
if objRef .Name == reconcilerName {
884
- return requeueRepoSyncRequest ( obj , client .ObjectKeyFromObject (& rs ))
866
+ return r . requeueRSync ( ctx , obj , client .ObjectKeyFromObject (& syncMeta ))
885
867
}
886
868
}
887
869
}
@@ -892,16 +874,6 @@ func (r *RepoSyncReconciler) mapObjectToRepoSync(ctx context.Context, obj client
892
874
return requests
893
875
}
894
876
895
- func requeueRepoSyncRequest (obj client.Object , rsRef types.NamespacedName ) []reconcile.Request {
896
- klog .Infof ("Changes to %s triggered a reconciliation for the RepoSync (%s)." ,
897
- kinds .ObjectSummary (obj ), rsRef )
898
- return []reconcile.Request {
899
- {
900
- NamespacedName : rsRef ,
901
- },
902
- }
903
- }
904
-
905
877
func (r * RepoSyncReconciler ) populateContainerEnvs (ctx context.Context , rs * v1beta1.RepoSync , reconcilerName string ) map [string ][]corev1.EnvVar {
906
878
result := map [string ][]corev1.EnvVar {
907
879
reconcilermanager .HydrationController : hydrationEnvs (hydrationOptions {
@@ -926,7 +898,7 @@ func (r *RepoSyncReconciler) populateContainerEnvs(ctx context.Context, rs *v1be
926
898
statusMode : rs .Spec .SafeOverride ().StatusMode ,
927
899
reconcileTimeout : v1beta1 .GetReconcileTimeout (rs .Spec .SafeOverride ().ReconcileTimeout ),
928
900
apiServerTimeout : v1beta1 .GetAPIServerTimeout (rs .Spec .SafeOverride ().APIServerTimeout ),
929
- requiresRendering : annotationEnabled ( metadata . RequiresRenderingAnnotationKey , rs . GetAnnotations () ),
901
+ requiresRendering : r . isAnnotationValueTrue ( ctx , rs , metadata . RequiresRenderingAnnotationKey ),
930
902
// Namespace reconciler doesn't support NamespaceSelector at all.
931
903
dynamicNSSelectorEnabled : false ,
932
904
webhookEnabled : r .webhookEnabled ,
@@ -1090,7 +1062,7 @@ func (r *RepoSyncReconciler) upsertSharedRoleBinding(ctx context.Context, reconc
1090
1062
childRB := & rbacv1.RoleBinding {}
1091
1063
childRB .Name = rbRef .Name
1092
1064
childRB .Namespace = rbRef .Namespace
1093
- labelMap := ManagedObjectLabelMap (r .syncKind , rsRef )
1065
+ labelMap := ManagedObjectLabelMap (r .syncGVK . Kind , rsRef )
1094
1066
// Remove sync-name label since the RoleBinding may be shared
1095
1067
delete (labelMap , metadata .SyncNameLabel )
1096
1068
@@ -1242,7 +1214,7 @@ func (r *RepoSyncReconciler) mutationsFor(ctx context.Context, rs *v1beta1.RepoS
1242
1214
case reconcilermanager .Reconciler :
1243
1215
container .Env = append (container .Env , containerEnvs [container .Name ]... )
1244
1216
case reconcilermanager .HydrationController :
1245
- if ! annotationEnabled ( metadata . RequiresRenderingAnnotationKey , rs . GetAnnotations () ) {
1217
+ if ! r . isAnnotationValueTrue ( ctx , rs , metadata . RequiresRenderingAnnotationKey ) {
1246
1218
// if the sync source does not require rendering, omit the hydration controller
1247
1219
// this minimizes the resource footprint of the reconciler
1248
1220
addContainer = false
0 commit comments