Replace ValuePointer function with custom conversion (#121)

This commit is contained in:
Vicente Pinto 2023-11-02 15:28:06 +00:00 committed by GitHub
parent b10302c6de
commit b6100ec8d5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
21 changed files with 221 additions and 191 deletions

View file

@ -7,6 +7,7 @@ import (
"strings" "strings"
"github.com/hashicorp/terraform-plugin-framework/diag" "github.com/hashicorp/terraform-plugin-framework/diag"
"github.com/hashicorp/terraform-plugin-framework/types/basetypes"
"github.com/hashicorp/terraform-plugin-log/tflog" "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)) tflog.Warn(ctx, fmt.Sprintf("%s | %s", summary, detail))
diags.AddWarning(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
}

View file

@ -515,8 +515,8 @@ func toCreatePayload(model *Model) (*argus.CreateInstancePayload, error) {
pa[k] = elements[k].String() pa[k] = elements[k].String()
} }
return &argus.CreateInstancePayload{ return &argus.CreateInstancePayload{
Name: model.Name.ValueStringPointer(), Name: core.StringValueToPointer(model.Name),
PlanId: model.PlanId.ValueStringPointer(), PlanId: core.StringValueToPointer(model.PlanId),
Parameter: &pa, Parameter: &pa,
}, nil }, nil
} }
@ -531,8 +531,8 @@ func toUpdatePayload(model *Model) (*argus.UpdateInstancePayload, error) {
pa[k] = v.String() pa[k] = v.String()
} }
return &argus.UpdateInstancePayload{ return &argus.UpdateInstancePayload{
Name: model.Name.ValueStringPointer(), Name: core.StringValueToPointer(model.Name),
PlanId: model.PlanId.ValueStringPointer(), PlanId: core.StringValueToPointer(model.PlanId),
Parameter: &pa, Parameter: &pa,
}, nil }, nil
} }

View file

@ -548,11 +548,11 @@ func toCreatePayload(ctx context.Context, model *Model) (*argus.CreateScrapeConf
} }
sc := argus.CreateScrapeConfigPayload{ sc := argus.CreateScrapeConfigPayload{
JobName: model.Name.ValueStringPointer(), JobName: core.StringValueToPointer(model.Name),
MetricsPath: model.MetricsPath.ValueStringPointer(), MetricsPath: core.StringValueToPointer(model.MetricsPath),
ScrapeInterval: model.ScrapeInterval.ValueStringPointer(), ScrapeInterval: core.StringValueToPointer(model.ScrapeInterval),
ScrapeTimeout: model.ScrapeTimeout.ValueStringPointer(), ScrapeTimeout: core.StringValueToPointer(model.ScrapeTimeout),
Scheme: model.Scheme.ValueStringPointer(), Scheme: core.StringValueToPointer(model.Scheme),
} }
setDefaultsCreateScrapeConfig(&sc, model) setDefaultsCreateScrapeConfig(&sc, model)
@ -568,8 +568,8 @@ func toCreatePayload(ctx context.Context, model *Model) (*argus.CreateScrapeConf
if model.BasicAuth != nil { if model.BasicAuth != nil {
if sc.BasicAuth == nil { if sc.BasicAuth == nil {
sc.BasicAuth = &argus.CreateScrapeConfigPayloadBasicAuth{ sc.BasicAuth = &argus.CreateScrapeConfigPayloadBasicAuth{
Username: model.BasicAuth.Username.ValueStringPointer(), Username: core.StringValueToPointer(model.BasicAuth.Username),
Password: model.BasicAuth.Password.ValueStringPointer(), Password: core.StringValueToPointer(model.BasicAuth.Password),
} }
} }
} }
@ -628,10 +628,10 @@ func toUpdatePayload(ctx context.Context, model *Model) (*argus.UpdateScrapeConf
} }
sc := argus.UpdateScrapeConfigPayload{ sc := argus.UpdateScrapeConfigPayload{
MetricsPath: model.MetricsPath.ValueStringPointer(), MetricsPath: core.StringValueToPointer(model.MetricsPath),
ScrapeInterval: model.ScrapeInterval.ValueStringPointer(), ScrapeInterval: core.StringValueToPointer(model.ScrapeInterval),
ScrapeTimeout: model.ScrapeTimeout.ValueStringPointer(), ScrapeTimeout: core.StringValueToPointer(model.ScrapeTimeout),
Scheme: model.Scheme.ValueStringPointer(), Scheme: core.StringValueToPointer(model.Scheme),
} }
setDefaultsUpdateScrapeConfig(&sc, model) setDefaultsUpdateScrapeConfig(&sc, model)
@ -647,8 +647,8 @@ func toUpdatePayload(ctx context.Context, model *Model) (*argus.UpdateScrapeConf
if model.BasicAuth != nil { if model.BasicAuth != nil {
if sc.BasicAuth == nil { if sc.BasicAuth == nil {
sc.BasicAuth = &argus.CreateScrapeConfigPayloadBasicAuth{ sc.BasicAuth = &argus.CreateScrapeConfigPayloadBasicAuth{
Username: model.BasicAuth.Username.ValueStringPointer(), Username: core.StringValueToPointer(model.BasicAuth.Username),
Password: model.BasicAuth.Password.ValueStringPointer(), Password: core.StringValueToPointer(model.BasicAuth.Password),
} }
} }
} }

View file

@ -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) 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{ records = append(records, dns.RecordPayload{
Content: recordString.ValueStringPointer(), Content: core.StringValueToPointer(recordString),
}) })
} }
return &dns.CreateRecordSetPayload{ return &dns.CreateRecordSetPayload{
Comment: model.Comment.ValueStringPointer(), Comment: core.StringValueToPointer(model.Comment),
Name: model.Name.ValueStringPointer(), Name: core.StringValueToPointer(model.Name),
Records: &records, Records: &records,
Ttl: model.TTL.ValueInt64Pointer(), Ttl: core.Int64ValueToPointer(model.TTL),
Type: model.Type.ValueStringPointer(), Type: core.StringValueToPointer(model.Type),
}, nil }, 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) 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{ records = append(records, dns.RecordPayload{
Content: recordString.ValueStringPointer(), Content: core.StringValueToPointer(recordString),
}) })
} }
return &dns.UpdateRecordSetPayload{ return &dns.UpdateRecordSetPayload{
Comment: model.Comment.ValueStringPointer(), Comment: core.StringValueToPointer(model.Comment),
Name: model.Name.ValueStringPointer(), Name: core.StringValueToPointer(model.Name),
Records: &records, Records: &records,
Ttl: model.TTL.ValueInt64Pointer(), Ttl: core.Int64ValueToPointer(model.TTL),
}, nil }, nil
} }

View file

@ -556,18 +556,18 @@ func toCreatePayload(model *Model) (*dns.CreateZonePayload, error) {
modelPrimaries = append(modelPrimaries, primaryString.ValueString()) modelPrimaries = append(modelPrimaries, primaryString.ValueString())
} }
return &dns.CreateZonePayload{ return &dns.CreateZonePayload{
Name: model.Name.ValueStringPointer(), Name: core.StringValueToPointer(model.Name),
DnsName: model.DnsName.ValueStringPointer(), DnsName: core.StringValueToPointer(model.DnsName),
ContactEmail: model.ContactEmail.ValueStringPointer(), ContactEmail: core.StringValueToPointer(model.ContactEmail),
Description: model.Description.ValueStringPointer(), Description: core.StringValueToPointer(model.Description),
Acl: model.Acl.ValueStringPointer(), Acl: core.StringValueToPointer(model.Acl),
Type: model.Type.ValueStringPointer(), Type: core.StringValueToPointer(model.Type),
DefaultTTL: model.DefaultTTL.ValueInt64Pointer(), DefaultTTL: core.Int64ValueToPointer(model.DefaultTTL),
ExpireTime: model.ExpireTime.ValueInt64Pointer(), ExpireTime: core.Int64ValueToPointer(model.ExpireTime),
RefreshTime: model.RefreshTime.ValueInt64Pointer(), RefreshTime: core.Int64ValueToPointer(model.RefreshTime),
RetryTime: model.RetryTime.ValueInt64Pointer(), RetryTime: core.Int64ValueToPointer(model.RetryTime),
NegativeCache: model.NegativeCache.ValueInt64Pointer(), NegativeCache: core.Int64ValueToPointer(model.NegativeCache),
IsReverseZone: model.IsReverseZone.ValueBoolPointer(), IsReverseZone: core.BoolValueToPointer(model.IsReverseZone),
Primaries: &modelPrimaries, Primaries: &modelPrimaries,
}, nil }, nil
} }
@ -578,15 +578,15 @@ func toUpdatePayload(model *Model) (*dns.UpdateZonePayload, error) {
} }
return &dns.UpdateZonePayload{ return &dns.UpdateZonePayload{
Name: model.Name.ValueStringPointer(), Name: core.StringValueToPointer(model.Name),
ContactEmail: model.ContactEmail.ValueStringPointer(), ContactEmail: core.StringValueToPointer(model.ContactEmail),
Description: model.Description.ValueStringPointer(), Description: core.StringValueToPointer(model.Description),
Acl: model.Acl.ValueStringPointer(), Acl: core.StringValueToPointer(model.Acl),
DefaultTTL: model.DefaultTTL.ValueInt64Pointer(), DefaultTTL: core.Int64ValueToPointer(model.DefaultTTL),
ExpireTime: model.ExpireTime.ValueInt64Pointer(), ExpireTime: core.Int64ValueToPointer(model.ExpireTime),
RefreshTime: model.RefreshTime.ValueInt64Pointer(), RefreshTime: core.Int64ValueToPointer(model.RefreshTime),
RetryTime: model.RetryTime.ValueInt64Pointer(), RetryTime: core.Int64ValueToPointer(model.RetryTime),
NegativeCache: model.NegativeCache.ValueInt64Pointer(), NegativeCache: core.Int64ValueToPointer(model.NegativeCache),
Primaries: nil, // API returns error if this field is set, even if nothing changes Primaries: nil, // API returns error if this field is set, even if nothing changes
}, nil }, nil
} }

View file

@ -687,9 +687,9 @@ func toCreatePayload(ctx context.Context, model *Model) (*loadbalancer.CreateLoa
} }
return &loadbalancer.CreateLoadBalancerPayload{ return &loadbalancer.CreateLoadBalancerPayload{
ExternalAddress: model.ExternalAddress.ValueStringPointer(), ExternalAddress: core.StringValueToPointer(model.ExternalAddress),
Listeners: listeners, Listeners: listeners,
Name: model.Name.ValueStringPointer(), Name: core.StringValueToPointer(model.Name),
Networks: networks, Networks: networks,
Options: options, Options: options,
TargetPools: targetPools, TargetPools: targetPools,
@ -704,10 +704,10 @@ func toListenersPayload(model *Model) *[]loadbalancer.Listener {
listeners := []loadbalancer.Listener{} listeners := []loadbalancer.Listener{}
for _, listener := range model.Listeners { for _, listener := range model.Listeners {
listeners = append(listeners, loadbalancer.Listener{ listeners = append(listeners, loadbalancer.Listener{
DisplayName: listener.DisplayName.ValueStringPointer(), DisplayName: core.StringValueToPointer(listener.DisplayName),
Port: listener.Port.ValueInt64Pointer(), Port: core.Int64ValueToPointer(listener.Port),
Protocol: listener.Protocol.ValueStringPointer(), Protocol: core.StringValueToPointer(listener.Protocol),
TargetPool: listener.TargetPool.ValueStringPointer(), TargetPool: core.StringValueToPointer(listener.TargetPool),
}) })
} }
@ -722,8 +722,8 @@ func toNetworksPayload(model *Model) *[]loadbalancer.Network {
networks := []loadbalancer.Network{} networks := []loadbalancer.Network{}
for _, network := range model.Networks { for _, network := range model.Networks {
networks = append(networks, loadbalancer.Network{ networks = append(networks, loadbalancer.Network{
NetworkId: network.NetworkId.ValueStringPointer(), NetworkId: core.StringValueToPointer(network.NetworkId),
Role: network.Role.ValueStringPointer(), Role: core.StringValueToPointer(network.Role),
}) })
} }
@ -751,7 +751,7 @@ func toOptionsPayload(ctx context.Context, model *Model) (*loadbalancer.LoadBala
options := &loadbalancer.LoadBalancerOptions{ options := &loadbalancer.LoadBalancerOptions{
AccessControl: accessControl, AccessControl: accessControl,
PrivateNetworkOnly: optionsModel.PrivateNetworkOnly.ValueBoolPointer(), PrivateNetworkOnly: core.BoolValueToPointer(optionsModel.PrivateNetworkOnly),
} }
return options, nil return options, nil
@ -776,8 +776,8 @@ func toTargetPoolsPayload(ctx context.Context, model *Model) (*[]loadbalancer.Ta
targetPools = append(targetPools, loadbalancer.TargetPool{ targetPools = append(targetPools, loadbalancer.TargetPool{
ActiveHealthCheck: activeHealthCheck, ActiveHealthCheck: activeHealthCheck,
Name: targetPool.Name.ValueStringPointer(), Name: core.StringValueToPointer(targetPool.Name),
TargetPort: targetPool.TargetPort.ValueInt64Pointer(), TargetPort: core.Int64ValueToPointer(targetPool.TargetPort),
Targets: targets, Targets: targets,
}) })
} }
@ -799,8 +799,8 @@ func toTargetPoolUpdatePayload(ctx context.Context, targetPool *TargetPool) (*lo
return &loadbalancer.UpdateTargetPoolPayload{ return &loadbalancer.UpdateTargetPoolPayload{
ActiveHealthCheck: activeHealthCheck, ActiveHealthCheck: activeHealthCheck,
Name: targetPool.Name.ValueStringPointer(), Name: core.StringValueToPointer(targetPool.Name),
TargetPort: targetPool.TargetPort.ValueInt64Pointer(), TargetPort: core.Int64ValueToPointer(targetPool.TargetPort),
Targets: targets, Targets: targets,
}, nil }, nil
} }
@ -817,11 +817,11 @@ func toActiveHealthCheckPayload(ctx context.Context, targetPool *TargetPool) (*l
} }
return &loadbalancer.ActiveHealthCheck{ return &loadbalancer.ActiveHealthCheck{
HealthyThreshold: activeHealthCheckModel.HealthyThreshold.ValueInt64Pointer(), HealthyThreshold: core.Int64ValueToPointer(activeHealthCheckModel.HealthyThreshold),
Interval: activeHealthCheckModel.Interval.ValueStringPointer(), Interval: core.StringValueToPointer(activeHealthCheckModel.Interval),
IntervalJitter: activeHealthCheckModel.IntervalJitter.ValueStringPointer(), IntervalJitter: core.StringValueToPointer(activeHealthCheckModel.IntervalJitter),
Timeout: activeHealthCheckModel.Timeout.ValueStringPointer(), Timeout: core.StringValueToPointer(activeHealthCheckModel.Timeout),
UnhealthyThreshold: activeHealthCheckModel.UnhealthyThreshold.ValueInt64Pointer(), UnhealthyThreshold: core.Int64ValueToPointer(activeHealthCheckModel.UnhealthyThreshold),
}, nil }, nil
} }
@ -833,8 +833,8 @@ func toTargetsPayload(targetPool *TargetPool) *[]loadbalancer.Target {
var targets []loadbalancer.Target var targets []loadbalancer.Target
for _, target := range targetPool.Targets { for _, target := range targetPool.Targets {
targets = append(targets, loadbalancer.Target{ targets = append(targets, loadbalancer.Target{
DisplayName: target.DisplayName.ValueStringPointer(), DisplayName: core.StringValueToPointer(target.DisplayName),
Ip: target.Ip.ValueStringPointer(), Ip: core.StringValueToPointer(target.Ip),
}) })
} }

View file

@ -578,18 +578,18 @@ func toCreatePayload(model *Model, parameters *parametersModel) (*logme.CreateIn
} }
if parameters == nil { if parameters == nil {
return &logme.CreateInstancePayload{ return &logme.CreateInstancePayload{
InstanceName: model.Name.ValueStringPointer(), InstanceName: core.StringValueToPointer(model.Name),
PlanId: model.PlanId.ValueStringPointer(), PlanId: core.StringValueToPointer(model.PlanId),
}, nil }, nil
} }
payloadParams := &logme.InstanceParameters{} payloadParams := &logme.InstanceParameters{}
if parameters.SgwAcl.ValueString() != "" { if parameters.SgwAcl.ValueString() != "" {
payloadParams.SgwAcl = parameters.SgwAcl.ValueStringPointer() payloadParams.SgwAcl = core.StringValueToPointer(parameters.SgwAcl)
} }
return &logme.CreateInstancePayload{ return &logme.CreateInstancePayload{
InstanceName: model.Name.ValueStringPointer(), InstanceName: core.StringValueToPointer(model.Name),
Parameters: payloadParams, Parameters: payloadParams,
PlanId: model.PlanId.ValueStringPointer(), PlanId: core.StringValueToPointer(model.PlanId),
}, nil }, nil
} }
@ -600,14 +600,14 @@ func toUpdatePayload(model *Model, parameters *parametersModel) (*logme.UpdateIn
if parameters == nil { if parameters == nil {
return &logme.UpdateInstancePayload{ return &logme.UpdateInstancePayload{
PlanId: model.PlanId.ValueStringPointer(), PlanId: core.StringValueToPointer(model.PlanId),
}, nil }, nil
} }
return &logme.UpdateInstancePayload{ return &logme.UpdateInstancePayload{
Parameters: &logme.InstanceParameters{ Parameters: &logme.InstanceParameters{
SgwAcl: parameters.SgwAcl.ValueStringPointer(), SgwAcl: core.StringValueToPointer(parameters.SgwAcl),
}, },
PlanId: model.PlanId.ValueStringPointer(), PlanId: core.StringValueToPointer(model.PlanId),
}, nil }, nil
} }

View file

@ -578,18 +578,18 @@ func toCreatePayload(model *Model, parameters *parametersModel) (*mariadb.Create
} }
if parameters == nil { if parameters == nil {
return &mariadb.CreateInstancePayload{ return &mariadb.CreateInstancePayload{
InstanceName: model.Name.ValueStringPointer(), InstanceName: core.StringValueToPointer(model.Name),
PlanId: model.PlanId.ValueStringPointer(), PlanId: core.StringValueToPointer(model.PlanId),
}, nil }, nil
} }
payloadParams := &mariadb.InstanceParameters{} payloadParams := &mariadb.InstanceParameters{}
if parameters.SgwAcl.ValueString() != "" { if parameters.SgwAcl.ValueString() != "" {
payloadParams.SgwAcl = parameters.SgwAcl.ValueStringPointer() payloadParams.SgwAcl = core.StringValueToPointer(parameters.SgwAcl)
} }
return &mariadb.CreateInstancePayload{ return &mariadb.CreateInstancePayload{
InstanceName: model.Name.ValueStringPointer(), InstanceName: core.StringValueToPointer(model.Name),
Parameters: payloadParams, Parameters: payloadParams,
PlanId: model.PlanId.ValueStringPointer(), PlanId: core.StringValueToPointer(model.PlanId),
}, nil }, nil
} }
@ -600,14 +600,14 @@ func toUpdatePayload(model *Model, parameters *parametersModel) (*mariadb.Update
if parameters == nil { if parameters == nil {
return &mariadb.UpdateInstancePayload{ return &mariadb.UpdateInstancePayload{
PlanId: model.PlanId.ValueStringPointer(), PlanId: core.StringValueToPointer(model.PlanId),
}, nil }, nil
} }
return &mariadb.UpdateInstancePayload{ return &mariadb.UpdateInstancePayload{
Parameters: &mariadb.InstanceParameters{ Parameters: &mariadb.InstanceParameters{
SgwAcl: parameters.SgwAcl.ValueStringPointer(), SgwAcl: core.StringValueToPointer(parameters.SgwAcl),
}, },
PlanId: model.PlanId.ValueStringPointer(), PlanId: core.StringValueToPointer(model.PlanId),
}, nil }, nil
} }

View file

@ -671,15 +671,15 @@ func toCreatePayload(model *Model, acl []string, flavor *flavorModel, storage *s
Acl: &mongodbflex.InstanceAcl{ Acl: &mongodbflex.InstanceAcl{
Items: &acl, Items: &acl,
}, },
BackupSchedule: model.BackupSchedule.ValueStringPointer(), BackupSchedule: core.StringValueToPointer(model.BackupSchedule),
FlavorId: flavor.Id.ValueStringPointer(), FlavorId: core.StringValueToPointer(flavor.Id),
Name: model.Name.ValueStringPointer(), Name: core.StringValueToPointer(model.Name),
Replicas: model.Replicas.ValueInt64Pointer(), Replicas: core.Int64ValueToPointer(model.Replicas),
Storage: &mongodbflex.InstanceStorage{ Storage: &mongodbflex.InstanceStorage{
Class: storage.Class.ValueStringPointer(), Class: core.StringValueToPointer(storage.Class),
Size: storage.Size.ValueInt64Pointer(), Size: core.Int64ValueToPointer(storage.Size),
}, },
Version: model.Version.ValueStringPointer(), Version: core.StringValueToPointer(model.Version),
Options: &payloadOptions, Options: &payloadOptions,
}, nil }, nil
} }
@ -710,15 +710,15 @@ func toUpdatePayload(model *Model, acl []string, flavor *flavorModel, storage *s
Acl: &mongodbflex.InstanceAcl{ Acl: &mongodbflex.InstanceAcl{
Items: &acl, Items: &acl,
}, },
BackupSchedule: model.BackupSchedule.ValueStringPointer(), BackupSchedule: core.StringValueToPointer(model.BackupSchedule),
FlavorId: flavor.Id.ValueStringPointer(), FlavorId: core.StringValueToPointer(flavor.Id),
Name: model.Name.ValueStringPointer(), Name: core.StringValueToPointer(model.Name),
Replicas: model.Replicas.ValueInt64Pointer(), Replicas: core.Int64ValueToPointer(model.Replicas),
Storage: &mongodbflex.InstanceStorage{ Storage: &mongodbflex.InstanceStorage{
Class: storage.Class.ValueStringPointer(), Class: core.StringValueToPointer(storage.Class),
Size: storage.Size.ValueInt64Pointer(), Size: core.Int64ValueToPointer(storage.Size),
}, },
Version: model.Version.ValueStringPointer(), Version: core.StringValueToPointer(model.Version),
Options: &payloadOptions, Options: &payloadOptions,
}, nil }, nil
} }
@ -734,11 +734,11 @@ func loadFlavorId(ctx context.Context, client mongoDBFlexClient, model *Model, f
if flavor == nil { if flavor == nil {
return fmt.Errorf("nil flavor") return fmt.Errorf("nil flavor")
} }
cpu := flavor.CPU.ValueInt64Pointer() cpu := core.Int64ValueToPointer(flavor.CPU)
if cpu == nil { if cpu == nil {
return fmt.Errorf("nil CPU") return fmt.Errorf("nil CPU")
} }
ram := flavor.RAM.ValueInt64Pointer() ram := core.Int64ValueToPointer(flavor.RAM)
if ram == nil { if ram == nil {
return fmt.Errorf("nil RAM") return fmt.Errorf("nil RAM")
} }

View file

@ -438,7 +438,7 @@ func toCreatePayload(model *Model, roles []string) (*mongodbflex.CreateUserPaylo
return &mongodbflex.CreateUserPayload{ return &mongodbflex.CreateUserPayload{
Roles: &roles, Roles: &roles,
Username: model.Username.ValueStringPointer(), Username: core.StringValueToPointer(model.Username),
Database: model.Database.ValueStringPointer(), Database: core.StringValueToPointer(model.Database),
}, nil }, nil
} }

View file

@ -328,7 +328,7 @@ func toCreatePayload(model *Model) (*objectstorage.CreateAccessKeyPayload, error
return &objectstorage.CreateAccessKeyPayload{}, nil return &objectstorage.CreateAccessKeyPayload{}, nil
} }
expirationTimestampValue := model.ExpirationTimestamp.ValueStringPointer() expirationTimestampValue := core.StringValueToPointer(model.ExpirationTimestamp)
if expirationTimestampValue == nil { if expirationTimestampValue == nil {
return &objectstorage.CreateAccessKeyPayload{}, nil return &objectstorage.CreateAccessKeyPayload{}, nil
} }

View file

@ -578,18 +578,18 @@ func toCreatePayload(model *Model, parameters *parametersModel) (*opensearch.Cre
} }
if parameters == nil { if parameters == nil {
return &opensearch.CreateInstancePayload{ return &opensearch.CreateInstancePayload{
InstanceName: model.Name.ValueStringPointer(), InstanceName: core.StringValueToPointer(model.Name),
PlanId: model.PlanId.ValueStringPointer(), PlanId: core.StringValueToPointer(model.PlanId),
}, nil }, nil
} }
payloadParams := &opensearch.InstanceParameters{} payloadParams := &opensearch.InstanceParameters{}
if parameters.SgwAcl.ValueString() != "" { if parameters.SgwAcl.ValueString() != "" {
payloadParams.SgwAcl = parameters.SgwAcl.ValueStringPointer() payloadParams.SgwAcl = core.StringValueToPointer(parameters.SgwAcl)
} }
return &opensearch.CreateInstancePayload{ return &opensearch.CreateInstancePayload{
InstanceName: model.Name.ValueStringPointer(), InstanceName: core.StringValueToPointer(model.Name),
Parameters: payloadParams, Parameters: payloadParams,
PlanId: model.PlanId.ValueStringPointer(), PlanId: core.StringValueToPointer(model.PlanId),
}, nil }, nil
} }
@ -600,14 +600,14 @@ func toUpdatePayload(model *Model, parameters *parametersModel) (*opensearch.Upd
if parameters == nil { if parameters == nil {
return &opensearch.UpdateInstancePayload{ return &opensearch.UpdateInstancePayload{
PlanId: model.PlanId.ValueStringPointer(), PlanId: core.StringValueToPointer(model.PlanId),
}, nil }, nil
} }
return &opensearch.UpdateInstancePayload{ return &opensearch.UpdateInstancePayload{
Parameters: &opensearch.InstanceParameters{ Parameters: &opensearch.InstanceParameters{
SgwAcl: parameters.SgwAcl.ValueStringPointer(), SgwAcl: core.StringValueToPointer(parameters.SgwAcl),
}, },
PlanId: model.PlanId.ValueStringPointer(), PlanId: core.StringValueToPointer(model.PlanId),
}, nil }, nil
} }

View file

@ -592,15 +592,15 @@ func toCreatePayload(model *Model, acl []string, flavor *flavorModel, storage *s
Acl: &postgresflex.InstanceAcl{ Acl: &postgresflex.InstanceAcl{
Items: &acl, Items: &acl,
}, },
BackupSchedule: model.BackupSchedule.ValueStringPointer(), BackupSchedule: core.StringValueToPointer(model.BackupSchedule),
FlavorId: flavor.Id.ValueStringPointer(), FlavorId: core.StringValueToPointer(flavor.Id),
Name: model.Name.ValueStringPointer(), Name: core.StringValueToPointer(model.Name),
Replicas: model.Replicas.ValueInt64Pointer(), Replicas: core.Int64ValueToPointer(model.Replicas),
Storage: &postgresflex.InstanceStorage{ Storage: &postgresflex.InstanceStorage{
Class: storage.Class.ValueStringPointer(), Class: core.StringValueToPointer(storage.Class),
Size: storage.Size.ValueInt64Pointer(), Size: core.Int64ValueToPointer(storage.Size),
}, },
Version: model.Version.ValueStringPointer(), Version: core.StringValueToPointer(model.Version),
}, nil }, nil
} }
@ -622,15 +622,15 @@ func toUpdatePayload(model *Model, acl []string, flavor *flavorModel, storage *s
Acl: &postgresflex.InstanceAcl{ Acl: &postgresflex.InstanceAcl{
Items: &acl, Items: &acl,
}, },
BackupSchedule: model.BackupSchedule.ValueStringPointer(), BackupSchedule: core.StringValueToPointer(model.BackupSchedule),
FlavorId: flavor.Id.ValueStringPointer(), FlavorId: core.StringValueToPointer(flavor.Id),
Name: model.Name.ValueStringPointer(), Name: core.StringValueToPointer(model.Name),
Replicas: model.Replicas.ValueInt64Pointer(), Replicas: core.Int64ValueToPointer(model.Replicas),
Storage: &postgresflex.InstanceStorage{ Storage: &postgresflex.InstanceStorage{
Class: storage.Class.ValueStringPointer(), Class: core.StringValueToPointer(storage.Class),
Size: storage.Size.ValueInt64Pointer(), Size: core.Int64ValueToPointer(storage.Size),
}, },
Version: model.Version.ValueStringPointer(), Version: core.StringValueToPointer(model.Version),
}, nil }, nil
} }
@ -645,11 +645,11 @@ func loadFlavorId(ctx context.Context, client postgresFlexClient, model *Model,
if flavor == nil { if flavor == nil {
return fmt.Errorf("nil flavor") return fmt.Errorf("nil flavor")
} }
cpu := flavor.CPU.ValueInt64Pointer() cpu := core.Int64ValueToPointer(flavor.CPU)
if cpu == nil { if cpu == nil {
return fmt.Errorf("nil CPU") return fmt.Errorf("nil CPU")
} }
ram := flavor.RAM.ValueInt64Pointer() ram := core.Int64ValueToPointer(flavor.RAM)
if ram == nil { if ram == nil {
return fmt.Errorf("nil RAM") return fmt.Errorf("nil RAM")
} }

View file

@ -435,6 +435,6 @@ func toCreatePayload(model *Model, roles []string) (*postgresflex.CreateUserPayl
return &postgresflex.CreateUserPayload{ return &postgresflex.CreateUserPayload{
Roles: &roles, Roles: &roles,
Username: model.Username.ValueStringPointer(), Username: core.StringValueToPointer(model.Username),
}, nil }, nil
} }

View file

@ -330,21 +330,21 @@ func toCreatePayload(model *Model, parameters *parametersModel, parametersPlugin
if parameters == nil { if parameters == nil {
return &postgresql.CreateInstancePayload{ return &postgresql.CreateInstancePayload{
InstanceName: model.Name.ValueStringPointer(), InstanceName: core.StringValueToPointer(model.Name),
PlanId: model.PlanId.ValueStringPointer(), PlanId: core.StringValueToPointer(model.PlanId),
}, nil }, nil
} }
return &postgresql.CreateInstancePayload{ return &postgresql.CreateInstancePayload{
InstanceName: model.Name.ValueStringPointer(), InstanceName: core.StringValueToPointer(model.Name),
Parameters: &postgresql.InstanceParameters{ Parameters: &postgresql.InstanceParameters{
EnableMonitoring: parameters.EnableMonitoring.ValueBoolPointer(), EnableMonitoring: core.BoolValueToPointer(parameters.EnableMonitoring),
MetricsFrequency: parameters.MetricsFrequency.ValueInt64Pointer(), MetricsFrequency: core.Int64ValueToPointer(parameters.MetricsFrequency),
MetricsPrefix: parameters.MetricsPrefix.ValueStringPointer(), MetricsPrefix: core.StringValueToPointer(parameters.MetricsPrefix),
MonitoringInstanceId: parameters.MonitoringInstanceId.ValueStringPointer(), MonitoringInstanceId: core.StringValueToPointer(parameters.MonitoringInstanceId),
Plugins: parametersPlugins, Plugins: parametersPlugins,
SgwAcl: parameters.SgwAcl.ValueStringPointer(), SgwAcl: core.StringValueToPointer(parameters.SgwAcl),
}, },
PlanId: model.PlanId.ValueStringPointer(), PlanId: core.StringValueToPointer(model.PlanId),
}, nil }, nil
} }
@ -469,19 +469,19 @@ func toUpdatePayload(model *Model, parameters *parametersModel, parametersPlugin
if parameters == nil { if parameters == nil {
return &postgresql.UpdateInstancePayload{ return &postgresql.UpdateInstancePayload{
PlanId: model.PlanId.ValueStringPointer(), PlanId: core.StringValueToPointer(model.PlanId),
}, nil }, nil
} }
return &postgresql.UpdateInstancePayload{ return &postgresql.UpdateInstancePayload{
Parameters: &postgresql.InstanceParameters{ Parameters: &postgresql.InstanceParameters{
EnableMonitoring: parameters.EnableMonitoring.ValueBoolPointer(), EnableMonitoring: core.BoolValueToPointer(parameters.EnableMonitoring),
MetricsFrequency: parameters.MetricsFrequency.ValueInt64Pointer(), MetricsFrequency: core.Int64ValueToPointer(parameters.MetricsFrequency),
MetricsPrefix: parameters.MetricsPrefix.ValueStringPointer(), MetricsPrefix: core.StringValueToPointer(parameters.MetricsPrefix),
MonitoringInstanceId: parameters.MonitoringInstanceId.ValueStringPointer(), MonitoringInstanceId: core.StringValueToPointer(parameters.MonitoringInstanceId),
Plugins: parametersPlugins, Plugins: parametersPlugins,
SgwAcl: parameters.SgwAcl.ValueStringPointer(), SgwAcl: core.StringValueToPointer(parameters.SgwAcl),
}, },
PlanId: model.PlanId.ValueStringPointer(), PlanId: core.StringValueToPointer(model.PlanId),
}, nil }, nil
} }

View file

@ -578,18 +578,18 @@ func toCreatePayload(model *Model, parameters *parametersModel) (*rabbitmq.Creat
} }
if parameters == nil { if parameters == nil {
return &rabbitmq.CreateInstancePayload{ return &rabbitmq.CreateInstancePayload{
InstanceName: model.Name.ValueStringPointer(), InstanceName: core.StringValueToPointer(model.Name),
PlanId: model.PlanId.ValueStringPointer(), PlanId: core.StringValueToPointer(model.PlanId),
}, nil }, nil
} }
payloadParams := &rabbitmq.InstanceParameters{} payloadParams := &rabbitmq.InstanceParameters{}
if parameters.SgwAcl.ValueString() != "" { if parameters.SgwAcl.ValueString() != "" {
payloadParams.SgwAcl = parameters.SgwAcl.ValueStringPointer() payloadParams.SgwAcl = core.StringValueToPointer(parameters.SgwAcl)
} }
return &rabbitmq.CreateInstancePayload{ return &rabbitmq.CreateInstancePayload{
InstanceName: model.Name.ValueStringPointer(), InstanceName: core.StringValueToPointer(model.Name),
Parameters: payloadParams, Parameters: payloadParams,
PlanId: model.PlanId.ValueStringPointer(), PlanId: core.StringValueToPointer(model.PlanId),
}, nil }, nil
} }
@ -600,14 +600,14 @@ func toUpdatePayload(model *Model, parameters *parametersModel) (*rabbitmq.Updat
if parameters == nil { if parameters == nil {
return &rabbitmq.UpdateInstancePayload{ return &rabbitmq.UpdateInstancePayload{
PlanId: model.PlanId.ValueStringPointer(), PlanId: core.StringValueToPointer(model.PlanId),
}, nil }, nil
} }
return &rabbitmq.UpdateInstancePayload{ return &rabbitmq.UpdateInstancePayload{
Parameters: &rabbitmq.InstanceParameters{ Parameters: &rabbitmq.InstanceParameters{
SgwAcl: parameters.SgwAcl.ValueStringPointer(), SgwAcl: core.StringValueToPointer(parameters.SgwAcl),
}, },
PlanId: model.PlanId.ValueStringPointer(), PlanId: core.StringValueToPointer(model.PlanId),
}, nil }, nil
} }

View file

@ -578,18 +578,18 @@ func toCreatePayload(model *Model, parameters *parametersModel) (*redis.CreateIn
} }
if parameters == nil { if parameters == nil {
return &redis.CreateInstancePayload{ return &redis.CreateInstancePayload{
InstanceName: model.Name.ValueStringPointer(), InstanceName: core.StringValueToPointer(model.Name),
PlanId: model.PlanId.ValueStringPointer(), PlanId: core.StringValueToPointer(model.PlanId),
}, nil }, nil
} }
payloadParams := &redis.InstanceParameters{} payloadParams := &redis.InstanceParameters{}
if parameters.SgwAcl.ValueString() != "" { if parameters.SgwAcl.ValueString() != "" {
payloadParams.SgwAcl = parameters.SgwAcl.ValueStringPointer() payloadParams.SgwAcl = core.StringValueToPointer(parameters.SgwAcl)
} }
return &redis.CreateInstancePayload{ return &redis.CreateInstancePayload{
InstanceName: model.Name.ValueStringPointer(), InstanceName: core.StringValueToPointer(model.Name),
Parameters: payloadParams, Parameters: payloadParams,
PlanId: model.PlanId.ValueStringPointer(), PlanId: core.StringValueToPointer(model.PlanId),
}, nil }, nil
} }
@ -600,14 +600,14 @@ func toUpdatePayload(model *Model, parameters *parametersModel) (*redis.UpdateIn
if parameters == nil { if parameters == nil {
return &redis.UpdateInstancePayload{ return &redis.UpdateInstancePayload{
PlanId: model.PlanId.ValueStringPointer(), PlanId: core.StringValueToPointer(model.PlanId),
}, nil }, nil
} }
return &redis.UpdateInstancePayload{ return &redis.UpdateInstancePayload{
Parameters: &redis.InstanceParameters{ Parameters: &redis.InstanceParameters{
SgwAcl: parameters.SgwAcl.ValueStringPointer(), SgwAcl: core.StringValueToPointer(parameters.SgwAcl),
}, },
PlanId: model.PlanId.ValueStringPointer(), PlanId: core.StringValueToPointer(model.PlanId),
}, nil }, nil
} }

View file

@ -418,10 +418,10 @@ func toCreatePayload(model *Model, serviceAccountEmail string) (*resourcemanager
} }
return &resourcemanager.CreateProjectPayload{ return &resourcemanager.CreateProjectPayload{
ContainerParentId: model.ContainerParentId.ValueStringPointer(), ContainerParentId: core.StringValueToPointer(model.ContainerParentId),
Labels: labels, Labels: labels,
Members: &members, Members: &members,
Name: model.Name.ValueStringPointer(), Name: core.StringValueToPointer(model.Name),
}, nil }, nil
} }
@ -437,8 +437,8 @@ func toUpdatePayload(model *Model) (*resourcemanager.UpdateProjectPayload, error
} }
return &resourcemanager.UpdateProjectPayload{ return &resourcemanager.UpdateProjectPayload{
ContainerParentId: model.ContainerParentId.ValueStringPointer(), ContainerParentId: core.StringValueToPointer(model.ContainerParentId),
Name: model.Name.ValueStringPointer(), Name: core.StringValueToPointer(model.Name),
Labels: labels, Labels: labels,
}, nil }, nil
} }

View file

@ -417,7 +417,7 @@ func toCreatePayload(model *Model) (*secretsmanager.CreateInstancePayload, error
return nil, fmt.Errorf("nil model") return nil, fmt.Errorf("nil model")
} }
return &secretsmanager.CreateInstancePayload{ return &secretsmanager.CreateInstancePayload{
Name: model.Name.ValueStringPointer(), Name: core.StringValueToPointer(model.Name),
}, nil }, nil
} }

View file

@ -359,8 +359,8 @@ func toCreatePayload(model *Model) (*secretsmanager.CreateUserPayload, error) {
return nil, fmt.Errorf("nil model") return nil, fmt.Errorf("nil model")
} }
return &secretsmanager.CreateUserPayload{ return &secretsmanager.CreateUserPayload{
Description: model.Description.ValueStringPointer(), Description: core.StringValueToPointer(model.Description),
Write: model.WriteEnabled.ValueBoolPointer(), Write: core.BoolValueToPointer(model.WriteEnabled),
}, nil }, nil
} }
@ -369,7 +369,7 @@ func toUpdatePayload(model *Model) (*secretsmanager.UpdateUserPayload, error) {
return nil, fmt.Errorf("nil model") return nil, fmt.Errorf("nil model")
} }
return &secretsmanager.UpdateUserPayload{ return &secretsmanager.UpdateUserPayload{
Write: model.WriteEnabled.ValueBoolPointer(), Write: core.BoolValueToPointer(model.WriteEnabled),
}, nil }, nil
} }

View file

@ -674,9 +674,9 @@ func toNodepoolsPayload(ctx context.Context, m *Cluster) ([]ske.Nodepool, error)
ts := []ske.Taint{} ts := []ske.Taint{}
for _, v := range taintsModel { for _, v := range taintsModel {
t := ske.Taint{ t := ske.Taint{
Effect: v.Effect.ValueStringPointer(), Effect: core.StringValueToPointer(v.Effect),
Key: v.Key.ValueStringPointer(), Key: core.StringValueToPointer(v.Key),
Value: v.Value.ValueStringPointer(), Value: core.StringValueToPointer(v.Value),
} }
ts = append(ts, t) ts = append(ts, t)
} }
@ -712,24 +712,24 @@ func toNodepoolsPayload(ctx context.Context, m *Cluster) ([]ske.Nodepool, error)
} }
cn := ske.CRI{ cn := ske.CRI{
Name: nodePool.CRI.ValueStringPointer(), Name: core.StringValueToPointer(nodePool.CRI),
} }
cnp := ske.Nodepool{ cnp := ske.Nodepool{
Name: nodePool.Name.ValueStringPointer(), Name: core.StringValueToPointer(nodePool.Name),
Minimum: nodePool.Minimum.ValueInt64Pointer(), Minimum: core.Int64ValueToPointer(nodePool.Minimum),
Maximum: nodePool.Maximum.ValueInt64Pointer(), Maximum: core.Int64ValueToPointer(nodePool.Maximum),
MaxSurge: nodePool.MaxSurge.ValueInt64Pointer(), MaxSurge: core.Int64ValueToPointer(nodePool.MaxSurge),
MaxUnavailable: nodePool.MaxUnavailable.ValueInt64Pointer(), MaxUnavailable: core.Int64ValueToPointer(nodePool.MaxUnavailable),
Machine: &ske.Machine{ Machine: &ske.Machine{
Type: nodePool.MachineType.ValueStringPointer(), Type: core.StringValueToPointer(nodePool.MachineType),
Image: &ske.Image{ Image: &ske.Image{
Name: nodePool.OSName.ValueStringPointer(), Name: core.StringValueToPointer(nodePool.OSName),
Version: nodePool.OSVersion.ValueStringPointer(), Version: core.StringValueToPointer(nodePool.OSVersion),
}, },
}, },
Volume: &ske.Volume{ Volume: &ske.Volume{
Type: nodePool.VolumeType.ValueStringPointer(), Type: core.StringValueToPointer(nodePool.VolumeType),
Size: nodePool.VolumeSize.ValueInt64Pointer(), Size: core.Int64ValueToPointer(nodePool.VolumeSize),
}, },
Taints: &ts, Taints: &ts,
Cri: &cn, Cri: &cn,
@ -755,8 +755,8 @@ func toHibernationsPayload(ctx context.Context, m *Cluster) (*ske.Hibernation, e
scs := []ske.HibernationSchedule{} scs := []ske.HibernationSchedule{}
for _, h := range hibernation { for _, h := range hibernation {
sc := ske.HibernationSchedule{ sc := ske.HibernationSchedule{
Start: h.Start.ValueStringPointer(), Start: core.StringValueToPointer(h.Start),
End: h.End.ValueStringPointer(), End: core.StringValueToPointer(h.End),
} }
if !h.Timezone.IsNull() && !h.Timezone.IsUnknown() { if !h.Timezone.IsNull() && !h.Timezone.IsUnknown() {
tz := h.Timezone.ValueString() tz := h.Timezone.ValueString()
@ -777,8 +777,8 @@ func toExtensionsPayload(ctx context.Context, m *Cluster) (*ske.Extension, error
ex := &ske.Extension{} ex := &ske.Extension{}
if m.Extensions.Argus != nil { if m.Extensions.Argus != nil {
ex.Argus = &ske.Argus{ ex.Argus = &ske.Argus{
Enabled: m.Extensions.Argus.Enabled.ValueBoolPointer(), Enabled: core.BoolValueToPointer(m.Extensions.Argus.Enabled),
ArgusInstanceId: m.Extensions.Argus.ArgusInstanceId.ValueStringPointer(), ArgusInstanceId: core.StringValueToPointer(m.Extensions.Argus.ArgusInstanceId),
} }
} }
if m.Extensions.ACL != nil { 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()) return nil, fmt.Errorf("error in extension object converion %v", diags.Errors())
} }
ex.Acl = &ske.ACL{ ex.Acl = &ske.ACL{
Enabled: m.Extensions.ACL.Enabled.ValueBoolPointer(), Enabled: core.BoolValueToPointer(m.Extensions.ACL.Enabled),
AllowedCidrs: &cidrs, AllowedCidrs: &cidrs,
} }
} }
@ -824,8 +824,8 @@ func toMaintenancePayload(ctx context.Context, m *Cluster) (*ske.Maintenance, er
return &ske.Maintenance{ return &ske.Maintenance{
AutoUpdate: &ske.MaintenanceAutoUpdate{ AutoUpdate: &ske.MaintenanceAutoUpdate{
KubernetesVersion: maintenance.EnableKubernetesVersionUpdates.ValueBoolPointer(), KubernetesVersion: core.BoolValueToPointer(maintenance.EnableKubernetesVersionUpdates),
MachineImageVersion: maintenance.EnableMachineImageVersionUpdates.ValueBoolPointer(), MachineImageVersion: core.BoolValueToPointer(maintenance.EnableMachineImageVersionUpdates),
}, },
TimeWindow: &ske.TimeWindow{ TimeWindow: &ske.TimeWindow{
Start: timeWindowStart, Start: timeWindowStart,
@ -874,7 +874,6 @@ func mapFields(ctx context.Context, cl *ske.ClusterResponse, m *Cluster) error {
if err != nil { if err != nil {
return fmt.Errorf("mapping node_pools: %w", err) return fmt.Errorf("mapping node_pools: %w", err)
} }
err = mapMaintenance(ctx, cl, m) err = mapMaintenance(ctx, cl, m)
if err != nil { if err != nil {
return fmt.Errorf("mapping maintenance: %w", err) 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) { 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 { if err != nil {
return nil, false, fmt.Errorf("getting latest matching kubernetes version: %w", err) return nil, false, fmt.Errorf("getting latest matching kubernetes version: %w", err)
} }
k := &ske.Kubernetes{ k := &ske.Kubernetes{
Version: versionUsed, Version: versionUsed,
AllowPrivilegedContainers: m.AllowPrivilegedContainers.ValueBoolPointer(), AllowPrivilegedContainers: core.BoolValueToPointer(m.AllowPrivilegedContainers),
} }
return k, hasDeprecatedVersion, nil return k, hasDeprecatedVersion, nil
} }