From b6100ec8d5e1a7937945c2bd71b2377e869aa424 Mon Sep 17 00:00:00 2001 From: Vicente Pinto Date: Thu, 2 Nov 2023 15:28:06 +0000 Subject: [PATCH] Replace ValuePointer function with custom conversion (#121) --- stackit/internal/core/core.go | 31 ++++++++++++ .../services/argus/instance/resource.go | 8 ++-- .../services/argus/scrapeconfig/resource.go | 26 +++++----- .../services/dns/recordset/resource.go | 18 +++---- .../internal/services/dns/zone/resource.go | 42 ++++++++--------- .../loadbalancer/loadbalancer/resource.go | 40 ++++++++-------- .../services/logme/instance/resource.go | 16 +++---- .../services/mariadb/instance/resource.go | 16 +++---- .../services/mongodbflex/instance/resource.go | 32 ++++++------- .../services/mongodbflex/user/resource.go | 4 +- .../objectstorage/credential/resource.go | 2 +- .../services/opensearch/instance/resource.go | 16 +++---- .../postgresflex/instance/resource.go | 32 ++++++------- .../services/postgresflex/user/resource.go | 2 +- .../services/postgresql/instance/resource.go | 32 ++++++------- .../services/rabbitmq/instance/resource.go | 16 +++---- .../services/redis/instance/resource.go | 16 +++---- .../resourcemanager/project/resource.go | 8 ++-- .../secretsmanager/instance/resource.go | 2 +- .../services/secretsmanager/user/resource.go | 6 +-- .../internal/services/ske/cluster/resource.go | 47 +++++++++---------- 21 files changed, 221 insertions(+), 191 deletions(-) diff --git a/stackit/internal/core/core.go b/stackit/internal/core/core.go index e57b41d6..ab4f93c1 100644 --- a/stackit/internal/core/core.go +++ b/stackit/internal/core/core.go @@ -7,6 +7,7 @@ import ( "strings" "github.com/hashicorp/terraform-plugin-framework/diag" + "github.com/hashicorp/terraform-plugin-framework/types/basetypes" "github.com/hashicorp/terraform-plugin-log/tflog" ) @@ -64,3 +65,33 @@ func LogAndAddWarning(ctx context.Context, diags *diag.Diagnostics, summary, det tflog.Warn(ctx, fmt.Sprintf("%s | %s", summary, detail)) diags.AddWarning(summary, detail) } + +// StringValueToPointer converts basetypes.StringValue to a pointer to string. +// It returns nil if the value is null or unknown. +func StringValueToPointer(s basetypes.StringValue) *string { + if s.IsNull() || s.IsUnknown() { + return nil + } + value := s.ValueString() + return &value +} + +// Int64ValueToPointer converts basetypes.Int64Value to a pointer to int64. +// It returns nil if the value is null or unknown. +func Int64ValueToPointer(s basetypes.Int64Value) *int64 { + if s.IsNull() || s.IsUnknown() { + return nil + } + value := s.ValueInt64() + return &value +} + +// BoolValueToPointer converts basetypes.BoolValue to a pointer to bool. +// It returns nil if the value is null or unknown. +func BoolValueToPointer(s basetypes.BoolValue) *bool { + if s.IsNull() || s.IsUnknown() { + return nil + } + value := s.ValueBool() + return &value +} diff --git a/stackit/internal/services/argus/instance/resource.go b/stackit/internal/services/argus/instance/resource.go index 9f5d76c2..d3b74837 100644 --- a/stackit/internal/services/argus/instance/resource.go +++ b/stackit/internal/services/argus/instance/resource.go @@ -515,8 +515,8 @@ func toCreatePayload(model *Model) (*argus.CreateInstancePayload, error) { pa[k] = elements[k].String() } return &argus.CreateInstancePayload{ - Name: model.Name.ValueStringPointer(), - PlanId: model.PlanId.ValueStringPointer(), + Name: core.StringValueToPointer(model.Name), + PlanId: core.StringValueToPointer(model.PlanId), Parameter: &pa, }, nil } @@ -531,8 +531,8 @@ func toUpdatePayload(model *Model) (*argus.UpdateInstancePayload, error) { pa[k] = v.String() } return &argus.UpdateInstancePayload{ - Name: model.Name.ValueStringPointer(), - PlanId: model.PlanId.ValueStringPointer(), + Name: core.StringValueToPointer(model.Name), + PlanId: core.StringValueToPointer(model.PlanId), Parameter: &pa, }, nil } diff --git a/stackit/internal/services/argus/scrapeconfig/resource.go b/stackit/internal/services/argus/scrapeconfig/resource.go index fe444fd0..4cab39d1 100644 --- a/stackit/internal/services/argus/scrapeconfig/resource.go +++ b/stackit/internal/services/argus/scrapeconfig/resource.go @@ -548,11 +548,11 @@ func toCreatePayload(ctx context.Context, model *Model) (*argus.CreateScrapeConf } sc := argus.CreateScrapeConfigPayload{ - JobName: model.Name.ValueStringPointer(), - MetricsPath: model.MetricsPath.ValueStringPointer(), - ScrapeInterval: model.ScrapeInterval.ValueStringPointer(), - ScrapeTimeout: model.ScrapeTimeout.ValueStringPointer(), - Scheme: model.Scheme.ValueStringPointer(), + JobName: core.StringValueToPointer(model.Name), + MetricsPath: core.StringValueToPointer(model.MetricsPath), + ScrapeInterval: core.StringValueToPointer(model.ScrapeInterval), + ScrapeTimeout: core.StringValueToPointer(model.ScrapeTimeout), + Scheme: core.StringValueToPointer(model.Scheme), } setDefaultsCreateScrapeConfig(&sc, model) @@ -568,8 +568,8 @@ func toCreatePayload(ctx context.Context, model *Model) (*argus.CreateScrapeConf if model.BasicAuth != nil { if sc.BasicAuth == nil { sc.BasicAuth = &argus.CreateScrapeConfigPayloadBasicAuth{ - Username: model.BasicAuth.Username.ValueStringPointer(), - Password: model.BasicAuth.Password.ValueStringPointer(), + Username: core.StringValueToPointer(model.BasicAuth.Username), + Password: core.StringValueToPointer(model.BasicAuth.Password), } } } @@ -628,10 +628,10 @@ func toUpdatePayload(ctx context.Context, model *Model) (*argus.UpdateScrapeConf } sc := argus.UpdateScrapeConfigPayload{ - MetricsPath: model.MetricsPath.ValueStringPointer(), - ScrapeInterval: model.ScrapeInterval.ValueStringPointer(), - ScrapeTimeout: model.ScrapeTimeout.ValueStringPointer(), - Scheme: model.Scheme.ValueStringPointer(), + MetricsPath: core.StringValueToPointer(model.MetricsPath), + ScrapeInterval: core.StringValueToPointer(model.ScrapeInterval), + ScrapeTimeout: core.StringValueToPointer(model.ScrapeTimeout), + Scheme: core.StringValueToPointer(model.Scheme), } setDefaultsUpdateScrapeConfig(&sc, model) @@ -647,8 +647,8 @@ func toUpdatePayload(ctx context.Context, model *Model) (*argus.UpdateScrapeConf if model.BasicAuth != nil { if sc.BasicAuth == nil { sc.BasicAuth = &argus.CreateScrapeConfigPayloadBasicAuth{ - Username: model.BasicAuth.Username.ValueStringPointer(), - Password: model.BasicAuth.Password.ValueStringPointer(), + Username: core.StringValueToPointer(model.BasicAuth.Username), + Password: core.StringValueToPointer(model.BasicAuth.Password), } } } diff --git a/stackit/internal/services/dns/recordset/resource.go b/stackit/internal/services/dns/recordset/resource.go index d6553816..3977aa43 100644 --- a/stackit/internal/services/dns/recordset/resource.go +++ b/stackit/internal/services/dns/recordset/resource.go @@ -451,16 +451,16 @@ func toCreatePayload(model *Model) (*dns.CreateRecordSetPayload, error) { return nil, fmt.Errorf("expected record at index %d to be of type %T, got %T", i, types.String{}, record) } records = append(records, dns.RecordPayload{ - Content: recordString.ValueStringPointer(), + Content: core.StringValueToPointer(recordString), }) } return &dns.CreateRecordSetPayload{ - Comment: model.Comment.ValueStringPointer(), - Name: model.Name.ValueStringPointer(), + Comment: core.StringValueToPointer(model.Comment), + Name: core.StringValueToPointer(model.Name), Records: &records, - Ttl: model.TTL.ValueInt64Pointer(), - Type: model.Type.ValueStringPointer(), + Ttl: core.Int64ValueToPointer(model.TTL), + Type: core.StringValueToPointer(model.Type), }, nil } @@ -476,14 +476,14 @@ func toUpdatePayload(model *Model) (*dns.UpdateRecordSetPayload, error) { return nil, fmt.Errorf("expected record at index %d to be of type %T, got %T", i, types.String{}, record) } records = append(records, dns.RecordPayload{ - Content: recordString.ValueStringPointer(), + Content: core.StringValueToPointer(recordString), }) } return &dns.UpdateRecordSetPayload{ - Comment: model.Comment.ValueStringPointer(), - Name: model.Name.ValueStringPointer(), + Comment: core.StringValueToPointer(model.Comment), + Name: core.StringValueToPointer(model.Name), Records: &records, - Ttl: model.TTL.ValueInt64Pointer(), + Ttl: core.Int64ValueToPointer(model.TTL), }, nil } diff --git a/stackit/internal/services/dns/zone/resource.go b/stackit/internal/services/dns/zone/resource.go index e6cb570d..839460e8 100644 --- a/stackit/internal/services/dns/zone/resource.go +++ b/stackit/internal/services/dns/zone/resource.go @@ -556,18 +556,18 @@ func toCreatePayload(model *Model) (*dns.CreateZonePayload, error) { modelPrimaries = append(modelPrimaries, primaryString.ValueString()) } return &dns.CreateZonePayload{ - Name: model.Name.ValueStringPointer(), - DnsName: model.DnsName.ValueStringPointer(), - ContactEmail: model.ContactEmail.ValueStringPointer(), - Description: model.Description.ValueStringPointer(), - Acl: model.Acl.ValueStringPointer(), - Type: model.Type.ValueStringPointer(), - DefaultTTL: model.DefaultTTL.ValueInt64Pointer(), - ExpireTime: model.ExpireTime.ValueInt64Pointer(), - RefreshTime: model.RefreshTime.ValueInt64Pointer(), - RetryTime: model.RetryTime.ValueInt64Pointer(), - NegativeCache: model.NegativeCache.ValueInt64Pointer(), - IsReverseZone: model.IsReverseZone.ValueBoolPointer(), + Name: core.StringValueToPointer(model.Name), + DnsName: core.StringValueToPointer(model.DnsName), + ContactEmail: core.StringValueToPointer(model.ContactEmail), + Description: core.StringValueToPointer(model.Description), + Acl: core.StringValueToPointer(model.Acl), + Type: core.StringValueToPointer(model.Type), + DefaultTTL: core.Int64ValueToPointer(model.DefaultTTL), + ExpireTime: core.Int64ValueToPointer(model.ExpireTime), + RefreshTime: core.Int64ValueToPointer(model.RefreshTime), + RetryTime: core.Int64ValueToPointer(model.RetryTime), + NegativeCache: core.Int64ValueToPointer(model.NegativeCache), + IsReverseZone: core.BoolValueToPointer(model.IsReverseZone), Primaries: &modelPrimaries, }, nil } @@ -578,15 +578,15 @@ func toUpdatePayload(model *Model) (*dns.UpdateZonePayload, error) { } return &dns.UpdateZonePayload{ - Name: model.Name.ValueStringPointer(), - ContactEmail: model.ContactEmail.ValueStringPointer(), - Description: model.Description.ValueStringPointer(), - Acl: model.Acl.ValueStringPointer(), - DefaultTTL: model.DefaultTTL.ValueInt64Pointer(), - ExpireTime: model.ExpireTime.ValueInt64Pointer(), - RefreshTime: model.RefreshTime.ValueInt64Pointer(), - RetryTime: model.RetryTime.ValueInt64Pointer(), - NegativeCache: model.NegativeCache.ValueInt64Pointer(), + Name: core.StringValueToPointer(model.Name), + ContactEmail: core.StringValueToPointer(model.ContactEmail), + Description: core.StringValueToPointer(model.Description), + Acl: core.StringValueToPointer(model.Acl), + DefaultTTL: core.Int64ValueToPointer(model.DefaultTTL), + ExpireTime: core.Int64ValueToPointer(model.ExpireTime), + RefreshTime: core.Int64ValueToPointer(model.RefreshTime), + RetryTime: core.Int64ValueToPointer(model.RetryTime), + NegativeCache: core.Int64ValueToPointer(model.NegativeCache), Primaries: nil, // API returns error if this field is set, even if nothing changes }, nil } diff --git a/stackit/internal/services/loadbalancer/loadbalancer/resource.go b/stackit/internal/services/loadbalancer/loadbalancer/resource.go index 2c37da73..6ca9b4de 100644 --- a/stackit/internal/services/loadbalancer/loadbalancer/resource.go +++ b/stackit/internal/services/loadbalancer/loadbalancer/resource.go @@ -687,9 +687,9 @@ func toCreatePayload(ctx context.Context, model *Model) (*loadbalancer.CreateLoa } return &loadbalancer.CreateLoadBalancerPayload{ - ExternalAddress: model.ExternalAddress.ValueStringPointer(), + ExternalAddress: core.StringValueToPointer(model.ExternalAddress), Listeners: listeners, - Name: model.Name.ValueStringPointer(), + Name: core.StringValueToPointer(model.Name), Networks: networks, Options: options, TargetPools: targetPools, @@ -704,10 +704,10 @@ func toListenersPayload(model *Model) *[]loadbalancer.Listener { listeners := []loadbalancer.Listener{} for _, listener := range model.Listeners { listeners = append(listeners, loadbalancer.Listener{ - DisplayName: listener.DisplayName.ValueStringPointer(), - Port: listener.Port.ValueInt64Pointer(), - Protocol: listener.Protocol.ValueStringPointer(), - TargetPool: listener.TargetPool.ValueStringPointer(), + DisplayName: core.StringValueToPointer(listener.DisplayName), + Port: core.Int64ValueToPointer(listener.Port), + Protocol: core.StringValueToPointer(listener.Protocol), + TargetPool: core.StringValueToPointer(listener.TargetPool), }) } @@ -722,8 +722,8 @@ func toNetworksPayload(model *Model) *[]loadbalancer.Network { networks := []loadbalancer.Network{} for _, network := range model.Networks { networks = append(networks, loadbalancer.Network{ - NetworkId: network.NetworkId.ValueStringPointer(), - Role: network.Role.ValueStringPointer(), + NetworkId: core.StringValueToPointer(network.NetworkId), + Role: core.StringValueToPointer(network.Role), }) } @@ -751,7 +751,7 @@ func toOptionsPayload(ctx context.Context, model *Model) (*loadbalancer.LoadBala options := &loadbalancer.LoadBalancerOptions{ AccessControl: accessControl, - PrivateNetworkOnly: optionsModel.PrivateNetworkOnly.ValueBoolPointer(), + PrivateNetworkOnly: core.BoolValueToPointer(optionsModel.PrivateNetworkOnly), } return options, nil @@ -776,8 +776,8 @@ func toTargetPoolsPayload(ctx context.Context, model *Model) (*[]loadbalancer.Ta targetPools = append(targetPools, loadbalancer.TargetPool{ ActiveHealthCheck: activeHealthCheck, - Name: targetPool.Name.ValueStringPointer(), - TargetPort: targetPool.TargetPort.ValueInt64Pointer(), + Name: core.StringValueToPointer(targetPool.Name), + TargetPort: core.Int64ValueToPointer(targetPool.TargetPort), Targets: targets, }) } @@ -799,8 +799,8 @@ func toTargetPoolUpdatePayload(ctx context.Context, targetPool *TargetPool) (*lo return &loadbalancer.UpdateTargetPoolPayload{ ActiveHealthCheck: activeHealthCheck, - Name: targetPool.Name.ValueStringPointer(), - TargetPort: targetPool.TargetPort.ValueInt64Pointer(), + Name: core.StringValueToPointer(targetPool.Name), + TargetPort: core.Int64ValueToPointer(targetPool.TargetPort), Targets: targets, }, nil } @@ -817,11 +817,11 @@ func toActiveHealthCheckPayload(ctx context.Context, targetPool *TargetPool) (*l } return &loadbalancer.ActiveHealthCheck{ - HealthyThreshold: activeHealthCheckModel.HealthyThreshold.ValueInt64Pointer(), - Interval: activeHealthCheckModel.Interval.ValueStringPointer(), - IntervalJitter: activeHealthCheckModel.IntervalJitter.ValueStringPointer(), - Timeout: activeHealthCheckModel.Timeout.ValueStringPointer(), - UnhealthyThreshold: activeHealthCheckModel.UnhealthyThreshold.ValueInt64Pointer(), + HealthyThreshold: core.Int64ValueToPointer(activeHealthCheckModel.HealthyThreshold), + Interval: core.StringValueToPointer(activeHealthCheckModel.Interval), + IntervalJitter: core.StringValueToPointer(activeHealthCheckModel.IntervalJitter), + Timeout: core.StringValueToPointer(activeHealthCheckModel.Timeout), + UnhealthyThreshold: core.Int64ValueToPointer(activeHealthCheckModel.UnhealthyThreshold), }, nil } @@ -833,8 +833,8 @@ func toTargetsPayload(targetPool *TargetPool) *[]loadbalancer.Target { var targets []loadbalancer.Target for _, target := range targetPool.Targets { targets = append(targets, loadbalancer.Target{ - DisplayName: target.DisplayName.ValueStringPointer(), - Ip: target.Ip.ValueStringPointer(), + DisplayName: core.StringValueToPointer(target.DisplayName), + Ip: core.StringValueToPointer(target.Ip), }) } diff --git a/stackit/internal/services/logme/instance/resource.go b/stackit/internal/services/logme/instance/resource.go index 204305fe..69385f75 100644 --- a/stackit/internal/services/logme/instance/resource.go +++ b/stackit/internal/services/logme/instance/resource.go @@ -578,18 +578,18 @@ func toCreatePayload(model *Model, parameters *parametersModel) (*logme.CreateIn } if parameters == nil { return &logme.CreateInstancePayload{ - InstanceName: model.Name.ValueStringPointer(), - PlanId: model.PlanId.ValueStringPointer(), + InstanceName: core.StringValueToPointer(model.Name), + PlanId: core.StringValueToPointer(model.PlanId), }, nil } payloadParams := &logme.InstanceParameters{} if parameters.SgwAcl.ValueString() != "" { - payloadParams.SgwAcl = parameters.SgwAcl.ValueStringPointer() + payloadParams.SgwAcl = core.StringValueToPointer(parameters.SgwAcl) } return &logme.CreateInstancePayload{ - InstanceName: model.Name.ValueStringPointer(), + InstanceName: core.StringValueToPointer(model.Name), Parameters: payloadParams, - PlanId: model.PlanId.ValueStringPointer(), + PlanId: core.StringValueToPointer(model.PlanId), }, nil } @@ -600,14 +600,14 @@ func toUpdatePayload(model *Model, parameters *parametersModel) (*logme.UpdateIn if parameters == nil { return &logme.UpdateInstancePayload{ - PlanId: model.PlanId.ValueStringPointer(), + PlanId: core.StringValueToPointer(model.PlanId), }, nil } return &logme.UpdateInstancePayload{ Parameters: &logme.InstanceParameters{ - SgwAcl: parameters.SgwAcl.ValueStringPointer(), + SgwAcl: core.StringValueToPointer(parameters.SgwAcl), }, - PlanId: model.PlanId.ValueStringPointer(), + PlanId: core.StringValueToPointer(model.PlanId), }, nil } diff --git a/stackit/internal/services/mariadb/instance/resource.go b/stackit/internal/services/mariadb/instance/resource.go index 7e6b574e..0b32cdfa 100644 --- a/stackit/internal/services/mariadb/instance/resource.go +++ b/stackit/internal/services/mariadb/instance/resource.go @@ -578,18 +578,18 @@ func toCreatePayload(model *Model, parameters *parametersModel) (*mariadb.Create } if parameters == nil { return &mariadb.CreateInstancePayload{ - InstanceName: model.Name.ValueStringPointer(), - PlanId: model.PlanId.ValueStringPointer(), + InstanceName: core.StringValueToPointer(model.Name), + PlanId: core.StringValueToPointer(model.PlanId), }, nil } payloadParams := &mariadb.InstanceParameters{} if parameters.SgwAcl.ValueString() != "" { - payloadParams.SgwAcl = parameters.SgwAcl.ValueStringPointer() + payloadParams.SgwAcl = core.StringValueToPointer(parameters.SgwAcl) } return &mariadb.CreateInstancePayload{ - InstanceName: model.Name.ValueStringPointer(), + InstanceName: core.StringValueToPointer(model.Name), Parameters: payloadParams, - PlanId: model.PlanId.ValueStringPointer(), + PlanId: core.StringValueToPointer(model.PlanId), }, nil } @@ -600,14 +600,14 @@ func toUpdatePayload(model *Model, parameters *parametersModel) (*mariadb.Update if parameters == nil { return &mariadb.UpdateInstancePayload{ - PlanId: model.PlanId.ValueStringPointer(), + PlanId: core.StringValueToPointer(model.PlanId), }, nil } return &mariadb.UpdateInstancePayload{ Parameters: &mariadb.InstanceParameters{ - SgwAcl: parameters.SgwAcl.ValueStringPointer(), + SgwAcl: core.StringValueToPointer(parameters.SgwAcl), }, - PlanId: model.PlanId.ValueStringPointer(), + PlanId: core.StringValueToPointer(model.PlanId), }, nil } diff --git a/stackit/internal/services/mongodbflex/instance/resource.go b/stackit/internal/services/mongodbflex/instance/resource.go index 1fe95908..a17b439c 100644 --- a/stackit/internal/services/mongodbflex/instance/resource.go +++ b/stackit/internal/services/mongodbflex/instance/resource.go @@ -671,15 +671,15 @@ func toCreatePayload(model *Model, acl []string, flavor *flavorModel, storage *s Acl: &mongodbflex.InstanceAcl{ Items: &acl, }, - BackupSchedule: model.BackupSchedule.ValueStringPointer(), - FlavorId: flavor.Id.ValueStringPointer(), - Name: model.Name.ValueStringPointer(), - Replicas: model.Replicas.ValueInt64Pointer(), + BackupSchedule: core.StringValueToPointer(model.BackupSchedule), + FlavorId: core.StringValueToPointer(flavor.Id), + Name: core.StringValueToPointer(model.Name), + Replicas: core.Int64ValueToPointer(model.Replicas), Storage: &mongodbflex.InstanceStorage{ - Class: storage.Class.ValueStringPointer(), - Size: storage.Size.ValueInt64Pointer(), + Class: core.StringValueToPointer(storage.Class), + Size: core.Int64ValueToPointer(storage.Size), }, - Version: model.Version.ValueStringPointer(), + Version: core.StringValueToPointer(model.Version), Options: &payloadOptions, }, nil } @@ -710,15 +710,15 @@ func toUpdatePayload(model *Model, acl []string, flavor *flavorModel, storage *s Acl: &mongodbflex.InstanceAcl{ Items: &acl, }, - BackupSchedule: model.BackupSchedule.ValueStringPointer(), - FlavorId: flavor.Id.ValueStringPointer(), - Name: model.Name.ValueStringPointer(), - Replicas: model.Replicas.ValueInt64Pointer(), + BackupSchedule: core.StringValueToPointer(model.BackupSchedule), + FlavorId: core.StringValueToPointer(flavor.Id), + Name: core.StringValueToPointer(model.Name), + Replicas: core.Int64ValueToPointer(model.Replicas), Storage: &mongodbflex.InstanceStorage{ - Class: storage.Class.ValueStringPointer(), - Size: storage.Size.ValueInt64Pointer(), + Class: core.StringValueToPointer(storage.Class), + Size: core.Int64ValueToPointer(storage.Size), }, - Version: model.Version.ValueStringPointer(), + Version: core.StringValueToPointer(model.Version), Options: &payloadOptions, }, nil } @@ -734,11 +734,11 @@ func loadFlavorId(ctx context.Context, client mongoDBFlexClient, model *Model, f if flavor == nil { return fmt.Errorf("nil flavor") } - cpu := flavor.CPU.ValueInt64Pointer() + cpu := core.Int64ValueToPointer(flavor.CPU) if cpu == nil { return fmt.Errorf("nil CPU") } - ram := flavor.RAM.ValueInt64Pointer() + ram := core.Int64ValueToPointer(flavor.RAM) if ram == nil { return fmt.Errorf("nil RAM") } diff --git a/stackit/internal/services/mongodbflex/user/resource.go b/stackit/internal/services/mongodbflex/user/resource.go index d54a41d5..0aafc266 100644 --- a/stackit/internal/services/mongodbflex/user/resource.go +++ b/stackit/internal/services/mongodbflex/user/resource.go @@ -438,7 +438,7 @@ func toCreatePayload(model *Model, roles []string) (*mongodbflex.CreateUserPaylo return &mongodbflex.CreateUserPayload{ Roles: &roles, - Username: model.Username.ValueStringPointer(), - Database: model.Database.ValueStringPointer(), + Username: core.StringValueToPointer(model.Username), + Database: core.StringValueToPointer(model.Database), }, nil } diff --git a/stackit/internal/services/objectstorage/credential/resource.go b/stackit/internal/services/objectstorage/credential/resource.go index 62375ac0..f27a9799 100644 --- a/stackit/internal/services/objectstorage/credential/resource.go +++ b/stackit/internal/services/objectstorage/credential/resource.go @@ -328,7 +328,7 @@ func toCreatePayload(model *Model) (*objectstorage.CreateAccessKeyPayload, error return &objectstorage.CreateAccessKeyPayload{}, nil } - expirationTimestampValue := model.ExpirationTimestamp.ValueStringPointer() + expirationTimestampValue := core.StringValueToPointer(model.ExpirationTimestamp) if expirationTimestampValue == nil { return &objectstorage.CreateAccessKeyPayload{}, nil } diff --git a/stackit/internal/services/opensearch/instance/resource.go b/stackit/internal/services/opensearch/instance/resource.go index 691fd070..d4e8e897 100644 --- a/stackit/internal/services/opensearch/instance/resource.go +++ b/stackit/internal/services/opensearch/instance/resource.go @@ -578,18 +578,18 @@ func toCreatePayload(model *Model, parameters *parametersModel) (*opensearch.Cre } if parameters == nil { return &opensearch.CreateInstancePayload{ - InstanceName: model.Name.ValueStringPointer(), - PlanId: model.PlanId.ValueStringPointer(), + InstanceName: core.StringValueToPointer(model.Name), + PlanId: core.StringValueToPointer(model.PlanId), }, nil } payloadParams := &opensearch.InstanceParameters{} if parameters.SgwAcl.ValueString() != "" { - payloadParams.SgwAcl = parameters.SgwAcl.ValueStringPointer() + payloadParams.SgwAcl = core.StringValueToPointer(parameters.SgwAcl) } return &opensearch.CreateInstancePayload{ - InstanceName: model.Name.ValueStringPointer(), + InstanceName: core.StringValueToPointer(model.Name), Parameters: payloadParams, - PlanId: model.PlanId.ValueStringPointer(), + PlanId: core.StringValueToPointer(model.PlanId), }, nil } @@ -600,14 +600,14 @@ func toUpdatePayload(model *Model, parameters *parametersModel) (*opensearch.Upd if parameters == nil { return &opensearch.UpdateInstancePayload{ - PlanId: model.PlanId.ValueStringPointer(), + PlanId: core.StringValueToPointer(model.PlanId), }, nil } return &opensearch.UpdateInstancePayload{ Parameters: &opensearch.InstanceParameters{ - SgwAcl: parameters.SgwAcl.ValueStringPointer(), + SgwAcl: core.StringValueToPointer(parameters.SgwAcl), }, - PlanId: model.PlanId.ValueStringPointer(), + PlanId: core.StringValueToPointer(model.PlanId), }, nil } diff --git a/stackit/internal/services/postgresflex/instance/resource.go b/stackit/internal/services/postgresflex/instance/resource.go index 183e24a1..d9ebc930 100644 --- a/stackit/internal/services/postgresflex/instance/resource.go +++ b/stackit/internal/services/postgresflex/instance/resource.go @@ -592,15 +592,15 @@ func toCreatePayload(model *Model, acl []string, flavor *flavorModel, storage *s Acl: &postgresflex.InstanceAcl{ Items: &acl, }, - BackupSchedule: model.BackupSchedule.ValueStringPointer(), - FlavorId: flavor.Id.ValueStringPointer(), - Name: model.Name.ValueStringPointer(), - Replicas: model.Replicas.ValueInt64Pointer(), + BackupSchedule: core.StringValueToPointer(model.BackupSchedule), + FlavorId: core.StringValueToPointer(flavor.Id), + Name: core.StringValueToPointer(model.Name), + Replicas: core.Int64ValueToPointer(model.Replicas), Storage: &postgresflex.InstanceStorage{ - Class: storage.Class.ValueStringPointer(), - Size: storage.Size.ValueInt64Pointer(), + Class: core.StringValueToPointer(storage.Class), + Size: core.Int64ValueToPointer(storage.Size), }, - Version: model.Version.ValueStringPointer(), + Version: core.StringValueToPointer(model.Version), }, nil } @@ -622,15 +622,15 @@ func toUpdatePayload(model *Model, acl []string, flavor *flavorModel, storage *s Acl: &postgresflex.InstanceAcl{ Items: &acl, }, - BackupSchedule: model.BackupSchedule.ValueStringPointer(), - FlavorId: flavor.Id.ValueStringPointer(), - Name: model.Name.ValueStringPointer(), - Replicas: model.Replicas.ValueInt64Pointer(), + BackupSchedule: core.StringValueToPointer(model.BackupSchedule), + FlavorId: core.StringValueToPointer(flavor.Id), + Name: core.StringValueToPointer(model.Name), + Replicas: core.Int64ValueToPointer(model.Replicas), Storage: &postgresflex.InstanceStorage{ - Class: storage.Class.ValueStringPointer(), - Size: storage.Size.ValueInt64Pointer(), + Class: core.StringValueToPointer(storage.Class), + Size: core.Int64ValueToPointer(storage.Size), }, - Version: model.Version.ValueStringPointer(), + Version: core.StringValueToPointer(model.Version), }, nil } @@ -645,11 +645,11 @@ func loadFlavorId(ctx context.Context, client postgresFlexClient, model *Model, if flavor == nil { return fmt.Errorf("nil flavor") } - cpu := flavor.CPU.ValueInt64Pointer() + cpu := core.Int64ValueToPointer(flavor.CPU) if cpu == nil { return fmt.Errorf("nil CPU") } - ram := flavor.RAM.ValueInt64Pointer() + ram := core.Int64ValueToPointer(flavor.RAM) if ram == nil { return fmt.Errorf("nil RAM") } diff --git a/stackit/internal/services/postgresflex/user/resource.go b/stackit/internal/services/postgresflex/user/resource.go index 38d5e3e9..aee3d503 100644 --- a/stackit/internal/services/postgresflex/user/resource.go +++ b/stackit/internal/services/postgresflex/user/resource.go @@ -435,6 +435,6 @@ func toCreatePayload(model *Model, roles []string) (*postgresflex.CreateUserPayl return &postgresflex.CreateUserPayload{ Roles: &roles, - Username: model.Username.ValueStringPointer(), + Username: core.StringValueToPointer(model.Username), }, nil } diff --git a/stackit/internal/services/postgresql/instance/resource.go b/stackit/internal/services/postgresql/instance/resource.go index 99e70aa2..a9a0fbaf 100644 --- a/stackit/internal/services/postgresql/instance/resource.go +++ b/stackit/internal/services/postgresql/instance/resource.go @@ -330,21 +330,21 @@ func toCreatePayload(model *Model, parameters *parametersModel, parametersPlugin if parameters == nil { return &postgresql.CreateInstancePayload{ - InstanceName: model.Name.ValueStringPointer(), - PlanId: model.PlanId.ValueStringPointer(), + InstanceName: core.StringValueToPointer(model.Name), + PlanId: core.StringValueToPointer(model.PlanId), }, nil } return &postgresql.CreateInstancePayload{ - InstanceName: model.Name.ValueStringPointer(), + InstanceName: core.StringValueToPointer(model.Name), Parameters: &postgresql.InstanceParameters{ - EnableMonitoring: parameters.EnableMonitoring.ValueBoolPointer(), - MetricsFrequency: parameters.MetricsFrequency.ValueInt64Pointer(), - MetricsPrefix: parameters.MetricsPrefix.ValueStringPointer(), - MonitoringInstanceId: parameters.MonitoringInstanceId.ValueStringPointer(), + EnableMonitoring: core.BoolValueToPointer(parameters.EnableMonitoring), + MetricsFrequency: core.Int64ValueToPointer(parameters.MetricsFrequency), + MetricsPrefix: core.StringValueToPointer(parameters.MetricsPrefix), + MonitoringInstanceId: core.StringValueToPointer(parameters.MonitoringInstanceId), Plugins: parametersPlugins, - SgwAcl: parameters.SgwAcl.ValueStringPointer(), + SgwAcl: core.StringValueToPointer(parameters.SgwAcl), }, - PlanId: model.PlanId.ValueStringPointer(), + PlanId: core.StringValueToPointer(model.PlanId), }, nil } @@ -469,19 +469,19 @@ func toUpdatePayload(model *Model, parameters *parametersModel, parametersPlugin if parameters == nil { return &postgresql.UpdateInstancePayload{ - PlanId: model.PlanId.ValueStringPointer(), + PlanId: core.StringValueToPointer(model.PlanId), }, nil } return &postgresql.UpdateInstancePayload{ Parameters: &postgresql.InstanceParameters{ - EnableMonitoring: parameters.EnableMonitoring.ValueBoolPointer(), - MetricsFrequency: parameters.MetricsFrequency.ValueInt64Pointer(), - MetricsPrefix: parameters.MetricsPrefix.ValueStringPointer(), - MonitoringInstanceId: parameters.MonitoringInstanceId.ValueStringPointer(), + EnableMonitoring: core.BoolValueToPointer(parameters.EnableMonitoring), + MetricsFrequency: core.Int64ValueToPointer(parameters.MetricsFrequency), + MetricsPrefix: core.StringValueToPointer(parameters.MetricsPrefix), + MonitoringInstanceId: core.StringValueToPointer(parameters.MonitoringInstanceId), Plugins: parametersPlugins, - SgwAcl: parameters.SgwAcl.ValueStringPointer(), + SgwAcl: core.StringValueToPointer(parameters.SgwAcl), }, - PlanId: model.PlanId.ValueStringPointer(), + PlanId: core.StringValueToPointer(model.PlanId), }, nil } diff --git a/stackit/internal/services/rabbitmq/instance/resource.go b/stackit/internal/services/rabbitmq/instance/resource.go index 3d0bb841..38ccb1d0 100644 --- a/stackit/internal/services/rabbitmq/instance/resource.go +++ b/stackit/internal/services/rabbitmq/instance/resource.go @@ -578,18 +578,18 @@ func toCreatePayload(model *Model, parameters *parametersModel) (*rabbitmq.Creat } if parameters == nil { return &rabbitmq.CreateInstancePayload{ - InstanceName: model.Name.ValueStringPointer(), - PlanId: model.PlanId.ValueStringPointer(), + InstanceName: core.StringValueToPointer(model.Name), + PlanId: core.StringValueToPointer(model.PlanId), }, nil } payloadParams := &rabbitmq.InstanceParameters{} if parameters.SgwAcl.ValueString() != "" { - payloadParams.SgwAcl = parameters.SgwAcl.ValueStringPointer() + payloadParams.SgwAcl = core.StringValueToPointer(parameters.SgwAcl) } return &rabbitmq.CreateInstancePayload{ - InstanceName: model.Name.ValueStringPointer(), + InstanceName: core.StringValueToPointer(model.Name), Parameters: payloadParams, - PlanId: model.PlanId.ValueStringPointer(), + PlanId: core.StringValueToPointer(model.PlanId), }, nil } @@ -600,14 +600,14 @@ func toUpdatePayload(model *Model, parameters *parametersModel) (*rabbitmq.Updat if parameters == nil { return &rabbitmq.UpdateInstancePayload{ - PlanId: model.PlanId.ValueStringPointer(), + PlanId: core.StringValueToPointer(model.PlanId), }, nil } return &rabbitmq.UpdateInstancePayload{ Parameters: &rabbitmq.InstanceParameters{ - SgwAcl: parameters.SgwAcl.ValueStringPointer(), + SgwAcl: core.StringValueToPointer(parameters.SgwAcl), }, - PlanId: model.PlanId.ValueStringPointer(), + PlanId: core.StringValueToPointer(model.PlanId), }, nil } diff --git a/stackit/internal/services/redis/instance/resource.go b/stackit/internal/services/redis/instance/resource.go index c3816f13..46b6e282 100644 --- a/stackit/internal/services/redis/instance/resource.go +++ b/stackit/internal/services/redis/instance/resource.go @@ -578,18 +578,18 @@ func toCreatePayload(model *Model, parameters *parametersModel) (*redis.CreateIn } if parameters == nil { return &redis.CreateInstancePayload{ - InstanceName: model.Name.ValueStringPointer(), - PlanId: model.PlanId.ValueStringPointer(), + InstanceName: core.StringValueToPointer(model.Name), + PlanId: core.StringValueToPointer(model.PlanId), }, nil } payloadParams := &redis.InstanceParameters{} if parameters.SgwAcl.ValueString() != "" { - payloadParams.SgwAcl = parameters.SgwAcl.ValueStringPointer() + payloadParams.SgwAcl = core.StringValueToPointer(parameters.SgwAcl) } return &redis.CreateInstancePayload{ - InstanceName: model.Name.ValueStringPointer(), + InstanceName: core.StringValueToPointer(model.Name), Parameters: payloadParams, - PlanId: model.PlanId.ValueStringPointer(), + PlanId: core.StringValueToPointer(model.PlanId), }, nil } @@ -600,14 +600,14 @@ func toUpdatePayload(model *Model, parameters *parametersModel) (*redis.UpdateIn if parameters == nil { return &redis.UpdateInstancePayload{ - PlanId: model.PlanId.ValueStringPointer(), + PlanId: core.StringValueToPointer(model.PlanId), }, nil } return &redis.UpdateInstancePayload{ Parameters: &redis.InstanceParameters{ - SgwAcl: parameters.SgwAcl.ValueStringPointer(), + SgwAcl: core.StringValueToPointer(parameters.SgwAcl), }, - PlanId: model.PlanId.ValueStringPointer(), + PlanId: core.StringValueToPointer(model.PlanId), }, nil } diff --git a/stackit/internal/services/resourcemanager/project/resource.go b/stackit/internal/services/resourcemanager/project/resource.go index 2419a97f..3ae6f2c2 100644 --- a/stackit/internal/services/resourcemanager/project/resource.go +++ b/stackit/internal/services/resourcemanager/project/resource.go @@ -418,10 +418,10 @@ func toCreatePayload(model *Model, serviceAccountEmail string) (*resourcemanager } return &resourcemanager.CreateProjectPayload{ - ContainerParentId: model.ContainerParentId.ValueStringPointer(), + ContainerParentId: core.StringValueToPointer(model.ContainerParentId), Labels: labels, Members: &members, - Name: model.Name.ValueStringPointer(), + Name: core.StringValueToPointer(model.Name), }, nil } @@ -437,8 +437,8 @@ func toUpdatePayload(model *Model) (*resourcemanager.UpdateProjectPayload, error } return &resourcemanager.UpdateProjectPayload{ - ContainerParentId: model.ContainerParentId.ValueStringPointer(), - Name: model.Name.ValueStringPointer(), + ContainerParentId: core.StringValueToPointer(model.ContainerParentId), + Name: core.StringValueToPointer(model.Name), Labels: labels, }, nil } diff --git a/stackit/internal/services/secretsmanager/instance/resource.go b/stackit/internal/services/secretsmanager/instance/resource.go index e689eb0e..63b2a0a3 100644 --- a/stackit/internal/services/secretsmanager/instance/resource.go +++ b/stackit/internal/services/secretsmanager/instance/resource.go @@ -417,7 +417,7 @@ func toCreatePayload(model *Model) (*secretsmanager.CreateInstancePayload, error return nil, fmt.Errorf("nil model") } return &secretsmanager.CreateInstancePayload{ - Name: model.Name.ValueStringPointer(), + Name: core.StringValueToPointer(model.Name), }, nil } diff --git a/stackit/internal/services/secretsmanager/user/resource.go b/stackit/internal/services/secretsmanager/user/resource.go index e6aee0f1..baee4961 100644 --- a/stackit/internal/services/secretsmanager/user/resource.go +++ b/stackit/internal/services/secretsmanager/user/resource.go @@ -359,8 +359,8 @@ func toCreatePayload(model *Model) (*secretsmanager.CreateUserPayload, error) { return nil, fmt.Errorf("nil model") } return &secretsmanager.CreateUserPayload{ - Description: model.Description.ValueStringPointer(), - Write: model.WriteEnabled.ValueBoolPointer(), + Description: core.StringValueToPointer(model.Description), + Write: core.BoolValueToPointer(model.WriteEnabled), }, nil } @@ -369,7 +369,7 @@ func toUpdatePayload(model *Model) (*secretsmanager.UpdateUserPayload, error) { return nil, fmt.Errorf("nil model") } return &secretsmanager.UpdateUserPayload{ - Write: model.WriteEnabled.ValueBoolPointer(), + Write: core.BoolValueToPointer(model.WriteEnabled), }, nil } diff --git a/stackit/internal/services/ske/cluster/resource.go b/stackit/internal/services/ske/cluster/resource.go index da4be1ce..f68f2ea3 100644 --- a/stackit/internal/services/ske/cluster/resource.go +++ b/stackit/internal/services/ske/cluster/resource.go @@ -674,9 +674,9 @@ func toNodepoolsPayload(ctx context.Context, m *Cluster) ([]ske.Nodepool, error) ts := []ske.Taint{} for _, v := range taintsModel { t := ske.Taint{ - Effect: v.Effect.ValueStringPointer(), - Key: v.Key.ValueStringPointer(), - Value: v.Value.ValueStringPointer(), + Effect: core.StringValueToPointer(v.Effect), + Key: core.StringValueToPointer(v.Key), + Value: core.StringValueToPointer(v.Value), } ts = append(ts, t) } @@ -712,24 +712,24 @@ func toNodepoolsPayload(ctx context.Context, m *Cluster) ([]ske.Nodepool, error) } cn := ske.CRI{ - Name: nodePool.CRI.ValueStringPointer(), + Name: core.StringValueToPointer(nodePool.CRI), } cnp := ske.Nodepool{ - Name: nodePool.Name.ValueStringPointer(), - Minimum: nodePool.Minimum.ValueInt64Pointer(), - Maximum: nodePool.Maximum.ValueInt64Pointer(), - MaxSurge: nodePool.MaxSurge.ValueInt64Pointer(), - MaxUnavailable: nodePool.MaxUnavailable.ValueInt64Pointer(), + Name: core.StringValueToPointer(nodePool.Name), + Minimum: core.Int64ValueToPointer(nodePool.Minimum), + Maximum: core.Int64ValueToPointer(nodePool.Maximum), + MaxSurge: core.Int64ValueToPointer(nodePool.MaxSurge), + MaxUnavailable: core.Int64ValueToPointer(nodePool.MaxUnavailable), Machine: &ske.Machine{ - Type: nodePool.MachineType.ValueStringPointer(), + Type: core.StringValueToPointer(nodePool.MachineType), Image: &ske.Image{ - Name: nodePool.OSName.ValueStringPointer(), - Version: nodePool.OSVersion.ValueStringPointer(), + Name: core.StringValueToPointer(nodePool.OSName), + Version: core.StringValueToPointer(nodePool.OSVersion), }, }, Volume: &ske.Volume{ - Type: nodePool.VolumeType.ValueStringPointer(), - Size: nodePool.VolumeSize.ValueInt64Pointer(), + Type: core.StringValueToPointer(nodePool.VolumeType), + Size: core.Int64ValueToPointer(nodePool.VolumeSize), }, Taints: &ts, Cri: &cn, @@ -755,8 +755,8 @@ func toHibernationsPayload(ctx context.Context, m *Cluster) (*ske.Hibernation, e scs := []ske.HibernationSchedule{} for _, h := range hibernation { sc := ske.HibernationSchedule{ - Start: h.Start.ValueStringPointer(), - End: h.End.ValueStringPointer(), + Start: core.StringValueToPointer(h.Start), + End: core.StringValueToPointer(h.End), } if !h.Timezone.IsNull() && !h.Timezone.IsUnknown() { tz := h.Timezone.ValueString() @@ -777,8 +777,8 @@ func toExtensionsPayload(ctx context.Context, m *Cluster) (*ske.Extension, error ex := &ske.Extension{} if m.Extensions.Argus != nil { ex.Argus = &ske.Argus{ - Enabled: m.Extensions.Argus.Enabled.ValueBoolPointer(), - ArgusInstanceId: m.Extensions.Argus.ArgusInstanceId.ValueStringPointer(), + Enabled: core.BoolValueToPointer(m.Extensions.Argus.Enabled), + ArgusInstanceId: core.StringValueToPointer(m.Extensions.Argus.ArgusInstanceId), } } if m.Extensions.ACL != nil { @@ -788,7 +788,7 @@ func toExtensionsPayload(ctx context.Context, m *Cluster) (*ske.Extension, error return nil, fmt.Errorf("error in extension object converion %v", diags.Errors()) } ex.Acl = &ske.ACL{ - Enabled: m.Extensions.ACL.Enabled.ValueBoolPointer(), + Enabled: core.BoolValueToPointer(m.Extensions.ACL.Enabled), AllowedCidrs: &cidrs, } } @@ -824,8 +824,8 @@ func toMaintenancePayload(ctx context.Context, m *Cluster) (*ske.Maintenance, er return &ske.Maintenance{ AutoUpdate: &ske.MaintenanceAutoUpdate{ - KubernetesVersion: maintenance.EnableKubernetesVersionUpdates.ValueBoolPointer(), - MachineImageVersion: maintenance.EnableMachineImageVersionUpdates.ValueBoolPointer(), + KubernetesVersion: core.BoolValueToPointer(maintenance.EnableKubernetesVersionUpdates), + MachineImageVersion: core.BoolValueToPointer(maintenance.EnableMachineImageVersionUpdates), }, TimeWindow: &ske.TimeWindow{ Start: timeWindowStart, @@ -874,7 +874,6 @@ func mapFields(ctx context.Context, cl *ske.ClusterResponse, m *Cluster) error { if err != nil { return fmt.Errorf("mapping node_pools: %w", err) } - err = mapMaintenance(ctx, cl, m) if err != nil { return fmt.Errorf("mapping maintenance: %w", err) @@ -1136,14 +1135,14 @@ func mapExtensions(cl *ske.ClusterResponse, m *Cluster) { } func toKubernetesPayload(m *Cluster, availableVersions []ske.KubernetesVersion) (kubernetesPayload *ske.Kubernetes, hasDeprecatedVersion bool, err error) { - versionUsed, hasDeprecatedVersion, err := latestMatchingVersion(availableVersions, m.KubernetesVersion.ValueStringPointer()) + versionUsed, hasDeprecatedVersion, err := latestMatchingVersion(availableVersions, core.StringValueToPointer(m.KubernetesVersion)) if err != nil { return nil, false, fmt.Errorf("getting latest matching kubernetes version: %w", err) } k := &ske.Kubernetes{ Version: versionUsed, - AllowPrivilegedContainers: m.AllowPrivilegedContainers.ValueBoolPointer(), + AllowPrivilegedContainers: core.BoolValueToPointer(m.AllowPrivilegedContainers), } return k, hasDeprecatedVersion, nil }