get snapshot rewrite
diff --git a/acceptance/openstack/blockstorage/v1/snapshots_test.go b/acceptance/openstack/blockstorage/v1/snapshots_test.go
index 1224aa9..5038c8e 100644
--- a/acceptance/openstack/blockstorage/v1/snapshots_test.go
+++ b/acceptance/openstack/blockstorage/v1/snapshots_test.go
@@ -3,16 +3,32 @@
 package v1
 
 import (
+	"errors"
 	"strconv"
 	"testing"
-	//"time"
+	"time"
 
+	"github.com/rackspace/gophercloud"
 	"github.com/rackspace/gophercloud/openstack/blockstorage/v1/snapshots"
 	"github.com/rackspace/gophercloud/openstack/blockstorage/v1/volumes"
 )
 
-func waitForVolume(id string) {
+func waitForVolume(client *gophercloud.ServiceClient, id string) error {
+	notReady := true
+	secondsSlept := 0
+	for notReady && secondsSlept < 20 {
+		gv, err := volumes.Get(client, id).ExtractVolume()
+		if err != nil {
+			return err
+		}
+		if gv.Status == "available" {
+			return nil
+		}
+		time.Sleep(1 * time.Millisecond)
+		secondsSlept = secondsSlept + 1
+	}
 
+	return errors.New("Time out waiting for volume to become available")
 }
 
 var numSnapshots = 1
@@ -31,7 +47,10 @@
 		t.Fatalf("Failed to create volume: %v", err)
 	}
 
-	waitForVolume(cv.ID)
+	err = waitForVolume(client, cv.ID)
+	if err != nil {
+		t.Fatal(err)
+	}
 
 	var sss []*snapshots.Snapshot
 	for i := 0; i < numSnapshots; i++ {
diff --git a/openstack/blockstorage/v1/snapshots/requests.go b/openstack/blockstorage/v1/snapshots/requests.go
index b60c295..97d0521 100644
--- a/openstack/blockstorage/v1/snapshots/requests.go
+++ b/openstack/blockstorage/v1/snapshots/requests.go
@@ -55,3 +55,12 @@
 
 	return &respBody.Snapshot, nil
 }
+
+func Get(client *gophercloud.ServiceClient, id string) (GetResult, error) {
+	var gr GetResult
+	_, err := perigee.Request("GET", snapshotURL(client, id), perigee.Options{
+		Results:     &gr,
+		MoreHeaders: client.Provider.AuthenticatedHeaders(),
+	})
+	return gr, err
+}
diff --git a/openstack/blockstorage/v1/snapshots/results.go b/openstack/blockstorage/v1/snapshots/results.go
index db59b8e..440b3f8 100644
--- a/openstack/blockstorage/v1/snapshots/results.go
+++ b/openstack/blockstorage/v1/snapshots/results.go
@@ -10,3 +10,5 @@
 	Status      string
 	VolumeID    string
 }
+
+type GetResult map[string]interface{}