mirror of
https://github.com/letic/terraform-provider-google.git
synced 2024-10-01 16:21:06 +00:00
Add ability to import google_sql_database
(#12)
* Add ability to import `google_sql_database` * Update from code review * Ensure split id length and report error otherwise
This commit is contained in:
parent
2f8a0c2740
commit
719c556f0c
31
google/import_sql_database_test.go
Normal file
31
google/import_sql_database_test.go
Normal file
@ -0,0 +1,31 @@
|
||||
package google
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
"github.com/hashicorp/terraform/helper/acctest"
|
||||
"github.com/hashicorp/terraform/helper/resource"
|
||||
)
|
||||
|
||||
func TestAccGoogleSqlDatabase_importBasic(t *testing.T) {
|
||||
resourceName := "google_sql_database.database"
|
||||
|
||||
resource.Test(t, resource.TestCase{
|
||||
PreCheck: func() { testAccPreCheck(t) },
|
||||
Providers: testAccProviders,
|
||||
CheckDestroy: testAccGoogleSqlDatabaseInstanceDestroy,
|
||||
Steps: []resource.TestStep{
|
||||
resource.TestStep{
|
||||
Config: fmt.Sprintf(
|
||||
testGoogleSqlDatabase_basic, acctest.RandString(10), acctest.RandString(10)),
|
||||
},
|
||||
|
||||
resource.TestStep{
|
||||
ResourceName: resourceName,
|
||||
ImportState: true,
|
||||
ImportStateVerify: true,
|
||||
},
|
||||
},
|
||||
})
|
||||
}
|
@ -2,6 +2,7 @@ package google
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"github.com/hashicorp/terraform/helper/schema"
|
||||
|
||||
@ -13,6 +14,9 @@ func resourceSqlDatabase() *schema.Resource {
|
||||
Create: resourceSqlDatabaseCreate,
|
||||
Read: resourceSqlDatabaseRead,
|
||||
Delete: resourceSqlDatabaseDelete,
|
||||
Importer: &schema.ResourceImporter{
|
||||
State: schema.ImportStatePassthrough,
|
||||
},
|
||||
|
||||
Schema: map[string]*schema.Schema{
|
||||
"name": &schema.Schema{
|
||||
@ -51,6 +55,7 @@ func resourceSqlDatabaseCreate(d *schema.ResourceData, meta interface{}) error {
|
||||
|
||||
database_name := d.Get("name").(string)
|
||||
instance_name := d.Get("instance").(string)
|
||||
d.SetId(instance_name + ":" + database_name)
|
||||
|
||||
db := &sqladmin.Database{
|
||||
Name: database_name,
|
||||
@ -86,8 +91,15 @@ func resourceSqlDatabaseRead(d *schema.ResourceData, meta interface{}) error {
|
||||
return err
|
||||
}
|
||||
|
||||
database_name := d.Get("name").(string)
|
||||
instance_name := d.Get("instance").(string)
|
||||
s := strings.Split(d.Id(), ":")
|
||||
|
||||
if len(s) != 2 {
|
||||
return fmt.Errorf("Error, failure importing database %s. "+
|
||||
"ID format is instance:name", d.Id())
|
||||
}
|
||||
|
||||
instance_name := s[0]
|
||||
database_name := s[1]
|
||||
|
||||
db, err := config.clientSqlAdmin.Databases.Get(project, instance_name,
|
||||
database_name).Do()
|
||||
@ -96,6 +108,8 @@ func resourceSqlDatabaseRead(d *schema.ResourceData, meta interface{}) error {
|
||||
return handleNotFoundError(err, d, fmt.Sprintf("SQL Database %q in instance %q", database_name, instance_name))
|
||||
}
|
||||
|
||||
d.Set("instance", db.Instance)
|
||||
d.Set("name", db.Name)
|
||||
d.Set("self_link", db.SelfLink)
|
||||
d.SetId(instance_name + ":" + database_name)
|
||||
|
||||
|
@ -20,7 +20,8 @@ func TestAccGoogleSqlDatabase_basic(t *testing.T) {
|
||||
CheckDestroy: testAccGoogleSqlDatabaseInstanceDestroy,
|
||||
Steps: []resource.TestStep{
|
||||
resource.TestStep{
|
||||
Config: testGoogleSqlDatabase_basic,
|
||||
Config: fmt.Sprintf(
|
||||
testGoogleSqlDatabase_basic, acctest.RandString(10), acctest.RandString(10)),
|
||||
Check: resource.ComposeTestCheckFunc(
|
||||
testAccCheckGoogleSqlDatabaseExists(
|
||||
"google_sql_database.database", &database),
|
||||
@ -99,7 +100,7 @@ func testAccGoogleSqlDatabaseDestroy(s *terraform.State) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
var testGoogleSqlDatabase_basic = fmt.Sprintf(`
|
||||
var testGoogleSqlDatabase_basic = `
|
||||
resource "google_sql_database_instance" "instance" {
|
||||
name = "sqldatabasetest%s"
|
||||
region = "us-central"
|
||||
@ -112,4 +113,4 @@ resource "google_sql_database" "database" {
|
||||
name = "sqldatabasetest%s"
|
||||
instance = "${google_sql_database_instance.instance.name}"
|
||||
}
|
||||
`, acctest.RandString(10), acctest.RandString(10))
|
||||
`
|
||||
|
@ -24,7 +24,7 @@ resource "google_sql_database_instance" "master" {
|
||||
}
|
||||
|
||||
resource "google_sql_database" "users" {
|
||||
name = "users"
|
||||
name = "users-db"
|
||||
instance = "${google_sql_database_instance.master.name}"
|
||||
}
|
||||
```
|
||||
@ -48,3 +48,11 @@ In addition to the arguments listed above, the following computed attributes are
|
||||
exported:
|
||||
|
||||
* `self_link` - The URI of the created resource.
|
||||
|
||||
## Import
|
||||
|
||||
SQL databases can be imported using the `instance` and `name`, e.g.
|
||||
|
||||
```
|
||||
$ terraform import google_sql_database.database master-instance:users-db
|
||||
```
|
||||
|
Loading…
Reference in New Issue
Block a user