split up BlockDevices in amazon/common

This breaks up the two options provided by BlockDevices into separate
structs to allow only one of them to be used by the amazon-chroot
builder.
This commit is contained in:
Jeremy Asher 2016-08-12 16:29:55 -07:00
parent 4214464065
commit 85ae04bb75
2 changed files with 23 additions and 11 deletions

View File

@ -22,7 +22,15 @@ type BlockDevice struct {
} }
type BlockDevices struct { type BlockDevices struct {
AMIMappings []BlockDevice `mapstructure:"ami_block_device_mappings"` AMIBlockDevices `mapstructure:",squash"`
LaunchBlockDevices `mapstructure:",squash"`
}
type AMIBlockDevices struct {
AMIMappings []BlockDevice `mapstructure:"ami_block_device_mappings"`
}
type LaunchBlockDevices struct {
LaunchMappings []BlockDevice `mapstructure:"launch_block_device_mappings"` LaunchMappings []BlockDevice `mapstructure:"launch_block_device_mappings"`
} }
@ -77,10 +85,10 @@ func (b *BlockDevices) Prepare(ctx *interpolate.Context) []error {
return nil return nil
} }
func (b *BlockDevices) BuildAMIDevices() []*ec2.BlockDeviceMapping { func (b *AMIBlockDevices) BuildAMIDevices() []*ec2.BlockDeviceMapping {
return buildBlockDevices(b.AMIMappings) return buildBlockDevices(b.AMIMappings)
} }
func (b *BlockDevices) BuildLaunchDevices() []*ec2.BlockDeviceMapping { func (b *LaunchBlockDevices) BuildLaunchDevices() []*ec2.BlockDeviceMapping {
return buildBlockDevices(b.LaunchMappings) return buildBlockDevices(b.LaunchMappings)
} }

View File

@ -124,22 +124,26 @@ func TestBlockDevice(t *testing.T) {
} }
for _, tc := range cases { for _, tc := range cases {
blockDevices := BlockDevices{ amiBlockDevices := AMIBlockDevices{
AMIMappings: []BlockDevice{*tc.Config}, AMIMappings: []BlockDevice{*tc.Config},
}
launchBlockDevices := LaunchBlockDevices{
LaunchMappings: []BlockDevice{*tc.Config}, LaunchMappings: []BlockDevice{*tc.Config},
} }
expected := []*ec2.BlockDeviceMapping{tc.Result} expected := []*ec2.BlockDeviceMapping{tc.Result}
got := blockDevices.BuildAMIDevices()
if !reflect.DeepEqual(expected, got) { amiResults := amiBlockDevices.BuildAMIDevices()
if !reflect.DeepEqual(expected, amiResults) {
t.Fatalf("Bad block device, \nexpected: %#v\n\ngot: %#v", t.Fatalf("Bad block device, \nexpected: %#v\n\ngot: %#v",
expected, got) expected, amiResults)
} }
if !reflect.DeepEqual(expected, blockDevices.BuildLaunchDevices()) { launchResults := launchBlockDevices.BuildLaunchDevices()
if !reflect.DeepEqual(expected, launchResults) {
t.Fatalf("Bad block device, \nexpected: %#v\n\ngot: %#v", t.Fatalf("Bad block device, \nexpected: %#v\n\ngot: %#v",
expected, expected, launchResults)
blockDevices.BuildLaunchDevices())
} }
} }
} }