-
Notifications
You must be signed in to change notification settings - Fork 1.8k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fix for SQL database import formats (#4279)
Signed-off-by: Modular Magician <[email protected]>
- Loading branch information
1 parent
7671abc
commit 744febe
Showing
3 changed files
with
175 additions
and
46 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,91 @@ | ||
// ---------------------------------------------------------------------------- | ||
// | ||
// *** AUTO GENERATED CODE *** AUTO GENERATED CODE *** | ||
// | ||
// ---------------------------------------------------------------------------- | ||
// | ||
// This file is automatically generated by Magic Modules and manual | ||
// changes will be clobbered when the file is regenerated. | ||
// | ||
// Please read more about how to change this file in | ||
// .github/CONTRIBUTING.md. | ||
// | ||
// ---------------------------------------------------------------------------- | ||
|
||
package google | ||
|
||
import ( | ||
"fmt" | ||
"strings" | ||
"testing" | ||
|
||
"github.com/hashicorp/terraform/helper/acctest" | ||
"github.com/hashicorp/terraform/helper/resource" | ||
"github.com/hashicorp/terraform/terraform" | ||
) | ||
|
||
func TestAccSqlDatabase_sqlDatabaseBasicExample(t *testing.T) { | ||
t.Parallel() | ||
|
||
context := map[string]interface{}{ | ||
"random_suffix": acctest.RandString(10), | ||
} | ||
|
||
resource.Test(t, resource.TestCase{ | ||
PreCheck: func() { testAccPreCheck(t) }, | ||
Providers: testAccProviders, | ||
CheckDestroy: testAccCheckSqlDatabaseDestroy, | ||
Steps: []resource.TestStep{ | ||
{ | ||
Config: testAccSqlDatabase_sqlDatabaseBasicExample(context), | ||
}, | ||
{ | ||
ResourceName: "google_sql_database.database", | ||
ImportState: true, | ||
ImportStateVerify: true, | ||
}, | ||
}, | ||
}) | ||
} | ||
|
||
func testAccSqlDatabase_sqlDatabaseBasicExample(context map[string]interface{}) string { | ||
return Nprintf(` | ||
resource "google_sql_database" "database" { | ||
name = "my-database%{random_suffix}" | ||
instance = "${google_sql_database_instance.instance.name}" | ||
} | ||
resource "google_sql_database_instance" "instance" { | ||
name = "my-database-instance%{random_suffix}" | ||
region = "us-central" | ||
settings { | ||
tier = "D0" | ||
} | ||
} | ||
`, context) | ||
} | ||
|
||
func testAccCheckSqlDatabaseDestroy(s *terraform.State) error { | ||
for name, rs := range s.RootModule().Resources { | ||
if rs.Type != "google_sql_database" { | ||
continue | ||
} | ||
if strings.HasPrefix(name, "data.") { | ||
continue | ||
} | ||
|
||
config := testAccProvider.Meta().(*Config) | ||
|
||
url, err := replaceVarsForTest(config, rs, "{{SqlBasePath}}projects/{{project}}/instances/{{instance}}/databases/{{name}}") | ||
if err != nil { | ||
return err | ||
} | ||
|
||
_, err = sendRequest(config, "GET", "", url, nil) | ||
if err == nil { | ||
return fmt.Errorf("SqlDatabase still exists at %s", url) | ||
} | ||
} | ||
|
||
return nil | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,83 +1,120 @@ | ||
--- | ||
# ---------------------------------------------------------------------------- | ||
# | ||
# *** AUTO GENERATED CODE *** AUTO GENERATED CODE *** | ||
# | ||
# ---------------------------------------------------------------------------- | ||
# | ||
# This file is automatically generated by Magic Modules and manual | ||
# changes will be clobbered when the file is regenerated. | ||
# | ||
# Please read more about how to change this file in | ||
# .github/CONTRIBUTING.md. | ||
# | ||
# ---------------------------------------------------------------------------- | ||
layout: "google" | ||
page_title: "Google: google_sql_database" | ||
sidebar_current: "docs-google-sql-database-x" | ||
sidebar_current: "docs-google-sql-database" | ||
description: |- | ||
Creates a new SQL database in Google Cloud SQL. | ||
Represents a SQL database inside the Cloud SQL instance, hosted in | ||
Google's cloud. | ||
--- | ||
|
||
# google\_sql\_database | ||
|
||
Creates a new Google SQL Database on a Google SQL Database Instance. For more information, see | ||
the [official documentation](https://cloud.google.com/sql/), | ||
or the [JSON API](https://cloud.google.com/sql/docs/admin-api/v1beta4/databases). | ||
Represents a SQL database inside the Cloud SQL instance, hosted in | ||
Google's cloud. | ||
|
||
## Example Usage | ||
|
||
Example creating a SQL Database. | ||
|
||
```hcl | ||
resource "random_id" "db_name_suffix" { | ||
byte_length = 4 | ||
} | ||
<div class = "oics-button" style="float: right; margin: 0 0 -15px"> | ||
<a href="https://console.cloud.google.com/cloudshell/open?cloudshell_git_repo=https%3A%2F%2Fgithub.com%2Fterraform-google-modules%2Fdocs-examples.git&cloudshell_working_dir=sql_database_basic&cloudshell_image=gcr.io%2Fgraphite-cloud-shell-images%2Fterraform%3Alatest&open_in_editor=main.tf&cloudshell_print=.%2Fmotd&cloudshell_tutorial=.%2Ftutorial.md" target="_blank"> | ||
<img alt="Open in Cloud Shell" src="//gstatic.com/cloudssh/images/open-btn.svg" style="max-height: 44px; margin: 32px auto; max-width: 100%;"> | ||
</a> | ||
</div> | ||
## Example Usage - Sql Database Basic | ||
|
||
resource "google_sql_database_instance" "master" { | ||
name = "master-instance-${random_id.db_name_suffix.hex}" | ||
|
||
settings { | ||
tier = "D0" | ||
} | ||
```hcl | ||
resource "google_sql_database" "database" { | ||
name = "my-database" | ||
instance = "${google_sql_database_instance.instance.name}" | ||
} | ||
resource "google_sql_database" "users" { | ||
name = "users-db" | ||
instance = "${google_sql_database_instance.master.name}" | ||
charset = "latin1" | ||
collation = "latin1_swedish_ci" | ||
resource "google_sql_database_instance" "instance" { | ||
name = "my-database-instance" | ||
region = "us-central" | ||
settings { | ||
tier = "D0" | ||
} | ||
} | ||
``` | ||
|
||
## Argument Reference | ||
|
||
The following arguments are supported: | ||
|
||
* `name` - (Required) The name of the database. | ||
|
||
* `instance` - (Required) The name of containing instance. | ||
* `name` - | ||
(Required) | ||
The name of the database in the Cloud SQL instance. | ||
This does not include the project ID or instance name. | ||
|
||
* `instance` - | ||
(Required) | ||
The name of the Cloud SQL instance. This does not include the project | ||
ID. | ||
|
||
|
||
- - - | ||
|
||
* `project` - (Optional) The ID of the project in which the resource belongs. If it | ||
is not provided, the provider project is used. | ||
|
||
* `charset` - (Optional) The charset value. See MySQL's | ||
[Supported Character Sets and Collations](https://dev.mysql.com/doc/refman/5.7/en/charset-charsets.html) | ||
and Postgres' [Character Set Support](https://www.postgresql.org/docs/9.6/static/multibyte.html) | ||
for more details and supported values. Postgres databases are in beta | ||
and have limited `charset` support; they only support a value of `UTF8` at creation time. | ||
* `charset` - | ||
(Optional) | ||
The charset value. See MySQL's | ||
[Supported Character Sets and Collations](https://dev.mysql.com/doc/refman/5.7/en/charset-charsets.html) | ||
and Postgres' [Character Set Support](https://www.postgresql.org/docs/9.6/static/multibyte.html) | ||
for more details and supported values. Postgres databases only support | ||
a value of `UTF8` at creation time. | ||
|
||
* `collation` - | ||
(Optional) | ||
The collation value. See MySQL's | ||
[Supported Character Sets and Collations](https://dev.mysql.com/doc/refman/5.7/en/charset-charsets.html) | ||
and Postgres' [Collation Support](https://www.postgresql.org/docs/9.6/static/collation.html) | ||
for more details and supported values. Postgres databases only support | ||
a value of `en_US.UTF8` at creation time. | ||
|
||
* `collation` - (Optional) The collation value. See MySQL's | ||
[Supported Character Sets and Collations](https://dev.mysql.com/doc/refman/5.7/en/charset-charsets.html) | ||
and Postgres' [Collation Support](https://www.postgresql.org/docs/9.6/static/collation.html) | ||
for more details and supported values. Postgres databases are in beta | ||
and have limited `collation` support; they only support a value of `en_US.UTF8` at creation time. | ||
* `project` - (Optional) The ID of the project in which the resource belongs. | ||
If it is not provided, the provider project is used. | ||
|
||
## Attributes Reference | ||
|
||
In addition to the arguments listed above, the following computed attributes are | ||
exported: | ||
|
||
* `self_link` - The URI of the created resource. | ||
## Timeouts | ||
|
||
This resource provides the following | ||
[Timeouts](/docs/configuration/resources.html#timeouts) configuration options: | ||
|
||
- `create` - Default is 15 minutes. | ||
- `update` - Default is 10 minutes. | ||
- `delete` - Default is 10 minutes. | ||
|
||
## Import | ||
|
||
SQL databases can be imported using one of any of these accepted formats: | ||
Database can be imported using any of these accepted formats: | ||
|
||
``` | ||
$ terraform import google_sql_database.database projects/{{project}}/instances/{{instance}}/databases/{{name}} | ||
$ terraform import google_sql_database.database {{project}}/{{instance}}/{{name}} | ||
$ terraform import google_sql_database.database instances/{{name}}/databases/{{name}} | ||
$ terraform import google_sql_database.database {{instance}}/{{name}} | ||
$ terraform import google_sql_database.database {{name}} | ||
$ terraform import google_sql_database.default projects/{{project}}/instances/{{instance}}/databases/{{name}} | ||
$ terraform import google_sql_database.default instances/{{instance}}/databases/{{name}} | ||
$ terraform import google_sql_database.default {{project}}/{{instance}}/{{name}} | ||
$ terraform import google_sql_database.default {{instance}}/{{name}} | ||
$ terraform import google_sql_database.default {{instance}}:{{name}} | ||
$ terraform import google_sql_database.default {{name}} | ||
``` | ||
|
||
-> If you're importing a resource with beta features, make sure to include `-provider=google-beta` | ||
as an argument so that Terraform uses the correct provider to import your resource. | ||
|
||
## User Project Overrides | ||
|
||
This resource supports [User Project Overrides](https://www.terraform.io/docs/providers/google/provider_reference.html#user_project_override). |