diff --git a/builtin/providers/aws/resource_aws_opsworks_stack_test.go b/builtin/providers/aws/resource_aws_opsworks_stack_test.go index 97efcdd66..ba34663d4 100644 --- a/builtin/providers/aws/resource_aws_opsworks_stack_test.go +++ b/builtin/providers/aws/resource_aws_opsworks_stack_test.go @@ -132,11 +132,11 @@ func TestAccAWSOpsworksStackNoVpc(t *testing.T) { Steps: []resource.TestStep{ resource.TestStep{ Config: testAccAwsOpsworksStackConfigNoVpcCreate, - Check: testAccAwsOpsworksStackCheckResourceAttrsCreate, + Check: testAccAwsOpsworksStackCheckResourceAttrsCreate("us-east-1c"), }, resource.TestStep{ Config: testAccAWSOpsworksStackConfigNoVpcUpdate, - Check: testAccAwsOpsworksStackCheckResourceAttrsUpdate, + Check: testAccAwsOpsworksStackCheckResourceAttrsUpdate("us-east-1c"), }, }, }) @@ -153,11 +153,11 @@ resource "aws_vpc" "tf-acc" { resource "aws_subnet" "tf-acc" { vpc_id = "${aws_vpc.tf-acc.id}" cidr_block = "${aws_vpc.tf-acc.cidr_block}" - availability_zone = "us-east-1c" + availability_zone = "us-west-2a" } resource "aws_opsworks_stack" "tf-acc" { name = "tf-opsworks-acc" - region = "us-east-1" + region = "us-west-2" vpc_id = "${aws_vpc.tf-acc.id}" default_subnet_id = "${aws_subnet.tf-acc.id}" service_role_arn = "${aws_iam_role.opsworks_service.arn}" @@ -177,11 +177,11 @@ resource "aws_vpc" "tf-acc" { resource "aws_subnet" "tf-acc" { vpc_id = "${aws_vpc.tf-acc.id}" cidr_block = "${aws_vpc.tf-acc.cidr_block}" - availability_zone = "us-east-1c" + availability_zone = "us-west-2a" } resource "aws_opsworks_stack" "tf-acc" { name = "tf-opsworks-acc" - region = "us-east-1" + region = "us-west-2" vpc_id = "${aws_vpc.tf-acc.id}" default_subnet_id = "${aws_subnet.tf-acc.id}" service_role_arn = "${aws_iam_role.opsworks_service.arn}" @@ -209,12 +209,12 @@ func TestAccAWSOpsworksStackVpc(t *testing.T) { Steps: []resource.TestStep{ resource.TestStep{ Config: testAccAwsOpsworksStackConfigVpcCreate, - Check: testAccAwsOpsworksStackCheckResourceAttrsCreate, + Check: testAccAwsOpsworksStackCheckResourceAttrsCreate("us-west-2a"), }, resource.TestStep{ Config: testAccAWSOpsworksStackConfigVpcUpdate, Check: resource.ComposeTestCheckFunc( - testAccAwsOpsworksStackCheckResourceAttrsUpdate, + testAccAwsOpsworksStackCheckResourceAttrsUpdate("us-west-2a"), testAccAwsOpsworksCheckVpc, ), }, @@ -226,106 +226,110 @@ func TestAccAWSOpsworksStackVpc(t *testing.T) { //// Checkers and Utilities //////////////////////////// -var testAccAwsOpsworksStackCheckResourceAttrsCreate = resource.ComposeTestCheckFunc( - resource.TestCheckResourceAttr( - "aws_opsworks_stack.tf-acc", - "name", - "tf-opsworks-acc", - ), - resource.TestCheckResourceAttr( - "aws_opsworks_stack.tf-acc", - "default_availability_zone", - "us-east-1c", - ), - resource.TestCheckResourceAttr( - "aws_opsworks_stack.tf-acc", - "default_os", - "Amazon Linux 2014.09", - ), - resource.TestCheckResourceAttr( - "aws_opsworks_stack.tf-acc", - "default_root_device_type", - "ebs", - ), - resource.TestCheckResourceAttr( - "aws_opsworks_stack.tf-acc", - "custom_json", - `{"key": "value"}`, - ), - resource.TestCheckResourceAttr( - "aws_opsworks_stack.tf-acc", - "configuration_manager_version", - "11.10", - ), - resource.TestCheckResourceAttr( - "aws_opsworks_stack.tf-acc", - "use_opsworks_security_groups", - "false", - ), -) +func testAccAwsOpsworksStackCheckResourceAttrsCreate(zone string) resource.TestCheckFunc { + return resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttr( + "aws_opsworks_stack.tf-acc", + "name", + "tf-opsworks-acc", + ), + resource.TestCheckResourceAttr( + "aws_opsworks_stack.tf-acc", + "default_availability_zone", + zone, + ), + resource.TestCheckResourceAttr( + "aws_opsworks_stack.tf-acc", + "default_os", + "Amazon Linux 2014.09", + ), + resource.TestCheckResourceAttr( + "aws_opsworks_stack.tf-acc", + "default_root_device_type", + "ebs", + ), + resource.TestCheckResourceAttr( + "aws_opsworks_stack.tf-acc", + "custom_json", + `{"key": "value"}`, + ), + resource.TestCheckResourceAttr( + "aws_opsworks_stack.tf-acc", + "configuration_manager_version", + "11.10", + ), + resource.TestCheckResourceAttr( + "aws_opsworks_stack.tf-acc", + "use_opsworks_security_groups", + "false", + ), + ) +} -var testAccAwsOpsworksStackCheckResourceAttrsUpdate = resource.ComposeTestCheckFunc( - resource.TestCheckResourceAttr( - "aws_opsworks_stack.tf-acc", - "name", - "tf-opsworks-acc", - ), - resource.TestCheckResourceAttr( - "aws_opsworks_stack.tf-acc", - "default_availability_zone", - "us-east-1c", - ), - resource.TestCheckResourceAttr( - "aws_opsworks_stack.tf-acc", - "default_os", - "Amazon Linux 2014.09", - ), - resource.TestCheckResourceAttr( - "aws_opsworks_stack.tf-acc", - "default_root_device_type", - "ebs", - ), - resource.TestCheckResourceAttr( - "aws_opsworks_stack.tf-acc", - "custom_json", - `{"key": "value"}`, - ), - resource.TestCheckResourceAttr( - "aws_opsworks_stack.tf-acc", - "configuration_manager_version", - "11.10", - ), - resource.TestCheckResourceAttr( - "aws_opsworks_stack.tf-acc", - "use_opsworks_security_groups", - "false", - ), - resource.TestCheckResourceAttr( - "aws_opsworks_stack.tf-acc", - "use_custom_cookbooks", - "true", - ), - resource.TestCheckResourceAttr( - "aws_opsworks_stack.tf-acc", - "manage_berkshelf", - "true", - ), - resource.TestCheckResourceAttr( - "aws_opsworks_stack.tf-acc", - "custom_cookbooks_source.0.type", - "git", - ), - resource.TestCheckResourceAttr( - "aws_opsworks_stack.tf-acc", - "custom_cookbooks_source.0.revision", - "master", - ), - resource.TestCheckResourceAttr( - "aws_opsworks_stack.tf-acc", - "custom_cookbooks_source.0.url", - "https://github.com/aws/opsworks-example-cookbooks.git", - ), -) +func testAccAwsOpsworksStackCheckResourceAttrsUpdate(zone string) resource.TestCheckFunc { + return resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttr( + "aws_opsworks_stack.tf-acc", + "name", + "tf-opsworks-acc", + ), + resource.TestCheckResourceAttr( + "aws_opsworks_stack.tf-acc", + "default_availability_zone", + zone, + ), + resource.TestCheckResourceAttr( + "aws_opsworks_stack.tf-acc", + "default_os", + "Amazon Linux 2014.09", + ), + resource.TestCheckResourceAttr( + "aws_opsworks_stack.tf-acc", + "default_root_device_type", + "ebs", + ), + resource.TestCheckResourceAttr( + "aws_opsworks_stack.tf-acc", + "custom_json", + `{"key": "value"}`, + ), + resource.TestCheckResourceAttr( + "aws_opsworks_stack.tf-acc", + "configuration_manager_version", + "11.10", + ), + resource.TestCheckResourceAttr( + "aws_opsworks_stack.tf-acc", + "use_opsworks_security_groups", + "false", + ), + resource.TestCheckResourceAttr( + "aws_opsworks_stack.tf-acc", + "use_custom_cookbooks", + "true", + ), + resource.TestCheckResourceAttr( + "aws_opsworks_stack.tf-acc", + "manage_berkshelf", + "true", + ), + resource.TestCheckResourceAttr( + "aws_opsworks_stack.tf-acc", + "custom_cookbooks_source.0.type", + "git", + ), + resource.TestCheckResourceAttr( + "aws_opsworks_stack.tf-acc", + "custom_cookbooks_source.0.revision", + "master", + ), + resource.TestCheckResourceAttr( + "aws_opsworks_stack.tf-acc", + "custom_cookbooks_source.0.url", + "https://github.com/aws/opsworks-example-cookbooks.git", + ), + ) +} func testAccAwsOpsworksCheckVpc(s *terraform.State) error { rs, ok := s.RootModule().Resources["aws_opsworks_stack.tf-acc"] @@ -381,7 +385,6 @@ func testAccCheckAwsOpsworksStackDestroy(s *terraform.State) error { } return err } - } return fmt.Errorf("Fall through error for OpsWorks stack test") } diff --git a/builtin/providers/aws/resource_aws_vpc_peering_connection_test.go b/builtin/providers/aws/resource_aws_vpc_peering_connection_test.go index 7e85659f2..6393d4564 100644 --- a/builtin/providers/aws/resource_aws_vpc_peering_connection_test.go +++ b/builtin/providers/aws/resource_aws_vpc_peering_connection_test.go @@ -70,14 +70,32 @@ func testAccCheckAWSVpcPeeringConnectionDestroy(s *terraform.State) error { VpcPeeringConnectionIds: []*string{aws.String(rs.Primary.ID)}, }) - if err == nil { - if len(describe.VpcPeeringConnections) != 0 { - return fmt.Errorf("vpc peering connection still exists") + if err != nil { + return err + } + + var pc *ec2.VpcPeeringConnection + for _, c := range describe.VpcPeeringConnections { + if rs.Primary.ID == *c.VpcPeeringConnectionId { + pc = c } } + + if pc == nil { + // not found + return nil + } + + if pc.Status != nil { + if *pc.Status.Code == "deleted" { + return nil + } + return fmt.Errorf("Found vpc peering connection in unexpected state: %s", pc) + } + } - return nil + return fmt.Errorf("Fall through error for testAccCheckAWSVpcPeeringConnectionDestroy") } func testAccCheckAWSVpcPeeringConnectionExists(n string, connection *ec2.VpcPeeringConnection) resource.TestCheckFunc {