Skip to content

Commit bbd75e7

Browse files
committed
Make TF SecondaryIpRanges deterministic
1 parent 94c73aa commit bbd75e7

File tree

2 files changed

+17
-5
lines changed

2 files changed

+17
-5
lines changed

tests/integration/update_cluster/cilium-gce/kubernetes.tf

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -653,14 +653,14 @@ resource "google_compute_subnetwork" "us-test1-cilium-gce-example-com" {
653653
name = "us-test1-cilium-gce-example-com"
654654
network = google_compute_network.cilium-gce-example-com.name
655655
region = "us-test1"
656-
secondary_ip_range {
657-
ip_cidr_range = "10.1.0.0/16"
658-
range_name = "services-cilium-gce-example-com"
659-
}
660656
secondary_ip_range {
661657
ip_cidr_range = "10.4.0.0/14"
662658
range_name = "pods-cilium-gce-example-com"
663659
}
660+
secondary_ip_range {
661+
ip_cidr_range = "10.1.0.0/16"
662+
range_name = "services-cilium-gce-example-com"
663+
}
664664
stack_type = "IPV4_ONLY"
665665
}
666666

upup/pkg/fi/cloudup/gcetasks/subnet.go

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ package gcetasks
1919
import (
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+
303310
func (_ *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

Comments
 (0)