Adding batch delete LBs
diff --git a/rackspace/lb/lb/fixtures.go b/rackspace/lb/lb/fixtures.go
index 36a5500..5fbdee9 100644
--- a/rackspace/lb/lb/fixtures.go
+++ b/rackspace/lb/lb/fixtures.go
@@ -134,3 +134,11 @@
`)
})
}
+
+func mockDeleteLBResponse(t *testing.T) {
+ th.Mux.HandleFunc("/loadbalancers", func(w http.ResponseWriter, r *http.Request) {
+ th.TestMethod(t, r, "DELETE")
+ th.TestHeader(t, r, "X-Auth-Token", fake.TokenID)
+ w.WriteHeader(http.StatusAccepted)
+ })
+}
diff --git a/rackspace/lb/lb/requests.go b/rackspace/lb/lb/requests.go
index 2acab8a..e2c5a01 100644
--- a/rackspace/lb/lb/requests.go
+++ b/rackspace/lb/lb/requests.go
@@ -2,6 +2,7 @@
import (
"errors"
+ "strconv"
"github.com/racker/perigee"
@@ -225,3 +226,24 @@
return res
}
+
+func BulkDelete(c *gophercloud.ServiceClient, ids []int) DeleteResult {
+ var res DeleteResult
+
+ url := rootURL(c)
+ for k, v := range ids {
+ if k == 0 {
+ url += "?"
+ } else {
+ url += "&"
+ }
+ url += "id=" + strconv.Itoa(v)
+ }
+
+ _, res.Err = perigee.Request("DELETE", url, perigee.Options{
+ MoreHeaders: c.AuthenticatedHeaders(),
+ OkCodes: []int{202},
+ })
+
+ return res
+}
diff --git a/rackspace/lb/lb/requests_test.go b/rackspace/lb/lb/requests_test.go
index fc5b068..2f4572f 100644
--- a/rackspace/lb/lb/requests_test.go
+++ b/rackspace/lb/lb/requests_test.go
@@ -115,3 +115,13 @@
th.AssertDeepEquals(t, expected, lb)
}
+
+func TestBulkDelete(t *testing.T) {
+ th.SetupHTTP()
+ defer th.TeardownHTTP()
+
+ mockDeleteLBResponse(t)
+
+ err := BulkDelete(client.ServiceClient(), []int{12345, 67890}).ExtractErr()
+ th.AssertNoErr(t, err)
+}
diff --git a/rackspace/lb/lb/results.go b/rackspace/lb/lb/results.go
index 7b2d4a8..45c32c5 100644
--- a/rackspace/lb/lb/results.go
+++ b/rackspace/lb/lb/results.go
@@ -213,3 +213,7 @@
type CreateResult struct {
commonResult
}
+
+type DeleteResult struct {
+ gophercloud.ErrResult
+}