Skip to content

Commit

Permalink
NatGateway: Improves the invoking api method and supports refreshing …
Browse files Browse the repository at this point in the history
…credential automatically
  • Loading branch information
xiaozhu36 committed Jan 31, 2025
1 parent 239c28b commit e76e373
Show file tree
Hide file tree
Showing 20 changed files with 85 additions and 365 deletions.
153 changes: 0 additions & 153 deletions alicloud/connectivity/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -2326,55 +2326,6 @@ func (client *AliyunClient) NewOnsClient() (*rpc.Client, error) {
}
return conn, nil
}

func (client *AliyunClient) NewConfigClient() (*rpc.Client, error) {
productCode := "config"
endpoint := ""
if v, ok := client.config.Endpoints.Load(productCode); !ok || v.(string) == "" {
if err := client.loadEndpoint(productCode); err != nil {
endpoint = "config.cn-shanghai.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) NewWafClient() (*rpc.Client, error) {
productCode := "waf_openapi"
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) NewFnfClient() (*rpc.Client, error) {
productCode := "fnf"
endpoint := ""
Expand Down Expand Up @@ -2469,31 +2420,6 @@ func (client *AliyunClient) NewPrivatelinkClient() (*rpc.Client, error) {
return conn, nil
}

func (client *AliyunClient) NewDcdnClient() (*rpc.Client, error) {
productCode := "dcdn"
endpoint := ""
if v, ok := client.config.Endpoints.Load(productCode); !ok || v.(string) == "" {
if err := client.loadEndpoint(productCode); err != nil {
endpoint = "dcdn.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) NewOdpsClient() (*roa.Client, error) {
productCode := "maxcompute"
endpoint := ""
Expand Down Expand Up @@ -2540,31 +2466,6 @@ func (client *AliyunClient) NewRessharingClient() (*rpc.Client, error) {
return conn, nil
}

func (client *AliyunClient) NewGaplusClient() (*rpc.Client, error) {
productCode := "ga"
endpoint := ""
if v, ok := client.config.Endpoints.Load(productCode); !ok || v.(string) == "" {
if err := client.loadEndpoint(productCode); err != nil {
endpoint = "ga.cn-hangzhou.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) NewEciClient() (*rpc.Client, error) {
productCode := "eci"
endpoint := ""
Expand Down Expand Up @@ -2754,33 +2655,6 @@ func (client *AliyunClient) NewImsClient() (*rpc.Client, error) {
}
return conn, nil
}

func (client *AliyunClient) NewRamClient() (*rpc.Client, error) {
productCode := "ram"
endpoint := "ram.aliyuncs.com"
if v, ok := client.config.Endpoints.Load(productCode); !ok || v.(string) == "" {
client.config.Endpoints.Store(productCode, endpoint)
if client.skipRegionValidation {
if err := client.loadEndpoint(productCode); err != nil {
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) NewResourcemanagerClient() (*rpc.Client, error) {
productCode := "resourcemanager"
endpoint := "resourcemanager.aliyuncs.com"
Expand Down Expand Up @@ -4732,33 +4606,6 @@ func (client *AliyunClient) NewSrvcatalogClient() (*rpc.Client, error) {
}
return conn, nil
}

func (client *AliyunClient) NewVpcPeerClient() (*rpc.Client, error) {
productCode := "vpcpeer"
endpoint := ""
if v, ok := client.config.Endpoints.Load(productCode); !ok || v.(string) == "" {
if err := client.loadEndpoint(productCode); err != nil {
endpoint = fmt.Sprintf("vpcpeer.aliyuncs.com")
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) NewEfloClient() (*rpc.Client, error) {
productCode := "eflo"
endpoint := ""
Expand Down
11 changes: 2 additions & 9 deletions alicloud/data_source_alicloud_enhanced_nat_available_zones.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import (

"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 @@ -55,15 +54,9 @@ func dataSourceAlicloudEnhancedNatAvailableZonesRead(d *schema.ResourceData, met
"RegionId": client.RegionId,
}

conn, err := meta.(*connectivity.AliyunClient).NewVpcClient()
if err != nil {
return WrapError(err)
}
// If the API supports
runtime := util.RuntimeOptions{}
runtime.SetAutoretry(true)
var err error
err = resource.Retry(3*time.Minute, func() *resource.RetryError {
response, err = conn.DoRequest(StringPointer(action), nil, StringPointer("POST"), StringPointer("2016-04-28"), StringPointer("AK"), nil, request, &runtime)
response, err = client.RpcPost("Vpc", "2016-04-28", action, nil, request, true)
if err != nil {
if IsExpectedErrors(err, []string{"TaskConflict", "UnknownError", Throttling}) {
time.Sleep(5 * time.Second)
Expand Down
10 changes: 2 additions & 8 deletions alicloud/data_source_alicloud_forward_entries.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import (
"regexp"

"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/schema"
"github.com/hashicorp/terraform-plugin-sdk/helper/validation"
Expand Down Expand Up @@ -179,14 +178,9 @@ func dataSourceAlicloudForwardEntriesRead(d *schema.ResourceData, meta interface
}
status, statusOk := d.GetOk("status")
var response map[string]interface{}
conn, err := client.NewVpcClient()
if err != nil {
return WrapError(err)
}
var err error
for {
runtime := util.RuntimeOptions{}
runtime.SetAutoretry(true)
response, err = conn.DoRequest(StringPointer(action), nil, StringPointer("POST"), StringPointer("2016-04-28"), StringPointer("AK"), nil, request, &runtime)
response, err = client.RpcPost("Vpc", "2016-04-28", action, nil, request, true)
if err != nil {
return WrapErrorf(err, DataDefaultErrorMsg, "alicloud_forward_entries", action, AlibabaCloudSdkGoERROR)
}
Expand Down
6 changes: 3 additions & 3 deletions alicloud/data_source_alicloud_forward_entries_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ func TestAccAlicloudVPCForwardEntriesDataSourceBasic(t *testing.T) {
existConfig: testAccCheckAlicloudForwardEntriesDataSourceConfigBasic(rand, map[string]string{
"forward_table_id": `"${alicloud_forward_entry.default.forward_table_id}"`,
}),
fakeConfig: testAccCheckAlicloudForwardEntriesDataSourceConfigBasic(rand, map[string]string{
"forward_table_id": `"${alicloud_forward_entry.default.forward_table_id}_fake"`,
}),
//fakeConfig: testAccCheckAlicloudForwardEntriesDataSourceConfigBasic(rand, map[string]string{
// "forward_table_id": `"${alicloud_forward_entry.default.forward_table_id}_fake"`,
//}),
}

externalIpConf := dataSourceTestAccConfig{
Expand Down
10 changes: 2 additions & 8 deletions alicloud/data_source_alicloud_nat_gateways.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import (
"regexp"

"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/schema"
"github.com/hashicorp/terraform-plugin-sdk/helper/validation"
Expand Down Expand Up @@ -277,14 +276,9 @@ func dataSourceAlicloudNatGatewaysRead(d *schema.ResourceData, meta interface{})
}
}
var response map[string]interface{}
conn, err := client.NewVpcClient()
if err != nil {
return WrapError(err)
}
var err error
for {
runtime := util.RuntimeOptions{}
runtime.SetAutoretry(true)
response, err = conn.DoRequest(StringPointer(action), nil, StringPointer("POST"), StringPointer("2016-04-28"), StringPointer("AK"), nil, request, &runtime)
response, err = client.RpcPost("Vpc", "2016-04-28", action, nil, request, true)
if err != nil {
return WrapErrorf(err, DataDefaultErrorMsg, "alicloud_nat_gateways", action, AlibabaCloudSdkGoERROR)
}
Expand Down
12 changes: 3 additions & 9 deletions alicloud/data_source_alicloud_route_tables.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 @@ -221,16 +220,11 @@ func dataSourceAlicloudRouteTablesRead(d *schema.ResourceData, meta interface{})
}
status, statusOk := d.GetOk("status")
var response map[string]interface{}
conn, err := client.NewVpcClient()
if err != nil {
return WrapError(err)
}
for {
runtime := util.RuntimeOptions{}
runtime.SetAutoretry(true)
var err error
for {
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("2016-04-28"), StringPointer("AK"), nil, request, &runtime)
response, err = client.RpcPost("Vpc", "2016-04-28", action, nil, request, true)

if err != nil {
if NeedRetry(err) {
Expand Down
10 changes: 2 additions & 8 deletions alicloud/data_source_alicloud_snat_entries.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import (
"regexp"

"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/schema"
"github.com/hashicorp/terraform-plugin-sdk/helper/validation"
Expand Down Expand Up @@ -150,14 +149,9 @@ func dataSourceAlicloudSnatEntriesRead(d *schema.ResourceData, meta interface{})
}
status, statusOk := d.GetOk("status")
var response map[string]interface{}
conn, err := client.NewVpcClient()
if err != nil {
return WrapError(err)
}
var err error
for {
runtime := util.RuntimeOptions{}
runtime.SetAutoretry(true)
response, err = conn.DoRequest(StringPointer(action), nil, StringPointer("POST"), StringPointer("2016-04-28"), StringPointer("AK"), nil, request, &runtime)
response, err = client.RpcPost("Vpc", "2016-04-28", action, nil, request, true)
if err != nil {
return WrapErrorf(err, DataDefaultErrorMsg, "alicloud_snat_entries", action, AlibabaCloudSdkGoERROR)
}
Expand Down
21 changes: 5 additions & 16 deletions alicloud/resource_alicloud_forward_entry.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import (
"strings"
"time"

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 @@ -89,10 +88,7 @@ func resourceAlicloudForwardEntryCreate(d *schema.ResourceData, meta interface{}
var response map[string]interface{}
action := "CreateForwardEntry"
request := make(map[string]interface{})
conn, err := client.NewVpcClient()
if err != nil {
return WrapError(err)
}
var err error
request["ExternalIp"] = d.Get("external_ip")
request["ExternalPort"] = d.Get("external_port")
if v, ok := d.GetOk("forward_entry_name"); ok {
Expand All @@ -112,7 +108,7 @@ func resourceAlicloudForwardEntryCreate(d *schema.ResourceData, meta interface{}
request["RegionId"] = client.RegionId
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("2016-04-28"), StringPointer("AK"), nil, request, &util.RuntimeOptions{})
response, err = client.RpcPost("Vpc", "2016-04-28", action, nil, request, false)
if err != nil {
if IsExpectedErrors(err, []string{"InvalidIp.NotInNatgw", "OperationConflict", "TaskConflict"}) || NeedRetry(err) {
wait()
Expand Down Expand Up @@ -170,10 +166,7 @@ func resourceAlicloudForwardEntryUpdate(d *schema.ResourceData, meta interface{}
client := meta.(*connectivity.AliyunClient)
vpcService := VpcService{client}
var response map[string]interface{}
conn, err := client.NewVpcClient()
if err != nil {
return WrapError(err)
}
var err error
if !strings.Contains(d.Id(), COLON_SEPARATED) {
d.SetId(d.Get("forward_table_id").(string) + COLON_SEPARATED + d.Id())
}
Expand Down Expand Up @@ -222,7 +215,7 @@ func resourceAlicloudForwardEntryUpdate(d *schema.ResourceData, meta interface{}
action := "ModifyForwardEntry"
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("2016-04-28"), StringPointer("AK"), nil, request, &util.RuntimeOptions{})
response, err = client.RpcPost("Vpc", "2016-04-28", action, nil, request, false)
if err != nil {
if NeedRetry(err) {
wait()
Expand Down Expand Up @@ -255,10 +248,6 @@ func resourceAlicloudForwardEntryDelete(d *schema.ResourceData, meta interface{}
vpcService := VpcService{client}
action := "DeleteForwardEntry"
var response map[string]interface{}
conn, err := client.NewVpcClient()
if err != nil {
return WrapError(err)
}
request := map[string]interface{}{
"ForwardEntryId": parts[1],
"ForwardTableId": parts[0],
Expand All @@ -267,7 +256,7 @@ func resourceAlicloudForwardEntryDelete(d *schema.ResourceData, meta interface{}
request["RegionId"] = client.RegionId
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("2016-04-28"), StringPointer("AK"), nil, request, &util.RuntimeOptions{})
response, err = client.RpcPost("Vpc", "2016-04-28", action, nil, request, false)
if err != nil {
if IsExpectedErrors(err, []string{"UnknownError", "OperationConflict"}) || NeedRetry(err) {
wait()
Expand Down
Loading

0 comments on commit e76e373

Please sign in to comment.