Add acceptance test for volume reserve/unreserve
diff --git a/acceptance/openstack/blockstorage/v2/extensions/volumeactions_test.go b/acceptance/openstack/blockstorage/v2/extensions/volumeactions_test.go
index 02b51a4..ccd9422 100644
--- a/acceptance/openstack/blockstorage/v2/extensions/volumeactions_test.go
+++ b/acceptance/openstack/blockstorage/v2/extensions/volumeactions_test.go
@@ -25,7 +25,7 @@
 	})
 }
 
-func TestVolumeActions(t *testing.T) {
+func TestVolumeAttach(t *testing.T) {
 	client, err := newClient(t)
 	th.AssertNoErr(t, err)
 
@@ -44,10 +44,15 @@
 	err = volumes.WaitForStatus(client, cv.ID, "available", 60)
 	th.AssertNoErr(t, err)
 
+	instanceID := os.Getenv("OS_INSTANCE_ID")
+	if instanceID == "" {
+		t.Fatal("Environment variable OS_INSTANCE_ID is required")
+	}
+
 	_, err = volumeactions.Attach(client, cv.ID, &volumeactions.AttachOpts{
 		MountPoint:   "/mnt",
 		Mode:         "rw",
-		InstanceUUID: "50902f4f-a974-46a0-85e9-7efc5e22dfdd",
+		InstanceUUID: instanceID,
 	}).Extract()
 	th.AssertNoErr(t, err)
 
@@ -57,3 +62,35 @@
 	_, err = volumeactions.Detach(client, cv.ID).Extract()
 	th.AssertNoErr(t, err)
 }
+
+func TestVolumeReserve(t *testing.T) {
+	client, err := newClient(t)
+	th.AssertNoErr(t, err)
+
+	cv, err := volumes.Create(client, &volumes.CreateOpts{
+		Size: 1,
+		Name: "blockv2-volume",
+	}).Extract()
+	th.AssertNoErr(t, err)
+	defer func() {
+		err = volumes.WaitForStatus(client, cv.ID, "available", 60)
+		th.AssertNoErr(t, err)
+		err = volumes.Delete(client, cv.ID).ExtractErr()
+		th.AssertNoErr(t, err)
+	}()
+
+	err = volumes.WaitForStatus(client, cv.ID, "available", 60)
+	th.AssertNoErr(t, err)
+
+	_, err = volumeactions.Reserve(client, cv.ID).Extract()
+	th.AssertNoErr(t, err)
+
+	err = volumes.WaitForStatus(client, cv.ID, "attaching", 60)
+	th.AssertNoErr(t, err)
+
+	_, err = volumeactions.Unreserve(client, cv.ID).Extract()
+	th.AssertNoErr(t, err)
+
+	err = volumes.WaitForStatus(client, cv.ID, "available", 60)
+	th.AssertNoErr(t, err)
+}