provider/aws: Set aws_instance volume_tags to be Computed (#14007)
Fixes: #14003 When an EBS volume was created and tags were specified on that resource and NOT the aws_instance it was attached to, the tags would be removed on subsequent Terraform runs. We need to set volume_tags to be Computed to allow for changes to EBS volumes not created as part of the instance but that are attached to the instance ``` % make testacc TEST=./builtin/providers/aws TESTARGS='-run=TestAccAWSInstance_volumeTagsComputed' ==> Checking that code complies with gofmt requirements... go generate $(go list ./... | grep -v /terraform/vendor/) 2017/04/27 07:33:36 Generated command/internal_plugin_list.go TF_ACC=1 go test ./builtin/providers/aws -v -run=TestAccAWSInstance_volumeTagsComputed -timeout 120m === RUN TestAccAWSInstance_volumeTagsComputed --- PASS: TestAccAWSInstance_volumeTagsComputed (151.37s) PASS ok github.com/hashicorp/terraform/builtin/providers/aws 151.411s ```
This commit is contained in:
parent
9b94fae81e
commit
c953a2fc41
|
@ -234,7 +234,7 @@ func resourceAwsInstance() *schema.Resource {
|
||||||
|
|
||||||
"tags": tagsSchema(),
|
"tags": tagsSchema(),
|
||||||
|
|
||||||
"volume_tags": tagsSchema(),
|
"volume_tags": tagsSchemaComputed(),
|
||||||
|
|
||||||
"block_device": {
|
"block_device": {
|
||||||
Type: schema.TypeMap,
|
Type: schema.TypeMap,
|
||||||
|
|
|
@ -678,6 +678,25 @@ func TestAccAWSInstance_volumeTags(t *testing.T) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestAccAWSInstance_volumeTagsComputed(t *testing.T) {
|
||||||
|
var v ec2.Instance
|
||||||
|
|
||||||
|
resource.Test(t, resource.TestCase{
|
||||||
|
PreCheck: func() { testAccPreCheck(t) },
|
||||||
|
Providers: testAccProviders,
|
||||||
|
CheckDestroy: testAccCheckInstanceDestroy,
|
||||||
|
Steps: []resource.TestStep{
|
||||||
|
{
|
||||||
|
Config: testAccCheckInstanceConfigWithAttachedVolume,
|
||||||
|
Check: resource.ComposeTestCheckFunc(
|
||||||
|
testAccCheckInstanceExists("aws_instance.foo", &v),
|
||||||
|
),
|
||||||
|
ExpectNonEmptyPlan: false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
func TestAccAWSInstance_instanceProfileChange(t *testing.T) {
|
func TestAccAWSInstance_instanceProfileChange(t *testing.T) {
|
||||||
var v ec2.Instance
|
var v ec2.Instance
|
||||||
rName := acctest.RandString(5)
|
rName := acctest.RandString(5)
|
||||||
|
@ -1382,6 +1401,69 @@ resource "aws_instance" "foo" {
|
||||||
}
|
}
|
||||||
`
|
`
|
||||||
|
|
||||||
|
const testAccCheckInstanceConfigWithAttachedVolume = `
|
||||||
|
data "aws_ami" "debian_jessie_latest" {
|
||||||
|
most_recent = true
|
||||||
|
|
||||||
|
filter {
|
||||||
|
name = "name"
|
||||||
|
values = ["debian-jessie-*"]
|
||||||
|
}
|
||||||
|
|
||||||
|
filter {
|
||||||
|
name = "virtualization-type"
|
||||||
|
values = ["hvm"]
|
||||||
|
}
|
||||||
|
|
||||||
|
filter {
|
||||||
|
name = "architecture"
|
||||||
|
values = ["x86_64"]
|
||||||
|
}
|
||||||
|
|
||||||
|
filter {
|
||||||
|
name = "root-device-type"
|
||||||
|
values = ["ebs"]
|
||||||
|
}
|
||||||
|
|
||||||
|
owners = ["379101102735"] # Debian
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "aws_instance" "foo" {
|
||||||
|
ami = "${data.aws_ami.debian_jessie_latest.id}"
|
||||||
|
associate_public_ip_address = true
|
||||||
|
count = 1
|
||||||
|
instance_type = "t2.medium"
|
||||||
|
|
||||||
|
root_block_device {
|
||||||
|
volume_size = "10"
|
||||||
|
volume_type = "standard"
|
||||||
|
delete_on_termination = true
|
||||||
|
}
|
||||||
|
|
||||||
|
tags {
|
||||||
|
Name = "test-terraform"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "aws_ebs_volume" "test" {
|
||||||
|
depends_on = ["aws_instance.foo"]
|
||||||
|
availability_zone = "${aws_instance.foo.availability_zone}"
|
||||||
|
type = "gp2"
|
||||||
|
size = "10"
|
||||||
|
|
||||||
|
tags {
|
||||||
|
Name = "test-terraform"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "aws_volume_attachment" "test" {
|
||||||
|
depends_on = ["aws_ebs_volume.test"]
|
||||||
|
device_name = "/dev/xvdg"
|
||||||
|
volume_id = "${aws_ebs_volume.test.id}"
|
||||||
|
instance_id = "${aws_instance.foo.id}"
|
||||||
|
}
|
||||||
|
`
|
||||||
|
|
||||||
const testAccCheckInstanceConfigNoVolumeTags = `
|
const testAccCheckInstanceConfigNoVolumeTags = `
|
||||||
resource "aws_instance" "foo" {
|
resource "aws_instance" "foo" {
|
||||||
ami = "ami-55a7ea65"
|
ami = "ami-55a7ea65"
|
||||||
|
|
Loading…
Reference in New Issue