@@ -356,21 +356,25 @@ func resourceSqlDatabaseInstance() *schema.Resource {
356
356
// Suppress diff with any attribute value that is not supported on 1st Generation
357
357
// Instances
358
358
func suppressFirstGen (k , old , new string , d * schema.ResourceData ) bool {
359
- settingsList := d .Get ("settings" ).([]interface {})
360
-
361
- settings := settingsList [0 ].(map [string ]interface {})
362
- tier := settings ["tier" ].(string )
363
- matched , err := regexp .MatchString ("db*" , tier )
364
- if err != nil {
365
- log .Printf ("[ERR] error with regex in diff supression for %s: %s" , k , err )
366
- }
367
- if ! matched {
359
+ if isFirstGen (d ) {
368
360
log .Printf ("[DEBUG] suppressing diff on %s due to 1st gen instance type" , k )
369
361
return true
370
362
}
363
+
371
364
return false
372
365
}
373
366
367
+ // Detects whether a database is 1st Generation by inspecting the tier name
368
+ func isFirstGen (d * schema.ResourceData ) bool {
369
+ settingsList := d .Get ("settings" ).([]interface {})
370
+ settings := settingsList [0 ].(map [string ]interface {})
371
+ tier := settings ["tier" ].(string )
372
+
373
+ // 1st Generation databases have tiers like 'D0', as opposed to 2nd Generation which are
374
+ // prefixed with 'db'
375
+ return ! regexp .MustCompile ("db*" ).Match ([]byte (tier ))
376
+ }
377
+
374
378
func resourceSqlDatabaseInstanceCreate (d * schema.ResourceData , meta interface {}) error {
375
379
config := meta .(* Config )
376
380
@@ -431,8 +435,11 @@ func resourceSqlDatabaseInstanceCreate(d *schema.ResourceData, meta interface{})
431
435
settings .CrashSafeReplicationEnabled = v .(bool )
432
436
}
433
437
434
- autoResize := _settings ["disk_autoresize" ].(bool )
435
- settings .StorageAutoResize = & autoResize
438
+ // 1st Generation instances don't support the disk_autoresize parameter
439
+ if ! isFirstGen (d ) {
440
+ autoResize := _settings ["disk_autoresize" ].(bool )
441
+ settings .StorageAutoResize = & autoResize
442
+ }
436
443
437
444
if v , ok := _settings ["disk_size" ]; ok && v .(int ) > 0 {
438
445
settings .DataDiskSizeGb = int64 (v .(int ))
@@ -734,13 +741,16 @@ func resourceSqlDatabaseInstanceUpdate(d *schema.ResourceData, meta interface{})
734
741
_settingsList := _settingsListCast .([]interface {})
735
742
736
743
_settings := _settingsList [0 ].(map [string ]interface {})
737
- _autoResize := _settings ["disk_autoresize" ].(bool )
738
744
739
745
settings := & sqladmin.Settings {
740
- Tier : _settings ["tier" ].(string ),
741
- SettingsVersion : instance .Settings .SettingsVersion ,
742
- StorageAutoResize : & _autoResize ,
743
- ForceSendFields : []string {"StorageAutoResize" },
746
+ Tier : _settings ["tier" ].(string ),
747
+ SettingsVersion : instance .Settings .SettingsVersion ,
748
+ ForceSendFields : []string {"StorageAutoResize" },
749
+ }
750
+
751
+ if ! isFirstGen (d ) {
752
+ autoResize := _settings ["disk_autoresize" ].(bool )
753
+ settings .StorageAutoResize = & autoResize
744
754
}
745
755
746
756
if v , ok := _settings ["activation_policy" ]; ok {
0 commit comments