Преглед изворни кода

Merge pull request #1868 from porter-dev/nafees/hotfixes

[hotfix] Return variables from env group as output for `env-group` driver
abelanger5 пре 4 година
родитељ
комит
a7d2038cb4
1 измењених фајлова са 29 додато и 6 уклоњено
  1. 29 6
      cli/cmd/preview/env_group_driver.go

+ 29 - 6
cli/cmd/preview/env_group_driver.go

@@ -2,6 +2,7 @@ package preview
 
 import (
 	"context"
+	"fmt"
 
 	"github.com/fatih/color"
 	"github.com/mitchellh/mapstructure"
@@ -55,6 +56,10 @@ func (d *EnvGroupDriver) Apply(resource *models.Resource) (*models.Resource, err
 	client := config.GetAPIClient()
 
 	for _, group := range d.config.EnvGroups {
+		if group.Name == "" {
+			return nil, fmt.Errorf("env group name cannot be empty")
+		}
+
 		if group.Namespace == "" {
 			color.New(color.FgYellow).Printf("env group %s has empty namespace so defaulting to target namespace %s\n",
 				group.Name, d.target.Namespace)
@@ -62,17 +67,35 @@ func (d *EnvGroupDriver) Apply(resource *models.Resource) (*models.Resource, err
 			group.Namespace = d.target.Namespace
 		}
 
-		_, err = client.CreateEnvGroup(
-			context.Background(), d.target.Project, d.target.Cluster, group.Namespace,
-			&types.CreateEnvGroupRequest{
-				Name:      group.Name,
-				Variables: group.Variables,
+		envGroup, err := client.GetEnvGroup(
+			context.Background(),
+			d.target.Project,
+			d.target.Cluster,
+			group.Namespace,
+			&types.GetEnvGroupRequest{
+				Name: group.Name,
 			},
 		)
 
-		if err != nil {
+		if err != nil && err.Error() == "env group not found" {
+			envGroup, err = client.CreateEnvGroup(
+				context.Background(), d.target.Project, d.target.Cluster, group.Namespace,
+				&types.CreateEnvGroupRequest{
+					Name:      group.Name,
+					Variables: group.Variables,
+				},
+			)
+
+			if err != nil {
+				return nil, err
+			}
+		} else if err != nil {
 			return nil, err
 		}
+
+		d.output[envGroup.Name] = map[string]interface{}{
+			"variables": envGroup.Variables,
+		}
 	}
 
 	return resource, nil