From f1dcb7ba11f566b7a828c3fa4dcfb66490858337 Mon Sep 17 00:00:00 2001 From: Lyndon-Li Date: Tue, 25 Mar 2025 13:40:42 +0800 Subject: [PATCH] add third party annotation support for maintenance job Signed-off-by: Lyndon-Li --- changelogs/unreleased/8812-Lyndon-Li | 1 + pkg/repository/maintenance/maintenance.go | 12 ++++++++++-- pkg/util/velero/velero.go | 9 +++++++++ 3 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 changelogs/unreleased/8812-Lyndon-Li diff --git a/changelogs/unreleased/8812-Lyndon-Li b/changelogs/unreleased/8812-Lyndon-Li new file mode 100644 index 000000000..66a572f28 --- /dev/null +++ b/changelogs/unreleased/8812-Lyndon-Li @@ -0,0 +1 @@ +Add third party annotation support for maintenance job, so that the declared third party annotations could be added to the maintenance job pods \ No newline at end of file diff --git a/pkg/repository/maintenance/maintenance.go b/pkg/repository/maintenance/maintenance.go index 6e2cd69a0..b5d489484 100644 --- a/pkg/repository/maintenance/maintenance.go +++ b/pkg/repository/maintenance/maintenance.go @@ -460,6 +460,13 @@ func buildJob(cli client.Client, ctx context.Context, repo *velerov1api.BackupRe } } + podAnnotations := map[string]string{} + for _, k := range util.ThirdPartyAnnotations { + if v := veleroutil.GetVeleroServerAnnotationValue(deployment, k); v != "" { + podAnnotations[k] = v + } + } + // Set arguments args := []string{"repo-maintenance"} args = append(args, fmt.Sprintf("--repo-name=%s", repo.Spec.VolumeNamespace)) @@ -481,8 +488,9 @@ func buildJob(cli client.Client, ctx context.Context, repo *velerov1api.BackupRe BackoffLimit: new(int32), // Never retry Template: v1.PodTemplateSpec{ ObjectMeta: metav1.ObjectMeta{ - Name: "velero-repo-maintenance-pod", - Labels: podLabels, + Name: "velero-repo-maintenance-pod", + Labels: podLabels, + Annotations: podAnnotations, }, Spec: v1.PodSpec{ Containers: []v1.Container{ diff --git a/pkg/util/velero/velero.go b/pkg/util/velero/velero.go index 2efdd150f..ff3469cee 100644 --- a/pkg/util/velero/velero.go +++ b/pkg/util/velero/velero.go @@ -96,3 +96,12 @@ func GetVeleroServerLabelValue(deployment *appsv1.Deployment, key string) string return deployment.Spec.Template.Labels[key] } + +// GetVeleroServerAnnotationValue returns the value of specified annotation of Velero server deployment +func GetVeleroServerAnnotationValue(deployment *appsv1.Deployment, key string) string { + if deployment.Spec.Template.Annotations == nil { + return "" + } + + return deployment.Spec.Template.Annotations[key] +}