mirror of https://github.com/kubernetes/kops.git
fix the random order of block_device_mappings render
Include a new function to get the keys of the map used for block_device_mappings to access elements in deterministic order.
This commit is contained in:
parent
eb170d2beb
commit
ba0a94fee4
|
@ -22,6 +22,7 @@ import (
|
||||||
"k8s.io/kops/upup/pkg/fi/cloudup/awsup"
|
"k8s.io/kops/upup/pkg/fi/cloudup/awsup"
|
||||||
"k8s.io/kops/upup/pkg/fi/cloudup/terraform"
|
"k8s.io/kops/upup/pkg/fi/cloudup/terraform"
|
||||||
"k8s.io/kops/upup/pkg/fi/cloudup/terraformWriter"
|
"k8s.io/kops/upup/pkg/fi/cloudup/terraformWriter"
|
||||||
|
"k8s.io/kops/util/pkg/maps"
|
||||||
)
|
)
|
||||||
|
|
||||||
type terraformLaunchTemplateNetworkInterface struct {
|
type terraformLaunchTemplateNetworkInterface struct {
|
||||||
|
@ -262,55 +263,39 @@ func (t *LaunchTemplate) RenderTerraform(target *terraform.TerraformTarget, a, e
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
devices, err := e.buildRootDevice(cloud)
|
devices, err := e.buildRootDevice(cloud)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
for n, x := range devices {
|
|
||||||
tf.BlockDeviceMappings = append(tf.BlockDeviceMappings, &terraformLaunchTemplateBlockDevice{
|
devicesKeys := maps.SortedKeys(devices)
|
||||||
DeviceName: fi.PtrTo(n),
|
for _, key := range devicesKeys {
|
||||||
EBS: []*terraformLaunchTemplateBlockDeviceEBS{
|
terraformLaunchTemplateBlockDevice := createTerraformLaunchTemplateBlockDevice(key, devices[key])
|
||||||
{
|
tf.BlockDeviceMappings = append(tf.BlockDeviceMappings, terraformLaunchTemplateBlockDevice)
|
||||||
DeleteOnTermination: fi.PtrTo(true),
|
|
||||||
Encrypted: x.EbsEncrypted,
|
|
||||||
KmsKeyID: x.EbsKmsKey,
|
|
||||||
IOPS: x.EbsVolumeIops,
|
|
||||||
Throughput: x.EbsVolumeThroughput,
|
|
||||||
VolumeSize: x.EbsVolumeSize,
|
|
||||||
VolumeType: fi.PtrTo(string(x.EbsVolumeType)),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
additionals, err := buildAdditionalDevices(e.BlockDeviceMappings)
|
additionals, err := buildAdditionalDevices(e.BlockDeviceMappings)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
for n, x := range additionals {
|
|
||||||
tf.BlockDeviceMappings = append(tf.BlockDeviceMappings, &terraformLaunchTemplateBlockDevice{
|
additionalsKeys := maps.SortedKeys(additionals)
|
||||||
DeviceName: fi.PtrTo(n),
|
for _, key := range additionalsKeys {
|
||||||
EBS: []*terraformLaunchTemplateBlockDeviceEBS{
|
terraformLaunchTemplateBlockDevice := createTerraformLaunchTemplateBlockDevice(key, additionals[key])
|
||||||
{
|
tf.BlockDeviceMappings = append(tf.BlockDeviceMappings, terraformLaunchTemplateBlockDevice)
|
||||||
DeleteOnTermination: fi.PtrTo(true),
|
|
||||||
Encrypted: x.EbsEncrypted,
|
|
||||||
IOPS: x.EbsVolumeIops,
|
|
||||||
Throughput: x.EbsVolumeThroughput,
|
|
||||||
KmsKeyID: x.EbsKmsKey,
|
|
||||||
VolumeSize: x.EbsVolumeSize,
|
|
||||||
VolumeType: fi.PtrTo(string(x.EbsVolumeType)),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
devices, err = buildEphemeralDevices(cloud, fi.ValueOf(e.InstanceType))
|
devices, err = buildEphemeralDevices(cloud, fi.ValueOf(e.InstanceType))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
for n, x := range devices {
|
|
||||||
|
devicesKeys = maps.SortedKeys(devices)
|
||||||
|
for _, key := range devicesKeys {
|
||||||
tf.BlockDeviceMappings = append(tf.BlockDeviceMappings, &terraformLaunchTemplateBlockDevice{
|
tf.BlockDeviceMappings = append(tf.BlockDeviceMappings, &terraformLaunchTemplateBlockDevice{
|
||||||
VirtualName: x.VirtualName,
|
VirtualName: devices[key].VirtualName,
|
||||||
DeviceName: fi.PtrTo(n),
|
DeviceName: fi.PtrTo(key),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -328,3 +313,20 @@ func (t *LaunchTemplate) RenderTerraform(target *terraform.TerraformTarget, a, e
|
||||||
|
|
||||||
return target.RenderResource("aws_launch_template", fi.ValueOf(e.Name), tf)
|
return target.RenderResource("aws_launch_template", fi.ValueOf(e.Name), tf)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func createTerraformLaunchTemplateBlockDevice(deviceName string, v *BlockDeviceMapping) *terraformLaunchTemplateBlockDevice {
|
||||||
|
return &terraformLaunchTemplateBlockDevice{
|
||||||
|
DeviceName: fi.PtrTo(deviceName),
|
||||||
|
EBS: []*terraformLaunchTemplateBlockDeviceEBS{
|
||||||
|
{
|
||||||
|
DeleteOnTermination: fi.PtrTo(true),
|
||||||
|
Encrypted: v.EbsEncrypted,
|
||||||
|
KmsKeyID: v.EbsKmsKey,
|
||||||
|
IOPS: v.EbsVolumeIops,
|
||||||
|
Throughput: v.EbsVolumeThroughput,
|
||||||
|
VolumeSize: v.EbsVolumeSize,
|
||||||
|
VolumeType: fi.PtrTo(string(v.EbsVolumeType)),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue