summaryrefslogtreecommitdiff
path: root/libvirt/resource_libvirt_volume.go
diff options
context:
space:
mode:
authorDuncan Mac-Vicar P <dmacvicar@suse.de>2016-03-11 23:53:15 +0100
committerDuncan Mac-Vicar P <dmacvicar@suse.de>2016-03-11 23:53:15 +0100
commit7dc8c26bd8b0d30d79e91c1568790b448e75328f (patch)
treee8aca99c80f0be418917cbe6c2b3349c8ae381b1 /libvirt/resource_libvirt_volume.go
parent503655c08b527309be26f0677d85a579b628858a (diff)
downloadterraform-provider-libvirt-7dc8c26bd8b0d30d79e91c1568790b448e75328f.tar
terraform-provider-libvirt-7dc8c26bd8b0d30d79e91c1568790b448e75328f.tar.gz
refresh the storage pool so that libvirt does not think volume is used
Diffstat (limited to 'libvirt/resource_libvirt_volume.go')
-rw-r--r--libvirt/resource_libvirt_volume.go19
1 files changed, 19 insertions, 0 deletions
diff --git a/libvirt/resource_libvirt_volume.go b/libvirt/resource_libvirt_volume.go
index 77561413..7f8b874a 100644
--- a/libvirt/resource_libvirt_volume.go
+++ b/libvirt/resource_libvirt_volume.go
@@ -78,6 +78,13 @@ func resourceLibvirtVolumeCreate(d *schema.ResourceData, meta interface{}) error
return fmt.Errorf("can't find storage pool '%s'", poolName)
}
+ // Refresh the pool of the volume so that libvirt knows it is
+ // not longer in use.
+ err = pool.Refresh(0)
+ if err != nil {
+ return fmt.Errorf("Error refreshing pool for volume: %s", err)
+ }
+
volumeDef := newDefVolume()
volumeDef.Name = d.Get("name").(string)
@@ -192,6 +199,18 @@ func resourceLibvirtVolumeDelete(d *schema.ResourceData, meta interface{}) error
return fmt.Errorf("Can't retrieve volume %s", d.Id())
}
+ // Refresh the pool of the volume so that libvirt knows it is
+ // not longer in use.
+ volPool, err := volume.LookupPoolByVolume()
+ if err != nil {
+ return fmt.Errorf("Error retrieving pool for volume: %s", err)
+ }
+
+ err = volPool.Refresh(0)
+ if err != nil {
+ return fmt.Errorf("Error refreshing pool for volume: %s", err)
+ }
+
err = volume.Delete(0)
if err != nil {
return fmt.Errorf("Can't delete volume %s", d.Id())