Compute Acceptance Test Changes (#33)

This commit makes more changes to the compute acceptance tests:

* Makes all reusable functions exportable so other APIs can use them.
* Centralizes client initialization and environment variable checks.
diff --git a/acceptance/openstack/compute/v2/defsecrules_test.go b/acceptance/openstack/compute/v2/defsecrules_test.go
index dbee8e3..ca221be 100644
--- a/acceptance/openstack/compute/v2/defsecrules_test.go
+++ b/acceptance/openstack/compute/v2/defsecrules_test.go
@@ -5,13 +5,12 @@
 import (
 	"testing"
 
-	"github.com/gophercloud/gophercloud"
-	"github.com/gophercloud/gophercloud/acceptance/tools"
+	"github.com/gophercloud/gophercloud/acceptance/clients"
 	dsr "github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/defsecrules"
 )
 
 func TestDefSecRulesList(t *testing.T) {
-	client, err := newClient()
+	client, err := clients.NewComputeV2Client()
 	if err != nil {
 		t.Fatalf("Unable to create a compute client: %v", err)
 	}
@@ -27,79 +26,41 @@
 	}
 
 	for _, defaultRule := range allDefaultRules {
-		printDefaultRule(t, &defaultRule)
+		PrintDefaultRule(t, &defaultRule)
 	}
 }
 
 func TestDefSecRulesCreate(t *testing.T) {
-	client, err := newClient()
+	client, err := clients.NewComputeV2Client()
 	if err != nil {
 		t.Fatalf("Unable to create a compute client: %v", err)
 	}
 
-	defaultRule, err := createDefaultRule(t, client)
+	defaultRule, err := CreateDefaultRule(t, client)
 	if err != nil {
 		t.Fatalf("Unable to create default rule: %v", err)
 	}
-	defer deleteDefaultRule(t, client, defaultRule)
+	defer DeleteDefaultRule(t, client, defaultRule)
 
-	printDefaultRule(t, &defaultRule)
+	PrintDefaultRule(t, &defaultRule)
 }
 
 func TestDefSecRulesGet(t *testing.T) {
-	client, err := newClient()
+	client, err := clients.NewComputeV2Client()
 	if err != nil {
 		t.Fatalf("Unable to create a compute client: %v", err)
 	}
 
-	defaultRule, err := createDefaultRule(t, client)
+	defaultRule, err := CreateDefaultRule(t, client)
 	if err != nil {
 		t.Fatalf("Unable to create default rule: %v", err)
 	}
-	defer deleteDefaultRule(t, client, defaultRule)
+	defer DeleteDefaultRule(t, client, defaultRule)
 
 	newDefaultRule, err := dsr.Get(client, defaultRule.ID).Extract()
 	if err != nil {
 		t.Fatalf("Unable to get default rule %s: %v", defaultRule.ID, err)
 	}
 
-	printDefaultRule(t, newDefaultRule)
-}
-
-func createDefaultRule(t *testing.T, client *gophercloud.ServiceClient) (dsr.DefaultRule, error) {
-	createOpts := dsr.CreateOpts{
-		FromPort:   tools.RandomInt(80, 89),
-		ToPort:     tools.RandomInt(90, 99),
-		IPProtocol: "TCP",
-		CIDR:       "0.0.0.0/0",
-	}
-
-	defaultRule, err := dsr.Create(client, createOpts).Extract()
-	if err != nil {
-		return *defaultRule, err
-	}
-
-	t.Logf("Created default rule: %s", defaultRule.ID)
-
-	return *defaultRule, nil
-}
-
-func deleteDefaultRule(t *testing.T, client *gophercloud.ServiceClient, defaultRule dsr.DefaultRule) {
-	err := dsr.Delete(client, defaultRule.ID).ExtractErr()
-	if err != nil {
-		t.Fatalf("Unable to delete default rule %s: %v", defaultRule.ID, err)
-	}
-
-	t.Logf("Deleted default rule: %s", defaultRule.ID)
-}
-
-func printDefaultRule(t *testing.T, defaultRule *dsr.DefaultRule) {
-	t.Logf("\tID: %s", defaultRule.ID)
-	t.Logf("\tFrom Port: %d", defaultRule.FromPort)
-	t.Logf("\tTo Port: %d", defaultRule.ToPort)
-	t.Logf("\tIP Protocol: %s", defaultRule.IPProtocol)
-	t.Logf("\tIP Range: %s", defaultRule.IPRange.CIDR)
-	t.Logf("\tParent Group ID: %s", defaultRule.ParentGroupID)
-	t.Logf("\tGroup Tenant ID: %s", defaultRule.Group.TenantID)
-	t.Logf("\tGroup Name: %s", defaultRule.Group.Name)
+	PrintDefaultRule(t, newDefaultRule)
 }