Skip to content

Commit 34d401e

Browse files
gh-mlfowlerstack72
authored andcommitted
provider/google-cloud: Add second generation disk specification options (hashicorp#11571)
* Add second generation disk specification options. * Adjust test check to match resource read behaviour.
1 parent b2ee4a9 commit 34d401e

3 files changed

Lines changed: 117 additions & 0 deletions

File tree

builtin/providers/google/resource_sql_database_instance.go

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,18 @@ func resourceSqlDatabaseInstance() *schema.Resource {
8989
},
9090
},
9191
},
92+
"disk_autoresize": &schema.Schema{
93+
Type: schema.TypeBool,
94+
Optional: true,
95+
},
96+
"disk_size": &schema.Schema{
97+
Type: schema.TypeInt,
98+
Optional: true,
99+
},
100+
"disk_type": &schema.Schema{
101+
Type: schema.TypeString,
102+
Optional: true,
103+
},
92104
"ip_configuration": &schema.Schema{
93105
Type: schema.TypeList,
94106
Optional: true,
@@ -325,6 +337,18 @@ func resourceSqlDatabaseInstanceCreate(d *schema.ResourceData, meta interface{})
325337
settings.CrashSafeReplicationEnabled = v.(bool)
326338
}
327339

340+
if v, ok := _settings["disk_autoresize"]; ok && v.(bool) {
341+
settings.StorageAutoResize = v.(bool)
342+
}
343+
344+
if v, ok := _settings["disk_size"]; ok && v.(int) > 0 {
345+
settings.DataDiskSizeGb = int64(v.(int))
346+
}
347+
348+
if v, ok := _settings["disk_type"]; ok && len(v.(string)) > 0 {
349+
settings.DataDiskType = v.(string)
350+
}
351+
328352
if v, ok := _settings["database_flags"]; ok {
329353
settings.DatabaseFlags = make([]*sqladmin.DatabaseFlags, 0)
330354
_databaseFlagsList := v.([]interface{})
@@ -579,6 +603,24 @@ func resourceSqlDatabaseInstanceRead(d *schema.ResourceData, meta interface{}) e
579603
_settings["crash_safe_replication"] = settings.CrashSafeReplicationEnabled
580604
}
581605

606+
if v, ok := _settings["disk_autoresize"]; ok && v != nil {
607+
if v.(bool) {
608+
_settings["disk_autoresize"] = settings.StorageAutoResize
609+
}
610+
}
611+
612+
if v, ok := _settings["disk_size"]; ok && v != nil {
613+
if v.(int) > 0 && settings.DataDiskSizeGb < int64(v.(int)) {
614+
_settings["disk_size"] = settings.DataDiskSizeGb
615+
}
616+
}
617+
618+
if v, ok := _settings["disk_type"]; ok && v != nil {
619+
if len(v.(string)) > 0 {
620+
_settings["disk_type"] = settings.DataDiskType
621+
}
622+
}
623+
582624
if v, ok := _settings["database_flags"]; ok && len(v.([]interface{})) > 0 {
583625
_flag_map := make(map[string]string)
584626
// First keep track of localy defined flag pairs
@@ -842,6 +884,20 @@ func resourceSqlDatabaseInstanceUpdate(d *schema.ResourceData, meta interface{})
842884
settings.CrashSafeReplicationEnabled = v.(bool)
843885
}
844886

887+
if v, ok := _settings["disk_autoresize"]; ok && v.(bool) {
888+
settings.StorageAutoResize = v.(bool)
889+
}
890+
891+
if v, ok := _settings["disk_size"]; ok {
892+
if v.(int) > 0 && int64(v.(int)) > instance.Settings.DataDiskSizeGb {
893+
settings.DataDiskSizeGb = int64(v.(int))
894+
}
895+
}
896+
897+
if v, ok := _settings["disk_type"]; ok && len(v.(string)) > 0 {
898+
settings.DataDiskType = v.(string)
899+
}
900+
845901
_oldDatabaseFlags := make([]interface{}, 0)
846902
if ov, ook := _o["database_flags"]; ook {
847903
_oldDatabaseFlags = ov.([]interface{})

builtin/providers/google/resource_sql_database_instance_test.go

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,29 @@ func TestAccGoogleSqlDatabaseInstance_slave(t *testing.T) {
115115
})
116116
}
117117

118+
func TestAccGoogleSqlDatabaseInstance_diskspecs(t *testing.T) {
119+
var instance sqladmin.DatabaseInstance
120+
masterID := acctest.RandInt()
121+
122+
resource.Test(t, resource.TestCase{
123+
PreCheck: func() { testAccPreCheck(t) },
124+
Providers: testAccProviders,
125+
CheckDestroy: testAccGoogleSqlDatabaseInstanceDestroy,
126+
Steps: []resource.TestStep{
127+
resource.TestStep{
128+
Config: fmt.Sprintf(
129+
testGoogleSqlDatabaseInstance_diskspecs, masterID),
130+
Check: resource.ComposeTestCheckFunc(
131+
testAccCheckGoogleSqlDatabaseInstanceExists(
132+
"google_sql_database_instance.instance", &instance),
133+
testAccCheckGoogleSqlDatabaseInstanceEquals(
134+
"google_sql_database_instance.instance", &instance),
135+
),
136+
},
137+
},
138+
})
139+
}
140+
118141
func TestAccGoogleSqlDatabaseInstance_settings_upgrade(t *testing.T) {
119142
var instance sqladmin.DatabaseInstance
120143
databaseID := acctest.RandInt()
@@ -266,6 +289,24 @@ func testAccCheckGoogleSqlDatabaseInstanceEquals(n string,
266289
return fmt.Errorf("Error settings.crash_safe_replication mismatch, (%s, %s)", server, local)
267290
}
268291

292+
server = strconv.FormatBool(instance.Settings.StorageAutoResize)
293+
local = attributes["settings.0.disk_autoresize"]
294+
if server != local && len(server) > 0 && len(local) > 0 {
295+
return fmt.Errorf("Error settings.disk_autoresize mismatch, (%s, %s)", server, local)
296+
}
297+
298+
server = strconv.FormatInt(instance.Settings.DataDiskSizeGb, 10)
299+
local = attributes["settings.0.disk_size"]
300+
if server != local && len(server) > 0 && len(local) > 0 && local != "0" {
301+
return fmt.Errorf("Error settings.disk_size mismatch, (%s, %s)", server, local)
302+
}
303+
304+
server = instance.Settings.DataDiskType
305+
local = attributes["settings.0.disk_type"]
306+
if server != local && len(server) > 0 && len(local) > 0 {
307+
return fmt.Errorf("Error settings.disk_type mismatch, (%s, %s)", server, local)
308+
}
309+
269310
if instance.Settings.IpConfiguration != nil {
270311
server = strconv.FormatBool(instance.Settings.IpConfiguration.Ipv4Enabled)
271312
local = attributes["settings.0.ip_configuration.0.ipv4_enabled"]
@@ -530,6 +571,20 @@ resource "google_sql_database_instance" "instance_slave" {
530571
}
531572
`
532573

574+
var testGoogleSqlDatabaseInstance_diskspecs = `
575+
resource "google_sql_database_instance" "instance" {
576+
name = "tf-lw-%d"
577+
region = "us-central1"
578+
579+
settings {
580+
tier = "db-f1-micro"
581+
disk_autoresize = true
582+
disk_size = 15
583+
disk_type = "PD_HDD"
584+
}
585+
}
586+
`
587+
533588
var testGoogleSqlDatabaseInstance_authNets_step1 = `
534589
resource "google_sql_database_instance" "instance" {
535590
name = "tf-lw-%d"

website/source/docs/providers/google/r/sql_database_instance.html.markdown

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,12 @@ The required `settings` block supports:
7373
* `crash_safe_replication` - (Optional) Specific to read instances, indicates
7474
when crash-safe replication flags are enabled.
7575

76+
* `disk_autoresize` - (Optional, Second Generation, Default: `false`) Configuration to increase storage size automatically.
77+
78+
* `disk_size` - (Optional, Second Generation, Default: `10`) The size of data disk, in GB. Size of a running instance cannot be reduced but can be increased.
79+
80+
* `disk_type` - (Optional, Second Generation, Default: `PD_SSD`) The type of data disk: PD_SSD or PD_HDD.
81+
7682
* `pricing_plan` - (Optional) Pricing plan for this instance, can be one of
7783
`PER_USE` or `PACKAGE`.
7884

0 commit comments

Comments
 (0)