@@ -286,29 +286,22 @@ func resourceTencentCloudEniCreate(d *schema.ResourceData, m interface{}) error
286
286
}
287
287
288
288
// move primary ip to the first
289
- primaryIpv4 := ipv4s [i ]
290
- copy (ipv4s [1 :], ipv4s [:i ])
291
- ipv4s [0 ] = primaryIpv4
289
+ ipv4s [0 ], ipv4s [i ] = ipv4s [i ], ipv4s [0 ]
292
290
break
293
291
}
294
292
}
295
293
296
- id , err = vpcService .CreateEni (ctx , name , vpcId , subnetId , desc , securityGroups , nil , ipv4s [:10 ])
294
+ ipv4ss := chunkEniIP (ipv4s )
295
+ withPrimaryIpv4s := ipv4ss [0 ]
296
+
297
+ id , err = vpcService .CreateEni (ctx , name , vpcId , subnetId , desc , securityGroups , nil , withPrimaryIpv4s )
297
298
if err != nil {
298
299
return err
299
300
}
300
301
301
302
d .SetId (id )
302
303
303
- ipv4s = ipv4s [10 :]
304
- for len (ipv4s ) > 10 {
305
- if err = vpcService .AssignIpv4ToEni (ctx , id , ipv4s [:10 ], nil ); err != nil {
306
- return err
307
- }
308
- ipv4s = ipv4s [10 :]
309
- }
310
- // assign last ipv4s
311
- if len (ipv4s ) > 0 {
304
+ for _ , ipv4s := range ipv4ss [1 :] {
312
305
if err = vpcService .AssignIpv4ToEni (ctx , id , ipv4s , nil ); err != nil {
313
306
return err
314
307
}
@@ -595,15 +588,8 @@ func resourceTencentCloudEniUpdate(d *schema.ResourceData, m interface{}) error
595
588
return err
596
589
}
597
590
} else {
598
- for len (removeIpv4 ) > 10 {
599
- if err := vpcService .UnAssignIpv4FromEni (ctx , id , removeIpv4 [:10 ]); err != nil {
600
- return err
601
- }
602
- removeIpv4 = removeIpv4 [10 :]
603
- }
604
- // unAssign last ipv4
605
- if len (removeIpv4 ) > 0 {
606
- if err := vpcService .UnAssignIpv4FromEni (ctx , id , removeIpv4 ); err != nil {
591
+ for _ , remove := range chunkRemoveIpv4 (removeIpv4 ) {
592
+ if err := vpcService .UnAssignIpv4FromEni (ctx , id , remove ); err != nil {
607
593
return err
608
594
}
609
595
}
@@ -616,15 +602,8 @@ func resourceTencentCloudEniUpdate(d *schema.ResourceData, m interface{}) error
616
602
return err
617
603
}
618
604
} else {
619
- for len (addIpv4 ) > 10 {
620
- if err := vpcService .AssignIpv4ToEni (ctx , id , addIpv4 [:10 ], nil ); err != nil {
621
- return err
622
- }
623
- addIpv4 = addIpv4 [10 :]
624
- }
625
- // assign last ipv4
626
- if len (addIpv4 ) > 0 {
627
- if err := vpcService .AssignIpv4ToEni (ctx , id , addIpv4 , nil ); err != nil {
605
+ for _ , add := range chunkEniIP (addIpv4 ) {
606
+ if err := vpcService .AssignIpv4ToEni (ctx , id , add , nil ); err != nil {
628
607
return err
629
608
}
630
609
}
@@ -682,15 +661,8 @@ func resourceTencentCloudEniUpdate(d *schema.ResourceData, m interface{}) error
682
661
return err
683
662
}
684
663
} else {
685
- for len (removeIpv4 ) > 10 {
686
- if err := vpcService .UnAssignIpv4FromEni (ctx , id , removeIpv4 [:10 ]); err != nil {
687
- return err
688
- }
689
- removeIpv4 = removeIpv4 [10 :]
690
- }
691
- // unAssign last ipv4
692
- if len (removeIpv4 ) > 0 {
693
- if err := vpcService .UnAssignIpv4FromEni (ctx , id , removeIpv4 ); err != nil {
664
+ for _ , remove := range chunkRemoveIpv4 (removeIpv4 ) {
665
+ if err := vpcService .UnAssignIpv4FromEni (ctx , id , remove ); err != nil {
694
666
return err
695
667
}
696
668
}
@@ -730,3 +702,21 @@ func resourceTencentCloudEniDelete(d *schema.ResourceData, m interface{}) error
730
702
731
703
return service .DeleteEni (ctx , id )
732
704
}
705
+
706
+ func chunkEniIP (ipv4s []VpcEniIP ) [][]VpcEniIP {
707
+ if len (ipv4s ) <= 10 {
708
+ return [][]VpcEniIP {ipv4s }
709
+ }
710
+
711
+ first := ipv4s [:10 ]
712
+ return append ([][]VpcEniIP {first }, chunkEniIP (ipv4s [10 :])... )
713
+ }
714
+
715
+ func chunkRemoveIpv4 (ss []string ) [][]string {
716
+ if len (ss ) <= 10 {
717
+ return [][]string {ss }
718
+ }
719
+
720
+ s := ss [:10 ]
721
+ return append ([][]string {s }, chunkRemoveIpv4 (ss [10 :])... )
722
+ }
0 commit comments