Rackspace Auto Scale: Add policies Delete()
diff --git a/rackspace/autoscale/v1/policies/fixtures.go b/rackspace/autoscale/v1/policies/fixtures.go
index a66d6d1..a0ce86e 100644
--- a/rackspace/autoscale/v1/policies/fixtures.go
+++ b/rackspace/autoscale/v1/policies/fixtures.go
@@ -226,3 +226,18 @@
w.WriteHeader(http.StatusNoContent)
})
}
+
+// HandlePolicyDeleteSuccessfully sets up the test server to respond to a policies Delete request.
+func HandlePolicyDeleteSuccessfully(t *testing.T) {
+ groupID := "60b15dad-5ea1-43fa-9a12-a1d737b4da07"
+ policyID := "2b48d247-0282-4b9d-8775-5c4b67e8e649"
+
+ path := fmt.Sprintf("/groups/%s/policies/%s", groupID, policyID)
+
+ th.Mux.HandleFunc(path, func(w http.ResponseWriter, r *http.Request) {
+ th.TestMethod(t, r, "DELETE")
+ th.TestHeader(t, r, "X-Auth-Token", client.TokenID)
+
+ w.WriteHeader(http.StatusNoContent)
+ })
+}
diff --git a/rackspace/autoscale/v1/policies/requests.go b/rackspace/autoscale/v1/policies/requests.go
index 9cc6c34..1ce7b11 100644
--- a/rackspace/autoscale/v1/policies/requests.go
+++ b/rackspace/autoscale/v1/policies/requests.go
@@ -204,3 +204,15 @@
return result
}
+
+// Delete requests the given policy be permanently deleted.
+func Delete(client *gophercloud.ServiceClient, groupID, policyID string) DeleteResult {
+ var result DeleteResult
+
+ url := deleteURL(client, groupID, policyID)
+ _, result.Err = client.Delete(url, &gophercloud.RequestOpts{
+ OkCodes: []int{204},
+ })
+
+ return result
+}
diff --git a/rackspace/autoscale/v1/policies/requests_test.go b/rackspace/autoscale/v1/policies/requests_test.go
index 8ee90f3..5684595 100644
--- a/rackspace/autoscale/v1/policies/requests_test.go
+++ b/rackspace/autoscale/v1/policies/requests_test.go
@@ -129,3 +129,14 @@
th.AssertNoErr(t, err)
}
+
+func TestDelete(t *testing.T) {
+ th.SetupHTTP()
+ defer th.TeardownHTTP()
+ HandlePolicyDeleteSuccessfully(t)
+
+ client := client.ServiceClient()
+ err := Delete(client, groupID, webhookPolicyID).ExtractErr()
+
+ th.AssertNoErr(t, err)
+}
diff --git a/rackspace/autoscale/v1/policies/results.go b/rackspace/autoscale/v1/policies/results.go
index f63b1a7..20cd2ee 100644
--- a/rackspace/autoscale/v1/policies/results.go
+++ b/rackspace/autoscale/v1/policies/results.go
@@ -52,6 +52,11 @@
gophercloud.ErrResult
}
+// DeleteResult represents the result of a delete operation.
+type DeleteResult struct {
+ gophercloud.ErrResult
+}
+
// Policy represents a scaling policy.
type Policy struct {
// UUID for the policy.
diff --git a/rackspace/autoscale/v1/policies/urls.go b/rackspace/autoscale/v1/policies/urls.go
index 7203ccf..27efb3e 100644
--- a/rackspace/autoscale/v1/policies/urls.go
+++ b/rackspace/autoscale/v1/policies/urls.go
@@ -17,3 +17,7 @@
func updateURL(c *gophercloud.ServiceClient, groupID, policyID string) string {
return getURL(c, groupID, policyID)
}
+
+func deleteURL(c *gophercloud.ServiceClient, groupID, policyID string) string {
+ return getURL(c, groupID, policyID)
+}