From f1ddf0a6a2e3ce17b104133b74a3a74631ce99a8 Mon Sep 17 00:00:00 2001 From: Ming Date: Mon, 3 Apr 2023 08:09:55 +0000 Subject: [PATCH] Add display of resource policies name in describe backup output Signed-off-by: Ming --- pkg/cmd/util/output/backup_describer.go | 13 +++++++++++++ pkg/cmd/util/output/backup_structured_describer.go | 13 +++++++++++++ pkg/cmd/util/output/schedule_describer.go | 5 +++++ 3 files changed, 31 insertions(+) diff --git a/pkg/cmd/util/output/backup_describer.go b/pkg/cmd/util/output/backup_describer.go index 3baea33fd..a4e913e07 100644 --- a/pkg/cmd/util/output/backup_describer.go +++ b/pkg/cmd/util/output/backup_describer.go @@ -24,6 +24,7 @@ import ( "sort" "strings" + v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" snapshotv1api "github.com/kubernetes-csi/external-snapshotter/client/v4/apis/volumesnapshot/v1" @@ -83,6 +84,11 @@ func DescribeBackup( d.Printf("Phase:\t%s%s\n", phaseString, logsNote) + if backup.Spec.ResourcePolicy != nil { + d.Println() + DescribeResourcePolicies(d, backup.Spec.ResourcePolicy) + } + status := backup.Status if len(status.ValidationErrors) > 0 { d.Println() @@ -118,6 +124,13 @@ func DescribeBackup( }) } +// DescribeResourcePolicies describes resource policiesin human-readable format +func DescribeResourcePolicies(d *Describer, resPolicies *v1.TypedLocalObjectReference) { + d.Printf("Resource policies:\n") + d.Printf("\tType:\t%s\n", resPolicies.Kind) + d.Printf("\tName:\t%s\n", resPolicies.Name) +} + // DescribeBackupSpec describes a backup spec in human-readable format. func DescribeBackupSpec(d *Describer, spec velerov1api.BackupSpec) { // TODO make a helper for this and use it in all the describers. diff --git a/pkg/cmd/util/output/backup_structured_describer.go b/pkg/cmd/util/output/backup_structured_describer.go index a20f8d229..3ffc967d5 100644 --- a/pkg/cmd/util/output/backup_structured_describer.go +++ b/pkg/cmd/util/output/backup_structured_describer.go @@ -23,6 +23,7 @@ import ( "fmt" "strings" + v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" snapshotv1api "github.com/kubernetes-csi/external-snapshotter/client/v4/apis/volumesnapshot/v1" @@ -56,6 +57,10 @@ func DescribeBackupInSF( d.Describe("phase", backup.Status.Phase) + if backup.Spec.ResourcePolicy != nil { + DescribeResourcePoliciesInSF(d, backup.Spec.ResourcePolicy) + } + status := backup.Status if len(status.ValidationErrors) > 0 { d.Describe("validationErrors", status.ValidationErrors) @@ -503,6 +508,14 @@ func DescribeBackupResultsInSF(ctx context.Context, kbClient kbclient.Client, d } } +// DescribeResourcePoliciesInSF describes resource policies in structured format. +func DescribeResourcePoliciesInSF(d *StructuredDescriber, resPolicies *v1.TypedLocalObjectReference) { + policiesInfo := make(map[string]interface{}) + policiesInfo["type"] = resPolicies.Kind + policiesInfo["name"] = resPolicies.Name + d.Describe("resourcePolicies", policiesInfo) +} + func describeResultInSF(m map[string]interface{}, result results.Result) { m["velero"], m["cluster"], m["namespace"] = []string{}, []string{}, []string{} diff --git a/pkg/cmd/util/output/schedule_describer.go b/pkg/cmd/util/output/schedule_describer.go index 48f3669db..57bd1726d 100644 --- a/pkg/cmd/util/output/schedule_describer.go +++ b/pkg/cmd/util/output/schedule_describer.go @@ -43,6 +43,11 @@ func DescribeSchedule(schedule *v1.Schedule) string { } d.Printf("Phase:\t%s\n", phaseString) + if schedule.Spec.Template.ResourcePolicy != nil { + d.Println() + DescribeResourcePolicies(d, schedule.Spec.Template.ResourcePolicy) + } + status := schedule.Status if len(status.ValidationErrors) > 0 { d.Println()