DNS | Fix zone updates failing (#6)
* Fix API returning error on updates * Add DNS zone update test * Fix primaires not used to update * Add primaries to model --------- Co-authored-by: Henrique Santos <henrique.santos@freiheit.com>
This commit is contained in:
parent
6800f7a421
commit
2c93e4a6f0
3 changed files with 30 additions and 35 deletions
|
|
@ -15,6 +15,7 @@ import (
|
|||
"github.com/hashicorp/terraform-plugin-framework/resource"
|
||||
"github.com/hashicorp/terraform-plugin-framework/resource/schema"
|
||||
"github.com/hashicorp/terraform-plugin-framework/resource/schema/booldefault"
|
||||
"github.com/hashicorp/terraform-plugin-framework/resource/schema/listplanmodifier"
|
||||
"github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier"
|
||||
"github.com/hashicorp/terraform-plugin-framework/resource/schema/stringdefault"
|
||||
"github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier"
|
||||
|
|
@ -228,6 +229,9 @@ func (r *zoneResource) Schema(_ context.Context, _ resource.SchemaRequest, resp
|
|||
Optional: true,
|
||||
Computed: true,
|
||||
ElementType: types.StringType,
|
||||
PlanModifiers: []planmodifier.List{
|
||||
listplanmodifier.RequiresReplace(),
|
||||
},
|
||||
Validators: []validator.List{
|
||||
listvalidator.SizeAtMost(10),
|
||||
},
|
||||
|
|
@ -585,14 +589,6 @@ func toUpdatePayload(model *Model) (*dns.UpdateZonePayload, error) {
|
|||
return nil, fmt.Errorf("nil model")
|
||||
}
|
||||
|
||||
modelPrimaries := []string{}
|
||||
for _, primary := range model.Primaries.Elements() {
|
||||
primaryString, ok := primary.(types.String)
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("type assertion failed")
|
||||
}
|
||||
modelPrimaries = append(modelPrimaries, primaryString.ValueString())
|
||||
}
|
||||
return &dns.UpdateZonePayload{
|
||||
Name: model.Name.ValueStringPointer(),
|
||||
ContactEmail: model.ContactEmail.ValueStringPointer(),
|
||||
|
|
@ -603,6 +599,6 @@ func toUpdatePayload(model *Model) (*dns.UpdateZonePayload, error) {
|
|||
RefreshTime: conversion.ToPtrInt32(model.RefreshTime),
|
||||
RetryTime: conversion.ToPtrInt32(model.RetryTime),
|
||||
NegativeCache: conversion.ToPtrInt32(model.NegativeCache),
|
||||
Primaries: &modelPrimaries,
|
||||
Primaries: nil, // API returns error if this field is set, even if nothing changes
|
||||
}, nil
|
||||
}
|
||||
|
|
|
|||
|
|
@ -290,8 +290,7 @@ func TestToPayloadUpdate(t *testing.T) {
|
|||
Name: types.StringValue("Name"),
|
||||
},
|
||||
&dns.UpdateZonePayload{
|
||||
Name: utils.Ptr("Name"),
|
||||
Primaries: &[]string{},
|
||||
Name: utils.Ptr("Name"),
|
||||
},
|
||||
true,
|
||||
},
|
||||
|
|
@ -321,7 +320,6 @@ func TestToPayloadUpdate(t *testing.T) {
|
|||
Acl: utils.Ptr("Acl"),
|
||||
Description: utils.Ptr("Description"),
|
||||
ContactEmail: utils.Ptr("ContactEmail"),
|
||||
Primaries: &[]string{"Primary"},
|
||||
RetryTime: utils.Ptr(int32(3)),
|
||||
RefreshTime: utils.Ptr(int32(4)),
|
||||
ExpireTime: utils.Ptr(int32(5)),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue