| // +build acceptance compute defsecrules | 
 |  | 
 | package v2 | 
 |  | 
 | import ( | 
 | 	"testing" | 
 |  | 
 | 	"github.com/rackspace/gophercloud" | 
 | 	"github.com/rackspace/gophercloud/acceptance/tools" | 
 | 	dsr "github.com/rackspace/gophercloud/openstack/compute/v2/extensions/defsecrules" | 
 | 	"github.com/rackspace/gophercloud/pagination" | 
 | 	th "github.com/rackspace/gophercloud/testhelper" | 
 | ) | 
 |  | 
 | func TestSecDefRules(t *testing.T) { | 
 | 	client, err := newClient() | 
 | 	th.AssertNoErr(t, err) | 
 |  | 
 | 	id := createDefRule(t, client) | 
 |  | 
 | 	listDefRules(t, client) | 
 |  | 
 | 	getDefRule(t, client, id) | 
 |  | 
 | 	deleteDefRule(t, client, id) | 
 | } | 
 |  | 
 | func createDefRule(t *testing.T, client *gophercloud.ServiceClient) string { | 
 | 	opts := dsr.CreateOpts{ | 
 | 		FromPort:   tools.RandomInt(80, 89), | 
 | 		ToPort:     tools.RandomInt(90, 99), | 
 | 		IPProtocol: "TCP", | 
 | 		CIDR:       "0.0.0.0/0", | 
 | 	} | 
 |  | 
 | 	rule, err := dsr.Create(client, opts).Extract() | 
 | 	th.AssertNoErr(t, err) | 
 |  | 
 | 	t.Logf("Created default rule %s", rule.ID) | 
 |  | 
 | 	return rule.ID | 
 | } | 
 |  | 
 | func listDefRules(t *testing.T, client *gophercloud.ServiceClient) { | 
 | 	err := dsr.List(client).EachPage(func(page pagination.Page) (bool, error) { | 
 | 		drList, err := dsr.ExtractDefaultRules(page) | 
 | 		th.AssertNoErr(t, err) | 
 |  | 
 | 		for _, dr := range drList { | 
 | 			t.Logf("Listing default rule %s: Name [%s] From Port [%s] To Port [%s] Protocol [%s]", | 
 | 				dr.ID, dr.FromPort, dr.ToPort, dr.IPProtocol) | 
 | 		} | 
 |  | 
 | 		return true, nil | 
 | 	}) | 
 |  | 
 | 	th.AssertNoErr(t, err) | 
 | } | 
 |  | 
 | func getDefRule(t *testing.T, client *gophercloud.ServiceClient, id string) { | 
 | 	rule, err := dsr.Get(client, id).Extract() | 
 | 	th.AssertNoErr(t, err) | 
 |  | 
 | 	t.Logf("Getting rule %s: %#v", id, rule) | 
 | } | 
 |  | 
 | func deleteDefRule(t *testing.T, client *gophercloud.ServiceClient, id string) { | 
 | 	err := dsr.Delete(client, id).ExtractErr() | 
 | 	th.AssertNoErr(t, err) | 
 |  | 
 | 	t.Logf("Deleted rule %s", id) | 
 | } |