Skip to content

Commit 98d9536

Browse files
committed
feat(manifest): loader.Load(...) includes unselected environments as not enabled environments with Enabled: false
In order to be able to check environment and group overrides in `project.LoadProject(...)` they need not to be removed in `loader.Load(...)`. Instead, this function marks them as not enabled, with `Enabled: false`.
1 parent 4301147 commit 98d9536

15 files changed

+169
-72
lines changed

cmd/monaco/delete/delete.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@ import (
3838
func Delete(ctx context.Context, environments manifest.Environments, entriesToDelete delete.DeleteEntries) error {
3939
var envsWithDeleteErrs []string
4040
for _, env := range environments {
41+
if !env.Enabled {
42+
continue
43+
}
4144
ctx := context.WithValue(ctx, log.CtxKeyEnv{}, log.CtxValEnv{Name: env.Name, Group: env.Group})
4245
if containsPlatformTypes(entriesToDelete) && env.Auth.OAuth == nil {
4346
log.WithCtxFields(ctx).Warn("Delete file contains Dynatrace Platform specific types, but no oAuth credentials are defined for environment %q - Dynatrace Platform configurations won't be deleted.", env.Name)

cmd/monaco/dynatrace/dynatrace.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,9 @@ func VerifyEnvironmentGeneration(ctx context.Context, envs manifest.Environments
5151
return true
5252
}
5353
for _, env := range envs {
54+
if !env.Enabled {
55+
continue
56+
}
5457
if !isValidEnvironment(ctx, env) {
5558
return false
5659
}
@@ -189,6 +192,9 @@ func (e EnvironmentClients) Names() []string {
189192
func CreateEnvironmentClients(ctx context.Context, environments manifest.Environments, dryRun bool) (EnvironmentClients, error) {
190193
clients := make(EnvironmentClients, len(environments))
191194
for _, env := range environments {
195+
if !env.Enabled {
196+
continue
197+
}
192198
if dryRun {
193199
clients[EnvironmentInfo{
194200
Name: env.Name,

cmd/monaco/dynatrace/dynatrace_test.go

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -81,15 +81,17 @@ func TestVerifyEnvironmentGeneration_OneOfManyFails(t *testing.T) {
8181

8282
ok := VerifyEnvironmentGeneration(t.Context(), manifest.Environments{
8383
"env": manifest.EnvironmentDefinition{
84-
Name: "env",
84+
Enabled: true,
85+
Name: "env",
8586
URL: manifest.URLDefinition{
8687
Type: manifest.ValueURLType,
8788
Name: "URL",
8889
Value: server.URL,
8990
},
9091
},
9192
"env2": manifest.EnvironmentDefinition{
92-
Name: "env2",
93+
Enabled: true,
94+
Name: "env2",
9395
URL: manifest.URLDefinition{
9496
Type: manifest.ValueURLType,
9597
Name: "URL",
@@ -144,7 +146,8 @@ func TestVerifyEnvironmentGen(t *testing.T) {
144146

145147
ok := VerifyEnvironmentGeneration(t.Context(), manifest.Environments{
146148
"env": manifest.EnvironmentDefinition{
147-
Name: "env",
149+
Enabled: true,
150+
Name: "env",
148151
URL: manifest.URLDefinition{
149152
Type: manifest.ValueURLType,
150153
Name: "URL",
@@ -177,7 +180,8 @@ func TestVerifyEnvironmentGen(t *testing.T) {
177180

178181
ok := VerifyEnvironmentGeneration(t.Context(), manifest.Environments{
179182
"env": manifest.EnvironmentDefinition{
180-
Name: "env",
183+
Enabled: true,
184+
Name: "env",
181185
URL: manifest.URLDefinition{
182186
Type: manifest.ValueURLType,
183187
Name: "URL",
@@ -216,7 +220,8 @@ func TestVerifyEnvironmentGen(t *testing.T) {
216220

217221
ok := VerifyEnvironmentGeneration(t.Context(), manifest.Environments{
218222
"env1": manifest.EnvironmentDefinition{
219-
Name: "env1",
223+
Enabled: true,
224+
Name: "env1",
220225
URL: manifest.URLDefinition{
221226
Type: manifest.ValueURLType,
222227
Name: "URL",
@@ -228,7 +233,8 @@ func TestVerifyEnvironmentGen(t *testing.T) {
228233

229234
ok = VerifyEnvironmentGeneration(t.Context(), manifest.Environments{
230235
"env2": manifest.EnvironmentDefinition{
231-
Name: "env2",
236+
Enabled: true,
237+
Name: "env2",
232238
URL: manifest.URLDefinition{
233239
Type: manifest.ValueURLType,
234240
Name: "URL",

cmd/monaco/integrationtest/assert.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,9 @@ func AssertAllConfigsAvailability(t *testing.T, fs afero.Fs, manifestPath string
7474
envNames := make([]string, 0, len(loadedManifest.Environments))
7575

7676
for _, env := range loadedManifest.Environments {
77+
if !env.Enabled {
78+
continue
79+
}
7780
envNames = append(envNames, env.Name)
7881
}
7982

cmd/monaco/integrationtest/v2/skip_e2e_test.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,9 @@ func TestSkip(t *testing.T) {
104104
clients := make(map[string]client.SettingsClient)
105105

106106
for name, def := range loadedManifest.Environments {
107+
if !def.Enabled {
108+
continue
109+
}
107110
set := integrationtest.CreateDynatraceClients(t, def)
108111
clients[name] = set.SettingsClient
109112
}

cmd/monaco/purge/purge.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,9 @@ func purge(ctx context.Context, fs afero.Fs, deploymentManifestPath string, envi
6363
func purgeConfigs(ctx context.Context, environments []manifest.EnvironmentDefinition, apis api.APIs) error {
6464

6565
for _, env := range environments {
66+
if !env.Enabled {
67+
continue
68+
}
6669
err := purgeForEnvironment(ctx, env, apis)
6770
if err != nil {
6871
return err

pkg/config/loader/config_entry_loader.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,9 @@ func parseConfigEntry(
6161
var results []config.Config
6262
var errs []error
6363
for _, env := range loaderContext.Environments {
64+
if !env.Enabled {
65+
continue
66+
}
6467

6568
result, definitionErrors := parseDefinitionForEnvironment(fs, singleConfigContext, configId, env, definition, groupOverrideMap, environmentOverrideMap)
6669

pkg/config/loader/config_loader_test.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,9 +53,10 @@ func Test_parseConfigs(t *testing.T) {
5353
KnownApis: map[string]struct{}{"some-api": {}, api.DashboardShareSettings: {}},
5454
Environments: []manifest.EnvironmentDefinition{
5555
{
56-
Name: "env name",
57-
URL: manifest.URLDefinition{Type: manifest.ValueURLType, Value: "env url"},
58-
Group: "default",
56+
Enabled: true,
57+
Name: "env name",
58+
URL: manifest.URLDefinition{Type: manifest.ValueURLType, Value: "env url"},
59+
Group: "default",
5960
Auth: manifest.Auth{
6061
Token: &manifest.AuthSecret{Name: "token var"},
6162
},

pkg/config/loader/parameter_integration_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ func TestParametersAreLoadedAsExpected(t *testing.T) {
3939

4040
loaderContext := LoaderContext{
4141
Environments: []manifest.EnvironmentDefinition{
42-
{Name: "testEnv"},
42+
{Enabled: true, Name: "testEnv"},
4343
},
4444
KnownApis: map[string]struct{}{"some-api": {}},
4545
ParametersSerDe: config.DefaultParameterParsers,

pkg/config/loader/template_integration_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ func TestConfigurationTemplatingFromFilesProducesValidJson(t *testing.T) {
3939

4040
loaderContext := LoaderContext{
4141
Environments: []manifest.EnvironmentDefinition{
42-
{Name: "testEnv"},
42+
{Enabled: true, Name: "testEnv"},
4343
},
4444
KnownApis: map[string]struct{}{"some-api": {}},
4545
ParametersSerDe: config.DefaultParameterParsers,

pkg/manifest/loader/manifest_loader.go

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -377,9 +377,10 @@ func parseEnvironments(context *Context, groups []persistence.Group) (map[string
377377
}
378378
envNames[env.Name] = true
379379

380-
// skip loading if environments is not empty, the environments does not contain the env name, or the group should not be included
380+
// skip actually loading if environments is not empty, the environments does not contain the env name, or the group should not be included
381381
if shouldSkipEnv(context, group, env) {
382382
log.WithFields(field.F("manifestPath", context.ManifestPath)).Debug("skipping loading of environment %q", env.Name)
383+
environments[env.Name] = manifest.EnvironmentDefinition{Enabled: false, Name: env.Name, Group: group.Name}
383384
continue
384385
}
385386

@@ -449,10 +450,11 @@ func parseSingleEnvironment(context *Context, config persistence.Environment, gr
449450
}
450451

451452
return manifest.EnvironmentDefinition{
452-
Name: config.Name,
453-
URL: urlDef,
454-
Auth: a,
455-
Group: group,
453+
Enabled: true,
454+
Name: config.Name,
455+
URL: urlDef,
456+
Auth: a,
457+
Group: group,
456458
}, nil
457459
}
458460

0 commit comments

Comments
 (0)