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  }