From d956880e2f1fae61633bfa987a5dbdfec9d0377d Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Thu, 17 Jul 2014 09:21:55 -0700 Subject: [PATCH] providers/aws/aws_route_table: can set routes on instance_id --- .../aws/resource_aws_route_table_test.go | 69 ++++++++++++++++++- builtin/providers/aws/resources.go | 1 + 2 files changed, 69 insertions(+), 1 deletion(-) diff --git a/builtin/providers/aws/resource_aws_route_table_test.go b/builtin/providers/aws/resource_aws_route_table_test.go index d18308c8f..6175313da 100644 --- a/builtin/providers/aws/resource_aws_route_table_test.go +++ b/builtin/providers/aws/resource_aws_route_table_test.go @@ -9,7 +9,7 @@ import ( "github.com/mitchellh/goamz/ec2" ) -func TestAccAWSRouteTable(t *testing.T) { +func TestAccAWSRouteTable_normal(t *testing.T) { var v ec2.RouteTable testCheck := func(*terraform.State) error { @@ -81,6 +81,46 @@ func TestAccAWSRouteTable(t *testing.T) { }) } +func TestAccAWSRouteTable_instance(t *testing.T) { + var v ec2.RouteTable + + testCheck := func(*terraform.State) error { + if len(v.Routes) != 2 { + return fmt.Errorf("bad routes: %#v", v.Routes) + } + + routes := make(map[string]ec2.Route) + for _, r := range v.Routes { + routes[r.DestinationCidrBlock] = r + } + + if _, ok := routes["10.1.0.0/16"]; !ok { + return fmt.Errorf("bad routes: %#v", v.Routes) + } + if _, ok := routes["10.2.0.0/16"]; !ok { + return fmt.Errorf("bad routes: %#v", v.Routes) + } + + return nil + } + + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + Providers: testAccProviders, + CheckDestroy: testAccCheckRouteTableDestroy, + Steps: []resource.TestStep{ + resource.TestStep{ + Config: testAccRouteTableConfigInstance, + Check: resource.ComposeTestCheckFunc( + testAccCheckRouteTableExists( + "aws_route_table.foo", &v), + testCheck, + ), + }, + }, + }) +} + func testAccCheckRouteTableDestroy(s *terraform.State) error { conn := testAccProvider.ec2conn @@ -182,3 +222,30 @@ resource "aws_route_table" "foo" { } } ` + +const testAccRouteTableConfigInstance = ` +resource "aws_vpc" "foo" { + cidr_block = "10.1.0.0/16" +} + +resource "aws_subnet" "foo" { + cidr_block = "10.1.1.0/24" + vpc_id = "${aws_vpc.foo.id}" +} + +resource "aws_instance" "foo" { + # us-west-2 + ami = "ami-4fccb37f" + instance_type = "m1.small" + subnet_id = "${aws_subnet.foo.id}" +} + +resource "aws_route_table" "foo" { + vpc_id = "${aws_vpc.foo.id}" + + route { + cidr_block = "10.2.0.0/16" + instance_id = "${aws_instance.foo.id}" + } +} +` diff --git a/builtin/providers/aws/resources.go b/builtin/providers/aws/resources.go index 83a6a5b64..d49953de0 100644 --- a/builtin/providers/aws/resources.go +++ b/builtin/providers/aws/resources.go @@ -70,6 +70,7 @@ func init() { }, Optional: []string{ "route.*.gateway_id", + "route.*.instance_id", }, }, Create: resource_aws_route_table_create,