github.com/tonnydourado/packer@v0.6.1-0.20140701134019-5d0cd9676a37/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 DeleteOnTermination bool `mapstructure:"delete_on_termination"` 10 DeviceName string `mapstructure:"device_name"` 11 Encrypted bool `mapstructure:"encrypted"` 12 IOPS int64 `mapstructure:"iops"` 13 NoDevice bool `mapstructure:"no_device"` 14 SnapshotId string `mapstructure:"snapshot_id"` 15 VirtualName string `mapstructure:"virtual_name"` 16 VolumeType string `mapstructure:"volume_type"` 17 VolumeSize int64 `mapstructure:"volume_size"` 18 } 19 20 type BlockDevices struct { 21 AMIMappings []BlockDevice `mapstructure:"ami_block_device_mappings"` 22 LaunchMappings []BlockDevice `mapstructure:"launch_block_device_mappings"` 23 } 24 25 func buildBlockDevices(b []BlockDevice) []ec2.BlockDeviceMapping { 26 var blockDevices []ec2.BlockDeviceMapping 27 28 for _, blockDevice := range b { 29 blockDevices = append(blockDevices, ec2.BlockDeviceMapping{ 30 DeviceName: blockDevice.DeviceName, 31 VirtualName: blockDevice.VirtualName, 32 SnapshotId: blockDevice.SnapshotId, 33 VolumeType: blockDevice.VolumeType, 34 VolumeSize: blockDevice.VolumeSize, 35 DeleteOnTermination: blockDevice.DeleteOnTermination, 36 IOPS: blockDevice.IOPS, 37 NoDevice: blockDevice.NoDevice, 38 Encrypted: blockDevice.Encrypted, 39 }) 40 } 41 return blockDevices 42 } 43 44 func (b *BlockDevices) BuildAMIDevices() []ec2.BlockDeviceMapping { 45 return buildBlockDevices(b.AMIMappings) 46 } 47 48 func (b *BlockDevices) BuildLaunchDevices() []ec2.BlockDeviceMapping { 49 return buildBlockDevices(b.LaunchMappings) 50 }