From 7a84ea845db899721cda9a42a097512d35832a88 Mon Sep 17 00:00:00 2001 From: conzetti Date: Tue, 10 Apr 2018 18:17:42 -0400 Subject: [PATCH] Add timeouts for SQL database resource (#1318) This simply adds the specification for operation timeouts, and sets sane defaults. In testing against specific regions, creation of SQL databases would fluctuate between 7-14 minutes against us-east1. As such, a 15m creation threshold is recommended for this. Update and Delete operations will adhere to 10m timeouts. This follows a similar format as #1309. --- google/resource_sql_database.go | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/google/resource_sql_database.go b/google/resource_sql_database.go index 3832af0a..49c4f4d3 100644 --- a/google/resource_sql_database.go +++ b/google/resource_sql_database.go @@ -3,6 +3,7 @@ package google import ( "fmt" "strings" + "time" "github.com/hashicorp/terraform/helper/schema" @@ -56,6 +57,11 @@ func resourceSqlDatabase() *schema.Resource { Computed: true, }, }, + Timeouts: &schema.ResourceTimeout{ + Create: schema.DefaultTimeout(15 * time.Minute), + Update: schema.DefaultTimeout(10 * time.Minute), + Delete: schema.DefaultTimeout(10 * time.Minute), + }, } } @@ -89,7 +95,7 @@ func resourceSqlDatabaseCreate(d *schema.ResourceData, meta interface{}) error { instance_name, err) } - err = sqladminOperationWait(config, op, project, "Insert Database") + err = sqladminOperationWaitTime(config, op, project, "Insert Database", int(d.Timeout(schema.TimeoutCreate).Minutes())) if err != nil { return fmt.Errorf("Error, failure waiting for insertion of %s "+ @@ -164,7 +170,7 @@ func resourceSqlDatabaseUpdate(d *schema.ResourceData, meta interface{}) error { instance_name, err) } - err = sqladminOperationWait(config, op, project, "Update Database") + err = sqladminOperationWaitTime(config, op, project, "Update Database", int(d.Timeout(schema.TimeoutUpdate).Minutes())) if err != nil { return fmt.Errorf("Error, failure waiting for update of %s "+ @@ -196,7 +202,7 @@ func resourceSqlDatabaseDelete(d *schema.ResourceData, meta interface{}) error { instance_name, err) } - err = sqladminOperationWait(config, op, project, "Delete Database") + err = sqladminOperationWaitTime(config, op, project, "Delete Database", int(d.Timeout(schema.TimeoutDelete).Minutes())) if err != nil { return fmt.Errorf("Error, failure waiting for deletion of %s "+