From f6cea372fdaec510a92d09229d20acd7eae227da Mon Sep 17 00:00:00 2001 From: Tiger Kaovilai Date: Fri, 5 May 2023 13:22:26 -0400 Subject: [PATCH] log volumes to backup to help debug why `IsPodRunning` is called. Signed-off-by: Tiger Kaovilai --- changelogs/unreleased/6232-kaovilai | 1 + pkg/podvolume/backupper.go | 2 +- pkg/podvolume/backupper_test.go | 65 +++++++++++++++++++++++++++++ 3 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 changelogs/unreleased/6232-kaovilai diff --git a/changelogs/unreleased/6232-kaovilai b/changelogs/unreleased/6232-kaovilai new file mode 100644 index 000000000..b3d112460 --- /dev/null +++ b/changelogs/unreleased/6232-kaovilai @@ -0,0 +1 @@ +log volumes to backup to help debug why `IsPodRunning` is called. \ No newline at end of file diff --git a/pkg/podvolume/backupper.go b/pkg/podvolume/backupper.go index 870300739..3e99636be 100644 --- a/pkg/podvolume/backupper.go +++ b/pkg/podvolume/backupper.go @@ -131,7 +131,7 @@ func (b *backupper) BackupPodVolumes(backup *velerov1api.Backup, pod *corev1api. if len(volumesToBackup) == 0 { return nil, nil } - + log.Infof("pod %s/%s has volumes to backup: %v", pod.Namespace, pod.Name, volumesToBackup) err := kube.IsPodRunning(pod) if err != nil { for _, volumeName := range volumesToBackup { diff --git a/pkg/podvolume/backupper_test.go b/pkg/podvolume/backupper_test.go index fb0cacd1a..f86d9ebc1 100644 --- a/pkg/podvolume/backupper_test.go +++ b/pkg/podvolume/backupper_test.go @@ -17,13 +17,19 @@ limitations under the License. package podvolume import ( + "bytes" "context" + "fmt" "testing" "github.com/pkg/errors" + "github.com/sirupsen/logrus" "github.com/stretchr/testify/assert" corev1api "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + + "github.com/vmware-tanzu/velero/internal/resourcepolicies" + velerov1api "github.com/vmware-tanzu/velero/pkg/apis/velero/v1" ) func TestIsHostPathVolume(t *testing.T) { @@ -139,3 +145,62 @@ func (g *fakePVGetter) Get(ctx context.Context, name string, opts metav1.GetOpti return nil, errors.New("item not found") } + +func Test_backupper_BackupPodVolumes_log_test(t *testing.T) { + type args struct { + backup *velerov1api.Backup + pod *corev1api.Pod + volumesToBackup []string + resPolicies *resourcepolicies.Policies + } + tests := []struct { + name string + args args + wantLog string + }{ + { + name: "backup pod volumes should log volume names", + args: args{ + backup: &velerov1api.Backup{ + ObjectMeta: metav1.ObjectMeta{ + Name: "backup-1", + Namespace: "ns-1", + }, + }, + pod: &corev1api.Pod{ + ObjectMeta: metav1.ObjectMeta{ + Name: "pod-1", + Namespace: "ns-1", + }, + Spec: corev1api.PodSpec{ + Volumes: []corev1api.Volume{ + { + Name: "vol-1", + }, + { + Name: "vol-2", + }, + }, + }, + }, + volumesToBackup: []string{"vol-1", "vol-2"}, + resPolicies: nil, + }, + wantLog: "pod ns-1/pod-1 has volumes to backup: [vol-1 vol-2]", + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + b := &backupper{ + ctx: context.Background(), + } + logOutput := bytes.Buffer{} + var log = logrus.New() + log.SetOutput(&logOutput) + b.BackupPodVolumes(tt.args.backup, tt.args.pod, tt.args.volumesToBackup, tt.args.resPolicies, log) + fmt.Println(logOutput.String()) + assert.Contains(t, logOutput.String(), tt.wantLog) + + }) + } +}