Skip to content

Commit ff4cb46

Browse files
authored
fix: optional strings update and skip empty updates (#1427)
1 parent ae8a7bb commit ff4cb46

21 files changed

+6547
-15847
lines changed

scaleway/helpers.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -503,6 +503,14 @@ func expandStringPtr(data interface{}) *string {
503503
return scw.StringPtr(data.(string))
504504
}
505505

506+
func expandUpdatedStringPtr(data interface{}) *string {
507+
str := ""
508+
if data != nil {
509+
str = data.(string)
510+
}
511+
return &str
512+
}
513+
506514
func expandBoolPtr(data interface{}) *bool {
507515
if data == nil {
508516
return nil

scaleway/resource_account_project.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,11 +94,11 @@ func resourceScalewayAccountProjectUpdate(ctx context.Context, d *schema.Resourc
9494
hasChanged := false
9595

9696
if d.HasChange("name") {
97-
req.Name = expandStringPtr(d.Get("name"))
97+
req.Name = expandUpdatedStringPtr(d.Get("name"))
9898
hasChanged = true
9999
}
100100
if d.HasChange("description") {
101-
req.Description = expandStringPtr(d.Get("description"))
101+
req.Description = expandUpdatedStringPtr(d.Get("description"))
102102
hasChanged = true
103103
}
104104

scaleway/resource_account_ssh_key.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ func resourceScalewayAccountSSHKeyUpdate(ctx context.Context, d *schema.Resource
8989
if d.HasChange("name") {
9090
_, err := accountAPI.UpdateSSHKey(&account.UpdateSSHKeyRequest{
9191
SSHKeyID: d.Id(),
92-
Name: expandStringPtr(d.Get("name")),
92+
Name: expandUpdatedStringPtr(d.Get("name")),
9393
}, scw.WithContext(ctx))
9494
if err != nil {
9595
return diag.FromErr(err)

scaleway/resource_baremetal_server.go

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -228,15 +228,33 @@ func resourceScalewayBaremetalServerUpdate(ctx context.Context, d *schema.Resour
228228
return diag.FromErr(err)
229229
}
230230

231-
_, err = baremetalAPI.UpdateServer(&baremetal.UpdateServerRequest{
232-
Zone: zonedID.Zone,
233-
ServerID: zonedID.ID,
234-
Name: expandStringPtr(d.Get("name")),
235-
Description: expandStringPtr(d.Get("description")),
236-
Tags: expandUpdatedStringsPtr(d.Get("tags")),
237-
}, scw.WithContext(ctx))
238-
if err != nil {
239-
return diag.FromErr(err)
231+
req := &baremetal.UpdateServerRequest{
232+
Zone: zonedID.Zone,
233+
ServerID: zonedID.ID,
234+
}
235+
236+
hasChanged := false
237+
238+
if d.HasChange("name") {
239+
req.Name = expandUpdatedStringPtr("name")
240+
hasChanged = true
241+
}
242+
243+
if d.HasChange("description") {
244+
req.Description = expandUpdatedStringPtr("description")
245+
hasChanged = true
246+
}
247+
248+
if d.HasChange("tags") {
249+
req.Tags = expandUpdatedStringsPtr(d.Get("tags"))
250+
hasChanged = true
251+
}
252+
253+
if hasChanged {
254+
_, err = baremetalAPI.UpdateServer(req, scw.WithContext(ctx))
255+
if err != nil {
256+
return diag.FromErr(err)
257+
}
240258
}
241259

242260
if d.HasChanges("os", "ssh_key_ids") {

scaleway/resource_container.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -313,7 +313,7 @@ func resourceScalewayContainerUpdate(ctx context.Context, d *schema.ResourceData
313313
}
314314

315315
if d.HasChanges("description") {
316-
req.Description = expandStringPtr(d.Get("description"))
316+
req.Description = expandUpdatedStringPtr(d.Get("description"))
317317
}
318318

319319
if d.HasChanges("registry_image") {

scaleway/resource_container_namespace.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,8 +145,7 @@ func resourceScalewayContainerNamespaceUpdate(ctx context.Context, d *schema.Res
145145
}
146146

147147
if d.HasChange("description") {
148-
description := d.Get("description").(string)
149-
req.Description = &description
148+
req.Description = expandUpdatedStringPtr(d.Get("description"))
150149
}
151150

152151
if d.HasChanges("environment_variables") {

scaleway/resource_flexible_ip.go

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -161,26 +161,33 @@ func resourceScalewayFlexibleIPUpdate(ctx context.Context, d *schema.ResourceDat
161161
FipID: flexibleIP.ID,
162162
}
163163

164+
hasChanged := false
165+
164166
if d.HasChanges("reverse") {
165-
updateRequest.Reverse = expandStringPtr(d.Get("reverse"))
167+
updateRequest.Reverse = expandUpdatedStringPtr(d.Get("reverse"))
168+
hasChanged = true
166169
}
167170

168171
if d.HasChange("tags") {
169-
updateRequest.Tags = scw.StringsPtr(expandStrings(d.Get("tags")))
172+
updateRequest.Tags = expandUpdatedStringsPtr(d.Get("tags"))
173+
hasChanged = true
170174
}
171175

172176
if d.HasChange("description") {
173-
updateRequest.Description = expandStringPtr(d.Get("description"))
177+
updateRequest.Description = expandUpdatedStringPtr(d.Get("description"))
178+
hasChanged = true
174179
}
175180

176-
_, err = fipAPI.UpdateFlexibleIP(updateRequest, scw.WithContext(ctx))
177-
if err != nil {
178-
return diag.FromErr(err)
179-
}
181+
if hasChanged {
182+
_, err = fipAPI.UpdateFlexibleIP(updateRequest, scw.WithContext(ctx))
183+
if err != nil {
184+
return diag.FromErr(err)
185+
}
180186

181-
_, err = waitFlexibleIP(ctx, fipAPI, zone, ID, d.Timeout(schema.TimeoutUpdate))
182-
if err != nil {
183-
return diag.FromErr(err)
187+
_, err = waitFlexibleIP(ctx, fipAPI, zone, ID, d.Timeout(schema.TimeoutUpdate))
188+
if err != nil {
189+
return diag.FromErr(err)
190+
}
184191
}
185192

186193
if d.HasChange("server_id") {

scaleway/resource_flexible_ip_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ func TestAccScalewayFlexibleIP_CreateAndAttachToBaremetalServer(t *testing.T) {
124124
data "scaleway_baremetal_os" "by_id" {
125125
zone = "fr-par-2"
126126
name = "Ubuntu"
127-
version = "20.04 LTS (Focal Fossa)"
127+
version = "22.04 LTS (Jammy Jellyfish)"
128128
}
129129
130130
data "scaleway_baremetal_offer" "my_offer" {
@@ -190,7 +190,7 @@ func TestAccScalewayFlexibleIP_AttachAndDetachFromBaremetalServer(t *testing.T)
190190
data "scaleway_baremetal_os" "by_id" {
191191
zone = "fr-par-2"
192192
name = "Ubuntu"
193-
version = "20.04 LTS (Focal Fossa)"
193+
version = "22.04 LTS (Jammy Jellyfish)"
194194
}
195195
196196
data "scaleway_baremetal_offer" "my_offer" {

scaleway/resource_function.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -299,7 +299,7 @@ func resourceScalewayFunctionUpdate(ctx context.Context, d *schema.ResourceData,
299299
}
300300

301301
if d.HasChange("description") {
302-
req.Description = expandStringPtr(d.Get("description"))
302+
req.Description = expandUpdatedStringPtr(d.Get("description"))
303303
updated = true
304304
}
305305

scaleway/resource_function_namespace.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ func resourceScalewayFunctionNamespaceUpdate(ctx context.Context, d *schema.Reso
142142
}
143143

144144
if d.HasChange("description") {
145-
req.Description = scw.StringPtr(d.Get("description").(string))
145+
req.Description = expandUpdatedStringPtr(d.Get("description"))
146146
}
147147

148148
if d.HasChanges("environment_variables") {

0 commit comments

Comments
 (0)