Finalizing acceptance tests for subnets
diff --git a/acceptance/openstack/networking/v2/subnet_test.go b/acceptance/openstack/networking/v2/subnet_test.go
index 197568e..b84fa2c 100644
--- a/acceptance/openstack/networking/v2/subnet_test.go
+++ b/acceptance/openstack/networking/v2/subnet_test.go
@@ -2,24 +2,85 @@
package v2
-import "testing"
+import (
+ "testing"
+
+ "github.com/rackspace/gophercloud/openstack/networking/v2/networks"
+ "github.com/rackspace/gophercloud/openstack/networking/v2/subnets"
+ "github.com/rackspace/gophercloud/pagination"
+ th "github.com/rackspace/gophercloud/testhelper"
+)
func TestList(t *testing.T) {
+ Setup(t)
+ defer Teardown()
+ pager := subnets.List(Client, subnets.ListOpts{Limit: 2})
+ err := pager.EachPage(func(page pagination.Page) (bool, error) {
+ t.Logf("--- Page ---")
+
+ subnets, err := subnets.ExtractSubnets(page)
+ th.AssertNoErr(t, err)
+
+ for _, s := range subnets {
+ t.Logf("Subnet: ID [%s] Name [%s] IP Version [%d] CIDR [%s] GatewayIP [%s]",
+ s.ID, s.Name, s.IPVersion, s.CIDR, s.GatewayIP)
+ }
+
+ return true, nil
+ })
+ th.CheckNoErr(t, err)
}
func TestCRUD(t *testing.T) {
- // Create network
+ Setup(t)
+ defer Teardown()
+
+ // Setup network
+ t.Log("Setting up network")
+ res, err := networks.Create(Client, networks.NetworkOpts{Name: "tmp_network", AdminStateUp: true})
+ th.AssertNoErr(t, err)
+ networkID := res.ID
+ defer networks.Delete(Client, networkID)
// Create subnet
+ t.Log("Create subnet")
+ enable := false
+ opts := subnets.SubnetOpts{
+ NetworkID: networkID,
+ CIDR: "192.168.199.0/24",
+ IPVersion: subnets.IPv4,
+ Name: "my_subnet",
+ EnableDHCP: &enable,
+ }
+ s, err := subnets.Create(Client, opts)
+ th.AssertNoErr(t, err)
+
+ th.AssertEquals(t, s.NetworkID, networkID)
+ th.AssertEquals(t, s.CIDR, "192.168.199.0/24")
+ th.AssertEquals(t, s.IPVersion, 4)
+ th.AssertEquals(t, s.Name, "my_subnet")
+ th.AssertEquals(t, s.EnableDHCP, false)
+ subnetID := s.ID
// Get subnet
+ t.Log("Getting subnet")
+ s, err = subnets.Get(Client, subnetID)
+ th.AssertNoErr(t, err)
+ th.AssertEquals(t, s.ID, subnetID)
// Update subnet
+ t.Log("Update subnet")
+ s, err = subnets.Update(Client, subnetID, subnets.SubnetOpts{Name: "new_subnet_name"})
+ th.AssertNoErr(t, err)
+ th.AssertEquals(t, s.Name, "new_subnet_name")
// Delete subnet
+ t.Log("Delete subnet")
+ err = subnets.Delete(Client, subnetID)
+ th.AssertNoErr(t, err)
}
func TestBatchCreate(t *testing.T) {
-
+ // todo
}
diff --git a/openstack/networking/v2/networks/requests.go b/openstack/networking/v2/networks/requests.go
index 7cb3598..5782543 100644
--- a/openstack/networking/v2/networks/requests.go
+++ b/openstack/networking/v2/networks/requests.go
@@ -169,7 +169,7 @@
MoreHeaders: c.Provider.AuthenticatedHeaders(),
ReqBody: &reqBody,
Results: &res,
- OkCodes: []int{200},
+ OkCodes: []int{200, 201},
})
if err != nil {
return nil, err
diff --git a/openstack/networking/v2/subnets/requests.go b/openstack/networking/v2/subnets/requests.go
index f10bf18..436e109 100644
--- a/openstack/networking/v2/subnets/requests.go
+++ b/openstack/networking/v2/subnets/requests.go
@@ -18,6 +18,9 @@
GatewayIP string
CIDR string
ID string
+ Limit int
+ Page string
+ PerPage string
}
func List(c *gophercloud.ServiceClient, opts ListOpts) pagination.Pager {
@@ -47,6 +50,15 @@
if opts.ID != "" {
q["id"] = opts.ID
}
+ if opts.Limit != 0 {
+ q["limit"] = strconv.Itoa(opts.Limit)
+ }
+ if opts.Page != "" {
+ q["page"] = opts.Page
+ }
+ if opts.PerPage != "" {
+ q["per_page"] = opts.PerPage
+ }
u := ListURL(c) + utils.BuildQuery(q)
return pagination.NewPager(c, u, func(r pagination.LastHTTPResponse) pagination.Page {
@@ -202,7 +214,7 @@
MoreHeaders: c.Provider.AuthenticatedHeaders(),
ReqBody: &reqBody,
Results: &res,
- OkCodes: []int{201},
+ OkCodes: []int{200, 201},
})
if err != nil {
return nil, err