@@ -282,7 +282,8 @@ func (r *ResourceClient[T, U]) patchOwnedResource(ctx context.Context, owner U,
282282 return r .client .Patch (ctx , object , client .Apply , defaultFieldOwner , client .ForceOwnership )
283283}
284284
285- // normalize normalizes an object by setting its labels and owner references.
285+ // normalize normalizes an object by setting its labels and owner references. Any labels passed in as `extraLabels`
286+ // will potentially override those set by the ownership resolver.
286287func (r * ResourceClient [T , U ]) normalize (object client.Object , owner U , extraLabels ... map [string ]string ) error {
287288 kind , err := getGroupVersionKind (r .scheme , object )
288289 if err != nil {
@@ -293,6 +294,9 @@ func (r *ResourceClient[T, U]) normalize(object client.Object, owner U, extraLab
293294 return err
294295 }
295296
297+ // This needs to be set explicitly in order for SSA to function properly.
298+ // If an initialized pointer to a concrete CR has not specified its GVK
299+ // explicitly, SSA will fail.
296300 object .GetObjectKind ().SetGroupVersionKind (* kind )
297301
298302 labels := object .GetLabels ()
@@ -339,6 +343,7 @@ func (r *ResourceClient[T, U]) fetchExistingPools(ctx context.Context, cluster U
339343 return nil , fmt .Errorf ("constructing label selector: %w" , err )
340344 }
341345
346+ // based on https://github.com/kubernetes/kubernetes/blob/c90a4b16b6aa849ed362ee40997327db09e3a62d/pkg/controller/history/controller_history.go#L222
342347 revisions , err := r .listResources (ctx , & appsv1.ControllerRevision {}, client.MatchingLabelsSelector {
343348 Selector : selector ,
344349 })
0 commit comments