@@ -19,6 +19,14 @@ resource "tencentcloud_gaap_layer7_listener" "foo" {
19
19
proxy_id = "${tencentcloud_gaap_proxy.foo.id}"
20
20
}
21
21
```
22
+
23
+ Import
24
+
25
+ GAAP layer7 listener can be imported using the id, e.g.
26
+
27
+ ```
28
+ $ terraform import tencentcloud_gaap_layer7_listener.foo listener-11112222
29
+ ```
22
30
*/
23
31
package tencentcloud
24
32
@@ -37,6 +45,10 @@ func resourceTencentCloudGaapLayer7Listener() *schema.Resource {
37
45
Read : resourceTencentCloudGaapLayer7ListenerRead ,
38
46
Update : resourceTencentCloudGaapLayer7ListenerUpdate ,
39
47
Delete : resourceTencentCloudGaapLayer7ListenerDelete ,
48
+ Importer : & schema.ResourceImporter {
49
+ State : schema .ImportStatePassthrough ,
50
+ },
51
+
40
52
Schema : map [string ]* schema.Schema {
41
53
"protocol" : {
42
54
Type : schema .TypeString ,
@@ -177,7 +189,6 @@ func resourceTencentCloudGaapLayer7ListenerRead(d *schema.ResourceData, m interf
177
189
ctx := context .WithValue (context .TODO (), "logId" , logId )
178
190
179
191
id := d .Id ()
180
- proxyId := d .Get ("proxy_id" ).(string )
181
192
protocol := d .Get ("protocol" ).(string )
182
193
var (
183
194
name string
@@ -192,110 +203,142 @@ func resourceTencentCloudGaapLayer7ListenerRead(d *schema.ResourceData, m interf
192
203
193
204
service := GaapService {client : m .(* TencentCloudClient ).apiV3Conn }
194
205
195
- switch protocol {
196
- case "HTTP" :
197
- listeners , err := service .DescribeHTTPListeners (ctx , & proxyId , & id , nil , nil )
198
- if err != nil {
199
- return err
200
- }
206
+ LOOP:
207
+ for {
208
+ switch protocol {
209
+ case "HTTP" :
210
+ listeners , err := service .DescribeHTTPListeners (ctx , nil , & id , nil , nil )
211
+ if err != nil {
212
+ return err
213
+ }
201
214
202
- var listener * gaap.HTTPListener
203
- for _ , l := range listeners {
204
- if l .ListenerId == nil {
205
- return errors .New ("listener id is nil" )
215
+ var listener * gaap.HTTPListener
216
+ for _ , l := range listeners {
217
+ if l .ListenerId == nil {
218
+ return errors .New ("listener id is nil" )
219
+ }
220
+ if * l .ListenerId == id {
221
+ listener = l
222
+ break
223
+ }
206
224
}
207
- if * l .ListenerId == id {
208
- listener = l
209
- break
225
+
226
+ if listener == nil {
227
+ d .SetId ("" )
228
+ return nil
210
229
}
211
- }
212
230
213
- if listener == nil {
214
- d . SetId ( " " )
215
- return nil
216
- }
231
+ if listener . ListenerName == nil {
232
+ return errors . New ( "listener name is nil " )
233
+ }
234
+ name = * listener . ListenerName
217
235
218
- if listener .ListenerName == nil {
219
- return errors .New ("listener name is nil" )
220
- }
221
- name = * listener .ListenerName
236
+ if listener .Port == nil {
237
+ return errors .New ("listener port is nil" )
238
+ }
239
+ port = int ( * listener .Port )
222
240
223
- if listener .Port == nil {
224
- return errors .New ("listener port is nil" )
225
- }
226
- port = int (* listener .Port )
241
+ if listener .ListenerStatus == nil {
242
+ return errors .New ("listener status is nil" )
243
+ }
244
+ status = int (* listener .ListenerStatus )
227
245
228
- if listener .ListenerStatus == nil {
229
- return errors .New ("listener status is nil" )
230
- }
231
- status = int (* listener .ListenerStatus )
246
+ if listener .CreateTime == nil {
247
+ return errors .New ("listener create time is nil" )
248
+ }
249
+ createTime = formatUnixTime (* listener .CreateTime )
232
250
233
- if listener .CreateTime == nil {
234
- return errors .New ("listener create time is nil" )
235
- }
236
- createTime = formatUnixTime (* listener .CreateTime )
251
+ break LOOP
237
252
238
- case "HTTPS" :
239
- listeners , err := service .DescribeHTTPSListeners (ctx , & proxyId , & id , nil , nil )
240
- if err != nil {
241
- return err
242
- }
253
+ case "HTTPS" :
254
+ listeners , err := service .DescribeHTTPSListeners (ctx , nil , & id , nil , nil )
255
+ if err != nil {
256
+ return err
257
+ }
243
258
244
- var listener * gaap.HTTPSListener
245
- for _ , l := range listeners {
246
- if l .ListenerId == nil {
247
- return errors .New ("listener id is nil" )
259
+ var listener * gaap.HTTPSListener
260
+ for _ , l := range listeners {
261
+ if l .ListenerId == nil {
262
+ return errors .New ("listener id is nil" )
263
+ }
264
+ if * l .ListenerId == id {
265
+ listener = l
266
+ break
267
+ }
248
268
}
249
- if * l .ListenerId == id {
250
- listener = l
251
- break
269
+
270
+ if listener == nil {
271
+ d .SetId ("" )
272
+ return nil
252
273
}
253
- }
254
274
255
- if listener == nil {
256
- d . SetId ( " " )
257
- return nil
258
- }
275
+ if listener . ListenerName == nil {
276
+ return errors . New ( "listener name is nil " )
277
+ }
278
+ name = * listener . ListenerName
259
279
260
- if listener .ListenerName == nil {
261
- return errors .New ("listener name is nil" )
262
- }
263
- name = * listener .ListenerName
280
+ if listener .Port == nil {
281
+ return errors .New ("listener port is nil" )
282
+ }
283
+ port = int ( * listener .Port )
264
284
265
- if listener .Port == nil {
266
- return errors .New ("listener port is nil" )
267
- }
268
- port = int ( * listener .Port )
285
+ if listener .CertificateId == nil {
286
+ return errors .New ("listener certificate id is nil" )
287
+ }
288
+ certificateId = * listener .CertificateId
269
289
270
- if listener .CertificateId == nil {
271
- return errors .New ("listener certificate id is nil" )
272
- }
273
- certificateId = * listener .CertificateId
290
+ if listener .ForwardProtocol == nil {
291
+ return errors .New ("listener forward protocol is nil" )
292
+ }
293
+ forwardProtocol = listener .ForwardProtocol
274
294
275
- if listener .ForwardProtocol == nil {
276
- return errors .New ("listener forward protocol is nil" )
277
- }
278
- forwardProtocol = listener .ForwardProtocol
295
+ if listener .AuthType == nil {
296
+ return errors .New ("listener auth type is nil" )
297
+ }
298
+ authType = common . IntPtr ( int ( * listener .AuthType ))
279
299
280
- if listener .AuthType == nil {
281
- return errors .New ("listener auth type is nil" )
282
- }
283
- authType = common .IntPtr (int (* listener .AuthType ))
300
+ if listener .ClientCertificateId != nil {
301
+ clientCertificateId = * listener .ClientCertificateId
302
+ }
284
303
285
- if listener .ClientCertificateId != nil {
286
- clientCertificateId = * listener .ClientCertificateId
287
- }
304
+ if listener .ListenerStatus == nil {
305
+ return errors .New ("listener status is nil" )
306
+ }
307
+ status = int (* listener .ListenerStatus )
288
308
289
- if listener .ListenerStatus == nil {
290
- return errors .New ("listener status is nil" )
291
- }
292
- status = int (* listener .ListenerStatus )
309
+ if listener .CreateTime == nil {
310
+ return errors .New ("listener create time is nil" )
311
+ }
312
+ createTime = formatUnixTime (* listener .CreateTime )
293
313
294
- if listener .CreateTime == nil {
295
- return errors .New ("listener create time is nil" )
314
+ break LOOP
315
+
316
+ case "" :
317
+ // import mode, need check protocol
318
+ httpListeners , err := service .DescribeHTTPListeners (ctx , nil , & id , nil , nil )
319
+ if err != nil {
320
+ return err
321
+ }
322
+ if len (httpListeners ) > 0 {
323
+ protocol = "HTTP"
324
+ continue
325
+ }
326
+
327
+ httpsListeners , err := service .DescribeHTTPSListeners (ctx , nil , & id , nil , nil )
328
+ if err != nil {
329
+ return err
330
+ }
331
+ if len (httpsListeners ) > 0 {
332
+ protocol = "HTTPS"
333
+ continue
334
+ }
335
+
336
+ // layer7 listener is not found
337
+ d .SetId ("" )
338
+ return nil
296
339
}
297
- createTime = formatUnixTime (* listener .CreateTime )
298
340
}
341
+ d .Set ("protocol" , protocol )
299
342
300
343
d .Set ("name" , name )
301
344
d .Set ("port" , port )
0 commit comments