mirror of
https://github.com/vmware-tanzu/velero.git
synced 2026-01-07 05:46:37 +00:00
Include CSI volume snapshot information in velero backup describe (#2448)
* Add download methods for CSI objects Signed-off-by: Nolan Brubaker <brubakern@vmware.com> * Add support for downloading CSI volume objects Signed-off-by: Nolan Brubaker <brubakern@vmware.com> * Add new methods to mock. Remove generated information from file since mockery no longer appears to work. It isn't maintained anymore and doesn't support go module-based projects. Signed-off-by: Nolan Brubaker <brubakern@vmware.com> * Add describe command for CSI Signed-off-by: Nolan Brubaker <brubakern@vmware.com> * Add csi package with helpers Signed-off-by: Nolan Brubaker <brubakern@vmware.com> * Remove duplicate import from server Signed-off-by: Nolan Brubaker <brubakern@vmware.com> * Remove CSI API that will not be used with describe Signed-off-by: Nolan Brubaker <brubakern@vmware.com> * Add VolumeSnapshotContents output to describe command Signed-off-by: Nolan Brubaker <brubakern@vmware.com> * Document NewCSIListOptions function Signed-off-by: Nolan Brubaker <brubakern@vmware.com> * Document csi package Signed-off-by: Nolan Brubaker <brubakern@vmware.com> * Remove stutter in function name Signed-off-by: Nolan Brubaker <brubakern@vmware.com> * Fix CI Signed-off-by: Nolan Brubaker <brubakern@vmware.com> * Fix nil pointer error when not using CSI snapshots Signed-off-by: Nolan Brubaker <brubakern@vmware.com> * Remove unused CSI download request kinds Signed-off-by: Nolan Brubaker <brubakern@vmware.com> * Add back mocks Signed-off-by: Nolan Brubaker <brubakern@vmware.com> * Change persistent volumes to velero-native snapshots Signed-off-by: Nolan Brubaker <brubakern@vmware.com> * Remove unused function Signed-off-by: Nolan Brubaker <brubakern@vmware.com> * Address review feedback Signed-off-by: Nolan Brubaker <brubakern@vmware.com> * Add changelog Signed-off-by: Nolan Brubaker <brubakern@vmware.com> * Remove unnecessary doc.go Signed-off-by: Nolan Brubaker <brubakern@vmware.com>
This commit is contained in:
@@ -23,11 +23,15 @@ import (
|
||||
"github.com/spf13/cobra"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
|
||||
v1 "github.com/vmware-tanzu/velero/pkg/apis/velero/v1"
|
||||
snapshotv1beta1api "github.com/kubernetes-csi/external-snapshotter/v2/pkg/apis/volumesnapshot/v1beta1"
|
||||
snapshotv1beta1client "github.com/kubernetes-csi/external-snapshotter/v2/pkg/client/clientset/versioned"
|
||||
|
||||
velerov1api "github.com/vmware-tanzu/velero/pkg/apis/velero/v1"
|
||||
pkgbackup "github.com/vmware-tanzu/velero/pkg/backup"
|
||||
"github.com/vmware-tanzu/velero/pkg/client"
|
||||
"github.com/vmware-tanzu/velero/pkg/cmd"
|
||||
"github.com/vmware-tanzu/velero/pkg/cmd/util/output"
|
||||
"github.com/vmware-tanzu/velero/pkg/features"
|
||||
"github.com/vmware-tanzu/velero/pkg/label"
|
||||
)
|
||||
|
||||
@@ -51,9 +55,9 @@ func NewDescribeCommand(f client.Factory, use string) *cobra.Command {
|
||||
veleroClient, err := f.Client()
|
||||
cmd.CheckError(err)
|
||||
|
||||
var backups *v1.BackupList
|
||||
var backups *velerov1api.BackupList
|
||||
if len(args) > 0 {
|
||||
backups = new(v1.BackupList)
|
||||
backups = new(velerov1api.BackupList)
|
||||
for _, name := range args {
|
||||
backup, err := veleroClient.VeleroV1().Backups(f.Namespace()).Get(name, metav1.GetOptions{})
|
||||
cmd.CheckError(err)
|
||||
@@ -78,7 +82,23 @@ func NewDescribeCommand(f client.Factory, use string) *cobra.Command {
|
||||
fmt.Fprintf(os.Stderr, "error getting PodVolumeBackups for backup %s: %v\n", backup.Name, err)
|
||||
}
|
||||
|
||||
s := output.DescribeBackup(&backup, deleteRequestList.Items, podVolumeBackupList.Items, details, veleroClient, insecureSkipTLSVerify, caCertFile)
|
||||
var csiClient *snapshotv1beta1client.Clientset
|
||||
// declare vscList up here since it may be empty and we'll pass the empty Items field into DescribeBackup
|
||||
vscList := new(snapshotv1beta1api.VolumeSnapshotContentList)
|
||||
if features.IsEnabled(velerov1api.CSIFeatureFlag) {
|
||||
clientConfig, err := f.ClientConfig()
|
||||
cmd.CheckError(err)
|
||||
|
||||
csiClient, err = snapshotv1beta1client.NewForConfig(clientConfig)
|
||||
cmd.CheckError(err)
|
||||
|
||||
vscList, err = csiClient.SnapshotV1beta1().VolumeSnapshotContents().List(opts)
|
||||
if err != nil {
|
||||
fmt.Fprintf(os.Stderr, "error getting VolumeSnapshotContent objects for backup %s: %v\n", backup.Name, err)
|
||||
}
|
||||
}
|
||||
|
||||
s := output.DescribeBackup(&backup, deleteRequestList.Items, podVolumeBackupList.Items, vscList.Items, details, veleroClient, insecureSkipTLSVerify, caCertFile)
|
||||
if first {
|
||||
first = false
|
||||
fmt.Print(s)
|
||||
|
||||
Reference in New Issue
Block a user