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 { for _, config := range configurations {
if err := runScript(config); err != nil { switch config.ExecutionMode {
return errwrap.Wrap(err, "error running script") 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( c.logger.Error(
fmt.Sprintf( fmt.Sprintf(
"Unexpected error running schedule %s: %v", "Unkown execution mode %s, please check your configuration",
config.BackupCronExpression, config.ExecutionMode,
errwrap.Unwrap(err),
), ),
"error",
err,
) )
return
} }
}) })

View file

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