@ -30,35 +30,40 @@ func buildBlockDevices(b []BlockDevice) []*ec2.BlockDeviceMapping {
var blockDevices [ ] * ec2 . BlockDeviceMapping
for _ , blockDevice := range b {
ebsBlockDevice := & ec2 . EbsBlockDevice {
VolumeType : aws . String ( blockDevice . VolumeType ) ,
VolumeSize : aws . Int64 ( blockDevice . VolumeSize ) ,
DeleteOnTermination : aws . Bool ( blockDevice . DeleteOnTermination ) ,
mapping := & ec2 . BlockDeviceMapping {
DeviceName : aws . String ( blockDevice . DeviceName ) ,
}
// IOPS is only valid for SSD Volumes
if blockDevice . VolumeType != "" && blockDevice . VolumeType != "standard" && blockDevice . VolumeType != "gp2" {
ebsBlockDevice . Iops = aws . Int64 ( blockDevice . IOPS )
}
if blockDevice . NoDevice {
mapping . NoDevice = aws . String ( "" )
} else if strings . HasPrefix ( blockDevice . VirtualName , "ephemeral" ) {
mapping . VirtualName = aws . String ( blockDevice . VirtualName )
} else {
ebsBlockDevice := & ec2 . EbsBlockDevice {
DeleteOnTermination : aws . Bool ( blockDevice . DeleteOnTermination ) ,
}
// You cannot specify Encrypted if you specify a Snapshot ID
if blockDevice . SnapshotId != "" {
ebsBlockDevice . SnapshotId = aws . String ( blockDevice . SnapshotId )
} else if blockDevice . Encrypted {
ebsBlockDevice . Encrypted = aws . Bool ( blockDevice . Encrypted )
}
if blockDevice . VolumeType != "" {
ebsBlockDevice . VolumeType = aws . String ( blockDevice . VolumeType )
}
mapping := & ec2 . BlockDeviceMapping {
DeviceName : aws . String ( blockDevice . DeviceName ) ,
VirtualName : aws . String ( blockDevice . VirtualName ) ,
}
if blockDevice . VolumeSize > 0 {
ebsBlockDevice . VolumeSize = aws . Int64 ( blockDevice . VolumeSize )
}
if ! strings . HasPrefix ( blockDevice . VirtualName , "ephemeral" ) {
mapping . Ebs = ebsBlockDevice
}
// IOPS is only valid for io1 type
if blockDevice . VolumeType == "io1" {
ebsBlockDevice . Iops = aws . Int64 ( blockDevice . IOPS )
}
if blockDevice . NoDevice {
mapping . NoDevice = aws . String ( "" )
// You cannot specify Encrypted if you specify a Snapshot ID
if blockDevice . SnapshotId != "" {
ebsBlockDevice . SnapshotId = aws . String ( blockDevice . SnapshotId )
} else if blockDevice . Encrypted {
ebsBlockDevice . Encrypted = aws . Bool ( blockDevice . Encrypted )
}
mapping . Ebs = ebsBlockDevice
}
blockDevices = append ( blockDevices , mapping )