mirror of
https://github.com/letic/terraform-provider-google.git
synced 2024-10-04 17:51:11 +00:00
* Added user label support in sql_database_instance (#1372) * Fixes #1372
This commit is contained in:
parent
ad25778d54
commit
c6b0cfcbfa
@ -230,6 +230,12 @@ func resourceSqlDatabaseInstance() *schema.Resource {
|
|||||||
Optional: true,
|
Optional: true,
|
||||||
Default: "SYNCHRONOUS",
|
Default: "SYNCHRONOUS",
|
||||||
},
|
},
|
||||||
|
"user_labels": &schema.Schema{
|
||||||
|
Type: schema.TypeMap,
|
||||||
|
Optional: true,
|
||||||
|
Elem: &schema.Schema{Type: schema.TypeString},
|
||||||
|
Set: schema.HashString,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -599,6 +605,10 @@ func resourceSqlDatabaseInstanceCreate(d *schema.ResourceData, meta interface{})
|
|||||||
settings.ReplicationType = v.(string)
|
settings.ReplicationType = v.(string)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if v, ok := _settings["user_labels"]; ok {
|
||||||
|
settings.UserLabels = convertStringMap(v.(map[string]interface{}))
|
||||||
|
}
|
||||||
|
|
||||||
instance := &sqladmin.DatabaseInstance{
|
instance := &sqladmin.DatabaseInstance{
|
||||||
Region: region,
|
Region: region,
|
||||||
Settings: settings,
|
Settings: settings,
|
||||||
@ -1031,6 +1041,10 @@ func resourceSqlDatabaseInstanceUpdate(d *schema.ResourceData, meta interface{})
|
|||||||
settings.ReplicationType = v.(string)
|
settings.ReplicationType = v.(string)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if v, ok := _settings["user_labels"]; ok {
|
||||||
|
settings.UserLabels = convertStringMap(v.(map[string]interface{}))
|
||||||
|
}
|
||||||
|
|
||||||
instance.Settings = settings
|
instance.Settings = settings
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1083,6 +1097,7 @@ func flattenSettings(settings *sqladmin.Settings) []map[string]interface{} {
|
|||||||
"disk_size": settings.DataDiskSizeGb,
|
"disk_size": settings.DataDiskSizeGb,
|
||||||
"pricing_plan": settings.PricingPlan,
|
"pricing_plan": settings.PricingPlan,
|
||||||
"replication_type": settings.ReplicationType,
|
"replication_type": settings.ReplicationType,
|
||||||
|
"user_labels": settings.UserLabels,
|
||||||
}
|
}
|
||||||
|
|
||||||
if settings.BackupConfiguration != nil {
|
if settings.BackupConfiguration != nil {
|
||||||
@ -1109,6 +1124,10 @@ func flattenSettings(settings *sqladmin.Settings) []map[string]interface{} {
|
|||||||
data["disk_autoresize"] = *settings.StorageAutoResize
|
data["disk_autoresize"] = *settings.StorageAutoResize
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if settings.UserLabels != nil {
|
||||||
|
data["user_labels"] = settings.UserLabels
|
||||||
|
}
|
||||||
|
|
||||||
return []map[string]interface{}{data}
|
return []map[string]interface{}{data}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -521,6 +521,43 @@ func TestAccSqlDatabaseInstance_multipleOperations(t *testing.T) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestAccSqlDatabaseInstance_basic_with_user_labels(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
|
||||||
|
var instance sqladmin.DatabaseInstance
|
||||||
|
databaseID := acctest.RandInt()
|
||||||
|
|
||||||
|
resource.Test(t, resource.TestCase{
|
||||||
|
PreCheck: func() { testAccPreCheck(t) },
|
||||||
|
Providers: testAccProviders,
|
||||||
|
CheckDestroy: testAccSqlDatabaseInstanceDestroy,
|
||||||
|
Steps: []resource.TestStep{
|
||||||
|
resource.TestStep{
|
||||||
|
Config: fmt.Sprintf(
|
||||||
|
testGoogleSqlDatabaseInstance_basic_with_user_labels, databaseID),
|
||||||
|
Check: resource.ComposeTestCheckFunc(
|
||||||
|
testAccCheckGoogleSqlDatabaseInstanceExists(
|
||||||
|
"google_sql_database_instance.instance", &instance),
|
||||||
|
testAccCheckGoogleSqlDatabaseInstanceEquals(
|
||||||
|
"google_sql_database_instance.instance", &instance),
|
||||||
|
testAccCheckGoogleSqlDatabaseRootUserDoesNotExist(
|
||||||
|
&instance),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
resource.TestStep{
|
||||||
|
Config: fmt.Sprintf(
|
||||||
|
testGoogleSqlDatabaseInstance_basic_with_user_labels_update, databaseID),
|
||||||
|
Check: resource.ComposeTestCheckFunc(
|
||||||
|
testAccCheckGoogleSqlDatabaseInstanceExists(
|
||||||
|
"google_sql_database_instance.instance", &instance),
|
||||||
|
testAccCheckGoogleSqlDatabaseInstanceEquals(
|
||||||
|
"google_sql_database_instance.instance", &instance),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
func testAccCheckGoogleSqlDatabaseInstanceEquals(n string,
|
func testAccCheckGoogleSqlDatabaseInstanceEquals(n string,
|
||||||
instance *sqladmin.DatabaseInstance) resource.TestCheckFunc {
|
instance *sqladmin.DatabaseInstance) resource.TestCheckFunc {
|
||||||
return func(s *terraform.State) error {
|
return func(s *terraform.State) error {
|
||||||
@ -693,6 +730,22 @@ func testAccCheckGoogleSqlDatabaseInstanceEquals(n string,
|
|||||||
return fmt.Errorf("Error settings.pricing_plan mismatch, (%s, %s)", server, local)
|
return fmt.Errorf("Error settings.pricing_plan mismatch, (%s, %s)", server, local)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if instance.Settings.UserLabels != nil {
|
||||||
|
server := instance.Settings.UserLabels["location"]
|
||||||
|
local = attributes["settings.0.user_labels.location"]
|
||||||
|
|
||||||
|
if server != local {
|
||||||
|
return fmt.Errorf("Error settings.user_labels.location mismatch, (%s, %s)", server, local)
|
||||||
|
}
|
||||||
|
|
||||||
|
server = instance.Settings.UserLabels["track"]
|
||||||
|
local = attributes["settings.0.user_labels.track"]
|
||||||
|
|
||||||
|
if server != local {
|
||||||
|
return fmt.Errorf("Error settings.user_labels.track mismatch, (%s, %s)", server, local)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if instance.ReplicaConfiguration != nil {
|
if instance.ReplicaConfiguration != nil {
|
||||||
server = strconv.FormatBool(instance.ReplicaConfiguration.FailoverTarget)
|
server = strconv.FormatBool(instance.ReplicaConfiguration.FailoverTarget)
|
||||||
local = attributes["replica_configuration.0.failover_target"]
|
local = attributes["replica_configuration.0.failover_target"]
|
||||||
@ -1064,3 +1117,29 @@ resource "google_sql_user" "user" {
|
|||||||
password = "hunter2"
|
password = "hunter2"
|
||||||
}
|
}
|
||||||
`
|
`
|
||||||
|
|
||||||
|
var testGoogleSqlDatabaseInstance_basic_with_user_labels = `
|
||||||
|
resource "google_sql_database_instance" "instance" {
|
||||||
|
name = "tf-lw-%d"
|
||||||
|
region = "us-central1"
|
||||||
|
settings {
|
||||||
|
tier = "db-f1-micro"
|
||||||
|
user_labels {
|
||||||
|
track = "production"
|
||||||
|
location = "western-division"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`
|
||||||
|
var testGoogleSqlDatabaseInstance_basic_with_user_labels_update = `
|
||||||
|
resource "google_sql_database_instance" "instance" {
|
||||||
|
name = "tf-lw-%d"
|
||||||
|
region = "us-central1"
|
||||||
|
settings {
|
||||||
|
tier = "db-f1-micro"
|
||||||
|
user_labels {
|
||||||
|
track = "production"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`
|
||||||
|
@ -124,6 +124,8 @@ The required `settings` block supports:
|
|||||||
* `replication_type` - (Optional) Replication type for this instance, can be one
|
* `replication_type` - (Optional) Replication type for this instance, can be one
|
||||||
of `ASYNCHRONOUS` or `SYNCHRONOUS`.
|
of `ASYNCHRONOUS` or `SYNCHRONOUS`.
|
||||||
|
|
||||||
|
* `user_labels` - (Optional) A set of key/value user label pairs to assign to the instance.
|
||||||
|
|
||||||
The optional `settings.database_flags` sublist supports:
|
The optional `settings.database_flags` sublist supports:
|
||||||
|
|
||||||
* `name` - (Optional) Name of the flag.
|
* `name` - (Optional) Name of the flag.
|
||||||
|
Loading…
Reference in New Issue
Block a user