55 "fmt"
66 "strings"
77
8- "github.com/hashicorp/terraform-plugin-framework-validators/int64validator "
8+ "github.com/hashicorp/terraform-plugin-framework-validators/int32validator "
99 "github.com/hashicorp/terraform-plugin-framework-validators/listvalidator"
1010 "github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator"
1111 "github.com/hashicorp/terraform-plugin-framework/resource"
@@ -16,8 +16,8 @@ import (
1616 "github.com/hashicorp/terraform-plugin-framework/schema/validator"
1717 "github.com/hashicorp/terraform-plugin-framework/types"
1818 "github.com/hashicorp/terraform-plugin-log/tflog"
19- "github.com/stackitcloud/stackit-sdk-go/services/dns"
20- "github.com/stackitcloud/stackit-sdk-go/services/dns/wait"
19+ dns "github.com/stackitcloud/stackit-sdk-go/services/dns/v1api "
20+ "github.com/stackitcloud/stackit-sdk-go/services/dns/v1api/ wait"
2121 "github.com/stackitcloud/terraform-provider-stackit/stackit/internal/conversion"
2222 "github.com/stackitcloud/terraform-provider-stackit/stackit/internal/core"
2323 dnsUtils "github.com/stackitcloud/terraform-provider-stackit/stackit/internal/services/dns/utils"
@@ -41,7 +41,7 @@ type Model struct {
4141 Comment types.String `tfsdk:"comment"`
4242 Name types.String `tfsdk:"name"`
4343 Records types.List `tfsdk:"records"`
44- TTL types.Int64 `tfsdk:"ttl"`
44+ TTL types.Int32 `tfsdk:"ttl"`
4545 Type types.String `tfsdk:"type"`
4646 Error types.String `tfsdk:"error"`
4747 State types.String `tfsdk:"state"`
@@ -144,13 +144,13 @@ func (r *recordSetResource) Schema(_ context.Context, _ resource.SchemaRequest,
144144 listvalidator .ValueStringsAre (validate .RecordSet ()),
145145 },
146146 },
147- "ttl" : schema.Int64Attribute {
147+ "ttl" : schema.Int32Attribute {
148148 Description : "Time to live. E.g. 3600" ,
149149 Optional : true ,
150150 Computed : true ,
151- Validators : []validator.Int64 {
152- int64validator .AtLeast (60 ),
153- int64validator .AtMost (99999999 ),
151+ Validators : []validator.Int32 {
152+ int32validator .AtLeast (60 ),
153+ int32validator .AtMost (99999999 ),
154154 },
155155 },
156156 "type" : schema.StringAttribute {
@@ -214,8 +214,8 @@ func (r *recordSetResource) Create(ctx context.Context, req resource.CreateReque
214214 return
215215 }
216216 // Create new recordset
217- recordSetResp , err := r .client .CreateRecordSet (ctx , projectId , zoneId ).CreateRecordSetPayload (* payload ).Execute ()
218- if err != nil || recordSetResp .Rrset == nil || recordSetResp . Rrset . Id == nil {
217+ recordSetResp , err := r .client .DefaultAPI . CreateRecordSet (ctx , projectId , zoneId ).CreateRecordSetPayload (* payload ).Execute ()
218+ if err != nil || recordSetResp .Rrset . Id == "" {
219219 core .LogAndAddError (ctx , & resp .Diagnostics , "Error creating record set" , fmt .Sprintf ("Calling API: %v" , err ))
220220 return
221221 }
@@ -226,13 +226,13 @@ func (r *recordSetResource) Create(ctx context.Context, req resource.CreateReque
226226 ctx = utils .SetAndLogStateFields (ctx , & resp .Diagnostics , & resp .State , map [string ]any {
227227 "project_id" : projectId ,
228228 "zone_id" : zoneId ,
229- "record_set_id" : * recordSetResp .Rrset .Id ,
229+ "record_set_id" : recordSetResp .Rrset .Id ,
230230 })
231231 if resp .Diagnostics .HasError () {
232232 return
233233 }
234234
235- waitResp , err := wait .CreateRecordSetWaitHandler (ctx , r .client , projectId , zoneId , * recordSetResp .Rrset .Id ).WaitWithContext (ctx )
235+ waitResp , err := wait .CreateRecordSetWaitHandler (ctx , r .client . DefaultAPI , projectId , zoneId , recordSetResp .Rrset .Id ).WaitWithContext (ctx )
236236 if err != nil {
237237 core .LogAndAddError (ctx , & resp .Diagnostics , "Error creating record set" , fmt .Sprintf ("Instance creation waiting: %v" , err ))
238238 return
@@ -271,12 +271,12 @@ func (r *recordSetResource) Read(ctx context.Context, req resource.ReadRequest,
271271 ctx = tflog .SetField (ctx , "zone_id" , zoneId )
272272 ctx = tflog .SetField (ctx , "record_set_id" , recordSetId )
273273
274- recordSetResp , err := r .client .GetRecordSet (ctx , projectId , zoneId , recordSetId ).Execute ()
274+ recordSetResp , err := r .client .DefaultAPI . GetRecordSet (ctx , projectId , zoneId , recordSetId ).Execute ()
275275 if err != nil {
276276 core .LogAndAddError (ctx , & resp .Diagnostics , "Error reading record set" , fmt .Sprintf ("Calling API: %v" , err ))
277277 return
278278 }
279- if recordSetResp != nil && recordSetResp .Rrset .State != nil && * recordSetResp . Rrset . State == dns .RECORDSETSTATE_DELETE_SUCCEEDED {
279+ if recordSetResp != nil && recordSetResp .Rrset .State == wait .RECORDSETSTATE_DELETE_SUCCEEDED {
280280 resp .State .RemoveResource (ctx )
281281 return
282282 }
@@ -325,15 +325,15 @@ func (r *recordSetResource) Update(ctx context.Context, req resource.UpdateReque
325325 return
326326 }
327327 // Update recordset
328- _ , err = r .client .PartialUpdateRecordSet (ctx , projectId , zoneId , recordSetId ).PartialUpdateRecordSetPayload (* payload ).Execute ()
328+ _ , err = r .client .DefaultAPI . PartialUpdateRecordSet (ctx , projectId , zoneId , recordSetId ).PartialUpdateRecordSetPayload (* payload ).Execute ()
329329 if err != nil {
330330 core .LogAndAddError (ctx , & resp .Diagnostics , "Error updating record set" , err .Error ())
331331 return
332332 }
333333
334334 ctx = core .LogResponse (ctx )
335335
336- waitResp , err := wait .PartialUpdateRecordSetWaitHandler (ctx , r .client , projectId , zoneId , recordSetId ).WaitWithContext (ctx )
336+ waitResp , err := wait .PartialUpdateRecordSetWaitHandler (ctx , r .client . DefaultAPI , projectId , zoneId , recordSetId ).WaitWithContext (ctx )
337337 if err != nil {
338338 core .LogAndAddError (ctx , & resp .Diagnostics , "Error updating record set" , fmt .Sprintf ("Instance update waiting: %v" , err ))
339339 return
@@ -372,14 +372,14 @@ func (r *recordSetResource) Delete(ctx context.Context, req resource.DeleteReque
372372 ctx = tflog .SetField (ctx , "record_set_id" , recordSetId )
373373
374374 // Delete existing record set
375- _ , err := r .client .DeleteRecordSet (ctx , projectId , zoneId , recordSetId ).Execute ()
375+ _ , err := r .client .DefaultAPI . DeleteRecordSet (ctx , projectId , zoneId , recordSetId ).Execute ()
376376 if err != nil {
377377 core .LogAndAddError (ctx , & resp .Diagnostics , "Error deleting record set" , fmt .Sprintf ("Calling API: %v" , err ))
378378 }
379379
380380 ctx = core .LogResponse (ctx )
381381
382- _ , err = wait .DeleteRecordSetWaitHandler (ctx , r .client , projectId , zoneId , recordSetId ).WaitWithContext (ctx )
382+ _ , err = wait .DeleteRecordSetWaitHandler (ctx , r .client . DefaultAPI , projectId , zoneId , recordSetId ).WaitWithContext (ctx )
383383 if err != nil {
384384 core .LogAndAddError (ctx , & resp .Diagnostics , "Error deleting record set" , fmt .Sprintf ("Instance deletion waiting: %v" , err ))
385385 return
@@ -408,7 +408,7 @@ func (r *recordSetResource) ImportState(ctx context.Context, req resource.Import
408408}
409409
410410func mapFields (ctx context.Context , recordSetResp * dns.RecordSetResponse , model * Model ) error {
411- if recordSetResp == nil || recordSetResp . Rrset == nil {
411+ if recordSetResp == nil {
412412 return fmt .Errorf ("response input is nil" )
413413 }
414414 if model == nil {
@@ -419,8 +419,8 @@ func mapFields(ctx context.Context, recordSetResp *dns.RecordSetResponse, model
419419 var recordSetId string
420420 if model .RecordSetId .ValueString () != "" {
421421 recordSetId = model .RecordSetId .ValueString ()
422- } else if recordSet .Id != nil {
423- recordSetId = * recordSet .Id
422+ } else if recordSet .Id != "" {
423+ recordSetId = recordSet .Id
424424 } else {
425425 return fmt .Errorf ("record set id not present" )
426426 }
@@ -430,8 +430,8 @@ func mapFields(ctx context.Context, recordSetResp *dns.RecordSetResponse, model
430430 } else {
431431 respRecords := []string {}
432432
433- for _ , record := range * recordSet .Records {
434- respRecords = append (respRecords , * record .Content )
433+ for _ , record := range recordSet .Records {
434+ respRecords = append (respRecords , record .Content )
435435 }
436436
437437 modelRecords , err := utils .ListValuetoStringSlice (model .Records )
@@ -451,17 +451,17 @@ func mapFields(ctx context.Context, recordSetResp *dns.RecordSetResponse, model
451451 model .Id = utils .BuildInternalTerraformId (
452452 model .ProjectId .ValueString (), model .ZoneId .ValueString (), recordSetId ,
453453 )
454- model .RecordSetId = types .StringPointerValue (recordSet .Id )
454+ model .RecordSetId = types .StringValue (recordSet .Id )
455455 model .Active = types .BoolPointerValue (recordSet .Active )
456456 model .Comment = types .StringPointerValue (recordSet .Comment )
457457 model .Error = types .StringPointerValue (recordSet .Error )
458458 if model .Name .IsNull () || model .Name .IsUnknown () {
459- model .Name = types .StringPointerValue (recordSet .Name )
459+ model .Name = types .StringValue (recordSet .Name )
460460 }
461- model .FQDN = types .StringPointerValue (recordSet .Name )
462- model .State = types .StringValue (string ( recordSet .GetState ()) )
463- model .TTL = types .Int64PointerValue (recordSet .Ttl )
464- model .Type = types .StringValue (string ( recordSet .GetType ()) )
461+ model .FQDN = types .StringValue (recordSet .Name )
462+ model .State = types .StringValue (recordSet .State )
463+ model .TTL = types .Int32Value (recordSet .Ttl )
464+ model .Type = types .StringValue (recordSet .Type )
465465 return nil
466466}
467467
@@ -477,16 +477,16 @@ func toCreatePayload(model *Model) (*dns.CreateRecordSetPayload, error) {
477477 return nil , fmt .Errorf ("expected record at index %d to be of type %T, got %T" , i , types.String {}, record )
478478 }
479479 records = append (records , dns.RecordPayload {
480- Content : conversion . StringValueToPointer ( recordString ),
480+ Content : recordString . ValueString ( ),
481481 })
482482 }
483483
484484 return & dns.CreateRecordSetPayload {
485485 Comment : conversion .StringValueToPointer (model .Comment ),
486- Name : conversion . StringValueToPointer ( model .Name ),
487- Records : & records ,
488- Ttl : conversion .Int64ValueToPointer (model .TTL ),
489- Type : dns . CreateRecordSetPayloadGetTypeAttributeType ( conversion . StringValueToPointer ( model .Type ) ),
486+ Name : model .Name . ValueString ( ),
487+ Records : records ,
488+ Ttl : conversion .Int32ValueToPointer (model .TTL ),
489+ Type : model .Type . ValueString ( ),
490490 }, nil
491491}
492492
@@ -502,14 +502,14 @@ func toUpdatePayload(model *Model) (*dns.PartialUpdateRecordSetPayload, error) {
502502 return nil , fmt .Errorf ("expected record at index %d to be of type %T, got %T" , i , types.String {}, record )
503503 }
504504 records = append (records , dns.RecordPayload {
505- Content : conversion . StringValueToPointer ( recordString ),
505+ Content : recordString . ValueString ( ),
506506 })
507507 }
508508
509509 return & dns.PartialUpdateRecordSetPayload {
510510 Comment : conversion .StringValueToPointer (model .Comment ),
511511 Name : conversion .StringValueToPointer (model .Name ),
512- Records : & records ,
513- Ttl : conversion .Int64ValueToPointer (model .TTL ),
512+ Records : records ,
513+ Ttl : conversion .Int32ValueToPointer (model .TTL ),
514514 }, nil
515515}
0 commit comments