Skip to content

Commit 03d0e28

Browse files
Move functions to conversion pkg (#123)
1 parent 71bf63c commit 03d0e28

File tree

22 files changed

+237
-221
lines changed

22 files changed

+237
-221
lines changed

stackit/internal/conversion/conversion.go

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,3 +57,33 @@ func ToTerraformStringMap(ctx context.Context, m map[string]string) (basetypes.M
5757

5858
return res, nil
5959
}
60+
61+
// StringValueToPointer converts basetypes.StringValue to a pointer to string.
62+
// It returns nil if the value is null or unknown.
63+
func StringValueToPointer(s basetypes.StringValue) *string {
64+
if s.IsNull() || s.IsUnknown() {
65+
return nil
66+
}
67+
value := s.ValueString()
68+
return &value
69+
}
70+
71+
// Int64ValueToPointer converts basetypes.Int64Value to a pointer to int64.
72+
// It returns nil if the value is null or unknown.
73+
func Int64ValueToPointer(s basetypes.Int64Value) *int64 {
74+
if s.IsNull() || s.IsUnknown() {
75+
return nil
76+
}
77+
value := s.ValueInt64()
78+
return &value
79+
}
80+
81+
// BoolValueToPointer converts basetypes.BoolValue to a pointer to bool.
82+
// It returns nil if the value is null or unknown.
83+
func BoolValueToPointer(s basetypes.BoolValue) *bool {
84+
if s.IsNull() || s.IsUnknown() {
85+
return nil
86+
}
87+
value := s.ValueBool()
88+
return &value
89+
}

stackit/internal/core/core.go

Lines changed: 0 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import (
77
"strings"
88

99
"github.com/hashicorp/terraform-plugin-framework/diag"
10-
"github.com/hashicorp/terraform-plugin-framework/types/basetypes"
1110
"github.com/hashicorp/terraform-plugin-log/tflog"
1211
)
1312

@@ -65,33 +64,3 @@ func LogAndAddWarning(ctx context.Context, diags *diag.Diagnostics, summary, det
6564
tflog.Warn(ctx, fmt.Sprintf("%s | %s", summary, detail))
6665
diags.AddWarning(summary, detail)
6766
}
68-
69-
// StringValueToPointer converts basetypes.StringValue to a pointer to string.
70-
// It returns nil if the value is null or unknown.
71-
func StringValueToPointer(s basetypes.StringValue) *string {
72-
if s.IsNull() || s.IsUnknown() {
73-
return nil
74-
}
75-
value := s.ValueString()
76-
return &value
77-
}
78-
79-
// Int64ValueToPointer converts basetypes.Int64Value to a pointer to int64.
80-
// It returns nil if the value is null or unknown.
81-
func Int64ValueToPointer(s basetypes.Int64Value) *int64 {
82-
if s.IsNull() || s.IsUnknown() {
83-
return nil
84-
}
85-
value := s.ValueInt64()
86-
return &value
87-
}
88-
89-
// BoolValueToPointer converts basetypes.BoolValue to a pointer to bool.
90-
// It returns nil if the value is null or unknown.
91-
func BoolValueToPointer(s basetypes.BoolValue) *bool {
92-
if s.IsNull() || s.IsUnknown() {
93-
return nil
94-
}
95-
value := s.ValueBool()
96-
return &value
97-
}

stackit/internal/services/argus/instance/resource.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import (
1919
"github.com/stackitcloud/stackit-sdk-go/core/config"
2020
"github.com/stackitcloud/stackit-sdk-go/services/argus"
2121
"github.com/stackitcloud/stackit-sdk-go/services/argus/wait"
22+
"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/conversion"
2223
"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/core"
2324
"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/validate"
2425
)
@@ -515,8 +516,8 @@ func toCreatePayload(model *Model) (*argus.CreateInstancePayload, error) {
515516
pa[k] = elements[k].String()
516517
}
517518
return &argus.CreateInstancePayload{
518-
Name: core.StringValueToPointer(model.Name),
519-
PlanId: core.StringValueToPointer(model.PlanId),
519+
Name: conversion.StringValueToPointer(model.Name),
520+
PlanId: conversion.StringValueToPointer(model.PlanId),
520521
Parameter: &pa,
521522
}, nil
522523
}
@@ -531,8 +532,8 @@ func toUpdatePayload(model *Model) (*argus.UpdateInstancePayload, error) {
531532
pa[k] = v.String()
532533
}
533534
return &argus.UpdateInstancePayload{
534-
Name: core.StringValueToPointer(model.Name),
535-
PlanId: core.StringValueToPointer(model.PlanId),
535+
Name: conversion.StringValueToPointer(model.Name),
536+
PlanId: conversion.StringValueToPointer(model.PlanId),
536537
Parameter: &pa,
537538
}, nil
538539
}

stackit/internal/services/argus/scrapeconfig/resource.go

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -548,11 +548,11 @@ func toCreatePayload(ctx context.Context, model *Model) (*argus.CreateScrapeConf
548548
}
549549

550550
sc := argus.CreateScrapeConfigPayload{
551-
JobName: core.StringValueToPointer(model.Name),
552-
MetricsPath: core.StringValueToPointer(model.MetricsPath),
553-
ScrapeInterval: core.StringValueToPointer(model.ScrapeInterval),
554-
ScrapeTimeout: core.StringValueToPointer(model.ScrapeTimeout),
555-
Scheme: core.StringValueToPointer(model.Scheme),
551+
JobName: conversion.StringValueToPointer(model.Name),
552+
MetricsPath: conversion.StringValueToPointer(model.MetricsPath),
553+
ScrapeInterval: conversion.StringValueToPointer(model.ScrapeInterval),
554+
ScrapeTimeout: conversion.StringValueToPointer(model.ScrapeTimeout),
555+
Scheme: conversion.StringValueToPointer(model.Scheme),
556556
}
557557
setDefaultsCreateScrapeConfig(&sc, model)
558558

@@ -568,8 +568,8 @@ func toCreatePayload(ctx context.Context, model *Model) (*argus.CreateScrapeConf
568568
if model.BasicAuth != nil {
569569
if sc.BasicAuth == nil {
570570
sc.BasicAuth = &argus.CreateScrapeConfigPayloadBasicAuth{
571-
Username: core.StringValueToPointer(model.BasicAuth.Username),
572-
Password: core.StringValueToPointer(model.BasicAuth.Password),
571+
Username: conversion.StringValueToPointer(model.BasicAuth.Username),
572+
Password: conversion.StringValueToPointer(model.BasicAuth.Password),
573573
}
574574
}
575575
}
@@ -628,10 +628,10 @@ func toUpdatePayload(ctx context.Context, model *Model) (*argus.UpdateScrapeConf
628628
}
629629

630630
sc := argus.UpdateScrapeConfigPayload{
631-
MetricsPath: core.StringValueToPointer(model.MetricsPath),
632-
ScrapeInterval: core.StringValueToPointer(model.ScrapeInterval),
633-
ScrapeTimeout: core.StringValueToPointer(model.ScrapeTimeout),
634-
Scheme: core.StringValueToPointer(model.Scheme),
631+
MetricsPath: conversion.StringValueToPointer(model.MetricsPath),
632+
ScrapeInterval: conversion.StringValueToPointer(model.ScrapeInterval),
633+
ScrapeTimeout: conversion.StringValueToPointer(model.ScrapeTimeout),
634+
Scheme: conversion.StringValueToPointer(model.Scheme),
635635
}
636636
setDefaultsUpdateScrapeConfig(&sc, model)
637637

@@ -647,8 +647,8 @@ func toUpdatePayload(ctx context.Context, model *Model) (*argus.UpdateScrapeConf
647647
if model.BasicAuth != nil {
648648
if sc.BasicAuth == nil {
649649
sc.BasicAuth = &argus.CreateScrapeConfigPayloadBasicAuth{
650-
Username: core.StringValueToPointer(model.BasicAuth.Username),
651-
Password: core.StringValueToPointer(model.BasicAuth.Password),
650+
Username: conversion.StringValueToPointer(model.BasicAuth.Username),
651+
Password: conversion.StringValueToPointer(model.BasicAuth.Password),
652652
}
653653
}
654654
}

stackit/internal/services/dns/recordset/resource.go

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import (
2121
"github.com/stackitcloud/stackit-sdk-go/core/config"
2222
"github.com/stackitcloud/stackit-sdk-go/services/dns"
2323
"github.com/stackitcloud/stackit-sdk-go/services/dns/wait"
24+
"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/conversion"
2425
"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/core"
2526
"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/validate"
2627
)
@@ -451,16 +452,16 @@ func toCreatePayload(model *Model) (*dns.CreateRecordSetPayload, error) {
451452
return nil, fmt.Errorf("expected record at index %d to be of type %T, got %T", i, types.String{}, record)
452453
}
453454
records = append(records, dns.RecordPayload{
454-
Content: core.StringValueToPointer(recordString),
455+
Content: conversion.StringValueToPointer(recordString),
455456
})
456457
}
457458

458459
return &dns.CreateRecordSetPayload{
459-
Comment: core.StringValueToPointer(model.Comment),
460-
Name: core.StringValueToPointer(model.Name),
460+
Comment: conversion.StringValueToPointer(model.Comment),
461+
Name: conversion.StringValueToPointer(model.Name),
461462
Records: &records,
462-
Ttl: core.Int64ValueToPointer(model.TTL),
463-
Type: core.StringValueToPointer(model.Type),
463+
Ttl: conversion.Int64ValueToPointer(model.TTL),
464+
Type: conversion.StringValueToPointer(model.Type),
464465
}, nil
465466
}
466467

@@ -476,14 +477,14 @@ func toUpdatePayload(model *Model) (*dns.UpdateRecordSetPayload, error) {
476477
return nil, fmt.Errorf("expected record at index %d to be of type %T, got %T", i, types.String{}, record)
477478
}
478479
records = append(records, dns.RecordPayload{
479-
Content: core.StringValueToPointer(recordString),
480+
Content: conversion.StringValueToPointer(recordString),
480481
})
481482
}
482483

483484
return &dns.UpdateRecordSetPayload{
484-
Comment: core.StringValueToPointer(model.Comment),
485-
Name: core.StringValueToPointer(model.Name),
485+
Comment: conversion.StringValueToPointer(model.Comment),
486+
Name: conversion.StringValueToPointer(model.Name),
486487
Records: &records,
487-
Ttl: core.Int64ValueToPointer(model.TTL),
488+
Ttl: conversion.Int64ValueToPointer(model.TTL),
488489
}, nil
489490
}

stackit/internal/services/dns/zone/resource.go

Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import (
2424
"github.com/stackitcloud/stackit-sdk-go/core/config"
2525
"github.com/stackitcloud/stackit-sdk-go/services/dns"
2626
"github.com/stackitcloud/stackit-sdk-go/services/dns/wait"
27+
"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/conversion"
2728
"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/core"
2829
"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/validate"
2930
)
@@ -556,18 +557,18 @@ func toCreatePayload(model *Model) (*dns.CreateZonePayload, error) {
556557
modelPrimaries = append(modelPrimaries, primaryString.ValueString())
557558
}
558559
return &dns.CreateZonePayload{
559-
Name: core.StringValueToPointer(model.Name),
560-
DnsName: core.StringValueToPointer(model.DnsName),
561-
ContactEmail: core.StringValueToPointer(model.ContactEmail),
562-
Description: core.StringValueToPointer(model.Description),
563-
Acl: core.StringValueToPointer(model.Acl),
564-
Type: core.StringValueToPointer(model.Type),
565-
DefaultTTL: core.Int64ValueToPointer(model.DefaultTTL),
566-
ExpireTime: core.Int64ValueToPointer(model.ExpireTime),
567-
RefreshTime: core.Int64ValueToPointer(model.RefreshTime),
568-
RetryTime: core.Int64ValueToPointer(model.RetryTime),
569-
NegativeCache: core.Int64ValueToPointer(model.NegativeCache),
570-
IsReverseZone: core.BoolValueToPointer(model.IsReverseZone),
560+
Name: conversion.StringValueToPointer(model.Name),
561+
DnsName: conversion.StringValueToPointer(model.DnsName),
562+
ContactEmail: conversion.StringValueToPointer(model.ContactEmail),
563+
Description: conversion.StringValueToPointer(model.Description),
564+
Acl: conversion.StringValueToPointer(model.Acl),
565+
Type: conversion.StringValueToPointer(model.Type),
566+
DefaultTTL: conversion.Int64ValueToPointer(model.DefaultTTL),
567+
ExpireTime: conversion.Int64ValueToPointer(model.ExpireTime),
568+
RefreshTime: conversion.Int64ValueToPointer(model.RefreshTime),
569+
RetryTime: conversion.Int64ValueToPointer(model.RetryTime),
570+
NegativeCache: conversion.Int64ValueToPointer(model.NegativeCache),
571+
IsReverseZone: conversion.BoolValueToPointer(model.IsReverseZone),
571572
Primaries: &modelPrimaries,
572573
}, nil
573574
}
@@ -578,15 +579,15 @@ func toUpdatePayload(model *Model) (*dns.UpdateZonePayload, error) {
578579
}
579580

580581
return &dns.UpdateZonePayload{
581-
Name: core.StringValueToPointer(model.Name),
582-
ContactEmail: core.StringValueToPointer(model.ContactEmail),
583-
Description: core.StringValueToPointer(model.Description),
584-
Acl: core.StringValueToPointer(model.Acl),
585-
DefaultTTL: core.Int64ValueToPointer(model.DefaultTTL),
586-
ExpireTime: core.Int64ValueToPointer(model.ExpireTime),
587-
RefreshTime: core.Int64ValueToPointer(model.RefreshTime),
588-
RetryTime: core.Int64ValueToPointer(model.RetryTime),
589-
NegativeCache: core.Int64ValueToPointer(model.NegativeCache),
582+
Name: conversion.StringValueToPointer(model.Name),
583+
ContactEmail: conversion.StringValueToPointer(model.ContactEmail),
584+
Description: conversion.StringValueToPointer(model.Description),
585+
Acl: conversion.StringValueToPointer(model.Acl),
586+
DefaultTTL: conversion.Int64ValueToPointer(model.DefaultTTL),
587+
ExpireTime: conversion.Int64ValueToPointer(model.ExpireTime),
588+
RefreshTime: conversion.Int64ValueToPointer(model.RefreshTime),
589+
RetryTime: conversion.Int64ValueToPointer(model.RetryTime),
590+
NegativeCache: conversion.Int64ValueToPointer(model.NegativeCache),
590591
Primaries: nil, // API returns error if this field is set, even if nothing changes
591592
}, nil
592593
}

stackit/internal/services/loadbalancer/loadbalancer/resource.go

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import (
2929
"github.com/stackitcloud/stackit-sdk-go/core/utils"
3030
"github.com/stackitcloud/stackit-sdk-go/services/loadbalancer"
3131
"github.com/stackitcloud/stackit-sdk-go/services/loadbalancer/wait"
32+
"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/conversion"
3233
"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/core"
3334
"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/validate"
3435
)
@@ -687,9 +688,9 @@ func toCreatePayload(ctx context.Context, model *Model) (*loadbalancer.CreateLoa
687688
}
688689

689690
return &loadbalancer.CreateLoadBalancerPayload{
690-
ExternalAddress: core.StringValueToPointer(model.ExternalAddress),
691+
ExternalAddress: conversion.StringValueToPointer(model.ExternalAddress),
691692
Listeners: listeners,
692-
Name: core.StringValueToPointer(model.Name),
693+
Name: conversion.StringValueToPointer(model.Name),
693694
Networks: networks,
694695
Options: options,
695696
TargetPools: targetPools,
@@ -704,10 +705,10 @@ func toListenersPayload(model *Model) *[]loadbalancer.Listener {
704705
listeners := []loadbalancer.Listener{}
705706
for _, listener := range model.Listeners {
706707
listeners = append(listeners, loadbalancer.Listener{
707-
DisplayName: core.StringValueToPointer(listener.DisplayName),
708-
Port: core.Int64ValueToPointer(listener.Port),
709-
Protocol: core.StringValueToPointer(listener.Protocol),
710-
TargetPool: core.StringValueToPointer(listener.TargetPool),
708+
DisplayName: conversion.StringValueToPointer(listener.DisplayName),
709+
Port: conversion.Int64ValueToPointer(listener.Port),
710+
Protocol: conversion.StringValueToPointer(listener.Protocol),
711+
TargetPool: conversion.StringValueToPointer(listener.TargetPool),
711712
})
712713
}
713714

@@ -722,8 +723,8 @@ func toNetworksPayload(model *Model) *[]loadbalancer.Network {
722723
networks := []loadbalancer.Network{}
723724
for _, network := range model.Networks {
724725
networks = append(networks, loadbalancer.Network{
725-
NetworkId: core.StringValueToPointer(network.NetworkId),
726-
Role: core.StringValueToPointer(network.Role),
726+
NetworkId: conversion.StringValueToPointer(network.NetworkId),
727+
Role: conversion.StringValueToPointer(network.Role),
727728
})
728729
}
729730

@@ -751,7 +752,7 @@ func toOptionsPayload(ctx context.Context, model *Model) (*loadbalancer.LoadBala
751752

752753
options := &loadbalancer.LoadBalancerOptions{
753754
AccessControl: accessControl,
754-
PrivateNetworkOnly: core.BoolValueToPointer(optionsModel.PrivateNetworkOnly),
755+
PrivateNetworkOnly: conversion.BoolValueToPointer(optionsModel.PrivateNetworkOnly),
755756
}
756757

757758
return options, nil
@@ -776,8 +777,8 @@ func toTargetPoolsPayload(ctx context.Context, model *Model) (*[]loadbalancer.Ta
776777

777778
targetPools = append(targetPools, loadbalancer.TargetPool{
778779
ActiveHealthCheck: activeHealthCheck,
779-
Name: core.StringValueToPointer(targetPool.Name),
780-
TargetPort: core.Int64ValueToPointer(targetPool.TargetPort),
780+
Name: conversion.StringValueToPointer(targetPool.Name),
781+
TargetPort: conversion.Int64ValueToPointer(targetPool.TargetPort),
781782
Targets: targets,
782783
})
783784
}
@@ -799,8 +800,8 @@ func toTargetPoolUpdatePayload(ctx context.Context, targetPool *TargetPool) (*lo
799800

800801
return &loadbalancer.UpdateTargetPoolPayload{
801802
ActiveHealthCheck: activeHealthCheck,
802-
Name: core.StringValueToPointer(targetPool.Name),
803-
TargetPort: core.Int64ValueToPointer(targetPool.TargetPort),
803+
Name: conversion.StringValueToPointer(targetPool.Name),
804+
TargetPort: conversion.Int64ValueToPointer(targetPool.TargetPort),
804805
Targets: targets,
805806
}, nil
806807
}
@@ -817,11 +818,11 @@ func toActiveHealthCheckPayload(ctx context.Context, targetPool *TargetPool) (*l
817818
}
818819

819820
return &loadbalancer.ActiveHealthCheck{
820-
HealthyThreshold: core.Int64ValueToPointer(activeHealthCheckModel.HealthyThreshold),
821-
Interval: core.StringValueToPointer(activeHealthCheckModel.Interval),
822-
IntervalJitter: core.StringValueToPointer(activeHealthCheckModel.IntervalJitter),
823-
Timeout: core.StringValueToPointer(activeHealthCheckModel.Timeout),
824-
UnhealthyThreshold: core.Int64ValueToPointer(activeHealthCheckModel.UnhealthyThreshold),
821+
HealthyThreshold: conversion.Int64ValueToPointer(activeHealthCheckModel.HealthyThreshold),
822+
Interval: conversion.StringValueToPointer(activeHealthCheckModel.Interval),
823+
IntervalJitter: conversion.StringValueToPointer(activeHealthCheckModel.IntervalJitter),
824+
Timeout: conversion.StringValueToPointer(activeHealthCheckModel.Timeout),
825+
UnhealthyThreshold: conversion.Int64ValueToPointer(activeHealthCheckModel.UnhealthyThreshold),
825826
}, nil
826827
}
827828

@@ -833,8 +834,8 @@ func toTargetsPayload(targetPool *TargetPool) *[]loadbalancer.Target {
833834
var targets []loadbalancer.Target
834835
for _, target := range targetPool.Targets {
835836
targets = append(targets, loadbalancer.Target{
836-
DisplayName: core.StringValueToPointer(target.DisplayName),
837-
Ip: core.StringValueToPointer(target.Ip),
837+
DisplayName: conversion.StringValueToPointer(target.DisplayName),
838+
Ip: conversion.StringValueToPointer(target.Ip),
838839
})
839840
}
840841

0 commit comments

Comments
 (0)