Skip to content

Commit c8bdce7

Browse files
authored
chore: switch to patch instead of update (#43)
* chore: switch to patch instead of update Signed-off-by: Artur Shad Nik <[email protected]> * chore: cleaup Signed-off-by: Artur Shad Nik <[email protected]> * chore: bump e2e addon check timeout Signed-off-by: Artur Shad Nik <[email protected]> * test: update support bundle config Signed-off-by: Artur Shad Nik <[email protected]> --------- Signed-off-by: Artur Shad Nik <[email protected]>
1 parent e2d71be commit c8bdce7

File tree

3 files changed

+36
-11
lines changed

3 files changed

+36
-11
lines changed

fleetconfig-controller/internal/controller/addon.go

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@ package controller
22

33
import (
44
"context"
5+
"encoding/json"
56
"fmt"
7+
"maps"
68
"net/url"
79
"os/exec"
810
"slices"
@@ -185,11 +187,14 @@ func labelConfigurationResources(ctx context.Context, addonC *addonapi.Clientset
185187
if addonTemplate.Labels == nil {
186188
addonTemplate.Labels = make(map[string]string)
187189
}
188-
for k, v := range v1alpha1.ManagedByLabels {
189-
addonTemplate.Labels[k] = v
190+
maps.Copy(addonTemplate.Labels, v1alpha1.ManagedByLabels)
191+
192+
patchBytes, err := json.Marshal(labelPatchData(addonTemplate.Labels))
193+
if err != nil {
194+
return fmt.Errorf("failed to marshal patch data for AddOnTemplate %s: %v", addonTemplateName, err)
190195
}
191196

192-
_, err = addonC.AddonV1alpha1().AddOnTemplates().Update(ctx, addonTemplate, metav1.UpdateOptions{})
197+
_, err = addonC.AddonV1alpha1().AddOnTemplates().Patch(ctx, addonTemplate.Name, types.MergePatchType, patchBytes, metav1.PatchOptions{})
193198
if err != nil {
194199
return fmt.Errorf("failed to update AddOnTemplate %s with labels: %v", addonTemplateName, err)
195200
}
@@ -205,11 +210,14 @@ func labelConfigurationResources(ctx context.Context, addonC *addonapi.Clientset
205210
if clusterMgmtAddOn.Labels == nil {
206211
clusterMgmtAddOn.Labels = make(map[string]string)
207212
}
208-
for k, v := range v1alpha1.ManagedByLabels {
209-
clusterMgmtAddOn.Labels[k] = v
213+
maps.Copy(clusterMgmtAddOn.Labels, v1alpha1.ManagedByLabels)
214+
215+
patchBytes, err = json.Marshal(labelPatchData(clusterMgmtAddOn.Labels))
216+
if err != nil {
217+
return fmt.Errorf("failed to marshal patch data for ClusterManagementAddOn %s: %v", addon.Name, err)
210218
}
211219

212-
_, err = addonC.AddonV1alpha1().ClusterManagementAddOns().Update(ctx, clusterMgmtAddOn, metav1.UpdateOptions{})
220+
_, err = addonC.AddonV1alpha1().ClusterManagementAddOns().Patch(ctx, clusterMgmtAddOn.Name, types.MergePatchType, patchBytes, metav1.PatchOptions{})
213221
if err != nil {
214222
return fmt.Errorf("failed to update ClusterManagementAddOn %s with labels: %v", addon.Name, err)
215223
}
@@ -426,11 +434,14 @@ func labelManagedClusterAddOn(ctx context.Context, addonC *addonapi.Clientset, s
426434
if mcao.Labels == nil {
427435
mcao.Labels = make(map[string]string)
428436
}
429-
for k, v := range v1alpha1.ManagedByLabels {
430-
mcao.Labels[k] = v
437+
maps.Copy(mcao.Labels, v1alpha1.ManagedByLabels)
438+
439+
patchBytes, err := json.Marshal(labelPatchData(mcao.Labels))
440+
if err != nil {
441+
return fmt.Errorf("failed to marshal patch data for ManagedClusterAddOn %s: %v", addonName, err)
431442
}
432443

433-
_, err = addonC.AddonV1alpha1().ManagedClusterAddOns(spokeName).Update(ctx, mcao, metav1.UpdateOptions{})
444+
_, err = addonC.AddonV1alpha1().ManagedClusterAddOns(spokeName).Patch(ctx, mcao.Name, types.MergePatchType, patchBytes, metav1.PatchOptions{})
434445
if err != nil {
435446
return fmt.Errorf("failed to update ManagedClusterAddOn %s for spoke %s with labels: %v", addonName, spokeName, err)
436447
}
@@ -464,3 +475,11 @@ func handleAddonDisable(ctx context.Context, spokeName string, addons []string)
464475
logger.V(1).Info("disabled addons", "managedcluster", spokeName, "addons", addons, "output", string(stdout))
465476
return nil
466477
}
478+
479+
func labelPatchData(labels map[string]string) map[string]any {
480+
return map[string]any{
481+
"metadata": map[string]any{
482+
"labels": labels,
483+
},
484+
}
485+
}

fleetconfig-controller/test/e2e/helper.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -387,13 +387,19 @@ func ensureAddonCreated(tc *E2EContext, addonIdx int) {
387387
utils.WarnError(err, "failed to get ManagedClusterAddOn %s in namespace %s", addon.name, spokeName)
388388
return err
389389
}
390+
managedBy, ok := mcao.Labels[v1alpha1.LabelAddOnManagedBy]
391+
if !ok || managedBy != "fleetconfig-controller" {
392+
err := fmt.Errorf("did not find expected label %s on ManagedClusterAddOn", v1alpha1.LabelAddOnManagedBy)
393+
utils.WarnError(err, "ManagedClusterAddOn not managed by fleetconfig-controller")
394+
return err
395+
}
390396
ns := corev1.Namespace{}
391397
if err := tc.kClientSpoke.Get(tc.ctx, ktypes.NamespacedName{Name: addon.namespace}, &ns); err != nil {
392398
utils.WarnError(err, "failed to get namespace %s in spoke cluster", addon.namespace)
393399
return err
394400
}
395401
return nil
396-
}, 1*time.Minute, 1*time.Second).Should(Succeed())
402+
}, 2*time.Minute, 1*time.Second).Should(Succeed())
397403
}
398404

399405
func updateAddon(tc *E2EContext, fc *v1alpha1.FleetConfig) {

fleetconfig-controller/test/utils/resources/support-bundle.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ spec:
3939
name: hub-kubeconfig-secret
4040
- logs:
4141
selector:
42-
- app.kubernetes.io/name=fleetconfig
42+
- app.kubernetes.io/name=fleetconfig-controller
4343
namespace: fleetconfig-system
4444
name: fleetconfig/fleetconfig
4545
- logs:

0 commit comments

Comments
 (0)