mirror of
https://github.com/vmware-tanzu/velero.git
synced 2026-01-05 13:05:17 +00:00
Implement the Repo maintanence Job configuration design.
Remove the resource parameters from the velero server CLI. Signed-off-by: Xun Jiang <xun.jiang@broadcom.com>
This commit is contained in:
@@ -27,7 +27,7 @@ import (
|
||||
|
||||
"github.com/vmware-tanzu/velero/internal/velero"
|
||||
"github.com/vmware-tanzu/velero/pkg/builder"
|
||||
"github.com/vmware-tanzu/velero/pkg/repository"
|
||||
"github.com/vmware-tanzu/velero/pkg/util/kube"
|
||||
)
|
||||
|
||||
type podTemplateOption func(*podTemplateConfig)
|
||||
@@ -52,7 +52,8 @@ type podTemplateConfig struct {
|
||||
privilegedNodeAgent bool
|
||||
disableInformerCache bool
|
||||
scheduleSkipImmediately bool
|
||||
maintenanceConfig repository.MaintenanceConfig
|
||||
podResources kube.PodResources
|
||||
keepLatestMaintenanceJobs int
|
||||
}
|
||||
|
||||
func WithImage(image string) podTemplateOption {
|
||||
@@ -179,9 +180,15 @@ func WithScheduleSkipImmediately(b bool) podTemplateOption {
|
||||
}
|
||||
}
|
||||
|
||||
func WithMaintenanceConfig(config repository.MaintenanceConfig) podTemplateOption {
|
||||
func WithPodResources(podResources kube.PodResources) podTemplateOption {
|
||||
return func(c *podTemplateConfig) {
|
||||
c.maintenanceConfig = config
|
||||
c.podResources = podResources
|
||||
}
|
||||
}
|
||||
|
||||
func WithKeepLatestMaintenanceJobs(keepLatestMaintenanceJobs int) podTemplateOption {
|
||||
return func(c *podTemplateConfig) {
|
||||
c.keepLatestMaintenanceJobs = keepLatestMaintenanceJobs
|
||||
}
|
||||
}
|
||||
|
||||
@@ -242,24 +249,24 @@ func Deployment(namespace string, opts ...podTemplateOption) *appsv1.Deployment
|
||||
args = append(args, fmt.Sprintf("--fs-backup-timeout=%v", c.podVolumeOperationTimeout))
|
||||
}
|
||||
|
||||
if c.maintenanceConfig.KeepLatestMaitenanceJobs > 0 {
|
||||
args = append(args, fmt.Sprintf("--keep-latest-maintenance-jobs=%d", c.maintenanceConfig.KeepLatestMaitenanceJobs))
|
||||
if c.keepLatestMaintenanceJobs > 0 {
|
||||
args = append(args, fmt.Sprintf("--keep-latest-maintenance-jobs=%d", c.keepLatestMaintenanceJobs))
|
||||
}
|
||||
|
||||
if c.maintenanceConfig.CPULimit != "" {
|
||||
args = append(args, fmt.Sprintf("--maintenance-job-cpu-limit=%s", c.maintenanceConfig.CPULimit))
|
||||
if len(c.podResources.CPULimit) > 0 {
|
||||
args = append(args, fmt.Sprintf("--maintenance-job-cpu-limit=%s", c.podResources.CPULimit))
|
||||
}
|
||||
|
||||
if c.maintenanceConfig.CPURequest != "" {
|
||||
args = append(args, fmt.Sprintf("--maintenance-job-cpu-request=%s", c.maintenanceConfig.CPURequest))
|
||||
if len(c.podResources.CPURequest) > 0 {
|
||||
args = append(args, fmt.Sprintf("--maintenance-job-cpu-request=%s", c.podResources.CPURequest))
|
||||
}
|
||||
|
||||
if c.maintenanceConfig.MemLimit != "" {
|
||||
args = append(args, fmt.Sprintf("--maintenance-job-mem-limit=%s", c.maintenanceConfig.MemLimit))
|
||||
if len(c.podResources.MemoryLimit) > 0 {
|
||||
args = append(args, fmt.Sprintf("--maintenance-job-mem-limit=%s", c.podResources.MemoryLimit))
|
||||
}
|
||||
|
||||
if c.maintenanceConfig.MemRequest != "" {
|
||||
args = append(args, fmt.Sprintf("--maintenance-job-mem-request=%s", c.maintenanceConfig.MemRequest))
|
||||
if len(c.podResources.MemoryRequest) > 0 {
|
||||
args = append(args, fmt.Sprintf("--maintenance-job-mem-request=%s", c.podResources.MemoryRequest))
|
||||
}
|
||||
|
||||
deployment := &appsv1.Deployment{
|
||||
|
||||
@@ -23,7 +23,7 @@ import (
|
||||
"github.com/stretchr/testify/assert"
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
|
||||
"github.com/vmware-tanzu/velero/pkg/repository"
|
||||
"github.com/vmware-tanzu/velero/pkg/util/kube"
|
||||
)
|
||||
|
||||
func TestDeployment(t *testing.T) {
|
||||
@@ -71,17 +71,24 @@ func TestDeployment(t *testing.T) {
|
||||
assert.Len(t, deploy.Spec.Template.Spec.Containers[0].Args, 2)
|
||||
assert.Equal(t, "--disable-informer-cache=true", deploy.Spec.Template.Spec.Containers[0].Args[1])
|
||||
|
||||
deploy = Deployment("velero", WithMaintenanceConfig(repository.MaintenanceConfig{
|
||||
KeepLatestMaitenanceJobs: 3,
|
||||
CPURequest: "100m",
|
||||
MemRequest: "256Mi",
|
||||
CPULimit: "200m",
|
||||
MemLimit: "512Mi",
|
||||
}))
|
||||
assert.Len(t, deploy.Spec.Template.Spec.Containers[0].Args, 6)
|
||||
deploy = Deployment("velero", WithKeepLatestMaintenanceJobs(3))
|
||||
assert.Len(t, deploy.Spec.Template.Spec.Containers[0].Args, 2)
|
||||
assert.Equal(t, "--keep-latest-maintenance-jobs=3", deploy.Spec.Template.Spec.Containers[0].Args[1])
|
||||
assert.Equal(t, "--maintenance-job-cpu-limit=200m", deploy.Spec.Template.Spec.Containers[0].Args[2])
|
||||
assert.Equal(t, "--maintenance-job-cpu-request=100m", deploy.Spec.Template.Spec.Containers[0].Args[3])
|
||||
assert.Equal(t, "--maintenance-job-mem-limit=512Mi", deploy.Spec.Template.Spec.Containers[0].Args[4])
|
||||
assert.Equal(t, "--maintenance-job-mem-request=256Mi", deploy.Spec.Template.Spec.Containers[0].Args[5])
|
||||
|
||||
deploy = Deployment(
|
||||
"velero",
|
||||
WithPodResources(
|
||||
kube.PodResources{
|
||||
CPURequest: "100m",
|
||||
MemoryRequest: "256Mi",
|
||||
CPULimit: "200m",
|
||||
MemoryLimit: "512Mi",
|
||||
},
|
||||
),
|
||||
)
|
||||
assert.Len(t, deploy.Spec.Template.Spec.Containers[0].Args, 5)
|
||||
assert.Equal(t, "--maintenance-job-cpu-limit=200m", deploy.Spec.Template.Spec.Containers[0].Args[1])
|
||||
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])
|
||||
}
|
||||
|
||||
@@ -30,8 +30,7 @@ import (
|
||||
v1crds "github.com/vmware-tanzu/velero/config/crd/v1/crds"
|
||||
v2alpha1crds "github.com/vmware-tanzu/velero/config/crd/v2alpha1/crds"
|
||||
velerov1api "github.com/vmware-tanzu/velero/pkg/apis/velero/v1"
|
||||
"github.com/vmware-tanzu/velero/pkg/repository"
|
||||
"github.com/vmware-tanzu/velero/pkg/util/logging"
|
||||
"github.com/vmware-tanzu/velero/pkg/util/kube"
|
||||
)
|
||||
|
||||
const (
|
||||
@@ -263,9 +262,8 @@ type VeleroOptions struct {
|
||||
DefaultSnapshotMoveData bool
|
||||
DisableInformerCache bool
|
||||
ScheduleSkipImmediately bool
|
||||
FormatFlag *logging.FormatFlag
|
||||
LogLevelFlag *logging.LevelFlag
|
||||
MaintenanceCfg repository.MaintenanceConfig
|
||||
PodResources kube.PodResources
|
||||
KeepLatestMaintenanceJobs int
|
||||
}
|
||||
|
||||
func AllCRDs() *unstructured.UnstructuredList {
|
||||
@@ -350,7 +348,8 @@ func AllResources(o *VeleroOptions) *unstructured.UnstructuredList {
|
||||
WithPodVolumeOperationTimeout(o.PodVolumeOperationTimeout),
|
||||
WithUploaderType(o.UploaderType),
|
||||
WithScheduleSkipImmediately(o.ScheduleSkipImmediately),
|
||||
WithMaintenanceConfig(o.MaintenanceCfg),
|
||||
WithPodResources(o.PodResources),
|
||||
WithKeepLatestMaintenanceJobs(o.KeepLatestMaintenanceJobs),
|
||||
}
|
||||
|
||||
if len(o.Features) > 0 {
|
||||
|
||||
Reference in New Issue
Block a user