From 0615c3f745e01688a9d85ec13e22b9be25ce062e Mon Sep 17 00:00:00 2001 From: decentral1se Date: Fri, 15 Oct 2021 09:57:36 +0200 Subject: [PATCH] fix: support downgrade/upgrade for unknown versions --- cli/app/rollback.go | 40 +++++++++++++++++++++------------------ cli/app/upgrade.go | 46 ++++++++++++++++++++++++++------------------- 2 files changed, 49 insertions(+), 37 deletions(-) diff --git a/cli/app/rollback.go b/cli/app/rollback.go index 785acd898..f81ae963d 100644 --- a/cli/app/rollback.go +++ b/cli/app/rollback.go @@ -62,10 +62,6 @@ data beforehand - see "abra app backup " for more. logrus.Fatal(err) } - if deployedVersion == "" { - logrus.Fatalf("failed to determine version of deployed '%s'", app.Name) - } - if !isDeployed { logrus.Fatalf("'%s' is not deployed?", app.Name) } @@ -76,22 +72,30 @@ data beforehand - see "abra app backup " for more. } var availableDowngrades []string - for _, version := range versions { - parsedDeployedVersion, err := tagcmp.Parse(deployedVersion) - if err != nil { - logrus.Fatal(err) - } - parsedVersion, err := tagcmp.Parse(version) - if err != nil { - logrus.Fatal(err) - } - if parsedVersion != parsedDeployedVersion && parsedVersion.IsLessThan(parsedDeployedVersion) { - availableDowngrades = append(availableDowngrades, version) - } + if deployedVersion == "" { + deployedVersion = "unknown" + availableDowngrades = versions + logrus.Warnf("failed to determine version of deployed '%s'", app.Name) } - if len(availableDowngrades) == 0 { - logrus.Fatal("no available downgrades, you're on latest") + if deployedVersion != "unknown" { + for _, version := range versions { + parsedDeployedVersion, err := tagcmp.Parse(deployedVersion) + if err != nil { + logrus.Fatal(err) + } + parsedVersion, err := tagcmp.Parse(version) + if err != nil { + logrus.Fatal(err) + } + if parsedVersion != parsedDeployedVersion && parsedVersion.IsLessThan(parsedDeployedVersion) { + availableDowngrades = append(availableDowngrades, version) + } + } + + if len(availableDowngrades) == 0 { + logrus.Fatal("no available downgrades, you're on latest") + } } // FIXME: jeezus golang why do you not have a list reverse function diff --git a/cli/app/upgrade.go b/cli/app/upgrade.go index f827121ae..88d9af8a1 100644 --- a/cli/app/upgrade.go +++ b/cli/app/upgrade.go @@ -54,10 +54,6 @@ data beforehand - see "abra app backup " for more. logrus.Fatal(err) } - if deployedVersion == "" { - logrus.Fatalf("failed to determine version of deployed '%s'", app.Name) - } - if !isDeployed { logrus.Fatalf("'%s' is not deployed?", app.Name) } @@ -67,23 +63,35 @@ data beforehand - see "abra app backup " for more. logrus.Fatal(err) } - var availableUpgrades []string - for _, version := range versions { - parsedDeployedVersion, err := tagcmp.Parse(deployedVersion) - if err != nil { - logrus.Fatal(err) - } - parsedVersion, err := tagcmp.Parse(version) - if err != nil { - logrus.Fatal(err) - } - if parsedVersion.IsGreaterThan(parsedDeployedVersion) { - availableUpgrades = append(availableUpgrades, version) - } + if len(versions) == 0 { + logrus.Fatalf("no versions available '%s' in recipe catalogue?", app.Type) } - if len(availableUpgrades) == 0 { - logrus.Fatal("no available upgrades, you're on latest") + var availableUpgrades []string + if deployedVersion == "" { + deployedVersion = "unknown" + availableUpgrades = versions + logrus.Warnf("failed to determine version of deployed '%s'", app.Name) + } + + if deployedVersion != "unknown" { + for _, version := range versions { + parsedDeployedVersion, err := tagcmp.Parse(deployedVersion) + if err != nil { + logrus.Fatal(err) + } + parsedVersion, err := tagcmp.Parse(version) + if err != nil { + logrus.Fatal(err) + } + if parsedVersion.IsGreaterThan(parsedDeployedVersion) { + availableUpgrades = append(availableUpgrades, version) + } + } + + if len(availableUpgrades) == 0 { + logrus.Fatal("no available upgrades, you're on latest") + } } var chosenUpgrade string