Moving extensions and API versions into different sub-packages; fixing test helper methods
diff --git a/openstack/networking/v2/api_versions/doc.go b/openstack/networking/v2/api_versions/doc.go
new file mode 100644
index 0000000..83c4a6a
--- /dev/null
+++ b/openstack/networking/v2/api_versions/doc.go
@@ -0,0 +1 @@
+package networks
diff --git a/openstack/networking/v2/api_versions/errors.go b/openstack/networking/v2/api_versions/errors.go
new file mode 100644
index 0000000..83c4a6a
--- /dev/null
+++ b/openstack/networking/v2/api_versions/errors.go
@@ -0,0 +1 @@
+package networks
diff --git a/openstack/networking/v2/api_versions/requests.go b/openstack/networking/v2/api_versions/requests.go
new file mode 100644
index 0000000..90e2de3
--- /dev/null
+++ b/openstack/networking/v2/api_versions/requests.go
@@ -0,0 +1,34 @@
+package networks
+
+import (
+ "github.com/racker/perigee"
+ "github.com/rackspace/gophercloud"
+)
+
+func List(c *gophercloud.ServiceClient) (*APIVersionsList, error) {
+ var resp APIVersionsList
+ _, err := perigee.Request("GET", APIVersionsURL(c), perigee.Options{
+ MoreHeaders: c.Provider.AuthenticatedHeaders(),
+ Results: &resp,
+ OkCodes: []int{200},
+ })
+ if err != nil {
+ return nil, err
+ }
+
+ return &resp, nil
+}
+
+func Get(c *gophercloud.ServiceClient, v string) (*APIInfoList, error) {
+ var resp APIInfoList
+ _, err := perigee.Request("GET", APIInfoURL(c, v), perigee.Options{
+ MoreHeaders: c.Provider.AuthenticatedHeaders(),
+ Results: &resp,
+ OkCodes: []int{200},
+ })
+ if err != nil {
+ return nil, err
+ }
+
+ return &resp, nil
+}
diff --git a/openstack/networking/v2/api_versions/requests_test.go b/openstack/networking/v2/api_versions/requests_test.go
new file mode 100644
index 0000000..cbcc8ae
--- /dev/null
+++ b/openstack/networking/v2/api_versions/requests_test.go
@@ -0,0 +1,139 @@
+package networks
+
+import (
+ "fmt"
+ "net/http"
+ "testing"
+
+ "github.com/rackspace/gophercloud"
+ th "github.com/rackspace/gophercloud/testhelper"
+)
+
+const TokenID = "123"
+
+func ServiceClient() *gophercloud.ServiceClient {
+ return &gophercloud.ServiceClient{
+ Provider: &gophercloud.ProviderClient{
+ TokenID: TokenID,
+ },
+ Endpoint: th.Endpoint(),
+ }
+}
+
+func TestList(t *testing.T) {
+ th.SetupHTTP()
+ defer th.TeardownHTTP()
+
+ th.Mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
+ th.TestMethod(t, r, "GET")
+ th.TestHeader(t, r, "X-Auth-Token", TokenID)
+
+ w.Header().Add("Content-Type", "application/json")
+ w.WriteHeader(http.StatusOK)
+
+ fmt.Fprintf(w, `
+{
+ "versions": [
+ {
+ "status": "CURRENT",
+ "id": "v2.0",
+ "links": [
+ {
+ "href": "http://23.253.228.211:9696/v2.0",
+ "rel": "self"
+ }
+ ]
+ }
+ ]
+}`)
+ })
+
+ res, err := List(ServiceClient())
+ th.AssertNoErr(t, err)
+
+ coll, err := gophercloud.AllPages(res)
+ th.AssertNoErr(t, err)
+
+ actual := ToAPIVersions(coll)
+
+ expected := []APIVersion{
+ APIVersion{
+ Status: "CURRENT",
+ ID: "v2.0",
+ },
+ }
+ th.AssertDeepEquals(t, expected, actual)
+}
+
+func TestAPIInfo(t *testing.T) {
+ th.SetupHTTP()
+ defer th.TeardownHTTP()
+
+ th.Mux.HandleFunc("/v2.0/", func(w http.ResponseWriter, r *http.Request) {
+ th.TestMethod(t, r, "GET")
+ th.TestHeader(t, r, "X-Auth-Token", TokenID)
+
+ w.Header().Add("Content-Type", "application/json")
+ w.WriteHeader(http.StatusOK)
+
+ fmt.Fprintf(w, `
+{
+ "resources": [
+ {
+ "links": [
+ {
+ "href": "http://23.253.228.211:9696/v2.0/subnets",
+ "rel": "self"
+ }
+ ],
+ "name": "subnet",
+ "collection": "subnets"
+ },
+ {
+ "links": [
+ {
+ "href": "http://23.253.228.211:9696/v2.0/networks",
+ "rel": "self"
+ }
+ ],
+ "name": "network",
+ "collection": "networks"
+ },
+ {
+ "links": [
+ {
+ "href": "http://23.253.228.211:9696/v2.0/ports",
+ "rel": "self"
+ }
+ ],
+ "name": "port",
+ "collection": "ports"
+ }
+ ]
+}
+ `)
+ })
+
+ res, err := Get(ServiceClient(), "v2.0")
+ th.AssertNoErr(t, err)
+
+ coll, err := gophercloud.AllPages(res)
+ th.AssertNoErr(t, err)
+
+ actual := ToAPIResource(coll)
+ expected := []APIResource{
+ APIResource{
+ Name: "subnet",
+ Collection: "subnets",
+ },
+ APIResource{
+ Name: "network",
+ Collection: "networks",
+ },
+ APIResource{
+ Name: "port",
+ Collection: "ports",
+ },
+ }
+ th.AssertDeepEquals(t, expected, actual)
+}
diff --git a/openstack/networking/v2/api_versions/results.go b/openstack/networking/v2/api_versions/results.go
new file mode 100644
index 0000000..159f03a
--- /dev/null
+++ b/openstack/networking/v2/api_versions/results.go
@@ -0,0 +1,11 @@
+package networks
+
+type APIVersion struct {
+ Status string
+ ID string
+}
+
+type APIResource struct {
+ Name string
+ Collection string
+}
diff --git a/openstack/networking/v2/api_versions/urls.go b/openstack/networking/v2/api_versions/urls.go
new file mode 100644
index 0000000..3f49261
--- /dev/null
+++ b/openstack/networking/v2/api_versions/urls.go
@@ -0,0 +1,15 @@
+package networks
+
+import (
+ "strings"
+
+ "github.com/rackspace/gophercloud"
+)
+
+func APIVersionsURL(c *gophercloud.ServiceClient) string {
+ return c.ServiceURL("")
+}
+
+func APIInfoURL(c *gophercloud.ServiceClient, version string) string {
+ return c.ServiceURL(strings.TrimRight(version, "/") + "/")
+}
diff --git a/openstack/networking/v2/api_versions/urls_test.go b/openstack/networking/v2/api_versions/urls_test.go
new file mode 100644
index 0000000..1ef7f81
--- /dev/null
+++ b/openstack/networking/v2/api_versions/urls_test.go
@@ -0,0 +1,26 @@
+package networks
+
+import (
+ "testing"
+
+ "github.com/rackspace/gophercloud"
+ th "github.com/rackspace/gophercloud/testhelper"
+)
+
+const Endpoint = "http://localhost:57909/"
+
+func EndpointClient() *gophercloud.ServiceClient {
+ return &gophercloud.ServiceClient{Endpoint: Endpoint}
+}
+
+func TestAPIVersionsURL(t *testing.T) {
+ actual := APIVersionsURL(EndpointClient())
+ expected := Endpoint
+ th.AssertEquals(t, expected, actual)
+}
+
+func TestAPIInfoURL(t *testing.T) {
+ actual := APIInfoURL(EndpointClient(), "v2.0")
+ expected := Endpoint + "v2.0/"
+ th.AssertEquals(t, expected, actual)
+}
diff --git a/openstack/networking/v2/extensions/doc.go b/openstack/networking/v2/extensions/doc.go
new file mode 100644
index 0000000..83c4a6a
--- /dev/null
+++ b/openstack/networking/v2/extensions/doc.go
@@ -0,0 +1 @@
+package networks
diff --git a/openstack/networking/v2/extensions/errors.go b/openstack/networking/v2/extensions/errors.go
new file mode 100644
index 0000000..83c4a6a
--- /dev/null
+++ b/openstack/networking/v2/extensions/errors.go
@@ -0,0 +1 @@
+package networks
diff --git a/openstack/networking/v2/extensions/requests.go b/openstack/networking/v2/extensions/requests.go
new file mode 100644
index 0000000..b406c51
--- /dev/null
+++ b/openstack/networking/v2/extensions/requests.go
@@ -0,0 +1,22 @@
+package networks
+
+import (
+ "github.com/racker/perigee"
+ "github.com/rackspace/gophercloud"
+)
+
+func Get(c *gophercloud.ServiceClient, name string) (*Extension, error) {
+ var ext Extension
+ _, err := perigee.Request("GET", ExtensionURL(c, name), perigee.Options{
+ MoreHeaders: c.Provider.AuthenticatedHeaders(),
+ Results: &struct {
+ Extension *Extension `json:"extension"`
+ }{&ext},
+ OkCodes: []int{200},
+ })
+
+ if err != nil {
+ return nil, err
+ }
+ return &ext, nil
+}
diff --git a/openstack/networking/v2/extensions/requests_test.go b/openstack/networking/v2/extensions/requests_test.go
new file mode 100644
index 0000000..5ae7ec6
--- /dev/null
+++ b/openstack/networking/v2/extensions/requests_test.go
@@ -0,0 +1,60 @@
+package networks
+
+import (
+ "fmt"
+ "net/http"
+ "testing"
+
+ "github.com/rackspace/gophercloud"
+ th "github.com/rackspace/gophercloud/testhelper"
+)
+
+const TokenID = "123"
+
+func ServiceClient() *gophercloud.ServiceClient {
+ return &gophercloud.ServiceClient{
+ Provider: &gophercloud.ProviderClient{
+ TokenID: TokenID,
+ },
+ Endpoint: th.Endpoint(),
+ }
+}
+
+func TestList(t *testing.T) {
+
+}
+
+func TestGet(t *testing.T) {
+ th.SetupHTTP()
+ defer th.TeardownHTTP()
+
+ th.Mux.HandleFunc("/v2.0/extension/agent", func(w http.ResponseWriter, r *http.Request) {
+ th.TestMethod(t, r, "GET")
+ th.TestHeader(t, r, "X-Auth-Token", TokenID)
+
+ w.Header().Add("Content-Type", "application/json")
+ w.WriteHeader(http.StatusOK)
+
+ fmt.Fprintf(w, `
+{
+ "extension": {
+ "updated": "2013-02-03T10:00:00-00:00",
+ "name": "agent",
+ "links": [],
+ "namespace": "http://docs.openstack.org/ext/agent/api/v2.0",
+ "alias": "agent",
+ "description": "The agent management extension."
+ }
+}
+ `)
+
+ ext, err := Get(ServiceClient(), "agent")
+ th.AssertNoErr(t, err)
+
+ th.AssertEquals(t, ext.Updated, "2013-02-03T10:00:00-00:00")
+ th.AssertEquals(t, ext.Name, "agent")
+ th.AssertEquals(t, ext.Namespace, "http://docs.openstack.org/ext/agent/api/v2.0")
+ th.AssertEquals(t, ext.Alias, "agent")
+ th.AssertEquals(t, ext.Description, "The agent management extension.")
+ })
+}
diff --git a/openstack/networking/v2/extensions/results.go b/openstack/networking/v2/extensions/results.go
new file mode 100644
index 0000000..3b21644
--- /dev/null
+++ b/openstack/networking/v2/extensions/results.go
@@ -0,0 +1,10 @@
+package networks
+
+type Extension struct {
+ Updated string `json:"updated"`
+ Name string `json:"name"`
+ Links []interface{} `json:"links"`
+ Namespace string `json:"namespace"`
+ Alias string `json:"alias"`
+ Description string `json:"description"`
+}
diff --git a/openstack/networking/v2/extensions/urls.go b/openstack/networking/v2/extensions/urls.go
new file mode 100644
index 0000000..d70dd9b
--- /dev/null
+++ b/openstack/networking/v2/extensions/urls.go
@@ -0,0 +1,9 @@
+package networks
+
+import "github.com/rackspace/gophercloud"
+
+const Version = "v2.0"
+
+func ExtensionURL(c *gophercloud.ServiceClient, name string) string {
+ return c.ServiceURL(Version, "extensions", name)
+}
diff --git a/openstack/networking/v2/extensions/urls_test.go b/openstack/networking/v2/extensions/urls_test.go
new file mode 100644
index 0000000..af01cb9
--- /dev/null
+++ b/openstack/networking/v2/extensions/urls_test.go
@@ -0,0 +1,20 @@
+package networks
+
+import (
+ "testing"
+
+ "github.com/rackspace/gophercloud"
+ th "github.com/rackspace/gophercloud/testhelper"
+)
+
+const Endpoint = "http://localhost:57909/"
+
+func EndpointClient() *gophercloud.ServiceClient {
+ return &gophercloud.ServiceClient{Endpoint: Endpoint}
+}
+
+func TestExtensionURL(t *testing.T) {
+ actual := ExtensionURL(EndpointClient(), "agent")
+ expected := Endpoint + "v2.0/extensions/agent"
+ th.AssertEquals(t, expected, actual)
+}
diff --git a/openstack/networking/v2/networks/requests.go b/openstack/networking/v2/networks/requests.go
index 9a23cc0..06b0fe7 100644
--- a/openstack/networking/v2/networks/requests.go
+++ b/openstack/networking/v2/networks/requests.go
@@ -5,48 +5,11 @@
"github.com/rackspace/gophercloud"
)
-func APIVersions(c *gophercloud.ServiceClient) (*APIVersionsList, error) {
- var resp APIVersionsList
- _, err := perigee.Request("GET", APIVersionsURL(c), perigee.Options{
- MoreHeaders: c.Provider.AuthenticatedHeaders(),
- Results: &resp,
- OkCodes: []int{200},
- })
- if err != nil {
- return nil, err
- }
-
- return &resp, nil
-}
-
-func APIInfo(c *gophercloud.ServiceClient, v string) (*APIInfoList, error) {
- var resp APIInfoList
- _, err := perigee.Request("GET", APIInfoURL(c, v), perigee.Options{
- MoreHeaders: c.Provider.AuthenticatedHeaders(),
- Results: &resp,
- OkCodes: []int{200},
- })
- if err != nil {
- return nil, err
- }
-
- return &resp, nil
-}
-
-func GetExtension(c *gophercloud.ServiceClient, name string) (*Extension, error) {
- var ext Extension
- _, err := perigee.Request("GET", ExtensionURL(c, name), perigee.Options{
- MoreHeaders: c.Provider.AuthenticatedHeaders(),
- Results: &struct {
- Extension *Extension `json:"extension"`
- }{&ext},
- OkCodes: []int{200},
- })
-
- if err != nil {
- return nil, err
- }
- return &ext, nil
+type NetworkOpts struct {
+ AdminStateUp bool
+ Name string
+ Shared *bool
+ TenantID string
}
func Get(c *gophercloud.ServiceClient, id string) (*NetworkResult, error) {
@@ -64,13 +27,6 @@
return &n, nil
}
-type NetworkOpts struct {
- AdminStateUp bool
- Name string
- Shared *bool
- TenantID string
-}
-
func Create(c *gophercloud.ServiceClient, opts NetworkOpts) (*NetworkCreateResult, error) {
// Define structures
type network struct {
diff --git a/openstack/networking/v2/networks/requests_test.go b/openstack/networking/v2/networks/requests_test.go
index c1d9c9f..6fa8222 100644
--- a/openstack/networking/v2/networks/requests_test.go
+++ b/openstack/networking/v2/networks/requests_test.go
@@ -20,166 +20,7 @@
}
}
-func TestListAPIVersions(t *testing.T) {
- th.SetupHTTP()
- defer th.TeardownHTTP()
-
- th.Mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
- th.TestMethod(t, r, "GET")
- th.TestHeader(t, r, "X-Auth-Token", TokenID)
-
- w.Header().Add("Content-Type", "application/json")
- w.WriteHeader(http.StatusOK)
-
- fmt.Fprintf(w, `
-{
- "versions": [
- {
- "status": "CURRENT",
- "id": "v2.0",
- "links": [
- {
- "href": "http://23.253.228.211:9696/v2.0",
- "rel": "self"
- }
- ]
- }
- ]
-}`)
- })
-
- c := ServiceClient()
-
- res, err := APIVersions(c)
- th.AssertNoErr(err)
-
- coll, err := gophercloud.AllPages(res)
- th.AssertNoErr(err)
-
- actual := ToAPIVersions(coll)
-
- expected := []APIVersion{
- APIVersion{
- Status: "CURRENT",
- ID: "v2.0",
- },
- }
- th.AssertDeepEquals(expected, actual)
-}
-
-func TestAPIInfo(t *testing.T) {
- th.SetupHTTP()
- defer th.TeardownHTTP()
-
- th.Mux.HandleFunc("/v2.0/", func(w http.ResponseWriter, r *http.Request) {
- th.TestMethod(t, r, "GET")
- th.TestHeader(t, r, "X-Auth-Token", TokenID)
-
- w.Header().Add("Content-Type", "application/json")
- w.WriteHeader(http.StatusOK)
-
- fmt.Fprintf(w, `
-{
- "resources": [
- {
- "links": [
- {
- "href": "http://23.253.228.211:9696/v2.0/subnets",
- "rel": "self"
- }
- ],
- "name": "subnet",
- "collection": "subnets"
- },
- {
- "links": [
- {
- "href": "http://23.253.228.211:9696/v2.0/networks",
- "rel": "self"
- }
- ],
- "name": "network",
- "collection": "networks"
- },
- {
- "links": [
- {
- "href": "http://23.253.228.211:9696/v2.0/ports",
- "rel": "self"
- }
- ],
- "name": "port",
- "collection": "ports"
- }
- ]
-}
- `)
- })
-
- res, err := APIInfo(ServiceClient(), "v2.0")
- th.AssertNoErr(err)
-
- coll, err := gophercloud.AllPages(res)
- th.AssertNoErr(err)
-
- actual := ToAPIResource(coll)
- expected := []APIResource{
- APIResource{
- Name: "subnet",
- Collection: "subnets",
- },
- APIResource{
- Name: "network",
- Collection: "networks",
- },
- APIResource{
- Name: "port",
- Collection: "ports",
- },
- }
- th.AssertDeepEquals(expected, actual)
-}
-
-func TestListingExtensions(t *testing.T) {
-
-}
-
-func TestGettingExtension(t *testing.T) {
- th.SetupHTTP()
- defer th.TeardownHTTP()
-
- th.Mux.HandleFunc("/v2.0/extension/agent", func(w http.ResponseWriter, r *http.Request) {
- th.TestMethod(t, r, "GET")
- th.TestHeader(t, r, "X-Auth-Token", TokenID)
-
- w.Header().Add("Content-Type", "application/json")
- w.WriteHeader(http.StatusOK)
-
- fmt.Fprintf(w, `
-{
- "extension": {
- "updated": "2013-02-03T10:00:00-00:00",
- "name": "agent",
- "links": [],
- "namespace": "http://docs.openstack.org/ext/agent/api/v2.0",
- "alias": "agent",
- "description": "The agent management extension."
- }
-}
- `)
-
- ext, err := GetExtension(ServiceClient(), "agent")
- th.AssertNoErr(t, err)
-
- th.AssertEquals(t, ext.Updated, "2013-02-03T10:00:00-00:00")
- th.AssertEquals(t, ext.Name, "agent")
- th.AssertEquals(t, ext.Namespace, "http://docs.openstack.org/ext/agent/api/v2.0")
- th.AssertEquals(t, ext.Alias, "agent")
- th.AssertEquals(t, ext.Description, "The agent management extension.")
- })
-}
-
-func TestGettingNetwork(t *testing.T) {
+func TestGet(t *testing.T) {
th.SetupHTTP()
defer th.TeardownHTTP()
@@ -212,7 +53,7 @@
})
n, err := Get(ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22")
- th.AssertNoErr(err)
+ th.AssertNoErr(t, err)
th.AssertEquals(t, n.Status, "ACTIVE")
th.AssertDeepEquals(t, n.Subnets, []interface{}{"54d6f61d-db07-451c-9ab3-b9609b6b6f0b"})
@@ -227,7 +68,7 @@
th.AssertEquals(t, n.ID, "d32019d3-bc6e-4319-9c1d-6722fc136a22")
}
-func TestCreateNetwork(t *testing.T) {
+func TestCreate(t *testing.T) {
th.SetupHTTP()
defer th.TeardownHTTP()
@@ -278,7 +119,7 @@
options := NetworkOpts{Name: "sample_network", AdminStateUp: true}
n, err := Create(ServiceClient(), options)
- th.AssertNoErr(err)
+ th.AssertNoErr(t, err)
th.AssertEquals(t, n.Status, "ACTIVE")
th.AssertDeepEquals(t, n.Subnets, []interface{}{})
@@ -294,7 +135,7 @@
th.AssertEquals(t, n.ID, "4e8e5957-649f-477b-9e5b-f1f75b21c03c")
}
-func TestCreateNetworkWithOptionalFields(t *testing.T) {
+func TestCreateWithOptionalFields(t *testing.T) {
th.SetupHTTP()
defer th.TeardownHTTP()
@@ -320,10 +161,10 @@
shared := true
options := NetworkOpts{Name: "sample_network", AdminStateUp: true, Shared: &shared, TenantID: "12345"}
_, err := Create(ServiceClient(), options)
- th.AssertNoErr(err)
+ th.AssertNoErr(t, err)
}
-func TestUpdateNetwork(t *testing.T) {
+func TestUpdate(t *testing.T) {
th.SetupHTTP()
defer th.TeardownHTTP()
@@ -367,7 +208,7 @@
shared := true
options := NetworkOpts{Name: "new_network_name", AdminStateUp: false, Shared: &shared}
n, err := Update(ServiceClient(), "4e8e5957-649f-477b-9e5b-f1f75b21c03c", options)
- th.AssertNoErr(err)
+ th.AssertNoErr(t, err)
th.AssertEquals(t, n.Name, "new_network_name")
th.AssertEquals(t, n.AdminStateUp, false)
@@ -375,7 +216,7 @@
th.AssertEquals(t, n.ID, "4e8e5957-649f-477b-9e5b-f1f75b21c03c")
}
-func TestDeleteNetwork(t *testing.T) {
+func TestDelete(t *testing.T) {
th.SetupHTTP()
defer th.TeardownHTTP()
@@ -386,5 +227,5 @@
})
err := Delete(ServiceClient(), "4e8e5957-649f-477b-9e5b-f1f75b21c03c")
- th.AssertNoErr(err)
+ th.AssertNoErr(t, err)
}
diff --git a/openstack/networking/v2/networks/results.go b/openstack/networking/v2/networks/results.go
index 741a959..4678793 100644
--- a/openstack/networking/v2/networks/results.go
+++ b/openstack/networking/v2/networks/results.go
@@ -1,12 +1,5 @@
package networks
-import (
- "fmt"
-
- "github.com/mitchellh/mapstructure"
- "github.com/rackspace/gophercloud"
-)
-
type NetworkProvider struct {
ProviderSegmentationID int `json:"provider:segmentation_id"`
ProviderPhysicalNetwork string `json:"provider:physical_network"`
@@ -34,108 +27,3 @@
Segments []NetworkProvider `json:"segments"`
PortSecurityEnabled bool `json:"port_security_enabled"`
}
-
-type APIVersion struct {
- Status string
- ID string
-}
-
-type APIVersionsList struct {
- gophercloud.PaginationLinks `json:"links"`
- Client *gophercloud.ServiceClient
- APIVersions []APIVersion `json:"versions"`
-}
-
-func (list APIVersionsList) Pager() gophercloud.Pager {
- return gophercloud.NewLinkPager(list)
-}
-
-func (list APIVersionsList) Concat(other gophercloud.Collection) gophercloud.Collection {
- return APIVersionsList{
- Client: list.Client,
- APIVersions: append(list.APIVersions, ToAPIVersions(other)...),
- }
-}
-
-func (list APIVersionsList) Service() *gophercloud.ServiceClient {
- return list.Client
-}
-
-func (list APIVersionsList) Links() gophercloud.PaginationLinks {
- return list.PaginationLinks
-}
-
-func (list APIVersionsList) Interpret(json interface{}) (gophercloud.LinkCollection, error) {
- mapped, ok := json.(map[string]interface{})
- if !ok {
- return nil, fmt.Errorf("Unexpected JSON response: %#v", json)
- }
-
- var result APIVersionsList
- err := mapstructure.Decode(mapped, &result)
- if err != nil {
- return nil, err
- }
- return result, nil
-}
-
-func ToAPIVersions(results gophercloud.Collection) []APIVersion {
- return results.(*APIVersionsList).APIVersions
-}
-
-type APIResource struct {
- Name string
- Collection string
-}
-
-type APIInfoList struct {
- gophercloud.PaginationLinks `json:"links"`
- Client *gophercloud.ServiceClient
- APIResources []APIResource `json:"resources"`
-}
-
-func (list APIInfoList) Pager() gophercloud.Pager {
- return gophercloud.NewLinkPager(list)
-}
-
-func (list APIInfoList) Concat(other gophercloud.Collection) gophercloud.Collection {
- return APIInfoList{
- Client: list.Client,
- APIResources: append(list.APIResources, ToAPIResource(other)...),
- }
-}
-
-func (list APIInfoList) Service() *gophercloud.ServiceClient {
- return list.Client
-}
-
-func (list APIInfoList) Links() gophercloud.PaginationLinks {
- return list.PaginationLinks
-}
-
-func (list APIInfoList) Interpret(json interface{}) (gophercloud.LinkCollection, error) {
- mapped, ok := json.(map[string]interface{})
- if !ok {
- return nil, fmt.Errorf("Unexpected JSON response: %#v", json)
- }
-
- var result APIInfoList
- err := mapstructure.Decode(mapped, &result)
- if err != nil {
- return nil, err
- }
- return result, nil
-}
-
-func ToAPIResource(results gophercloud.Collection) []APIResource {
- return results.(*APIInfoList).APIResources
-}
-
-type Extension struct {
- Updated string `json:"updated"`
- Name string `json:"name"`
- Links []interface{} `json:"links"`
- Namespace string `json:"namespace"`
- Alias string `json:"alias"`
- Description string `json:"description"`
-}
diff --git a/openstack/networking/v2/networks/urls.go b/openstack/networking/v2/networks/urls.go
index 0b0b70e..13fcc03 100644
--- a/openstack/networking/v2/networks/urls.go
+++ b/openstack/networking/v2/networks/urls.go
@@ -1,25 +1,9 @@
package networks
-import (
- "strings"
-
- "github.com/rackspace/gophercloud"
-)
+import "github.com/rackspace/gophercloud"
const Version = "v2.0"
-func APIVersionsURL(c *gophercloud.ServiceClient) string {
- return c.ServiceURL("")
-}
-
-func APIInfoURL(c *gophercloud.ServiceClient, version string) string {
- return c.ServiceURL(strings.TrimRight(version, "/") + "/")
-}
-
-func ExtensionURL(c *gophercloud.ServiceClient, name string) string {
- return c.ServiceURL(Version, "extensions", name)
-}
-
func NetworkURL(c *gophercloud.ServiceClient, id string) string {
return c.ServiceURL(Version, "networks", id)
}
diff --git a/openstack/networking/v2/networks/urls_test.go b/openstack/networking/v2/networks/urls_test.go
index 8533867..b8970a2 100644
--- a/openstack/networking/v2/networks/urls_test.go
+++ b/openstack/networking/v2/networks/urls_test.go
@@ -13,32 +13,14 @@
return &gophercloud.ServiceClient{Endpoint: Endpoint}
}
-func TestAPIVersionsURL(t *testing.T) {
- actual := APIVersionsURL(EndpointClient())
- expected := Endpoint
- th.AssertEquals(expected, actual)
-}
-
-func TestAPIInfoURL(t *testing.T) {
- actual := APIInfoURL(EndpointClient(), "v2.0")
- expected := Endpoint + "v2.0/"
- th.AssertEquals(expected, actual)
-}
-
-func TestExtensionURL(t *testing.T) {
- actual := ExtensionURL(EndpointClient(), "agent")
- expected := Endpoint + "v2.0/extensions/agent"
- th.AssertEquals(expected, actual)
-}
-
func TestNetworkURL(t *testing.T) {
actual := NetworkURL(EndpointClient(), "foo")
expected := Endpoint + "v2.0/networks/foo"
- th.AssertEquals(expected, actual)
+ th.AssertEquals(t, expected, actual)
}
func TestCreateURL(t *testing.T) {
actual := CreateURL(EndpointClient())
expected := Endpoint + "v2.0/networks"
- th.AssertEquals(expected, actual)
+ th.AssertEquals(t, expected, actual)
}