diff --git a/.changelog/6836.txt b/.changelog/6836.txt new file mode 100644 index 00000000000..d32bde9f337 --- /dev/null +++ b/.changelog/6836.txt @@ -0,0 +1,3 @@ +```release-note:bug +sql: fix `googe_sql_database_instance` to include `backup_configuration` in initial create request +``` diff --git a/google/resource_sql_database_instance.go b/google/resource_sql_database_instance.go index 577419e72c6..722de1ab2fd 100644 --- a/google/resource_sql_database_instance.go +++ b/google/resource_sql_database_instance.go @@ -930,12 +930,12 @@ func resourceSqlDatabaseInstanceCreate(d *schema.ResourceData, meta interface{}) var patchData *sqladmin.DatabaseInstance // BinaryLogging can be enabled on replica instances but only after creation. - if instance.MasterInstanceName != "" && instance.Settings != nil && instance.Settings.BackupConfiguration != nil { - bc := instance.Settings.BackupConfiguration - instance.Settings.BackupConfiguration = nil - if bc.BinaryLogEnabled { - patchData = &sqladmin.DatabaseInstance{Settings: &sqladmin.Settings{BackupConfiguration: bc}} - } + if instance.MasterInstanceName != "" && instance.Settings != nil && instance.Settings.BackupConfiguration != nil && instance.Settings.BackupConfiguration.BinaryLogEnabled { + settingsCopy := expandSqlDatabaseInstanceSettings(s.([]interface{})) + bc := settingsCopy.BackupConfiguration + patchData = &sqladmin.DatabaseInstance{Settings: &sqladmin.Settings{BackupConfiguration: bc}} + + instance.Settings.BackupConfiguration.BinaryLogEnabled = false } var op *sqladmin.Operation diff --git a/google/resource_sql_database_instance_test.go b/google/resource_sql_database_instance_test.go index ee47d96b69c..f8587a6ed73 100644 --- a/google/resource_sql_database_instance_test.go +++ b/google/resource_sql_database_instance_test.go @@ -471,7 +471,12 @@ func TestAccSqlDatabaseInstance_replica(t *testing.T) { Steps: []resource.TestStep{ { Config: fmt.Sprintf( - testGoogleSqlDatabaseInstance_replica, databaseID, databaseID, databaseID), + testGoogleSqlDatabaseInstance_replica, databaseID, databaseID, databaseID, "true"), + ExpectError: regexp.MustCompile("Error, failed to create instance tf-lw-\\d+-2: googleapi: Error 400: Invalid request: Invalid flag for instance role: Backups cannot be enabled for read replica instance.., invalid"), + }, + { + Config: fmt.Sprintf( + testGoogleSqlDatabaseInstance_replica, databaseID, databaseID, databaseID, "false"), }, { ResourceName: "google_sql_database_instance.instance_master", @@ -1985,9 +1990,10 @@ resource "google_sql_database_instance" "replica1" { settings { tier = "db-n1-standard-1" - backup_configuration { + backup_configuration { + enabled = false binary_log_enabled = true - } + } } master_instance_name = google_sql_database_instance.instance_master.name @@ -2010,6 +2016,9 @@ resource "google_sql_database_instance" "replica2" { settings { tier = "db-n1-standard-1" + backup_configuration { + enabled = %s + } } master_instance_name = google_sql_database_instance.instance_master.name