github.com/jbronn/packer@v0.1.6-0.20140120165540-8a1364dbd817/builder/amazon/common/block_device.go (about) 1 package common 2 3 import ( 4 "github.com/mitchellh/goamz/ec2" 5 ) 6 7 // BlockDevice 8 type BlockDevice struct { 9 DeviceName string `mapstructure:"device_name"` 10 VirtualName string `mapstructure:"virtual_name"` 11 SnapshotId string `mapstructure:"snapshot_id"` 12 VolumeType string `mapstructure:"volume_type"` 13 VolumeSize int64 `mapstructure:"volume_size"` 14 DeleteOnTermination bool `mapstructure:"delete_on_termination"` 15 IOPS int64 `mapstructure:"iops"` 16 NoDevice bool `mapstructure:"no_device"` 17 } 18 19 type BlockDevices struct { 20 AMIMappings []BlockDevice `mapstructure:"ami_block_device_mappings"` 21 LaunchMappings []BlockDevice `mapstructure:"launch_block_device_mappings"` 22 } 23 24 func buildBlockDevices(b []BlockDevice) []ec2.BlockDeviceMapping { 25 var blockDevices []ec2.BlockDeviceMapping 26 27 for _, blockDevice := range b { 28 blockDevices = append(blockDevices, ec2.BlockDeviceMapping{ 29 DeviceName: blockDevice.DeviceName, 30 VirtualName: blockDevice.VirtualName, 31 SnapshotId: blockDevice.SnapshotId, 32 VolumeType: blockDevice.VolumeType, 33 VolumeSize: blockDevice.VolumeSize, 34 DeleteOnTermination: blockDevice.DeleteOnTermination, 35 IOPS: blockDevice.IOPS, 36 NoDevice: blockDevice.NoDevice, 37 }) 38 } 39 return blockDevices 40 } 41 42 func (b *BlockDevices) BuildAMIDevices() []ec2.BlockDeviceMapping { 43 return buildBlockDevices(b.AMIMappings) 44 } 45 46 func (b *BlockDevices) BuildLaunchDevices() []ec2.BlockDeviceMapping { 47 return buildBlockDevices(b.LaunchMappings) 48 }