Skip to content

Commit

Permalink
fix: introduced partial state setting (#668)
Browse files Browse the repository at this point in the history
  • Loading branch information
bahkauv70 authored Feb 6, 2025
1 parent 531950f commit 8409f6b
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 14 deletions.
30 changes: 23 additions & 7 deletions stackit/internal/services/argus/instance/resource.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import (
"github.com/hashicorp/terraform-plugin-framework-validators/setvalidator"
"github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator"
"github.com/hashicorp/terraform-plugin-framework/attr"
"github.com/hashicorp/terraform-plugin-framework/diag"
"github.com/hashicorp/terraform-plugin-framework/path"
"github.com/hashicorp/terraform-plugin-framework/resource"
"github.com/hashicorp/terraform-plugin-framework/resource/schema"
Expand All @@ -19,6 +20,7 @@ import (
"github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier"
"github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier"
"github.com/hashicorp/terraform-plugin-framework/schema/validator"
"github.com/hashicorp/terraform-plugin-framework/tfsdk"
"github.com/hashicorp/terraform-plugin-framework/types"
"github.com/hashicorp/terraform-plugin-framework/types/basetypes"
"github.com/hashicorp/terraform-plugin-log/tflog"
Expand Down Expand Up @@ -875,7 +877,7 @@ func (r *instanceResource) Create(ctx context.Context, req resource.CreateReques
}

// Set state to fully populated data
diags = resp.State.Set(ctx, model)
diags = setACL(ctx, resp.State, &model)
resp.Diagnostics.Append(diags...)
if resp.Diagnostics.HasError() {
return
Expand Down Expand Up @@ -917,7 +919,7 @@ func (r *instanceResource) Create(ctx context.Context, req resource.CreateReques
}

// Set state to fully populated data
diags = resp.State.Set(ctx, model)
diags = setMetricsRetentions(ctx, resp.State, &model)
resp.Diagnostics.Append(diags...)
if resp.Diagnostics.HasError() {
return
Expand Down Expand Up @@ -961,7 +963,7 @@ func (r *instanceResource) Create(ctx context.Context, req resource.CreateReques
}

// Set state to fully populated data
diags = resp.State.Set(ctx, model)
diags = setAlertConfig(ctx, resp.State, &model)
resp.Diagnostics.Append(diags...)
if resp.Diagnostics.HasError() {
return
Expand Down Expand Up @@ -1143,8 +1145,7 @@ func (r *instanceResource) Update(ctx context.Context, req resource.UpdateReques
}

// Set state to ACL populated data
diags = resp.State.Set(ctx, model)
resp.Diagnostics.Append(diags...)
resp.Diagnostics.Append(setACL(ctx, resp.State, &model)...)
if resp.Diagnostics.HasError() {
return
}
Expand Down Expand Up @@ -1184,7 +1185,7 @@ func (r *instanceResource) Update(ctx context.Context, req resource.UpdateReques
return
}
// Set state to fully populated data
diags = resp.State.Set(ctx, model)
diags = setMetricsRetentions(ctx, resp.State, &model)
resp.Diagnostics.Append(diags...)
if resp.Diagnostics.HasError() {
return
Expand Down Expand Up @@ -1228,7 +1229,7 @@ func (r *instanceResource) Update(ctx context.Context, req resource.UpdateReques
}

// Set state to fully populated data
diags = resp.State.Set(ctx, model)
diags = setAlertConfig(ctx, resp.State, &model)
resp.Diagnostics.Append(diags...)
if resp.Diagnostics.HasError() {
return
Expand Down Expand Up @@ -2185,3 +2186,18 @@ func (r *instanceResource) loadPlanId(ctx context.Context, model *Model) error {
}
return nil
}

func setACL(ctx context.Context, state tfsdk.State, model *Model) diag.Diagnostics {
return state.SetAttribute(ctx, path.Root("acl"), model.ACL)
}

func setMetricsRetentions(ctx context.Context, state tfsdk.State, model *Model) (diags diag.Diagnostics) {
diags = append(diags, state.SetAttribute(ctx, path.Root("metrics_retention_days"), model.MetricsRetentionDays)...)
diags = append(diags, state.SetAttribute(ctx, path.Root("metrics_retention_days_5m_downsampling"), model.MetricsRetentionDays5mDownsampling)...)
diags = append(diags, state.SetAttribute(ctx, path.Root("metrics_retention_days_1h_downsampling"), model.MetricsRetentionDays1hDownsampling)...)
return diags
}

func setAlertConfig(ctx context.Context, state tfsdk.State, model *Model) diag.Diagnostics {
return state.SetAttribute(ctx, path.Root("alert_config"), model.AlertConfig)
}
30 changes: 23 additions & 7 deletions stackit/internal/services/observability/instance/resource.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import (
"github.com/hashicorp/terraform-plugin-framework-validators/setvalidator"
"github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator"
"github.com/hashicorp/terraform-plugin-framework/attr"
"github.com/hashicorp/terraform-plugin-framework/diag"
"github.com/hashicorp/terraform-plugin-framework/path"
"github.com/hashicorp/terraform-plugin-framework/resource"
"github.com/hashicorp/terraform-plugin-framework/resource/schema"
Expand All @@ -19,6 +20,7 @@ import (
"github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier"
"github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier"
"github.com/hashicorp/terraform-plugin-framework/schema/validator"
"github.com/hashicorp/terraform-plugin-framework/tfsdk"
"github.com/hashicorp/terraform-plugin-framework/types"
"github.com/hashicorp/terraform-plugin-framework/types/basetypes"
"github.com/hashicorp/terraform-plugin-log/tflog"
Expand Down Expand Up @@ -924,7 +926,7 @@ func (r *instanceResource) Create(ctx context.Context, req resource.CreateReques
}

// Set state to fully populated data
diags = resp.State.Set(ctx, model)
diags = setACL(ctx, resp.State, &model)
resp.Diagnostics.Append(diags...)
if resp.Diagnostics.HasError() {
return
Expand Down Expand Up @@ -966,7 +968,7 @@ func (r *instanceResource) Create(ctx context.Context, req resource.CreateReques
}

// Set state to fully populated data
diags = resp.State.Set(ctx, model)
diags = setMetricsRetentions(ctx, resp.State, &model)
resp.Diagnostics.Append(diags...)
if resp.Diagnostics.HasError() {
return
Expand Down Expand Up @@ -1010,7 +1012,7 @@ func (r *instanceResource) Create(ctx context.Context, req resource.CreateReques
}

// Set state to fully populated data
diags = resp.State.Set(ctx, model)
diags = setAlertConfig(ctx, resp.State, &model)
resp.Diagnostics.Append(diags...)
if resp.Diagnostics.HasError() {
return
Expand Down Expand Up @@ -1192,8 +1194,7 @@ func (r *instanceResource) Update(ctx context.Context, req resource.UpdateReques
}

// Set state to ACL populated data
diags = resp.State.Set(ctx, model)
resp.Diagnostics.Append(diags...)
resp.Diagnostics.Append(setACL(ctx, resp.State, &model)...)
if resp.Diagnostics.HasError() {
return
}
Expand Down Expand Up @@ -1233,7 +1234,7 @@ func (r *instanceResource) Update(ctx context.Context, req resource.UpdateReques
return
}
// Set state to fully populated data
diags = resp.State.Set(ctx, model)
diags = setMetricsRetentions(ctx, resp.State, &model)
resp.Diagnostics.Append(diags...)
if resp.Diagnostics.HasError() {
return
Expand Down Expand Up @@ -1277,7 +1278,7 @@ func (r *instanceResource) Update(ctx context.Context, req resource.UpdateReques
}

// Set state to fully populated data
diags = resp.State.Set(ctx, model)
diags = setAlertConfig(ctx, resp.State, &model)
resp.Diagnostics.Append(diags...)
if resp.Diagnostics.HasError() {
return
Expand Down Expand Up @@ -2234,3 +2235,18 @@ func (r *instanceResource) loadPlanId(ctx context.Context, model *Model) error {
}
return nil
}

func setACL(ctx context.Context, state tfsdk.State, model *Model) diag.Diagnostics {
return state.SetAttribute(ctx, path.Root("acl"), model.ACL)
}

func setMetricsRetentions(ctx context.Context, state tfsdk.State, model *Model) (diags diag.Diagnostics) {
diags = append(diags, state.SetAttribute(ctx, path.Root("metrics_retention_days"), model.MetricsRetentionDays)...)
diags = append(diags, state.SetAttribute(ctx, path.Root("metrics_retention_days_5m_downsampling"), model.MetricsRetentionDays5mDownsampling)...)
diags = append(diags, state.SetAttribute(ctx, path.Root("metrics_retention_days_1h_downsampling"), model.MetricsRetentionDays1hDownsampling)...)
return diags
}

func setAlertConfig(ctx context.Context, state tfsdk.State, model *Model) diag.Diagnostics {
return state.SetAttribute(ctx, path.Root("alert_config"), model.AlertConfig)
}

0 comments on commit 8409f6b

Please sign in to comment.