From 063fa66af9264ed37d1bda83a77da54abca04b76 Mon Sep 17 00:00:00 2001 From: decentral1se Date: Wed, 1 Sep 2021 15:01:20 +0200 Subject: [PATCH] WIP heinous appEnv threading for env var loading --- cli/app/deploy.go | 2 +- cli/app/version.go | 2 +- cli/recipe/recipe.go | 40 +++++++++++++++++++++++++++++++++++----- client/stack/loader.go | 9 ++++----- config/app.go | 12 ++++++------ 5 files changed, 47 insertions(+), 18 deletions(-) diff --git a/cli/app/deploy.go b/cli/app/deploy.go index a6b8b1d6..33dd523a 100644 --- a/cli/app/deploy.go +++ b/cli/app/deploy.go @@ -51,7 +51,7 @@ var appDeployCommand = &cli.Command{ Prune: false, ResolveImage: stack.ResolveImageAlways, } - compose, err := loader.LoadComposefile(deployOpts) + compose, err := loader.LoadComposefile(deployOpts, appEnv.Env) if err != nil { logrus.Fatal(err) } diff --git a/cli/app/version.go b/cli/app/version.go index b21928c6..ea85a87d 100644 --- a/cli/app/version.go +++ b/cli/app/version.go @@ -61,7 +61,7 @@ var appVersionCommand = &cli.Command{ app := appFiles[appName] - compose, err := config.GetAppComposeFiles(appEnv.Type) + compose, err := config.GetAppComposeFiles(appEnv.Type, appEnv.Env) if err != nil { logrus.Fatal(err) } diff --git a/cli/recipe/recipe.go b/cli/recipe/recipe.go index 81d209f1..ab23caa5 100644 --- a/cli/recipe/recipe.go +++ b/cli/recipe/recipe.go @@ -172,7 +172,17 @@ This is step 1 of upgrading a recipe. Step 2 is running "abra recipe sync internal.ShowSubcommandHelpAndError(c, errors.New("no recipe provided")) } - compose, err := config.GetAppComposeFiles(recipe) + appFiles, err := config.LoadAppFiles("") + if err != nil { + logrus.Fatal(err) + } + + appEnv, err := config.GetApp(appFiles, recipe) + if err != nil { + logrus.Fatal(err) + } + + compose, err := config.GetAppComposeFiles(recipe, appEnv.Env) if err != nil { logrus.Fatal(err) } @@ -263,7 +273,7 @@ This is step 1 of upgrading a recipe. Step 2 is running "abra recipe sync logrus.Fatal(err) } - if err := config.UpdateAppComposeTag(recipe, image, upgradeTag); err != nil { + if err := config.UpdateAppComposeTag(recipe, image, upgradeTag, appEnv.Env); err != nil { logrus.Fatal(err) } } @@ -292,7 +302,17 @@ the versioning metadata of up-and-running containers are. internal.ShowSubcommandHelpAndError(c, errors.New("no recipe provided")) } - compose, err := config.GetAppComposeFiles(recipe) + appFiles, err := config.LoadAppFiles("") + if err != nil { + logrus.Fatal(err) + } + + appEnv, err := config.GetApp(appFiles, recipe) + if err != nil { + logrus.Fatal(err) + } + + compose, err := config.GetAppComposeFiles(recipe, appEnv.Env) if err != nil { logrus.Fatal(err) } @@ -321,7 +341,7 @@ the versioning metadata of up-and-running containers are. tag := img.(reference.NamedTagged).Tag() label := fmt.Sprintf("coop-cloud.${STACK_NAME}.%s.version=%s-%s", service.Name, tag, digest) - if err := config.UpdateAppComposeLabel(recipe, service.Name, label); err != nil { + if err := config.UpdateAppComposeLabel(recipe, service.Name, label, appEnv.Env); err != nil { logrus.Fatal(err) } } @@ -340,7 +360,17 @@ var recipeLintCommand = &cli.Command{ internal.ShowSubcommandHelpAndError(c, errors.New("no recipe provided")) } - compose, err := config.GetAppComposeFiles(recipe) + appFiles, err := config.LoadAppFiles("") + if err != nil { + logrus.Fatal(err) + } + + appEnv, err := config.GetApp(appFiles, recipe) + if err != nil { + logrus.Fatal(err) + } + + compose, err := config.GetAppComposeFiles(recipe, appEnv.Env) if err != nil { logrus.Fatal(err) } diff --git a/client/stack/loader.go b/client/stack/loader.go index d3672b77..d5a26946 100644 --- a/client/stack/loader.go +++ b/client/stack/loader.go @@ -3,7 +3,6 @@ package stack import ( "fmt" "io/ioutil" - "os" "path/filepath" "sort" "strings" @@ -16,8 +15,8 @@ import ( ) // LoadComposefile parse the composefile specified in the cli and returns its Config and version. -func LoadComposefile(opts options.Deploy) (*composetypes.Config, error) { - configDetails, err := getConfigDetails(opts.Composefiles) +func LoadComposefile(opts options.Deploy, appEnv map[string]string) (*composetypes.Config, error) { + configDetails, err := getConfigDetails(opts.Composefiles, appEnv) if err != nil { return nil, err } @@ -66,7 +65,7 @@ func propertyWarnings(properties map[string]string) string { return strings.Join(msgs, "\n\n") } -func getConfigDetails(composefiles []string) (composetypes.ConfigDetails, error) { +func getConfigDetails(composefiles []string, appEnv map[string]string) (composetypes.ConfigDetails, error) { var details composetypes.ConfigDetails absPath, err := filepath.Abs(composefiles[0]) @@ -81,7 +80,7 @@ func getConfigDetails(composefiles []string) (composetypes.ConfigDetails, error) } // Take the first file version (2 files can't have different version) details.Version = schema.Version(details.ConfigFiles[0].Config) - details.Environment, err = buildEnvironment(os.Environ()) + details.Environment = appEnv return details, err } diff --git a/config/app.go b/config/app.go index e628eb19..1b8b8068 100644 --- a/config/app.go +++ b/config/app.go @@ -229,7 +229,7 @@ func GetAppStatuses(appFiles AppFiles) (map[string]string, error) { // GetAppComposeFiles retrieves a compose specification for a recipe. This // specification is the result of a merge of all the compose.**.yml files in // the recipe repository. -func GetAppComposeFiles(recipe string) (*composetypes.Config, error) { +func GetAppComposeFiles(recipe string, appEnv AppEnv) (*composetypes.Config, error) { pattern := fmt.Sprintf("%s/%s/compose**yml", APPS_DIR, recipe) composeFiles, err := filepath.Glob(pattern) if err != nil { @@ -237,7 +237,7 @@ func GetAppComposeFiles(recipe string) (*composetypes.Config, error) { } opts := options.Deploy{Composefiles: composeFiles} - compose, err := loader.LoadComposefile(opts) + compose, err := loader.LoadComposefile(opts, appEnv) if err != nil { return &composetypes.Config{}, err } @@ -245,7 +245,7 @@ func GetAppComposeFiles(recipe string) (*composetypes.Config, error) { return compose, nil } -func UpdateAppComposeTag(recipe, image, tag string) error { +func UpdateAppComposeTag(recipe, image, tag string, appEnv AppEnv) error { pattern := fmt.Sprintf("%s/%s/compose**yml", APPS_DIR, recipe) composeFiles, err := filepath.Glob(pattern) if err != nil { @@ -254,7 +254,7 @@ func UpdateAppComposeTag(recipe, image, tag string) error { for _, composeFile := range composeFiles { opts := options.Deploy{Composefiles: []string{composeFile}} - compose, err := loader.LoadComposefile(opts) + compose, err := loader.LoadComposefile(opts, appEnv) if err != nil { return err } @@ -298,7 +298,7 @@ func UpdateAppComposeTag(recipe, image, tag string) error { return nil } -func UpdateAppComposeLabel(recipe, serviceName, newLabel string) error { +func UpdateAppComposeLabel(recipe, serviceName, newLabel string, appEnv AppEnv) error { pattern := fmt.Sprintf("%s/%s/compose**yml", APPS_DIR, recipe) composeFiles, err := filepath.Glob(pattern) if err != nil { @@ -307,7 +307,7 @@ func UpdateAppComposeLabel(recipe, serviceName, newLabel string) error { for _, composeFile := range composeFiles { opts := options.Deploy{Composefiles: []string{composeFile}} - compose, err := loader.LoadComposefile(opts) + compose, err := loader.LoadComposefile(opts, appEnv) if err != nil { return err }