Skip to content

Commit 7b23752

Browse files
Existing Platform resources streamlined to use the new rest client structure
1 parent db462fe commit 7b23752

File tree

16 files changed

+230
-350
lines changed

16 files changed

+230
-350
lines changed

datasources/dql/data_source.go

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,10 @@ import (
2121
"context"
2222
"encoding/json"
2323

24-
"github.com/dynatrace-oss/terraform-provider-dynatrace/dynatrace/api/automation/httplog"
2524
"github.com/dynatrace-oss/terraform-provider-dynatrace/dynatrace/opt"
25+
"github.com/dynatrace-oss/terraform-provider-dynatrace/dynatrace/rest"
2626
"github.com/dynatrace-oss/terraform-provider-dynatrace/provider/config"
27-
"github.com/dynatrace/dynatrace-configuration-as-code-core/clients"
2827
"github.com/google/uuid"
29-
"golang.org/x/oauth2/clientcredentials"
3028

3129
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
3230
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
@@ -127,18 +125,7 @@ func DataSourceRead(ctx context.Context, d *schema.ResourceData, m any) diag.Dia
127125
return diag.FromErr(err)
128126
}
129127

130-
httplog.InstallRoundTripper()
131-
132-
clientsFactory := clients.Factory().
133-
WithPlatformURL(creds.OAuth.EnvironmentURL).
134-
WithOAuthCredentials(clientcredentials.Config{
135-
ClientID: creds.OAuth.ClientID,
136-
ClientSecret: creds.OAuth.ClientSecret,
137-
TokenURL: creds.OAuth.TokenURL,
138-
}).
139-
WithUserAgent("Dynatrace Terraform Provider")
140-
141-
restClient, _ := clientsFactory.CreatePlatformClient(ctx)
128+
restClient, _ := rest.CreatePlatformClient(ctx, creds.OAuth.EnvironmentURL, creds)
142129

143130
client := NewClient(restClient)
144131

dynatrace/api/automation/business_calendars/service.go

Lines changed: 31 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -20,19 +20,14 @@ package business_calendars
2020
import (
2121
"context"
2222
"encoding/json"
23-
"net/url"
24-
"time"
2523

2624
"github.com/dynatrace-oss/terraform-provider-dynatrace/dynatrace/api"
2725
tfrest "github.com/dynatrace-oss/terraform-provider-dynatrace/dynatrace/rest"
2826
"github.com/dynatrace-oss/terraform-provider-dynatrace/dynatrace/settings"
2927

3028
automationerr "github.com/dynatrace-oss/terraform-provider-dynatrace/dynatrace/api/automation"
3129
business_calendars "github.com/dynatrace-oss/terraform-provider-dynatrace/dynatrace/api/automation/business_calendars/settings"
32-
"github.com/dynatrace-oss/terraform-provider-dynatrace/dynatrace/api/automation/httplog"
33-
"github.com/dynatrace-oss/terraform-provider-dynatrace/monaco/pkg/client/auth"
3430
apiClient "github.com/dynatrace/dynatrace-configuration-as-code-core/api/clients/automation"
35-
"github.com/dynatrace/dynatrace-configuration-as-code-core/api/rest"
3631
"github.com/dynatrace/dynatrace-configuration-as-code-core/clients/automation"
3732
)
3833

@@ -44,23 +39,21 @@ type service struct {
4439
credentials *tfrest.Credentials
4540
}
4641

47-
func (me *service) client(ctx context.Context) *automation.Client {
48-
httplog.InstallRoundTripper()
49-
httpClient := auth.NewOAuthClient(ctx, auth.OauthCredentials{
50-
ClientID: me.credentials.OAuth.ClientID,
51-
ClientSecret: me.credentials.OAuth.ClientSecret,
52-
TokenURL: me.credentials.OAuth.TokenURL,
53-
})
54-
u, _ := url.Parse(me.credentials.OAuth.EnvironmentURL)
55-
56-
restClient := rest.NewClient(u, httpClient, rest.WithRateLimiter(), rest.WithRetryOptions(&rest.RetryOptions{MaxRetries: 30, DelayAfterRetry: 10 * time.Second, ShouldRetryFunc: rest.RetryIfTooManyRequests}))
57-
restClient.SetHeader("User-Agent", "Dynatrace Terraform Provider")
58-
return automation.NewClient(restClient)
42+
func (me *service) client(ctx context.Context) (*automation.Client, error) {
43+
platformClient, err := tfrest.CreatePlatformClient(ctx, me.credentials.OAuth.EnvironmentURL, me.credentials)
44+
if err != nil {
45+
return nil, err
46+
}
47+
return automation.NewClient(platformClient), nil
5948
}
6049

6150
func (me *service) Get(ctx context.Context, id string, v *business_calendars.Settings) (err error) {
51+
client, err := me.client(ctx)
52+
if err != nil {
53+
return err
54+
}
6255
var response automation.Response
63-
if response, err = me.client(ctx).Get(ctx, apiClient.BusinessCalendars, id); err != nil {
56+
if response, err = client.Get(ctx, apiClient.BusinessCalendars, id); err != nil {
6457
return err
6558
}
6659
if response.StatusCode != 200 {
@@ -83,7 +76,11 @@ type BusinessCalendarStub struct {
8376
}
8477

8578
func (me *service) List(ctx context.Context) (api.Stubs, error) {
86-
listResponse, err := me.client(ctx).List(ctx, apiClient.BusinessCalendars)
79+
client, err := me.client(ctx)
80+
if err != nil {
81+
return nil, err
82+
}
83+
listResponse, err := client.List(ctx, apiClient.BusinessCalendars)
8784
if err != nil {
8885
return nil, err
8986
}
@@ -106,12 +103,16 @@ func (me *service) Validate(v *business_calendars.Settings) error {
106103
}
107104

108105
func (me *service) Create(ctx context.Context, v *business_calendars.Settings) (stub *api.Stub, err error) {
106+
client, err := me.client(ctx)
107+
if err != nil {
108+
return nil, err
109+
}
109110
var data []byte
110111
if data, err = json.Marshal(v); err != nil {
111112
return nil, err
112113
}
113114
var response automation.Response
114-
if response, err = me.client(ctx).Create(ctx, apiClient.BusinessCalendars, data); err != nil {
115+
if response, err = client.Create(ctx, apiClient.BusinessCalendars, data); err != nil {
115116
return nil, err
116117
}
117118
if response.StatusCode == 201 {
@@ -129,12 +130,16 @@ func (me *service) Create(ctx context.Context, v *business_calendars.Settings) (
129130
}
130131

131132
func (me *service) Update(ctx context.Context, id string, v *business_calendars.Settings) (err error) {
133+
client, err := me.client(ctx)
134+
if err != nil {
135+
return err
136+
}
132137
var data []byte
133138
if data, err = json.Marshal(v); err != nil {
134139
return err
135140
}
136141
var response automation.Response
137-
if response, err = me.client(ctx).Update(ctx, apiClient.BusinessCalendars, id, data); err != nil {
142+
if response, err = client.Update(ctx, apiClient.BusinessCalendars, id, data); err != nil {
138143
return err
139144
}
140145
if response.StatusCode == 200 {
@@ -148,7 +153,11 @@ func (me *service) Update(ctx context.Context, id string, v *business_calendars.
148153
}
149154

150155
func (me *service) Delete(ctx context.Context, id string) error {
151-
response, err := me.client(ctx).Delete(ctx, apiClient.BusinessCalendars, id)
156+
client, err := me.client(ctx)
157+
if err != nil {
158+
return err
159+
}
160+
response, err := client.Delete(ctx, apiClient.BusinessCalendars, id)
152161
if response.StatusCode == 204 || response.StatusCode == 404 {
153162
return nil
154163
}

dynatrace/api/automation/scheduling_rules/service.go

Lines changed: 31 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -20,19 +20,14 @@ package scheduling_rules
2020
import (
2121
"context"
2222
"encoding/json"
23-
"net/url"
24-
"time"
2523

2624
"github.com/dynatrace-oss/terraform-provider-dynatrace/dynatrace/api"
2725
tfrest "github.com/dynatrace-oss/terraform-provider-dynatrace/dynatrace/rest"
2826
"github.com/dynatrace-oss/terraform-provider-dynatrace/dynatrace/settings"
2927

3028
automationerr "github.com/dynatrace-oss/terraform-provider-dynatrace/dynatrace/api/automation"
31-
"github.com/dynatrace-oss/terraform-provider-dynatrace/dynatrace/api/automation/httplog"
3229
scheduling_rules "github.com/dynatrace-oss/terraform-provider-dynatrace/dynatrace/api/automation/scheduling_rules/settings"
33-
"github.com/dynatrace-oss/terraform-provider-dynatrace/monaco/pkg/client/auth"
3430
apiClient "github.com/dynatrace/dynatrace-configuration-as-code-core/api/clients/automation"
35-
"github.com/dynatrace/dynatrace-configuration-as-code-core/api/rest"
3631
"github.com/dynatrace/dynatrace-configuration-as-code-core/clients/automation"
3732
)
3833

@@ -44,22 +39,21 @@ type service struct {
4439
credentials *tfrest.Credentials
4540
}
4641

47-
func (me *service) client(ctx context.Context) *automation.Client {
48-
httplog.InstallRoundTripper()
49-
httpClient := auth.NewOAuthClient(ctx, auth.OauthCredentials{
50-
ClientID: me.credentials.OAuth.ClientID,
51-
ClientSecret: me.credentials.OAuth.ClientSecret,
52-
TokenURL: me.credentials.OAuth.TokenURL,
53-
})
54-
u, _ := url.Parse(me.credentials.OAuth.EnvironmentURL)
55-
restClient := rest.NewClient(u, httpClient, rest.WithRateLimiter(), rest.WithRetryOptions(&rest.RetryOptions{MaxRetries: 30, DelayAfterRetry: 10 * time.Second, ShouldRetryFunc: rest.RetryIfTooManyRequests}))
56-
restClient.SetHeader("User-Agent", "Dynatrace Terraform Provider")
57-
return automation.NewClient(restClient)
42+
func (me *service) client(ctx context.Context) (*automation.Client, error) {
43+
platformClient, err := tfrest.CreatePlatformClient(ctx, me.credentials.OAuth.EnvironmentURL, me.credentials)
44+
if err != nil {
45+
return nil, err
46+
}
47+
return automation.NewClient(platformClient), nil
5848
}
5949

6050
func (me *service) Get(ctx context.Context, id string, v *scheduling_rules.Settings) (err error) {
51+
client, err := me.client(ctx)
52+
if err != nil {
53+
return err
54+
}
6155
var response automation.Response
62-
if response, err = me.client(ctx).Get(ctx, apiClient.SchedulingRules, id); err != nil {
56+
if response, err = client.Get(ctx, apiClient.SchedulingRules, id); err != nil {
6357
return err
6458
}
6559
if response.StatusCode != 200 {
@@ -82,7 +76,11 @@ type SchedulingRuleStub struct {
8276
}
8377

8478
func (me *service) List(ctx context.Context) (api.Stubs, error) {
85-
listResponse, err := me.client(ctx).List(ctx, apiClient.SchedulingRules)
79+
client, err := me.client(ctx)
80+
if err != nil {
81+
return nil, err
82+
}
83+
listResponse, err := client.List(ctx, apiClient.SchedulingRules)
8684
if err != nil {
8785
return nil, err
8886
}
@@ -105,12 +103,16 @@ func (me *service) Validate(v *scheduling_rules.Settings) error {
105103
}
106104

107105
func (me *service) Create(ctx context.Context, v *scheduling_rules.Settings) (stub *api.Stub, err error) {
106+
client, err := me.client(ctx)
107+
if err != nil {
108+
return nil, err
109+
}
108110
var data []byte
109111
if data, err = json.Marshal(v); err != nil {
110112
return nil, err
111113
}
112114
var response automation.Response
113-
if response, err = me.client(ctx).Create(ctx, apiClient.SchedulingRules, data); err != nil {
115+
if response, err = client.Create(ctx, apiClient.SchedulingRules, data); err != nil {
114116
return nil, err
115117
}
116118
if response.StatusCode == 201 {
@@ -128,12 +130,16 @@ func (me *service) Create(ctx context.Context, v *scheduling_rules.Settings) (st
128130
}
129131

130132
func (me *service) Update(ctx context.Context, id string, v *scheduling_rules.Settings) (err error) {
133+
client, err := me.client(ctx)
134+
if err != nil {
135+
return err
136+
}
131137
var data []byte
132138
if data, err = json.Marshal(v); err != nil {
133139
return err
134140
}
135141
var response automation.Response
136-
if response, err = me.client(ctx).Update(ctx, apiClient.SchedulingRules, id, data); err != nil {
142+
if response, err = client.Update(ctx, apiClient.SchedulingRules, id, data); err != nil {
137143
return err
138144
}
139145
if response.StatusCode == 200 {
@@ -147,7 +153,11 @@ func (me *service) Update(ctx context.Context, id string, v *scheduling_rules.Se
147153
}
148154

149155
func (me *service) Delete(ctx context.Context, id string) error {
150-
response, err := me.client(ctx).Delete(ctx, apiClient.SchedulingRules, id)
156+
client, err := me.client(ctx)
157+
if err != nil {
158+
return err
159+
}
160+
response, err := client.Delete(ctx, apiClient.SchedulingRules, id)
151161
if response.StatusCode == 204 || response.StatusCode == 404 {
152162
return nil
153163
}

dynatrace/api/automation/workflows/service.go

Lines changed: 31 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -20,19 +20,14 @@ package workflows
2020
import (
2121
"context"
2222
"encoding/json"
23-
"net/url"
24-
"time"
2523

2624
"github.com/dynatrace-oss/terraform-provider-dynatrace/dynatrace/api"
2725
tfrest "github.com/dynatrace-oss/terraform-provider-dynatrace/dynatrace/rest"
2826
"github.com/dynatrace-oss/terraform-provider-dynatrace/dynatrace/settings"
2927

3028
automationerr "github.com/dynatrace-oss/terraform-provider-dynatrace/dynatrace/api/automation"
31-
"github.com/dynatrace-oss/terraform-provider-dynatrace/dynatrace/api/automation/httplog"
3229
workflows "github.com/dynatrace-oss/terraform-provider-dynatrace/dynatrace/api/automation/workflows/settings"
33-
"github.com/dynatrace-oss/terraform-provider-dynatrace/monaco/pkg/client/auth"
3430
apiClient "github.com/dynatrace/dynatrace-configuration-as-code-core/api/clients/automation"
35-
"github.com/dynatrace/dynatrace-configuration-as-code-core/api/rest"
3631
"github.com/dynatrace/dynatrace-configuration-as-code-core/clients/automation"
3732
)
3833

@@ -46,23 +41,21 @@ type service struct {
4641

4742
var R automation.Response
4843

49-
func (me *service) client(ctx context.Context) *automation.Client {
50-
httplog.InstallRoundTripper()
51-
httpClient := auth.NewOAuthClient(ctx, auth.OauthCredentials{
52-
ClientID: me.credentials.OAuth.ClientID,
53-
ClientSecret: me.credentials.OAuth.ClientSecret,
54-
TokenURL: me.credentials.OAuth.TokenURL,
55-
})
56-
u, _ := url.Parse(me.credentials.OAuth.EnvironmentURL)
57-
restClient := rest.NewClient(u, httpClient, rest.WithRateLimiter(), rest.WithRetryOptions(&rest.RetryOptions{MaxRetries: 30, DelayAfterRetry: 10 * time.Second, ShouldRetryFunc: rest.RetryIfTooManyRequests}))
58-
restClient.SetHeader("User-Agent", "Dynatrace Terraform Provider")
59-
return automation.NewClient(restClient)
44+
func (me *service) client(ctx context.Context) (*automation.Client, error) {
45+
platformClient, err := tfrest.CreatePlatformClient(ctx, me.credentials.OAuth.EnvironmentURL, me.credentials)
46+
if err != nil {
47+
return nil, err
48+
}
49+
return automation.NewClient(platformClient), nil
6050
}
6151

6252
func (me *service) Get(ctx context.Context, id string, v *workflows.Workflow) error {
63-
var err error
53+
client, err := me.client(ctx)
54+
if err != nil {
55+
return err
56+
}
6457
var response automation.Response
65-
if response, err = me.client(ctx).Get(ctx, apiClient.Workflows, id); err != nil {
58+
if response, err = client.Get(ctx, apiClient.Workflows, id); err != nil {
6659
return err
6760
}
6861
if response.StatusCode != 200 {
@@ -86,7 +79,11 @@ type WorkflowStub struct {
8679
}
8780

8881
func (me *service) List(ctx context.Context) (api.Stubs, error) {
89-
listResponse, err := me.client(ctx).List(ctx, apiClient.Workflows)
82+
client, err := me.client(ctx)
83+
if err != nil {
84+
return nil, err
85+
}
86+
listResponse, err := client.List(ctx, apiClient.Workflows)
9087
if err != nil {
9188
return nil, err
9289
}
@@ -109,12 +106,16 @@ func (me *service) Validate(v *workflows.Workflow) error {
109106
}
110107

111108
func (me *service) Create(ctx context.Context, v *workflows.Workflow) (stub *api.Stub, err error) {
109+
client, err := me.client(ctx)
110+
if err != nil {
111+
return nil, err
112+
}
112113
var data []byte
113114
if data, err = json.Marshal(v); err != nil {
114115
return nil, err
115116
}
116117
var response automation.Response
117-
if response, err = me.client(ctx).Create(ctx, apiClient.Workflows, data); err != nil {
118+
if response, err = client.Create(ctx, apiClient.Workflows, data); err != nil {
118119
return nil, err
119120
}
120121
if response.StatusCode == 201 {
@@ -132,12 +133,16 @@ func (me *service) Create(ctx context.Context, v *workflows.Workflow) (stub *api
132133
}
133134

134135
func (me *service) Update(ctx context.Context, id string, v *workflows.Workflow) (err error) {
136+
client, err := me.client(ctx)
137+
if err != nil {
138+
return err
139+
}
135140
var data []byte
136141
if data, err = json.Marshal(v); err != nil {
137142
return err
138143
}
139144
var response automation.Response
140-
if response, err = me.client(ctx).Update(ctx, apiClient.Workflows, id, data); err != nil {
145+
if response, err = client.Update(ctx, apiClient.Workflows, id, data); err != nil {
141146
return err
142147
}
143148
if response.StatusCode == 200 {
@@ -151,7 +156,11 @@ func (me *service) Update(ctx context.Context, id string, v *workflows.Workflow)
151156
}
152157

153158
func (me *service) Delete(ctx context.Context, id string) error {
154-
response, err := me.client(ctx).Delete(ctx, apiClient.Workflows, id)
159+
client, err := me.client(ctx)
160+
if err != nil {
161+
return err
162+
}
163+
response, err := client.Delete(ctx, apiClient.Workflows, id)
155164
if response.StatusCode == 204 || response.StatusCode == 404 {
156165
return nil
157166
}

0 commit comments

Comments
 (0)