Skip to content

Commit fca3bf8

Browse files
committed
PolarDB: Improves the invoking api method and supports refreshing credential automatically
1 parent 7acddab commit fca3bf8

10 files changed

+57
-185
lines changed

alicloud/connectivity/client.go

Lines changed: 5 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -378,6 +378,11 @@ func (client *AliyunClient) WithPolarDBClient(do func(*polardb.Client) (interfac
378378
polarDBconn.AppendUserAgent(Module, client.config.ConfigurationSource)
379379
polarDBconn.AppendUserAgent(TerraformTraceId, client.config.TerraformTraceId)
380380
client.polarDBconn = polarDBconn
381+
} else {
382+
err := client.polarDBconn.InitWithOptions(client.config.RegionId, client.getSdkConfig(), client.config.getAuthCredential(true))
383+
if err != nil {
384+
return nil, fmt.Errorf("unable to initialize the PolarDB client: %#v", err)
385+
}
381386
}
382387

383388
return do(client.polarDBconn)
@@ -528,32 +533,6 @@ func (client *AliyunClient) NewRdsClient() (*rpc.Client, error) {
528533
return conn, nil
529534
}
530535

531-
func (client *AliyunClient) NewPolarDBClient() (*rpc.Client, error) {
532-
productCode := "polardb"
533-
endpoint := ""
534-
if v, ok := client.config.Endpoints.Load(productCode); !ok || v.(string) == "" {
535-
if err := client.loadEndpoint(productCode); err != nil {
536-
return nil, err
537-
}
538-
}
539-
if v, ok := client.config.Endpoints.Load(productCode); ok && v.(string) != "" {
540-
endpoint = v.(string)
541-
}
542-
if endpoint == "" {
543-
return nil, fmt.Errorf("[ERROR] missing the product %s endpoint.", productCode)
544-
}
545-
546-
sdkConfig := client.teaSdkConfig
547-
sdkConfig.SetEndpoint(endpoint)
548-
549-
conn, err := rpc.NewClient(&sdkConfig)
550-
if err != nil {
551-
return nil, fmt.Errorf("unable to initialize the %s client: %#v", productCode, err)
552-
}
553-
554-
return conn, nil
555-
}
556-
557536
func (client *AliyunClient) WithCenClient(do func(*cbn.Client) (interface{}, error)) (interface{}, error) {
558537
// Initialize the CEN client if necessary
559538
if client.cenconn == nil {

alicloud/data_source_alicloud_polardb_global_database_networks.go

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import (
55
"time"
66

77
"github.com/PaesslerAG/jsonpath"
8-
util "github.com/alibabacloud-go/tea-utils/service"
98
"github.com/aliyun/terraform-provider-alicloud/alicloud/connectivity"
109
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
1110
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
@@ -145,16 +144,11 @@ func dataSourceAlicloudPolarDBGlobalDatabaseNetworksRead(d *schema.ResourceData,
145144
status, statusOk := d.GetOk("status")
146145

147146
var response map[string]interface{}
148-
conn, err := client.NewPolarDBClient()
149-
if err != nil {
150-
return WrapError(err)
151-
}
147+
var err error
152148
for {
153-
runtime := util.RuntimeOptions{}
154-
runtime.SetAutoretry(true)
155149
wait := incrementalWait(3*time.Second, 3*time.Second)
156150
err = resource.Retry(5*time.Minute, func() *resource.RetryError {
157-
response, err = conn.DoRequest(StringPointer(action), nil, StringPointer("POST"), StringPointer("2017-08-01"), StringPointer("AK"), nil, request, &runtime)
151+
response, err = client.RpcPost("polardb", "2017-08-01", action, nil, request, true)
158152
if err != nil {
159153
if NeedRetry(err) {
160154
wait()

alicloud/data_source_alicloud_polardb_parameter_groups.go

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import (
66
"time"
77

88
"github.com/PaesslerAG/jsonpath"
9-
util "github.com/alibabacloud-go/tea-utils/service"
109
"github.com/aliyun/terraform-provider-alicloud/alicloud/connectivity"
1110
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
1211
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
@@ -135,15 +134,10 @@ func dataSourceAlicloudPolarDBParameterGroupsRead(d *schema.ResourceData, meta i
135134
}
136135
}
137136
var response map[string]interface{}
138-
conn, err := client.NewPolarDBClient()
139-
if err != nil {
140-
return WrapError(err)
141-
}
142-
runtime := util.RuntimeOptions{}
143-
runtime.SetAutoretry(true)
137+
var err error
144138
wait := incrementalWait(3*time.Second, 3*time.Second)
145139
err = resource.Retry(5*time.Minute, func() *resource.RetryError {
146-
response, err = conn.DoRequest(StringPointer(action), nil, StringPointer("POST"), StringPointer("2017-08-01"), StringPointer("AK"), nil, request, &runtime)
140+
response, err = client.RpcPost("polardb", "2017-08-01", action, nil, request, true)
147141
if err != nil {
148142
if NeedRetry(err) {
149143
wait()

alicloud/resource_alicloud_polardb_backup_policy.go

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@ import (
77

88
"github.com/hashicorp/terraform-plugin-sdk/helper/validation"
99

10-
util "github.com/alibabacloud-go/tea-utils/service"
11-
1210
"github.com/aliyun/terraform-provider-alicloud/alicloud/connectivity"
1311
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
1412
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
@@ -201,7 +199,7 @@ func resourceAlicloudPolarDBBackupPolicyUpdate(d *schema.ResourceData, meta inte
201199

202200
client := meta.(*connectivity.AliyunClient)
203201
var response map[string]interface{}
204-
202+
var err error
205203
update := false
206204
request := map[string]interface{}{
207205
"DBClusterId": d.Id(),
@@ -273,13 +271,9 @@ func resourceAlicloudPolarDBBackupPolicyUpdate(d *schema.ResourceData, meta inte
273271
}
274272
if update {
275273
action := "ModifyBackupPolicy"
276-
conn, err := client.NewPolarDBClient()
277-
if err != nil {
278-
return WrapError(err)
279-
}
280274
wait := incrementalWait(3*time.Second, 3*time.Second)
281275
err = resource.Retry(d.Timeout(schema.TimeoutUpdate), func() *resource.RetryError {
282-
response, err = conn.DoRequest(StringPointer(action), nil, StringPointer("POST"), StringPointer("2017-08-01"), StringPointer("AK"), nil, request, &util.RuntimeOptions{})
276+
response, err = client.RpcPost("polardb", "2017-08-01", action, nil, request, false)
283277
if err != nil {
284278
if NeedRetry(err) {
285279
wait()
@@ -308,13 +302,9 @@ func resourceAlicloudPolarDBBackupPolicyUpdate(d *schema.ResourceData, meta inte
308302
}
309303

310304
action := "ModifyLogBackupPolicy"
311-
conn, err := client.NewPolarDBClient()
312-
if err != nil {
313-
return WrapError(err)
314-
}
315305
wait := incrementalWait(3*time.Second, 3*time.Second)
316306
err = resource.Retry(d.Timeout(schema.TimeoutUpdate), func() *resource.RetryError {
317-
response, err = conn.DoRequest(StringPointer(action), nil, StringPointer("POST"), StringPointer("2017-08-01"), StringPointer("AK"), nil, request, &util.RuntimeOptions{})
307+
response, err = client.RpcPost("polardb", "2017-08-01", action, nil, request, false)
318308
if err != nil {
319309
if NeedRetry(err) {
320310
wait()

alicloud/resource_alicloud_polardb_cluster.go

Lines changed: 12 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@ import (
77
"strings"
88
"time"
99

10-
util "github.com/alibabacloud-go/tea-utils/service"
11-
1210
"strconv"
1311

1412
"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
@@ -522,16 +520,9 @@ func resourceAlicloudPolarDBClusterCreate(d *schema.ResourceData, meta interface
522520
}
523521
var response map[string]interface{}
524522
action := "CreateDBCluster"
525-
conn, err := client.NewPolarDBClient()
526-
if err != nil {
527-
return WrapError(err)
528-
}
529-
runtime := util.RuntimeOptions{}
530-
runtime.SetAutoretry(true)
531-
532523
wait := incrementalWait(3*time.Second, 3*time.Second)
533524
err = resource.Retry(client.GetRetryTimeout(d.Timeout(schema.TimeoutCreate)), func() *resource.RetryError {
534-
response, err = conn.DoRequest(StringPointer(action), nil, StringPointer("POST"), StringPointer("2017-08-01"), StringPointer("AK"), nil, request, &runtime)
525+
response, err = client.RpcPost("polardb", "2017-08-01", action, nil, request, true)
535526
if err != nil {
536527
if NeedRetry(err) {
537528
wait()
@@ -600,11 +591,7 @@ func resourceAlicloudPolarDBClusterUpdate(d *schema.ResourceData, meta interface
600591
return WrapError(err)
601592
}
602593

603-
conn, err := client.NewPolarDBClient()
604-
if err != nil {
605-
return WrapError(err)
606-
}
607-
594+
var err error
608595
payType := d.Get("pay_type").(string)
609596
if !d.IsNewResource() && d.HasChange("pay_type") {
610597
action := "TransformDBClusterPayType"
@@ -626,7 +613,7 @@ func resourceAlicloudPolarDBClusterUpdate(d *schema.ResourceData, meta interface
626613

627614
wait := incrementalWait(3*time.Second, 3*time.Second)
628615
err = resource.Retry(d.Timeout(schema.TimeoutUpdate), func() *resource.RetryError {
629-
response, err := conn.DoRequest(StringPointer(action), nil, StringPointer("POST"), StringPointer("2017-08-01"), StringPointer("AK"), nil, request, &util.RuntimeOptions{})
616+
response, err := client.RpcPost("polardb", "2017-08-01", action, nil, request, false)
630617
if err != nil {
631618
if NeedRetry(err) {
632619
wait()
@@ -736,7 +723,7 @@ func resourceAlicloudPolarDBClusterUpdate(d *schema.ResourceData, meta interface
736723
}
737724
wait := incrementalWait(3*time.Minute, 3*time.Second)
738725
err = resource.Retry(d.Timeout(schema.TimeoutUpdate), func() *resource.RetryError {
739-
response, err := conn.DoRequest(StringPointer(action), nil, StringPointer("POST"), StringPointer("2017-08-01"), StringPointer("AK"), nil, request, &util.RuntimeOptions{})
726+
response, err := client.RpcPost("polardb", "2017-08-01", action, nil, request, false)
740727
if err != nil {
741728
if IsExpectedErrors(err, []string{"TaskExists"}) || NeedRetry(err) {
742729
wait()
@@ -924,7 +911,7 @@ func resourceAlicloudPolarDBClusterUpdate(d *schema.ResourceData, meta interface
924911
//retry
925912
wait := incrementalWait(3*time.Second, 3*time.Second)
926913
err = resource.Retry(d.Timeout(schema.TimeoutUpdate), func() *resource.RetryError {
927-
response, err := conn.DoRequest(StringPointer(action), nil, StringPointer("POST"), StringPointer("2017-08-01"), StringPointer("AK"), nil, request, &util.RuntimeOptions{})
914+
response, err := client.RpcPost("polardb", "2017-08-01", action, nil, request, false)
928915
if err != nil {
929916
if NeedRetry(err) {
930917
wait()
@@ -983,7 +970,7 @@ func resourceAlicloudPolarDBClusterUpdate(d *schema.ResourceData, meta interface
983970
}
984971
wait := incrementalWait(3*time.Second, 3*time.Second)
985972
err := resource.Retry(d.Timeout(schema.TimeoutUpdate), func() *resource.RetryError {
986-
response, err := conn.DoRequest(StringPointer(action), nil, StringPointer("POST"), StringPointer("2017-08-01"), StringPointer("AK"), nil, request, &util.RuntimeOptions{})
973+
response, err := client.RpcPost("polardb", "2017-08-01", action, nil, request, false)
987974
if err != nil {
988975
if NeedRetry(err) {
989976
wait()
@@ -1053,7 +1040,7 @@ func resourceAlicloudPolarDBClusterUpdate(d *schema.ResourceData, meta interface
10531040
//retry
10541041
wait := incrementalWait(3*time.Second, 3*time.Second)
10551042
err = resource.Retry(d.Timeout(schema.TimeoutUpdate), func() *resource.RetryError {
1056-
response, err := conn.DoRequest(StringPointer(action), nil, StringPointer("POST"), StringPointer("2017-08-01"), StringPointer("AK"), nil, request, &util.RuntimeOptions{})
1043+
response, err := client.RpcPost("polardb", "2017-08-01", action, nil, request, false)
10571044
if err != nil {
10581045
if NeedRetry(err) {
10591046
wait()
@@ -1095,7 +1082,7 @@ func resourceAlicloudPolarDBClusterUpdate(d *schema.ResourceData, meta interface
10951082
//retry
10961083
wait := incrementalWait(3*time.Second, 3*time.Second)
10971084
err = resource.Retry(d.Timeout(schema.TimeoutUpdate), func() *resource.RetryError {
1098-
response, err := conn.DoRequest(StringPointer(action), nil, StringPointer("POST"), StringPointer("2017-08-01"), StringPointer("AK"), nil, request, &util.RuntimeOptions{})
1085+
response, err := client.RpcPost("polardb", "2017-08-01", action, nil, request, false)
10991086
if err != nil {
11001087
if NeedRetry(err) {
11011088
wait()
@@ -1127,7 +1114,7 @@ func resourceAlicloudPolarDBClusterUpdate(d *schema.ResourceData, meta interface
11271114
}
11281115
wait := incrementalWait(3*time.Second, 3*time.Second)
11291116
err := resource.Retry(d.Timeout(schema.TimeoutUpdate), func() *resource.RetryError {
1130-
response, err := conn.DoRequest(StringPointer(action), nil, StringPointer("POST"), StringPointer("2017-08-01"), StringPointer("AK"), nil, request, &util.RuntimeOptions{})
1117+
response, err := client.RpcPost("polardb", "2017-08-01", action, nil, request, false)
11311118
if err != nil {
11321119
if NeedRetry(err) {
11331120
wait()
@@ -1264,7 +1251,7 @@ func resourceAlicloudPolarDBClusterUpdate(d *schema.ResourceData, meta interface
12641251
//retry
12651252
wait := incrementalWait(3*time.Second, 3*time.Second)
12661253
err = resource.Retry(d.Timeout(schema.TimeoutUpdate), func() *resource.RetryError {
1267-
response, err := conn.DoRequest(StringPointer(action), nil, StringPointer("POST"), StringPointer("2017-08-01"), StringPointer("AK"), nil, request, &util.RuntimeOptions{})
1254+
response, err := client.RpcPost("polardb", "2017-08-01", action, nil, request, false)
12681255
if err != nil {
12691256
if NeedRetry(err) {
12701257
wait()
@@ -1309,7 +1296,7 @@ func resourceAlicloudPolarDBClusterUpdate(d *schema.ResourceData, meta interface
13091296
}
13101297
wait := incrementalWait(3*time.Second, 3*time.Second)
13111298
err := resource.Retry(d.Timeout(schema.TimeoutUpdate), func() *resource.RetryError {
1312-
response, err := conn.DoRequest(StringPointer(action), nil, StringPointer("POST"), StringPointer("2017-08-01"), StringPointer("AK"), nil, request, &util.RuntimeOptions{})
1299+
response, err := client.RpcPost("polardb", "2017-08-01", action, nil, request, false)
13131300
if err != nil {
13141301
if NeedRetry(err) {
13151302
wait()
@@ -1358,7 +1345,7 @@ func resourceAlicloudPolarDBClusterUpdate(d *schema.ResourceData, meta interface
13581345
//retry
13591346
wait := incrementalWait(3*time.Second, 3*time.Second)
13601347
err = resource.Retry(d.Timeout(schema.TimeoutUpdate), func() *resource.RetryError {
1361-
response, err := conn.DoRequest(StringPointer(action), nil, StringPointer("POST"), StringPointer("2017-08-01"), StringPointer("AK"), nil, request, &util.RuntimeOptions{})
1348+
response, err := client.RpcPost("polardb", "2017-08-01", action, nil, request, false)
13621349
if err != nil {
13631350
if NeedRetry(err) {
13641351
wait()

alicloud/resource_alicloud_polardb_global_database_network.go

Lines changed: 6 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import (
44
"fmt"
55
"time"
66

7-
util "github.com/alibabacloud-go/tea-utils/service"
87
"github.com/aliyun/terraform-provider-alicloud/alicloud/connectivity"
98
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
109
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
@@ -49,10 +48,7 @@ func resourceAlicloudPolarDBGlobalDatabaseNetworkCreate(d *schema.ResourceData,
4948
var response map[string]interface{}
5049
action := "CreateGlobalDatabaseNetwork"
5150
request := make(map[string]interface{})
52-
conn, err := client.NewPolarDBClient()
53-
if err != nil {
54-
return WrapError(err)
55-
}
51+
var err error
5652

5753
request["DBClusterId"] = d.Get("db_cluster_id")
5854

@@ -62,7 +58,7 @@ func resourceAlicloudPolarDBGlobalDatabaseNetworkCreate(d *schema.ResourceData,
6258

6359
wait := incrementalWait(3*time.Second, 3*time.Second)
6460
err = resource.Retry(d.Timeout(schema.TimeoutCreate), func() *resource.RetryError {
65-
response, err = conn.DoRequest(StringPointer(action), nil, StringPointer("POST"), StringPointer("2017-08-01"), StringPointer("AK"), nil, request, &util.RuntimeOptions{})
61+
response, err = client.RpcPost("polardb", "2017-08-01", action, nil, request, false)
6662
if err != nil {
6763
if NeedRetry(err) {
6864
wait()
@@ -108,7 +104,7 @@ func resourceAlicloudPolarDBGlobalDatabaseNetworkRead(d *schema.ResourceData, me
108104
func resourceAlicloudPolarDBGlobalDatabaseNetworkUpdate(d *schema.ResourceData, meta interface{}) error {
109105
client := meta.(*connectivity.AliyunClient)
110106
var response map[string]interface{}
111-
107+
var err error
112108
update := false
113109
request := map[string]interface{}{
114110
"GDNId": d.Id(),
@@ -123,13 +119,9 @@ func resourceAlicloudPolarDBGlobalDatabaseNetworkUpdate(d *schema.ResourceData,
123119

124120
if update {
125121
action := "ModifyGlobalDatabaseNetwork"
126-
conn, err := client.NewPolarDBClient()
127-
if err != nil {
128-
return WrapError(err)
129-
}
130122
wait := incrementalWait(3*time.Second, 3*time.Second)
131123
err = resource.Retry(d.Timeout(schema.TimeoutUpdate), func() *resource.RetryError {
132-
response, err = conn.DoRequest(StringPointer(action), nil, StringPointer("POST"), StringPointer("2017-08-01"), StringPointer("AK"), nil, request, &util.RuntimeOptions{})
124+
response, err = client.RpcPost("polardb", "2017-08-01", action, nil, request, false)
133125
if err != nil {
134126
if NeedRetry(err) {
135127
wait()
@@ -153,17 +145,14 @@ func resourceAlicloudPolarDBGlobalDatabaseNetworkDelete(d *schema.ResourceData,
153145
polarDBService := PolarDBService{client}
154146
action := "DeleteGlobalDatabaseNetwork"
155147
var response map[string]interface{}
156-
conn, err := client.NewPolarDBClient()
157-
if err != nil {
158-
return WrapError(err)
159-
}
148+
var err error
160149
request := map[string]interface{}{
161150
"GDNId": d.Id(),
162151
}
163152

164153
wait := incrementalWait(3*time.Second, 3*time.Second)
165154
err = resource.Retry(d.Timeout(schema.TimeoutDelete), func() *resource.RetryError {
166-
response, err = conn.DoRequest(StringPointer(action), nil, StringPointer("POST"), StringPointer("2017-08-01"), StringPointer("AK"), nil, request, &util.RuntimeOptions{})
155+
response, err = client.RpcPost("polardb", "2017-08-01", action, nil, request, false)
167156
if err != nil {
168157
if NeedRetry(err) || IsExpectedErrors(err, []string{"MemberNumber.NotSupport"}) {
169158
wait()

alicloud/resource_alicloud_polardb_global_database_network_test.go

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,6 @@ func testSweepPolarDBGlobalDatabaseNetwork(region string) error {
3737
return fmt.Errorf("error getting Alicloud client: %s", err)
3838
}
3939
client := rawClient.(*connectivity.AliyunClient)
40-
41-
conn, err := client.NewPolarDBClient()
42-
if err != nil {
43-
return WrapError(err)
44-
}
45-
4640
prefixes := []string{
4741
"tf-testAcc",
4842
"tf_testAcc",
@@ -54,11 +48,9 @@ func testSweepPolarDBGlobalDatabaseNetwork(region string) error {
5448
var response map[string]interface{}
5549
PolarDBGlobalDatabaseNetworkIds := make([]string, 0)
5650
for {
57-
runtime := util.RuntimeOptions{}
58-
runtime.SetAutoretry(true)
5951
wait := incrementalWait(3*time.Second, 3*time.Second)
6052
err = resource.Retry(5*time.Minute, func() *resource.RetryError {
61-
response, err = conn.DoRequest(StringPointer(action), nil, StringPointer("POST"), StringPointer("2017-08-01"), StringPointer("AK"), nil, request, &runtime)
53+
response, err = client.RpcPost("polardb", "2017-08-01", action, nil, request, true)
6254
if err != nil {
6355
if NeedRetry(err) {
6456
wait()
@@ -109,7 +101,7 @@ func testSweepPolarDBGlobalDatabaseNetwork(region string) error {
109101
}
110102
wait := incrementalWait(3*time.Second, 3*time.Second)
111103
err = resource.Retry(3*time.Minute, func() *resource.RetryError {
112-
_, err = conn.DoRequest(StringPointer(deleteAction), nil, StringPointer("POST"), StringPointer("2017-08-01"), StringPointer("AK"), nil, request, &util.RuntimeOptions{})
104+
_, err = client.RpcPost("polardb", "2017-08-01", deleteAction, nil, request, true)
113105
if err != nil {
114106
if NeedRetry(err) {
115107
wait()

0 commit comments

Comments
 (0)