@@ -45,7 +45,7 @@ func resourceComputeDisk() *schema.Resource {
45
45
46
46
"zone" : & schema.Schema {
47
47
Type : schema .TypeString ,
48
- Required : true ,
48
+ Optional : true ,
49
49
ForceNew : true ,
50
50
},
51
51
@@ -130,12 +130,16 @@ func resourceComputeDiskCreate(d *schema.ResourceData, meta interface{}) error {
130
130
}
131
131
132
132
// Get the zone
133
- log .Printf ("[DEBUG] Loading zone: %s" , d .Get ("zone" ).(string ))
133
+ z , err := getZone (d , config )
134
+ if err != nil {
135
+ return err
136
+ }
137
+ log .Printf ("[DEBUG] Loading zone: %s" , z )
134
138
zone , err := config .clientCompute .Zones .Get (
135
- project , d . Get ( "zone" ).( string ) ).Do ()
139
+ project , z ).Do ()
136
140
if err != nil {
137
141
return fmt .Errorf (
138
- "Error loading zone '%s': %s" , d . Get ( "zone" ).( string ) , err )
142
+ "Error loading zone '%s': %s" , z , err )
139
143
}
140
144
141
145
// Build the disk parameter
@@ -199,7 +203,7 @@ func resourceComputeDiskCreate(d *schema.ResourceData, meta interface{}) error {
199
203
}
200
204
201
205
op , err := config .clientCompute .Disks .Insert (
202
- project , d . Get ( "zone" ).( string ) , disk ).Do ()
206
+ project , z , disk ).Do ()
203
207
if err != nil {
204
208
return fmt .Errorf ("Error creating disk: %s" , err )
205
209
}
@@ -221,13 +225,17 @@ func resourceComputeDiskUpdate(d *schema.ResourceData, meta interface{}) error {
221
225
if err != nil {
222
226
return err
223
227
}
228
+ z , err := getZone (d , config )
229
+ if err != nil {
230
+ return err
231
+ }
224
232
d .Partial (true )
225
233
if d .HasChange ("size" ) {
226
234
rb := & compute.DisksResizeRequest {
227
235
SizeGb : int64 (d .Get ("size" ).(int )),
228
236
}
229
237
op , err := config .clientCompute .Disks .Resize (
230
- project , d . Get ( "zone" ).( string ) , d .Id (), rb ).Do ()
238
+ project , z , d .Id (), rb ).Do ()
231
239
if err != nil {
232
240
return fmt .Errorf ("Error resizing disk: %s" , err )
233
241
}
@@ -245,7 +253,7 @@ func resourceComputeDiskUpdate(d *schema.ResourceData, meta interface{}) error {
245
253
LabelFingerprint : d .Get ("label_fingerprint" ).(string ),
246
254
}
247
255
op , err := config .clientCompute .Disks .SetLabels (
248
- project , d . Get ( "zone" ).( string ) , d .Id (), & zslr ).Do ()
256
+ project , z , d .Id (), & zslr ).Do ()
249
257
if err != nil {
250
258
return fmt .Errorf ("Error when setting labels: %s" , err )
251
259
}
@@ -279,9 +287,9 @@ func resourceComputeDiskRead(d *schema.ResourceData, meta interface{}) error {
279
287
}
280
288
281
289
var disk * compute.Disk
282
- if zone , ok := d . GetOk ( "zone" ); ok {
290
+ if zone , _ := getZone ( d , config ); zone != "" {
283
291
disk , err = config .clientCompute .Disks .Get (
284
- project , zone .( string ) , d .Id ()).Do ()
292
+ project , zone , d .Id ()).Do ()
285
293
if err != nil {
286
294
return handleNotFoundError (err , d , fmt .Sprintf ("Disk %q" , d .Get ("name" ).(string )))
287
295
}
@@ -326,6 +334,10 @@ func resourceComputeDiskDelete(d *schema.ResourceData, meta interface{}) error {
326
334
if err != nil {
327
335
return err
328
336
}
337
+ z , err := getZone (d , config )
338
+ if err != nil {
339
+ return err
340
+ }
329
341
330
342
// if disks are attached, they must be detached before the disk can be deleted
331
343
if instances , ok := d .Get ("users" ).([]interface {}); ok {
@@ -376,7 +388,7 @@ func resourceComputeDiskDelete(d *schema.ResourceData, meta interface{}) error {
376
388
377
389
// Delete the disk
378
390
op , err := config .clientCompute .Disks .Delete (
379
- project , d . Get ( "zone" ).( string ) , d .Id ()).Do ()
391
+ project , z , d .Id ()).Do ()
380
392
if err != nil {
381
393
if gerr , ok := err .(* googleapi.Error ); ok && gerr .Code == 404 {
382
394
log .Printf ("[WARN] Removing Disk %q because it's gone" , d .Get ("name" ).(string ))
0 commit comments