Skip to content

Commit

Permalink
Slb: Improves the invoking api method and supports refreshing credent…
Browse files Browse the repository at this point in the history
…ial automatically
  • Loading branch information
xiaozhu36 committed Feb 4, 2025
1 parent 1e23c76 commit b2abd84
Show file tree
Hide file tree
Showing 17 changed files with 88 additions and 391 deletions.
121 changes: 5 additions & 116 deletions alicloud/connectivity/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -410,6 +410,11 @@ func (client *AliyunClient) WithSlbClient(do func(*slb.Client) (interface{}, err
slbconn.AppendUserAgent(Module, client.config.ConfigurationSource)
slbconn.AppendUserAgent(TerraformTraceId, client.config.TerraformTraceId)
client.slbconn = slbconn
} else {
err := client.slbconn.InitWithOptions(client.config.RegionId, client.getSdkConfig(), client.config.getAuthCredential(true))
if err != nil {
return nil, fmt.Errorf("unable to initialize the SLB client: %#v", err)
}
}

return do(client.slbconn)
Expand Down Expand Up @@ -2248,122 +2253,6 @@ func (client *AliyunClient) NewQuotasClientV2() (*openapi.Client, error) {
return result, nil
}

func (client *AliyunClient) NewNasClient() (*rpc.Client, error) {
productCode := "nas"
endpoint := ""
if v, ok := client.config.Endpoints.Load(productCode); !ok || v.(string) == "" {
if err := client.loadEndpoint(productCode); err != nil {
return nil, err
}
}
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) NewDmsenterpriseClient() (*rpc.Client, error) {
productCode := "dms_enterprise"
endpoint := ""
if v, ok := client.config.Endpoints.Load(productCode); !ok || v.(string) == "" {
if err := client.loadEndpoint(productCode); err != nil {
endpoint = "dms-enterprise.aliyuncs.com"
client.config.Endpoints.Store(productCode, endpoint)
log.Printf("[ERROR] loading %s endpoint got an error: %#v. Using the central 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) NewHcsSgwClient() (*rpc.Client, error) {
productCode := "sgw"
endpoint := ""
if v, ok := client.config.Endpoints.Load(productCode); !ok || v.(string) == "" {
if err := client.loadEndpoint(productCode); err != nil {
return nil, err
}
}
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) NewDdoscooClient() (*rpc.Client, error) {
productCode := "ddoscoo"
endpoint := ""
if v, ok := client.config.Endpoints.Load(productCode); !ok || v.(string) == "" {
if err := client.loadEndpoint(productCode); err != nil {
return nil, err
}
}
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) NewSlbClient() (*rpc.Client, error) {
productCode := "slb"
endpoint := ""
if v, ok := client.config.Endpoints.Load(productCode); !ok || v.(string) == "" {
if err := client.loadEndpoint(productCode); err != nil {
return nil, err
}
}
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) NewKmsClient() (*rpc.Client, error) {
productCode := "kms"
endpoint := ""
Expand Down
10 changes: 2 additions & 8 deletions alicloud/data_source_alicloud_slb_ca_certificates.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 @@ -140,15 +139,10 @@ func dataSourceAlicloudSlbCaCertificatesRead(d *schema.ResourceData, meta interf
}
}
var response map[string]interface{}
conn, err := client.NewSlbClient()
if err != nil {
return WrapError(err)
}
runtime := util.RuntimeOptions{}
runtime.SetAutoretry(true)
var err error
wait := incrementalWait(3*time.Second, 3*time.Second)
err = resource.Retry(5*time.Minute, func() *resource.RetryError {
response, err = conn.DoRequest(StringPointer(action), nil, StringPointer("POST"), StringPointer("2014-05-15"), StringPointer("AK"), nil, request, &runtime)
response, err = client.RpcPost("Slb", "2014-05-15", action, nil, request, true)
if err != nil {
if NeedRetry(err) {
wait()
Expand Down
10 changes: 2 additions & 8 deletions alicloud/data_source_alicloud_slb_load_balancers.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,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 @@ -500,16 +499,11 @@ func dataSourceAlicloudSlbLoadBalancersRead(d *schema.ResourceData, meta interfa
}
}
var response map[string]interface{}
conn, err := client.NewSlbClient()
if err != nil {
return WrapError(err)
}
var err error
for {
runtime := util.RuntimeOptions{}
runtime.SetAutoretry(true)
wait := incrementalWait(3*time.Second, 3*time.Second)
err = resource.Retry(5*time.Minute, func() *resource.RetryError {
response, err = conn.DoRequest(StringPointer(action), nil, StringPointer("POST"), StringPointer("2014-05-15"), StringPointer("AK"), nil, request, &runtime)
response, err = client.RpcPost("Slb", "2014-05-15", action, nil, request, true)
if err != nil {
if NeedRetry(err) {
wait()
Expand Down
10 changes: 2 additions & 8 deletions alicloud/data_source_alicloud_slb_tls_cipher_policies.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 @@ -150,16 +149,11 @@ func dataSourceAlicloudSlbTlsCipherPoliciesRead(d *schema.ResourceData, meta int
}
status, statusOk := d.GetOk("status")
var response map[string]interface{}
conn, err := client.NewSlbClient()
if err != nil {
return WrapError(err)
}
var err error
for {
runtime := util.RuntimeOptions{}
runtime.SetAutoretry(true)
wait := incrementalWait(3*time.Second, 3*time.Second)
err = resource.Retry(5*time.Minute, func() *resource.RetryError {
response, err = conn.DoRequest(StringPointer(action), nil, StringPointer("POST"), StringPointer("2014-05-15"), StringPointer("AK"), nil, request, &runtime)
response, err = client.RpcPost("Slb", "2014-05-15", action, nil, request, true)
if err != nil {
if NeedRetry(err) {
wait()
Expand Down
27 changes: 8 additions & 19 deletions alicloud/resource_alicloud_slb_acl.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@ import (
"fmt"
"strings"

util "github.com/alibabacloud-go/tea-utils/service"

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

"time"
Expand Down Expand Up @@ -75,10 +73,7 @@ func resourceAlicloudSlbAclCreate(d *schema.ResourceData, meta interface{}) erro
var response map[string]interface{}
action := "CreateAccessControlList"
request := make(map[string]interface{})
conn, err := client.NewSlbClient()
if err != nil {
return WrapError(err)
}
var err error
request["RegionId"] = client.RegionId
if v := d.Get("resource_group_id").(string); v != "" {
request["ResourceGroupId"] = v
Expand All @@ -90,7 +85,7 @@ func resourceAlicloudSlbAclCreate(d *schema.ResourceData, meta interface{}) erro

wait := incrementalWait(3*time.Second, 3*time.Second)
err = resource.Retry(d.Timeout(schema.TimeoutCreate), func() *resource.RetryError {
response, err = conn.DoRequest(StringPointer(action), nil, StringPointer("POST"), StringPointer("2014-05-15"), StringPointer("AK"), nil, request, &util.RuntimeOptions{})
response, err = client.RpcPost("Slb", "2014-05-15", action, nil, request, false)
if err != nil {
if NeedRetry(err) {
wait()
Expand Down Expand Up @@ -154,10 +149,7 @@ func resourceAlicloudSlbAclRead(d *schema.ResourceData, meta interface{}) error

func resourceAlicloudSlbAclUpdate(d *schema.ResourceData, meta interface{}) error {
client := meta.(*connectivity.AliyunClient)
conn, err := client.NewSlbClient()
if err != nil {
return WrapError(err)
}
var err error
slbService := SlbService{client}
var response map[string]interface{}
d.Partial(true)
Expand All @@ -180,7 +172,7 @@ func resourceAlicloudSlbAclUpdate(d *schema.ResourceData, meta interface{}) erro
action := "SetAccessControlListAttribute"
wait := incrementalWait(3*time.Second, 3*time.Second)
err = resource.Retry(d.Timeout(schema.TimeoutUpdate), func() *resource.RetryError {
response, err = conn.DoRequest(StringPointer(action), nil, StringPointer("POST"), StringPointer("2014-05-15"), StringPointer("AK"), nil, request, &util.RuntimeOptions{})
response, err = client.RpcPost("Slb", "2014-05-15", action, nil, request, false)
if err != nil {
if NeedRetry(err) {
wait()
Expand Down Expand Up @@ -219,7 +211,7 @@ func resourceAlicloudSlbAclUpdate(d *schema.ResourceData, meta interface{}) erro
action := "RemoveAccessControlListEntry"
wait := incrementalWait(3*time.Second, 3*time.Second)
err = resource.Retry(d.Timeout(schema.TimeoutUpdate), func() *resource.RetryError {
response, err = conn.DoRequest(StringPointer(action), nil, StringPointer("POST"), StringPointer("2014-05-15"), StringPointer("AK"), nil, removedRequest, &util.RuntimeOptions{})
response, err = client.RpcPost("Slb", "2014-05-15", action, nil, removedRequest, false)
if err != nil {
if NeedRetry(err) {
wait()
Expand Down Expand Up @@ -251,7 +243,7 @@ func resourceAlicloudSlbAclUpdate(d *schema.ResourceData, meta interface{}) erro
action := "AddAccessControlListEntry"
wait := incrementalWait(3*time.Second, 3*time.Second)
err = resource.Retry(d.Timeout(schema.TimeoutUpdate), func() *resource.RetryError {
response, err = conn.DoRequest(StringPointer(action), nil, StringPointer("POST"), StringPointer("2014-05-15"), StringPointer("AK"), nil, addedRequest, &util.RuntimeOptions{})
response, err = client.RpcPost("Slb", "2014-05-15", action, nil, addedRequest, false)
if err != nil {
if NeedRetry(err) {
wait()
Expand All @@ -278,18 +270,15 @@ func resourceAlicloudSlbAclDelete(d *schema.ResourceData, meta interface{}) erro
client := meta.(*connectivity.AliyunClient)
action := "DeleteAccessControlList"
var response map[string]interface{}
conn, err := client.NewSlbClient()
if err != nil {
return WrapError(err)
}
var err error
request := map[string]interface{}{
"AclId": d.Id(),
"RegionId": client.RegionId,
}

wait := incrementalWait(3*time.Second, 3*time.Second)
err = resource.Retry(d.Timeout(schema.TimeoutDelete), func() *resource.RetryError {
response, err = conn.DoRequest(StringPointer(action), nil, StringPointer("POST"), StringPointer("2014-05-15"), StringPointer("AK"), nil, request, &util.RuntimeOptions{})
response, err = client.RpcPost("Slb", "2014-05-15", action, nil, request, false)
if err != nil {
if NeedRetry(err) {
wait()
Expand Down
16 changes: 4 additions & 12 deletions alicloud/resource_alicloud_slb_acl_entry_attachment.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@ import (
"fmt"
"log"

util "github.com/alibabacloud-go/tea-utils/service"

"time"

"github.com/aliyun/terraform-provider-alicloud/alicloud/connectivity"
Expand Down Expand Up @@ -50,10 +48,7 @@ func resourceAlicloudSlbAclEntryAttachmentCreate(d *schema.ResourceData, meta in
var response map[string]interface{}
action := "AddAccessControlListEntry"
request := make(map[string]interface{})
conn, err := client.NewSlbClient()
if err != nil {
return WrapError(err)
}
var err error
request = map[string]interface{}{
"AclId": d.Id(),
"RegionId": client.RegionId,
Expand All @@ -73,7 +68,7 @@ func resourceAlicloudSlbAclEntryAttachmentCreate(d *schema.ResourceData, meta in
request["AclEntrys"] = aclEntries
wait := incrementalWait(3*time.Second, 3*time.Second)
err = resource.Retry(d.Timeout(schema.TimeoutUpdate), func() *resource.RetryError {
response, err = conn.DoRequest(StringPointer(action), nil, StringPointer("POST"), StringPointer("2014-05-15"), StringPointer("AK"), nil, request, &util.RuntimeOptions{})
response, err = client.RpcPost("Slb", "2014-05-15", action, nil, request, false)
if err != nil {
if IsExpectedErrors(err, []string{"AclEntryProcessing"}) || NeedRetry(err) {
wait()
Expand Down Expand Up @@ -120,10 +115,7 @@ func resourceAlicloudSlbAclEntryAttachmentDelete(d *schema.ResourceData, meta in
client := meta.(*connectivity.AliyunClient)
action := "RemoveAccessControlListEntry"
var response map[string]interface{}
conn, err := client.NewSlbClient()
if err != nil {
return WrapError(err)
}
var err error

parts, err := ParseResourceId(d.Id(), 2)
if err != nil {
Expand All @@ -145,7 +137,7 @@ func resourceAlicloudSlbAclEntryAttachmentDelete(d *schema.ResourceData, meta in
request["AclEntrys"] = aclEntries
wait := incrementalWait(3*time.Second, 3*time.Second)
err = resource.Retry(d.Timeout(schema.TimeoutUpdate), func() *resource.RetryError {
response, err = conn.DoRequest(StringPointer(action), nil, StringPointer("POST"), StringPointer("2014-05-15"), StringPointer("AK"), nil, request, &util.RuntimeOptions{})
response, err = client.RpcPost("Slb", "2014-05-15", action, nil, request, false)
if err != nil {
if IsExpectedErrors(err, []string{"AclEntryProcessing"}) || NeedRetry(err) {
wait()
Expand Down
12 changes: 2 additions & 10 deletions alicloud/resource_alicloud_slb_acl_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,18 +48,10 @@ func testSweepSlbAcl(region string) error {
request["PageSize"] = PageSizeLarge
request["PageNumber"] = 1
var response map[string]interface{}
conn, err := client.NewSlbClient()
if err != nil {
log.Printf("[ERROR] %s get an error: %#v", action, err)
return nil
}

for {
runtime := util.RuntimeOptions{}
runtime.SetAutoretry(true)
wait := incrementalWait(3*time.Second, 3*time.Second)
err = resource.Retry(1*time.Minute, func() *resource.RetryError {
response, err = conn.DoRequest(StringPointer(action), nil, StringPointer("POST"), StringPointer("2014-05-15"), StringPointer("AK"), nil, request, &runtime)
response, err = client.RpcPost("Slb", "2014-05-15", action, nil, request, true)
if err != nil {
if NeedRetry(err) {
wait()
Expand Down Expand Up @@ -100,7 +92,7 @@ func testSweepSlbAcl(region string) error {
"AclId": item["AclId"],
"RegionId": client.RegionId,
}
_, err = conn.DoRequest(StringPointer(action), nil, StringPointer("POST"), StringPointer("2014-05-15"), StringPointer("AK"), nil, request, &util.RuntimeOptions{})
_, err = client.RpcPost("Slb", "2014-05-15", action, nil, request, false)
if err != nil {
log.Printf("[ERROR] Failed to delete (%s): %s", name, err)
}
Expand Down
Loading

0 comments on commit b2abd84

Please sign in to comment.