IDs are actually integers apparently
diff --git a/openstack/compute/v2/extensions/defsecrules/fixtures.go b/openstack/compute/v2/extensions/defsecrules/fixtures.go
index 4aa7530..4fe2211 100644
--- a/openstack/compute/v2/extensions/defsecrules/fixtures.go
+++ b/openstack/compute/v2/extensions/defsecrules/fixtures.go
@@ -3,6 +3,7 @@
import (
"fmt"
"net/http"
+ "strconv"
"testing"
th "github.com/rackspace/gophercloud/testhelper"
@@ -24,7 +25,7 @@
"security_group_default_rules": [
{
"from_port": 80,
- "id": "b0e0d7dd-2ca4-49a9-ba82-c44a148b66a5",
+ "id": 1,
"ip_protocol": "TCP",
"ip_range": {
"cidr": "10.10.10.0/24"
@@ -65,16 +66,15 @@
"ip_range": {
"cidr": "10.10.12.0/24"
},
- "to_port": 80,
- "id": "b0e0d7dd-2ca4-49a9-ba82-c44a148b66a5"
+ "to_port": 80
}
}
`)
})
}
-func mockGetRuleResponse(t *testing.T, ruleID string) {
- url := rootPath + "/" + ruleID
+func mockGetRuleResponse(t *testing.T, ruleID int) {
+ url := rootPath + "/" + strconv.Itoa(ruleID)
th.Mux.HandleFunc(url, func(w http.ResponseWriter, r *http.Request) {
th.TestMethod(t, r, "GET")
th.TestHeader(t, r, "X-Auth-Token", fake.TokenID)
@@ -85,7 +85,7 @@
fmt.Fprintf(w, `
{
"security_group_default_rule": {
- "id": "b0e0d7dd-2ca4-49a9-ba82-c44a148b66a5",
+ "id": 1,
"from_port": 80,
"to_port": 80,
"ip_protocol": "TCP",
@@ -98,8 +98,8 @@
})
}
-func mockDeleteRuleResponse(t *testing.T, ruleID string) {
- url := rootPath + "/" + ruleID
+func mockDeleteRuleResponse(t *testing.T, ruleID int) {
+ url := rootPath + "/" + strconv.Itoa(ruleID)
th.Mux.HandleFunc(url, func(w http.ResponseWriter, r *http.Request) {
th.TestMethod(t, r, "DELETE")
th.TestHeader(t, r, "X-Auth-Token", fake.TokenID)
diff --git a/openstack/compute/v2/extensions/defsecrules/requests.go b/openstack/compute/v2/extensions/defsecrules/requests.go
index f324a00..d411a37 100644
--- a/openstack/compute/v2/extensions/defsecrules/requests.go
+++ b/openstack/compute/v2/extensions/defsecrules/requests.go
@@ -35,7 +35,7 @@
CIDR string `json:"cidr,omitempty"`
}
-// CreateRuleOptsBuilder builds the create rule options into a serializable format.
+// CreateOptsBuilder builds the create rule options into a serializable format.
type CreateOptsBuilder interface {
ToRuleCreateMap() (map[string]interface{}, error)
}
@@ -65,6 +65,7 @@
return map[string]interface{}{"security_group_default_rule": rule}, nil
}
+// Create is the operation responsible for creating a new default rule.
func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) CreateResult {
var result CreateResult
@@ -85,7 +86,7 @@
}
// Get will return details for a particular default rule.
-func Get(client *gophercloud.ServiceClient, id string) GetResult {
+func Get(client *gophercloud.ServiceClient, id int) GetResult {
var result GetResult
_, result.Err = perigee.Request("GET", resourceURL(client, id), perigee.Options{
@@ -98,7 +99,7 @@
}
// Delete will permanently delete a default rule from the project.
-func Delete(client *gophercloud.ServiceClient, id string) gophercloud.ErrResult {
+func Delete(client *gophercloud.ServiceClient, id int) gophercloud.ErrResult {
var result gophercloud.ErrResult
_, result.Err = perigee.Request("DELETE", resourceURL(client, id), perigee.Options{
diff --git a/openstack/compute/v2/extensions/defsecrules/requests_test.go b/openstack/compute/v2/extensions/defsecrules/requests_test.go
index bc12849..5f43b34 100644
--- a/openstack/compute/v2/extensions/defsecrules/requests_test.go
+++ b/openstack/compute/v2/extensions/defsecrules/requests_test.go
@@ -9,7 +9,7 @@
"github.com/rackspace/gophercloud/testhelper/client"
)
-const ruleID = "b0e0d7dd-2ca4-49a9-ba82-c44a148b66a5"
+const ruleID = 1
func TestList(t *testing.T) {
th.SetupHTTP()
diff --git a/openstack/compute/v2/extensions/defsecrules/results.go b/openstack/compute/v2/extensions/defsecrules/results.go
index 5f84b0e..8404b82 100644
--- a/openstack/compute/v2/extensions/defsecrules/results.go
+++ b/openstack/compute/v2/extensions/defsecrules/results.go
@@ -8,6 +8,8 @@
"github.com/rackspace/gophercloud/pagination"
)
+// DefaultRule represents a default rule - which is identical to a
+// normal security rule.
type DefaultRule secgroups.Rule
// DefaultRulePage is a single page of a DefaultRule collection.
diff --git a/openstack/compute/v2/extensions/defsecrules/urls.go b/openstack/compute/v2/extensions/defsecrules/urls.go
index cc928ab..07244f7 100644
--- a/openstack/compute/v2/extensions/defsecrules/urls.go
+++ b/openstack/compute/v2/extensions/defsecrules/urls.go
@@ -1,11 +1,15 @@
package defsecrules
-import "github.com/rackspace/gophercloud"
+import (
+ "strconv"
+
+ "github.com/rackspace/gophercloud"
+)
const rulepath = "os-security-group-default-rules"
-func resourceURL(c *gophercloud.ServiceClient, id string) string {
- return c.ServiceURL(rulepath, id)
+func resourceURL(c *gophercloud.ServiceClient, id int) string {
+ return c.ServiceURL(rulepath, strconv.Itoa(id))
}
func rootURL(c *gophercloud.ServiceClient) string {