Skip to content

Commit dd631b3

Browse files
committed
Tests: Use Patch instead of Update
This commit refactors tests to use Patch client calls instead of Updates. Signed-off-by: Alvaro Romero <alromero@redhat.com> Assisted-by: Claude <noreply@anthropic.com>
1 parent 92661ff commit dd631b3

4 files changed

Lines changed: 70 additions & 16 deletions

File tree

tests/framework/framework.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import (
2525
kv1 "kubevirt.io/api/core/v1"
2626
"kubevirt.io/client-go/kubecli"
2727
"kubevirt.io/client-go/log"
28+
"kubevirt.io/kubevirt-velero-plugin/tests/patch"
2829
)
2930

3031
const (
@@ -495,10 +496,12 @@ func UpdateVMStateStorageClass(kvClient kubecli.KubevirtClient) {
495496
kv := GetKubevirt(kvClient)
496497
kv.Spec.Configuration.VMStateStorageClass = getStorageClassFromEnv()
497498

498-
data, err := json.Marshal(kv.Spec)
499+
patchData, err := patch.New(
500+
patch.WithReplace("/spec", kv.Spec),
501+
).GeneratePayload()
499502
gomega.Expect(err).ToNot(gomega.HaveOccurred())
500-
patchData := fmt.Sprintf(`[{ "op": "replace", "path": "/spec", "value": %s }]`, string(data))
501-
_, err = kvClient.KubeVirt(kv.Namespace).Patch(context.Background(), kv.Name, types.JSONPatchType, []byte(patchData), metav1.PatchOptions{})
503+
504+
_, err = kvClient.KubeVirt(kv.Namespace).Patch(context.Background(), kv.Name, types.JSONPatchType, patchData, metav1.PatchOptions{})
502505
gomega.Expect(err).ToNot(gomega.HaveOccurred())
503506
}
504507

tests/pvc_vs_labeling_test.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,15 @@ import (
99
. "github.com/onsi/gomega"
1010
velerov1api "github.com/vmware-tanzu/velero/pkg/apis/velero/v1"
1111
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
12+
"k8s.io/apimachinery/pkg/types"
1213
"k8s.io/apimachinery/pkg/util/wait"
1314
"k8s.io/utils/strings/slices"
1415

1516
kvv1 "kubevirt.io/api/core/v1"
1617
"kubevirt.io/kubevirt-velero-plugin/pkg/util"
1718
"kubevirt.io/kubevirt-velero-plugin/tests/framework"
1819
. "kubevirt.io/kubevirt-velero-plugin/tests/framework/matcher"
20+
"kubevirt.io/kubevirt-velero-plugin/tests/patch"
1921
)
2022

2123
var _ = Describe("PVC and VolumeSnapshot Labeling", func() {
@@ -67,7 +69,11 @@ var _ = Describe("PVC and VolumeSnapshot Labeling", func() {
6769
pvc.Labels = make(map[string]string)
6870
}
6971
pvc.Labels[util.PVCUIDLabel] = userDefinedValue
70-
_, err = f.K8sClient.CoreV1().PersistentVolumeClaims(f.Namespace.Name).Update(context.Background(), pvc, metav1.UpdateOptions{})
72+
patchData, err := patch.New(
73+
patch.WithReplace("/metadata/labels", pvc.Labels),
74+
).GeneratePayload()
75+
Expect(err).ToNot(HaveOccurred())
76+
_, err = f.K8sClient.CoreV1().PersistentVolumeClaims(f.Namespace.Name).Patch(context.Background(), pvc.Name, types.JSONPatchType, patchData, metav1.PatchOptions{})
7177
Expect(err).ToNot(HaveOccurred())
7278

7379
By("Creating backup")

tests/resource_filtering_test.go

Lines changed: 38 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,15 @@ import (
1010
"k8s.io/utils/strings/slices"
1111
"kubevirt.io/client-go/kubecli"
1212
"kubevirt.io/kubevirt-velero-plugin/tests/framework"
13+
"kubevirt.io/kubevirt-velero-plugin/tests/patch"
1314

1415
. "github.com/onsi/ginkgo/v2"
1516
. "github.com/onsi/gomega"
1617
velerov1api "github.com/vmware-tanzu/velero/pkg/apis/velero/v1"
1718
v1 "k8s.io/api/core/v1"
1819
apierrs "k8s.io/apimachinery/pkg/api/errors"
1920
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
21+
"k8s.io/apimachinery/pkg/types"
2022
kvv1 "kubevirt.io/api/core/v1"
2123
cdiv1 "kubevirt.io/containerized-data-importer-api/pkg/apis/core/v1beta1"
2224
. "kubevirt.io/kubevirt-velero-plugin/tests/framework/matcher"
@@ -2651,8 +2653,14 @@ var _ = Describe("Resource excludes", func() {
26512653
retryOnceOnErr(
26522654
func() error {
26532655
pod := framework.FindLauncherPod(f.K8sClient, f.Namespace.Name, vmName)
2654-
pod.SetLabels(addExcludeLabel(pod.GetLabels()))
2655-
_, err := f.K8sClient.CoreV1().Pods(f.Namespace.Name).Update(context.TODO(), &pod, metav1.UpdateOptions{})
2656+
newLabels := addExcludeLabel(pod.GetLabels())
2657+
patchData, err := patch.New(
2658+
patch.WithReplace("/metadata/labels", newLabels),
2659+
).GeneratePayload()
2660+
if err != nil {
2661+
return err
2662+
}
2663+
_, err = f.K8sClient.CoreV1().Pods(f.Namespace.Name).Patch(context.TODO(), pod.Name, types.JSONPatchType, patchData, metav1.PatchOptions{})
26562664
return err
26572665
}).Should(BeNil())
26582666
}
@@ -3465,7 +3473,13 @@ func updateVm(kvClient kubecli.KubevirtClient, namespace string, name string,
34653473
}
34663474
vm = update(vm)
34673475

3468-
_, err = kvClient.VirtualMachine(namespace).Update(context.Background(), vm, metav1.UpdateOptions{})
3476+
patchData, err := patch.New(
3477+
patch.WithReplace("/metadata/labels", vm.Labels),
3478+
).GeneratePayload()
3479+
if err != nil {
3480+
return err
3481+
}
3482+
_, err = kvClient.VirtualMachine(namespace).Patch(context.Background(), vm.Name, types.JSONPatchType, patchData, metav1.PatchOptions{})
34693483
return err
34703484
}
34713485
}
@@ -3479,7 +3493,13 @@ func updateVmi(kvClient kubecli.KubevirtClient, namespace string, name string,
34793493
}
34803494
vmi = update(vmi)
34813495

3482-
_, err = kvClient.VirtualMachineInstance(namespace).Update(context.Background(), vmi, metav1.UpdateOptions{})
3496+
patchData, err := patch.New(
3497+
patch.WithReplace("/metadata/labels", vmi.Labels),
3498+
).GeneratePayload()
3499+
if err != nil {
3500+
return err
3501+
}
3502+
_, err = kvClient.VirtualMachineInstance(namespace).Patch(context.Background(), vmi.Name, types.JSONPatchType, patchData, metav1.PatchOptions{})
34833503
return err
34843504
}
34853505
}
@@ -3493,7 +3513,13 @@ func updatePvc(client *kubernetes.Clientset, namespace string, name string,
34933513
}
34943514
pvc = update(pvc)
34953515

3496-
_, err = client.CoreV1().PersistentVolumeClaims(namespace).Update(context.TODO(), pvc, metav1.UpdateOptions{})
3516+
patchData, err := patch.New(
3517+
patch.WithReplace("/metadata/labels", pvc.Labels),
3518+
).GeneratePayload()
3519+
if err != nil {
3520+
return err
3521+
}
3522+
_, err = client.CoreV1().PersistentVolumeClaims(namespace).Patch(context.TODO(), pvc.Name, types.JSONPatchType, patchData, metav1.PatchOptions{})
34973523
return err
34983524
}
34993525
}
@@ -3506,7 +3532,13 @@ func updateDataVolume(kvClient kubecli.KubevirtClient, namespace string, name st
35063532
}
35073533
dv = update(dv)
35083534

3509-
_, err = kvClient.CdiClient().CdiV1beta1().DataVolumes(namespace).Update(context.TODO(), dv, metav1.UpdateOptions{})
3535+
patchData, err := patch.New(
3536+
patch.WithReplace("/metadata/labels", dv.Labels),
3537+
).GeneratePayload()
3538+
if err != nil {
3539+
return err
3540+
}
3541+
_, err = kvClient.CdiClient().CdiV1beta1().DataVolumes(namespace).Patch(context.TODO(), dv.Name, types.JSONPatchType, patchData, metav1.PatchOptions{})
35103542
return err
35113543
}
35123544
}

tests/vm_backup_test.go

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
kubecli "kubevirt.io/client-go/kubecli"
2121
"kubevirt.io/kubevirt-velero-plugin/tests/framework"
2222
. "kubevirt.io/kubevirt-velero-plugin/tests/framework/matcher"
23+
"kubevirt.io/kubevirt-velero-plugin/tests/patch"
2324
)
2425

2526
const (
@@ -455,18 +456,30 @@ var _ = Describe("[smoke] VM Backup", func() {
455456
updateInstancetypeFunc := func() {
456457
instancetype, err := f.KvClient.VirtualMachineInstancetype(f.Namespace.Name).Get(context.Background(), instancetypeName, metav1.GetOptions{})
457458
Expect(err).ToNot(HaveOccurred())
458-
instancetype.Spec.CPU.Guest = instancetype.Spec.CPU.Guest + 1
459-
instancetype.Spec.Memory.Guest.Add(resource.MustParse("128Mi"))
460-
_, err = f.KvClient.VirtualMachineInstancetype(f.Namespace.Name).Update(context.Background(), instancetype, metav1.UpdateOptions{})
459+
newCPU := instancetype.Spec.CPU.Guest + 1
460+
newMemory := instancetype.Spec.Memory.Guest.DeepCopy()
461+
newMemory.Add(resource.MustParse("128Mi"))
462+
patchData, err := patch.New(
463+
patch.WithReplace("/spec/cpu/guest", newCPU),
464+
patch.WithReplace("/spec/memory/guest", newMemory.String()),
465+
).GeneratePayload()
466+
Expect(err).ToNot(HaveOccurred())
467+
_, err = f.KvClient.VirtualMachineInstancetype(f.Namespace.Name).Patch(context.Background(), instancetype.Name, types.JSONPatchType, patchData, metav1.PatchOptions{})
461468
Expect(err).ToNot(HaveOccurred())
462469
}
463470

464471
updateClusterInstancetypeFunc := func() {
465472
instancetype, err := f.KvClient.VirtualMachineClusterInstancetype().Get(context.Background(), instancetypeName, metav1.GetOptions{})
466473
Expect(err).ToNot(HaveOccurred())
467-
instancetype.Spec.CPU.Guest = instancetype.Spec.CPU.Guest + 1
468-
instancetype.Spec.Memory.Guest.Add(resource.MustParse("128Mi"))
469-
_, err = f.KvClient.VirtualMachineClusterInstancetype().Update(context.Background(), instancetype, metav1.UpdateOptions{})
474+
newCPU := instancetype.Spec.CPU.Guest + 1
475+
newMemory := instancetype.Spec.Memory.Guest.DeepCopy()
476+
newMemory.Add(resource.MustParse("128Mi"))
477+
patchData, err := patch.New(
478+
patch.WithReplace("/spec/cpu/guest", newCPU),
479+
patch.WithReplace("/spec/memory/guest", newMemory.String()),
480+
).GeneratePayload()
481+
Expect(err).ToNot(HaveOccurred())
482+
_, err = f.KvClient.VirtualMachineClusterInstancetype().Patch(context.Background(), instancetype.Name, types.JSONPatchType, patchData, metav1.PatchOptions{})
470483
Expect(err).ToNot(HaveOccurred())
471484
}
472485

0 commit comments

Comments
 (0)