Skip to content

Commit

Permalink
PrivateLink: Improves the invoking privatelink api method and support…
Browse files Browse the repository at this point in the history
…s refreshing credential automatically
  • Loading branch information
xiaozhu36 committed Oct 16, 2024
1 parent bac8605 commit 81351de
Show file tree
Hide file tree
Showing 16 changed files with 72 additions and 361 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import (
"fmt"

"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 @@ -91,14 +90,10 @@ func dataSourceAlicloudPrivatelinkVpcEndpointConnectionsRead(d *schema.ResourceD
request["MaxResults"] = PageSizeLarge
var objects []map[string]interface{}
var response map[string]interface{}
conn, err := client.NewPrivatelinkClient()
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("2020-04-15"), StringPointer("AK"), nil, request, &runtime)

response, err = client.RpcPost("Privatelink", "2020-04-15", action, nil, request, true)
if err != nil {
return WrapErrorf(err, DataDefaultErrorMsg, "alicloud_privatelink_vpc_endpoint_connections", action, AlibabaCloudSdkGoERROR)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import (
"fmt"

"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"
)
Expand Down Expand Up @@ -61,14 +60,9 @@ func dataSourceAlicloudPrivatelinkVpcEndpointServiceResourcesRead(d *schema.Reso
request["MaxResults"] = PageSizeLarge
var objects []map[string]interface{}
var response map[string]interface{}
conn, err := client.NewPrivatelinkClient()
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("2020-04-15"), StringPointer("AK"), nil, request, &runtime)
response, err = client.RpcPost("Privatelink", "2020-04-15", action, nil, request, true)
if err != nil {
return WrapErrorf(err, DataDefaultErrorMsg, "alicloud_privatelink_vpc_endpoint_service_resources", action, AlibabaCloudSdkGoERROR)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,14 +65,11 @@ func dataSourceAlicloudPrivatelinkVpcEndpointServiceUsersRead(d *schema.Resource
request["MaxResults"] = PageSizeLarge
var objects []map[string]interface{}
var response map[string]interface{}
conn, err := client.NewPrivatelinkClient()
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("2020-04-15"), StringPointer("AK"), nil, request, &runtime)
response, err = client.RpcPost("Privatelink", "2020-04-15", action, nil, request, true)
if err != nil {
return WrapErrorf(err, DataDefaultErrorMsg, "alicloud_privatelink_vpc_endpoint_service_users", action, AlibabaCloudSdkGoERROR)
}
Expand Down
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 @@ -148,14 +147,9 @@ func dataSourceAlicloudPrivatelinkVpcEndpointServicesRead(d *schema.ResourceData
}
}
var response map[string]interface{}
conn, err := client.NewPrivatelinkClient()
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("2020-04-15"), StringPointer("AK"), nil, request, &runtime)
response, err = client.RpcPost("Privatelink", "2020-04-15", action, nil, request, true)
if err != nil {
return WrapErrorf(err, DataDefaultErrorMsg, "alicloud_privatelink_vpc_endpoint_services", action, AlibabaCloudSdkGoERROR)
}
Expand Down
10 changes: 2 additions & 8 deletions alicloud/data_source_alicloud_privatelink_vpc_endpoint_zones.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import (
"fmt"

"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 @@ -85,14 +84,9 @@ func dataSourceAlicloudPrivatelinkVpcEndpointZonesRead(d *schema.ResourceData, m
var objects []map[string]interface{}
status, statusOk := d.GetOk("status")
var response map[string]interface{}
conn, err := client.NewPrivatelinkClient()
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("2020-04-15"), StringPointer("AK"), nil, request, &runtime)
response, err = client.RpcPost("Privatelink", "2020-04-15", action, nil, request, true)
if err != nil {
return WrapErrorf(err, DataDefaultErrorMsg, "alicloud_privatelink_vpc_endpoint_zones", action, AlibabaCloudSdkGoERROR)
}
Expand Down
10 changes: 2 additions & 8 deletions alicloud/data_source_alicloud_privatelink_vpc_endpoints.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 @@ -176,14 +175,9 @@ func dataSourceAlicloudPrivatelinkVpcEndpointsRead(d *schema.ResourceData, meta
}
}
var response map[string]interface{}
conn, err := client.NewPrivatelinkClient()
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("2020-04-15"), StringPointer("AK"), nil, request, &runtime)
response, err = client.RpcPost("Privatelink", "2020-04-15", action, nil, request, true)
if err != nil {
return WrapErrorf(err, DataDefaultErrorMsg, "alicloud_privatelink_vpc_endpoints", action, AlibabaCloudSdkGoERROR)
}
Expand Down
53 changes: 9 additions & 44 deletions alicloud/resource_alicloud_privatelink_vpc_endpoint.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import (
"log"
"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 @@ -125,10 +124,7 @@ func resourceAliCloudPrivateLinkVpcEndpointCreate(d *schema.ResourceData, meta i
var request map[string]interface{}
var response map[string]interface{}
query := make(map[string]interface{})
conn, err := client.NewPrivatelinkClient()
if err != nil {
return WrapError(err)
}
var err error
request = make(map[string]interface{})
request["RegionId"] = client.RegionId
request["ClientToken"] = buildClientToken(action)
Expand Down Expand Up @@ -174,11 +170,9 @@ func resourceAliCloudPrivateLinkVpcEndpointCreate(d *schema.ResourceData, meta i
if v, ok := d.GetOk("policy_document"); ok {
request["PolicyDocument"] = 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("2020-04-15"), StringPointer("AK"), query, request, &runtime)
response, err = client.RpcPost("Privatelink", "2020-04-15", action, query, request, true)
if err != nil {
if NeedRetry(err) {
wait()
Expand Down Expand Up @@ -261,10 +255,7 @@ func resourceAliCloudPrivateLinkVpcEndpointUpdate(d *schema.ResourceData, meta i
update := false
d.Partial(true)
action := "UpdateVpcEndpointAttribute"
conn, err := client.NewPrivatelinkClient()
if err != nil {
return WrapError(err)
}
var err error
request = make(map[string]interface{})
query = make(map[string]interface{})
query["EndpointId"] = d.Id()
Expand All @@ -289,11 +280,9 @@ func resourceAliCloudPrivateLinkVpcEndpointUpdate(d *schema.ResourceData, meta i
}

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("2020-04-15"), StringPointer("AK"), query, request, &runtime)
response, err = client.RpcPost("Privatelink", "2020-04-15", action, query, request, true)
if err != nil {
if IsExpectedErrors(err, []string{"EndpointLocked", "EndpointConnectionOperationDenied", "EndpointOperationDenied"}) || NeedRetry(err) {
wait()
Expand All @@ -310,10 +299,6 @@ func resourceAliCloudPrivateLinkVpcEndpointUpdate(d *schema.ResourceData, meta i
}
update = false
action = "ChangeResourceGroup"
conn, err = client.NewPrivatelinkClient()
if err != nil {
return WrapError(err)
}
request = make(map[string]interface{})
query = make(map[string]interface{})
query["ResourceId"] = d.Id()
Expand All @@ -325,11 +310,9 @@ func resourceAliCloudPrivateLinkVpcEndpointUpdate(d *schema.ResourceData, meta i

request["ResourceType"] = "VpcEndpoint"
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("2020-04-15"), StringPointer("AK"), query, request, &runtime)
response, err = client.RpcPost("Privatelink", "2020-04-15", action, query, request, false)
if err != nil {
if NeedRetry(err) {
wait()
Expand Down Expand Up @@ -368,23 +351,16 @@ func resourceAliCloudPrivateLinkVpcEndpointUpdate(d *schema.ResourceData, meta i

for _, item := range securityGroupIds {
action := "AttachSecurityGroupToVpcEndpoint"
conn, err := client.NewPrivatelinkClient()
if err != nil {
return WrapError(err)
}
request = make(map[string]interface{})
query = make(map[string]interface{})
query["EndpointId"] = d.Id()
request["RegionId"] = client.RegionId
request["ClientToken"] = buildClientToken(action)
request["DryRun"] = d.Get("dry_run")
request["SecurityGroupId"] = item

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("2020-04-15"), StringPointer("AK"), query, request, &runtime)
response, err = client.RpcPost("Privatelink", "2020-04-15", action, query, request, true)
if err != nil {
if NeedRetry(err) {
wait()
Expand Down Expand Up @@ -412,22 +388,16 @@ func resourceAliCloudPrivateLinkVpcEndpointUpdate(d *schema.ResourceData, meta i

for _, item := range securityGroupIds {
action := "DetachSecurityGroupFromVpcEndpoint"
conn, err := client.NewPrivatelinkClient()
if err != nil {
return WrapError(err)
}
request = make(map[string]interface{})
query = make(map[string]interface{})
query["EndpointId"] = d.Id()
request["RegionId"] = client.RegionId
request["ClientToken"] = buildClientToken(action)
request["DryRun"] = d.Get("dry_run")
request["SecurityGroupId"] = item
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("2020-04-15"), StringPointer("AK"), query, request, &runtime)
response, err = client.RpcPost("Privatelink", "2020-04-15", action, query, request, true)
if err != nil {
if NeedRetry(err) {
wait()
Expand Down Expand Up @@ -462,10 +432,7 @@ func resourceAliCloudPrivateLinkVpcEndpointDelete(d *schema.ResourceData, meta i
var request map[string]interface{}
var response map[string]interface{}
query := make(map[string]interface{})
conn, err := client.NewPrivatelinkClient()
if err != nil {
return WrapError(err)
}
var err error
request = make(map[string]interface{})
query["EndpointId"] = d.Id()
request["RegionId"] = client.RegionId
Expand All @@ -475,11 +442,9 @@ func resourceAliCloudPrivateLinkVpcEndpointDelete(d *schema.ResourceData, meta i
if v, ok := d.GetOkExists("dry_run"); ok {
request["DryRun"] = 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("2020-04-15"), StringPointer("AK"), query, request, &runtime)
response, err = client.RpcPost("Privatelink", "2020-04-15", action, query, request, true)
request["ClientToken"] = buildClientToken(action)

if err != nil {
Expand Down
28 changes: 6 additions & 22 deletions alicloud/resource_alicloud_privatelink_vpc_endpoint_connection.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,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 @@ -64,10 +63,7 @@ func resourceAliCloudPrivateLinkVpcEndpointConnectionCreate(d *schema.ResourceDa
var request map[string]interface{}
var response map[string]interface{}
query := make(map[string]interface{})
conn, err := client.NewPrivatelinkClient()
if err != nil {
return WrapError(err)
}
var err error
request = make(map[string]interface{})
query["ServiceId"] = d.Get("service_id")
query["EndpointId"] = d.Get("endpoint_id")
Expand All @@ -80,11 +76,9 @@ func resourceAliCloudPrivateLinkVpcEndpointConnectionCreate(d *schema.ResourceDa
if v, ok := d.GetOk("bandwidth"); ok {
request["Bandwidth"] = 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("2020-04-15"), StringPointer("AK"), query, request, &runtime)
response, err = client.RpcPost("Privatelink", "2020-04-15", action, query, request, true)
request["ClientToken"] = buildClientToken(action)

if err != nil {
Expand Down Expand Up @@ -143,10 +137,7 @@ func resourceAliCloudPrivateLinkVpcEndpointConnectionUpdate(d *schema.ResourceDa
update := false
parts := strings.Split(d.Id(), ":")
action := "UpdateVpcEndpointConnectionAttribute"
conn, err := client.NewPrivatelinkClient()
if err != nil {
return WrapError(err)
}
var err error
request = make(map[string]interface{})
query = make(map[string]interface{})
query["ServiceId"] = parts[0]
Expand All @@ -162,11 +153,9 @@ func resourceAliCloudPrivateLinkVpcEndpointConnectionUpdate(d *schema.ResourceDa
}

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("2020-04-15"), StringPointer("AK"), query, request, &runtime)
response, err = client.RpcPost("Privatelink", "2020-04-15", action, query, request, true)
request["ClientToken"] = buildClientToken(action)

if err != nil {
Expand Down Expand Up @@ -200,10 +189,7 @@ func resourceAliCloudPrivateLinkVpcEndpointConnectionDelete(d *schema.ResourceDa
var request map[string]interface{}
var response map[string]interface{}
query := make(map[string]interface{})
conn, err := client.NewPrivatelinkClient()
if err != nil {
return WrapError(err)
}
var err error
request = make(map[string]interface{})
query["ServiceId"] = parts[0]
query["EndpointId"] = parts[1]
Expand All @@ -214,11 +200,9 @@ func resourceAliCloudPrivateLinkVpcEndpointConnectionDelete(d *schema.ResourceDa
if v, ok := d.GetOkExists("dry_run"); ok {
request["DryRun"] = 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("2020-04-15"), StringPointer("AK"), query, request, &runtime)
response, err = client.RpcPost("Privatelink", "2020-04-15", action, query, request, true)
request["ClientToken"] = buildClientToken(action)

if err != nil {
Expand Down
Loading

0 comments on commit 81351de

Please sign in to comment.