mirror of
https://github.com/vmware-tanzu/velero.git
synced 2026-04-26 02:30:35 +00:00
feat: Add install arg and config for concurrent backups
Co-authored-by: aider (gemini/gemini-2.5-pro) <aider@aider.chat> Signed-off-by: Scott Seago <sseago@redhat.com>
This commit is contained in:
@@ -89,6 +89,7 @@ type Options struct {
|
||||
RepoMaintenanceJobConfigMap string
|
||||
NodeAgentConfigMap string
|
||||
ItemBlockWorkerCount int
|
||||
ConcurrentBackups int
|
||||
NodeAgentDisableHostPath bool
|
||||
kubeletRootDir string
|
||||
ServerPriorityClassName string
|
||||
@@ -196,6 +197,12 @@ func (o *Options) BindFlags(flags *pflag.FlagSet) {
|
||||
o.ItemBlockWorkerCount,
|
||||
"Number of worker threads to process ItemBlocks. Default is one. Optional.",
|
||||
)
|
||||
flags.IntVar(
|
||||
&o.ConcurrentBackups,
|
||||
"concurrent-backups",
|
||||
o.ConcurrentBackups,
|
||||
"Number of backups to process concurrently. Default is one. Optional.",
|
||||
)
|
||||
flags.StringVar(
|
||||
&o.ServerPriorityClassName,
|
||||
"server-priority-class-name",
|
||||
@@ -313,6 +320,7 @@ func (o *Options) AsVeleroOptions() (*install.VeleroOptions, error) {
|
||||
RepoMaintenanceJobConfigMap: o.RepoMaintenanceJobConfigMap,
|
||||
NodeAgentConfigMap: o.NodeAgentConfigMap,
|
||||
ItemBlockWorkerCount: o.ItemBlockWorkerCount,
|
||||
ConcurrentBackups: o.ConcurrentBackups,
|
||||
KubeletRootDir: o.kubeletRootDir,
|
||||
NodeAgentDisableHostPath: o.NodeAgentDisableHostPath,
|
||||
ServerPriorityClassName: o.ServerPriorityClassName,
|
||||
|
||||
@@ -47,6 +47,7 @@ const (
|
||||
defaultDisableInformerCache = false
|
||||
|
||||
DefaultItemBlockWorkerCount = 1
|
||||
DefaultConcurrentBackups = 1
|
||||
)
|
||||
|
||||
var (
|
||||
@@ -174,6 +175,7 @@ type Config struct {
|
||||
BackupRepoConfig string
|
||||
RepoMaintenanceJobConfig string
|
||||
ItemBlockWorkerCount int
|
||||
ConcurrentBackups int
|
||||
}
|
||||
|
||||
func GetDefaultConfig() *Config {
|
||||
@@ -206,6 +208,7 @@ func GetDefaultConfig() *Config {
|
||||
ScheduleSkipImmediately: false,
|
||||
CredentialsDirectory: credentials.DefaultStoreDirectory(),
|
||||
ItemBlockWorkerCount: DefaultItemBlockWorkerCount,
|
||||
ConcurrentBackups: DefaultConcurrentBackups,
|
||||
}
|
||||
|
||||
return config
|
||||
@@ -261,4 +264,10 @@ func (c *Config) BindFlags(flags *pflag.FlagSet) {
|
||||
c.ItemBlockWorkerCount,
|
||||
"Number of worker threads to process ItemBlocks. Default is one. Optional.",
|
||||
)
|
||||
flags.IntVar(
|
||||
&c.ConcurrentBackups,
|
||||
"concurrent-backups",
|
||||
c.ConcurrentBackups,
|
||||
"Number of backups to process concurrently. Default is one. Optional.",
|
||||
)
|
||||
}
|
||||
|
||||
@@ -59,6 +59,7 @@ type podTemplateConfig struct {
|
||||
repoMaintenanceJobConfigMap string
|
||||
nodeAgentConfigMap string
|
||||
itemBlockWorkerCount int
|
||||
concurrentBackups int
|
||||
forWindows bool
|
||||
kubeletRootDir string
|
||||
nodeAgentDisableHostPath bool
|
||||
@@ -224,6 +225,12 @@ func WithItemBlockWorkerCount(itemBlockWorkerCount int) podTemplateOption {
|
||||
}
|
||||
}
|
||||
|
||||
func WithConcurrentBackups(concurrentBackups int) podTemplateOption {
|
||||
return func(c *podTemplateConfig) {
|
||||
c.concurrentBackups = concurrentBackups
|
||||
}
|
||||
}
|
||||
|
||||
func WithPriorityClassName(priorityClassName string) podTemplateOption {
|
||||
return func(c *podTemplateConfig) {
|
||||
c.priorityClassName = priorityClassName
|
||||
@@ -337,6 +344,10 @@ func Deployment(namespace string, opts ...podTemplateOption) *appsv1api.Deployme
|
||||
args = append(args, fmt.Sprintf("--item-block-worker-count=%d", c.itemBlockWorkerCount))
|
||||
}
|
||||
|
||||
if c.concurrentBackups > 0 {
|
||||
args = append(args, fmt.Sprintf("--concurrent-backups=%d", c.concurrentBackups))
|
||||
}
|
||||
|
||||
deployment := &appsv1api.Deployment{
|
||||
ObjectMeta: objectMeta(namespace, "velero"),
|
||||
TypeMeta: metav1.TypeMeta{
|
||||
|
||||
@@ -271,6 +271,7 @@ type VeleroOptions struct {
|
||||
RepoMaintenanceJobConfigMap string
|
||||
NodeAgentConfigMap string
|
||||
ItemBlockWorkerCount int
|
||||
ConcurrentBackups int
|
||||
KubeletRootDir string
|
||||
NodeAgentDisableHostPath bool
|
||||
ServerPriorityClassName string
|
||||
@@ -362,6 +363,7 @@ func AllResources(o *VeleroOptions) *unstructured.UnstructuredList {
|
||||
WithPodResources(o.PodResources),
|
||||
WithKeepLatestMaintenanceJobs(o.KeepLatestMaintenanceJobs),
|
||||
WithItemBlockWorkerCount(o.ItemBlockWorkerCount),
|
||||
WithConcurrentBackups(o.ConcurrentBackups),
|
||||
}
|
||||
|
||||
if o.ServerPriorityClassName != "" {
|
||||
|
||||
Reference in New Issue
Block a user