diff --git a/acceptance/openstack/blockstorage/v2/extensions/volumeactions_test.go b/acceptance/openstack/blockstorage/v2/extensions/volumeactions_test.go
index ccd9422..e01967b 100644
--- a/acceptance/openstack/blockstorage/v2/extensions/volumeactions_test.go
+++ b/acceptance/openstack/blockstorage/v2/extensions/volumeactions_test.go
@@ -29,14 +29,18 @@
 	client, err := newClient(t)
 	th.AssertNoErr(t, err)
 
+	t.Logf("Creating volume")
 	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)
+
+		t.Logf("Deleting volume")
 		err = volumes.Delete(client, cv.ID).ExtractErr()
 		th.AssertNoErr(t, err)
 	}()
@@ -49,17 +53,19 @@
 		t.Fatal("Environment variable OS_INSTANCE_ID is required")
 	}
 
-	_, err = volumeactions.Attach(client, cv.ID, &volumeactions.AttachOpts{
+	t.Logf("Attaching volume")
+	err = volumeactions.Attach(client, cv.ID, &volumeactions.AttachOpts{
 		MountPoint:   "/mnt",
 		Mode:         "rw",
 		InstanceUUID: instanceID,
-	}).Extract()
+	}).ExtractErr()
 	th.AssertNoErr(t, err)
 
 	err = volumes.WaitForStatus(client, cv.ID, "in-use", 60)
 	th.AssertNoErr(t, err)
 
-	_, err = volumeactions.Detach(client, cv.ID).Extract()
+	t.Logf("Detaching volume")
+	err = volumeactions.Detach(client, cv.ID).ExtractErr()
 	th.AssertNoErr(t, err)
 }
 
@@ -67,14 +73,18 @@
 	client, err := newClient(t)
 	th.AssertNoErr(t, err)
 
+	t.Logf("Creating volume")
 	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)
+
+		t.Logf("Deleting volume")
 		err = volumes.Delete(client, cv.ID).ExtractErr()
 		th.AssertNoErr(t, err)
 	}()
@@ -82,15 +92,58 @@
 	err = volumes.WaitForStatus(client, cv.ID, "available", 60)
 	th.AssertNoErr(t, err)
 
-	_, err = volumeactions.Reserve(client, cv.ID).Extract()
+	t.Logf("Reserving volume")
+	err = volumeactions.Reserve(client, cv.ID).ExtractErr()
 	th.AssertNoErr(t, err)
 
 	err = volumes.WaitForStatus(client, cv.ID, "attaching", 60)
 	th.AssertNoErr(t, err)
 
-	_, err = volumeactions.Unreserve(client, cv.ID).Extract()
+	t.Logf("Unreserving volume")
+	err = volumeactions.Unreserve(client, cv.ID).ExtractErr()
 	th.AssertNoErr(t, err)
 
 	err = volumes.WaitForStatus(client, cv.ID, "available", 60)
 	th.AssertNoErr(t, err)
 }
+
+func TestVolumeConns(t *testing.T) {
+	client, err := newClient(t)
+	th.AssertNoErr(t, err)
+
+	t.Logf("Creating volume")
+	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)
+
+		t.Logf("Deleting volume")
+		err = volumes.Delete(client, cv.ID).ExtractErr()
+		th.AssertNoErr(t, err)
+	}()
+
+	err = volumes.WaitForStatus(client, cv.ID, "available", 60)
+	th.AssertNoErr(t, err)
+
+	connOpts := &volumeactions.ConnectorOpts{
+		IP:        "127.0.0.1",
+		Host:      "stack",
+		Initiator: "iqn.1994-05.com.redhat:17cf566367d2",
+		Multipath: false,
+		Platform:  "x86_64",
+		OSType:    "linux2",
+	}
+
+	t.Logf("Initializing connection")
+	_, err = volumeactions.InitializeConnection(client, cv.ID, connOpts).Extract()
+	th.AssertNoErr(t, err)
+
+	t.Logf("Terminating connection")
+	err = volumeactions.TerminateConnection(client, cv.ID, connOpts).ExtractErr()
+	th.AssertNoErr(t, err)
+}
diff --git a/openstack/blockstorage/v2/extensions/volumeactions/requests.go b/openstack/blockstorage/v2/extensions/volumeactions/requests.go
index 515fe68..842a659 100644
--- a/openstack/blockstorage/v2/extensions/volumeactions/requests.go
+++ b/openstack/blockstorage/v2/extensions/volumeactions/requests.go
@@ -62,7 +62,7 @@
 		return res
 	}
 
-	_, res.Err = client.Post(attachURL(client, id), reqBody, &res.Body, &gophercloud.RequestOpts{
+	_, res.Err = client.Post(attachURL(client, id), reqBody, nil, &gophercloud.RequestOpts{
 		OkCodes: []int{202},
 	})
 
@@ -76,7 +76,7 @@
 	v := make(map[string]interface{})
 	reqBody := map[string]interface{}{"os-detach": v}
 
-	_, res.Err = client.Post(detachURL(client, id), reqBody, &res.Body, &gophercloud.RequestOpts{
+	_, res.Err = client.Post(detachURL(client, id), reqBody, nil, &gophercloud.RequestOpts{
 		OkCodes: []int{202},
 	})
 
@@ -90,7 +90,7 @@
 	v := make(map[string]interface{})
 	reqBody := map[string]interface{}{"os-reserve": v}
 
-	_, res.Err = client.Post(reserveURL(client, id), reqBody, &res.Body, &gophercloud.RequestOpts{
+	_, res.Err = client.Post(reserveURL(client, id), reqBody, nil, &gophercloud.RequestOpts{
 		OkCodes: []int{200, 201, 202},
 	})
 
@@ -104,7 +104,7 @@
 	v := make(map[string]interface{})
 	reqBody := map[string]interface{}{"os-unreserve": v}
 
-	_, res.Err = client.Post(unreserveURL(client, id), reqBody, &res.Body, &gophercloud.RequestOpts{
+	_, res.Err = client.Post(unreserveURL(client, id), reqBody, nil, &gophercloud.RequestOpts{
 		OkCodes: []int{200, 201, 202},
 	})
 
@@ -193,8 +193,8 @@
 
 	reqBody := map[string]interface{}{"os-terminate_connection": connctorMap}
 
-	_, res.Err = client.Post(teminateConnectionURL(client, id), reqBody, &res.Body, &gophercloud.RequestOpts{
-		OkCodes: []int{200, 201, 202},
+	_, res.Err = client.Post(teminateConnectionURL(client, id), reqBody, nil, &gophercloud.RequestOpts{
+		OkCodes: []int{202},
 	})
 
 	return res
diff --git a/openstack/blockstorage/v2/extensions/volumeactions/results.go b/openstack/blockstorage/v2/extensions/volumeactions/results.go
index c767307..65778e5 100644
--- a/openstack/blockstorage/v2/extensions/volumeactions/results.go
+++ b/openstack/blockstorage/v2/extensions/volumeactions/results.go
@@ -11,22 +11,22 @@
 
 // AttachResult contains the response body and error from a Get request.
 type AttachResult struct {
-	commonResult
+	gophercloud.ErrResult
 }
 
 // DetachResult contains the response body and error from a Get request.
 type DetachResult struct {
-	commonResult
+	gophercloud.ErrResult
 }
 
 // ReserveResult contains the response body and error from a Get request.
 type ReserveResult struct {
-	commonResult
+	gophercloud.ErrResult
 }
 
 // UnreserveResult contains the response body and error from a Get request.
 type UnreserveResult struct {
-	commonResult
+	gophercloud.ErrResult
 }
 
 // InitializeConnectionResult contains the response body and error from a Get request.
@@ -36,7 +36,7 @@
 
 // TerminateConnectionResult contains the response body and error from a Get request.
 type TerminateConnectionResult struct {
-	commonResult
+	gophercloud.ErrResult
 }
 
 // Extract will get the Volume object out of the commonResult object.
@@ -46,7 +46,6 @@
 	}
 
 	var res map[string]interface{}
-
 	err := mapstructure.Decode(r.Body, &res)
 
 	return res, err
