From e458c8e4a65a5eea6071e42868e0464f2a16330f Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Sun, 27 Nov 2022 15:02:45 -0500 Subject: [PATCH] fix: keep track of old scale values for a single deploy This will ensure we scale things down after usage. --- plugins/ps/functions.go | 23 ++++++++++++++++++++++- plugins/ps/triggers.go | 4 ++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/plugins/ps/functions.go b/plugins/ps/functions.go index 2e9b1d484..cf80fe198 100644 --- a/plugins/ps/functions.go +++ b/plugins/ps/functions.go @@ -186,7 +186,22 @@ func getFormations(appName string) (FormationSlice, error) { return formations, err } - return parseProcessTuples(processTuples) + oldProcessTuples, err := common.PropertyListGet("ps", appName, "scale.old") + if err != nil { + return formations, err + } + + formations, err = parseProcessTuples(processTuples) + if err != nil { + return formations, err + } + + oldFormations, err := parseProcessTuples(oldProcessTuples) + if err != nil { + return formations, err + } + + return append(formations, oldFormations...), nil } func restorePrep() error { @@ -335,13 +350,19 @@ func updateScale(appName string, clearExisting bool, formationUpdates FormationS } values := []string{} + oldValues := []string{} for _, formation := range updatedFormation { if !validProcessTypes[formation.ProcessType] && formation.Quantity == 0 { + oldValues = append(oldValues, fmt.Sprintf("%s=%d", formation.ProcessType, formation.Quantity)) continue } values = append(values, fmt.Sprintf("%s=%d", formation.ProcessType, formation.Quantity)) } + if err := common.PropertyListWrite("ps", appName, "scale.old", oldValues); err != nil { + return err + } + return common.PropertyListWrite("ps", appName, "scale", values) } diff --git a/plugins/ps/triggers.go b/plugins/ps/triggers.go index 844213cae..e020c1f4a 100644 --- a/plugins/ps/triggers.go +++ b/plugins/ps/triggers.go @@ -42,6 +42,10 @@ func TriggerCorePostDeploy(appName string) error { } } + if err := common.PropertyDelete("ps", appName, "scale.old"); err != nil { + return err + } + entries := map[string]string{ "DOKKU_APP_RESTORE": "1", }