Skip to content

Commit 469fd7b

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 b810007 commit 469fd7b

File tree

12 files changed

+162
-66
lines changed

12 files changed

+162
-66
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
}
@@ -187,6 +190,9 @@ func (e EnvironmentClients) Names() []string {
187190
func CreateEnvironmentClients(ctx context.Context, environments manifest.Environments, dryRun bool) (EnvironmentClients, error) {
188191
clients := make(EnvironmentClients, len(environments))
189192
for _, env := range environments {
193+
if !env.Enabled {
194+
continue
195+
}
190196
if dryRun {
191197
clients[EnvironmentInfo{
192198
Name: env.Name,

cmd/monaco/dynatrace/dynatrace_test.go

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

6868
ok := VerifyEnvironmentGeneration(t.Context(), manifest.Environments{
6969
"env": manifest.EnvironmentDefinition{
70-
Name: "env",
70+
Enabled: true,
71+
Name: "env",
7172
URL: manifest.URLDefinition{
7273
Type: manifest.ValueURLType,
7374
Name: "URL",
7475
Value: server.URL,
7576
},
7677
},
7778
"env2": manifest.EnvironmentDefinition{
78-
Name: "env",
79+
Enabled: true,
80+
Name: "env",
7981
URL: manifest.URLDefinition{
8082
Type: manifest.ValueURLType,
8183
Name: "URL",
@@ -130,7 +132,8 @@ func TestVerifyEnvironmentGen(t *testing.T) {
130132

131133
ok := VerifyEnvironmentGeneration(t.Context(), manifest.Environments{
132134
"env": manifest.EnvironmentDefinition{
133-
Name: "env",
135+
Enabled: true,
136+
Name: "env",
134137
URL: manifest.URLDefinition{
135138
Type: manifest.ValueURLType,
136139
Name: "URL",
@@ -163,7 +166,8 @@ func TestVerifyEnvironmentGen(t *testing.T) {
163166

164167
ok := VerifyEnvironmentGeneration(t.Context(), manifest.Environments{
165168
"env": manifest.EnvironmentDefinition{
166-
Name: "env",
169+
Enabled: true,
170+
Name: "env",
167171
URL: manifest.URLDefinition{
168172
Type: manifest.ValueURLType,
169173
Name: "URL",
@@ -202,7 +206,8 @@ func TestVerifyEnvironmentGen(t *testing.T) {
202206

203207
ok := VerifyEnvironmentGeneration(t.Context(), manifest.Environments{
204208
"env1": manifest.EnvironmentDefinition{
205-
Name: "env1",
209+
Enabled: true,
210+
Name: "env1",
206211
URL: manifest.URLDefinition{
207212
Type: manifest.ValueURLType,
208213
Name: "URL",
@@ -214,7 +219,8 @@ func TestVerifyEnvironmentGen(t *testing.T) {
214219

215220
ok = VerifyEnvironmentGeneration(t.Context(), manifest.Environments{
216221
"env2": manifest.EnvironmentDefinition{
217-
Name: "env2",
222+
Enabled: true,
223+
Name: "env2",
218224
URL: manifest.URLDefinition{
219225
Type: manifest.ValueURLType,
220226
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/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)