provider/aws: Support Import `aws_rds_cluster` (#7366)

```
make testacc TEST=./builtin/providers/aws
TESTARGS='-run=TestAccAWSRDSCluster_importBasic'
==> Checking that code complies with gofmt requirements...
go generate $(go list ./... | grep -v /vendor/)
TF_ACC=1 go test ./builtin/providers/aws -v
-run=TestAccAWSRDSCluster_importBasic -timeout 120m
=== RUN   TestAccAWSRDSCluster_importBasic
--- FAIL: TestAccAWSRDSCluster_importBasic (122.71s)
    testing.go:255: Step 1 error: ImportStateVerify attributes not
    equivalent. Difference is shown below. Top is actual, bottom is
    expected.

    (map[string]string) {

    }

(map[string]string) (len=1) {
         (string) (len=19) "skip_final_snapshot": (string) (len=4) "true"

}

FAIL
exit status 1
FAIL    github.com/hashicorp/terraform/builtin/providers/aws    122.733s
make: *** [testacc] Error 1
```
This commit is contained in:
Paul Stack 2016-07-20 19:53:37 +01:00 committed by GitHub
parent 7879450cf3
commit b4fa54e3c0
3 changed files with 45 additions and 0 deletions

View File

@ -0,0 +1,32 @@
package aws
import (
"testing"
"github.com/hashicorp/terraform/helper/acctest"
"github.com/hashicorp/terraform/helper/resource"
)
func TestAccAWSRDSCluster_importBasic(t *testing.T) {
resourceName := "aws_rds_cluster.default"
ri := acctest.RandInt()
resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccCheckAWSClusterDestroy,
Steps: []resource.TestStep{
resource.TestStep{
Config: testAccAWSClusterConfig(ri),
},
resource.TestStep{
ResourceName: resourceName,
ImportState: true,
ImportStateVerify: true,
ImportStateVerifyIgnore: []string{
"master_password", "skip_final_snapshot"},
},
},
})
}

View File

@ -20,6 +20,9 @@ func resourceAwsRDSCluster() *schema.Resource {
Read: resourceAwsRDSClusterRead, Read: resourceAwsRDSClusterRead,
Update: resourceAwsRDSClusterUpdate, Update: resourceAwsRDSClusterUpdate,
Delete: resourceAwsRDSClusterDelete, Delete: resourceAwsRDSClusterDelete,
Importer: &schema.ResourceImporter{
State: resourceAwsRdsClusterImport,
},
Schema: map[string]*schema.Schema{ Schema: map[string]*schema.Schema{
@ -198,6 +201,15 @@ func resourceAwsRDSCluster() *schema.Resource {
} }
} }
func resourceAwsRdsClusterImport(
d *schema.ResourceData, meta interface{}) ([]*schema.ResourceData, error) {
// Neither skip_final_snapshot nor final_snapshot_identifier can be fetched
// from any API call, so we need to default skip_final_snapshot to true so
// that final_snapshot_identifier is not required
d.Set("skip_final_snapshot", true)
return []*schema.ResourceData{d}, nil
}
func resourceAwsRDSClusterCreate(d *schema.ResourceData, meta interface{}) error { func resourceAwsRDSClusterCreate(d *schema.ResourceData, meta interface{}) error {
conn := meta.(*AWSClient).rdsconn conn := meta.(*AWSClient).rdsconn
tags := tagsFromMapRDS(d.Get("tags").(map[string]interface{})) tags := tagsFromMapRDS(d.Get("tags").(map[string]interface{}))
@ -407,6 +419,7 @@ func resourceAwsRDSClusterRead(d *schema.ResourceData, meta interface{}) error {
d.Set("database_name", dbc.DatabaseName) d.Set("database_name", dbc.DatabaseName)
} }
d.Set("cluster_identifier", dbc.DBClusterIdentifier)
d.Set("db_subnet_group_name", dbc.DBSubnetGroup) d.Set("db_subnet_group_name", dbc.DBSubnetGroup)
d.Set("parameter_group_name", dbc.DBClusterParameterGroup) d.Set("parameter_group_name", dbc.DBClusterParameterGroup)
d.Set("db_cluster_parameter_group_name", dbc.DBClusterParameterGroup) d.Set("db_cluster_parameter_group_name", dbc.DBClusterParameterGroup)