Skip to content

Commit fdeaa47

Browse files
authored
Merge pull request #474 from Sherlock-Holo/gaap-listener-fix
fix: gaap listener destroy may fail
2 parents 4cb2203 + 0cd5427 commit fdeaa47

5 files changed

+79
-4
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,11 @@ ENHANCEMENTS:
1111
* Resource: `tencentcloud_ccn` add new argument `tags` to support tags settings..
1212
* Resource `tencentcloud_cfs_file_system` add new argument `tags` to support tags settings.
1313

14+
BUG FIXES:
15+
16+
* Resource: `tencentcloud_gaap_layer4_listener` fix error InvalidParameter when destroy resource.
17+
* Resource: `tencentcloud_gaap_layer7_listener` fix error InvalidParameter when destroy resource.
18+
1419
## 1.38.2 (July 03, 2020)
1520

1621
BUG FIXES:

tencentcloud/resource_tc_gaap_http_domain_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -504,15 +504,15 @@ resource tencentcloud_gaap_layer7_listener "foo" {
504504
port = 80
505505
proxy_id = "%s"
506506
certificate_id = tencentcloud_gaap_certificate.foo.id
507-
client_certificate_ids = [tencentcloud_gaap_certificate.bar.id]
507+
client_certificate_ids = [tencentcloud_gaap_certificate.bar.id]
508508
forward_protocol = "HTTPS"
509509
auth_type = 1
510510
}
511511
512512
resource tencentcloud_gaap_http_domain "foo" {
513513
listener_id = tencentcloud_gaap_layer7_listener.foo.id
514514
domain = "www.qq.com"
515-
client_certificate_ids = [tencentcloud_gaap_certificate.client1.id]
515+
client_certificate_ids = [tencentcloud_gaap_certificate.client1.id]
516516
}
517517
518518
`, "<<EOF"+testAccGaapCertificateServerCert+"EOF", "<<EOF"+testAccGaapCertificateServerKey+"EOF",

tencentcloud/resource_tc_gaap_layer4_listener_test.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88

99
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
1010
"github.com/hashicorp/terraform-plugin-sdk/terraform"
11+
sdkErrors "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors"
1112
)
1213

1314
func TestAccTencentCloudGaapLayer4Listener_basic(t *testing.T) {
@@ -291,6 +292,12 @@ func testAccCheckGaapLayer4ListenerDestroy(id *string, protocol string) resource
291292
case "TCP":
292293
listeners, err := service.DescribeTCPListeners(context.TODO(), nil, id, nil, nil)
293294
if err != nil {
295+
if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok {
296+
if sdkError.Code == GAAPResourceNotFound || (sdkError.Code == "InvalidParameter" && sdkError.Message == "ListenerId") {
297+
return nil
298+
}
299+
}
300+
294301
return err
295302
}
296303
if len(listeners) > 0 {

tencentcloud/resource_tc_gaap_layer7_listener_test.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88

99
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
1010
"github.com/hashicorp/terraform-plugin-sdk/terraform"
11+
sdkErrors "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors"
1112
)
1213

1314
func TestAccTencentCloudGaapLayer7Listener_basic(t *testing.T) {
@@ -291,6 +292,12 @@ func testAccCheckGaapLayer7ListenerDestroy(id *string, protocol string) resource
291292
case "HTTP":
292293
listeners, err := service.DescribeHTTPListeners(context.TODO(), nil, id, nil, nil)
293294
if err != nil {
295+
if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok {
296+
if sdkError.Code == GAAPResourceNotFound || (sdkError.Code == "InvalidParameter" && sdkError.Message == "ListenerId") {
297+
return nil
298+
}
299+
}
300+
294301
return err
295302
}
296303
if len(listeners) > 0 {
@@ -300,6 +307,12 @@ func testAccCheckGaapLayer7ListenerDestroy(id *string, protocol string) resource
300307
case "HTTPS":
301308
listeners, err := service.DescribeHTTPSListeners(context.TODO(), nil, id, nil, nil)
302309
if err != nil {
310+
if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok {
311+
if sdkError.Code == GAAPResourceNotFound || (sdkError.Code == "InvalidParameter" && sdkError.Message == "ListenerId") {
312+
return nil
313+
}
314+
}
315+
303316
return err
304317
}
305318
if len(listeners) > 0 {

tencentcloud/service_tencentcloud_gaap.go

Lines changed: 52 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1012,6 +1012,12 @@ func (me *GaapService) DescribeTCPListeners(ctx context.Context, proxyId, listen
10121012
if err != nil {
10131013
count = 0
10141014

1015+
if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok {
1016+
if sdkError.Code == GAAPResourceNotFound || (sdkError.Code == "InvalidParameter" && sdkError.Message == "ListenerId") {
1017+
return nil
1018+
}
1019+
}
1020+
10151021
log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]",
10161022
logId, request.GetAction(), request.ToJsonString(), err)
10171023
return retryError(err)
@@ -1067,6 +1073,12 @@ func (me *GaapService) DescribeUDPListeners(ctx context.Context, proxyId, id, na
10671073
if err != nil {
10681074
count = 0
10691075

1076+
if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok {
1077+
if sdkError.Code == GAAPResourceNotFound || (sdkError.Code == "InvalidParameter" && sdkError.Message == "ListenerId") {
1078+
return nil
1079+
}
1080+
}
1081+
10701082
log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]",
10711083
logId, request.GetAction(), request.ToJsonString(), err)
10721084
return retryError(err, GAAPInternalError)
@@ -1224,6 +1236,12 @@ func (me *GaapService) DeleteLayer4Listener(ctx context.Context, id, proxyId, pr
12241236

12251237
response, err := client.DescribeTCPListeners(describeRequest)
12261238
if err != nil {
1239+
if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok {
1240+
if sdkError.Code == GAAPResourceNotFound || (sdkError.Code == "InvalidParameter" && sdkError.Message == "ListenerId") {
1241+
return nil
1242+
}
1243+
}
1244+
12271245
log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]",
12281246
logId, describeRequest.GetAction(), describeRequest.ToJsonString(), err)
12291247
return retryError(err, GAAPInternalError)
@@ -1250,6 +1268,12 @@ func (me *GaapService) DeleteLayer4Listener(ctx context.Context, id, proxyId, pr
12501268

12511269
response, err := client.DescribeUDPListeners(describeRequest)
12521270
if err != nil {
1271+
if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok {
1272+
if sdkError.Code == GAAPResourceNotFound || (sdkError.Code == "InvalidParameter" && sdkError.Message == "ListenerId") {
1273+
return nil
1274+
}
1275+
}
1276+
12531277
log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]",
12541278
logId, describeRequest.GetAction(), describeRequest.ToJsonString(), err)
12551279
return retryError(err, GAAPInternalError)
@@ -1790,6 +1814,12 @@ func (me *GaapService) DescribeHTTPListeners(
17901814
if err != nil {
17911815
count = 0
17921816

1817+
if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok {
1818+
if sdkError.Code == GAAPResourceNotFound || (sdkError.Code == "InvalidParameter" && sdkError.Message == "ListenerId") {
1819+
return nil
1820+
}
1821+
}
1822+
17931823
log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]",
17941824
logId, request.GetAction(), request.ToJsonString(), err)
17951825
return retryError(err)
@@ -1849,6 +1879,12 @@ func (me *GaapService) DescribeHTTPSListeners(
18491879
if err != nil {
18501880
count = 0
18511881

1882+
if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok {
1883+
if sdkError.Code == GAAPResourceNotFound || (sdkError.Code == "InvalidParameter" && sdkError.Message == "ListenerId") {
1884+
return nil
1885+
}
1886+
}
1887+
18521888
log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]",
18531889
logId, request.GetAction(), request.ToJsonString(), err)
18541890
return retryError(err)
@@ -1986,14 +2022,21 @@ func (me *GaapService) DeleteLayer7Listener(ctx context.Context, id, proxyId, pr
19862022
switch protocol {
19872023
case "HTTP":
19882024
describeRequest := gaap.NewDescribeHTTPListenersRequest()
1989-
describeRequest.ProxyId = &proxyId
2025+
// don't set proxy id it may cause InternalError
2026+
//describeRequest.ProxyId = &proxyId
19902027
describeRequest.ListenerId = &id
19912028

19922029
if err := resource.Retry(readRetryTimeout, func() *resource.RetryError {
19932030
ratelimit.Check(describeRequest.GetAction())
19942031

19952032
response, err := client.DescribeHTTPListeners(describeRequest)
19962033
if err != nil {
2034+
if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok {
2035+
if sdkError.Code == GAAPResourceNotFound || (sdkError.Code == "InvalidParameter" && sdkError.Message == "ListenerId") {
2036+
return nil
2037+
}
2038+
}
2039+
19972040
log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]",
19982041
logId, describeRequest.GetAction(), describeRequest.ToJsonString(), err)
19992042
return retryError(err, GAAPInternalError)
@@ -2013,14 +2056,21 @@ func (me *GaapService) DeleteLayer7Listener(ctx context.Context, id, proxyId, pr
20132056

20142057
case "HTTPS":
20152058
describeRequest := gaap.NewDescribeHTTPSListenersRequest()
2016-
describeRequest.ProxyId = &proxyId
2059+
// don't set proxy id it may cause InternalError
2060+
//describeRequest.ProxyId = &proxyId
20172061
describeRequest.ListenerId = &id
20182062

20192063
if err := resource.Retry(readRetryTimeout, func() *resource.RetryError {
20202064
ratelimit.Check(describeRequest.GetAction())
20212065

20222066
response, err := client.DescribeHTTPSListeners(describeRequest)
20232067
if err != nil {
2068+
if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok {
2069+
if sdkError.Code == GAAPResourceNotFound || (sdkError.Code == "InvalidParameter" && sdkError.Message == "ListenerId") {
2070+
return nil
2071+
}
2072+
}
2073+
20242074
log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]",
20252075
logId, describeRequest.GetAction(), describeRequest.ToJsonString(), err)
20262076
return retryError(err, GAAPInternalError)

0 commit comments

Comments
 (0)