@@ -19,6 +19,7 @@ package gcetasks
1919import (
2020 "fmt"
2121 "reflect"
22+ "sort"
2223
2324 compute "google.golang.org/api/compute/v1"
2425 "k8s.io/klog/v2"
@@ -300,6 +301,12 @@ type terraformSubnetRange struct {
300301 CIDR string `cty:"ip_cidr_range"`
301302}
302303
304+ type ByName []terraformSubnetRange
305+
306+ func (a ByName ) Len () int { return len (a ) }
307+ func (a ByName ) Swap (i , j int ) { a [i ], a [j ] = a [j ], a [i ] }
308+ func (a ByName ) Less (i , j int ) bool { return a [i ].Name < a [j ].Name }
309+
303310func (_ * Subnet ) RenderSubnet (t * terraform.TerraformTarget , a , e , changes * Subnet ) error {
304311 shared := fi .ValueOf (e .Shared )
305312 if shared {
@@ -316,13 +323,18 @@ func (_ *Subnet) RenderSubnet(t *terraform.TerraformTarget, a, e, changes *Subne
316323 Ipv6AccessType : e .Ipv6AccessType ,
317324 }
318325
326+ sortedRanges := make ([]terraformSubnetRange , 0 , len (e .SecondaryIpRanges ))
327+
319328 for k , v := range e .SecondaryIpRanges {
320- tf . SecondaryIPRange = append (tf . SecondaryIPRange , terraformSubnetRange {
329+ sortedRanges = append (sortedRanges , terraformSubnetRange {
321330 Name : k ,
322331 CIDR : v ,
323332 })
324333 }
325334
335+ sort .Sort (ByName (sortedRanges ))
336+ tf .SecondaryIPRange = sortedRanges
337+
326338 return t .RenderResource ("google_compute_subnetwork" , * e .Name , tf )
327339}
328340
0 commit comments