6
6
"log"
7
7
"time"
8
8
9
- util "github.com/alibabacloud-go/tea-utils/service"
10
9
"github.com/aliyun/terraform-provider-alicloud/alicloud/connectivity"
11
10
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
12
11
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
@@ -44,7 +43,7 @@ func resourceAliCloudAmqpInstance() *schema.Resource {
44
43
Type : schema .TypeString ,
45
44
Optional : true ,
46
45
Computed : true ,
47
- ValidateFunc : StringInSlice ([]string {"professional" , "enterprise" , "vip" }, true ),
46
+ ValidateFunc : StringInSlice ([]string {"professional" , "enterprise" , "vip" , "serverless" }, true ),
48
47
},
49
48
"max_connections" : {
50
49
Type : schema .TypeInt ,
@@ -178,11 +177,8 @@ func resourceAliCloudAmqpInstanceCreate(d *schema.ResourceData, meta interface{}
178
177
action := "CreateInstance"
179
178
var request map [string ]interface {}
180
179
var response map [string ]interface {}
180
+ var err error
181
181
query := make (map [string ]interface {})
182
- conn , err := client .NewOnsproxyClient ()
183
- if err != nil {
184
- return WrapError (err )
185
- }
186
182
request = make (map [string ]interface {})
187
183
188
184
request ["ClientToken" ] = buildClientToken (action )
@@ -239,11 +235,9 @@ func resourceAliCloudAmqpInstanceCreate(d *schema.ResourceData, meta interface{}
239
235
if v , ok := d .GetOk ("max_tps" ); ok {
240
236
request ["MaxPrivateTps" ] = v
241
237
}
242
- runtime := util.RuntimeOptions {}
243
- runtime .SetAutoretry (true )
244
238
wait := incrementalWait (3 * time .Second , 5 * time .Second )
245
239
err = resource .Retry (d .Timeout (schema .TimeoutCreate ), func () * resource.RetryError {
246
- response , err = conn . DoRequest ( StringPointer ( action ), nil , StringPointer ( "POST" ), StringPointer ( "2019-12-12" ), StringPointer ( "AK" ) , query , request , & runtime )
240
+ response , err = client . RpcPost ( "amqp-open" , "2019-12-12" , action , query , request , true )
247
241
request ["ClientToken" ] = buildClientToken (action )
248
242
249
243
if err != nil {
@@ -260,11 +254,6 @@ func resourceAliCloudAmqpInstanceCreate(d *schema.ResourceData, meta interface{}
260
254
if err != nil {
261
255
return WrapErrorf (err , DefaultErrorMsg , "alicloud_amqp_instance" , action , AlibabaCloudSdkGoERROR )
262
256
}
263
- code , _ := jsonpath .Get ("$.Code" , response )
264
- if fmt .Sprint (code ) != "200" {
265
- log .Printf ("[DEBUG] Resource alicloud_amqp_instance CreateInstance Failed!!! %s" , response )
266
- return WrapErrorf (err , DefaultErrorMsg , "alicloud_amqp_instance" , action , AlibabaCloudSdkGoERROR , response )
267
- }
268
257
269
258
d .SetId (fmt .Sprint (response ["Data" ]))
270
259
@@ -327,14 +316,12 @@ func resourceAliCloudAmqpInstanceUpdate(d *schema.ResourceData, meta interface{}
327
316
client := meta .(* connectivity.AliyunClient )
328
317
var request map [string ]interface {}
329
318
var response map [string ]interface {}
319
+ var err error
320
+ var endpoint string
330
321
var query map [string ]interface {}
331
322
update := false
332
323
d .Partial (true )
333
324
action := "SetRenewal"
334
- conn , err := client .NewBssopenapiClient ()
335
- if err != nil {
336
- return WrapError (err )
337
- }
338
325
request = make (map [string ]interface {})
339
326
query = make (map [string ]interface {})
340
327
query ["InstanceIDs" ] = d .Id ()
@@ -365,22 +352,19 @@ func resourceAliCloudAmqpInstanceUpdate(d *schema.ResourceData, meta interface{}
365
352
366
353
request ["ProductCode" ] = "ons"
367
354
if update {
368
- runtime := util.RuntimeOptions {}
369
- runtime .SetAutoretry (true )
370
355
wait := incrementalWait (3 * time .Second , 5 * time .Second )
371
- err = resource .Retry (d .Timeout (schema .TimeoutUpdate ), func () * resource.RetryError {
372
- response , err = conn .DoRequest (StringPointer (action ), nil , StringPointer ("POST" ), StringPointer ("2017-12-14" ), StringPointer ("AK" ), query , request , & runtime )
373
-
356
+ err = resource .Retry (d .Timeout (schema .TimeoutDelete ), func () * resource.RetryError {
357
+ response , err = client .RpcPostWithEndpoint ("BssOpenApi" , "2017-12-14" , action , query , request , true , endpoint )
374
358
if err != nil {
375
- if IsExpectedErrors (err , []string {"NotApplicable" }) {
376
- conn .Endpoint = String (connectivity .BssOpenAPIEndpointInternational )
377
- request ["ProductType" ] = "ons_onsproxy_public_intl"
378
- return resource .RetryableError (err )
379
- }
380
359
if NeedRetry (err ) {
381
360
wait ()
382
361
return resource .RetryableError (err )
383
362
}
363
+ if ! client .IsInternationalAccount () && IsExpectedErrors (err , []string {"NotApplicable" }) {
364
+ request ["ProductType" ] = "ons_onsproxy_public_intl"
365
+ endpoint = connectivity .BssOpenAPIEndpointInternational
366
+ return resource .RetryableError (err )
367
+ }
384
368
return resource .NonRetryableError (err )
385
369
}
386
370
addDebug (action , response , request )
@@ -395,10 +379,6 @@ func resourceAliCloudAmqpInstanceUpdate(d *schema.ResourceData, meta interface{}
395
379
}
396
380
update = false
397
381
action = "UpdateInstanceName"
398
- conn , err = client .NewOnsproxyClient ()
399
- if err != nil {
400
- return WrapError (err )
401
- }
402
382
request = make (map [string ]interface {})
403
383
query = make (map [string ]interface {})
404
384
query ["InstanceId" ] = d .Id ()
@@ -408,11 +388,9 @@ func resourceAliCloudAmqpInstanceUpdate(d *schema.ResourceData, meta interface{}
408
388
}
409
389
410
390
if update {
411
- runtime := util.RuntimeOptions {}
412
- runtime .SetAutoretry (true )
413
391
wait := incrementalWait (3 * time .Second , 5 * time .Second )
414
392
err = resource .Retry (d .Timeout (schema .TimeoutUpdate ), func () * resource.RetryError {
415
- response , err = conn . DoRequest ( StringPointer ( action ), nil , StringPointer ( "POST" ), StringPointer ( "2019-12-12" ), StringPointer ( "AK" ) , query , request , & runtime )
393
+ response , err = client . RpcPost ( "amqp-open" , "2019-12-12" , action , query , request , false )
416
394
417
395
if err != nil {
418
396
if NeedRetry (err ) {
@@ -431,10 +409,6 @@ func resourceAliCloudAmqpInstanceUpdate(d *schema.ResourceData, meta interface{}
431
409
}
432
410
update = false
433
411
action = "UpdateInstance"
434
- conn , err = client .NewOnsproxyClient ()
435
- if err != nil {
436
- return WrapError (err )
437
- }
438
412
request = make (map [string ]interface {})
439
413
query = make (map [string ]interface {})
440
414
query ["InstanceId" ] = d .Id ()
@@ -445,7 +419,7 @@ func resourceAliCloudAmqpInstanceUpdate(d *schema.ResourceData, meta interface{}
445
419
if d .HasChange ("instance_type" ) {
446
420
update = true
447
421
}
448
- if v , ok := d .GetOk ("instance_type" ); ok && fmt .Sprint (v ) != "SERVERLESS " {
422
+ if v , ok := d .GetOk ("instance_type" ); ok && fmt .Sprint (v ) != "serverless " {
449
423
request ["InstanceType" ] = v
450
424
}
451
425
@@ -509,11 +483,9 @@ func resourceAliCloudAmqpInstanceUpdate(d *schema.ResourceData, meta interface{}
509
483
}
510
484
511
485
if update {
512
- runtime := util.RuntimeOptions {}
513
- runtime .SetAutoretry (true )
514
486
wait := incrementalWait (3 * time .Second , 5 * time .Second )
515
487
err = resource .Retry (d .Timeout (schema .TimeoutUpdate ), func () * resource.RetryError {
516
- response , err = conn . DoRequest ( StringPointer ( action ), nil , StringPointer ( "POST" ), StringPointer ( "2019-12-12" ), StringPointer ( "AK" ) , query , request , & runtime )
488
+ response , err = client . RpcPost ( "amqp-open" , "2019-12-12" , action , query , request , true )
517
489
request ["ClientToken" ] = buildClientToken (action )
518
490
519
491
if err != nil {
@@ -567,11 +539,9 @@ func resourceAliCloudAmqpInstanceDelete(d *schema.ResourceData, meta interface{}
567
539
action := "RefundInstance"
568
540
var request map [string ]interface {}
569
541
var response map [string ]interface {}
542
+ var err error
543
+ var endpoint string
570
544
query := make (map [string ]interface {})
571
- conn , err := client .NewBssopenapiClient ()
572
- if err != nil {
573
- return WrapError (err )
574
- }
575
545
request = make (map [string ]interface {})
576
546
query ["InstanceId" ] = d .Id ()
577
547
@@ -580,23 +550,22 @@ func resourceAliCloudAmqpInstanceDelete(d *schema.ResourceData, meta interface{}
580
550
request ["ImmediatelyRelease" ] = "1"
581
551
request ["ProductCode" ] = "ons"
582
552
request ["ProductType" ] = "ons_onsproxy_pre"
583
- runtime := util.RuntimeOptions {}
584
- runtime .SetAutoretry (true )
553
+ if client .IsInternationalAccount () {
554
+ request ["ProductType" ] = "ons_onsproxy_public_intl"
555
+ }
585
556
wait := incrementalWait (3 * time .Second , 5 * time .Second )
586
557
err = resource .Retry (d .Timeout (schema .TimeoutDelete ), func () * resource.RetryError {
587
- response , err = conn .DoRequest (StringPointer (action ), nil , StringPointer ("POST" ), StringPointer ("2017-12-14" ), StringPointer ("AK" ), query , request , & runtime )
588
- request ["ClientToken" ] = buildClientToken (action )
589
-
558
+ response , err = client .RpcPostWithEndpoint ("BssOpenApi" , "2017-12-14" , action , query , request , true , endpoint )
590
559
if err != nil {
591
- if IsExpectedErrors (err , []string {"NotApplicable" }) {
592
- conn .Endpoint = String (connectivity .BssOpenAPIEndpointInternational )
593
- request ["ProductType" ] = "ons_onsproxy_public_intl"
594
- return resource .RetryableError (err )
595
- }
596
560
if NeedRetry (err ) {
597
561
wait ()
598
562
return resource .RetryableError (err )
599
563
}
564
+ if ! client .IsInternationalAccount () && IsExpectedErrors (err , []string {"NotApplicable" }) {
565
+ request ["ProductType" ] = "ons_onsproxy_public_intl"
566
+ endpoint = connectivity .BssOpenAPIEndpointInternational
567
+ return resource .RetryableError (err )
568
+ }
600
569
return resource .NonRetryableError (err )
601
570
}
602
571
addDebug (action , response , request )
@@ -662,6 +631,8 @@ func convertAmqpInstanceDataInstanceTypeResponse(source interface{}) interface{}
662
631
return "vip"
663
632
case "ENTERPRISE" :
664
633
return "enterprise"
634
+ case "SERVERLESS" :
635
+ return "serverless"
665
636
}
666
637
return source
667
638
}
0 commit comments