github.com/phobos182/packer@v0.2.3-0.20130819023704-c84d2aeffc68/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 } 17 18 type BlockDevices struct { 19 AMIMappings []BlockDevice `mapstructure:"ami_block_device_mappings,squash"` 20 LaunchMappings []BlockDevice `mapstructure:"launch_block_device_mappings,squash"` 21 } 22 23 func buildBlockDevices(b []BlockDevice) []ec2.BlockDeviceMapping { 24 var blockDevices []ec2.BlockDeviceMapping 25 26 for _, blockDevice := range b { 27 blockDevices = append(blockDevices, ec2.BlockDeviceMapping{ 28 DeviceName: blockDevice.DeviceName, 29 VirtualName: blockDevice.VirtualName, 30 SnapshotId: blockDevice.SnapshotId, 31 VolumeType: blockDevice.VolumeType, 32 VolumeSize: blockDevice.VolumeSize, 33 DeleteOnTermination: blockDevice.DeleteOnTermination, 34 IOPS: blockDevice.IOPS, 35 }) 36 } 37 return blockDevices 38 } 39 40 func (b *BlockDevices) BuildAMIDevices() []ec2.BlockDeviceMapping { 41 return buildBlockDevices(b.AMIMappings) 42 } 43 44 func (b *BlockDevices) BuildLaunchDevices() []ec2.BlockDeviceMapping { 45 return buildBlockDevices(b.LaunchMappings) 46 }