diff --git a/builtin/providers/aws/resource_aws_autoscaling_group.go b/builtin/providers/aws/resource_aws_autoscaling_group.go index dfef1250f..4bd807f41 100644 --- a/builtin/providers/aws/resource_aws_autoscaling_group.go +++ b/builtin/providers/aws/resource_aws_autoscaling_group.go @@ -13,9 +13,9 @@ import ( ) func resource_aws_autoscaling_group_create( - s *terraform.ResourceState, + s *terraform.InstanceState, d *terraform.ResourceDiff, - meta interface{}) (*terraform.ResourceState, error) { + meta interface{}) (*terraform.InstanceState, error) { p := meta.(*ResourceProvider) autoscalingconn := p.autoscalingconn @@ -81,9 +81,6 @@ func resource_aws_autoscaling_group_create( } rs.ID = rs.Attributes["name"] - rs.Dependencies = []terraform.ResourceDependency{ - terraform.ResourceDependency{ID: rs.Attributes["launch_configuration"]}, - } log.Printf("[INFO] AutoScaling Group ID: %s", rs.ID) @@ -96,9 +93,9 @@ func resource_aws_autoscaling_group_create( } func resource_aws_autoscaling_group_update( - s *terraform.ResourceState, + s *terraform.InstanceState, d *terraform.ResourceDiff, - meta interface{}) (*terraform.ResourceState, error) { + meta interface{}) (*terraform.InstanceState, error) { p := meta.(*ResourceProvider) autoscalingconn := p.autoscalingconn rs := s.MergeDiff(d) @@ -141,7 +138,7 @@ func resource_aws_autoscaling_group_update( } func resource_aws_autoscaling_group_destroy( - s *terraform.ResourceState, + s *terraform.InstanceState, meta interface{}) error { p := meta.(*ResourceProvider) autoscalingconn := p.autoscalingconn @@ -173,8 +170,8 @@ func resource_aws_autoscaling_group_destroy( } func resource_aws_autoscaling_group_refresh( - s *terraform.ResourceState, - meta interface{}) (*terraform.ResourceState, error) { + s *terraform.InstanceState, + meta interface{}) (*terraform.InstanceState, error) { p := meta.(*ResourceProvider) autoscalingconn := p.autoscalingconn @@ -188,7 +185,7 @@ func resource_aws_autoscaling_group_refresh( } func resource_aws_autoscaling_group_diff( - s *terraform.ResourceState, + s *terraform.InstanceState, c *terraform.ResourceConfig, meta interface{}) (*terraform.ResourceDiff, error) { @@ -223,8 +220,8 @@ func resource_aws_autoscaling_group_diff( } func resource_aws_autoscaling_group_update_state( - s *terraform.ResourceState, - g *autoscaling.AutoScalingGroup) (*terraform.ResourceState, error) { + s *terraform.InstanceState, + g *autoscaling.AutoScalingGroup) (*terraform.InstanceState, error) { s.Attributes["min_size"] = strconv.Itoa(g.MinSize) s.Attributes["max_size"] = strconv.Itoa(g.MaxSize) diff --git a/builtin/providers/aws/resource_aws_autoscaling_group_test.go b/builtin/providers/aws/resource_aws_autoscaling_group_test.go index 453e5c74c..fd23ad470 100644 --- a/builtin/providers/aws/resource_aws_autoscaling_group_test.go +++ b/builtin/providers/aws/resource_aws_autoscaling_group_test.go @@ -65,7 +65,7 @@ func TestAccAWSAutoScalingGroupWithLoadBalancer(t *testing.T) { func testAccCheckAWSAutoScalingGroupDestroy(s *terraform.State) error { conn := testAccProvider.autoscalingconn - for _, rs := range s.Resources { + for _, rs := range s.RootModule().Resources { if rs.Type != "aws_autoscaling_group" { continue } @@ -73,12 +73,12 @@ func testAccCheckAWSAutoScalingGroupDestroy(s *terraform.State) error { // Try to find the Group describeGroups, err := conn.DescribeAutoScalingGroups( &autoscaling.DescribeAutoScalingGroups{ - Names: []string{rs.ID}, + Names: []string{rs.Primary.ID}, }) if err == nil { if len(describeGroups.AutoScalingGroups) != 0 && - describeGroups.AutoScalingGroups[0].Name == rs.ID { + describeGroups.AutoScalingGroups[0].Name == rs.Primary.ID { return fmt.Errorf("AutoScaling Group still exists") } } @@ -146,19 +146,19 @@ func testAccCheckAWSAutoScalingGroupAttributesLoadBalancer(group *autoscaling.Au func testAccCheckAWSAutoScalingGroupExists(n string, group *autoscaling.AutoScalingGroup) resource.TestCheckFunc { return func(s *terraform.State) error { - rs, ok := s.Resources[n] + rs, ok := s.RootModule().Resources[n] if !ok { return fmt.Errorf("Not found: %s", n) } - if rs.ID == "" { + if rs.Primary.ID == "" { return fmt.Errorf("No AutoScaling Group ID is set") } conn := testAccProvider.autoscalingconn describeOpts := autoscaling.DescribeAutoScalingGroups{ - Names: []string{rs.ID}, + Names: []string{rs.Primary.ID}, } describeGroups, err := conn.DescribeAutoScalingGroups(&describeOpts) @@ -167,7 +167,7 @@ func testAccCheckAWSAutoScalingGroupExists(n string, group *autoscaling.AutoScal } if len(describeGroups.AutoScalingGroups) != 1 || - describeGroups.AutoScalingGroups[0].Name != rs.ID { + describeGroups.AutoScalingGroups[0].Name != rs.Primary.ID { return fmt.Errorf("AutoScaling Group not found") } diff --git a/builtin/providers/aws/resource_aws_db_instance.go b/builtin/providers/aws/resource_aws_db_instance.go index a10dace3b..79a716992 100644 --- a/builtin/providers/aws/resource_aws_db_instance.go +++ b/builtin/providers/aws/resource_aws_db_instance.go @@ -16,9 +16,9 @@ import ( ) func resource_aws_db_instance_create( - s *terraform.ResourceState, + s *terraform.InstanceState, d *terraform.ResourceDiff, - meta interface{}) (*terraform.ResourceState, error) { + meta interface{}) (*terraform.InstanceState, error) { p := meta.(*ResourceProvider) conn := p.rdsconn @@ -136,14 +136,14 @@ func resource_aws_db_instance_create( } func resource_aws_db_instance_update( - s *terraform.ResourceState, + s *terraform.InstanceState, d *terraform.ResourceDiff, - meta interface{}) (*terraform.ResourceState, error) { + meta interface{}) (*terraform.InstanceState, error) { panic("Cannot update DB") } func resource_aws_db_instance_destroy( - s *terraform.ResourceState, + s *terraform.InstanceState, meta interface{}) error { p := meta.(*ResourceProvider) conn := p.rdsconn @@ -184,8 +184,8 @@ func resource_aws_db_instance_destroy( } func resource_aws_db_instance_refresh( - s *terraform.ResourceState, - meta interface{}) (*terraform.ResourceState, error) { + s *terraform.InstanceState, + meta interface{}) (*terraform.InstanceState, error) { p := meta.(*ResourceProvider) conn := p.rdsconn @@ -199,7 +199,7 @@ func resource_aws_db_instance_refresh( } func resource_aws_db_instance_diff( - s *terraform.ResourceState, + s *terraform.InstanceState, c *terraform.ResourceConfig, meta interface{}) (*terraform.ResourceDiff, error) { @@ -247,8 +247,8 @@ func resource_aws_db_instance_diff( } func resource_aws_db_instance_update_state( - s *terraform.ResourceState, - v *rds.DBInstance) (*terraform.ResourceState, error) { + s *terraform.InstanceState, + v *rds.DBInstance) (*terraform.InstanceState, error) { s.Attributes["address"] = v.Address s.Attributes["allocated_storage"] = strconv.Itoa(v.AllocatedStorage) @@ -279,13 +279,6 @@ func resource_aws_db_instance_update_state( s.Attributes[k] = v } - // We depend on any security groups attached - for _, g := range v.DBSecurityGroupNames { - s.Dependencies = []terraform.ResourceDependency{ - terraform.ResourceDependency{ID: g}, - } - } - return s, nil } diff --git a/builtin/providers/aws/resource_aws_db_instance_test.go b/builtin/providers/aws/resource_aws_db_instance_test.go index a4ef480f0..05073fe93 100644 --- a/builtin/providers/aws/resource_aws_db_instance_test.go +++ b/builtin/providers/aws/resource_aws_db_instance_test.go @@ -52,7 +52,7 @@ func TestAccAWSDBInstance(t *testing.T) { func testAccCheckAWSDBInstanceDestroy(s *terraform.State) error { conn := testAccProvider.rdsconn - for _, rs := range s.Resources { + for _, rs := range s.RootModule().Resources { if rs.Type != "aws_db_instance" { continue } @@ -60,12 +60,12 @@ func testAccCheckAWSDBInstanceDestroy(s *terraform.State) error { // Try to find the Group resp, err := conn.DescribeDBInstances( &rds.DescribeDBInstances{ - DBInstanceIdentifier: rs.ID, + DBInstanceIdentifier: rs.Primary.ID, }) if err == nil { if len(resp.DBInstances) != 0 && - resp.DBInstances[0].DBInstanceIdentifier == rs.ID { + resp.DBInstances[0].DBInstanceIdentifier == rs.Primary.ID { return fmt.Errorf("DB Instance still exists") } } @@ -104,19 +104,19 @@ func testAccCheckAWSDBInstanceAttributes(v *rds.DBInstance) resource.TestCheckFu func testAccCheckAWSDBInstanceExists(n string, v *rds.DBInstance) resource.TestCheckFunc { return func(s *terraform.State) error { - rs, ok := s.Resources[n] + rs, ok := s.RootModule().Resources[n] if !ok { return fmt.Errorf("Not found: %s", n) } - if rs.ID == "" { + if rs.Primary.ID == "" { return fmt.Errorf("No DB Instance ID is set") } conn := testAccProvider.rdsconn opts := rds.DescribeDBInstances{ - DBInstanceIdentifier: rs.ID, + DBInstanceIdentifier: rs.Primary.ID, } resp, err := conn.DescribeDBInstances(&opts) @@ -126,7 +126,7 @@ func testAccCheckAWSDBInstanceExists(n string, v *rds.DBInstance) resource.TestC } if len(resp.DBInstances) != 1 || - resp.DBInstances[0].DBInstanceIdentifier != rs.ID { + resp.DBInstances[0].DBInstanceIdentifier != rs.Primary.ID { return fmt.Errorf("DB Instance not found") } diff --git a/builtin/providers/aws/resource_aws_db_security_group.go b/builtin/providers/aws/resource_aws_db_security_group.go index fab93cd72..d9eacd9ac 100644 --- a/builtin/providers/aws/resource_aws_db_security_group.go +++ b/builtin/providers/aws/resource_aws_db_security_group.go @@ -15,9 +15,9 @@ import ( ) func resource_aws_db_security_group_create( - s *terraform.ResourceState, + s *terraform.InstanceState, d *terraform.ResourceDiff, - meta interface{}) (*terraform.ResourceState, error) { + meta interface{}) (*terraform.InstanceState, error) { p := meta.(*ResourceProvider) conn := p.rdsconn @@ -85,14 +85,14 @@ func resource_aws_db_security_group_create( } func resource_aws_db_security_group_update( - s *terraform.ResourceState, + s *terraform.InstanceState, d *terraform.ResourceDiff, - meta interface{}) (*terraform.ResourceState, error) { + meta interface{}) (*terraform.InstanceState, error) { panic("Cannot update DB security group") } func resource_aws_db_security_group_destroy( - s *terraform.ResourceState, + s *terraform.InstanceState, meta interface{}) error { p := meta.(*ResourceProvider) conn := p.rdsconn @@ -116,8 +116,8 @@ func resource_aws_db_security_group_destroy( } func resource_aws_db_security_group_refresh( - s *terraform.ResourceState, - meta interface{}) (*terraform.ResourceState, error) { + s *terraform.InstanceState, + meta interface{}) (*terraform.InstanceState, error) { p := meta.(*ResourceProvider) conn := p.rdsconn @@ -131,7 +131,7 @@ func resource_aws_db_security_group_refresh( } func resource_aws_db_security_group_diff( - s *terraform.ResourceState, + s *terraform.InstanceState, c *terraform.ResourceConfig, meta interface{}) (*terraform.ResourceDiff, error) { @@ -152,8 +152,8 @@ func resource_aws_db_security_group_diff( } func resource_aws_db_security_group_update_state( - s *terraform.ResourceState, - v *rds.DBSecurityGroup) (*terraform.ResourceState, error) { + s *terraform.InstanceState, + v *rds.DBSecurityGroup) (*terraform.InstanceState, error) { s.Attributes["name"] = v.Name s.Attributes["description"] = v.Description diff --git a/builtin/providers/aws/resource_aws_db_security_group_test.go b/builtin/providers/aws/resource_aws_db_security_group_test.go index e26e0f479..f81ac2537 100644 --- a/builtin/providers/aws/resource_aws_db_security_group_test.go +++ b/builtin/providers/aws/resource_aws_db_security_group_test.go @@ -39,7 +39,7 @@ func TestAccAWSDBSecurityGroup(t *testing.T) { func testAccCheckAWSDBSecurityGroupDestroy(s *terraform.State) error { conn := testAccProvider.rdsconn - for _, rs := range s.Resources { + for _, rs := range s.RootModule().Resources { if rs.Type != "aws_db_security_group" { continue } @@ -47,12 +47,12 @@ func testAccCheckAWSDBSecurityGroupDestroy(s *terraform.State) error { // Try to find the Group resp, err := conn.DescribeDBSecurityGroups( &rds.DescribeDBSecurityGroups{ - DBSecurityGroupName: rs.ID, + DBSecurityGroupName: rs.Primary.ID, }) if err == nil { if len(resp.DBSecurityGroups) != 0 && - resp.DBSecurityGroups[0].Name == rs.ID { + resp.DBSecurityGroups[0].Name == rs.Primary.ID { return fmt.Errorf("DB Security Group still exists") } } @@ -98,19 +98,19 @@ func testAccCheckAWSDBSecurityGroupAttributes(group *rds.DBSecurityGroup) resour func testAccCheckAWSDBSecurityGroupExists(n string, v *rds.DBSecurityGroup) resource.TestCheckFunc { return func(s *terraform.State) error { - rs, ok := s.Resources[n] + rs, ok := s.RootModule().Resources[n] if !ok { return fmt.Errorf("Not found: %s", n) } - if rs.ID == "" { + if rs.Primary.ID == "" { return fmt.Errorf("No DB Security Group ID is set") } conn := testAccProvider.rdsconn opts := rds.DescribeDBSecurityGroups{ - DBSecurityGroupName: rs.ID, + DBSecurityGroupName: rs.Primary.ID, } resp, err := conn.DescribeDBSecurityGroups(&opts) @@ -120,7 +120,7 @@ func testAccCheckAWSDBSecurityGroupExists(n string, v *rds.DBSecurityGroup) reso } if len(resp.DBSecurityGroups) != 1 || - resp.DBSecurityGroups[0].Name != rs.ID { + resp.DBSecurityGroups[0].Name != rs.Primary.ID { return fmt.Errorf("DB Security Group not found") } diff --git a/builtin/providers/aws/resource_aws_eip_test.go b/builtin/providers/aws/resource_aws_eip_test.go index 63f2a42f1..b0272bd52 100644 --- a/builtin/providers/aws/resource_aws_eip_test.go +++ b/builtin/providers/aws/resource_aws_eip_test.go @@ -59,16 +59,16 @@ func TestAccAWSEIP_instance(t *testing.T) { func testAccCheckAWSEIPDestroy(s *terraform.State) error { conn := testAccProvider.ec2conn - for _, rs := range s.Resources { + for _, rs := range s.RootModule().Resources { if rs.Type != "aws_eip" { continue } - describe, err := conn.Addresses([]string{rs.ID}, []string{}, nil) + describe, err := conn.Addresses([]string{rs.Primary.ID}, []string{}, nil) if err == nil { if len(describe.Addresses) != 0 && - describe.Addresses[0].PublicIp == rs.ID { + describe.Addresses[0].PublicIp == rs.Primary.ID { return fmt.Errorf("EIP still exists") } } @@ -103,37 +103,37 @@ func testAccCheckAWSEIPAttributes(conf *ec2.Address) resource.TestCheckFunc { func testAccCheckAWSEIPExists(n string, res *ec2.Address) resource.TestCheckFunc { return func(s *terraform.State) error { - rs, ok := s.Resources[n] + rs, ok := s.RootModule().Resources[n] if !ok { return fmt.Errorf("Not found: %s", n) } - if rs.ID == "" { + if rs.Primary.ID == "" { return fmt.Errorf("No EIP ID is set") } conn := testAccProvider.ec2conn - if strings.Contains(rs.ID, "eipalloc") { - describe, err := conn.Addresses([]string{}, []string{rs.ID}, nil) + if strings.Contains(rs.Primary.ID, "eipalloc") { + describe, err := conn.Addresses([]string{}, []string{rs.Primary.ID}, nil) if err != nil { return err } if len(describe.Addresses) != 1 || - describe.Addresses[0].AllocationId != rs.ID { + describe.Addresses[0].AllocationId != rs.Primary.ID { return fmt.Errorf("EIP not found") } *res = describe.Addresses[0] } else { - describe, err := conn.Addresses([]string{rs.ID}, []string{}, nil) + describe, err := conn.Addresses([]string{rs.Primary.ID}, []string{}, nil) if err != nil { return err } if len(describe.Addresses) != 1 || - describe.Addresses[0].PublicIp != rs.ID { + describe.Addresses[0].PublicIp != rs.Primary.ID { return fmt.Errorf("EIP not found") } *res = describe.Addresses[0] diff --git a/builtin/providers/aws/resource_aws_elb.go b/builtin/providers/aws/resource_aws_elb.go index 22746acb9..5fd512a77 100644 --- a/builtin/providers/aws/resource_aws_elb.go +++ b/builtin/providers/aws/resource_aws_elb.go @@ -13,9 +13,9 @@ import ( ) func resource_aws_elb_create( - s *terraform.ResourceState, + s *terraform.InstanceState, d *terraform.ResourceDiff, - meta interface{}) (*terraform.ResourceState, error) { + meta interface{}) (*terraform.InstanceState, error) { p := meta.(*ResourceProvider) elbconn := p.elbconn @@ -124,9 +124,9 @@ func resource_aws_elb_create( } func resource_aws_elb_update( - s *terraform.ResourceState, + s *terraform.InstanceState, d *terraform.ResourceDiff, - meta interface{}) (*terraform.ResourceState, error) { + meta interface{}) (*terraform.InstanceState, error) { p := meta.(*ResourceProvider) elbconn := p.elbconn @@ -214,7 +214,7 @@ func resource_aws_elb_update( } func resource_aws_elb_destroy( - s *terraform.ResourceState, + s *terraform.InstanceState, meta interface{}) error { p := meta.(*ResourceProvider) elbconn := p.elbconn @@ -235,8 +235,8 @@ func resource_aws_elb_destroy( } func resource_aws_elb_refresh( - s *terraform.ResourceState, - meta interface{}) (*terraform.ResourceState, error) { + s *terraform.InstanceState, + meta interface{}) (*terraform.InstanceState, error) { p := meta.(*ResourceProvider) elbconn := p.elbconn @@ -249,7 +249,7 @@ func resource_aws_elb_refresh( } func resource_aws_elb_diff( - s *terraform.ResourceState, + s *terraform.InstanceState, c *terraform.ResourceConfig, meta interface{}) (*terraform.ResourceDiff, error) { @@ -273,8 +273,8 @@ func resource_aws_elb_diff( } func resource_aws_elb_update_state( - s *terraform.ResourceState, - balancer *elb.LoadBalancer) (*terraform.ResourceState, error) { + s *terraform.InstanceState, + balancer *elb.LoadBalancer) (*terraform.InstanceState, error) { s.Attributes["name"] = balancer.LoadBalancerName s.Attributes["dns_name"] = balancer.DNSName diff --git a/builtin/providers/aws/resource_aws_elb_test.go b/builtin/providers/aws/resource_aws_elb_test.go index 7edeb6d85..a0a1c657c 100644 --- a/builtin/providers/aws/resource_aws_elb_test.go +++ b/builtin/providers/aws/resource_aws_elb_test.go @@ -112,18 +112,18 @@ func TestAccAWSELB_HealthCheck(t *testing.T) { func testAccCheckAWSELBDestroy(s *terraform.State) error { conn := testAccProvider.elbconn - for _, rs := range s.Resources { + for _, rs := range s.RootModule().Resources { if rs.Type != "aws_elb" { continue } describe, err := conn.DescribeLoadBalancers(&elb.DescribeLoadBalancer{ - Names: []string{rs.ID}, + Names: []string{rs.Primary.ID}, }) if err == nil { if len(describe.LoadBalancers) != 0 && - describe.LoadBalancers[0].LoadBalancerName == rs.ID { + describe.LoadBalancers[0].LoadBalancerName == rs.Primary.ID { return fmt.Errorf("ELB still exists") } } @@ -209,19 +209,19 @@ func testAccCheckAWSELBAttributesHealthCheck(conf *elb.LoadBalancer) resource.Te func testAccCheckAWSELBExists(n string, res *elb.LoadBalancer) resource.TestCheckFunc { return func(s *terraform.State) error { - rs, ok := s.Resources[n] + rs, ok := s.RootModule().Resources[n] if !ok { return fmt.Errorf("Not found: %s", n) } - if rs.ID == "" { + if rs.Primary.ID == "" { return fmt.Errorf("No ELB ID is set") } conn := testAccProvider.elbconn describe, err := conn.DescribeLoadBalancers(&elb.DescribeLoadBalancer{ - Names: []string{rs.ID}, + Names: []string{rs.Primary.ID}, }) if err != nil { @@ -229,7 +229,7 @@ func testAccCheckAWSELBExists(n string, res *elb.LoadBalancer) resource.TestChec } if len(describe.LoadBalancers) != 1 || - describe.LoadBalancers[0].LoadBalancerName != rs.ID { + describe.LoadBalancers[0].LoadBalancerName != rs.Primary.ID { return fmt.Errorf("ELB not found") } diff --git a/builtin/providers/aws/resource_aws_instance.go b/builtin/providers/aws/resource_aws_instance.go index ffe2256ea..b97981c16 100644 --- a/builtin/providers/aws/resource_aws_instance.go +++ b/builtin/providers/aws/resource_aws_instance.go @@ -11,7 +11,6 @@ import ( "github.com/hashicorp/terraform/helper/hashcode" "github.com/hashicorp/terraform/helper/resource" "github.com/hashicorp/terraform/helper/schema" - "github.com/hashicorp/terraform/terraform" "github.com/mitchellh/goamz/ec2" ) @@ -315,8 +314,6 @@ func resourceAwsInstanceRead(d *schema.ResourceData, meta interface{}) error { d.Set("subnet_id", instance.SubnetId) d.Set("ebs_optimized", instance.EbsOptimized) - var deps []terraform.ResourceDependency - // Determine whether we're referring to security groups with // IDs or names. We use a heuristic to figure this out. By default, // we use IDs if we're in a VPC. However, if we previously had an @@ -343,17 +340,9 @@ func resourceAwsInstanceRead(d *schema.ResourceData, meta interface{}) error { } else { sgs[i] = sg.Name } - - deps = append(deps, terraform.ResourceDependency{ID: sg.Id}) } d.Set("security_groups", sgs) - // If we're in a VPC, we depend on the subnet - if instance.SubnetId != "" { - deps = append(deps, terraform.ResourceDependency{ID: instance.SubnetId}) - } - - d.SetDependencies(deps) return nil } diff --git a/builtin/providers/aws/resource_aws_instance_test.go b/builtin/providers/aws/resource_aws_instance_test.go index 8d6f88fb3..ec679fe1b 100644 --- a/builtin/providers/aws/resource_aws_instance_test.go +++ b/builtin/providers/aws/resource_aws_instance_test.go @@ -125,14 +125,14 @@ func TestAccAWSInstance_vpc(t *testing.T) { func testAccCheckInstanceDestroy(s *terraform.State) error { conn := testAccProvider.ec2conn - for _, rs := range s.Resources { + for _, rs := range s.RootModule().Resources { if rs.Type != "aws_instance" { continue } // Try to find the resource resp, err := conn.Instances( - []string{rs.ID}, ec2.NewFilter()) + []string{rs.Primary.ID}, ec2.NewFilter()) if err == nil { if len(resp.Reservations) > 0 { return fmt.Errorf("still exist.") @@ -156,18 +156,18 @@ func testAccCheckInstanceDestroy(s *terraform.State) error { func testAccCheckInstanceExists(n string, i *ec2.Instance) resource.TestCheckFunc { return func(s *terraform.State) error { - rs, ok := s.Resources[n] + rs, ok := s.RootModule().Resources[n] if !ok { return fmt.Errorf("Not found: %s", n) } - if rs.ID == "" { + if rs.Primary.ID == "" { return fmt.Errorf("No ID is set") } conn := testAccProvider.ec2conn resp, err := conn.Instances( - []string{rs.ID}, ec2.NewFilter()) + []string{rs.Primary.ID}, ec2.NewFilter()) if err != nil { return err } diff --git a/builtin/providers/aws/resource_aws_internet_gateway.go b/builtin/providers/aws/resource_aws_internet_gateway.go index b0a0b9aab..9a60d0333 100644 --- a/builtin/providers/aws/resource_aws_internet_gateway.go +++ b/builtin/providers/aws/resource_aws_internet_gateway.go @@ -12,9 +12,9 @@ import ( ) func resource_aws_internet_gateway_create( - s *terraform.ResourceState, + s *terraform.InstanceState, d *terraform.ResourceDiff, - meta interface{}) (*terraform.ResourceState, error) { + meta interface{}) (*terraform.InstanceState, error) { p := meta.(*ResourceProvider) ec2conn := p.ec2conn @@ -35,9 +35,9 @@ func resource_aws_internet_gateway_create( } func resource_aws_internet_gateway_update( - s *terraform.ResourceState, + s *terraform.InstanceState, d *terraform.ResourceDiff, - meta interface{}) (*terraform.ResourceState, error) { + meta interface{}) (*terraform.InstanceState, error) { p := meta.(*ResourceProvider) ec2conn := p.ec2conn @@ -70,7 +70,7 @@ func resource_aws_internet_gateway_update( } func resource_aws_internet_gateway_destroy( - s *terraform.ResourceState, + s *terraform.InstanceState, meta interface{}) error { p := meta.(*ResourceProvider) ec2conn := p.ec2conn @@ -108,8 +108,8 @@ func resource_aws_internet_gateway_destroy( } func resource_aws_internet_gateway_refresh( - s *terraform.ResourceState, - meta interface{}) (*terraform.ResourceState, error) { + s *terraform.InstanceState, + meta interface{}) (*terraform.InstanceState, error) { p := meta.(*ResourceProvider) ec2conn := p.ec2conn @@ -126,7 +126,7 @@ func resource_aws_internet_gateway_refresh( } func resource_aws_internet_gateway_diff( - s *terraform.ResourceState, + s *terraform.InstanceState, c *terraform.ResourceConfig, meta interface{}) (*terraform.ResourceDiff, error) { b := &diff.ResourceBuilder{ @@ -140,7 +140,7 @@ func resource_aws_internet_gateway_diff( func resource_aws_internet_gateway_attach( ec2conn *ec2.EC2, - s *terraform.ResourceState, + s *terraform.InstanceState, vpcId string) error { log.Printf( "[INFO] Attaching Internet Gateway '%s' to VPC '%s'", @@ -170,7 +170,7 @@ func resource_aws_internet_gateway_attach( func resource_aws_internet_gateway_detach( ec2conn *ec2.EC2, - s *terraform.ResourceState) error { + s *terraform.InstanceState) error { if s.Attributes["vpc_id"] == "" { return nil } @@ -222,15 +222,8 @@ func resource_aws_internet_gateway_detach( } func resource_aws_internet_gateway_update_state( - s *terraform.ResourceState, - ig *ec2.InternetGateway) (*terraform.ResourceState, error) { - if s.Attributes["vpc_id"] != "" { - // We belong to a VPC - s.Dependencies = []terraform.ResourceDependency{ - terraform.ResourceDependency{ID: s.Attributes["vpc_id"]}, - } - } - + s *terraform.InstanceState, + ig *ec2.InternetGateway) (*terraform.InstanceState, error) { return s, nil } diff --git a/builtin/providers/aws/resource_aws_internet_gateway_test.go b/builtin/providers/aws/resource_aws_internet_gateway_test.go index d38324d70..a5974cf25 100644 --- a/builtin/providers/aws/resource_aws_internet_gateway_test.go +++ b/builtin/providers/aws/resource_aws_internet_gateway_test.go @@ -57,14 +57,14 @@ func TestAccAWSInternetGateway(t *testing.T) { func testAccCheckInternetGatewayDestroy(s *terraform.State) error { conn := testAccProvider.ec2conn - for _, rs := range s.Resources { + for _, rs := range s.RootModule().Resources { if rs.Type != "aws_internet_gateway" { continue } // Try to find the resource resp, err := conn.DescribeInternetGateways( - []string{rs.ID}, ec2.NewFilter()) + []string{rs.Primary.ID}, ec2.NewFilter()) if err == nil { if len(resp.InternetGateways) > 0 { return fmt.Errorf("still exist.") @@ -88,18 +88,18 @@ func testAccCheckInternetGatewayDestroy(s *terraform.State) error { func testAccCheckInternetGatewayExists(n string, ig *ec2.InternetGateway) resource.TestCheckFunc { return func(s *terraform.State) error { - rs, ok := s.Resources[n] + rs, ok := s.RootModule().Resources[n] if !ok { return fmt.Errorf("Not found: %s", n) } - if rs.ID == "" { + if rs.Primary.ID == "" { return fmt.Errorf("No ID is set") } conn := testAccProvider.ec2conn resp, err := conn.DescribeInternetGateways( - []string{rs.ID}, ec2.NewFilter()) + []string{rs.Primary.ID}, ec2.NewFilter()) if err != nil { return err } diff --git a/builtin/providers/aws/resource_aws_launch_configuration.go b/builtin/providers/aws/resource_aws_launch_configuration.go index 87d97a2ce..6e39aa53c 100644 --- a/builtin/providers/aws/resource_aws_launch_configuration.go +++ b/builtin/providers/aws/resource_aws_launch_configuration.go @@ -12,9 +12,9 @@ import ( ) func resource_aws_launch_configuration_create( - s *terraform.ResourceState, + s *terraform.InstanceState, d *terraform.ResourceDiff, - meta interface{}) (*terraform.ResourceState, error) { + meta interface{}) (*terraform.InstanceState, error) { p := meta.(*ResourceProvider) autoscalingconn := p.autoscalingconn @@ -75,14 +75,14 @@ func resource_aws_launch_configuration_create( } func resource_aws_launch_configuration_update( - s *terraform.ResourceState, + s *terraform.InstanceState, d *terraform.ResourceDiff, - meta interface{}) (*terraform.ResourceState, error) { + meta interface{}) (*terraform.InstanceState, error) { panic("Update for AWS Launch Configuration is not supported") } func resource_aws_launch_configuration_destroy( - s *terraform.ResourceState, + s *terraform.InstanceState, meta interface{}) error { p := meta.(*ResourceProvider) autoscalingconn := p.autoscalingconn @@ -103,8 +103,8 @@ func resource_aws_launch_configuration_destroy( } func resource_aws_launch_configuration_refresh( - s *terraform.ResourceState, - meta interface{}) (*terraform.ResourceState, error) { + s *terraform.InstanceState, + meta interface{}) (*terraform.InstanceState, error) { p := meta.(*ResourceProvider) autoscalingconn := p.autoscalingconn @@ -118,7 +118,7 @@ func resource_aws_launch_configuration_refresh( } func resource_aws_launch_configuration_diff( - s *terraform.ResourceState, + s *terraform.InstanceState, c *terraform.ResourceConfig, meta interface{}) (*terraform.ResourceDiff, error) { @@ -142,8 +142,8 @@ func resource_aws_launch_configuration_diff( } func resource_aws_launch_configuration_update_state( - s *terraform.ResourceState, - lc *autoscaling.LaunchConfiguration) (*terraform.ResourceState, error) { + s *terraform.InstanceState, + lc *autoscaling.LaunchConfiguration) (*terraform.InstanceState, error) { s.Attributes["image_id"] = lc.ImageId s.Attributes["instance_type"] = lc.InstanceType diff --git a/builtin/providers/aws/resource_aws_launch_configuration_test.go b/builtin/providers/aws/resource_aws_launch_configuration_test.go index 5b75f5d17..153d276db 100644 --- a/builtin/providers/aws/resource_aws_launch_configuration_test.go +++ b/builtin/providers/aws/resource_aws_launch_configuration_test.go @@ -40,19 +40,19 @@ func TestAccAWSLaunchConfiguration(t *testing.T) { func testAccCheckAWSLaunchConfigurationDestroy(s *terraform.State) error { conn := testAccProvider.autoscalingconn - for _, rs := range s.Resources { + for _, rs := range s.RootModule().Resources { if rs.Type != "aws_launch_configuration" { continue } describe, err := conn.DescribeLaunchConfigurations( &autoscaling.DescribeLaunchConfigurations{ - Names: []string{rs.ID}, + Names: []string{rs.Primary.ID}, }) if err == nil { if len(describe.LaunchConfigurations) != 0 && - describe.LaunchConfigurations[0].Name == rs.ID { + describe.LaunchConfigurations[0].Name == rs.Primary.ID { return fmt.Errorf("Launch Configuration still exists") } } @@ -94,19 +94,19 @@ func testAccCheckAWSLaunchConfigurationAttributes(conf *autoscaling.LaunchConfig func testAccCheckAWSLaunchConfigurationExists(n string, res *autoscaling.LaunchConfiguration) resource.TestCheckFunc { return func(s *terraform.State) error { - rs, ok := s.Resources[n] + rs, ok := s.RootModule().Resources[n] if !ok { return fmt.Errorf("Not found: %s", n) } - if rs.ID == "" { + if rs.Primary.ID == "" { return fmt.Errorf("No Launch Configuration ID is set") } conn := testAccProvider.autoscalingconn describeOpts := autoscaling.DescribeLaunchConfigurations{ - Names: []string{rs.ID}, + Names: []string{rs.Primary.ID}, } describe, err := conn.DescribeLaunchConfigurations(&describeOpts) @@ -115,7 +115,7 @@ func testAccCheckAWSLaunchConfigurationExists(n string, res *autoscaling.LaunchC } if len(describe.LaunchConfigurations) != 1 || - describe.LaunchConfigurations[0].Name != rs.ID { + describe.LaunchConfigurations[0].Name != rs.Primary.ID { return fmt.Errorf("Launch Configuration Group not found") } diff --git a/builtin/providers/aws/resource_aws_route53_record.go b/builtin/providers/aws/resource_aws_route53_record.go index e385090b0..da530ba34 100644 --- a/builtin/providers/aws/resource_aws_route53_record.go +++ b/builtin/providers/aws/resource_aws_route53_record.go @@ -28,9 +28,9 @@ func resource_aws_r53_record_validation() *config.Validator { } func resource_aws_r53_record_create( - s *terraform.ResourceState, + s *terraform.InstanceState, d *terraform.ResourceDiff, - meta interface{}) (*terraform.ResourceState, error) { + meta interface{}) (*terraform.InstanceState, error) { p := meta.(*ResourceProvider) conn := p.route53 @@ -87,9 +87,6 @@ func resource_aws_r53_record_create( // Generate an ID rs.ID = fmt.Sprintf("%s_%s_%s", zone, rs.Attributes["name"], rs.Attributes["type"]) - rs.Dependencies = []terraform.ResourceDependency{ - terraform.ResourceDependency{ID: zone}, - } // Wait until we are done wait = resource.StateChangeConf{ @@ -109,7 +106,7 @@ func resource_aws_r53_record_create( return rs, nil } -func resource_aws_r53_build_record_set(s *terraform.ResourceState) (*route53.ResourceRecordSet, error) { +func resource_aws_r53_build_record_set(s *terraform.InstanceState) (*route53.ResourceRecordSet, error) { // Parse the TTL ttl, err := strconv.ParseInt(s.Attributes["ttl"], 10, 32) if err != nil { @@ -133,7 +130,7 @@ func resource_aws_r53_build_record_set(s *terraform.ResourceState) (*route53.Res } func resource_aws_r53_record_destroy( - s *terraform.ResourceState, + s *terraform.InstanceState, meta interface{}) error { p := meta.(*ResourceProvider) conn := p.route53 @@ -185,8 +182,8 @@ func resource_aws_r53_record_destroy( } func resource_aws_r53_record_refresh( - s *terraform.ResourceState, - meta interface{}) (*terraform.ResourceState, error) { + s *terraform.InstanceState, + meta interface{}) (*terraform.InstanceState, error) { p := meta.(*ResourceProvider) conn := p.route53 @@ -221,7 +218,7 @@ func resource_aws_r53_record_refresh( } func resource_aws_r53_record_update_state( - s *terraform.ResourceState, + s *terraform.InstanceState, rec *route53.ResourceRecordSet) { flatRec := flatmap.Flatten(map[string]interface{}{ @@ -235,7 +232,7 @@ func resource_aws_r53_record_update_state( } func resource_aws_r53_record_diff( - s *terraform.ResourceState, + s *terraform.InstanceState, c *terraform.ResourceConfig, meta interface{}) (*terraform.ResourceDiff, error) { b := &diff.ResourceBuilder{ diff --git a/builtin/providers/aws/resource_aws_route53_record_test.go b/builtin/providers/aws/resource_aws_route53_record_test.go index 562f54fda..c22fc994f 100644 --- a/builtin/providers/aws/resource_aws_route53_record_test.go +++ b/builtin/providers/aws/resource_aws_route53_record_test.go @@ -28,12 +28,12 @@ func TestAccRoute53Record(t *testing.T) { func testAccCheckRoute53RecordDestroy(s *terraform.State) error { conn := testAccProvider.route53 - for _, rs := range s.Resources { + for _, rs := range s.RootModule().Resources { if rs.Type != "aws_route53_record" { continue } - parts := strings.Split(rs.ID, "_") + parts := strings.Split(rs.Primary.ID, "_") zone := parts[0] name := parts[1] rType := parts[2] @@ -57,16 +57,16 @@ func testAccCheckRoute53RecordDestroy(s *terraform.State) error { func testAccCheckRoute53RecordExists(n string) resource.TestCheckFunc { return func(s *terraform.State) error { conn := testAccProvider.route53 - rs, ok := s.Resources[n] + rs, ok := s.RootModule().Resources[n] if !ok { return fmt.Errorf("Not found: %s", n) } - if rs.ID == "" { + if rs.Primary.ID == "" { return fmt.Errorf("No hosted zone ID is set") } - parts := strings.Split(rs.ID, "_") + parts := strings.Split(rs.Primary.ID, "_") zone := parts[0] name := parts[1] rType := parts[2] diff --git a/builtin/providers/aws/resource_aws_route53_zone.go b/builtin/providers/aws/resource_aws_route53_zone.go index 599ba2eab..ef93da00f 100644 --- a/builtin/providers/aws/resource_aws_route53_zone.go +++ b/builtin/providers/aws/resource_aws_route53_zone.go @@ -21,9 +21,9 @@ func resource_aws_r53_zone_validation() *config.Validator { } func resource_aws_r53_zone_create( - s *terraform.ResourceState, + s *terraform.InstanceState, d *terraform.ResourceDiff, - meta interface{}) (*terraform.ResourceState, error) { + meta interface{}) (*terraform.InstanceState, error) { p := meta.(*ResourceProvider) r53 := p.route53 @@ -74,7 +74,7 @@ func resource_aws_r53_wait(r53 *route53.Route53, ref string) (result interface{} } func resource_aws_r53_zone_destroy( - s *terraform.ResourceState, + s *terraform.InstanceState, meta interface{}) error { p := meta.(*ResourceProvider) r53 := p.route53 @@ -89,8 +89,8 @@ func resource_aws_r53_zone_destroy( } func resource_aws_r53_zone_refresh( - s *terraform.ResourceState, - meta interface{}) (*terraform.ResourceState, error) { + s *terraform.InstanceState, + meta interface{}) (*terraform.InstanceState, error) { p := meta.(*ResourceProvider) r53 := p.route53 @@ -107,7 +107,7 @@ func resource_aws_r53_zone_refresh( } func resource_aws_r53_zone_diff( - s *terraform.ResourceState, + s *terraform.InstanceState, c *terraform.ResourceConfig, meta interface{}) (*terraform.ResourceDiff, error) { diff --git a/builtin/providers/aws/resource_aws_route53_zone_test.go b/builtin/providers/aws/resource_aws_route53_zone_test.go index 0969abeb3..45475a1a3 100644 --- a/builtin/providers/aws/resource_aws_route53_zone_test.go +++ b/builtin/providers/aws/resource_aws_route53_zone_test.go @@ -26,12 +26,12 @@ func TestAccRoute53Zone(t *testing.T) { func testAccCheckRoute53ZoneDestroy(s *terraform.State) error { conn := testAccProvider.route53 - for _, rs := range s.Resources { + for _, rs := range s.RootModule().Resources { if rs.Type != "aws_route53_zone" { continue } - _, err := conn.GetHostedZone(rs.ID) + _, err := conn.GetHostedZone(rs.Primary.ID) if err == nil { return fmt.Errorf("Hosted zone still exists") } @@ -41,17 +41,17 @@ func testAccCheckRoute53ZoneDestroy(s *terraform.State) error { func testAccCheckRoute53ZoneExists(n string) resource.TestCheckFunc { return func(s *terraform.State) error { - rs, ok := s.Resources[n] + rs, ok := s.RootModule().Resources[n] if !ok { return fmt.Errorf("Not found: %s", n) } - if rs.ID == "" { + if rs.Primary.ID == "" { return fmt.Errorf("No hosted zone ID is set") } conn := testAccProvider.route53 - _, err := conn.GetHostedZone(rs.ID) + _, err := conn.GetHostedZone(rs.Primary.ID) if err != nil { return fmt.Errorf("Hosted zone err: %v", err) } diff --git a/builtin/providers/aws/resource_aws_route_table.go b/builtin/providers/aws/resource_aws_route_table.go index 7ba631903..46249a347 100644 --- a/builtin/providers/aws/resource_aws_route_table.go +++ b/builtin/providers/aws/resource_aws_route_table.go @@ -14,9 +14,9 @@ import ( ) func resource_aws_route_table_create( - s *terraform.ResourceState, + s *terraform.InstanceState, d *terraform.ResourceDiff, - meta interface{}) (*terraform.ResourceState, error) { + meta interface{}) (*terraform.InstanceState, error) { p := meta.(*ResourceProvider) ec2conn := p.ec2conn @@ -56,9 +56,9 @@ func resource_aws_route_table_create( } func resource_aws_route_table_update( - s *terraform.ResourceState, + s *terraform.InstanceState, d *terraform.ResourceDiff, - meta interface{}) (*terraform.ResourceState, error) { + meta interface{}) (*terraform.InstanceState, error) { p := meta.(*ResourceProvider) ec2conn := p.ec2conn @@ -133,7 +133,7 @@ func resource_aws_route_table_update( } func resource_aws_route_table_destroy( - s *terraform.ResourceState, + s *terraform.InstanceState, meta interface{}) error { p := meta.(*ResourceProvider) ec2conn := p.ec2conn @@ -188,8 +188,8 @@ func resource_aws_route_table_destroy( } func resource_aws_route_table_refresh( - s *terraform.ResourceState, - meta interface{}) (*terraform.ResourceState, error) { + s *terraform.InstanceState, + meta interface{}) (*terraform.InstanceState, error) { p := meta.(*ResourceProvider) ec2conn := p.ec2conn @@ -206,7 +206,7 @@ func resource_aws_route_table_refresh( } func resource_aws_route_table_diff( - s *terraform.ResourceState, + s *terraform.InstanceState, c *terraform.ResourceConfig, meta interface{}) (*terraform.ResourceDiff, error) { b := &diff.ResourceBuilder{ @@ -220,15 +220,10 @@ func resource_aws_route_table_diff( } func resource_aws_route_table_update_state( - s *terraform.ResourceState, - rt *ec2.RouteTable) (*terraform.ResourceState, error) { + s *terraform.InstanceState, + rt *ec2.RouteTable) (*terraform.InstanceState, error) { s.Attributes["vpc_id"] = rt.VpcId - // We belong to a VPC - s.Dependencies = []terraform.ResourceDependency{ - terraform.ResourceDependency{ID: rt.VpcId}, - } - return s, nil } diff --git a/builtin/providers/aws/resource_aws_route_table_association.go b/builtin/providers/aws/resource_aws_route_table_association.go index 828508262..3d1b53c6d 100644 --- a/builtin/providers/aws/resource_aws_route_table_association.go +++ b/builtin/providers/aws/resource_aws_route_table_association.go @@ -10,9 +10,9 @@ import ( ) func resource_aws_route_table_association_create( - s *terraform.ResourceState, + s *terraform.InstanceState, d *terraform.ResourceDiff, - meta interface{}) (*terraform.ResourceState, error) { + meta interface{}) (*terraform.InstanceState, error) { p := meta.(*ResourceProvider) ec2conn := p.ec2conn rs := s.MergeDiff(d) @@ -32,17 +32,13 @@ func resource_aws_route_table_association_create( rs.ID = resp.AssociationId log.Printf("[INFO] Association ID: %s", rs.ID) - rs.Dependencies = []terraform.ResourceDependency{ - terraform.ResourceDependency{ID: rs.Attributes["route_table_id"]}, - } - return rs, nil } func resource_aws_route_table_association_update( - s *terraform.ResourceState, + s *terraform.InstanceState, d *terraform.ResourceDiff, - meta interface{}) (*terraform.ResourceState, error) { + meta interface{}) (*terraform.InstanceState, error) { p := meta.(*ResourceProvider) ec2conn := p.ec2conn @@ -68,15 +64,11 @@ func resource_aws_route_table_association_update( rs.ID = resp.AssociationId log.Printf("[INFO] Association ID: %s", rs.ID) - rs.Dependencies = []terraform.ResourceDependency{ - terraform.ResourceDependency{ID: rs.Attributes["route_table_id"]}, - } - return rs, nil } func resource_aws_route_table_association_destroy( - s *terraform.ResourceState, + s *terraform.InstanceState, meta interface{}) error { p := meta.(*ResourceProvider) ec2conn := p.ec2conn @@ -95,8 +87,8 @@ func resource_aws_route_table_association_destroy( } func resource_aws_route_table_association_refresh( - s *terraform.ResourceState, - meta interface{}) (*terraform.ResourceState, error) { + s *terraform.InstanceState, + meta interface{}) (*terraform.InstanceState, error) { p := meta.(*ResourceProvider) ec2conn := p.ec2conn @@ -128,7 +120,7 @@ func resource_aws_route_table_association_refresh( } func resource_aws_route_table_association_diff( - s *terraform.ResourceState, + s *terraform.InstanceState, c *terraform.ResourceConfig, meta interface{}) (*terraform.ResourceDiff, error) { b := &diff.ResourceBuilder{ diff --git a/builtin/providers/aws/resource_aws_route_table_association_test.go b/builtin/providers/aws/resource_aws_route_table_association_test.go index 54dc75637..bc670cdf5 100644 --- a/builtin/providers/aws/resource_aws_route_table_association_test.go +++ b/builtin/providers/aws/resource_aws_route_table_association_test.go @@ -39,14 +39,14 @@ func TestAccAWSRouteTableAssociation(t *testing.T) { func testAccCheckRouteTableAssociationDestroy(s *terraform.State) error { conn := testAccProvider.ec2conn - for _, rs := range s.Resources { + for _, rs := range s.RootModule().Resources { if rs.Type != "aws_route_table_association" { continue } // Try to find the resource resp, err := conn.DescribeRouteTables( - []string{rs.Attributes["route_table_Id"]}, ec2.NewFilter()) + []string{rs.Primary.Attributes["route_table_Id"]}, ec2.NewFilter()) if err != nil { // Verify the error is what we want ec2err, ok := err.(*ec2.Error) @@ -72,18 +72,18 @@ func testAccCheckRouteTableAssociationDestroy(s *terraform.State) error { func testAccCheckRouteTableAssociationExists(n string, v *ec2.RouteTable) resource.TestCheckFunc { return func(s *terraform.State) error { - rs, ok := s.Resources[n] + rs, ok := s.RootModule().Resources[n] if !ok { return fmt.Errorf("Not found: %s", n) } - if rs.ID == "" { + if rs.Primary.ID == "" { return fmt.Errorf("No ID is set") } conn := testAccProvider.ec2conn resp, err := conn.DescribeRouteTables( - []string{rs.Attributes["route_table_id"]}, ec2.NewFilter()) + []string{rs.Primary.Attributes["route_table_id"]}, ec2.NewFilter()) if err != nil { return err } diff --git a/builtin/providers/aws/resource_aws_route_table_test.go b/builtin/providers/aws/resource_aws_route_table_test.go index 6175313da..2fbe2433f 100644 --- a/builtin/providers/aws/resource_aws_route_table_test.go +++ b/builtin/providers/aws/resource_aws_route_table_test.go @@ -124,14 +124,14 @@ func TestAccAWSRouteTable_instance(t *testing.T) { func testAccCheckRouteTableDestroy(s *terraform.State) error { conn := testAccProvider.ec2conn - for _, rs := range s.Resources { + for _, rs := range s.RootModule().Resources { if rs.Type != "aws_route_table" { continue } // Try to find the resource resp, err := conn.DescribeRouteTables( - []string{rs.ID}, ec2.NewFilter()) + []string{rs.Primary.ID}, ec2.NewFilter()) if err == nil { if len(resp.RouteTables) > 0 { return fmt.Errorf("still exist.") @@ -155,18 +155,18 @@ func testAccCheckRouteTableDestroy(s *terraform.State) error { func testAccCheckRouteTableExists(n string, v *ec2.RouteTable) resource.TestCheckFunc { return func(s *terraform.State) error { - rs, ok := s.Resources[n] + rs, ok := s.RootModule().Resources[n] if !ok { return fmt.Errorf("Not found: %s", n) } - if rs.ID == "" { + if rs.Primary.ID == "" { return fmt.Errorf("No ID is set") } conn := testAccProvider.ec2conn resp, err := conn.DescribeRouteTables( - []string{rs.ID}, ec2.NewFilter()) + []string{rs.Primary.ID}, ec2.NewFilter()) if err != nil { return err } diff --git a/builtin/providers/aws/resource_aws_s3_bucket.go b/builtin/providers/aws/resource_aws_s3_bucket.go index 3dc3f7a2f..2d9d184a8 100644 --- a/builtin/providers/aws/resource_aws_s3_bucket.go +++ b/builtin/providers/aws/resource_aws_s3_bucket.go @@ -22,9 +22,9 @@ func resource_aws_s3_bucket_validation() *config.Validator { } func resource_aws_s3_bucket_create( - s *terraform.ResourceState, + s *terraform.InstanceState, d *terraform.ResourceDiff, - meta interface{}) (*terraform.ResourceState, error) { + meta interface{}) (*terraform.InstanceState, error) { p := meta.(*ResourceProvider) s3conn := p.s3conn @@ -52,7 +52,7 @@ func resource_aws_s3_bucket_create( } func resource_aws_s3_bucket_destroy( - s *terraform.ResourceState, + s *terraform.InstanceState, meta interface{}) error { p := meta.(*ResourceProvider) s3conn := p.s3conn @@ -65,8 +65,8 @@ func resource_aws_s3_bucket_destroy( } func resource_aws_s3_bucket_refresh( - s *terraform.ResourceState, - meta interface{}) (*terraform.ResourceState, error) { + s *terraform.InstanceState, + meta interface{}) (*terraform.InstanceState, error) { p := meta.(*ResourceProvider) s3conn := p.s3conn @@ -80,7 +80,7 @@ func resource_aws_s3_bucket_refresh( } func resource_aws_s3_bucket_diff( - s *terraform.ResourceState, + s *terraform.InstanceState, c *terraform.ResourceConfig, meta interface{}) (*terraform.ResourceDiff, error) { diff --git a/builtin/providers/aws/resource_aws_s3_bucket_test.go b/builtin/providers/aws/resource_aws_s3_bucket_test.go index 99b65ceae..09eed24aa 100644 --- a/builtin/providers/aws/resource_aws_s3_bucket_test.go +++ b/builtin/providers/aws/resource_aws_s3_bucket_test.go @@ -27,12 +27,12 @@ func TestAccAWSS3Bucket(t *testing.T) { func testAccCheckAWSS3BucketDestroy(s *terraform.State) error { conn := testAccProvider.s3conn - for _, rs := range s.Resources { + for _, rs := range s.RootModule().Resources { if rs.Type != "aws_s3_bucket" { continue } - bucket := conn.Bucket(rs.ID) + bucket := conn.Bucket(rs.Primary.ID) resp, err := bucket.Head("/") if err == nil { return fmt.Errorf("S3Bucket still exists") @@ -44,17 +44,17 @@ func testAccCheckAWSS3BucketDestroy(s *terraform.State) error { func testAccCheckAWSS3BucketExists(n string) resource.TestCheckFunc { return func(s *terraform.State) error { - rs, ok := s.Resources[n] + rs, ok := s.RootModule().Resources[n] if !ok { return fmt.Errorf("Not found: %s", n) } - if rs.ID == "" { + if rs.Primary.ID == "" { return fmt.Errorf("No S3 Bucket ID is set") } conn := testAccProvider.s3conn - bucket := conn.Bucket(rs.ID) + bucket := conn.Bucket(rs.Primary.ID) resp, err := bucket.Head("/") if err != nil { return fmt.Errorf("S3Bucket error: %v", err) diff --git a/builtin/providers/aws/resource_aws_security_group.go b/builtin/providers/aws/resource_aws_security_group.go index efc1e68ee..9e787d80f 100644 --- a/builtin/providers/aws/resource_aws_security_group.go +++ b/builtin/providers/aws/resource_aws_security_group.go @@ -10,7 +10,6 @@ import ( "github.com/hashicorp/terraform/helper/hashcode" "github.com/hashicorp/terraform/helper/resource" "github.com/hashicorp/terraform/helper/schema" - "github.com/hashicorp/terraform/terraform" "github.com/mitchellh/goamz/ec2" ) @@ -271,8 +270,6 @@ func resourceAwsSecurityGroupRead(d *schema.ResourceData, meta interface{}) erro sg := sgRaw.(*ec2.SecurityGroupInfo) - var deps []terraform.ResourceDependency - // Gather our ingress rules ingressRules := make([]map[string]interface{}, len(sg.IPPerms)) for i, perm := range sg.IPPerms { @@ -286,31 +283,17 @@ func resourceAwsSecurityGroupRead(d *schema.ResourceData, meta interface{}) erro } if len(perm.SourceGroups) > 0 { - // We depend on other security groups - for _, v := range perm.SourceGroups { - deps = append(deps, - terraform.ResourceDependency{ID: v.Id}, - ) - } - n["security_groups"] = flattenSecurityGroups(perm.SourceGroups) } ingressRules[i] = n } - if v := d.Get("vpc_id"); v != nil && v.(string) != "" { - deps = append(deps, - terraform.ResourceDependency{ID: v.(string)}, - ) - } - d.Set("description", sg.Description) d.Set("name", sg.Name) d.Set("vpc_id", sg.VpcId) d.Set("owner_id", sg.OwnerId) d.Set("ingress", ingressRules) - d.SetDependencies(deps) return nil } diff --git a/builtin/providers/aws/resource_aws_security_group_test.go b/builtin/providers/aws/resource_aws_security_group_test.go index e65346180..abd66593a 100644 --- a/builtin/providers/aws/resource_aws_security_group_test.go +++ b/builtin/providers/aws/resource_aws_security_group_test.go @@ -131,22 +131,22 @@ func TestAccAWSSecurityGroup_Change(t *testing.T) { func testAccCheckAWSSecurityGroupDestroy(s *terraform.State) error { conn := testAccProvider.ec2conn - for _, rs := range s.Resources { + for _, rs := range s.RootModule().Resources { if rs.Type != "aws_security_group" { continue } sgs := []ec2.SecurityGroup{ ec2.SecurityGroup{ - Id: rs.ID, + Id: rs.Primary.ID, }, } // Retrieve our group resp, err := conn.SecurityGroups(sgs, nil) if err == nil { - if len(resp.Groups) > 0 && resp.Groups[0].Id == rs.ID { - return fmt.Errorf("Security Group (%s) still exists.", rs.ID) + if len(resp.Groups) > 0 && resp.Groups[0].Id == rs.Primary.ID { + return fmt.Errorf("Security Group (%s) still exists.", rs.Primary.ID) } return nil @@ -167,19 +167,19 @@ func testAccCheckAWSSecurityGroupDestroy(s *terraform.State) error { func testAccCheckAWSSecurityGroupExists(n string, group *ec2.SecurityGroupInfo) resource.TestCheckFunc { return func(s *terraform.State) error { - rs, ok := s.Resources[n] + rs, ok := s.RootModule().Resources[n] if !ok { return fmt.Errorf("Not found: %s", n) } - if rs.ID == "" { + if rs.Primary.ID == "" { return fmt.Errorf("No Security Group is set") } conn := testAccProvider.ec2conn sgs := []ec2.SecurityGroup{ ec2.SecurityGroup{ - Id: rs.ID, + Id: rs.Primary.ID, }, } resp, err := conn.SecurityGroups(sgs, nil) @@ -187,7 +187,7 @@ func testAccCheckAWSSecurityGroupExists(n string, group *ec2.SecurityGroupInfo) return err } - if len(resp.Groups) > 0 && resp.Groups[0].Id == rs.ID { + if len(resp.Groups) > 0 && resp.Groups[0].Id == rs.Primary.ID { *group = resp.Groups[0] diff --git a/builtin/providers/aws/resource_aws_subnet.go b/builtin/providers/aws/resource_aws_subnet.go index b31158cdf..1935108ff 100644 --- a/builtin/providers/aws/resource_aws_subnet.go +++ b/builtin/providers/aws/resource_aws_subnet.go @@ -12,9 +12,9 @@ import ( ) func resource_aws_subnet_create( - s *terraform.ResourceState, + s *terraform.InstanceState, d *terraform.ResourceDiff, - meta interface{}) (*terraform.ResourceState, error) { + meta interface{}) (*terraform.InstanceState, error) { p := meta.(*ResourceProvider) ec2conn := p.ec2conn @@ -60,16 +60,16 @@ func resource_aws_subnet_create( } func resource_aws_subnet_update( - s *terraform.ResourceState, + s *terraform.InstanceState, d *terraform.ResourceDiff, - meta interface{}) (*terraform.ResourceState, error) { + meta interface{}) (*terraform.InstanceState, error) { // This should never be called because we have no update-able // attributes panic("Update for subnet is not supported") } func resource_aws_subnet_destroy( - s *terraform.ResourceState, + s *terraform.InstanceState, meta interface{}) error { p := meta.(*ResourceProvider) ec2conn := p.ec2conn @@ -102,8 +102,8 @@ func resource_aws_subnet_destroy( } func resource_aws_subnet_refresh( - s *terraform.ResourceState, - meta interface{}) (*terraform.ResourceState, error) { + s *terraform.InstanceState, + meta interface{}) (*terraform.InstanceState, error) { p := meta.(*ResourceProvider) ec2conn := p.ec2conn @@ -120,7 +120,7 @@ func resource_aws_subnet_refresh( } func resource_aws_subnet_diff( - s *terraform.ResourceState, + s *terraform.InstanceState, c *terraform.ResourceConfig, meta interface{}) (*terraform.ResourceDiff, error) { b := &diff.ResourceBuilder{ @@ -139,17 +139,12 @@ func resource_aws_subnet_diff( } func resource_aws_subnet_update_state( - s *terraform.ResourceState, - subnet *ec2.Subnet) (*terraform.ResourceState, error) { + s *terraform.InstanceState, + subnet *ec2.Subnet) (*terraform.InstanceState, error) { s.Attributes["availability_zone"] = subnet.AvailabilityZone s.Attributes["cidr_block"] = subnet.CidrBlock s.Attributes["vpc_id"] = subnet.VpcId - // We belong to a VPC - s.Dependencies = []terraform.ResourceDependency{ - terraform.ResourceDependency{ID: subnet.VpcId}, - } - return s, nil } diff --git a/builtin/providers/aws/resource_aws_subnet_test.go b/builtin/providers/aws/resource_aws_subnet_test.go index 5016149ad..99a97a5ae 100644 --- a/builtin/providers/aws/resource_aws_subnet_test.go +++ b/builtin/providers/aws/resource_aws_subnet_test.go @@ -40,14 +40,14 @@ func TestAccAWSSubnet(t *testing.T) { func testAccCheckSubnetDestroy(s *terraform.State) error { conn := testAccProvider.ec2conn - for _, rs := range s.Resources { + for _, rs := range s.RootModule().Resources { if rs.Type != "aws_subnet" { continue } // Try to find the resource resp, err := conn.DescribeSubnets( - []string{rs.ID}, ec2.NewFilter()) + []string{rs.Primary.ID}, ec2.NewFilter()) if err == nil { if len(resp.Subnets) > 0 { return fmt.Errorf("still exist.") @@ -71,18 +71,18 @@ func testAccCheckSubnetDestroy(s *terraform.State) error { func testAccCheckSubnetExists(n string, v *ec2.Subnet) resource.TestCheckFunc { return func(s *terraform.State) error { - rs, ok := s.Resources[n] + rs, ok := s.RootModule().Resources[n] if !ok { return fmt.Errorf("Not found: %s", n) } - if rs.ID == "" { + if rs.Primary.ID == "" { return fmt.Errorf("No ID is set") } conn := testAccProvider.ec2conn resp, err := conn.DescribeSubnets( - []string{rs.ID}, ec2.NewFilter()) + []string{rs.Primary.ID}, ec2.NewFilter()) if err != nil { return err } diff --git a/builtin/providers/aws/resource_aws_vpc.go b/builtin/providers/aws/resource_aws_vpc.go index acb2b3002..5e449f44c 100644 --- a/builtin/providers/aws/resource_aws_vpc.go +++ b/builtin/providers/aws/resource_aws_vpc.go @@ -13,9 +13,9 @@ import ( ) func resource_aws_vpc_create( - s *terraform.ResourceState, + s *terraform.InstanceState, d *terraform.ResourceDiff, - meta interface{}) (*terraform.ResourceState, error) { + meta interface{}) (*terraform.InstanceState, error) { p := meta.(*ResourceProvider) ec2conn := p.ec2conn @@ -89,9 +89,9 @@ func resource_aws_vpc_create( } func resource_aws_vpc_update( - s *terraform.ResourceState, + s *terraform.InstanceState, d *terraform.ResourceDiff, - meta interface{}) (*terraform.ResourceState, error) { + meta interface{}) (*terraform.InstanceState, error) { p := meta.(*ResourceProvider) ec2conn := p.ec2conn rs := s.MergeDiff(d) @@ -132,7 +132,7 @@ func resource_aws_vpc_update( } func resource_aws_vpc_destroy( - s *terraform.ResourceState, + s *terraform.InstanceState, meta interface{}) error { p := meta.(*ResourceProvider) ec2conn := p.ec2conn @@ -151,8 +151,8 @@ func resource_aws_vpc_destroy( } func resource_aws_vpc_refresh( - s *terraform.ResourceState, - meta interface{}) (*terraform.ResourceState, error) { + s *terraform.InstanceState, + meta interface{}) (*terraform.InstanceState, error) { p := meta.(*ResourceProvider) ec2conn := p.ec2conn @@ -180,7 +180,7 @@ func resource_aws_vpc_refresh( } func resource_aws_vpc_diff( - s *terraform.ResourceState, + s *terraform.InstanceState, c *terraform.ResourceConfig, meta interface{}) (*terraform.ResourceDiff, error) { b := &diff.ResourceBuilder{ @@ -200,8 +200,8 @@ func resource_aws_vpc_diff( } func resource_aws_vpc_update_state( - s *terraform.ResourceState, - vpc *ec2.VPC) (*terraform.ResourceState, error) { + s *terraform.InstanceState, + vpc *ec2.VPC) (*terraform.InstanceState, error) { s.Attributes["cidr_block"] = vpc.CidrBlock return s, nil } diff --git a/builtin/providers/aws/resource_aws_vpc_test.go b/builtin/providers/aws/resource_aws_vpc_test.go index 853cbe916..44e91ca44 100644 --- a/builtin/providers/aws/resource_aws_vpc_test.go +++ b/builtin/providers/aws/resource_aws_vpc_test.go @@ -62,13 +62,13 @@ func TestAccVpcUpdate(t *testing.T) { func testAccCheckVpcDestroy(s *terraform.State) error { conn := testAccProvider.ec2conn - for _, rs := range s.Resources { + for _, rs := range s.RootModule().Resources { if rs.Type != "aws_vpc" { continue } // Try to find the VPC - resp, err := conn.DescribeVpcs([]string{rs.ID}, ec2.NewFilter()) + resp, err := conn.DescribeVpcs([]string{rs.Primary.ID}, ec2.NewFilter()) if err == nil { if len(resp.VPCs) > 0 { return fmt.Errorf("VPCs still exist.") @@ -102,17 +102,17 @@ func testAccCheckVpcCidr(vpc *ec2.VPC, expected string) resource.TestCheckFunc { func testAccCheckVpcExists(n string, vpc *ec2.VPC) resource.TestCheckFunc { return func(s *terraform.State) error { - rs, ok := s.Resources[n] + rs, ok := s.RootModule().Resources[n] if !ok { return fmt.Errorf("Not found: %s", n) } - if rs.ID == "" { + if rs.Primary.ID == "" { return fmt.Errorf("No VPC ID is set") } conn := testAccProvider.ec2conn - resp, err := conn.DescribeVpcs([]string{rs.ID}, ec2.NewFilter()) + resp, err := conn.DescribeVpcs([]string{rs.Primary.ID}, ec2.NewFilter()) if err != nil { return err } diff --git a/builtin/providers/aws/resource_provider.go b/builtin/providers/aws/resource_provider.go index 5a71b4acc..ba1d5ab1d 100644 --- a/builtin/providers/aws/resource_provider.go +++ b/builtin/providers/aws/resource_provider.go @@ -91,32 +91,35 @@ func (p *ResourceProvider) Configure(c *terraform.ResourceConfig) error { } func (p *ResourceProvider) Apply( - s *terraform.ResourceState, - d *terraform.ResourceDiff) (*terraform.ResourceState, error) { - if _, ok := p.p.ResourcesMap[s.Type]; ok { - return p.p.Apply(s, d) + info *terraform.InstanceInfo, + s *terraform.InstanceState, + d *terraform.ResourceDiff) (*terraform.InstanceState, error) { + if _, ok := p.p.ResourcesMap[info.Type]; ok { + return p.p.Apply(info, s, d) } - return resourceMap.Apply(s, d, p) + return resourceMap.Apply(info, s, d, p) } func (p *ResourceProvider) Diff( - s *terraform.ResourceState, + info *terraform.InstanceInfo, + s *terraform.InstanceState, c *terraform.ResourceConfig) (*terraform.ResourceDiff, error) { - if _, ok := p.p.ResourcesMap[s.Type]; ok { - return p.p.Diff(s, c) + if _, ok := p.p.ResourcesMap[info.Type]; ok { + return p.p.Diff(info, s, c) } - return resourceMap.Diff(s, c, p) + return resourceMap.Diff(info, s, c, p) } func (p *ResourceProvider) Refresh( - s *terraform.ResourceState) (*terraform.ResourceState, error) { - if _, ok := p.p.ResourcesMap[s.Type]; ok { - return p.p.Refresh(s) + info *terraform.InstanceInfo, + s *terraform.InstanceState) (*terraform.InstanceState, error) { + if _, ok := p.p.ResourcesMap[info.Type]; ok { + return p.p.Refresh(info, s) } - return resourceMap.Refresh(s, p) + return resourceMap.Refresh(info, s, p) } func (p *ResourceProvider) Resources() []terraform.ResourceType {