Skip to content

Commit

Permalink
Code cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
tobio committed Aug 1, 2023
1 parent 469bff3 commit ea801f2
Show file tree
Hide file tree
Showing 5 changed files with 14 additions and 47 deletions.
2 changes: 1 addition & 1 deletion ec/ecresource/deploymentresource/create.go
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ func (r *Resource) Create(ctx context.Context, req resource.CreateRequest, resp
}

deployment, diags := r.read(ctx, *res.ID, nil, &plan, res.Resources, filters)
updatePrivateStateTrafficFiltersFromCreate(ctx, resp, filters)
updatePrivateStateTrafficFilters(ctx, resp.Private, filters)

resp.Diagnostics.Append(diags...)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -230,7 +230,7 @@ func (dep *Deployment) ProcessSelfInObservability() {
}
}

func (dep *Deployment) HandleEmptyTrafficFilters(ctx context.Context, base DeploymentTF, privateFilters []string) diag.Diagnostics {
func (dep *Deployment) IncludePrivateStateTrafficFilters(ctx context.Context, base DeploymentTF, privateFilters []string) diag.Diagnostics {
var baseFilters []string
diags := base.TrafficFilter.ElementsAs(ctx, &baseFilters, true)
if diags.HasError() {
Expand All @@ -256,21 +256,6 @@ func (dep *Deployment) HandleEmptyTrafficFilters(ctx context.Context, base Deplo

dep.TrafficFilter = intersectionFilters

// // Ensure consistency between null, and empty configured traffic filter values.
// // The Cloud API represents an empty set of traffic filters as a null/missing value. Terraform does distinguish between those two cases.
// // If the Cloud response does not include traffic filters, then set the read value as the planned value, but only if the planned value is empty.
// if dep.TrafficFilter == nil {
// var baseFilters []string
// diags := base.TrafficFilter.ElementsAs(ctx, &baseFilters, true)
// if diags.HasError() {
// return diags
// }

// if len(baseFilters) == 0 {
// dep.TrafficFilter = baseFilters
// }
// }

return diags
}

Expand Down
30 changes: 8 additions & 22 deletions ec/ecresource/deploymentresource/private_state.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,20 +22,17 @@ import (
"encoding/json"

"github.com/hashicorp/terraform-plugin-framework/diag"
"github.com/hashicorp/terraform-plugin-framework/resource"
)

const trafficFilterStateKey = "traffic_filters"

func readPrivateStateTrafficFiltersFromRead(ctx context.Context, req resource.ReadRequest) ([]string, diag.Diagnostics) {
return readPrivateStateTrafficFilters(req.Private.GetKey(ctx, trafficFilterStateKey))
type PrivateState interface {
GetKey(context.Context, string) ([]byte, diag.Diagnostics)
SetKey(context.Context, string, []byte) diag.Diagnostics
}

func readPrivateStateTrafficFiltersFromUpdate(ctx context.Context, req resource.UpdateRequest) ([]string, diag.Diagnostics) {
return readPrivateStateTrafficFilters(req.Private.GetKey(ctx, trafficFilterStateKey))
}
const trafficFilterStateKey = "traffic_filters"

func readPrivateStateTrafficFilters(privateFilterBytes []byte, diags diag.Diagnostics) ([]string, diag.Diagnostics) {
func readPrivateStateTrafficFilters(ctx context.Context, state PrivateState) ([]string, diag.Diagnostics) {
privateFilterBytes, diags := state.GetKey(ctx, trafficFilterStateKey)
if privateFilterBytes == nil || diags.HasError() {
return []string{}, diags
}
Expand All @@ -50,24 +47,13 @@ func readPrivateStateTrafficFilters(privateFilterBytes []byte, diags diag.Diagno
return privateFilters, diags
}

func updatePrivateStateTrafficFiltersFromUpdate(ctx context.Context, resp *resource.UpdateResponse, filters []string) diag.Diagnostics {
var diags diag.Diagnostics
filterBytes, err := json.Marshal(filters)
if err != nil {
diags.AddError("failed to update private state", err.Error())
return diags
}

return resp.Private.SetKey(ctx, trafficFilterStateKey, filterBytes)
}

func updatePrivateStateTrafficFiltersFromCreate(ctx context.Context, resp *resource.CreateResponse, filters []string) diag.Diagnostics {
func updatePrivateStateTrafficFilters(ctx context.Context, state PrivateState, filters []string) diag.Diagnostics {
var diags diag.Diagnostics
filterBytes, err := json.Marshal(filters)
if err != nil {
diags.AddError("failed to update private state", err.Error())
return diags
}

return resp.Private.SetKey(ctx, trafficFilterStateKey, filterBytes)
return state.SetKey(ctx, trafficFilterStateKey, filterBytes)
}
4 changes: 2 additions & 2 deletions ec/ecresource/deploymentresource/read.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ func (r *Resource) Read(ctx context.Context, request resource.ReadRequest, respo

var newState *deploymentv2.Deployment

privateFilters, d := readPrivateStateTrafficFiltersFromRead(ctx, request)
privateFilters, d := readPrivateStateTrafficFilters(ctx, request.Private)
response.Diagnostics.Append(d...)
if response.Diagnostics.HasError() {
return
Expand Down Expand Up @@ -164,7 +164,7 @@ func (r *Resource) read(ctx context.Context, id string, state *deploymentv2.Depl
deployment.ResetElasticsearchPassword = base.ResetElasticsearchPassword.ValueBoolPointer()
}

diags.Append(deployment.HandleEmptyTrafficFilters(ctx, base, privateFilters)...)
diags.Append(deployment.IncludePrivateStateTrafficFilters(ctx, base, privateFilters)...)

deployment.SetCredentialsIfEmpty(state)

Expand Down
8 changes: 2 additions & 6 deletions ec/ecresource/deploymentresource/update.go
Original file line number Diff line number Diff line change
Expand Up @@ -73,14 +73,14 @@ func (r *Resource) Update(ctx context.Context, req resource.UpdateRequest, resp
return
}

privateFilters, d := readPrivateStateTrafficFiltersFromUpdate(ctx, req)
privateFilters, d := readPrivateStateTrafficFilters(ctx, req.Private)
resp.Diagnostics.Append(d...)
if resp.Diagnostics.HasError() {
return
}
planRules, diags := HandleTrafficFilterChange(ctx, r.client, plan, privateFilters)
resp.Diagnostics.Append(diags...)
updatePrivateStateTrafficFiltersFromUpdate(ctx, resp, planRules)
updatePrivateStateTrafficFilters(ctx, resp.Private, planRules)
resp.Diagnostics.Append(v2.HandleRemoteClusters(ctx, r.client, plan.Id.ValueString(), plan.Elasticsearch)...)

deployment, diags := r.read(ctx, plan.Id.ValueString(), &state, &plan, res.Resources, planRules)
Expand Down Expand Up @@ -123,10 +123,6 @@ func (r *Resource) ResetElasticsearchPassword(deploymentID string, refID string)
}

func HandleTrafficFilterChange(ctx context.Context, client *api.API, plan v2.DeploymentTF, stateRules ruleSet) ([]string, diag.Diagnostics) {
// if plan.TrafficFilter.Equal(state.TrafficFilter) {
// return nil
// }

var planRules ruleSet
if diags := plan.TrafficFilter.ElementsAs(ctx, &planRules, true); diags.HasError() {
return []string{}, diags
Expand Down

0 comments on commit ea801f2

Please sign in to comment.