Skip to content

Commit 8df4a38

Browse files
committed
fix: gaap listener destroy may fail
1 parent ef9b9c2 commit 8df4a38

File tree

4 files changed

+120
-4
lines changed

4 files changed

+120
-4
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,11 @@ ENHANCEMENTS:
55
* Data Source: `tencentcloud_images` supports list of snapshots.
66
* Resource: `tencentcloud_kubernetes_cluster_attachment` add new argument `worker_config` to support config with existing instances.
77

8+
BUG FIXES:
9+
10+
* Resource: `tencentcloud_gaap_layer4_listener` fix error InvalidParameter when destroy resource.
11+
* Resource: `tencentcloud_gaap_layer7_listener` fix error InvalidParameter when destroy resource.
12+
813
## 1.38.2 (July 03, 2020)
914

1015
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: 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 TestAccTencentCloudGaapLayer4Listener_basic(t *testing.T) {
@@ -291,6 +292,18 @@ 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+
switch sdkError.Code {
297+
case GAAPResourceNotFound:
298+
return nil
299+
300+
case "InvalidParameter":
301+
if sdkError.Message == "ListenerId" {
302+
return nil
303+
}
304+
}
305+
}
306+
294307
return err
295308
}
296309
if len(listeners) > 0 {

tencentcloud/service_tencentcloud_gaap.go

Lines changed: 100 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1012,6 +1012,18 @@ 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+
switch sdkError.Code {
1017+
case GAAPResourceNotFound:
1018+
return nil
1019+
1020+
case "InvalidParameter":
1021+
if sdkError.Message == "ListenerId" {
1022+
return nil
1023+
}
1024+
}
1025+
}
1026+
10151027
log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]",
10161028
logId, request.GetAction(), request.ToJsonString(), err)
10171029
return retryError(err)
@@ -1067,6 +1079,18 @@ func (me *GaapService) DescribeUDPListeners(ctx context.Context, proxyId, id, na
10671079
if err != nil {
10681080
count = 0
10691081

1082+
if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok {
1083+
switch sdkError.Code {
1084+
case GAAPResourceNotFound:
1085+
return nil
1086+
1087+
case "InvalidParameter":
1088+
if sdkError.Message == "ListenerId" {
1089+
return nil
1090+
}
1091+
}
1092+
}
1093+
10701094
log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]",
10711095
logId, request.GetAction(), request.ToJsonString(), err)
10721096
return retryError(err, GAAPInternalError)
@@ -1224,6 +1248,18 @@ func (me *GaapService) DeleteLayer4Listener(ctx context.Context, id, proxyId, pr
12241248

12251249
response, err := client.DescribeTCPListeners(describeRequest)
12261250
if err != nil {
1251+
if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok {
1252+
switch sdkError.Code {
1253+
case GAAPResourceNotFound:
1254+
return nil
1255+
1256+
case "InvalidParameter":
1257+
if sdkError.Message == "ListenerId" {
1258+
return nil
1259+
}
1260+
}
1261+
}
1262+
12271263
log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]",
12281264
logId, describeRequest.GetAction(), describeRequest.ToJsonString(), err)
12291265
return retryError(err, GAAPInternalError)
@@ -1250,6 +1286,18 @@ func (me *GaapService) DeleteLayer4Listener(ctx context.Context, id, proxyId, pr
12501286

12511287
response, err := client.DescribeUDPListeners(describeRequest)
12521288
if err != nil {
1289+
if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok {
1290+
switch sdkError.Code {
1291+
case GAAPResourceNotFound:
1292+
return nil
1293+
1294+
case "InvalidParameter":
1295+
if sdkError.Message == "ListenerId" {
1296+
return nil
1297+
}
1298+
}
1299+
}
1300+
12531301
log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]",
12541302
logId, describeRequest.GetAction(), describeRequest.ToJsonString(), err)
12551303
return retryError(err, GAAPInternalError)
@@ -1790,6 +1838,18 @@ func (me *GaapService) DescribeHTTPListeners(
17901838
if err != nil {
17911839
count = 0
17921840

1841+
if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok {
1842+
switch sdkError.Code {
1843+
case GAAPResourceNotFound:
1844+
return nil
1845+
1846+
case "InvalidParameter":
1847+
if sdkError.Message == "ListenerId" {
1848+
return nil
1849+
}
1850+
}
1851+
}
1852+
17931853
log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]",
17941854
logId, request.GetAction(), request.ToJsonString(), err)
17951855
return retryError(err)
@@ -1849,6 +1909,18 @@ func (me *GaapService) DescribeHTTPSListeners(
18491909
if err != nil {
18501910
count = 0
18511911

1912+
if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok {
1913+
switch sdkError.Code {
1914+
case GAAPResourceNotFound:
1915+
return nil
1916+
1917+
case "InvalidParameter":
1918+
if sdkError.Message == "ListenerId" {
1919+
return nil
1920+
}
1921+
}
1922+
}
1923+
18521924
log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]",
18531925
logId, request.GetAction(), request.ToJsonString(), err)
18541926
return retryError(err)
@@ -1986,14 +2058,27 @@ func (me *GaapService) DeleteLayer7Listener(ctx context.Context, id, proxyId, pr
19862058
switch protocol {
19872059
case "HTTP":
19882060
describeRequest := gaap.NewDescribeHTTPListenersRequest()
1989-
describeRequest.ProxyId = &proxyId
2061+
// don't set proxy id it may cause InternalError
2062+
//describeRequest.ProxyId = &proxyId
19902063
describeRequest.ListenerId = &id
19912064

19922065
if err := resource.Retry(readRetryTimeout, func() *resource.RetryError {
19932066
ratelimit.Check(describeRequest.GetAction())
19942067

19952068
response, err := client.DescribeHTTPListeners(describeRequest)
19962069
if err != nil {
2070+
if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok {
2071+
switch sdkError.Code {
2072+
case GAAPResourceNotFound:
2073+
return nil
2074+
2075+
case "InvalidParameter":
2076+
if sdkError.Message == "ListenerId" {
2077+
return nil
2078+
}
2079+
}
2080+
}
2081+
19972082
log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]",
19982083
logId, describeRequest.GetAction(), describeRequest.ToJsonString(), err)
19992084
return retryError(err, GAAPInternalError)
@@ -2013,14 +2098,27 @@ func (me *GaapService) DeleteLayer7Listener(ctx context.Context, id, proxyId, pr
20132098

20142099
case "HTTPS":
20152100
describeRequest := gaap.NewDescribeHTTPSListenersRequest()
2016-
describeRequest.ProxyId = &proxyId
2101+
// don't set proxy id it may cause InternalError
2102+
//describeRequest.ProxyId = &proxyId
20172103
describeRequest.ListenerId = &id
20182104

20192105
if err := resource.Retry(readRetryTimeout, func() *resource.RetryError {
20202106
ratelimit.Check(describeRequest.GetAction())
20212107

20222108
response, err := client.DescribeHTTPSListeners(describeRequest)
20232109
if err != nil {
2110+
if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok {
2111+
switch sdkError.Code {
2112+
case GAAPResourceNotFound:
2113+
return nil
2114+
2115+
case "InvalidParameter":
2116+
if sdkError.Message == "ListenerId" {
2117+
return nil
2118+
}
2119+
}
2120+
}
2121+
20242122
log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]",
20252123
logId, describeRequest.GetAction(), describeRequest.ToJsonString(), err)
20262124
return retryError(err, GAAPInternalError)

0 commit comments

Comments
 (0)