From c1d2ed259e9a21cac4a4845d7019655b721439ab Mon Sep 17 00:00:00 2001 From: "guimin.hgm" Date: Sat, 1 Feb 2025 23:28:58 +0800 Subject: [PATCH] OceanBase: Improves the invoking api method and supports refreshing credential automatically --- alicloud/connectivity/client.go | 25 ----------- ...ta_source_alicloud_ocean_base_instances.go | 10 +---- .../resource_alicloud_ocean_base_instance.go | 44 ++++--------------- alicloud/service_alicloud_ocean_base_pro.go | 21 ++------- alicloud/service_alicloud_ocean_base_v2.go | 17 +------ 5 files changed, 16 insertions(+), 101 deletions(-) diff --git a/alicloud/connectivity/client.go b/alicloud/connectivity/client.go index 88fcf8b270f6..b9d8d8e19a2c 100644 --- a/alicloud/connectivity/client.go +++ b/alicloud/connectivity/client.go @@ -4589,31 +4589,6 @@ func (client *AliyunClient) NewEfloClient() (*rpc.Client, error) { return conn, nil } -func (client *AliyunClient) NewOceanbaseClient() (*rpc.Client, error) { - productCode := "oceanbasepro" - endpoint := "" - if v, ok := client.config.Endpoints.Load(productCode); !ok || v.(string) == "" { - if err := client.loadEndpoint(productCode); err != nil { - endpoint = fmt.Sprintf("oceanbasepro.%s.aliyuncs.com", client.config.RegionId) - client.config.Endpoints.Store(productCode, endpoint) - log.Printf("[ERROR] loading %s endpoint got an error: %#v. Using the endpoint %s instead.", productCode, err, endpoint) - } - } - if v, ok := client.config.Endpoints.Load(productCode); ok && v.(string) != "" { - endpoint = v.(string) - } - if endpoint == "" { - return nil, fmt.Errorf("[ERROR] missing the product %s endpoint.", productCode) - } - sdkConfig := client.teaSdkConfig - sdkConfig.SetEndpoint(endpoint) - conn, err := rpc.NewClient(&sdkConfig) - if err != nil { - return nil, fmt.Errorf("unable to initialize the %s client: %#v", productCode, err) - } - return conn, nil -} - func (client *AliyunClient) NewBeebotClient() (*rpc.Client, error) { productCode := "chatbot" endpoint := "" diff --git a/alicloud/data_source_alicloud_ocean_base_instances.go b/alicloud/data_source_alicloud_ocean_base_instances.go index 5450ba041d73..c4d57af21f6d 100644 --- a/alicloud/data_source_alicloud_ocean_base_instances.go +++ b/alicloud/data_source_alicloud_ocean_base_instances.go @@ -6,7 +6,6 @@ import ( "time" "github.com/PaesslerAG/jsonpath" - util "github.com/alibabacloud-go/tea-utils/service" "github.com/aliyun/terraform-provider-alicloud/alicloud/connectivity" "github.com/hashicorp/terraform-plugin-sdk/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/helper/schema" @@ -193,20 +192,15 @@ func dataSourceAlicloudOceanBaseInstancesRead(d *schema.ResourceData, meta inter } status, statusOk := d.GetOk("status") - conn, err := client.NewOceanbaseClient() - if err != nil { - return WrapError(err) - } + var err error var objects []interface{} var response map[string]interface{} for { action := "DescribeInstances" - runtime := util.RuntimeOptions{} - runtime.SetAutoretry(true) wait := incrementalWait(3*time.Second, 3*time.Second) err = resource.Retry(5*time.Minute, func() *resource.RetryError { - resp, err := conn.DoRequest(StringPointer(action), nil, StringPointer("POST"), StringPointer("2019-09-01"), StringPointer("AK"), nil, request, &runtime) + resp, err := client.RpcPost("OceanBasePro", "2019-09-01", action, nil, request, true) if err != nil { if NeedRetry(err) { wait() diff --git a/alicloud/resource_alicloud_ocean_base_instance.go b/alicloud/resource_alicloud_ocean_base_instance.go index e460c2732db0..2fb8c6a2da4a 100644 --- a/alicloud/resource_alicloud_ocean_base_instance.go +++ b/alicloud/resource_alicloud_ocean_base_instance.go @@ -8,7 +8,6 @@ import ( "time" "github.com/PaesslerAG/jsonpath" - util "github.com/alibabacloud-go/tea-utils/service" "github.com/aliyun/terraform-provider-alicloud/alicloud/connectivity" "github.com/hashicorp/terraform-plugin-sdk/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/helper/schema" @@ -170,10 +169,7 @@ func resourceAliCloudOceanBaseInstanceCreate(d *schema.ResourceData, meta interf var request map[string]interface{} var response map[string]interface{} query := make(map[string]interface{}) - conn, err := client.NewOceanbaseClient() - if err != nil { - return WrapError(err) - } + var err error request = make(map[string]interface{}) request["DiskSize"] = d.Get("disk_size") @@ -218,11 +214,9 @@ func resourceAliCloudOceanBaseInstanceCreate(d *schema.ResourceData, meta interf if v, ok := d.GetOk("cpu_arch"); ok { request["CpuArch"] = v } - runtime := util.RuntimeOptions{} - runtime.SetAutoretry(true) wait := incrementalWait(3*time.Second, 5*time.Second) err = resource.Retry(d.Timeout(schema.TimeoutCreate), func() *resource.RetryError { - response, err = conn.DoRequest(StringPointer(action), nil, StringPointer("POST"), StringPointer("2019-09-01"), StringPointer("AK"), query, request, &runtime) + response, err = client.RpcPost("OceanBasePro", "2019-09-01", action, query, request, false) if err != nil { if NeedRetry(err) { wait() @@ -340,10 +334,7 @@ func resourceAliCloudOceanBaseInstanceUpdate(d *schema.ResourceData, meta interf update := false d.Partial(true) action := "ModifyInstanceName" - conn, err := client.NewOceanbaseClient() - if err != nil { - return WrapError(err) - } + var err error request = make(map[string]interface{}) query = make(map[string]interface{}) request["InstanceId"] = d.Id() @@ -353,11 +344,9 @@ func resourceAliCloudOceanBaseInstanceUpdate(d *schema.ResourceData, meta interf } request["InstanceName"] = d.Get("instance_name") if update { - runtime := util.RuntimeOptions{} - runtime.SetAutoretry(true) wait := incrementalWait(3*time.Second, 5*time.Second) err = resource.Retry(d.Timeout(schema.TimeoutUpdate), func() *resource.RetryError { - response, err = conn.DoRequest(StringPointer(action), nil, StringPointer("POST"), StringPointer("2019-09-01"), StringPointer("AK"), query, request, &runtime) + response, err = client.RpcPost("OceanBasePro", "2019-09-01", action, query, request, false) if err != nil { if NeedRetry(err) { wait() @@ -374,10 +363,6 @@ func resourceAliCloudOceanBaseInstanceUpdate(d *schema.ResourceData, meta interf } update = false action = "ModifyInstanceNodeNum" - conn, err = client.NewOceanbaseClient() - if err != nil { - return WrapError(err) - } request = make(map[string]interface{}) query = make(map[string]interface{}) request["InstanceId"] = d.Id() @@ -389,11 +374,9 @@ func resourceAliCloudOceanBaseInstanceUpdate(d *schema.ResourceData, meta interf } request["NodeNum"] = d.Get("node_num") if update { - runtime := util.RuntimeOptions{} - runtime.SetAutoretry(true) wait := incrementalWait(3*time.Second, 5*time.Second) err = resource.Retry(d.Timeout(schema.TimeoutUpdate), func() *resource.RetryError { - response, err = conn.DoRequest(StringPointer(action), nil, StringPointer("POST"), StringPointer("2019-09-01"), StringPointer("AK"), query, request, &runtime) + response, err = client.RpcPost("OceanBasePro", "2019-09-01", action, query, request, false) if err != nil { if IsExpectedErrors(err, []string{"Instance.Order.CreateFailed"}) || NeedRetry(err) { wait() @@ -415,10 +398,6 @@ func resourceAliCloudOceanBaseInstanceUpdate(d *schema.ResourceData, meta interf } update = false action = "ModifyInstanceSpec" - conn, err = client.NewOceanbaseClient() - if err != nil { - return WrapError(err) - } request = make(map[string]interface{}) query = make(map[string]interface{}) request["InstanceId"] = d.Id() @@ -435,11 +414,9 @@ func resourceAliCloudOceanBaseInstanceUpdate(d *schema.ResourceData, meta interf request["UpgradeSpecNative"] = v } if update { - runtime := util.RuntimeOptions{} - runtime.SetAutoretry(true) wait := incrementalWait(3*time.Second, 5*time.Second) err = resource.Retry(d.Timeout(schema.TimeoutUpdate), func() *resource.RetryError { - response, err = conn.DoRequest(StringPointer(action), nil, StringPointer("POST"), StringPointer("2019-09-01"), StringPointer("AK"), query, request, &runtime) + response, err = client.RpcPost("OceanBasePro", "2019-09-01", action, query, request, false) if err != nil { if IsExpectedErrors(err, []string{"Instance.Order.CreateFailed"}) || NeedRetry(err) { wait() @@ -476,21 +453,16 @@ func resourceAliCloudOceanBaseInstanceDelete(d *schema.ResourceData, meta interf var request map[string]interface{} var response map[string]interface{} query := make(map[string]interface{}) - conn, err := client.NewOceanbaseClient() - if err != nil { - return WrapError(err) - } + var err error request = make(map[string]interface{}) request["InstanceIds"] = fmt.Sprintf("[\"%s\"]", d.Id()) if v, ok := d.GetOk("backup_retain_mode"); ok { request["BackupRetainMode"] = v } - runtime := util.RuntimeOptions{} - runtime.SetAutoretry(true) wait := incrementalWait(3*time.Second, 5*time.Second) err = resource.Retry(d.Timeout(schema.TimeoutDelete), func() *resource.RetryError { - response, err = conn.DoRequest(StringPointer(action), nil, StringPointer("POST"), StringPointer("2019-09-01"), StringPointer("AK"), query, request, &runtime) + response, err = client.RpcPost("OceanBasePro", "2019-09-01", action, query, request, false) if err != nil { if NeedRetry(err) { diff --git a/alicloud/service_alicloud_ocean_base_pro.go b/alicloud/service_alicloud_ocean_base_pro.go index 73a80e7ea47a..ca6cf8b9e7b3 100644 --- a/alicloud/service_alicloud_ocean_base_pro.go +++ b/alicloud/service_alicloud_ocean_base_pro.go @@ -5,7 +5,6 @@ import ( "time" "github.com/PaesslerAG/jsonpath" - util "github.com/alibabacloud-go/tea-utils/service" "github.com/aliyun/terraform-provider-alicloud/alicloud/connectivity" "github.com/hashicorp/terraform-plugin-sdk/helper/resource" ) @@ -15,11 +14,7 @@ type OceanBaseProService struct { } func (s *OceanBaseProService) DescribeOceanBaseInstance(id string) (object map[string]interface{}, err error) { - conn, err := s.client.NewOceanbaseClient() - if err != nil { - return object, WrapError(err) - } - + client := s.client request := map[string]interface{}{ "InstanceId": id, "RegionId": s.client.RegionId, @@ -27,11 +22,9 @@ func (s *OceanBaseProService) DescribeOceanBaseInstance(id string) (object map[s var response map[string]interface{} action := "DescribeInstance" - runtime := util.RuntimeOptions{} - runtime.SetAutoretry(true) wait := incrementalWait(3*time.Second, 3*time.Second) err = resource.Retry(5*time.Minute, func() *resource.RetryError { - resp, err := conn.DoRequest(StringPointer(action), nil, StringPointer("POST"), StringPointer("2019-09-01"), StringPointer("AK"), nil, request, &runtime) + resp, err := client.RpcPost("OceanBasePro", "2019-09-01", action, nil, request, true) if err != nil { if NeedRetry(err) { wait() @@ -76,22 +69,16 @@ func (s *OceanBaseProService) OceanBaseInstanceStateRefreshFunc(id string, failS } func (s *OceanBaseProService) DescribeInstances(id string) (object map[string]interface{}, err error) { - conn, err := s.client.NewOceanbaseClient() - if err != nil { - return object, WrapError(err) - } - + client := s.client request := map[string]interface{}{ "InstanceId": id, } var response map[string]interface{} action := "DescribeInstances" - runtime := util.RuntimeOptions{} - runtime.SetAutoretry(true) wait := incrementalWait(3*time.Second, 3*time.Second) err = resource.Retry(5*time.Minute, func() *resource.RetryError { - resp, err := conn.DoRequest(StringPointer(action), nil, StringPointer("POST"), StringPointer("2019-09-01"), StringPointer("AK"), nil, request, &runtime) + resp, err := client.RpcPost("OceanBasePro", "2019-09-01", action, nil, request, true) if err != nil { if NeedRetry(err) { wait() diff --git a/alicloud/service_alicloud_ocean_base_v2.go b/alicloud/service_alicloud_ocean_base_v2.go index 7d317d5f3758..a01ba5faebb0 100644 --- a/alicloud/service_alicloud_ocean_base_v2.go +++ b/alicloud/service_alicloud_ocean_base_v2.go @@ -5,7 +5,6 @@ import ( "time" "github.com/PaesslerAG/jsonpath" - util "github.com/alibabacloud-go/tea-utils/service" "github.com/aliyun/terraform-provider-alicloud/alicloud/connectivity" "github.com/hashicorp/terraform-plugin-sdk/helper/resource" ) @@ -22,19 +21,13 @@ func (s *OceanBaseServiceV2) DescribeOceanBaseInstance(id string) (object map[st var response map[string]interface{} var query map[string]interface{} action := "DescribeInstance" - conn, err := client.NewOceanbaseClient() - if err != nil { - return object, WrapError(err) - } request = make(map[string]interface{}) query = make(map[string]interface{}) request["InstanceId"] = id - runtime := util.RuntimeOptions{} - runtime.SetAutoretry(true) wait := incrementalWait(3*time.Second, 5*time.Second) err = resource.Retry(1*time.Minute, func() *resource.RetryError { - response, err = conn.DoRequest(StringPointer(action), nil, StringPointer("POST"), StringPointer("2019-09-01"), StringPointer("AK"), query, request, &runtime) + response, err = client.RpcPost("OceanBasePro", "2019-09-01", action, query, request, true) if err != nil { if NeedRetry(err) { @@ -67,19 +60,13 @@ func (s *OceanBaseServiceV2) DescribeDescribeInstances(id string) (object map[st var response map[string]interface{} var query map[string]interface{} action := "DescribeInstances" - conn, err := client.NewOceanbaseClient() - if err != nil { - return object, WrapError(err) - } request = make(map[string]interface{}) query = make(map[string]interface{}) request["InstanceId"] = id - runtime := util.RuntimeOptions{} - runtime.SetAutoretry(true) wait := incrementalWait(3*time.Second, 5*time.Second) err = resource.Retry(1*time.Minute, func() *resource.RetryError { - response, err = conn.DoRequest(StringPointer(action), nil, StringPointer("POST"), StringPointer("2019-09-01"), StringPointer("AK"), query, request, &runtime) + response, err = client.RpcPost("OceanBasePro", "2019-09-01", action, query, request, true) if err != nil { if NeedRetry(err) {