@@ -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"
@@ -2606,53 +2608,69 @@ var _ = Describe("Resource excludes", func() {
26062608 })
26072609
26082610 Context ("Exclude label" , func () {
2609- addExcludeLabel := func (labels map [string ]string ) map [string ]string {
2610- if labels == nil {
2611- labels = make (map [string ]string )
2612- }
2613- labels ["velero.io/exclude-from-backup" ] = "true"
2614- return labels
2615- }
2616-
26172611 addExcludeLabelToDV := func (name string ) {
2618- updateFunc := func (dataVolume * cdiv1.DataVolume ) * cdiv1.DataVolume {
2619- dataVolume .SetLabels (addExcludeLabel (dataVolume .GetLabels ()))
2620- return dataVolume
2621- }
2622-
2623- retryOnceOnErr (updateDataVolume (f .KvClient , f .Namespace .Name , name , updateFunc )).Should (BeNil ())
2612+ retryOnceOnErr (func () error {
2613+ patchData , err := patch .New (
2614+ patch .WithAdd (patch .LabelPath ("velero.io/exclude-from-backup" ), "true" ),
2615+ ).GeneratePayload ()
2616+ if err != nil {
2617+ return err
2618+ }
2619+ _ , err = f .KvClient .CdiClient ().CdiV1beta1 ().DataVolumes (f .Namespace .Name ).Patch (context .TODO (), name , types .JSONPatchType , patchData , metav1.PatchOptions {})
2620+ return err
2621+ }).Should (BeNil ())
26242622 }
26252623
26262624 addExcludeLabelToPVC := func (name string ) {
2627- update := func (pvc * v1.PersistentVolumeClaim ) * v1.PersistentVolumeClaim {
2628- pvc .SetLabels (addExcludeLabel (pvc .GetLabels ()))
2629- return pvc
2630- }
2631- retryOnceOnErr (updatePvc (f .K8sClient , f .Namespace .Name , name , update )).Should (BeNil ())
2625+ retryOnceOnErr (func () error {
2626+ patchData , err := patch .New (
2627+ patch .WithAdd (patch .LabelPath ("velero.io/exclude-from-backup" ), "true" ),
2628+ ).GeneratePayload ()
2629+ if err != nil {
2630+ return err
2631+ }
2632+ _ , err = f .K8sClient .CoreV1 ().PersistentVolumeClaims (f .Namespace .Name ).Patch (context .TODO (), name , types .JSONPatchType , patchData , metav1.PatchOptions {})
2633+ return err
2634+ }).Should (BeNil ())
26322635 }
26332636
26342637 addExcludeLabelToVMI := func (name string ) {
2635- update := func (vmi * kvv1.VirtualMachineInstance ) * kvv1.VirtualMachineInstance {
2636- vmi .SetLabels (addExcludeLabel (vmi .GetLabels ()))
2637- return vmi
2638- }
2639- retryOnceOnErr (updateVmi (f .KvClient , f .Namespace .Name , name , update )).Should (BeNil ())
2638+ retryOnceOnErr (func () error {
2639+ patchData , err := patch .New (
2640+ patch .WithAdd (patch .LabelPath ("velero.io/exclude-from-backup" ), "true" ),
2641+ ).GeneratePayload ()
2642+ if err != nil {
2643+ return err
2644+ }
2645+ _ , err = f .KvClient .VirtualMachineInstance (f .Namespace .Name ).Patch (context .Background (), name , types .JSONPatchType , patchData , metav1.PatchOptions {})
2646+ return err
2647+ }).Should (BeNil ())
26402648 }
26412649
26422650 addExcludeLabelToVM := func (name string ) {
2643- update := func (vm * kvv1.VirtualMachine ) * kvv1.VirtualMachine {
2644- vm .SetLabels (addExcludeLabel (vm .GetLabels ()))
2645- return vm
2646- }
2647- retryOnceOnErr (updateVm (f .KvClient , f .Namespace .Name , name , update )).Should (BeNil ())
2651+ retryOnceOnErr (func () error {
2652+ patchData , err := patch .New (
2653+ patch .WithAdd (patch .LabelPath ("velero.io/exclude-from-backup" ), "true" ),
2654+ ).GeneratePayload ()
2655+ if err != nil {
2656+ return err
2657+ }
2658+ _ , err = f .KvClient .VirtualMachine (f .Namespace .Name ).Patch (context .Background (), name , types .JSONPatchType , patchData , metav1.PatchOptions {})
2659+ return err
2660+ }).Should (BeNil ())
26482661 }
26492662
26502663 addExcludeLabelToLauncherPodForVM := func (vmName string ) {
26512664 retryOnceOnErr (
26522665 func () error {
26532666 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 {})
2667+ patchData , err := patch .New (
2668+ patch .WithAdd (patch .LabelPath ("velero.io/exclude-from-backup" ), "true" ),
2669+ ).GeneratePayload ()
2670+ if err != nil {
2671+ return err
2672+ }
2673+ _ , err = f .K8sClient .CoreV1 ().Pods (f .Namespace .Name ).Patch (context .TODO (), pod .Name , types .JSONPatchType , patchData , metav1.PatchOptions {})
26562674 return err
26572675 }).Should (BeNil ())
26582676 }
@@ -3456,60 +3474,8 @@ func addExpectedPVs(client *kubernetes.Clientset, namespace string, resources ma
34563474 resources ["PersistentVolume" ] = pvs
34573475}
34583476
3459- func updateVm (kvClient kubecli.KubevirtClient , namespace string , name string ,
3460- update func (* kvv1.VirtualMachine ) * kvv1.VirtualMachine ) func () error {
3461- return func () error {
3462- vm , err := kvClient .VirtualMachine (namespace ).Get (context .Background (), name , metav1.GetOptions {})
3463- if err != nil {
3464- return err
3465- }
3466- vm = update (vm )
34673477
3468- _ , err = kvClient .VirtualMachine (namespace ).Update (context .Background (), vm , metav1.UpdateOptions {})
3469- return err
3470- }
3471- }
3472-
3473- func updateVmi (kvClient kubecli.KubevirtClient , namespace string , name string ,
3474- update func (* kvv1.VirtualMachineInstance ) * kvv1.VirtualMachineInstance ) func () error {
3475- return func () error {
3476- vmi , err := kvClient .VirtualMachineInstance (namespace ).Get (context .Background (), name , metav1.GetOptions {})
3477- if err != nil {
3478- return err
3479- }
3480- vmi = update (vmi )
3481-
3482- _ , err = kvClient .VirtualMachineInstance (namespace ).Update (context .Background (), vmi , metav1.UpdateOptions {})
3483- return err
3484- }
3485- }
3486-
3487- func updatePvc (client * kubernetes.Clientset , namespace string , name string ,
3488- update func (* v1.PersistentVolumeClaim ) * v1.PersistentVolumeClaim ) func () error {
3489- return func () error {
3490- pvc , err := framework .FindPVC (client , namespace , name )
3491- if err != nil {
3492- return err
3493- }
3494- pvc = update (pvc )
34953478
3496- _ , err = client .CoreV1 ().PersistentVolumeClaims (namespace ).Update (context .TODO (), pvc , metav1.UpdateOptions {})
3497- return err
3498- }
3499- }
3500- func updateDataVolume (kvClient kubecli.KubevirtClient , namespace string , name string ,
3501- update func (dataVolume * cdiv1.DataVolume ) * cdiv1.DataVolume ) func () error {
3502- return func () error {
3503- dv , err := framework .FindDataVolume (kvClient , namespace , name )
3504- if err != nil {
3505- return err
3506- }
3507- dv = update (dv )
3508-
3509- _ , err = kvClient .CdiClient ().CdiV1beta1 ().DataVolumes (namespace ).Update (context .TODO (), dv , metav1.UpdateOptions {})
3510- return err
3511- }
3512- }
35133479
35143480func retryOnceOnErr (f func () error ) Assertion {
35153481 err := f ()
0 commit comments