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  }