5
5
"fmt"
6
6
"time"
7
7
8
+ snapshotv1api "github.com/kubernetes-csi/external-snapshotter/client/v4/apis/volumesnapshot/v1"
9
+ snapshotterClientSet "github.com/kubernetes-csi/external-snapshotter/client/v4/clientset/versioned"
10
+
8
11
snapmoverv1alpha1 "github.com/konveyor/volume-snapshot-mover/api/v1alpha1"
9
12
"github.com/pkg/errors"
10
13
"github.com/sirupsen/logrus"
@@ -37,7 +40,7 @@ func GetVolumeSnapMoverClient() (kbclient.Client, error) {
37
40
return client , err
38
41
}
39
42
40
- func DeleteVSBsIfComplete (backupName string , log logrus.FieldLogger ) error {
43
+ func CleanupDatamoverArtifacts (backupName string , log logrus.FieldLogger , vscList snapshotv1api. VolumeSnapshotContentList , volumeSnapshotClient snapshotterClientSet. Interface ) error {
41
44
volumeSnapMoverClient , err := GetVolumeSnapMoverClient ()
42
45
if err != nil {
43
46
log .Errorf (err .Error ())
@@ -55,6 +58,7 @@ func DeleteVSBsIfComplete(backupName string, log logrus.FieldLogger) error {
55
58
return err
56
59
}
57
60
61
+ // clean up VSBs as well as VSCs, VSB existence implies that the VSCs are from datamover workflow
58
62
if len (VSBList .Items ) > 0 {
59
63
err = CheckIfVolumeSnapshotBackupsAreComplete (context .Background (), VSBList , log )
60
64
if err != nil {
@@ -71,6 +75,15 @@ func DeleteVSBsIfComplete(backupName string, log logrus.FieldLogger) error {
71
75
return err
72
76
}
73
77
}
78
+
79
+ // Delete the VSCs
80
+ for _ , vsc := range vscList .Items {
81
+ log .Infof ("Cleaning up datamover VSC: %s" , vsc .Name )
82
+ err := volumeSnapshotClient .SnapshotV1 ().VolumeSnapshotContents ().Delete (context .TODO (), vsc .Name , metav1.DeleteOptions {})
83
+ if err != nil {
84
+ log .Errorf ("fail to delete VolumeSnapshotContent %s: %s" , vsc .Namespace , err .Error ())
85
+ }
86
+ }
74
87
}
75
88
return nil
76
89
}
0 commit comments