Skip to content

Commit

Permalink
Merge pull request #877 from hashicorp/i-859-ignore-ec2-root-volume
Browse files Browse the repository at this point in the history
providers/aws: ignore ec2 root devices
  • Loading branch information
mitchellh committed Jan 28, 2015
2 parents f742ccb + 3cb5ba0 commit 36b7f08
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 10 deletions.
22 changes: 15 additions & 7 deletions builtin/providers/aws/resource_aws_instance.go
Original file line number Diff line number Diff line change
Expand Up @@ -377,11 +377,19 @@ func resourceAwsInstanceRead(d *schema.ResourceData, meta interface{}) error {
}
d.Set("security_groups", sgs)

volIDs := make([]string, len(instance.BlockDevices))
bdByVolID := make(map[string]ec2.BlockDevice)
for i, bd := range instance.BlockDevices {
volIDs[i] = bd.VolumeId
bdByVolID[bd.VolumeId] = bd
blockDevices := make(map[string]ec2.BlockDevice)
for _, bd := range instance.BlockDevices {
// Skip root device; AWS attaches it automatically and terraform does not
// manage it
if bd.DeviceName == instance.RootDeviceName {
continue
}
blockDevices[bd.VolumeId] = bd
}

volIDs := make([]string, 0, len(blockDevices))
for volID := range blockDevices {
volIDs = append(volIDs, volID)
}

volResp, err := ec2conn.Volumes(volIDs, ec2.NewFilter())
Expand All @@ -396,11 +404,11 @@ func resourceAwsInstanceRead(d *schema.ResourceData, meta interface{}) error {
return err
}
bds[i] = make(map[string]interface{})
bds[i]["device_name"] = bdByVolID[vol.VolumeId].DeviceName
bds[i]["device_name"] = blockDevices[vol.VolumeId].DeviceName
bds[i]["snapshot_id"] = vol.SnapshotId
bds[i]["volume_type"] = vol.VolumeType
bds[i]["volume_size"] = volSize
bds[i]["delete_on_termination"] = bdByVolID[vol.VolumeId].DeleteOnTermination
bds[i]["delete_on_termination"] = blockDevices[vol.VolumeId].DeleteOnTermination
bds[i]["encrypted"] = vol.Encrypted
}
d.Set("block_device", bds)
Expand Down
11 changes: 8 additions & 3 deletions builtin/providers/aws/resource_aws_instance_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,11 @@ func TestAccAWSInstance_blockDevicesCheck(t *testing.T) {
Check: resource.ComposeTestCheckFunc(
testAccCheckInstanceExists(
"aws_instance.foo", &v),
// though two block devices exist in EC2, terraform state should only
// have the one block device we created, as terraform does not manage
// the root device
resource.TestCheckResourceAttr(
"aws_instance.foo", "block_device.#", "1"),
testCheck(),
),
},
Expand Down Expand Up @@ -353,9 +358,9 @@ resource "aws_instance" "foo" {
ami = "ami-55a7ea65"
instance_type = "m1.small"
block_device {
device_name = "/dev/sdb"
volume_type = "gp2"
volume_size = 10
device_name = "/dev/sdb"
volume_type = "gp2"
volume_size = 10
}
}
`
Expand Down

0 comments on commit 36b7f08

Please sign in to comment.