Merge branch 'f-aws-import'
This commit is contained in:
commit
55583baa7e
|
@ -0,0 +1,33 @@
|
||||||
|
package aws
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/hashicorp/terraform/helper/acctest"
|
||||||
|
"github.com/hashicorp/terraform/helper/resource"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestAccAWSAutoScalingGroup_importBasic(t *testing.T) {
|
||||||
|
resourceName := "aws_autoscaling_group.bar"
|
||||||
|
randName := fmt.Sprintf("terraform-test-%s", acctest.RandString(10))
|
||||||
|
|
||||||
|
resource.Test(t, resource.TestCase{
|
||||||
|
PreCheck: func() { testAccPreCheck(t) },
|
||||||
|
Providers: testAccProviders,
|
||||||
|
CheckDestroy: testAccCheckAWSAutoScalingGroupDestroy,
|
||||||
|
Steps: []resource.TestStep{
|
||||||
|
resource.TestStep{
|
||||||
|
Config: testAccAWSAutoScalingGroupConfig(randName),
|
||||||
|
},
|
||||||
|
|
||||||
|
resource.TestStep{
|
||||||
|
ResourceName: resourceName,
|
||||||
|
ImportState: true,
|
||||||
|
ImportStateVerify: true,
|
||||||
|
ImportStateVerifyIgnore: []string{
|
||||||
|
"force_delete", "metrics_granularity", "wait_for_capacity_timeout"},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
|
@ -0,0 +1,28 @@
|
||||||
|
package aws
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/hashicorp/terraform/helper/resource"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestAccAWSCustomerGateway_importBasic(t *testing.T) {
|
||||||
|
resourceName := "aws_customer_gateway.foo"
|
||||||
|
|
||||||
|
resource.Test(t, resource.TestCase{
|
||||||
|
PreCheck: func() { testAccPreCheck(t) },
|
||||||
|
Providers: testAccProviders,
|
||||||
|
CheckDestroy: testAccCheckCustomerGatewayDestroy,
|
||||||
|
Steps: []resource.TestStep{
|
||||||
|
resource.TestStep{
|
||||||
|
Config: testAccCustomerGatewayConfig,
|
||||||
|
},
|
||||||
|
|
||||||
|
resource.TestStep{
|
||||||
|
ResourceName: resourceName,
|
||||||
|
ImportState: true,
|
||||||
|
ImportStateVerify: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
|
@ -0,0 +1,27 @@
|
||||||
|
package aws
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/hashicorp/terraform/helper/resource"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestAccAWSEBSVolume_importBasic(t *testing.T) {
|
||||||
|
resourceName := "aws_ebs_volume.test"
|
||||||
|
|
||||||
|
resource.Test(t, resource.TestCase{
|
||||||
|
PreCheck: func() { testAccPreCheck(t) },
|
||||||
|
Providers: testAccProviders,
|
||||||
|
Steps: []resource.TestStep{
|
||||||
|
resource.TestStep{
|
||||||
|
Config: testAccAwsEbsVolumeConfig,
|
||||||
|
},
|
||||||
|
|
||||||
|
resource.TestStep{
|
||||||
|
ResourceName: resourceName,
|
||||||
|
ImportState: true,
|
||||||
|
ImportStateVerify: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
|
@ -0,0 +1,28 @@
|
||||||
|
package aws
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/hashicorp/terraform/helper/resource"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestAccAWSELB_importBasic(t *testing.T) {
|
||||||
|
resourceName := "aws_subnet.bar"
|
||||||
|
|
||||||
|
resource.Test(t, resource.TestCase{
|
||||||
|
PreCheck: func() { testAccPreCheck(t) },
|
||||||
|
Providers: testAccProviders,
|
||||||
|
CheckDestroy: testAccCheckAWSELBDestroy,
|
||||||
|
Steps: []resource.TestStep{
|
||||||
|
resource.TestStep{
|
||||||
|
Config: testAccAWSELBConfig,
|
||||||
|
},
|
||||||
|
|
||||||
|
resource.TestStep{
|
||||||
|
ResourceName: resourceName,
|
||||||
|
ImportState: true,
|
||||||
|
ImportStateVerify: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
|
@ -0,0 +1,28 @@
|
||||||
|
package aws
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/hashicorp/terraform/helper/resource"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestAccAWSFlowLog_importBasic(t *testing.T) {
|
||||||
|
resourceName := "aws_flow_log.test_flow_log"
|
||||||
|
|
||||||
|
resource.Test(t, resource.TestCase{
|
||||||
|
PreCheck: func() { testAccPreCheck(t) },
|
||||||
|
Providers: testAccProviders,
|
||||||
|
CheckDestroy: testAccCheckFlowLogDestroy,
|
||||||
|
Steps: []resource.TestStep{
|
||||||
|
resource.TestStep{
|
||||||
|
Config: testAccFlowLogConfig_basic,
|
||||||
|
},
|
||||||
|
|
||||||
|
resource.TestStep{
|
||||||
|
ResourceName: resourceName,
|
||||||
|
ImportState: true,
|
||||||
|
ImportStateVerify: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
|
@ -0,0 +1,29 @@
|
||||||
|
package aws
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/hashicorp/terraform/helper/resource"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestAccAWSInstance_importBasic(t *testing.T) {
|
||||||
|
resourceName := "aws_instance.foo"
|
||||||
|
|
||||||
|
resource.Test(t, resource.TestCase{
|
||||||
|
PreCheck: func() { testAccPreCheck(t) },
|
||||||
|
Providers: testAccProviders,
|
||||||
|
CheckDestroy: testAccCheckInstanceDestroy,
|
||||||
|
Steps: []resource.TestStep{
|
||||||
|
resource.TestStep{
|
||||||
|
Config: testAccInstanceConfigVPC,
|
||||||
|
},
|
||||||
|
|
||||||
|
resource.TestStep{
|
||||||
|
ResourceName: resourceName,
|
||||||
|
ImportState: true,
|
||||||
|
ImportStateVerify: true,
|
||||||
|
ImportStateVerifyIgnore: []string{"associate_public_ip_address", "user_data"},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
|
@ -0,0 +1,28 @@
|
||||||
|
package aws
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/hashicorp/terraform/helper/resource"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestAccAWSInternetGateway_importBasic(t *testing.T) {
|
||||||
|
resourceName := "aws_internet_gateway.foo"
|
||||||
|
|
||||||
|
resource.Test(t, resource.TestCase{
|
||||||
|
PreCheck: func() { testAccPreCheck(t) },
|
||||||
|
Providers: testAccProviders,
|
||||||
|
CheckDestroy: testAccCheckInternetGatewayDestroy,
|
||||||
|
Steps: []resource.TestStep{
|
||||||
|
resource.TestStep{
|
||||||
|
Config: testAccInternetGatewayConfig,
|
||||||
|
},
|
||||||
|
|
||||||
|
resource.TestStep{
|
||||||
|
ResourceName: resourceName,
|
||||||
|
ImportState: true,
|
||||||
|
ImportStateVerify: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
|
@ -0,0 +1,29 @@
|
||||||
|
package aws
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/hashicorp/terraform/helper/resource"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestAccAWSKeyPair_importBasic(t *testing.T) {
|
||||||
|
resourceName := "aws_key_pair.a_key_pair"
|
||||||
|
|
||||||
|
resource.Test(t, resource.TestCase{
|
||||||
|
PreCheck: func() { testAccPreCheck(t) },
|
||||||
|
Providers: testAccProviders,
|
||||||
|
CheckDestroy: testAccCheckAWSKeyPairDestroy,
|
||||||
|
Steps: []resource.TestStep{
|
||||||
|
resource.TestStep{
|
||||||
|
Config: testAccAWSKeyPairConfig,
|
||||||
|
},
|
||||||
|
|
||||||
|
resource.TestStep{
|
||||||
|
ResourceName: resourceName,
|
||||||
|
ImportState: true,
|
||||||
|
ImportStateVerify: true,
|
||||||
|
ImportStateVerifyIgnore: []string{"public_key"},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
|
@ -0,0 +1,29 @@
|
||||||
|
package aws
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/hashicorp/terraform/helper/resource"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestAccAWSLaunchConfiguration_importBasic(t *testing.T) {
|
||||||
|
resourceName := "aws_launch_configuration.bar"
|
||||||
|
|
||||||
|
resource.Test(t, resource.TestCase{
|
||||||
|
PreCheck: func() { testAccPreCheck(t) },
|
||||||
|
Providers: testAccProviders,
|
||||||
|
CheckDestroy: testAccCheckAWSLaunchConfigurationDestroy,
|
||||||
|
Steps: []resource.TestStep{
|
||||||
|
resource.TestStep{
|
||||||
|
Config: testAccAWSLaunchConfigurationNoNameConfig,
|
||||||
|
},
|
||||||
|
|
||||||
|
resource.TestStep{
|
||||||
|
ResourceName: resourceName,
|
||||||
|
ImportState: true,
|
||||||
|
ImportStateVerify: true,
|
||||||
|
ImportStateVerifyIgnore: []string{"associate_public_ip_address", "user_data"},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
|
@ -0,0 +1,28 @@
|
||||||
|
package aws
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/hashicorp/terraform/helper/resource"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestAccAWSNatGateway_importBasic(t *testing.T) {
|
||||||
|
resourceName := "aws_nat_gateway.gateway"
|
||||||
|
|
||||||
|
resource.Test(t, resource.TestCase{
|
||||||
|
PreCheck: func() { testAccPreCheck(t) },
|
||||||
|
Providers: testAccProviders,
|
||||||
|
CheckDestroy: testAccCheckNatGatewayDestroy,
|
||||||
|
Steps: []resource.TestStep{
|
||||||
|
resource.TestStep{
|
||||||
|
Config: testAccNatGatewayConfig,
|
||||||
|
},
|
||||||
|
|
||||||
|
resource.TestStep{
|
||||||
|
ResourceName: resourceName,
|
||||||
|
ImportState: true,
|
||||||
|
ImportStateVerify: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
|
@ -0,0 +1,95 @@
|
||||||
|
package aws
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/aws/aws-sdk-go/aws"
|
||||||
|
"github.com/aws/aws-sdk-go/service/ec2"
|
||||||
|
"github.com/hashicorp/terraform/helper/schema"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Network ACLs import their rules and associations
|
||||||
|
func resourceAwsNetworkAclImportState(
|
||||||
|
d *schema.ResourceData,
|
||||||
|
meta interface{}) ([]*schema.ResourceData, error) {
|
||||||
|
conn := meta.(*AWSClient).ec2conn
|
||||||
|
|
||||||
|
// First query the resource itself
|
||||||
|
resp, err := conn.DescribeNetworkAcls(&ec2.DescribeNetworkAclsInput{
|
||||||
|
NetworkAclIds: []*string{aws.String(d.Id())},
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if resp == nil || len(resp.NetworkAcls) < 1 || resp.NetworkAcls[0] == nil {
|
||||||
|
return nil, fmt.Errorf("network ACL %s is not found", d.Id())
|
||||||
|
}
|
||||||
|
acl := resp.NetworkAcls[0]
|
||||||
|
|
||||||
|
// Start building our results
|
||||||
|
results := make([]*schema.ResourceData, 1,
|
||||||
|
2+len(acl.Associations)+len(acl.Entries))
|
||||||
|
results[0] = d
|
||||||
|
|
||||||
|
/*
|
||||||
|
{
|
||||||
|
// Construct the entries
|
||||||
|
subResource := resourceAwsNetworkAclRule()
|
||||||
|
for _, entry := range acl.Entries {
|
||||||
|
// Minimal data for route
|
||||||
|
d := subResource.Data(nil)
|
||||||
|
d.SetType("aws_network_acl_rule")
|
||||||
|
d.Set("network_acl_id", acl.NetworkAclId)
|
||||||
|
d.Set("rule_number", entry.RuleNumber)
|
||||||
|
d.Set("egress", entry.Egress)
|
||||||
|
d.Set("protocol", entry.Protocol)
|
||||||
|
d.SetId(networkAclIdRuleNumberEgressHash(
|
||||||
|
d.Get("network_acl_id").(string),
|
||||||
|
d.Get("rule_number").(int),
|
||||||
|
d.Get("egress").(bool),
|
||||||
|
d.Get("protocol").(string)))
|
||||||
|
results = append(results, d)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
// Construct the associations
|
||||||
|
subResource := resourceAwsRouteTableAssociation()
|
||||||
|
for _, assoc := range table.Associations {
|
||||||
|
if *assoc.Main {
|
||||||
|
// Ignore
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
// Minimal data for route
|
||||||
|
d := subResource.Data(nil)
|
||||||
|
d.SetType("aws_route_table_association")
|
||||||
|
d.Set("route_table_id", assoc.RouteTableId)
|
||||||
|
d.SetId(*assoc.RouteTableAssociationId)
|
||||||
|
results = append(results, d)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
// Construct the main associations. We could do this above but
|
||||||
|
// I keep this as a separate section since it is a separate resource.
|
||||||
|
subResource := resourceAwsMainRouteTableAssociation()
|
||||||
|
for _, assoc := range table.Associations {
|
||||||
|
if !*assoc.Main {
|
||||||
|
// Ignore
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
// Minimal data for route
|
||||||
|
d := subResource.Data(nil)
|
||||||
|
d.SetType("aws_main_route_table_association")
|
||||||
|
d.Set("route_table_id", id)
|
||||||
|
d.Set("vpc_id", table.VpcId)
|
||||||
|
d.SetId(*assoc.RouteTableAssociationId)
|
||||||
|
results = append(results, d)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
return results, nil
|
||||||
|
}
|
|
@ -0,0 +1,37 @@
|
||||||
|
package aws
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/hashicorp/terraform/helper/resource"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestAccAWSNetworkAcl_importBasic(t *testing.T) {
|
||||||
|
/*
|
||||||
|
checkFn := func(s []*terraform.InstanceState) error {
|
||||||
|
// Expect 2: acl, 2 rules
|
||||||
|
if len(s) != 3 {
|
||||||
|
return fmt.Errorf("bad states: %#v", s)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
resource.Test(t, resource.TestCase{
|
||||||
|
PreCheck: func() { testAccPreCheck(t) },
|
||||||
|
Providers: testAccProviders,
|
||||||
|
CheckDestroy: testAccCheckAWSNetworkAclDestroy,
|
||||||
|
Steps: []resource.TestStep{
|
||||||
|
resource.TestStep{
|
||||||
|
Config: testAccAWSNetworkAclEgressNIngressConfig,
|
||||||
|
},
|
||||||
|
|
||||||
|
resource.TestStep{
|
||||||
|
ResourceName: "aws_network_acl.bar",
|
||||||
|
ImportState: true,
|
||||||
|
ImportStateVerify: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
|
@ -0,0 +1,28 @@
|
||||||
|
package aws
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/hashicorp/terraform/helper/resource"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestAccAWSENI_importBasic(t *testing.T) {
|
||||||
|
resourceName := "aws_network_interface.bar"
|
||||||
|
|
||||||
|
resource.Test(t, resource.TestCase{
|
||||||
|
PreCheck: func() { testAccPreCheck(t) },
|
||||||
|
Providers: testAccProviders,
|
||||||
|
CheckDestroy: testAccCheckAWSENIDestroy,
|
||||||
|
Steps: []resource.TestStep{
|
||||||
|
resource.TestStep{
|
||||||
|
Config: testAccAWSENIConfig,
|
||||||
|
},
|
||||||
|
|
||||||
|
resource.TestStep{
|
||||||
|
ResourceName: resourceName,
|
||||||
|
ImportState: true,
|
||||||
|
ImportStateVerify: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
|
@ -0,0 +1,28 @@
|
||||||
|
package aws
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/hashicorp/terraform/helper/resource"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestAccAWSPlacementGroup_importBasic(t *testing.T) {
|
||||||
|
resourceName := "aws_placement_group.pg"
|
||||||
|
|
||||||
|
resource.Test(t, resource.TestCase{
|
||||||
|
PreCheck: func() { testAccPreCheck(t) },
|
||||||
|
Providers: testAccProviders,
|
||||||
|
CheckDestroy: testAccCheckAWSPlacementGroupDestroy,
|
||||||
|
Steps: []resource.TestStep{
|
||||||
|
resource.TestStep{
|
||||||
|
Config: testAccAWSPlacementGroupConfig,
|
||||||
|
},
|
||||||
|
|
||||||
|
resource.TestStep{
|
||||||
|
ResourceName: resourceName,
|
||||||
|
ImportState: true,
|
||||||
|
ImportStateVerify: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
|
@ -0,0 +1,28 @@
|
||||||
|
package aws
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/hashicorp/terraform/helper/resource"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestAccAWSRoute53DelegationSet_importBasic(t *testing.T) {
|
||||||
|
resourceName := "aws_route53_delegation_set.test"
|
||||||
|
|
||||||
|
resource.Test(t, resource.TestCase{
|
||||||
|
PreCheck: func() { testAccPreCheck(t) },
|
||||||
|
Providers: testAccProviders,
|
||||||
|
Steps: []resource.TestStep{
|
||||||
|
resource.TestStep{
|
||||||
|
Config: testAccRoute53DelegationSetConfig,
|
||||||
|
},
|
||||||
|
|
||||||
|
resource.TestStep{
|
||||||
|
ResourceName: resourceName,
|
||||||
|
ImportState: true,
|
||||||
|
ImportStateVerify: true,
|
||||||
|
ImportStateVerifyIgnore: []string{"reference_name"},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
|
@ -0,0 +1,28 @@
|
||||||
|
package aws
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/hashicorp/terraform/helper/resource"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestAccAWSRoute53HealthCheck_importBasic(t *testing.T) {
|
||||||
|
resourceName := "aws_route53_health_check.foo"
|
||||||
|
|
||||||
|
resource.Test(t, resource.TestCase{
|
||||||
|
PreCheck: func() { testAccPreCheck(t) },
|
||||||
|
Providers: testAccProviders,
|
||||||
|
CheckDestroy: testAccCheckRoute53HealthCheckDestroy,
|
||||||
|
Steps: []resource.TestStep{
|
||||||
|
resource.TestStep{
|
||||||
|
Config: testAccRoute53HealthCheckConfig,
|
||||||
|
},
|
||||||
|
|
||||||
|
resource.TestStep{
|
||||||
|
ResourceName: resourceName,
|
||||||
|
ImportState: true,
|
||||||
|
ImportStateVerify: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
|
@ -0,0 +1,28 @@
|
||||||
|
package aws
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/hashicorp/terraform/helper/resource"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestAccAWSRoute53Zone_importBasic(t *testing.T) {
|
||||||
|
resourceName := "aws_route53_zone.main"
|
||||||
|
|
||||||
|
resource.Test(t, resource.TestCase{
|
||||||
|
PreCheck: func() { testAccPreCheck(t) },
|
||||||
|
Providers: testAccProviders,
|
||||||
|
CheckDestroy: testAccCheckRoute53ZoneDestroy,
|
||||||
|
Steps: []resource.TestStep{
|
||||||
|
resource.TestStep{
|
||||||
|
Config: testAccRoute53ZoneConfig,
|
||||||
|
},
|
||||||
|
|
||||||
|
resource.TestStep{
|
||||||
|
ResourceName: resourceName,
|
||||||
|
ImportState: true,
|
||||||
|
ImportStateVerify: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
|
@ -0,0 +1,92 @@
|
||||||
|
package aws
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/aws/aws-sdk-go/service/ec2"
|
||||||
|
"github.com/hashicorp/terraform/helper/schema"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Route table import also imports all the rules
|
||||||
|
func resourceAwsRouteTableImportState(
|
||||||
|
d *schema.ResourceData,
|
||||||
|
meta interface{}) ([]*schema.ResourceData, error) {
|
||||||
|
conn := meta.(*AWSClient).ec2conn
|
||||||
|
|
||||||
|
// First query the resource itself
|
||||||
|
id := d.Id()
|
||||||
|
resp, err := conn.DescribeRouteTables(&ec2.DescribeRouteTablesInput{
|
||||||
|
RouteTableIds: []*string{&id},
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if len(resp.RouteTables) < 1 || resp.RouteTables[0] == nil {
|
||||||
|
return nil, fmt.Errorf("route table %s is not found", id)
|
||||||
|
}
|
||||||
|
table := resp.RouteTables[0]
|
||||||
|
|
||||||
|
// Start building our results
|
||||||
|
results := make([]*schema.ResourceData, 1,
|
||||||
|
2+len(table.Associations)+len(table.Routes))
|
||||||
|
results[0] = d
|
||||||
|
|
||||||
|
{
|
||||||
|
// Construct the routes
|
||||||
|
subResource := resourceAwsRoute()
|
||||||
|
for _, route := range table.Routes {
|
||||||
|
// Ignore the local/default route
|
||||||
|
if route.GatewayId != nil && *route.GatewayId == "local" {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
// Minimal data for route
|
||||||
|
d := subResource.Data(nil)
|
||||||
|
d.SetType("aws_route")
|
||||||
|
d.Set("route_table_id", id)
|
||||||
|
d.Set("destination_cidr_block", route.DestinationCidrBlock)
|
||||||
|
d.SetId(routeIDHash(d, route))
|
||||||
|
results = append(results, d)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
// Construct the associations
|
||||||
|
subResource := resourceAwsRouteTableAssociation()
|
||||||
|
for _, assoc := range table.Associations {
|
||||||
|
if *assoc.Main {
|
||||||
|
// Ignore
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
// Minimal data for route
|
||||||
|
d := subResource.Data(nil)
|
||||||
|
d.SetType("aws_route_table_association")
|
||||||
|
d.Set("route_table_id", assoc.RouteTableId)
|
||||||
|
d.SetId(*assoc.RouteTableAssociationId)
|
||||||
|
results = append(results, d)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
// Construct the main associations. We could do this above but
|
||||||
|
// I keep this as a separate section since it is a separate resource.
|
||||||
|
subResource := resourceAwsMainRouteTableAssociation()
|
||||||
|
for _, assoc := range table.Associations {
|
||||||
|
if !*assoc.Main {
|
||||||
|
// Ignore
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
// Minimal data for route
|
||||||
|
d := subResource.Data(nil)
|
||||||
|
d.SetType("aws_main_route_table_association")
|
||||||
|
d.Set("route_table_id", id)
|
||||||
|
d.Set("vpc_id", table.VpcId)
|
||||||
|
d.SetId(*assoc.RouteTableAssociationId)
|
||||||
|
results = append(results, d)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return results, nil
|
||||||
|
}
|
|
@ -0,0 +1,37 @@
|
||||||
|
package aws
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/hashicorp/terraform/helper/resource"
|
||||||
|
"github.com/hashicorp/terraform/terraform"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestAccAWSRouteTable_importBasic(t *testing.T) {
|
||||||
|
checkFn := func(s []*terraform.InstanceState) error {
|
||||||
|
// Expect 2: group, 1 rules
|
||||||
|
if len(s) != 2 {
|
||||||
|
return fmt.Errorf("bad states: %#v", s)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
resource.Test(t, resource.TestCase{
|
||||||
|
PreCheck: func() { testAccPreCheck(t) },
|
||||||
|
Providers: testAccProviders,
|
||||||
|
CheckDestroy: testAccCheckRouteTableDestroy,
|
||||||
|
Steps: []resource.TestStep{
|
||||||
|
resource.TestStep{
|
||||||
|
Config: testAccRouteTableConfig,
|
||||||
|
},
|
||||||
|
|
||||||
|
resource.TestStep{
|
||||||
|
ResourceName: "aws_route_table.foo",
|
||||||
|
ImportState: true,
|
||||||
|
ImportStateCheck: checkFn,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
|
@ -0,0 +1,28 @@
|
||||||
|
package aws
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/hashicorp/terraform/helper/resource"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestAccAWSSubnet_importBasic(t *testing.T) {
|
||||||
|
resourceName := "aws_subnet.foo"
|
||||||
|
|
||||||
|
resource.Test(t, resource.TestCase{
|
||||||
|
PreCheck: func() { testAccPreCheck(t) },
|
||||||
|
Providers: testAccProviders,
|
||||||
|
CheckDestroy: testAccCheckSubnetDestroy,
|
||||||
|
Steps: []resource.TestStep{
|
||||||
|
resource.TestStep{
|
||||||
|
Config: testAccSubnetConfig,
|
||||||
|
},
|
||||||
|
|
||||||
|
resource.TestStep{
|
||||||
|
ResourceName: resourceName,
|
||||||
|
ImportState: true,
|
||||||
|
ImportStateVerify: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
|
@ -0,0 +1,27 @@
|
||||||
|
package aws
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/hashicorp/terraform/helper/resource"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestAccAWSDHCPOptions_importBasic(t *testing.T) {
|
||||||
|
resourceName := "aws_vpc_dhcp_options.foo"
|
||||||
|
|
||||||
|
resource.Test(t, resource.TestCase{
|
||||||
|
PreCheck: func() { testAccPreCheck(t) },
|
||||||
|
Providers: testAccProviders,
|
||||||
|
Steps: []resource.TestStep{
|
||||||
|
resource.TestStep{
|
||||||
|
Config: testAccDHCPOptionsConfig,
|
||||||
|
},
|
||||||
|
|
||||||
|
resource.TestStep{
|
||||||
|
ResourceName: resourceName,
|
||||||
|
ImportState: true,
|
||||||
|
ImportStateVerify: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
|
@ -0,0 +1,28 @@
|
||||||
|
package aws
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/hashicorp/terraform/helper/resource"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestAccAWSVpc_importBasic(t *testing.T) {
|
||||||
|
resourceName := "aws_vpc.foo"
|
||||||
|
|
||||||
|
resource.Test(t, resource.TestCase{
|
||||||
|
PreCheck: func() { testAccPreCheck(t) },
|
||||||
|
Providers: testAccProviders,
|
||||||
|
CheckDestroy: testAccCheckVpcDestroy,
|
||||||
|
Steps: []resource.TestStep{
|
||||||
|
resource.TestStep{
|
||||||
|
Config: testAccVpcConfig,
|
||||||
|
},
|
||||||
|
|
||||||
|
resource.TestStep{
|
||||||
|
ResourceName: resourceName,
|
||||||
|
ImportState: true,
|
||||||
|
ImportStateVerify: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
|
@ -21,6 +21,9 @@ func resourceAwsAutoscalingGroup() *schema.Resource {
|
||||||
Read: resourceAwsAutoscalingGroupRead,
|
Read: resourceAwsAutoscalingGroupRead,
|
||||||
Update: resourceAwsAutoscalingGroupUpdate,
|
Update: resourceAwsAutoscalingGroupUpdate,
|
||||||
Delete: resourceAwsAutoscalingGroupDelete,
|
Delete: resourceAwsAutoscalingGroupDelete,
|
||||||
|
Importer: &schema.ResourceImporter{
|
||||||
|
State: schema.ImportStatePassthrough,
|
||||||
|
},
|
||||||
|
|
||||||
Schema: map[string]*schema.Schema{
|
Schema: map[string]*schema.Schema{
|
||||||
"name": &schema.Schema{
|
"name": &schema.Schema{
|
||||||
|
|
|
@ -20,6 +20,9 @@ func resourceAwsCustomerGateway() *schema.Resource {
|
||||||
Read: resourceAwsCustomerGatewayRead,
|
Read: resourceAwsCustomerGatewayRead,
|
||||||
Update: resourceAwsCustomerGatewayUpdate,
|
Update: resourceAwsCustomerGatewayUpdate,
|
||||||
Delete: resourceAwsCustomerGatewayDelete,
|
Delete: resourceAwsCustomerGatewayDelete,
|
||||||
|
Importer: &schema.ResourceImporter{
|
||||||
|
State: schema.ImportStatePassthrough,
|
||||||
|
},
|
||||||
|
|
||||||
Schema: map[string]*schema.Schema{
|
Schema: map[string]*schema.Schema{
|
||||||
"bgp_asn": &schema.Schema{
|
"bgp_asn": &schema.Schema{
|
||||||
|
|
|
@ -19,6 +19,9 @@ func resourceAwsEbsVolume() *schema.Resource {
|
||||||
Read: resourceAwsEbsVolumeRead,
|
Read: resourceAwsEbsVolumeRead,
|
||||||
Update: resourceAWSEbsVolumeUpdate,
|
Update: resourceAWSEbsVolumeUpdate,
|
||||||
Delete: resourceAwsEbsVolumeDelete,
|
Delete: resourceAwsEbsVolumeDelete,
|
||||||
|
Importer: &schema.ResourceImporter{
|
||||||
|
State: schema.ImportStatePassthrough,
|
||||||
|
},
|
||||||
|
|
||||||
Schema: map[string]*schema.Schema{
|
Schema: map[string]*schema.Schema{
|
||||||
"availability_zone": &schema.Schema{
|
"availability_zone": &schema.Schema{
|
||||||
|
|
|
@ -20,7 +20,7 @@ func resourceAwsEip() *schema.Resource {
|
||||||
Update: resourceAwsEipUpdate,
|
Update: resourceAwsEipUpdate,
|
||||||
Delete: resourceAwsEipDelete,
|
Delete: resourceAwsEipDelete,
|
||||||
Importer: &schema.ResourceImporter{
|
Importer: &schema.ResourceImporter{
|
||||||
State: resourceAwsEipImportState,
|
State: schema.ImportStatePassthrough,
|
||||||
},
|
},
|
||||||
|
|
||||||
Schema: map[string]*schema.Schema{
|
Schema: map[string]*schema.Schema{
|
||||||
|
@ -292,12 +292,6 @@ func resourceAwsEipDelete(d *schema.ResourceData, meta interface{}) error {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func resourceAwsEipImportState(
|
|
||||||
d *schema.ResourceData,
|
|
||||||
meta interface{}) ([]*schema.ResourceData, error) {
|
|
||||||
return []*schema.ResourceData{d}, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func resourceAwsEipDomain(d *schema.ResourceData) string {
|
func resourceAwsEipDomain(d *schema.ResourceData) string {
|
||||||
if v, ok := d.GetOk("domain"); ok {
|
if v, ok := d.GetOk("domain"); ok {
|
||||||
return v.(string)
|
return v.(string)
|
||||||
|
|
|
@ -22,6 +22,9 @@ func resourceAwsElb() *schema.Resource {
|
||||||
Read: resourceAwsElbRead,
|
Read: resourceAwsElbRead,
|
||||||
Update: resourceAwsElbUpdate,
|
Update: resourceAwsElbUpdate,
|
||||||
Delete: resourceAwsElbDelete,
|
Delete: resourceAwsElbDelete,
|
||||||
|
Importer: &schema.ResourceImporter{
|
||||||
|
State: schema.ImportStatePassthrough,
|
||||||
|
},
|
||||||
|
|
||||||
Schema: map[string]*schema.Schema{
|
Schema: map[string]*schema.Schema{
|
||||||
"name": &schema.Schema{
|
"name": &schema.Schema{
|
||||||
|
|
|
@ -15,6 +15,9 @@ func resourceAwsFlowLog() *schema.Resource {
|
||||||
Create: resourceAwsLogFlowCreate,
|
Create: resourceAwsLogFlowCreate,
|
||||||
Read: resourceAwsLogFlowRead,
|
Read: resourceAwsLogFlowRead,
|
||||||
Delete: resourceAwsLogFlowDelete,
|
Delete: resourceAwsLogFlowDelete,
|
||||||
|
Importer: &schema.ResourceImporter{
|
||||||
|
State: schema.ImportStatePassthrough,
|
||||||
|
},
|
||||||
|
|
||||||
Schema: map[string]*schema.Schema{
|
Schema: map[string]*schema.Schema{
|
||||||
"iam_role_arn": &schema.Schema{
|
"iam_role_arn": &schema.Schema{
|
||||||
|
|
|
@ -24,6 +24,9 @@ func resourceAwsInstance() *schema.Resource {
|
||||||
Read: resourceAwsInstanceRead,
|
Read: resourceAwsInstanceRead,
|
||||||
Update: resourceAwsInstanceUpdate,
|
Update: resourceAwsInstanceUpdate,
|
||||||
Delete: resourceAwsInstanceDelete,
|
Delete: resourceAwsInstanceDelete,
|
||||||
|
Importer: &schema.ResourceImporter{
|
||||||
|
State: schema.ImportStatePassthrough,
|
||||||
|
},
|
||||||
|
|
||||||
SchemaVersion: 1,
|
SchemaVersion: 1,
|
||||||
MigrateState: resourceAwsInstanceMigrateState,
|
MigrateState: resourceAwsInstanceMigrateState,
|
||||||
|
|
|
@ -18,6 +18,9 @@ func resourceAwsInternetGateway() *schema.Resource {
|
||||||
Read: resourceAwsInternetGatewayRead,
|
Read: resourceAwsInternetGatewayRead,
|
||||||
Update: resourceAwsInternetGatewayUpdate,
|
Update: resourceAwsInternetGatewayUpdate,
|
||||||
Delete: resourceAwsInternetGatewayDelete,
|
Delete: resourceAwsInternetGatewayDelete,
|
||||||
|
Importer: &schema.ResourceImporter{
|
||||||
|
State: schema.ImportStatePassthrough,
|
||||||
|
},
|
||||||
|
|
||||||
Schema: map[string]*schema.Schema{
|
Schema: map[string]*schema.Schema{
|
||||||
"vpc_id": &schema.Schema{
|
"vpc_id": &schema.Schema{
|
||||||
|
|
|
@ -18,6 +18,9 @@ func resourceAwsKeyPair() *schema.Resource {
|
||||||
Read: resourceAwsKeyPairRead,
|
Read: resourceAwsKeyPairRead,
|
||||||
Update: nil,
|
Update: nil,
|
||||||
Delete: resourceAwsKeyPairDelete,
|
Delete: resourceAwsKeyPairDelete,
|
||||||
|
Importer: &schema.ResourceImporter{
|
||||||
|
State: schema.ImportStatePassthrough,
|
||||||
|
},
|
||||||
|
|
||||||
SchemaVersion: 1,
|
SchemaVersion: 1,
|
||||||
MigrateState: resourceAwsKeyPairMigrateState,
|
MigrateState: resourceAwsKeyPairMigrateState,
|
||||||
|
|
|
@ -24,6 +24,9 @@ func resourceAwsLaunchConfiguration() *schema.Resource {
|
||||||
Create: resourceAwsLaunchConfigurationCreate,
|
Create: resourceAwsLaunchConfigurationCreate,
|
||||||
Read: resourceAwsLaunchConfigurationRead,
|
Read: resourceAwsLaunchConfigurationRead,
|
||||||
Delete: resourceAwsLaunchConfigurationDelete,
|
Delete: resourceAwsLaunchConfigurationDelete,
|
||||||
|
Importer: &schema.ResourceImporter{
|
||||||
|
State: schema.ImportStatePassthrough,
|
||||||
|
},
|
||||||
|
|
||||||
Schema: map[string]*schema.Schema{
|
Schema: map[string]*schema.Schema{
|
||||||
"name": &schema.Schema{
|
"name": &schema.Schema{
|
||||||
|
|
|
@ -18,6 +18,9 @@ func resourceAwsNatGateway() *schema.Resource {
|
||||||
Create: resourceAwsNatGatewayCreate,
|
Create: resourceAwsNatGatewayCreate,
|
||||||
Read: resourceAwsNatGatewayRead,
|
Read: resourceAwsNatGatewayRead,
|
||||||
Delete: resourceAwsNatGatewayDelete,
|
Delete: resourceAwsNatGatewayDelete,
|
||||||
|
Importer: &schema.ResourceImporter{
|
||||||
|
State: schema.ImportStatePassthrough,
|
||||||
|
},
|
||||||
|
|
||||||
Schema: map[string]*schema.Schema{
|
Schema: map[string]*schema.Schema{
|
||||||
"allocation_id": &schema.Schema{
|
"allocation_id": &schema.Schema{
|
||||||
|
|
|
@ -23,6 +23,9 @@ func resourceAwsNetworkAcl() *schema.Resource {
|
||||||
Read: resourceAwsNetworkAclRead,
|
Read: resourceAwsNetworkAclRead,
|
||||||
Delete: resourceAwsNetworkAclDelete,
|
Delete: resourceAwsNetworkAclDelete,
|
||||||
Update: resourceAwsNetworkAclUpdate,
|
Update: resourceAwsNetworkAclUpdate,
|
||||||
|
Importer: &schema.ResourceImporter{
|
||||||
|
State: resourceAwsNetworkAclImportState,
|
||||||
|
},
|
||||||
|
|
||||||
Schema: map[string]*schema.Schema{
|
Schema: map[string]*schema.Schema{
|
||||||
"vpc_id": &schema.Schema{
|
"vpc_id": &schema.Schema{
|
||||||
|
|
|
@ -21,6 +21,9 @@ func resourceAwsNetworkInterface() *schema.Resource {
|
||||||
Read: resourceAwsNetworkInterfaceRead,
|
Read: resourceAwsNetworkInterfaceRead,
|
||||||
Update: resourceAwsNetworkInterfaceUpdate,
|
Update: resourceAwsNetworkInterfaceUpdate,
|
||||||
Delete: resourceAwsNetworkInterfaceDelete,
|
Delete: resourceAwsNetworkInterfaceDelete,
|
||||||
|
Importer: &schema.ResourceImporter{
|
||||||
|
State: schema.ImportStatePassthrough,
|
||||||
|
},
|
||||||
|
|
||||||
Schema: map[string]*schema.Schema{
|
Schema: map[string]*schema.Schema{
|
||||||
|
|
||||||
|
|
|
@ -17,6 +17,9 @@ func resourceAwsPlacementGroup() *schema.Resource {
|
||||||
Create: resourceAwsPlacementGroupCreate,
|
Create: resourceAwsPlacementGroupCreate,
|
||||||
Read: resourceAwsPlacementGroupRead,
|
Read: resourceAwsPlacementGroupRead,
|
||||||
Delete: resourceAwsPlacementGroupDelete,
|
Delete: resourceAwsPlacementGroupDelete,
|
||||||
|
Importer: &schema.ResourceImporter{
|
||||||
|
State: schema.ImportStatePassthrough,
|
||||||
|
},
|
||||||
|
|
||||||
Schema: map[string]*schema.Schema{
|
Schema: map[string]*schema.Schema{
|
||||||
"name": &schema.Schema{
|
"name": &schema.Schema{
|
||||||
|
@ -85,7 +88,7 @@ func resourceAwsPlacementGroupCreate(d *schema.ResourceData, meta interface{}) e
|
||||||
func resourceAwsPlacementGroupRead(d *schema.ResourceData, meta interface{}) error {
|
func resourceAwsPlacementGroupRead(d *schema.ResourceData, meta interface{}) error {
|
||||||
conn := meta.(*AWSClient).ec2conn
|
conn := meta.(*AWSClient).ec2conn
|
||||||
input := ec2.DescribePlacementGroupsInput{
|
input := ec2.DescribePlacementGroupsInput{
|
||||||
GroupNames: []*string{aws.String(d.Get("name").(string))},
|
GroupNames: []*string{aws.String(d.Id())},
|
||||||
}
|
}
|
||||||
out, err := conn.DescribePlacementGroups(&input)
|
out, err := conn.DescribePlacementGroups(&input)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -17,6 +17,9 @@ func resourceAwsRoute53DelegationSet() *schema.Resource {
|
||||||
Create: resourceAwsRoute53DelegationSetCreate,
|
Create: resourceAwsRoute53DelegationSetCreate,
|
||||||
Read: resourceAwsRoute53DelegationSetRead,
|
Read: resourceAwsRoute53DelegationSetRead,
|
||||||
Delete: resourceAwsRoute53DelegationSetDelete,
|
Delete: resourceAwsRoute53DelegationSetDelete,
|
||||||
|
Importer: &schema.ResourceImporter{
|
||||||
|
State: schema.ImportStatePassthrough,
|
||||||
|
},
|
||||||
|
|
||||||
Schema: map[string]*schema.Schema{
|
Schema: map[string]*schema.Schema{
|
||||||
"reference_name": &schema.Schema{
|
"reference_name": &schema.Schema{
|
||||||
|
|
|
@ -19,6 +19,9 @@ func resourceAwsRoute53HealthCheck() *schema.Resource {
|
||||||
Read: resourceAwsRoute53HealthCheckRead,
|
Read: resourceAwsRoute53HealthCheckRead,
|
||||||
Update: resourceAwsRoute53HealthCheckUpdate,
|
Update: resourceAwsRoute53HealthCheckUpdate,
|
||||||
Delete: resourceAwsRoute53HealthCheckDelete,
|
Delete: resourceAwsRoute53HealthCheckDelete,
|
||||||
|
Importer: &schema.ResourceImporter{
|
||||||
|
State: schema.ImportStatePassthrough,
|
||||||
|
},
|
||||||
|
|
||||||
Schema: map[string]*schema.Schema{
|
Schema: map[string]*schema.Schema{
|
||||||
"type": &schema.Schema{
|
"type": &schema.Schema{
|
||||||
|
|
|
@ -21,6 +21,9 @@ func resourceAwsRoute53Zone() *schema.Resource {
|
||||||
Read: resourceAwsRoute53ZoneRead,
|
Read: resourceAwsRoute53ZoneRead,
|
||||||
Update: resourceAwsRoute53ZoneUpdate,
|
Update: resourceAwsRoute53ZoneUpdate,
|
||||||
Delete: resourceAwsRoute53ZoneDelete,
|
Delete: resourceAwsRoute53ZoneDelete,
|
||||||
|
Importer: &schema.ResourceImporter{
|
||||||
|
State: schema.ImportStatePassthrough,
|
||||||
|
},
|
||||||
|
|
||||||
Schema: map[string]*schema.Schema{
|
Schema: map[string]*schema.Schema{
|
||||||
"name": &schema.Schema{
|
"name": &schema.Schema{
|
||||||
|
|
|
@ -20,6 +20,9 @@ func resourceAwsRouteTable() *schema.Resource {
|
||||||
Read: resourceAwsRouteTableRead,
|
Read: resourceAwsRouteTableRead,
|
||||||
Update: resourceAwsRouteTableUpdate,
|
Update: resourceAwsRouteTableUpdate,
|
||||||
Delete: resourceAwsRouteTableDelete,
|
Delete: resourceAwsRouteTableDelete,
|
||||||
|
Importer: &schema.ResourceImporter{
|
||||||
|
State: resourceAwsRouteTableImportState,
|
||||||
|
},
|
||||||
|
|
||||||
Schema: map[string]*schema.Schema{
|
Schema: map[string]*schema.Schema{
|
||||||
"vpc_id": &schema.Schema{
|
"vpc_id": &schema.Schema{
|
||||||
|
|
|
@ -18,6 +18,9 @@ func resourceAwsSubnet() *schema.Resource {
|
||||||
Read: resourceAwsSubnetRead,
|
Read: resourceAwsSubnetRead,
|
||||||
Update: resourceAwsSubnetUpdate,
|
Update: resourceAwsSubnetUpdate,
|
||||||
Delete: resourceAwsSubnetDelete,
|
Delete: resourceAwsSubnetDelete,
|
||||||
|
Importer: &schema.ResourceImporter{
|
||||||
|
State: schema.ImportStatePassthrough,
|
||||||
|
},
|
||||||
|
|
||||||
Schema: map[string]*schema.Schema{
|
Schema: map[string]*schema.Schema{
|
||||||
"vpc_id": &schema.Schema{
|
"vpc_id": &schema.Schema{
|
||||||
|
|
|
@ -18,6 +18,9 @@ func resourceAwsVpc() *schema.Resource {
|
||||||
Read: resourceAwsVpcRead,
|
Read: resourceAwsVpcRead,
|
||||||
Update: resourceAwsVpcUpdate,
|
Update: resourceAwsVpcUpdate,
|
||||||
Delete: resourceAwsVpcDelete,
|
Delete: resourceAwsVpcDelete,
|
||||||
|
Importer: &schema.ResourceImporter{
|
||||||
|
State: schema.ImportStatePassthrough,
|
||||||
|
},
|
||||||
|
|
||||||
Schema: map[string]*schema.Schema{
|
Schema: map[string]*schema.Schema{
|
||||||
"cidr_block": &schema.Schema{
|
"cidr_block": &schema.Schema{
|
||||||
|
|
|
@ -19,6 +19,9 @@ func resourceAwsVpcDhcpOptions() *schema.Resource {
|
||||||
Read: resourceAwsVpcDhcpOptionsRead,
|
Read: resourceAwsVpcDhcpOptionsRead,
|
||||||
Update: resourceAwsVpcDhcpOptionsUpdate,
|
Update: resourceAwsVpcDhcpOptionsUpdate,
|
||||||
Delete: resourceAwsVpcDhcpOptionsDelete,
|
Delete: resourceAwsVpcDhcpOptionsDelete,
|
||||||
|
Importer: &schema.ResourceImporter{
|
||||||
|
State: schema.ImportStatePassthrough,
|
||||||
|
},
|
||||||
|
|
||||||
Schema: map[string]*schema.Schema{
|
Schema: map[string]*schema.Schema{
|
||||||
"domain_name": &schema.Schema{
|
"domain_name": &schema.Schema{
|
||||||
|
|
|
@ -153,7 +153,12 @@ type TestStep struct {
|
||||||
// ImportStateVerify, if true, will also check that the state values
|
// ImportStateVerify, if true, will also check that the state values
|
||||||
// that are finally put into the state after import match for all the
|
// that are finally put into the state after import match for all the
|
||||||
// IDs returned by the Import.
|
// IDs returned by the Import.
|
||||||
|
//
|
||||||
|
// ImportStateVerifyIgnore are fields that should not be verified to
|
||||||
|
// be equal. These can be set to ephemeral fields or fields that can't
|
||||||
|
// be refreshed and don't matter.
|
||||||
ImportStateVerify bool
|
ImportStateVerify bool
|
||||||
|
ImportStateVerifyIgnore []string
|
||||||
}
|
}
|
||||||
|
|
||||||
// Test performs an acceptance test on a resource.
|
// Test performs an acceptance test on a resource.
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
"reflect"
|
"reflect"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"github.com/davecgh/go-spew/spew"
|
"github.com/davecgh/go-spew/spew"
|
||||||
"github.com/hashicorp/terraform/terraform"
|
"github.com/hashicorp/terraform/terraform"
|
||||||
|
@ -91,6 +92,21 @@ func testStepImportState(
|
||||||
// Compare their attributes
|
// Compare their attributes
|
||||||
actual := r.Primary.Attributes
|
actual := r.Primary.Attributes
|
||||||
expected := oldR.Primary.Attributes
|
expected := oldR.Primary.Attributes
|
||||||
|
|
||||||
|
// Remove fields we're ignoring
|
||||||
|
for _, v := range step.ImportStateVerifyIgnore {
|
||||||
|
for k, _ := range actual {
|
||||||
|
if strings.HasPrefix(k, v) {
|
||||||
|
delete(actual, k)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for k, _ := range expected {
|
||||||
|
if strings.HasPrefix(k, v) {
|
||||||
|
delete(expected, k)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if !reflect.DeepEqual(actual, expected) {
|
if !reflect.DeepEqual(actual, expected) {
|
||||||
// Determine only the different attributes
|
// Determine only the different attributes
|
||||||
for k, v := range expected {
|
for k, v := range expected {
|
||||||
|
@ -103,7 +119,7 @@ func testStepImportState(
|
||||||
spewConf := spew.NewDefaultConfig()
|
spewConf := spew.NewDefaultConfig()
|
||||||
spewConf.SortKeys = true
|
spewConf.SortKeys = true
|
||||||
return state, fmt.Errorf(
|
return state, fmt.Errorf(
|
||||||
"Attributes not equivalent. Difference is shown below. Top is actual, bottom is expected."+
|
"ImportStateVerify attributes not equivalent. Difference is shown below. Top is actual, bottom is expected."+
|
||||||
"\n\n%s\n\n%s",
|
"\n\n%s\n\n%s",
|
||||||
spewConf.Sdump(actual), spewConf.Sdump(expected))
|
spewConf.Sdump(actual), spewConf.Sdump(expected))
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,3 +43,10 @@ type StateFunc func(*ResourceData, interface{}) ([]*ResourceData, error)
|
||||||
func (r *ResourceImporter) InternalValidate() error {
|
func (r *ResourceImporter) InternalValidate() error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ImportStatePassthrough is an implementation of StateFunc that can be
|
||||||
|
// used to simply pass the ID directly through. This should be used only
|
||||||
|
// in the case that an ID-only refresh is possible.
|
||||||
|
func ImportStatePassthrough(d *ResourceData, m interface{}) ([]*ResourceData, error) {
|
||||||
|
return []*ResourceData{d}, nil
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue