Lay out control flow for spawning container

This commit is contained in:
Frederik Ring 2025-10-11 19:35:20 +02:00
parent 2d777ad76a
commit 832a1f9d9a
2 changed files with 30 additions and 9 deletions

View file

@ -36,8 +36,15 @@ func (c *command) runAsCommand() error {
}
for _, config := range configurations {
if err := runScript(config); err != nil {
return errwrap.Wrap(err, "error running script")
switch config.ExecutionMode {
case "process":
if err := runScript(config); err != nil {
return errwrap.Wrap(err, "error running script")
}
case "container":
panic("execution mode container not implemented")
default:
return errwrap.Wrap(nil, fmt.Sprintf("unknown execution mode %s", config.ExecutionMode))
}
}
@ -110,16 +117,29 @@ func (c *command) schedule(strategy configStrategy) error {
),
)
if err := runScript(config); err != nil {
switch config.ExecutionMode {
case "process":
if err := runScript(config); err != nil {
c.logger.Error(
fmt.Sprintf(
"Unexpected error running schedule %s: %v",
config.BackupCronExpression,
errwrap.Unwrap(err),
),
"error",
err,
)
}
case "container":
panic("execution mode container not implemented")
default:
c.logger.Error(
fmt.Sprintf(
"Unexpected error running schedule %s: %v",
config.BackupCronExpression,
errwrap.Unwrap(err),
"Unkown execution mode %s, please check your configuration",
config.ExecutionMode,
),
"error",
err,
)
return
}
})

View file

@ -30,7 +30,6 @@ type Config struct {
AwsIamRoleEndpoint string `split_words:"true"`
AwsPartSize int64 `split_words:"true"`
BackupCompression CompressionType `split_words:"true" default:"gz"`
GzipParallelism WholeNumber `split_words:"true" default:"1"`
BackupSources string `split_words:"true" default:"/backup"`
BackupFilename string `split_words:"true" default:"backup-%Y-%m-%dT%H-%M-%S.{{ .Extension }}"`
BackupFilenameExpand bool `split_words:"true"`
@ -46,6 +45,7 @@ type Config struct {
BackupFromSnapshot bool `split_words:"true"`
BackupExcludeRegexp RegexpDecoder `split_words:"true"`
BackupSkipBackendsFromPrune []string `split_words:"true"`
GzipParallelism WholeNumber `split_words:"true" default:"1"`
GpgPassphrase string `split_words:"true"`
GpgPublicKeyRing string `split_words:"true"`
AgePassphrase string `split_words:"true"`
@ -73,6 +73,7 @@ type Config struct {
ExecLabel string `split_words:"true"`
ExecForwardOutput bool `split_words:"true"`
LockTimeout time.Duration `split_words:"true" default:"60m"`
ExecutionMode string `split_words:"true" default:"process"`
AzureStorageAccountName string `split_words:"true"`
AzureStoragePrimaryAccountKey string `split_words:"true"`
AzureStorageConnectionString string `split_words:"true"`