Skip to content

Commit ab90404

Browse files
dependabot[bot]Chilinot
authored andcommitted
chore(deps): bump github.com/stackitcloud/stackit-sdk-go/services/sfs (stackitcloud#1351)
1 parent 20dcaac commit ab90404

5 files changed

Lines changed: 148 additions & 12 deletions

File tree

go.mod

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ require (
1212
github.com/hashicorp/terraform-plugin-go v0.30.0
1313
github.com/hashicorp/terraform-plugin-log v0.10.0
1414
github.com/hashicorp/terraform-plugin-testing v1.14.0
15-
github.com/stackitcloud/stackit-sdk-go/core v0.24.0
15+
github.com/stackitcloud/stackit-sdk-go/core v0.24.1
1616
github.com/stackitcloud/stackit-sdk-go/services/alb v0.12.1
1717
github.com/stackitcloud/stackit-sdk-go/services/cdn v1.13.0
1818
github.com/stackitcloud/stackit-sdk-go/services/dns v0.19.1
@@ -39,7 +39,7 @@ require (
3939
github.com/stackitcloud/stackit-sdk-go/services/serverupdate v1.2.6
4040
github.com/stackitcloud/stackit-sdk-go/services/serviceaccount v0.12.0
4141
github.com/stackitcloud/stackit-sdk-go/services/serviceenablement v1.4.1
42-
github.com/stackitcloud/stackit-sdk-go/services/sfs v0.6.1
42+
github.com/stackitcloud/stackit-sdk-go/services/sfs v0.6.3
4343
github.com/stackitcloud/stackit-sdk-go/services/ske v1.7.0
4444
github.com/stackitcloud/stackit-sdk-go/services/sqlserverflex v1.6.1
4545
github.com/teambition/rrule-go v1.8.2

go.sum

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -153,8 +153,8 @@ github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN
153153
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4=
154154
github.com/skeema/knownhosts v1.3.1 h1:X2osQ+RAjK76shCbvhHHHVl3ZlgDm8apHEHFqRjnBY8=
155155
github.com/skeema/knownhosts v1.3.1/go.mod h1:r7KTdC8l4uxWRyK2TpQZ/1o5HaSzh06ePQNxPwTcfiY=
156-
github.com/stackitcloud/stackit-sdk-go/core v0.24.0 h1:kHCcezCJ5OGSP7RRuGOxD5rF2wejpkEiRr/OdvNcuPQ=
157-
github.com/stackitcloud/stackit-sdk-go/core v0.24.0/go.mod h1:osMglDby4csGZ5sIfhNyYq1bS1TxIdPY88+skE/kkmI=
156+
github.com/stackitcloud/stackit-sdk-go/core v0.24.1 h1:IrG0XBlJivUpXC4Y6TE+6FeSxNPs1JQXsero0ivwh0o=
157+
github.com/stackitcloud/stackit-sdk-go/core v0.24.1/go.mod h1:osMglDby4csGZ5sIfhNyYq1bS1TxIdPY88+skE/kkmI=
158158
github.com/stackitcloud/stackit-sdk-go/services/alb v0.12.1 h1:RKaxAymxlyxxE0Gta3yRuQWf07LnlcX+mfGnVB96NHA=
159159
github.com/stackitcloud/stackit-sdk-go/services/alb v0.12.1/go.mod h1:FHkV5L9vCQha+5MX+NdMdYjQIHXcLr95+bu1FN91QOM=
160160
github.com/stackitcloud/stackit-sdk-go/services/authorization v0.12.0 h1:HxPgBu04j5tj6nfZ2r0l6v4VXC0/tYOGe4sA5Addra8=
@@ -171,8 +171,6 @@ github.com/stackitcloud/stackit-sdk-go/services/iaas v1.3.5 h1:W57+XRa8wTLsi5CV9
171171
github.com/stackitcloud/stackit-sdk-go/services/iaas v1.3.5/go.mod h1:lTWjW57eAq1bwfM6nsNinhoBr3MHFW/GaFasdAsYfDM=
172172
github.com/stackitcloud/stackit-sdk-go/services/kms v1.6.0 h1:WWU2LpqmazsPDgoRAVrhLzo2MiNU9dNim81z793DbBU=
173173
github.com/stackitcloud/stackit-sdk-go/services/kms v1.6.0/go.mod h1:FuyCm3s/Ihw+tkpVLGMXwgTtlhrijd31cUCUBWpn1p8=
174-
github.com/stackitcloud/stackit-sdk-go/services/loadbalancer v1.8.0 h1:DxrN85V738CRLynu6MULQHO+OXyYnkhVPgoZKULfFIs=
175-
github.com/stackitcloud/stackit-sdk-go/services/loadbalancer v1.8.0/go.mod h1:ClPE4TOM1FeaJiwTXvApq4gWaSgTLq6nU3PPHAIQDN4=
176174
github.com/stackitcloud/stackit-sdk-go/services/loadbalancer v1.11.1 h1:8hLLCP4n9w3K3dqJaKF1PnMpX4qjR8UQL3gDr80hgDI=
177175
github.com/stackitcloud/stackit-sdk-go/services/loadbalancer v1.11.1/go.mod h1:vqTjmecQ4+oVWzeo9tCOUZ3TrpIIzM+C0apC7cdAD0Y=
178176
github.com/stackitcloud/stackit-sdk-go/services/logme v0.27.1 h1:6AaWxQNtOEvIvbtyySi5KIrNzxGbKgOayUnA3fpuqns=
@@ -183,8 +181,6 @@ github.com/stackitcloud/stackit-sdk-go/services/mariadb v0.27.1 h1:YK2HxO+Nffe5B
183181
github.com/stackitcloud/stackit-sdk-go/services/mariadb v0.27.1/go.mod h1:/8x9gLPt1ZqcAtyVP3dwqKA9FtdHMn5pcy1TSS5iSSg=
184182
github.com/stackitcloud/stackit-sdk-go/services/modelserving v0.8.1 h1:qBPfWK6Xpi7eYFAZCOR4H2wkJqZMRadfAbBdJ4Qrktk=
185183
github.com/stackitcloud/stackit-sdk-go/services/modelserving v0.8.1/go.mod h1:b8L6f68HZce01y+eZ1o7KTRAkgpWhggpvakAEwnxnCs=
186-
github.com/stackitcloud/stackit-sdk-go/services/mongodbflex v1.7.1 h1:8HFqfUI35Uk5QHUr3+VO21KXstzUl5zDKFrMuVOx+BI=
187-
github.com/stackitcloud/stackit-sdk-go/services/mongodbflex v1.7.1/go.mod h1:an5vc+0PL6OBMqFl75uuQpVGyzWHBpoxc9a5p41fFA8=
188184
github.com/stackitcloud/stackit-sdk-go/services/mongodbflex v1.7.2 h1:ymhDgp6+RXBvmi9nugaVCi3MN0q2pC62SD+Nh5nTB84=
189185
github.com/stackitcloud/stackit-sdk-go/services/mongodbflex v1.7.2/go.mod h1:gm7KzHv788MZ2BPimrlRk3ueV8EBN4JACg/MtotGC70=
190186
github.com/stackitcloud/stackit-sdk-go/services/objectstorage v1.7.0 h1:UxnbsKm6PQV8Gudw/EhySaEh9q1xSaTG8mzJz1EvhnE=
@@ -213,8 +209,8 @@ github.com/stackitcloud/stackit-sdk-go/services/serviceaccount v0.12.0 h1:l1EDIl
213209
github.com/stackitcloud/stackit-sdk-go/services/serviceaccount v0.12.0/go.mod h1:EXq8/J7t9p8zPmdIq+atuxyAbnQwxrQT18fI+Qpv98k=
214210
github.com/stackitcloud/stackit-sdk-go/services/serviceenablement v1.4.1 h1:HZnZju8yqpvRIs71PEk54Jov6p+jiKIIlN+J+4tvcL0=
215211
github.com/stackitcloud/stackit-sdk-go/services/serviceenablement v1.4.1/go.mod h1:wBxlGcNeQPIh1aS4xYqJuN2z6haSHRwzne6drN5ROfM=
216-
github.com/stackitcloud/stackit-sdk-go/services/sfs v0.6.1 h1:hZSTu3gc31qpStc1Y4DUYF1xFHGBEEVBtUs6tGDLxzQ=
217-
github.com/stackitcloud/stackit-sdk-go/services/sfs v0.6.1/go.mod h1:I8ymS0DGUfdDUaOgSVlX0AwH/J6xTtDqEG7bip26LSE=
212+
github.com/stackitcloud/stackit-sdk-go/services/sfs v0.6.3 h1:LEdPJ6f9pbrft+HlIIzRcCQog58b7UKVm4ObiOH8H4o=
213+
github.com/stackitcloud/stackit-sdk-go/services/sfs v0.6.3/go.mod h1:qO2+XOzLy9rRTDo3IvXJd4uZsl6d1npa2cyQvaY4/Fw=
218214
github.com/stackitcloud/stackit-sdk-go/services/ske v1.7.0 h1:l1QjxW7sdE/6B6BZtHxbmus8XJdI9KDuXX3fwUa5fog=
219215
github.com/stackitcloud/stackit-sdk-go/services/ske v1.7.0/go.mod h1:1Jr+ImrmPERxbYnlTy6O2aSZYNnREf2qQyysv6YC1RY=
220216
github.com/stackitcloud/stackit-sdk-go/services/sqlserverflex v1.6.1 h1:aUpKF2aF8WKsHawXPFnKsRlAcaHkRg6UL0sVjuQqB74=

stackit/internal/services/objectstorage/bucket/resource.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ import (
88
"strings"
99

1010
"github.com/hashicorp/terraform-plugin-framework/resource/schema/booldefault"
11-
"github.com/hashicorp/terraform-plugin-framework/resource/schema/boolplanmodifier"
1211
"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/conversion"
1312
objectstorageUtils "github.com/stackitcloud/terraform-provider-stackit/stackit/internal/services/objectstorage/utils"
13+
boolplanmodifier "github.com/stackitcloud/terraform-provider-stackit/stackit/internal/utils/planmodifiers/boolplanmodifier"
1414

1515
"github.com/hashicorp/terraform-plugin-framework/schema/validator"
1616
"github.com/hashicorp/terraform-plugin-log/tflog"
@@ -36,6 +36,7 @@ var (
3636
_ resource.ResourceWithModifyPlan = &bucketResource{}
3737
)
3838

39+
3940
type Model struct {
4041
Id types.String `tfsdk:"id"` // needed by TF
4142
Name types.String `tfsdk:"name"`
@@ -160,7 +161,7 @@ func (r *bucketResource) Schema(_ context.Context, _ resource.SchemaRequest, res
160161
Computed: true,
161162
Default: booldefault.StaticBool(false),
162163
PlanModifiers: []planmodifier.Bool{
163-
boolplanmodifier.RequiresReplace(),
164+
boolplanmodifier.RequiresReplaceIfKnown(),
164165
},
165166
},
166167
"url_path_style": schema.StringAttribute{
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package boolplanmodifier
2+
3+
import (
4+
"context"
5+
6+
"github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier"
7+
)
8+
9+
type requiresReplaceIfKnownModifier struct{}
10+
11+
// RequiresReplaceIfKnown returns a plan modifier that requires resource replacement only
12+
// when the prior state value is known (not null) and differs from the planned value.
13+
// This avoids unnecessary replacement when an attribute is introduced to the provider schema
14+
// after a resource was already created, where the prior state has a null value.
15+
func RequiresReplaceIfKnown() planmodifier.Bool {
16+
return requiresReplaceIfKnownModifier{}
17+
}
18+
19+
func (m requiresReplaceIfKnownModifier) Description(_ context.Context) string {
20+
return "If the value of this attribute changes from a known value, Terraform will destroy and recreate the resource."
21+
}
22+
23+
func (m requiresReplaceIfKnownModifier) MarkdownDescription(ctx context.Context) string {
24+
return m.Description(ctx)
25+
}
26+
27+
func (m requiresReplaceIfKnownModifier) PlanModifyBool(_ context.Context, req planmodifier.BoolRequest, resp *planmodifier.BoolResponse) { // nolint:gocritic // function signature required by Terraform
28+
// No replace needed when creating the resource
29+
if req.State.Raw.IsNull() {
30+
return
31+
}
32+
// No replace needed when the prior state value is null (attribute newly introduced to existing resource)
33+
if req.StateValue.IsNull() {
34+
return
35+
}
36+
if req.PlanValue.IsUnknown() || req.PlanValue.IsNull() {
37+
return
38+
}
39+
if req.StateValue.Equal(req.PlanValue) {
40+
return
41+
}
42+
resp.RequiresReplace = true
43+
}
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
package boolplanmodifier
2+
3+
import (
4+
"context"
5+
"testing"
6+
7+
"github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier"
8+
"github.com/hashicorp/terraform-plugin-framework/tfsdk"
9+
"github.com/hashicorp/terraform-plugin-framework/types"
10+
"github.com/hashicorp/terraform-plugin-go/tftypes"
11+
)
12+
13+
func TestRequiresReplaceIfKnown_PlanModifyBool(t *testing.T) {
14+
ctx := context.Background()
15+
16+
// nullRawState simulates a resource that does not yet exist (creation)
17+
nullRawState := tfsdk.State{
18+
Raw: tftypes.NewValue(tftypes.Object{AttributeTypes: map[string]tftypes.Type{}}, nil),
19+
}
20+
// existingRawState simulates a resource that already exists in state
21+
existingRawState := tfsdk.State{
22+
Raw: tftypes.NewValue(tftypes.Object{AttributeTypes: map[string]tftypes.Type{}}, map[string]tftypes.Value{}),
23+
}
24+
25+
tests := []struct {
26+
name string
27+
state tfsdk.State
28+
stateValue types.Bool
29+
planValue types.Bool
30+
expectedRequiresReplace bool
31+
}{
32+
{
33+
name: "resource_creation_no_replace",
34+
state: nullRawState,
35+
stateValue: types.BoolNull(),
36+
planValue: types.BoolValue(false),
37+
expectedRequiresReplace: false,
38+
},
39+
{
40+
name: "null_state_value_new_attribute_no_replace",
41+
state: existingRawState,
42+
stateValue: types.BoolNull(),
43+
planValue: types.BoolValue(false),
44+
expectedRequiresReplace: false,
45+
},
46+
{
47+
name: "unknown_plan_value_no_replace",
48+
state: existingRawState,
49+
stateValue: types.BoolValue(false),
50+
planValue: types.BoolUnknown(),
51+
expectedRequiresReplace: false,
52+
},
53+
{
54+
name: "null_plan_value_no_replace",
55+
state: existingRawState,
56+
stateValue: types.BoolValue(false),
57+
planValue: types.BoolNull(),
58+
expectedRequiresReplace: false,
59+
},
60+
{
61+
name: "state_equals_plan_no_replace",
62+
state: existingRawState,
63+
stateValue: types.BoolValue(false),
64+
planValue: types.BoolValue(false),
65+
expectedRequiresReplace: false,
66+
},
67+
{
68+
name: "state_differs_from_plan_requires_replace",
69+
state: existingRawState,
70+
stateValue: types.BoolValue(false),
71+
planValue: types.BoolValue(true),
72+
expectedRequiresReplace: true,
73+
},
74+
}
75+
76+
for _, tt := range tests {
77+
t.Run(tt.name, func(t *testing.T) {
78+
modifier := RequiresReplaceIfKnown()
79+
80+
req := planmodifier.BoolRequest{
81+
State: tt.state,
82+
StateValue: tt.stateValue,
83+
PlanValue: tt.planValue,
84+
}
85+
resp := &planmodifier.BoolResponse{
86+
PlanValue: tt.planValue,
87+
}
88+
89+
modifier.PlanModifyBool(ctx, req, resp)
90+
91+
if resp.RequiresReplace != tt.expectedRequiresReplace {
92+
t.Errorf("RequiresReplace mismatch.\nExpected: %v\nGot: %v", tt.expectedRequiresReplace, resp.RequiresReplace)
93+
}
94+
})
95+
}
96+
}

0 commit comments

Comments
 (0)