From 3eea4477ef17b384afa5fd7d09d11c0a4d47b39d Mon Sep 17 00:00:00 2001 From: Ben Jackson Date: Wed, 9 Feb 2022 15:52:41 +1100 Subject: [PATCH 1/2] refactor: modify the way environment variables are retrieved for environments --- pkg/graphql/main.go | 29 ++++++++++++++++++++++ pkg/lagoon/environments/variables.go | 36 +++++++++++++++++----------- 2 files changed, 51 insertions(+), 14 deletions(-) diff --git a/pkg/graphql/main.go b/pkg/graphql/main.go index 9f84773b..d74c43cd 100644 --- a/pkg/graphql/main.go +++ b/pkg/graphql/main.go @@ -63,6 +63,12 @@ var ProjectByNameFragment = `fragment Project on Project { developmentEnvironmentsLimit }` +// ProjectByNameMinimalFragment . +var ProjectByNameMinimalFragment = `fragment Project on Project { + id + name +}` + // ProjectAndEnvironmentEnvVars . var ProjectAndEnvironmentEnvVars = `fragment Project on Project { id @@ -200,6 +206,29 @@ var EnvironmentVariablesFragment = `fragment Environment on Environment { } }` +// EnvironmentEnvVars . +var EnvironmentEnvVars = `fragment Environment on Environment { + id + name + envVariables { + id + name + scope + } +}` + +// EnvironmentEnvVarsRevealed . +var EnvironmentEnvVarsRevealed = `fragment Environment on Environment { + id + name + envVariables { + id + name + scope + value + } +}` + // ProjectNameID . var ProjectNameID = `fragment Project on Project { id diff --git a/pkg/lagoon/environments/variables.go b/pkg/lagoon/environments/variables.go index 5126c1fe..fbfb4a14 100644 --- a/pkg/lagoon/environments/variables.go +++ b/pkg/lagoon/environments/variables.go @@ -129,11 +129,7 @@ func (e *Environments) ListEnvironmentVariables(projectName string, environmentN project := api.Project{ Name: projectName, } - queryFragment := graphql.ProjectEnvironmentEnvVars - if revealValue { - queryFragment = graphql.ProjectEnvironmentEnvVarsRevealed - } - projectByName, err := e.api.GetProjectByName(project, queryFragment) + projectByName, err := e.api.GetProjectByName(project, graphql.ProjectByNameMinimalFragment) if err != nil { return []byte(""), err } @@ -142,16 +138,28 @@ func (e *Environments) ListEnvironmentVariables(projectName string, environmentN if err != nil { return []byte(""), err } - for _, v := range projectInfo.Environments { - if v.Name == environmentName { - returnResult, err := processEnvironmentVariables(v, projectName, revealValue) - if err != nil { - return []byte(""), err - } - return returnResult, nil - } + // get the environment info from lagoon, we need the environment ID for later + // we consume the project ID here + environment := api.EnvironmentByName{ + Name: environmentName, + Project: projectInfo.ID, + } + queryFragment := graphql.EnvironmentEnvVars + if revealValue { + queryFragment = graphql.EnvironmentEnvVarsRevealed + } + environmentByName, err := e.api.GetEnvironmentByName(environment, queryFragment) + if err != nil { + return []byte(""), err + } + var environmentInfo api.Environment + err = json.Unmarshal([]byte(environmentByName), &environmentInfo) + returnResult, err := processEnvironmentVariables(environmentInfo, projectName, revealValue) + if err != nil { + return []byte(""), err } - return []byte(""), fmt.Errorf(fmt.Sprintf("Environment %s not found, check the environment exists and that you have permission to access it", environmentName)) + return returnResult, nil + // return []byte(""), fmt.Errorf(fmt.Sprintf("Environment %s not found, check the environment exists and that you have permission to access it", environmentName)) } func processEnvironmentVariables(envVars api.Environment, projectName string, revealValue bool) ([]byte, error) { From 1039e97106193f72fbe059a4fd32307fb00453c0 Mon Sep 17 00:00:00 2001 From: Ben Jackson Date: Wed, 9 Feb 2022 15:57:07 +1100 Subject: [PATCH 2/2] chore: tidy up messaging --- pkg/lagoon/environments/variables.go | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/pkg/lagoon/environments/variables.go b/pkg/lagoon/environments/variables.go index fbfb4a14..a0ee9235 100644 --- a/pkg/lagoon/environments/variables.go +++ b/pkg/lagoon/environments/variables.go @@ -138,8 +138,7 @@ func (e *Environments) ListEnvironmentVariables(projectName string, environmentN if err != nil { return []byte(""), err } - // get the environment info from lagoon, we need the environment ID for later - // we consume the project ID here + // get the environment info from lagoon, we consume the project ID here environment := api.EnvironmentByName{ Name: environmentName, Project: projectInfo.ID, @@ -159,7 +158,6 @@ func (e *Environments) ListEnvironmentVariables(projectName string, environmentN return []byte(""), err } return returnResult, nil - // return []byte(""), fmt.Errorf(fmt.Sprintf("Environment %s not found, check the environment exists and that you have permission to access it", environmentName)) } func processEnvironmentVariables(envVars api.Environment, projectName string, revealValue bool) ([]byte, error) {