chore(terraform): use a util func to build internal terraform id (#869)

This commit is contained in:
Ruben Hönle 2025-06-12 14:41:57 +02:00 committed by GitHub
parent 801ef6033d
commit b313ef6a39
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
72 changed files with 205 additions and 538 deletions

View file

@ -494,8 +494,7 @@ func mapFields(ctx context.Context, alertGroup *observability.AlertGroup, model
}
model.Name = types.StringValue(name)
idParts := []string{model.ProjectId.ValueString(), model.InstanceId.ValueString(), name}
model.Id = types.StringValue(strings.Join(idParts, core.Separator))
model.Id = utils.BuildInternalTerraformId(model.ProjectId.ValueString(), model.InstanceId.ValueString(), name)
var interval string
if !utils.IsUndefined(model.Interval) {

View file

@ -4,7 +4,6 @@ import (
"context"
"fmt"
"net/http"
"strings"
"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/conversion"
observabilityUtils "github.com/stackitcloud/terraform-provider-stackit/stackit/internal/services/observability/utils"
@ -165,13 +164,8 @@ func mapFields(r *observability.Credentials, model *Model) error {
} else {
return fmt.Errorf("username id not present")
}
idParts := []string{
model.ProjectId.ValueString(),
model.InstanceId.ValueString(),
userName,
}
model.Id = types.StringValue(
strings.Join(idParts, core.Separator),
model.Id = utils.BuildInternalTerraformId(
model.ProjectId.ValueString(), model.InstanceId.ValueString(), userName,
)
model.Username = types.StringPointerValue(r.Username)
model.Password = types.StringPointerValue(r.Password)

View file

@ -7,6 +7,8 @@ import (
"strconv"
"strings"
"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/utils"
observabilityUtils "github.com/stackitcloud/terraform-provider-stackit/stackit/internal/services/observability/utils"
"github.com/hashicorp/terraform-plugin-framework-validators/listvalidator"
@ -27,7 +29,7 @@ import (
"github.com/hashicorp/terraform-plugin-framework/types/basetypes"
"github.com/hashicorp/terraform-plugin-log/tflog"
"github.com/stackitcloud/stackit-sdk-go/core/oapierror"
"github.com/stackitcloud/stackit-sdk-go/core/utils"
sdkUtils "github.com/stackitcloud/stackit-sdk-go/core/utils"
"github.com/stackitcloud/stackit-sdk-go/services/observability"
"github.com/stackitcloud/stackit-sdk-go/services/observability/wait"
"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/conversion"
@ -1290,13 +1292,7 @@ func mapFields(ctx context.Context, r *observability.GetInstanceResponse, model
return fmt.Errorf("instance id not present")
}
idParts := []string{
model.ProjectId.ValueString(),
instanceId,
}
model.Id = types.StringValue(
strings.Join(idParts, core.Separator),
)
model.Id = utils.BuildInternalTerraformId(model.ProjectId.ValueString(), instanceId)
model.InstanceId = types.StringValue(instanceId)
model.PlanName = types.StringPointerValue(r.PlanName)
model.PlanId = types.StringPointerValue(r.PlanId)
@ -1573,19 +1569,19 @@ func mapGlobalConfigToAttributes(respGlobalConfigs *observability.Global, global
if globalConfigsTF != nil {
if respGlobalConfigs.SmtpSmarthost == nil &&
!globalConfigsTF.SmtpSmartHost.IsNull() && !globalConfigsTF.SmtpSmartHost.IsUnknown() {
smtpSmartHost = utils.Ptr(globalConfigsTF.SmtpSmartHost.ValueString())
smtpSmartHost = sdkUtils.Ptr(globalConfigsTF.SmtpSmartHost.ValueString())
}
if respGlobalConfigs.SmtpAuthIdentity == nil &&
!globalConfigsTF.SmtpAuthIdentity.IsNull() && !globalConfigsTF.SmtpAuthIdentity.IsUnknown() {
smtpAuthIdentity = utils.Ptr(globalConfigsTF.SmtpAuthIdentity.ValueString())
smtpAuthIdentity = sdkUtils.Ptr(globalConfigsTF.SmtpAuthIdentity.ValueString())
}
if respGlobalConfigs.SmtpAuthPassword == nil &&
!globalConfigsTF.SmtpAuthPassword.IsNull() && !globalConfigsTF.SmtpAuthPassword.IsUnknown() {
smtpAuthPassword = utils.Ptr(globalConfigsTF.SmtpAuthPassword.ValueString())
smtpAuthPassword = sdkUtils.Ptr(globalConfigsTF.SmtpAuthPassword.ValueString())
}
if respGlobalConfigs.SmtpAuthUsername == nil &&
!globalConfigsTF.SmtpAuthUsername.IsNull() && !globalConfigsTF.SmtpAuthUsername.IsUnknown() {
smtpAuthUsername = utils.Ptr(globalConfigsTF.SmtpAuthUsername.ValueString())
smtpAuthUsername = sdkUtils.Ptr(globalConfigsTF.SmtpAuthUsername.ValueString())
}
}
@ -1878,7 +1874,7 @@ func toUpdateMetricsStorageRetentionPayload(retentionDaysRaw, retentionDays5m, r
func updateACL(ctx context.Context, projectId, instanceId string, acl []string, client *observability.APIClient) error {
payload := observability.UpdateACLPayload{
Acl: utils.Ptr(acl),
Acl: sdkUtils.Ptr(acl),
}
_, err := client.UpdateACL(ctx, instanceId, projectId).UpdateACLPayload(payload).Execute()

View file

@ -494,8 +494,7 @@ func mapFields(ctx context.Context, alertGroup *observability.AlertGroup, model
}
model.Name = types.StringValue(name)
idParts := []string{model.ProjectId.ValueString(), model.InstanceId.ValueString(), name}
model.Id = types.StringValue(strings.Join(idParts, core.Separator))
model.Id = utils.BuildInternalTerraformId(model.ProjectId.ValueString(), model.InstanceId.ValueString(), name)
var interval string
if !utils.IsUndefined(model.Interval) {

View file

@ -7,6 +7,8 @@ import (
"strings"
"time"
"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/utils"
observabilityUtils "github.com/stackitcloud/terraform-provider-stackit/stackit/internal/services/observability/utils"
"github.com/hashicorp/terraform-plugin-framework-validators/int64validator"
@ -28,7 +30,7 @@ import (
"github.com/hashicorp/terraform-plugin-framework/types/basetypes"
"github.com/hashicorp/terraform-plugin-log/tflog"
"github.com/stackitcloud/stackit-sdk-go/core/oapierror"
"github.com/stackitcloud/stackit-sdk-go/core/utils"
sdkUtils "github.com/stackitcloud/stackit-sdk-go/core/utils"
"github.com/stackitcloud/stackit-sdk-go/services/observability"
"github.com/stackitcloud/stackit-sdk-go/services/observability/wait"
"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/conversion"
@ -545,16 +547,8 @@ func mapFields(ctx context.Context, sc *observability.Job, model *Model) error {
return fmt.Errorf("scrape config name not present")
}
idParts := []string{
model.ProjectId.ValueString(),
model.InstanceId.ValueString(),
scName,
}
model.Id = types.StringValue(
strings.Join(idParts, core.Separator),
)
model.Id = utils.BuildInternalTerraformId(model.ProjectId.ValueString(), model.InstanceId.ValueString(), scName)
model.Name = types.StringValue(scName)
model.MetricsPath = types.StringPointerValue(sc.MetricsPath)
model.Scheme = types.StringValue(string(sc.GetScheme()))
model.ScrapeInterval = types.StringPointerValue(sc.ScrapeInterval)
@ -694,7 +688,7 @@ func toCreatePayload(ctx context.Context, model *Model, saml2Model *saml2Model,
ScrapeInterval: conversion.StringValueToPointer(model.ScrapeInterval),
ScrapeTimeout: conversion.StringValueToPointer(model.ScrapeTimeout),
// potentially lossy conversion, depending on the allowed range for sample_limit
SampleLimit: utils.Ptr(float64(model.SampleLimit.ValueInt64())),
SampleLimit: sdkUtils.Ptr(float64(model.SampleLimit.ValueInt64())),
Scheme: observability.CreateScrapeConfigPayloadGetSchemeAttributeType(conversion.StringValueToPointer(model.Scheme)),
}
setDefaultsCreateScrapeConfig(&sc, model, saml2Model)
@ -750,13 +744,13 @@ func setDefaultsCreateScrapeConfig(sc *observability.CreateScrapeConfigPayload,
sc.Scheme = DefaultScheme.Ptr()
}
if model.ScrapeInterval.IsNull() || model.ScrapeInterval.IsUnknown() {
sc.ScrapeInterval = utils.Ptr(DefaultScrapeInterval)
sc.ScrapeInterval = sdkUtils.Ptr(DefaultScrapeInterval)
}
if model.ScrapeTimeout.IsNull() || model.ScrapeTimeout.IsUnknown() {
sc.ScrapeTimeout = utils.Ptr(DefaultScrapeTimeout)
sc.ScrapeTimeout = sdkUtils.Ptr(DefaultScrapeTimeout)
}
if model.SampleLimit.IsNull() || model.SampleLimit.IsUnknown() {
sc.SampleLimit = utils.Ptr(float64(DefaultSampleLimit))
sc.SampleLimit = sdkUtils.Ptr(float64(DefaultSampleLimit))
}
// Make the API default more explicit by setting the field.
if saml2Model.EnableURLParameters.IsNull() || saml2Model.EnableURLParameters.IsUnknown() {
@ -783,7 +777,7 @@ func toUpdatePayload(ctx context.Context, model *Model, saml2Model *saml2Model,
ScrapeInterval: conversion.StringValueToPointer(model.ScrapeInterval),
ScrapeTimeout: conversion.StringValueToPointer(model.ScrapeTimeout),
// potentially lossy conversion, depending on the allowed range for sample_limit
SampleLimit: utils.Ptr(float64(model.SampleLimit.ValueInt64())),
SampleLimit: sdkUtils.Ptr(float64(model.SampleLimit.ValueInt64())),
Scheme: observability.UpdateScrapeConfigPayloadGetSchemeAttributeType(conversion.StringValueToPointer(model.Scheme)),
}
setDefaultsUpdateScrapeConfig(&sc, model)
@ -839,12 +833,12 @@ func setDefaultsUpdateScrapeConfig(sc *observability.UpdateScrapeConfigPayload,
sc.Scheme = observability.UpdateScrapeConfigPayloadGetSchemeAttributeType(DefaultScheme.Ptr())
}
if model.ScrapeInterval.IsNull() || model.ScrapeInterval.IsUnknown() {
sc.ScrapeInterval = utils.Ptr(DefaultScrapeInterval)
sc.ScrapeInterval = sdkUtils.Ptr(DefaultScrapeInterval)
}
if model.ScrapeTimeout.IsNull() || model.ScrapeTimeout.IsUnknown() {
sc.ScrapeTimeout = utils.Ptr(DefaultScrapeTimeout)
sc.ScrapeTimeout = sdkUtils.Ptr(DefaultScrapeTimeout)
}
if model.SampleLimit.IsNull() || model.SampleLimit.IsUnknown() {
sc.SampleLimit = utils.Ptr(float64(DefaultSampleLimit))
sc.SampleLimit = sdkUtils.Ptr(float64(DefaultSampleLimit))
}
}