Add Datastore type to Backup struct
diff --git a/rackspace/db/v1/backups/fixtures.go b/rackspace/db/v1/backups/fixtures.go
index 92b9c08..a1012aa 100644
--- a/rackspace/db/v1/backups/fixtures.go
+++ b/rackspace/db/v1/backups/fixtures.go
@@ -9,6 +9,28 @@
"github.com/rackspace/gophercloud/testhelper/client"
)
+var singleBackup = `
+{
+ "backup": {
+ "created": "2014-02-13T21:47:16",
+ "description": "My Backup",
+ "id": "61f12fef-edb1-4561-8122-e7c00ef26a82",
+ "instance_id": "d4603f69-ec7e-4e9b-803f-600b9205576f",
+ "locationRef": null,
+ "name": "snapshot",
+ "parent_id": null,
+ "size": 100,
+ "status": "NEW",
+ "datastore": {
+ "version": "5.1",
+ "type": "MySQL",
+ "version_id": "20000000-0000-0000-0000-000000000002"
+ },
+ "updated": "2014-02-13T21:47:16"
+ }
+}
+`
+
func SetupHandler(t *testing.T, url, method, requestBody, responseBody string, status int) {
th.Mux.HandleFunc(url, func(w http.ResponseWriter, r *http.Request) {
th.TestMethod(t, r, method)
@@ -41,24 +63,7 @@
}
`
- responseJSON := `
-{
- "backup": {
- "created": "2014-02-13T21:47:16",
- "description": "My Backup",
- "id": "61f12fef-edb1-4561-8122-e7c00ef26a82",
- "instance_id": "d4603f69-ec7e-4e9b-803f-600b9205576f",
- "locationRef": null,
- "name": "snapshot",
- "parent_id": null,
- "size": 100,
- "status": "NEW",
- "updated": "2014-02-13T21:47:16"
- }
-}
-`
-
- SetupHandler(t, "/backups", "POST", requestJSON, responseJSON, 202)
+ SetupHandler(t, "/backups", "POST", requestJSON, singleBackup, 202)
}
func HandleListSuccessfully(t *testing.T) {
@@ -69,7 +74,11 @@
"status": "COMPLETED",
"updated": "2014-06-18T21:24:39",
"description": "Backup from Restored Instance",
-
+ "datastore": {
+ "version": "5.1",
+ "type": "MySQL",
+ "version_id": "20000000-0000-0000-0000-000000000002"
+ },
"id": "87972694-4be2-40f5-83f8-501656e0032a",
"size": 0.141026,
"name": "restored_backup",
@@ -84,3 +93,11 @@
SetupHandler(t, "/backups", "GET", "", responseJSON, 200)
}
+
+func HandleGetSuccessfully(t *testing.T, backupID string) {
+ SetupHandler(t, "/backups/"+backupID, "GET", "", singleBackup, 200)
+}
+
+func HandleDeleteSuccessfully(t *testing.T, backupID string) {
+ SetupHandler(t, "/backups/"+backupID, "DELETE", "", "", 202)
+}
diff --git a/rackspace/db/v1/backups/requests_test.go b/rackspace/db/v1/backups/requests_test.go
index 3f7681c..14eacc1 100644
--- a/rackspace/db/v1/backups/requests_test.go
+++ b/rackspace/db/v1/backups/requests_test.go
@@ -8,7 +8,7 @@
fake "github.com/rackspace/gophercloud/testhelper/client"
)
-//const instanceID = "{instanceID}"
+const backupID = "61f12fef-edb1-4561-8122-e7c00ef26a82"
func TestCreate(t *testing.T) {
th.SetupHTTP()
@@ -36,6 +36,7 @@
Size: 100,
Status: "NEW",
Updated: "2014-02-13T21:47:16",
+ Datastore: Datastore{Version: "5.1", Type: "MySQL", VersionID: "20000000-0000-0000-0000-000000000002"},
}
th.AssertDeepEquals(t, expected, instance)
@@ -66,6 +67,7 @@
Size: 0.141026,
Status: "COMPLETED",
Updated: "2014-06-18T21:24:39",
+ Datastore: Datastore{Version: "5.1", Type: "MySQL", VersionID: "20000000-0000-0000-0000-000000000002"},
},
}
@@ -78,3 +80,39 @@
t.Errorf("Expected 1 page, got %d", count)
}
}
+
+func TestGet(t *testing.T) {
+ th.SetupHTTP()
+ defer th.TeardownHTTP()
+
+ HandleGetSuccessfully(t, backupID)
+
+ instance, err := Get(fake.ServiceClient(), backupID).Extract()
+ th.AssertNoErr(t, err)
+
+ expected := &Backup{
+ Created: "2014-02-13T21:47:16",
+ Description: "My Backup",
+ ID: "61f12fef-edb1-4561-8122-e7c00ef26a82",
+ InstanceID: "d4603f69-ec7e-4e9b-803f-600b9205576f",
+ LocationRef: "",
+ Name: "snapshot",
+ ParentID: "",
+ Size: 100,
+ Status: "NEW",
+ Updated: "2014-02-13T21:47:16",
+ Datastore: Datastore{Version: "5.1", Type: "MySQL", VersionID: "20000000-0000-0000-0000-000000000002"},
+ }
+
+ th.AssertDeepEquals(t, expected, instance)
+}
+
+func TestDelete(t *testing.T) {
+ th.SetupHTTP()
+ defer th.TeardownHTTP()
+
+ HandleDeleteSuccessfully(t, backupID)
+
+ err := Delete(fake.ServiceClient(), backupID).ExtractErr()
+ th.AssertNoErr(t, err)
+}
diff --git a/rackspace/db/v1/backups/results.go b/rackspace/db/v1/backups/results.go
index 16a3e66..89f1fc6 100644
--- a/rackspace/db/v1/backups/results.go
+++ b/rackspace/db/v1/backups/results.go
@@ -6,6 +6,12 @@
"github.com/rackspace/gophercloud/pagination"
)
+type Datastore struct {
+ Version string
+ Type string
+ VersionID string `json:"version_id" mapstructure:"version_id"`
+}
+
type Backup struct {
Description string
ID string
@@ -17,6 +23,7 @@
Status string
Created string
Updated string
+ Datastore Datastore
}
type CreateResult struct {