Skip to content

Commit 6921053

Browse files
Dray56debTheRay
authored andcommitted
Fixed removing env
1 parent 4876b3d commit 6921053

File tree

6 files changed

+2707
-3929
lines changed

6 files changed

+2707
-3929
lines changed

internal/provider/fixtures/resource_app_bits.yaml

Lines changed: 587 additions & 1587 deletions
Large diffs are not rendered by default.

internal/provider/fixtures/resource_app_bits_update.yaml

Lines changed: 1472 additions & 2002 deletions
Large diffs are not rendered by default.

internal/provider/fixtures/resource_app_docker.yaml

Lines changed: 308 additions & 170 deletions
Large diffs are not rendered by default.

internal/provider/fixtures/resource_app_sidecar.yaml

Lines changed: 301 additions & 163 deletions
Large diffs are not rendered by default.

internal/provider/resource_app.go

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -434,7 +434,11 @@ func (r *appResource) Update(ctx context.Context, req resource.UpdateRequest, re
434434
r.upsert(ctx, &req.Plan, &req.State, &resp.State, &resp.Diagnostics)
435435
}
436436
func (r *appResource) upsert(ctx context.Context, reqPlan *tfsdk.Plan, reqState *tfsdk.State, respState *tfsdk.State, respDiags *diag.Diagnostics) {
437-
var desiredState, previousState AppType
437+
var (
438+
desiredState, previousState AppType
439+
envs map[string]*string
440+
)
441+
envs = make(map[string]*string)
438442
diags := reqPlan.Get(ctx, &desiredState)
439443
respDiags.Append(diags...)
440444
if respDiags.HasError() {
@@ -452,20 +456,23 @@ func (r *appResource) upsert(ctx context.Context, reqPlan *tfsdk.Plan, reqState
452456
if reqState != nil {
453457
diags = reqState.Get(ctx, &previousState)
454458
respDiags.Append(diags...)
455-
if respDiags.HasError() {
456-
return
457-
}
458459
appManifestValue.Metadata, diags = setClientMetadataForUpdate(ctx, previousState.Labels, previousState.Annotations, desiredState.Labels, desiredState.Annotations)
459460
respDiags.Append(diags...)
460-
if respDiags.HasError() {
461-
return
462-
}
461+
envs, diags = setEnvForUpdate(ctx, previousState.Environment, desiredState.Environment)
462+
respDiags.Append(diags...)
463463
}
464464
appResp, err := r.push(desiredState, appManifestValue, ctx)
465465
if err != nil {
466466
respDiags.AddError("Error pushing app", err.Error())
467467
return
468468
}
469+
470+
_, err = r.cfClient.Applications.SetEnvironmentVariables(ctx, appResp.GUID, envs)
471+
if err != nil {
472+
respDiags.AddError("Error setting environment variables", err.Error())
473+
return
474+
}
475+
469476
manifestRespRaw, err := r.cfClient.Manifests.Generate(ctx, appResp.GUID)
470477
if err != nil {
471478
respDiags.AddError("Error generating manifest", err.Error())

internal/provider/types_app.go

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import (
1515
"github.com/hashicorp/terraform-plugin-framework/attr"
1616
"github.com/hashicorp/terraform-plugin-framework/diag"
1717
"github.com/hashicorp/terraform-plugin-framework/types"
18+
"github.com/hashicorp/terraform-plugin-framework/types/basetypes"
1819
)
1920

2021
// Type AppType representing Schema Attribute from function Schema in go type from resource_appManifest.go file.
@@ -692,3 +693,27 @@ func splitValueAndUnit(value string) (float64, string, error) {
692693
}
693694
return val, unit, nil
694695
}
696+
697+
// Prepares the env for cfclient updation from existing and planned tfstate envs.
698+
func setEnvForUpdate(ctx context.Context, existingEnvs basetypes.MapValue, plannedEnvs basetypes.MapValue) (map[string]*string, diag.Diagnostics) {
699+
700+
var (
701+
diagnostics diag.Diagnostics
702+
oldEnvs, newEnvs, finalEnvs map[string]*string
703+
)
704+
705+
finalEnvs = make(map[string]*string)
706+
707+
diagnostics.Append(existingEnvs.ElementsAs(ctx, &oldEnvs, false)...)
708+
diagnostics.Append(plannedEnvs.ElementsAs(ctx, &newEnvs, false)...)
709+
710+
for key := range oldEnvs {
711+
finalEnvs[key] = nil
712+
}
713+
714+
for key, value := range newEnvs {
715+
finalEnvs[key] = value
716+
}
717+
718+
return finalEnvs, diagnostics
719+
}

0 commit comments

Comments
 (0)