Skip to content

Commit

Permalink
refactor: Use bundle instead of SDK for Cloud API
Browse files Browse the repository at this point in the history
  • Loading branch information
adeatcu-ionos committed Feb 7, 2025
1 parent 7c6f62d commit f0562f7
Show file tree
Hide file tree
Showing 357 changed files with 27,040 additions and 37,808 deletions.
1 change: 1 addition & 0 deletions docs/resources/server.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@

---
subcategory: "Compute Engine"
layout: "ionoscloud"
Expand Down
4 changes: 3 additions & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ module github.com/ionos-cloud/terraform-provider-ionoscloud/v6

go 1.22.0

replace github.com/ionos-cloud/sdk-go-bundle/products/cloud/v2 => ./../sdks/generated_locally/cloud-bundle

require (
github.com/aws/aws-sdk-go v1.55.5
github.com/cenkalti/backoff/v4 v4.3.0
Expand All @@ -17,6 +19,7 @@ require (
github.com/iancoleman/strcase v0.3.0
github.com/ionos-cloud/sdk-go-api-gateway v1.0.0
github.com/ionos-cloud/sdk-go-bundle/products/cdn/v2 v2.1.0
github.com/ionos-cloud/sdk-go-bundle/products/cloud/v2 v2.0.0-00010101000000-000000000000
github.com/ionos-cloud/sdk-go-bundle/products/logging/v2 v2.1.1
github.com/ionos-cloud/sdk-go-bundle/products/monitoring/v2 v2.0.0
github.com/ionos-cloud/sdk-go-bundle/products/vpn/v2 v2.0.2
Expand All @@ -34,7 +37,6 @@ require (
github.com/ionos-cloud/sdk-go-object-storage v1.1.0
github.com/ionos-cloud/sdk-go-object-storage-management v1.0.0
github.com/ionos-cloud/sdk-go-vm-autoscaling v1.0.1
github.com/ionos-cloud/sdk-go/v6 v6.3.2
github.com/mitchellh/go-homedir v1.1.0
golang.org/x/crypto v0.26.0
gopkg.in/yaml.v3 v3.0.1
Expand Down
2 changes: 0 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -150,8 +150,6 @@ github.com/ionos-cloud/sdk-go-object-storage-management v1.0.0 h1:pHRKSNT+cCcr5g
github.com/ionos-cloud/sdk-go-object-storage-management v1.0.0/go.mod h1:BnEapZcQp6FEirEin6pY9NICXD1mCrI4sJ+wOSKpyCY=
github.com/ionos-cloud/sdk-go-vm-autoscaling v1.0.1 h1:KABL25MC7DrIHn9lQzKSPkwXhqvRkPYtFd+1HEogmAE=
github.com/ionos-cloud/sdk-go-vm-autoscaling v1.0.1/go.mod h1:Q5d1R6silarsX5jWLPBHd/1PSC5zZNf2ONvXB+fygC0=
github.com/ionos-cloud/sdk-go/v6 v6.3.2 h1:2mUmrZZz6cPyT9IRX0T8fBLc/7XU/eTxP2Y5tS7/09k=
github.com/ionos-cloud/sdk-go/v6 v6.3.2/go.mod h1:SXrO9OGyWjd2rZhAhEpdYN6VUAODzzqRdqA9BCviQtI=
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A=
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo=
github.com/jhump/protoreflect v1.15.1 h1:HUMERORf3I3ZdX05WaQ6MIpd/NJ434hTp5YiKgfCL6c=
Expand Down
11 changes: 5 additions & 6 deletions internal/framework/provider/provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@ import (
"github.com/hashicorp/terraform-plugin-framework/types"
"github.com/hashicorp/terraform-plugin-sdk/v2/meta"

ionoscloud "github.com/ionos-cloud/sdk-go/v6"
ionoscloud "github.com/ionos-cloud/sdk-go-bundle/products/cloud/v2"
"github.com/ionos-cloud/sdk-go-bundle/shared"

"github.com/ionos-cloud/terraform-provider-ionoscloud/v6/internal/framework/services/monitoring"
"github.com/ionos-cloud/terraform-provider-ionoscloud/v6/internal/framework/services/objectstorage"
Expand Down Expand Up @@ -241,18 +242,16 @@ func (p *IonosCloudProvider) Configure(ctx context.Context, req provider.Configu
}

func newCloudapiClient(username, password, token, endpoint, version, terraformVersion string, insecure bool) *ionoscloud.APIClient {
newConfig := ionoscloud.NewConfiguration(username, password, token, endpoint)
newConfig := shared.NewConfiguration(username, password, token, endpoint)
newConfig.UserAgent = fmt.Sprintf(
"terraform-provider/%s_ionos-cloud-sdk-go/%s_hashicorp-terraform/%s_terraform-plugin-sdk/%s_os/%s_arch/%s",
version, ionoscloud.Version, terraformVersion, meta.SDKVersionString(), runtime.GOOS, runtime.GOARCH, //nolint:staticcheck
)
if os.Getenv(constant.IonosDebug) != "" {
newConfig.Debug = true
}
newConfig.MaxRetries = constant.MaxRetries
newConfig.WaitTime = constant.MaxWaitTime
newConfig.HTTPClient = &http.Client{Transport: utils.CreateTransport(insecure)}
client := ionoscloud.NewAPIClient(newConfig)
client.GetConfig().HTTPClient = &http.Client{Transport: utils.CreateTransport(insecure)}

return client
}

Expand Down
7 changes: 4 additions & 3 deletions ionoscloud/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@ import (
"runtime"

"github.com/hashicorp/terraform-plugin-sdk/v2/meta"
ionoscloud "github.com/ionos-cloud/sdk-go/v6"
ionoscloud "github.com/ionos-cloud/sdk-go-bundle/products/cloud/v2"
"github.com/ionos-cloud/sdk-go-bundle/shared"
)

// Config represents
Expand All @@ -22,9 +23,9 @@ type Config struct {
func (c *Config) Client(terraformVersion string) (*ionoscloud.APIClient, error) {
var client *ionoscloud.APIClient
if c.Token != "" {
client = ionoscloud.NewAPIClient(ionoscloud.NewConfiguration("", "", c.Token, c.Endpoint))
client = ionoscloud.NewAPIClient(shared.NewConfiguration("", "", c.Token, c.Endpoint))
} else {
client = ionoscloud.NewAPIClient(ionoscloud.NewConfiguration(c.Username, c.Password, "", c.Endpoint))
client = ionoscloud.NewAPIClient(shared.NewConfiguration(c.Username, c.Password, "", c.Endpoint))
}

client.GetConfig().UserAgent = fmt.Sprintf(
Expand Down
11 changes: 6 additions & 5 deletions ionoscloud/data_source_application_loadbalancer.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,13 @@ import (
"log"
"strings"

"github.com/ionos-cloud/sdk-go-bundle/shared"
"github.com/ionos-cloud/terraform-provider-ionoscloud/v6/services"
cloudapiflowlog "github.com/ionos-cloud/terraform-provider-ionoscloud/v6/services/cloudapi/flowlog"

"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
ionoscloud "github.com/ionos-cloud/sdk-go/v6"
ionoscloud "github.com/ionos-cloud/sdk-go-bundle/products/cloud/v2"
)

func dataSourceApplicationLoadBalancer() *schema.Resource {
Expand Down Expand Up @@ -110,7 +111,7 @@ func dataSourceApplicationLoadBalancerRead(ctx context.Context, d *schema.Resour

var applicationLoadBalancer ionoscloud.ApplicationLoadBalancer
var err error
var apiResponse *ionoscloud.APIResponse
var apiResponse *shared.APIResponse

if idOk {
/* search by ID */
Expand All @@ -136,7 +137,7 @@ func dataSourceApplicationLoadBalancerRead(ctx context.Context, d *schema.Resour
return diag.FromErr(fmt.Errorf("an error occurred while fetching application load balancers: %w", err))
}

results = *applicationLoadBalancers.Items
results = applicationLoadBalancers.Items
} else {
applicationLoadBalancers, apiResponse, err := client.ApplicationLoadBalancersApi.DatacentersApplicationloadbalancersGet(ctx, datacenterId).Depth(1).Execute()
logApiRequestTime(apiResponse)
Expand All @@ -146,8 +147,8 @@ func dataSourceApplicationLoadBalancerRead(ctx context.Context, d *schema.Resour
}

if applicationLoadBalancers.Items != nil {
for _, alb := range *applicationLoadBalancers.Items {
if alb.Properties != nil && alb.Properties.Name != nil && strings.EqualFold(*alb.Properties.Name, name) {
for _, alb := range applicationLoadBalancers.Items {
if strings.EqualFold(alb.Properties.Name, name) {
tmpAlb, apiResponse, err := client.ApplicationLoadBalancersApi.DatacentersApplicationloadbalancersFindByApplicationLoadBalancerId(ctx, datacenterId, *alb.Id).Execute()
logApiRequestTime(apiResponse)
if err != nil {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,13 @@ import (
"log"
"strings"

"github.com/ionos-cloud/sdk-go-bundle/shared"
"github.com/ionos-cloud/terraform-provider-ionoscloud/v6/services"

"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
ionoscloud "github.com/ionos-cloud/sdk-go/v6"
ionoscloud "github.com/ionos-cloud/sdk-go-bundle/products/cloud/v2"
)

func dataSourceApplicationLoadBalancerForwardingRule() *schema.Resource {
Expand Down Expand Up @@ -183,7 +184,7 @@ func dataSourceApplicationLoadBalancerForwardingRuleRead(ctx context.Context, d

var applicationLoadBalancerForwardingRule ionoscloud.ApplicationLoadBalancerForwardingRule
var err error
var apiResponse *ionoscloud.APIResponse
var apiResponse *shared.APIResponse

if idOk {
/* search by ID */
Expand All @@ -209,7 +210,7 @@ func dataSourceApplicationLoadBalancerForwardingRuleRead(ctx context.Context, d
return diag.FromErr(fmt.Errorf("an error occurred while fetching application loadbalancer forwarding rules: %w", err))
}

results = *applicationLoadBalancersForwardingRules.Items
results = applicationLoadBalancersForwardingRules.Items
} else {
applicationLoadBalancersForwardingRules, apiResponse, err := client.ApplicationLoadBalancersApi.DatacentersApplicationloadbalancersForwardingrulesGet(ctx, datacenterId, albId).Depth(1).Execute()
logApiRequestTime(apiResponse)
Expand All @@ -219,8 +220,8 @@ func dataSourceApplicationLoadBalancerForwardingRuleRead(ctx context.Context, d
}

if applicationLoadBalancersForwardingRules.Items != nil {
for _, albFr := range *applicationLoadBalancersForwardingRules.Items {
if albFr.Properties != nil && albFr.Properties.Name != nil && strings.EqualFold(*albFr.Properties.Name, name) {
for _, albFr := range applicationLoadBalancersForwardingRules.Items {
if strings.EqualFold(albFr.Properties.Name, name) {
tmpAlbFr, apiResponse, err := client.ApplicationLoadBalancersApi.DatacentersApplicationloadbalancersForwardingrulesFindByForwardingRuleId(ctx, datacenterId, albId, *albFr.Id).Execute()
logApiRequestTime(apiResponse)
if err != nil {
Expand Down
15 changes: 7 additions & 8 deletions ionoscloud/data_source_backup_unit.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,12 @@ import (
"fmt"
"log"

"github.com/ionos-cloud/sdk-go-bundle/shared"
"github.com/ionos-cloud/terraform-provider-ionoscloud/v6/services"

"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
ionoscloud "github.com/ionos-cloud/sdk-go/v6"
ionoscloud "github.com/ionos-cloud/sdk-go-bundle/products/cloud/v2"
)

func dataSourceBackupUnit() *schema.Resource {
Expand Down Expand Up @@ -57,7 +58,7 @@ func dataSourceBackupUnitRead(ctx context.Context, d *schema.ResourceData, meta
}
var backupUnit ionoscloud.BackupUnit
var err error
var apiResponse *ionoscloud.APIResponse
var apiResponse *shared.APIResponse

if idOk {
/* search by ID */
Expand All @@ -66,14 +67,12 @@ func dataSourceBackupUnitRead(ctx context.Context, d *schema.ResourceData, meta
if err != nil {
return diag.FromErr(fmt.Errorf("an error occurred while fetching the backup unit %s: %w", id.(string), err))
}
if backupUnit.Properties != nil {
log.Printf("[INFO] Got backupUnit [Name=%s] [Id=%s]", *backupUnit.Properties.Name, *backupUnit.Id)
}
log.Printf("[INFO] Got backupUnit [Name=%s] [Id=%s]", backupUnit.Properties.Name, *backupUnit.Id)
} else {
/* search by name */
var backupUnits ionoscloud.BackupUnits

backupUnits, apiResponse, err := client.BackupUnitsApi.BackupunitsGet(ctx).Depth(1).Execute()
backupUnits, apiResponse, err := client.BackupServiceApi.BackupunitsGet(ctx).Depth(1).Execute()
logApiRequestTime(apiResponse)

if err != nil {
Expand All @@ -82,8 +81,8 @@ func dataSourceBackupUnitRead(ctx context.Context, d *schema.ResourceData, meta

var results []ionoscloud.BackupUnit
if backupUnits.Items != nil {
for _, bu := range *backupUnits.Items {
if bu.Properties != nil && bu.Properties.Name != nil && *bu.Properties.Name == name.(string) {
for _, bu := range backupUnits.Items {
if bu.Properties.Name == name.(string) {
tmpBackupUnit, apiResponse, err := BackupUnitFindByID(ctx, *bu.Id, client)
logApiRequestTime(apiResponse)
if err != nil {
Expand Down
Loading

0 comments on commit f0562f7

Please sign in to comment.