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  }