diff --git a/docs/appendices/0.22.0-migration-guide.md b/docs/appendices/0.22.0-migration-guide.md index a4e4dc7f4..53c88b60d 100644 --- a/docs/appendices/0.22.0-migration-guide.md +++ b/docs/appendices/0.22.0-migration-guide.md @@ -5,6 +5,7 @@ - Underscores are no longer valid characters in app names. Please rename applications before upgrading. - Process type names specified in Procfile may no longer use characters not valid in DNS Label Names ([RFC 1123](https://tools.ietf.org/html/rfc1123)). - The minimum Docker version is now 17.05.0. +- The `common.GetDeployingAppImageName()` function now returns an `error` as the second return argument instead of calling `common.LogFail()` internally. ## Removals diff --git a/plugins/app-json/appjson.go b/plugins/app-json/appjson.go index bcb077ad4..3080d0fca 100644 --- a/plugins/app-json/appjson.go +++ b/plugins/app-json/appjson.go @@ -138,7 +138,10 @@ func getDokkuAppShell(appName string) string { } func executeScript(appName string, imageTag string, phase string) error { - image := common.GetDeployingAppImageName(appName, imageTag, "") + image, err := common.GetDeployingAppImageName(appName, imageTag, "") + if err != nil { + common.LogFail(err.Error()) + } command := "" phaseSource := "" if phase == "release" { diff --git a/plugins/common/common.go b/plugins/common/common.go index 74f89f85b..638448524 100644 --- a/plugins/common/common.go +++ b/plugins/common/common.go @@ -89,26 +89,26 @@ func GetGlobalScheduler() string { } // GetDeployingAppImageName returns deploying image identifier for a given app, tag tuple. validate if tag is presented -func GetDeployingAppImageName(appName, imageTag, imageRepo string) (imageName string) { +func GetDeployingAppImageName(appName, imageTag, imageRepo string) (string, error) { if appName == "" { LogFail("(GetDeployingAppImageName) APP must not be empty") } b, err := PlugnTriggerOutput("deployed-app-repository", []string{appName}...) if err != nil { - LogFail(err.Error()) + return "", err } imageRemoteRepository := string(b[:]) b, err = PlugnTriggerOutput("deployed-app-image-tag", []string{appName}...) if err != nil { - LogFail(err.Error()) + return "", err } newImageTag := string(b[:]) b, err = PlugnTriggerOutput("deployed-app-image-repo", []string{appName}...) if err != nil { - LogFail(err.Error()) + return "", err } newImageRepo := string(b[:]) @@ -125,11 +125,11 @@ func GetDeployingAppImageName(appName, imageTag, imageRepo string) (imageName st imageTag = "latest" } - imageName = fmt.Sprintf("%s%s:%s", imageRemoteRepository, imageRepo, imageTag) + imageName := fmt.Sprintf("%s%s:%s", imageRemoteRepository, imageRepo, imageTag) if !VerifyImage(imageName) { - LogFail(fmt.Sprintf("App image (%s) not found", imageName)) + return "", fmt.Errorf("App image (%s) not found", imageName) } - return + return imageName, nil } // GetAppImageRepo is the central definition of a dokku image repo pattern diff --git a/plugins/ps/subcommands.go b/plugins/ps/subcommands.go index 90cd722f9..01d7cf156 100644 --- a/plugins/ps/subcommands.go +++ b/plugins/ps/subcommands.go @@ -145,7 +145,11 @@ func CommandScale(appName string, skipDeploy bool, processTuples []string) error procfilePath := getProcfilePath(appName) if !common.FileExists(procfilePath) { extract := func() error { - image := common.GetDeployingAppImageName(appName, "", "") + image, err := common.GetDeployingAppImageName(appName, "", "") + if err != nil { + return nil + } + return extractProcfile(appName, image) } diff --git a/plugins/ps/triggers.go b/plugins/ps/triggers.go index dcbfb9a63..e72246aca 100644 --- a/plugins/ps/triggers.go +++ b/plugins/ps/triggers.go @@ -144,7 +144,11 @@ func TriggerPostStop(appName string) error { // TriggerPreDeploy ensures an app has an up to date scale file func TriggerPreDeploy(appName string, imageTag string) error { - image := common.GetDeployingAppImageName(appName, imageTag, "") + image, err := common.GetDeployingAppImageName(appName, imageTag, "") + if err != nil { + return err + } + if err := removeProcfile(appName); err != nil { return err } @@ -183,7 +187,11 @@ func TriggerProcfileGetCommand(appName string, processType string, port int) err procfilePath := getProcfilePath(appName) if !common.FileExists(procfilePath) { extract := func() error { - image := common.GetDeployingAppImageName(appName, "", "") + image, err := common.GetDeployingAppImageName(appName, "", "") + if err != nil { + return err + } + return extractProcfile(appName, image) }