5
5
"log"
6
6
"regexp"
7
7
"strings"
8
+ "time"
8
9
9
10
"github.com/hashicorp/terraform/helper/schema"
10
11
"google.golang.org/api/compute/v1"
@@ -29,6 +30,12 @@ func resourceComputeDisk() *schema.Resource {
29
30
State : schema .ImportStatePassthrough ,
30
31
},
31
32
33
+ Timeouts : & schema.ResourceTimeout {
34
+ Create : schema .DefaultTimeout (5 * time .Minute ),
35
+ Update : schema .DefaultTimeout (5 * time .Minute ),
36
+ Delete : schema .DefaultTimeout (5 * time .Minute ),
37
+ },
38
+
32
39
Schema : map [string ]* schema.Schema {
33
40
"name" : & schema.Schema {
34
41
Type : schema .TypeString ,
@@ -199,7 +206,7 @@ func resourceComputeDiskCreate(d *schema.ResourceData, meta interface{}) error {
199
206
// It probably maybe worked, so store the ID now
200
207
d .SetId (disk .Name )
201
208
202
- err = computeOperationWait (config .clientCompute , op , project , "Creating Disk" )
209
+ err = computeOperationWaitTime (config .clientCompute , op , project , "Creating Disk" , int ( d . Timeout ( schema . TimeoutCreate ). Minutes ()) )
203
210
if err != nil {
204
211
return err
205
212
}
@@ -225,7 +232,7 @@ func resourceComputeDiskUpdate(d *schema.ResourceData, meta interface{}) error {
225
232
}
226
233
d .SetPartial ("size" )
227
234
228
- err = computeOperationWait (config .clientCompute , op , project , "Resizing Disk" )
235
+ err = computeOperationWaitTime (config .clientCompute , op , project , "Resizing Disk" , int ( d . Timeout ( schema . TimeoutUpdate ). Minutes ()) )
229
236
if err != nil {
230
237
return err
231
238
}
@@ -243,7 +250,7 @@ func resourceComputeDiskUpdate(d *schema.ResourceData, meta interface{}) error {
243
250
}
244
251
d .SetPartial ("labels" )
245
252
246
- err = computeOperationWait (config .clientCompute , op , project , "Setting labels on disk" )
253
+ err = computeOperationWaitTime (config .clientCompute , op , project , "Setting labels on disk" , int ( d . Timeout ( schema . TimeoutUpdate ). Minutes ()) )
247
254
if err != nil {
248
255
return err
249
256
}
@@ -378,7 +385,7 @@ func resourceComputeDiskDelete(d *schema.ResourceData, meta interface{}) error {
378
385
return fmt .Errorf ("Error deleting disk: %s" , err )
379
386
}
380
387
381
- err = computeOperationWait (config .clientCompute , op , project , "Deleting Disk" )
388
+ err = computeOperationWaitTime (config .clientCompute , op , project , "Deleting Disk" , int ( d . Timeout ( schema . TimeoutDelete ). Minutes ()) )
382
389
if err != nil {
383
390
return err
384
391
}
0 commit comments