From d8141eabce9a165643e1e35a3790941fd92348dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wenkai=20Yin=28=E5=B0=B9=E6=96=87=E5=BC=80=29?= Date: Fri, 30 Jul 2021 00:01:48 +0800 Subject: [PATCH] Select the velero deployment with both label and container name (#3996) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Select the velero deployment with both label and container name Fixes #3961 Signed-off-by: Wenkai Yin(尹文开) --- changelogs/unreleased/3996-ywk253100 | 1 + pkg/cmd/cli/plugin/helpers.go | 13 +++++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) create mode 100644 changelogs/unreleased/3996-ywk253100 diff --git a/changelogs/unreleased/3996-ywk253100 b/changelogs/unreleased/3996-ywk253100 new file mode 100644 index 000000000..2e9534315 --- /dev/null +++ b/changelogs/unreleased/3996-ywk253100 @@ -0,0 +1 @@ +Select the velero deployment with both label and container name \ No newline at end of file diff --git a/pkg/cmd/cli/plugin/helpers.go b/pkg/cmd/cli/plugin/helpers.go index 8336b7ee5..28f681993 100644 --- a/pkg/cmd/cli/plugin/helpers.go +++ b/pkg/cmd/cli/plugin/helpers.go @@ -28,7 +28,8 @@ import ( "github.com/vmware-tanzu/velero/pkg/install" ) -// veleroDeployment returns a Velero deployment object, selected using a label. +// veleroDeployment returns a Velero deployment object, selected with label and container name, +// refer to https://github.com/vmware-tanzu/velero/issues/3961 for more information func veleroDeployment(ctx context.Context, kubeClient kubernetes.Interface, namespace string) (*appsv1api.Deployment, error) { veleroLabels := labels.FormatLabels(install.Labels()) @@ -42,9 +43,13 @@ func veleroDeployment(ctx context.Context, kubeClient kubernetes.Interface, name return nil, err } - if len(deployList.Items) < 1 { - return nil, errors.New("Velero deployment not found") + for _, deploy := range deployList.Items { + for _, container := range deploy.Spec.Template.Spec.Containers { + if container.Name == "velero" { + return &deploy, nil + } + } } - return &deployList.Items[0], nil + return nil, errors.New("Velero deployment not found") }