diff --git a/cli/app/undeploy.go b/cli/app/undeploy.go index 32d5640c..7d761107 100644 --- a/cli/app/undeploy.go +++ b/cli/app/undeploy.go @@ -59,10 +59,16 @@ Passing "--prune/-p" does not remove those volumes.`, chaosVersion = deployMeta.ChaosVersion } + toWriteVersion := deployMeta.Version + if deployMeta.IsChaos { + toWriteVersion = chaosVersion + } + if err := internal.UndeployOverview( app, deployMeta.Version, chaosVersion, + toWriteVersion, ); err != nil { log.Fatal(err) } @@ -81,11 +87,6 @@ Passing "--prune/-p" does not remove those volumes.`, } } - toWriteVersion := deployMeta.Version - if deployMeta.IsChaos { - toWriteVersion = chaosVersion - } - if err := app.WriteRecipeVersion(toWriteVersion, false); err != nil { log.Fatalf("writing recipe version failed: %s", err) } diff --git a/cli/internal/deploy.go b/cli/internal/deploy.go index eaa97763..8bbcc6c3 100644 --- a/cli/internal/deploy.go +++ b/cli/internal/deploy.go @@ -210,8 +210,10 @@ func DeployOverview( // UndeployOverview shows an undeployment overview func UndeployOverview( app appPkg.App, - version, - chaosVersion string) error { + deployedVersion, + deployedChaosVersion, + toWriteVersion string, +) error { deployConfig := "compose.yml" if composeFiles, ok := app.Env["COMPOSE_FILE"]; ok { deployConfig = composeFiles @@ -227,6 +229,20 @@ func UndeployOverview( domain = config.NO_DOMAIN_DEFAULT } + recipeName, exists := app.Env["RECIPE"] + if !exists { + recipeName = app.Env["TYPE"] + } + + envVersion, err := recipe.GetEnvVersionRaw(recipeName) + if err != nil { + return err + } + + if envVersion == "" { + envVersion = config.NO_VERSION_DEFAULT + } + rows := [][]string{ {"APP", domain}, {"RECIPE", app.Recipe.Name}, @@ -234,12 +250,12 @@ func UndeployOverview( {"CONFIG", deployConfig}, {"CURRENT DEPLOYMENT", "---"}, - {"VERSION", formatter.BoldDirtyDefault(version)}, - {"CHAOS", formatter.BoldDirtyDefault(chaosVersion)}, + {"VERSION", formatter.BoldDirtyDefault(deployedVersion)}, + {"CHAOS", formatter.BoldDirtyDefault(deployedChaosVersion)}, {fmt.Sprintf("%s.ENV", strings.ToUpper(app.Name)), "---"}, - {"CURRENT VERSION", formatter.BoldDirtyDefault(app.Recipe.EnvVersion)}, - {"NEW VERSION", formatter.BoldDirtyDefault(version)}, + {"CURRENT VERSION", formatter.BoldDirtyDefault(envVersion)}, + {"NEW VERSION", formatter.BoldDirtyDefault(toWriteVersion)}, } overview := formatter.CreateOverview("UNDEPLOY OVERVIEW", rows) diff --git a/pkg/upstream/stack/stack.go b/pkg/upstream/stack/stack.go index 418f1dd2..179c9090 100644 --- a/pkg/upstream/stack/stack.go +++ b/pkg/upstream/stack/stack.go @@ -107,6 +107,15 @@ type DeployMeta struct { ChaosVersion string // the --chaos deployment version } +func (d DeployMeta) String() string { + var out string + out += fmt.Sprintf("{isDeployed: %v, ", d.IsDeployed) + out += fmt.Sprintf("version: %s, ", d.Version) + out += fmt.Sprintf("isChaos: %v, ", d.IsChaos) + out += fmt.Sprintf("chaosVersion: %s}", d.ChaosVersion) + return out +} + // IsDeployed gathers metadata about an app deployment. func IsDeployed(ctx context.Context, cl *dockerClient.Client, stackName string) (DeployMeta, error) { deployMeta := DeployMeta{