From 0bd9126387a6ed11b5cf3e07df4b4290f164878c Mon Sep 17 00:00:00 2001 From: Rohith Date: Tue, 22 Jan 2019 14:29:02 +0000 Subject: [PATCH] - fixing up the iops issue, masking when not required i.e. when the volume type is not io1 for now --- pkg/model/awsmodel/autoscalinggroup.go | 8 ++++++-- .../fi/cloudup/awstasks/block_device_mappings.go | 13 ++++++++++++- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/pkg/model/awsmodel/autoscalinggroup.go b/pkg/model/awsmodel/autoscalinggroup.go index 27a089dca3..8bba986947 100644 --- a/pkg/model/awsmodel/autoscalinggroup.go +++ b/pkg/model/awsmodel/autoscalinggroup.go @@ -135,8 +135,12 @@ func (b *AutoscalingGroupModelBuilder) Build(c *fi.ModelBuilderContext) error { if x.Type == "" { x.Type = DefaultVolumeType } - if x.Iops == nil && x.Type == ec2.VolumeTypeIo1 { - x.Iops = fi.Int64(DefaultVolumeIops) + if x.Type == ec2.VolumeTypeIo1 { + if x.Iops == nil { + x.Iops = fi.Int64(DefaultVolumeIops) + } + } else { + x.Iops = nil } t.BlockDeviceMappings = append(t.BlockDeviceMappings, &awstasks.BlockDeviceMapping{ DeviceName: fi.String(x.Device), diff --git a/upup/pkg/fi/cloudup/awstasks/block_device_mappings.go b/upup/pkg/fi/cloudup/awstasks/block_device_mappings.go index ad7b8844ce..8e518781cf 100644 --- a/upup/pkg/fi/cloudup/awstasks/block_device_mappings.go +++ b/upup/pkg/fi/cloudup/awstasks/block_device_mappings.go @@ -51,6 +51,7 @@ func BlockDeviceMappingFromEC2(i *ec2.BlockDeviceMapping) (string, *BlockDeviceM if i.Ebs != nil { o.EbsDeleteOnTermination = i.Ebs.DeleteOnTermination o.EbsEncrypted = i.Ebs.Encrypted + o.EbsVolumeIops = i.Ebs.Iops o.EbsVolumeSize = i.Ebs.VolumeSize o.EbsVolumeType = i.Ebs.VolumeType } @@ -64,13 +65,16 @@ func (i *BlockDeviceMapping) ToEC2(deviceName string) *ec2.BlockDeviceMapping { DeviceName: aws.String(deviceName), VirtualName: i.VirtualName, } - if i.EbsDeleteOnTermination != nil || i.EbsVolumeSize != nil || i.EbsVolumeType != nil { + if i.EbsDeleteOnTermination != nil || i.EbsVolumeSize != nil || i.EbsVolumeType != nil || i.EbsVolumeIops != nil { o.Ebs = &ec2.EbsBlockDevice{ DeleteOnTermination: i.EbsDeleteOnTermination, Encrypted: i.EbsEncrypted, VolumeSize: i.EbsVolumeSize, VolumeType: i.EbsVolumeType, } + if fi.StringValue(o.Ebs.VolumeType) == ec2.VolumeTypeIo1 { + o.Ebs.Iops = i.EbsVolumeIops + } } return o @@ -87,6 +91,10 @@ func BlockDeviceMappingFromAutoscaling(i *autoscaling.BlockDeviceMapping) (strin o.EbsEncrypted = i.Ebs.Encrypted o.EbsVolumeSize = i.Ebs.VolumeSize o.EbsVolumeType = i.Ebs.VolumeType + + if fi.StringValue(o.EbsVolumeType) == ec2.VolumeTypeIo1 { + o.EbsVolumeIops = i.Ebs.Iops + } } return aws.StringValue(i.DeviceName), o @@ -106,6 +114,9 @@ func (i *BlockDeviceMapping) ToAutoscaling(deviceName string) *autoscaling.Block VolumeType: i.EbsVolumeType, Iops: i.EbsVolumeIops, } + if fi.StringValue(o.Ebs.VolumeType) == ec2.VolumeTypeIo1 { + o.Ebs.Iops = i.EbsVolumeIops + } } return o