@@ -95,8 +95,8 @@ func (r *Reconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Resu
9595
9696 // Check if the approval request is approved
9797 approvedCond := meta .FindStatusCondition (approvalReq .Status .Conditions , string (placementv1beta1 .ApprovalRequestConditionApproved ))
98- if approvedCond == nil || approvedCond .Status ! = metav1 .ConditionTrue {
99- klog .V (2 ).InfoS ("ApprovalRequest not yet approved, skipping" , "approvalRequest" , approvalReqRef )
98+ if approvedCond != nil && approvedCond .Status = = metav1 .ConditionTrue {
99+ klog .V (2 ).InfoS ("ApprovalRequest has been approved, skipping" , "approvalRequest" , approvalReqRef )
100100 return ctrl.Result {}, nil
101101 }
102102
@@ -217,46 +217,6 @@ func (r *Reconciler) ensureMetricCollectorResources(
217217 }
218218 }
219219
220- // Create ClusterResourcePlacement with PickFixed policy
221- crp := & placementv1beta1.ClusterResourcePlacement {
222- ObjectMeta : metav1.ObjectMeta {
223- Name : crpName ,
224- Labels : map [string ]string {
225- "approval-request" : approvalReq .Name ,
226- "update-run" : updateRunName ,
227- "stage" : stageName ,
228- },
229- },
230- Spec : placementv1beta1.PlacementSpec {
231- ResourceSelectors : []placementv1beta1.ResourceSelectorTerm {
232- {
233- Group : "placement.kubernetes-fleet.io" ,
234- Version : "v1beta1" ,
235- Kind : "MetricCollector" ,
236- Name : metricCollectorName ,
237- },
238- },
239- Policy : & placementv1beta1.PlacementPolicy {
240- PlacementType : placementv1beta1 .PickFixedPlacementType ,
241- ClusterNames : clusterNames ,
242- },
243- },
244- }
245-
246- // Create or update CRP
247- existingCRP := & placementv1beta1.ClusterResourcePlacement {}
248- err = r .Client .Get (ctx , types.NamespacedName {Name : crpName }, existingCRP )
249- if err != nil {
250- if errors .IsNotFound (err ) {
251- if err := r .Client .Create (ctx , crp ); err != nil {
252- return fmt .Errorf ("failed to create ClusterResourcePlacement: %w" , err )
253- }
254- klog .V (2 ).InfoS ("Created ClusterResourcePlacement" , "crp" , crpName )
255- } else {
256- return fmt .Errorf ("failed to get ClusterResourcePlacement: %w" , err )
257- }
258- }
259-
260220 // Create ResourceOverride with rules for each cluster
261221 overrideRules := make ([]placementv1beta1.OverrideRule , 0 , len (clusterNames ))
262222 for _ , clusterName := range clusterNames {
@@ -322,6 +282,47 @@ func (r *Reconciler) ensureMetricCollectorResources(
322282 }
323283 }
324284
285+ // Create ClusterResourcePlacement with PickFixed policy
286+ // CRP resource selector selects the namespace containing the MetricCollector
287+ crp := & placementv1beta1.ClusterResourcePlacement {
288+ ObjectMeta : metav1.ObjectMeta {
289+ Name : crpName ,
290+ Labels : map [string ]string {
291+ "approval-request" : approvalReq .Name ,
292+ "update-run" : updateRunName ,
293+ "stage" : stageName ,
294+ },
295+ },
296+ Spec : placementv1beta1.PlacementSpec {
297+ ResourceSelectors : []placementv1beta1.ResourceSelectorTerm {
298+ {
299+ Group : "" ,
300+ Version : "v1" ,
301+ Kind : "Namespace" ,
302+ Name : namespaceName ,
303+ },
304+ },
305+ Policy : & placementv1beta1.PlacementPolicy {
306+ PlacementType : placementv1beta1 .PickFixedPlacementType ,
307+ ClusterNames : clusterNames ,
308+ },
309+ },
310+ }
311+
312+ // Create or update CRP
313+ existingCRP := & placementv1beta1.ClusterResourcePlacement {}
314+ err = r .Client .Get (ctx , types.NamespacedName {Name : crpName }, existingCRP )
315+ if err != nil {
316+ if errors .IsNotFound (err ) {
317+ if err := r .Client .Create (ctx , crp ); err != nil {
318+ return fmt .Errorf ("failed to create ClusterResourcePlacement: %w" , err )
319+ }
320+ klog .V (2 ).InfoS ("Created ClusterResourcePlacement" , "crp" , crpName )
321+ } else {
322+ return fmt .Errorf ("failed to get ClusterResourcePlacement: %w" , err )
323+ }
324+ }
325+
325326 return nil
326327}
327328
0 commit comments