From ae7796d0b40fc605755b0d68c6af693d94956283 Mon Sep 17 00:00:00 2001 From: Cameron Thornton Date: Tue, 18 Aug 2020 11:02:19 -0500 Subject: [PATCH] Make `google_sql_database_instance` recreate when going private -> public --- .../resource_sql_database_instance.go.erb | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/third_party/terraform/resources/resource_sql_database_instance.go.erb b/third_party/terraform/resources/resource_sql_database_instance.go.erb index 46dfdb24ade9..f2a42238192e 100644 --- a/third_party/terraform/resources/resource_sql_database_instance.go.erb +++ b/third_party/terraform/resources/resource_sql_database_instance.go.erb @@ -98,7 +98,8 @@ func resourceSqlDatabaseInstance() *schema.Resource { }, CustomizeDiff: customdiff.All( - customdiff.ForceNewIfChange("settings.0.disk_size", isDiskShrinkage)), + customdiff.ForceNewIfChange("settings.0.disk_size", isDiskShrinkage), + privateNetworkCustomizeDiff), Schema: map[string]*schema.Schema{ "region": { @@ -615,6 +616,18 @@ func isFirstGen(d *schema.ResourceData) bool { return !regexp.MustCompile("db*").Match([]byte(tier)) } +// Makes private_network ForceNew if it is changing from set to nil. The API returns an error +// if this change is attempted in-place. +func privateNetworkCustomizeDiff(d *schema.ResourceDiff, meta interface{}) error { + old, new := d.GetChange("settings.0.ip_configuration.0.private_network") + + if old != "" && new == "" { + d.ForceNew("settings.0.ip_configuration.0.private_network") + } + + return nil +} + func resourceSqlDatabaseInstanceCreate(d *schema.ResourceData, meta interface{}) error { config := meta.(*Config)