diff --git a/cmd/osbuild-service-maintenance/config.go b/cmd/osbuild-service-maintenance/config.go index 5caedf916..4fd6b4381 100644 --- a/cmd/osbuild-service-maintenance/config.go +++ b/cmd/osbuild-service-maintenance/config.go @@ -4,12 +4,16 @@ import ( "fmt" "os" "reflect" + "strconv" ) // Do not write this config to logs or stdout, it contains secrets! type Config struct { DryRun string `env:"DRY_RUN"` MaxConcurrentRequests string `env:"MAX_CONCURRENT_REQUESTS"` + EnableDBMaintenance bool `env:"ENABLE_DB_MAINTENANCE"` + EnableGCPMaintenance bool `env:"ENABLE_GCP_MAINTENANCE"` + EnableAWSMaintenance bool `env:"ENABLE_AWS_MAINTENANCE"` PGHost string `env:"PGHOST"` PGPort string `env:"PGPORT"` PGDatabase string `env:"PGDATABASE"` @@ -51,13 +55,14 @@ func LoadConfigFromEnv(intf interface{}) error { kind := fieldV.Kind() if ok { switch kind { - case reflect.Ptr: - if fieldT.Type.Elem().Kind() != reflect.String { - return fmt.Errorf("Unsupported type") - } - fieldV.Set(reflect.ValueOf(&confV)) case reflect.String: fieldV.SetString(confV) + case reflect.Bool: + value, err := strconv.ParseBool(confV) + if err != nil { + return err + } + fieldV.SetBool(value) default: return fmt.Errorf("Unsupported type") } diff --git a/cmd/osbuild-service-maintenance/main.go b/cmd/osbuild-service-maintenance/main.go index 8f2e6b25d..47e3fb154 100644 --- a/cmd/osbuild-service-maintenance/main.go +++ b/cmd/osbuild-service-maintenance/main.go @@ -26,6 +26,7 @@ func main() { if err != nil { panic(err) } + maxCReqs, err := strconv.Atoi(conf.MaxConcurrentRequests) if err != nil { panic(err) @@ -43,6 +44,11 @@ func main() { wg.Add(1) go func() { defer wg.Done() + if !conf.EnableAWSMaintenance { + logrus.Info("AWS maintenance not enabled, skipping") + return + } + logrus.Info("Cleaning up AWS") err := AWSCleanup(maxCReqs, dryRun, conf.AWSAccessKeyID, conf.AWSSecretAccessKey, "us-east-1", cutoff) if err != nil { @@ -53,6 +59,11 @@ func main() { wg.Add(1) go func() { defer wg.Done() + if !conf.EnableGCPMaintenance { + logrus.Info("GCP maintenance not enabled, skipping") + return + } + logrus.Info("Cleaning up GCP") var gcpConf GCPCredentialsConfig err := LoadConfigFromEnv(&gcpConf) @@ -81,8 +92,8 @@ func main() { wg.Wait() logrus.Info("🦀🦀🦀 cloud cleanup done 🦀🦀🦀") - if conf.PGHost == "" { - logrus.Info("🦀🦀🦀 db host not defined, skipping db cleanup 🦀🦀🦀") + if !conf.EnableDBMaintenance { + logrus.Info("🦀🦀🦀 DB maintenance not enabled, skipping 🦀🦀🦀") return }