Skip to content

Commit

Permalink
OceanBase: Improves the invoking api method and supports refreshing c…
Browse files Browse the repository at this point in the history
…redential automatically
  • Loading branch information
xiaozhu36 committed Feb 2, 2025
1 parent 755f9f0 commit c9259a2
Show file tree
Hide file tree
Showing 5 changed files with 16 additions and 101 deletions.
25 changes: 0 additions & 25 deletions alicloud/connectivity/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -4594,31 +4594,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 := ""
Expand Down
10 changes: 2 additions & 8 deletions alicloud/data_source_alicloud_ocean_base_instances.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -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()
Expand Down
44 changes: 8 additions & 36 deletions alicloud/resource_alicloud_ocean_base_instance.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -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")
Expand Down Expand Up @@ -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()
Expand Down Expand Up @@ -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()
Expand All @@ -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()
Expand All @@ -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()
Expand All @@ -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()
Expand All @@ -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()
Expand All @@ -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()
Expand Down Expand Up @@ -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) {
Expand Down
21 changes: 4 additions & 17 deletions alicloud/service_alicloud_ocean_base_pro.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
)
Expand All @@ -15,23 +14,17 @@ 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,
}

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()
Expand Down Expand Up @@ -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()
Expand Down
17 changes: 2 additions & 15 deletions alicloud/service_alicloud_ocean_base_v2.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
)
Expand All @@ -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) {
Expand Down Expand Up @@ -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) {
Expand Down

0 comments on commit c9259a2

Please sign in to comment.