Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 2 additions & 7 deletions .github/docs/contribution-guide/resource.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import (
"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/conversion"
"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/core"
fooUtils "github.com/stackitcloud/terraform-provider-stackit/stackit/internal/services/foo/utils"
"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/utils"

"github.com/stackitcloud/stackit-sdk-go/services/foo" // Import service "foo" from the STACKIT SDK for Go
// (...)
Expand Down Expand Up @@ -264,13 +265,7 @@ func mapFields(barResp *foo.GetBarResponse, model *Model) error {
bar := barResp.Bar
model.BarId = types.StringPointerValue(bar.BarId)

idParts := []string{
model.ProjectId.ValueString(),
model.BarId.ValueString(),
}
model.Id = types.StringValue(
strings.Join(idParts, core.Separator),
)
model.Id = utils.BuildInternalTerraformId(model.ProjectId.ValueString(), model.BarId.ValueString())

model.MyRequiredField = types.StringPointerValue(bar.MyRequiredField)
model.MyOptionalField = types.StringPointerValue(bar.MyOptionalField)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ import (
"fmt"
"strings"

"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/utils"

"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/conversion"
authorizationUtils "github.com/stackitcloud/terraform-provider-stackit/stackit/internal/services/authorization/utils"

Expand Down Expand Up @@ -281,15 +283,7 @@ func mapListMembersResponse(resp *authorization.ListMembersResponse, model *Mode
return fmt.Errorf("model input is nil")
}

idParts := []string{
model.ResourceId.ValueString(),
model.Role.ValueString(),
model.Subject.ValueString(),
}
model.Id = types.StringValue(
strings.Join(idParts, core.Separator),
)

model.Id = utils.BuildInternalTerraformId(model.ResourceId.ValueString(), model.Role.ValueString(), model.Subject.ValueString())
model.ResourceId = types.StringPointerValue(resp.ResourceId)

for _, m := range *resp.Members {
Expand Down
6 changes: 3 additions & 3 deletions stackit/internal/services/cdn/customdomain/resource.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ import (
"strings"
"time"

"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/utils"

"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/conversion"
cdnUtils "github.com/stackitcloud/terraform-provider-stackit/stackit/internal/services/cdn/utils"

Expand Down Expand Up @@ -274,9 +276,7 @@ func mapCustomDomainFields(customDomain *cdn.CustomDomain, model *CustomDomainMo
return fmt.Errorf("Status missing in response")
}

id := model.ProjectId.ValueString() + core.Separator + model.DistributionId.ValueString() + core.Separator + *customDomain.Name

model.ID = types.StringValue(id)
model.ID = utils.BuildInternalTerraformId(model.ProjectId.ValueString(), model.DistributionId.ValueString(), *customDomain.Name)
model.Status = types.StringValue(string(*customDomain.Status))

customDomainErrors := []attr.Value{}
Expand Down
4 changes: 1 addition & 3 deletions stackit/internal/services/cdn/distribution/resource.go
Original file line number Diff line number Diff line change
Expand Up @@ -447,9 +447,7 @@ func mapFields(distribution *cdn.Distribution, model *Model) error {
return fmt.Errorf("Status missing in response")
}

id := *distribution.ProjectId + core.Separator + *distribution.Id

model.ID = types.StringValue(id)
model.ID = utils.BuildInternalTerraformId(*distribution.ProjectId, *distribution.Id)
model.DistributionId = types.StringValue(*distribution.Id)
model.ProjectId = types.StringValue(*distribution.ProjectId)
model.Status = types.StringValue(string(distribution.GetStatus()))
Expand Down
9 changes: 2 additions & 7 deletions stackit/internal/services/dns/recordset/resource.go
Original file line number Diff line number Diff line change
Expand Up @@ -420,13 +420,8 @@ func mapFields(ctx context.Context, recordSetResp *dns.RecordSetResponse, model

model.Records = recordsTF
}
idParts := []string{
model.ProjectId.ValueString(),
model.ZoneId.ValueString(),
recordSetId,
}
model.Id = types.StringValue(
strings.Join(idParts, core.Separator),
model.Id = utils.BuildInternalTerraformId(
model.ProjectId.ValueString(), model.ZoneId.ValueString(), recordSetId,
)
model.RecordSetId = types.StringPointerValue(recordSet.Id)
model.Active = types.BoolPointerValue(recordSet.Active)
Expand Down
8 changes: 1 addition & 7 deletions stackit/internal/services/dns/zone/resource.go
Original file line number Diff line number Diff line change
Expand Up @@ -487,13 +487,7 @@ func mapFields(ctx context.Context, zoneResp *dns.ZoneResponse, model *Model) er
return fmt.Errorf("zone id not present")
}

idParts := []string{
model.ProjectId.ValueString(),
zoneId,
}
model.Id = types.StringValue(
strings.Join(idParts, core.Separator),
)
model.Id = utils.BuildInternalTerraformId(model.ProjectId.ValueString(), zoneId)

if z.Primaries == nil {
model.Primaries = types.ListNull(types.StringType)
Expand Down
5 changes: 3 additions & 2 deletions stackit/internal/services/git/instance/resource.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ import (
"net/http"
"strings"

"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/utils"

"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/conversion"
gitUtils "github.com/stackitcloud/terraform-provider-stackit/stackit/internal/services/git/utils"

Expand Down Expand Up @@ -306,8 +308,7 @@ func mapFields(resp *git.Instance, model *Model) error {
}

// Build the ID by combining the project ID and instance id and assign the model's fields.
idParts := []string{model.ProjectId.ValueString(), *resp.Id}
model.Id = types.StringValue(strings.Join(idParts, core.Separator))
model.Id = utils.BuildInternalTerraformId(model.ProjectId.ValueString(), *resp.Id)
model.Url = types.StringPointerValue(resp.Url)
model.Name = types.StringPointerValue(resp.Name)
model.InstanceId = types.StringPointerValue(resp.Id)
Expand Down
10 changes: 3 additions & 7 deletions stackit/internal/services/iaas/affinitygroup/resource.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ import (
"regexp"
"strings"

"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/utils"

iaasUtils "github.com/stackitcloud/terraform-provider-stackit/stackit/internal/services/iaas/utils"

"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/conversion"
Expand Down Expand Up @@ -301,13 +303,7 @@ func mapFields(ctx context.Context, affinityGroupResp *iaas.AffinityGroup, model
return fmt.Errorf("affinity group id not present")
}

idParts := []string{
model.ProjectId.ValueString(),
affinityGroupId,
}
model.Id = types.StringValue(
strings.Join(idParts, core.Separator),
)
model.Id = utils.BuildInternalTerraformId(model.ProjectId.ValueString(), affinityGroupId)

if affinityGroupResp.Members != nil && len(*affinityGroupResp.Members) > 0 {
members, diags := types.ListValueFrom(ctx, types.StringType, *affinityGroupResp.Members)
Expand Down
9 changes: 1 addition & 8 deletions stackit/internal/services/iaas/image/datasource.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import (
"context"
"fmt"
"net/http"
"strings"

"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/conversion"
iaasUtils "github.com/stackitcloud/terraform-provider-stackit/stackit/internal/services/iaas/utils"
Expand Down Expand Up @@ -265,13 +264,7 @@ func mapDataSourceFields(ctx context.Context, imageResp *iaas.Image, model *Data
return fmt.Errorf("image id not present")
}

idParts := []string{
model.ProjectId.ValueString(),
imageId,
}
model.Id = types.StringValue(
strings.Join(idParts, core.Separator),
)
model.Id = utils.BuildInternalTerraformId(model.ProjectId.ValueString(), imageId)

// Map config
var configModel = &configModel{}
Expand Down
10 changes: 3 additions & 7 deletions stackit/internal/services/iaas/image/resource.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ import (
"strings"
"time"

"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/utils"

iaasUtils "github.com/stackitcloud/terraform-provider-stackit/stackit/internal/services/iaas/utils"

"github.com/hashicorp/terraform-plugin-framework/attr"
Expand Down Expand Up @@ -603,13 +605,7 @@ func mapFields(ctx context.Context, imageResp *iaas.Image, model *Model) error {
return fmt.Errorf("image id not present")
}

idParts := []string{
model.ProjectId.ValueString(),
imageId,
}
model.Id = types.StringValue(
strings.Join(idParts, core.Separator),
)
model.Id = utils.BuildInternalTerraformId(model.ProjectId.ValueString(), imageId)

// Map config
var configModel = &configModel{}
Expand Down
9 changes: 1 addition & 8 deletions stackit/internal/services/iaas/network/datasource.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import (
"fmt"
"net"
"net/http"
"strings"

"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/conversion"
iaasUtils "github.com/stackitcloud/terraform-provider-stackit/stackit/internal/services/iaas/utils"
Expand Down Expand Up @@ -245,13 +244,7 @@ func mapDataSourceFields(ctx context.Context, networkResp *iaas.Network, model *
return fmt.Errorf("network id not present")
}

idParts := []string{
model.ProjectId.ValueString(),
networkId,
}
model.Id = types.StringValue(
strings.Join(idParts, core.Separator),
)
model.Id = utils.BuildInternalTerraformId(model.ProjectId.ValueString(), networkId)

labels, err := iaasUtils.MapLabels(ctx, networkResp.Labels, model.Labels)
if err != nil {
Expand Down
8 changes: 1 addition & 7 deletions stackit/internal/services/iaas/network/resource.go
Original file line number Diff line number Diff line change
Expand Up @@ -503,13 +503,7 @@ func mapFields(ctx context.Context, networkResp *iaas.Network, model *Model) err
return fmt.Errorf("network id not present")
}

idParts := []string{
model.ProjectId.ValueString(),
networkId,
}
model.Id = types.StringValue(
strings.Join(idParts, core.Separator),
)
model.Id = utils.BuildInternalTerraformId(model.ProjectId.ValueString(), networkId)

labels, err := iaasUtils.MapLabels(ctx, networkResp.Labels, model.Labels)
if err != nil {
Expand Down
8 changes: 1 addition & 7 deletions stackit/internal/services/iaas/networkarea/resource.go
Original file line number Diff line number Diff line change
Expand Up @@ -477,13 +477,7 @@ func mapFields(ctx context.Context, networkAreaResp *iaas.NetworkArea, networkAr
return fmt.Errorf("network area id not present")
}

idParts := []string{
model.OrganizationId.ValueString(),
networkAreaId,
}
model.Id = types.StringValue(
strings.Join(idParts, core.Separator),
)
model.Id = utils.BuildInternalTerraformId(model.OrganizationId.ValueString(), networkAreaId)

if networkAreaResp.Ipv4 == nil || networkAreaResp.Ipv4.DefaultNameservers == nil {
model.DefaultNameservers = types.ListNull(types.StringType)
Expand Down
11 changes: 3 additions & 8 deletions stackit/internal/services/iaas/networkarearoute/resource.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ import (
"net/http"
"strings"

"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/utils"

iaasUtils "github.com/stackitcloud/terraform-provider-stackit/stackit/internal/services/iaas/utils"

"github.com/hashicorp/terraform-plugin-framework/path"
Expand Down Expand Up @@ -370,14 +372,7 @@ func mapFields(ctx context.Context, networkAreaRoute *iaas.Route, model *Model)
return fmt.Errorf("network area route id not present")
}

idParts := []string{
model.OrganizationId.ValueString(),
model.NetworkAreaId.ValueString(),
networkAreaRouteId,
}
model.Id = types.StringValue(
strings.Join(idParts, core.Separator),
)
model.Id = utils.BuildInternalTerraformId(model.OrganizationId.ValueString(), model.NetworkAreaId.ValueString(), networkAreaRouteId)

labels, err := iaasUtils.MapLabels(ctx, networkAreaRoute.Labels, model.Labels)
if err != nil {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -423,14 +423,7 @@ func mapFields(ctx context.Context, networkInterfaceResp *iaas.NIC, model *Model
return fmt.Errorf("network interface id not present")
}

idParts := []string{
model.ProjectId.ValueString(),
model.NetworkId.ValueString(),
networkInterfaceId,
}
model.Id = types.StringValue(
strings.Join(idParts, core.Separator),
)
model.Id = utils.BuildInternalTerraformId(model.ProjectId.ValueString(), model.NetworkId.ValueString(), networkInterfaceId)

respAllowedAddresses := []string{}
var diags diag.Diagnostics
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ import (
"net/http"
"strings"

"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/utils"

"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/conversion"
iaasUtils "github.com/stackitcloud/terraform-provider-stackit/stackit/internal/services/iaas/utils"

Expand Down Expand Up @@ -142,14 +144,7 @@ func (r *networkInterfaceAttachResource) Create(ctx context.Context, req resourc
return
}

idParts := []string{
projectId,
serverId,
networkInterfaceId,
}
model.Id = types.StringValue(
strings.Join(idParts, core.Separator),
)
model.Id = utils.BuildInternalTerraformId(projectId, serverId, networkInterfaceId)

// Set state to fully populated data
diags = resp.State.Set(ctx, model)
Expand Down
10 changes: 3 additions & 7 deletions stackit/internal/services/iaas/publicip/resource.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ import (
"net/http"
"strings"

"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/utils"

iaasUtils "github.com/stackitcloud/terraform-provider-stackit/stackit/internal/services/iaas/utils"

"github.com/hashicorp/terraform-plugin-framework/path"
Expand Down Expand Up @@ -330,13 +332,7 @@ func mapFields(ctx context.Context, publicIpResp *iaas.PublicIp, model *Model) e
return fmt.Errorf("public IP id not present")
}

idParts := []string{
model.ProjectId.ValueString(),
publicIpId,
}
model.Id = types.StringValue(
strings.Join(idParts, core.Separator),
)
model.Id = utils.BuildInternalTerraformId(model.ProjectId.ValueString(), publicIpId)

labels, err := iaasUtils.MapLabels(ctx, publicIpResp.Labels, model.Labels)
if err != nil {
Expand Down
12 changes: 4 additions & 8 deletions stackit/internal/services/iaas/publicipassociate/resource.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ import (
"net/http"
"strings"

"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/utils"

iaasUtils "github.com/stackitcloud/terraform-provider-stackit/stackit/internal/services/iaas/utils"

"github.com/hashicorp/terraform-plugin-framework/path"
Expand Down Expand Up @@ -306,15 +308,9 @@ func mapFields(publicIpResp *iaas.PublicIp, model *Model) error {
model.NetworkInterfaceId = types.StringNull()
}

idParts := []string{
model.ProjectId.ValueString(),
publicIpId,
model.NetworkInterfaceId.ValueString(),
}
model.Id = types.StringValue(
strings.Join(idParts, core.Separator),
model.Id = utils.BuildInternalTerraformId(
model.ProjectId.ValueString(), publicIpId, model.NetworkInterfaceId.ValueString(),
)

model.PublicIpId = types.StringValue(publicIpId)
model.Ip = types.StringPointerValue(publicIpResp.Ip)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import (
"fmt"
"net/http"
"sort"
"strings"

"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/conversion"
iaasUtils "github.com/stackitcloud/terraform-provider-stackit/stackit/internal/services/iaas/utils"
Expand Down Expand Up @@ -175,8 +174,7 @@ func mapPublicIpRanges(_ context.Context, publicIpRanges *[]iaas.PublicNetwork,
// Sort to prevent unnecessary recreation of dependent resources due to order changes.
sort.Strings(apiIpRanges)

modelId := strings.Join(apiIpRanges, ",")
model.Id = types.StringValue(modelId)
model.Id = utils.BuildInternalTerraformId(apiIpRanges...)

var ipRangesList []attr.Value
for _, cidr := range apiIpRanges {
Expand Down
Loading