From 34dee9f0bb4ec6a0d26ad543c0c77a4c152a2f39 Mon Sep 17 00:00:00 2001 From: Xun Jiang Date: Tue, 10 Sep 2024 16:31:48 +0800 Subject: [PATCH] Add backup-repository-config and repo-maintenance-job-config for install CLI Signed-off-by: Xun Jiang --- pkg/cmd/cli/install/install.go | 14 ++++++++++++++ pkg/install/deployment.go | 21 +++++++++++++++++++++ pkg/install/deployment_test.go | 8 ++++++++ pkg/install/resources.go | 2 ++ 4 files changed, 45 insertions(+) diff --git a/pkg/cmd/cli/install/install.go b/pkg/cmd/cli/install/install.go index 04c8ae1764..6b25e63f4d 100644 --- a/pkg/cmd/cli/install/install.go +++ b/pkg/cmd/cli/install/install.go @@ -86,6 +86,8 @@ type Options struct { ScheduleSkipImmediately bool PodResources kubeutil.PodResources KeepLatestMaintenanceJobs int + BackupRepoConfig string + RepoMaintenanceJobConfig string } // BindFlags adds command line values to the options struct. @@ -161,6 +163,18 @@ func (o *Options) BindFlags(flags *pflag.FlagSet) { o.PodResources.MemoryLimit, "Memory limit for maintenance jobs. Default is no limit.", ) + flags.StringVar( + &o.BackupRepoConfig, + "backup-repository-config", + o.BackupRepoConfig, + "The name of configMap containing backup repository configurations.", + ) + flags.StringVar( + &o.RepoMaintenanceJobConfig, + "repo-maintenance-job-config", + o.RepoMaintenanceJobConfig, + "The name of ConfigMap containing repository maintenance Job configurations.", + ) } // NewInstallOptions instantiates a new, default InstallOptions struct. diff --git a/pkg/install/deployment.go b/pkg/install/deployment.go index e4aac20eaa..8c7135aa6f 100644 --- a/pkg/install/deployment.go +++ b/pkg/install/deployment.go @@ -54,6 +54,8 @@ type podTemplateConfig struct { scheduleSkipImmediately bool podResources kube.PodResources keepLatestMaintenanceJobs int + backupRepoConfig string + repoMaintenanceJobConfig string } func WithImage(image string) podTemplateOption { @@ -192,6 +194,17 @@ func WithKeepLatestMaintenanceJobs(keepLatestMaintenanceJobs int) podTemplateOpt } } +func WithBackupRepoConfig(backupRepoConfig string) podTemplateOption { + return func(c *podTemplateConfig) { + c.backupRepoConfig = backupRepoConfig + } +} +func WithRepoMaintenanceJobConfig(repoMaintenanceJobConfig string) podTemplateOption { + return func(c *podTemplateConfig) { + c.repoMaintenanceJobConfig = repoMaintenanceJobConfig + } +} + func Deployment(namespace string, opts ...podTemplateOption) *appsv1.Deployment { // TODO: Add support for server args c := &podTemplateConfig{ @@ -269,6 +282,14 @@ func Deployment(namespace string, opts ...podTemplateOption) *appsv1.Deployment args = append(args, fmt.Sprintf("--maintenance-job-mem-request=%s", c.podResources.MemoryRequest)) } + if len(c.backupRepoConfig) > 0 { + args = append(args, fmt.Sprintf("--backup-repository-config=%s", c.backupRepoConfig)) + } + + if len(c.repoMaintenanceJobConfig) > 0 { + args = append(args, fmt.Sprintf("--repo-maintenance-job-config=%s", c.repoMaintenanceJobConfig)) + } + deployment := &appsv1.Deployment{ ObjectMeta: objectMeta(namespace, "velero"), TypeMeta: metav1.TypeMeta{ diff --git a/pkg/install/deployment_test.go b/pkg/install/deployment_test.go index 598b585db3..4b9276bf2d 100644 --- a/pkg/install/deployment_test.go +++ b/pkg/install/deployment_test.go @@ -91,4 +91,12 @@ func TestDeployment(t *testing.T) { assert.Equal(t, "--maintenance-job-cpu-request=100m", deploy.Spec.Template.Spec.Containers[0].Args[2]) assert.Equal(t, "--maintenance-job-mem-limit=512Mi", deploy.Spec.Template.Spec.Containers[0].Args[3]) assert.Equal(t, "--maintenance-job-mem-request=256Mi", deploy.Spec.Template.Spec.Containers[0].Args[4]) + + deploy = Deployment("velero", WithBackupRepoConfig("test-backup-repo-config")) + assert.Len(t, deploy.Spec.Template.Spec.Containers[0].Args, 2) + assert.Equal(t, "--backup-repository-config=test-backup-repo-config", deploy.Spec.Template.Spec.Containers[0].Args[1]) + + deploy = Deployment("velero", WithRepoMaintenanceJobConfig("test-repo-maintenance-config")) + assert.Len(t, deploy.Spec.Template.Spec.Containers[0].Args, 2) + assert.Equal(t, "--repo-maintenance-job-config=test-repo-maintenance-config", deploy.Spec.Template.Spec.Containers[0].Args[1]) } diff --git a/pkg/install/resources.go b/pkg/install/resources.go index f65737f915..87e3ac4421 100644 --- a/pkg/install/resources.go +++ b/pkg/install/resources.go @@ -264,6 +264,8 @@ type VeleroOptions struct { ScheduleSkipImmediately bool PodResources kube.PodResources KeepLatestMaintenanceJobs int + BackupRepoConfig string + RepoMaintenanceJobConfig string } func AllCRDs() *unstructured.UnstructuredList {