Skip to content

Commit

Permalink
refactor: namespace sourcing from the serviceaccount file if found (#278
Browse files Browse the repository at this point in the history
)
  • Loading branch information
shreddedbacon authored Dec 12, 2023
1 parent b849107 commit 6943415
Show file tree
Hide file tree
Showing 4 changed files with 66 additions and 2 deletions.
12 changes: 10 additions & 2 deletions internal/generator/generator.go
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,6 @@ func NewGenerator(
monitoringStatusPageID := helpers.GetEnv("MONITORING_STATUSPAGEID", generator.MonitoringStatusPageID, generator.Debug)
projectName := helpers.GetEnv("PROJECT", generator.ProjectName, generator.Debug)
environmentName := helpers.GetEnv("ENVIRONMENT", generator.EnvironmentName, generator.Debug)
namespace := helpers.GetEnv("NAMESPACE", generator.Namespace, generator.Debug)
branch := helpers.GetEnv("BRANCH", generator.Branch, generator.Debug)
prNumber := helpers.GetEnv("PR_NUMBER", generator.PRNumber, generator.Debug)
prTitle := helpers.GetEnv("PR_NUMBER", generator.PRTitle, generator.Debug)
Expand All @@ -89,6 +88,15 @@ func NewGenerator(
fastlyAPISecretPrefix := helpers.GetEnv("ROUTE_FASTLY_SERVICE_ID", generator.FastlyAPISecretPrefix, generator.Debug)
lagoonVersion := helpers.GetEnv("LAGOON_VERSION", generator.LagoonVersion, generator.Debug)

// try source the namespace from the generator, but whatever is defined in the service account location
// should be used if one exists, falls back to whatever came in via generator
namespace := helpers.GetEnv("NAMESPACE", generator.Namespace, generator.Debug)
namespace, err := helpers.GetNamespace(namespace, "/var/run/secrets/kubernetes.io/serviceaccount/namespace")
if err != nil {
// a file was found, but there was an issue accessing it
return nil, err
}

buildValues.Backup.K8upVersion = helpers.GetEnv("K8UP_VERSION", generator.BackupConfiguration.K8upVersion, generator.Debug)

// get the project and environment variables
Expand Down Expand Up @@ -230,7 +238,7 @@ func NewGenerator(
// buildValues.DBaaSFallbackSingle = helpers.StrToBool(lagoonDBaaSFallbackSingle.Value)

/* start backups configuration */
err := generateBackupValues(&buildValues, lYAML, lagoonEnvVars, generator.Debug)
err = generateBackupValues(&buildValues, lYAML, lagoonEnvVars, generator.Debug)
if err != nil {
return nil, err
}
Expand Down
13 changes: 13 additions & 0 deletions internal/helpers/helpers.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (
"encoding/base32"
"encoding/gob"
"encoding/hex"
"errors"
"fmt"
"os"
"strconv"
Expand Down Expand Up @@ -171,6 +172,18 @@ type EnvironmentVariable struct {
Value string
}

// Try and get the namespace name from the serviceaccount location if it exists
func GetNamespace(namespace, filename string) (string, error) {
if _, err := os.Stat(filename); !errors.Is(err, os.ErrNotExist) {
nsb, err := os.ReadFile(filename)
if err != nil {
return "", err
}
namespace = strings.Trim(string(nsb), "\n ")
}
return namespace, nil
}

func UnsetEnvVars(localVars []EnvironmentVariable) {
varNames := []string{
"MONITORING_ALERTCONTACT",
Expand Down
42 changes: 42 additions & 0 deletions internal/helpers/helpers_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -573,3 +573,45 @@ func TestCheckLabelLength(t *testing.T) {
})
}
}

func TestGetNamespace(t *testing.T) {
type args struct {
namespace string
filename string
}
tests := []struct {
name string
args args
want string
wantErr bool
}{
{
name: "test1 - no file",
args: args{
namespace: "test-namespace",
filename: "test-resources/test1",
},
want: "test-namespace",
},
{
name: "test2 - test namespace file",
args: args{
namespace: "a-namespace",
filename: "test-resources/test2",
},
want: "test-namespace",
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got, err := GetNamespace(tt.args.namespace, tt.args.filename)
if (err != nil) != tt.wantErr {
t.Errorf("GetNamespace() error = %v, wantErr %v", err, tt.wantErr)
return
}
if got != tt.want {
t.Errorf("GetNamespace() = %v, want %v", got, tt.want)
}
})
}
}
1 change: 1 addition & 0 deletions internal/helpers/test-resources/test2
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
test-namespace

0 comments on commit 6943415

Please sign in to comment.