Skip to content

Commit

Permalink
resource/alicloud_privatelink_vpc_endpoint_service_resource: support …
Browse files Browse the repository at this point in the history
…gwlb type.
  • Loading branch information
ChenHanZhang committed Dec 19, 2024
1 parent 656b9c4 commit a646a85
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 45 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ func resourceAliCloudPrivateLinkVpcEndpointServiceResource() *schema.Resource {
Type: schema.TypeString,
Required: true,
ForceNew: true,
ValidateFunc: StringInSlice([]string{"slb", "alb", "nlb"}, false),
ValidateFunc: StringInSlice([]string{"slb", "alb", "nlb", "gwlb"}, false),
},
"service_id": {
Type: schema.TypeString,
Expand Down Expand Up @@ -191,7 +191,7 @@ func resourceAliCloudPrivateLinkVpcEndpointServiceResourceDelete(d *schema.Resou
request["ClientToken"] = buildClientToken(action)

if err != nil {
if IsExpectedErrors(err, []string{"ConcurrentCallNotSupported", "EndpointServiceConnectionDependence"}) || NeedRetry(err) {
if IsExpectedErrors(err, []string{"EndpointServiceConnectionDependence", "ConcurrentCallNotSupported"}) || NeedRetry(err) {
wait()
return resource.RetryableError(err)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -305,40 +305,43 @@ func TestUnitAlicloudPrivatelinkVpcEndpointServiceResource(t *testing.T) {
}

// Test PrivateLink VpcEndpointServiceResource. >>> Resource test cases, automatically generated.
// Case 5022
func TestAccAliCloudPrivateLinkVpcEndpointServiceResource_basic5022(t *testing.T) {
// Case 生命周期测试-VpcEndpointServiceResource_gwlb 9625
func TestAccAliCloudPrivateLinkVpcEndpointServiceResource_basic9625(t *testing.T) {
var v map[string]interface{}
resourceId := "alicloud_privatelink_vpc_endpoint_service_resource.default"
ra := resourceAttrInit(resourceId, AlicloudPrivateLinkVpcEndpointServiceResourceMap5022)
ra := resourceAttrInit(resourceId, AlicloudPrivateLinkVpcEndpointServiceResourceMap9625)
rc := resourceCheckInitWithDescribeMethod(resourceId, &v, func() interface{} {
return &PrivateLinkServiceV2{testAccProvider.Meta().(*connectivity.AliyunClient)}
}, "DescribePrivateLinkVpcEndpointServiceResource")
rac := resourceAttrCheckInit(rc, ra)
testAccCheck := rac.resourceAttrMapUpdateSet()
rand := acctest.RandIntRange(10000, 99999)
name := fmt.Sprintf("tf-testacc%sprivatelinkvpcendpointserviceresource%d", defaultRegionToTest, rand)
testAccConfig := resourceTestAccConfigFunc(resourceId, name, AlicloudPrivateLinkVpcEndpointServiceResourceBasicDependence5022)
testAccConfig := resourceTestAccConfigFunc(resourceId, name, AlicloudPrivateLinkVpcEndpointServiceResourceBasicDependence9625)
resource.Test(t, resource.TestCase{
PreCheck: func() {
testAccPreCheck(t)
testAccPreCheckWithRegions(t, true, []connectivity.Region{"cn-wulanchabu"})
},
IDRefreshName: resourceId,
Providers: testAccProviders,
CheckDestroy: rac.checkResourceDestroy(),
Steps: []resource.TestStep{
{
Config: testAccConfig(map[string]interface{}{
"resource_id": "${alicloud_nlb_load_balancer.defaultJB9ul9.id}",
"resource_type": "nlb",
"resource_id": "${alicloud_gwlb_load_balancer.defaultGllPJd.id}",
"resource_type": "gwlb",
"service_id": "${alicloud_privatelink_vpc_endpoint_service.defaultQtVkqH.id}",
"zone_id": "${data.alicloud_nlb_zones.default.zones.0.id}",
"zone_id": "${var.zone_id_1}",
"dry_run": "false",
}),
Check: resource.ComposeTestCheckFunc(
testAccCheck(map[string]string{
"resource_id": CHECKSET,
"resource_type": "nlb",
"resource_type": "gwlb",
"service_id": CHECKSET,
"zone_id": CHECKSET,
"dry_run": "false",
}),
),
},
Expand All @@ -352,55 +355,49 @@ func TestAccAliCloudPrivateLinkVpcEndpointServiceResource_basic5022(t *testing.T
})
}

var AlicloudPrivateLinkVpcEndpointServiceResourceMap5022 = map[string]string{
"zone_id": CHECKSET,
var AlicloudPrivateLinkVpcEndpointServiceResourceMap9625 = map[string]string{
"region_id": CHECKSET,
}

func AlicloudPrivateLinkVpcEndpointServiceResourceBasicDependence5022(name string) string {
func AlicloudPrivateLinkVpcEndpointServiceResourceBasicDependence9625(name string) string {
return fmt.Sprintf(`
variable "name" {
default = "%s"
}
data "alicloud_nlb_zones" "default" {}
variable "zone_id_1" {
default = "cn-wulanchabu-b"
}
variable "region_id" {
default = "cn-wulanchabu"
}
resource "alicloud_vpc" "defaultvVpc" {
description = "test"
cidr_block = "10.0.0.0/8"
vpc_name = var.name
}
resource "alicloud_vswitch" "defaultVSwitch1" {
vpc_id = alicloud_vpc.defaultvVpc.id
zone_id = data.alicloud_nlb_zones.default.zones.0.id
cidr_block = "10.1.0.0/16"
}
resource "alicloud_vswitch" "defaultVSwitch2" {
vpc_id = alicloud_vpc.defaultvVpc.id
zone_id = data.alicloud_nlb_zones.default.zones.1.id
cidr_block = "10.10.0.0/16"
zone_id = var.zone_id_1
cidr_block = "10.2.0.0/16"
}
resource "alicloud_nlb_load_balancer" "defaultJB9ul9" {
load_balancer_name = var.name
vpc_id = alicloud_vpc.defaultvVpc.id
resource "alicloud_gwlb_load_balancer" "defaultGllPJd" {
load_balancer_name = format("%%s2", var.name)
address_ip_version = "Ipv4"
vpc_id = alicloud_vpc.defaultvVpc.id
zone_mappings {
vswitch_id = alicloud_vswitch.defaultVSwitch1.id
zone_id = data.alicloud_nlb_zones.default.zones.0.id
}
zone_mappings {
vswitch_id = alicloud_vswitch.defaultVSwitch2.id
zone_id = data.alicloud_nlb_zones.default.zones.1.id
zone_id = var.zone_id_1
}
address_type = "Intranet"
}
resource "alicloud_privatelink_vpc_endpoint_service" "defaultQtVkqH" {
service_description = "test-zejun"
service_resource_type = "nlb"
service_description = "test-lengqing"
service_resource_type = "gwlb"
}
Expand Down
7 changes: 5 additions & 2 deletions alicloud/service_alicloud_private_link_v2.go
Original file line number Diff line number Diff line change
Expand Up @@ -331,7 +331,10 @@ func (s *PrivateLinkServiceV2) DescribePrivateLinkVpcEndpointServiceResource(id
var request map[string]interface{}
var response map[string]interface{}
var query map[string]interface{}
parts, _ := ParseResourceIds(id)
parts := strings.Split(id, ":")
if len(parts) > 3 {
err = WrapError(fmt.Errorf("invalid Resource Id %s. Expected parts' length %d, got %d", id, 3, len(parts)))
}
action := "ListVpcEndpointServiceResources"
conn, err := client.NewPrivatelinkClient()
if err != nil {
Expand Down Expand Up @@ -367,7 +370,7 @@ func (s *PrivateLinkServiceV2) DescribePrivateLinkVpcEndpointServiceResource(id

v, err := jsonpath.Get("$.Resources[*]", response)
if err != nil {
return object, WrapErrorf(Error(GetNotFoundMessage("VpcEndpointServiceResource", id)), NotFoundMsg, response)
return object, WrapErrorf(err, FailedGetAttributeMsg, id, "$.Resources[*]", response)
}

if len(v.([]interface{})) == 0 {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,6 @@ For information about Private Link Vpc Endpoint Service Resource and how to use

Basic Usage

<div style="display: block;margin-bottom: 40px;"><div class="oics-button" style="float: right;position: absolute;margin-bottom: 10px;">
<a href="https://api.aliyun.com/terraform?resource=alicloud_privatelink_vpc_endpoint_service_resource&exampleId=f5cf7ac8-4ff3-f926-314e-3f45599f33ee5bbbed0e&activeTab=example&spm=docs.r.privatelink_vpc_endpoint_service_resource.0.f5cf7ac84f&intl_lang=EN_US" target="_blank">
<img alt="Open in AliCloud" src="https://img.alicdn.com/imgextra/i1/O1CN01hjjqXv1uYUlY56FyX_!!6000000006049-55-tps-254-36.svg" style="max-height: 44px; max-width: 100%;">
</a>
</div></div>

```terraform
variable "name" {
default = "tf_example"
Expand Down Expand Up @@ -53,8 +47,8 @@ resource "alicloud_vswitch" "example" {
}
resource "alicloud_security_group" "example" {
name = var.name
vpc_id = alicloud_vpc.example.id
security_group_name = var.name
vpc_id = alicloud_vpc.example.id
}
resource "alicloud_slb_load_balancer" "example" {
Expand Down

0 comments on commit a646a85

Please sign in to comment.