diff --git a/acceptance/openstack/networking/v2/apiversion_test.go b/acceptance/openstack/networking/v2/apiversion_test.go
index 409550c..c6f8f26 100644
--- a/acceptance/openstack/networking/v2/apiversion_test.go
+++ b/acceptance/openstack/networking/v2/apiversion_test.go
@@ -6,6 +6,7 @@
 	"testing"
 
 	"github.com/gophercloud/gophercloud/acceptance/clients"
+	"github.com/gophercloud/gophercloud/acceptance/tools"
 	"github.com/gophercloud/gophercloud/openstack/networking/v2/apiversions"
 )
 
@@ -26,7 +27,7 @@
 	}
 
 	for _, apiVersion := range allAPIVersions {
-		PrintAPIVersion(t, &apiVersion)
+		tools.PrintResource(t, apiVersion)
 	}
 }
 
@@ -47,6 +48,6 @@
 	}
 
 	for _, versionResource := range allVersionResources {
-		PrintVersionResource(t, &versionResource)
+		tools.PrintResource(t, versionResource)
 	}
 }
diff --git a/acceptance/openstack/networking/v2/extension_test.go b/acceptance/openstack/networking/v2/extension_test.go
index baade1e..5609e85 100644
--- a/acceptance/openstack/networking/v2/extension_test.go
+++ b/acceptance/openstack/networking/v2/extension_test.go
@@ -6,7 +6,7 @@
 	"testing"
 
 	"github.com/gophercloud/gophercloud/acceptance/clients"
-	"github.com/gophercloud/gophercloud/acceptance/openstack"
+	"github.com/gophercloud/gophercloud/acceptance/tools"
 	"github.com/gophercloud/gophercloud/openstack/common/extensions"
 )
 
@@ -27,7 +27,7 @@
 	}
 
 	for _, extension := range allExtensions {
-		openstack.PrintExtension(t, &extension)
+		tools.PrintResource(t, extension)
 	}
 }
 
@@ -42,5 +42,5 @@
 		t.Fatalf("Unable to get extension port-security: %v", err)
 	}
 
-	openstack.PrintExtension(t, extension)
+	tools.PrintResource(t, extension)
 }
diff --git a/acceptance/openstack/networking/v2/extensions/extensions.go b/acceptance/openstack/networking/v2/extensions/extensions.go
index f18e430..154e34e 100644
--- a/acceptance/openstack/networking/v2/extensions/extensions.go
+++ b/acceptance/openstack/networking/v2/extensions/extensions.go
@@ -6,7 +6,6 @@
 	"github.com/gophercloud/gophercloud"
 	"github.com/gophercloud/gophercloud/acceptance/tools"
 	"github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/external"
-	"github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/provider"
 	"github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/security/groups"
 	"github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/security/rules"
 	"github.com/gophercloud/gophercloud/openstack/networking/v2/networks"
@@ -137,44 +136,3 @@
 		t.Fatalf("Unable to delete security group rule: %v", err)
 	}
 }
-
-// PrintNetworkExtAttrs prints a network and all of its extra attributes.
-func PrintNetworkExtAttrs(t *testing.T, network *provider.NetworkExtAttrs) {
-	t.Logf("ID: %s", network.ID)
-	t.Logf("Name: %s", network.Name)
-	t.Logf("AdminStateUp: %t", network.AdminStateUp)
-	t.Logf("Status: %s", network.Status)
-	t.Logf("Subnets: %s", network.Subnets)
-	t.Logf("TenantID: %s", network.TenantID)
-	t.Logf("Shared: %t", network.Shared)
-	t.Logf("NetworkType: %s", network.NetworkType)
-	t.Logf("PhysicalNetwork: %s", network.PhysicalNetwork)
-	t.Logf("SegmentationID: %d", network.SegmentationID)
-}
-
-// PrintSecurityGroup will print a security group and all of its attributes.
-func PrintSecurityGroup(t *testing.T, secGroup *groups.SecGroup) {
-	t.Logf("ID: %s", secGroup.ID)
-	t.Logf("Name: %s", secGroup.Name)
-	t.Logf("Description: %s", secGroup.Description)
-	t.Logf("TenantID: %s", secGroup.TenantID)
-	t.Logf("Rules:")
-
-	for _, rule := range secGroup.Rules {
-		PrintSecurityGroupRule(t, &rule)
-	}
-}
-
-// PrintSecurityGroupRule will print a security group rule and all of its attributes.
-func PrintSecurityGroupRule(t *testing.T, rule *rules.SecGroupRule) {
-	t.Logf("ID: %s", rule.ID)
-	t.Logf("Direction: %s", rule.Direction)
-	t.Logf("EtherType: %s", rule.EtherType)
-	t.Logf("SecGroupID: %s", rule.SecGroupID)
-	t.Logf("PortRangeMin: %d", rule.PortRangeMin)
-	t.Logf("PortRangeMax: %d", rule.PortRangeMax)
-	t.Logf("Protocol: %s", rule.Protocol)
-	t.Logf("RemoteGroupID: %s", rule.RemoteGroupID)
-	t.Logf("RemoteIPPrefix: %s", rule.RemoteIPPrefix)
-	t.Logf("TenantID: %s", rule.TenantID)
-}
diff --git a/acceptance/openstack/networking/v2/extensions/fwaas/firewall_test.go b/acceptance/openstack/networking/v2/extensions/fwaas/firewall_test.go
index 0b021d3..473013b 100644
--- a/acceptance/openstack/networking/v2/extensions/fwaas/firewall_test.go
+++ b/acceptance/openstack/networking/v2/extensions/fwaas/firewall_test.go
@@ -7,6 +7,7 @@
 
 	"github.com/gophercloud/gophercloud/acceptance/clients"
 	layer3 "github.com/gophercloud/gophercloud/acceptance/openstack/networking/v2/extensions/layer3"
+	"github.com/gophercloud/gophercloud/acceptance/tools"
 	"github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/fwaas/firewalls"
 	"github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/fwaas/routerinsertion"
 )
@@ -28,7 +29,7 @@
 	}
 
 	for _, firewall := range allFirewalls {
-		PrintFirewall(t, &firewall)
+		tools.PrintResource(t, firewall)
 	}
 }
 
@@ -50,7 +51,7 @@
 	}
 	defer DeleteRule(t, client, rule.ID)
 
-	PrintRule(t, rule)
+	tools.PrintResource(t, rule)
 
 	policy, err := CreatePolicy(t, client, rule.ID)
 	if err != nil {
@@ -58,7 +59,7 @@
 	}
 	defer DeletePolicy(t, client, policy.ID)
 
-	PrintPolicy(t, policy)
+	tools.PrintResource(t, policy)
 
 	firewall, err := CreateFirewallOnRouter(t, client, policy.ID, router.ID)
 	if err != nil {
@@ -66,7 +67,7 @@
 	}
 	defer DeleteFirewall(t, client, firewall.ID)
 
-	PrintFirewall(t, firewall)
+	tools.PrintResource(t, firewall)
 
 	router2, err := layer3.CreateExternalRouter(t, client)
 	if err != nil {
@@ -94,5 +95,5 @@
 		t.Fatalf("Unable to get firewall: %v", err)
 	}
 
-	PrintFirewall(t, newFirewall)
+	tools.PrintResource(t, newFirewall)
 }
diff --git a/acceptance/openstack/networking/v2/extensions/fwaas/fwaas.go b/acceptance/openstack/networking/v2/extensions/fwaas/fwaas.go
index dd361f9..204565b 100644
--- a/acceptance/openstack/networking/v2/extensions/fwaas/fwaas.go
+++ b/acceptance/openstack/networking/v2/extensions/fwaas/fwaas.go
@@ -20,9 +20,11 @@
 
 	t.Logf("Attempting to create firewall %s", firewallName)
 
+	iTrue := true
 	createOpts := firewalls.CreateOpts{
-		Name:     firewallName,
-		PolicyID: policyID,
+		Name:         firewallName,
+		PolicyID:     policyID,
+		AdminStateUp: &iTrue,
 	}
 
 	firewall, err := firewalls.Create(client, createOpts).Extract()
@@ -177,49 +179,6 @@
 	t.Logf("Deleted rule: %s", ruleID)
 }
 
-// PrintFirewall will print a firewall and all of its attributes.
-func PrintFirewall(t *testing.T, firewall *firewalls.Firewall) {
-	t.Logf("ID: %s", firewall.ID)
-	t.Logf("Name: %s", firewall.Name)
-	t.Logf("Description: %s", firewall.Description)
-	t.Logf("AdminStateUp: %t", firewall.AdminStateUp)
-	t.Logf("Status: %s", firewall.Status)
-	t.Logf("PolicyID: %s", firewall.PolicyID)
-	t.Logf("TenantID: %s", firewall.TenantID)
-}
-
-// PrintPolicy will print a policy and all of its attributes.
-func PrintPolicy(t *testing.T, policy *policies.Policy) {
-	t.Logf("ID: %s", policy.ID)
-	t.Logf("Name: %s", policy.Name)
-	t.Logf("Description: %s", policy.Description)
-	t.Logf("TenantID: %s", policy.TenantID)
-	t.Logf("Audited: %t", policy.Audited)
-	t.Logf("Shared: %t", policy.Shared)
-	t.Logf("Rules:")
-
-	for _, rule := range policy.Rules {
-		t.Logf("Rule ID: %s", rule)
-	}
-}
-
-// PrintRule will print a rule and all of its attributes.
-func PrintRule(t *testing.T, rule *rules.Rule) {
-	t.Logf("ID: %s", rule.ID)
-	t.Logf("Name: %s", rule.Name)
-	t.Logf("Description: %s", rule.Description)
-	t.Logf("Protocol: %s", rule.Protocol)
-	t.Logf("Action: %s", rule.Action)
-	t.Logf("IPVersion: %d", rule.IPVersion)
-	t.Logf("SourceIPAddress: %s", rule.SourceIPAddress)
-	t.Logf("DestinationIPAddress: %s", rule.DestinationIPAddress)
-	t.Logf("Shared: %t", rule.Shared)
-	t.Logf("Enabled: %t", rule.Enabled)
-	t.Logf("PolicyID: %s", rule.PolicyID)
-	t.Logf("Position: %d", rule.Position)
-	t.Logf("TenantID: %s", rule.TenantID)
-}
-
 // WaitForFirewallState will wait until a firewall reaches a given state.
 func WaitForFirewallState(client *gophercloud.ServiceClient, firewallID, status string, secs int) error {
 	return gophercloud.WaitFor(secs, func() (bool, error) {
diff --git a/acceptance/openstack/networking/v2/extensions/fwaas/policy_test.go b/acceptance/openstack/networking/v2/extensions/fwaas/policy_test.go
index 9003e54..3220d82 100644
--- a/acceptance/openstack/networking/v2/extensions/fwaas/policy_test.go
+++ b/acceptance/openstack/networking/v2/extensions/fwaas/policy_test.go
@@ -6,6 +6,7 @@
 	"testing"
 
 	"github.com/gophercloud/gophercloud/acceptance/clients"
+	"github.com/gophercloud/gophercloud/acceptance/tools"
 	"github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/fwaas/policies"
 )
 
@@ -26,7 +27,7 @@
 	}
 
 	for _, policy := range allPolicies {
-		PrintPolicy(t, &policy)
+		tools.PrintResource(t, policy)
 	}
 }
 
@@ -42,7 +43,7 @@
 	}
 	defer DeleteRule(t, client, rule.ID)
 
-	PrintRule(t, rule)
+	tools.PrintResource(t, rule)
 
 	policy, err := CreatePolicy(t, client, rule.ID)
 	if err != nil {
@@ -50,7 +51,7 @@
 	}
 	defer DeletePolicy(t, client, policy.ID)
 
-	PrintPolicy(t, policy)
+	tools.PrintResource(t, policy)
 
 	updateOpts := policies.UpdateOpts{
 		Description: "Some policy description",
@@ -66,5 +67,5 @@
 		t.Fatalf("Unable to get policy: %v", err)
 	}
 
-	PrintPolicy(t, newPolicy)
+	tools.PrintResource(t, newPolicy)
 }
diff --git a/acceptance/openstack/networking/v2/extensions/fwaas/rule_test.go b/acceptance/openstack/networking/v2/extensions/fwaas/rule_test.go
index c8e67dc..4521a60 100644
--- a/acceptance/openstack/networking/v2/extensions/fwaas/rule_test.go
+++ b/acceptance/openstack/networking/v2/extensions/fwaas/rule_test.go
@@ -6,6 +6,7 @@
 	"testing"
 
 	"github.com/gophercloud/gophercloud/acceptance/clients"
+	"github.com/gophercloud/gophercloud/acceptance/tools"
 	"github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/fwaas/rules"
 )
 
@@ -26,7 +27,7 @@
 	}
 
 	for _, rule := range allRules {
-		PrintRule(t, &rule)
+		tools.PrintResource(t, rule)
 	}
 }
 
@@ -42,7 +43,7 @@
 	}
 	defer DeleteRule(t, client, rule.ID)
 
-	PrintRule(t, rule)
+	tools.PrintResource(t, rule)
 
 	ruleDescription := "Some rule description"
 	updateOpts := rules.UpdateOpts{
@@ -59,5 +60,5 @@
 		t.Fatalf("Unable to get rule: %v", err)
 	}
 
-	PrintRule(t, newRule)
+	tools.PrintResource(t, newRule)
 }
diff --git a/acceptance/openstack/networking/v2/extensions/layer3/floatingips_test.go b/acceptance/openstack/networking/v2/extensions/layer3/floatingips_test.go
index c20b0d1..952213e 100644
--- a/acceptance/openstack/networking/v2/extensions/layer3/floatingips_test.go
+++ b/acceptance/openstack/networking/v2/extensions/layer3/floatingips_test.go
@@ -7,6 +7,7 @@
 
 	"github.com/gophercloud/gophercloud/acceptance/clients"
 	networking "github.com/gophercloud/gophercloud/acceptance/openstack/networking/v2"
+	"github.com/gophercloud/gophercloud/acceptance/tools"
 	"github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/layer3/floatingips"
 )
 
@@ -28,7 +29,7 @@
 	}
 
 	for _, fip := range allFIPs {
-		PrintFloatingIP(t, &fip)
+		tools.PrintResource(t, fip)
 	}
 }
 
@@ -77,7 +78,7 @@
 		t.Fatalf("Unable to get floating ip: %v", err)
 	}
 
-	PrintFloatingIP(t, newFip)
+	tools.PrintResource(t, newFip)
 
 	// Disassociate the floating IP
 	updateOpts := floatingips.UpdateOpts{
diff --git a/acceptance/openstack/networking/v2/extensions/layer3/layer3.go b/acceptance/openstack/networking/v2/extensions/layer3/layer3.go
index 3d2d88f..7bc0676 100644
--- a/acceptance/openstack/networking/v2/extensions/layer3/layer3.go
+++ b/acceptance/openstack/networking/v2/extensions/layer3/layer3.go
@@ -177,42 +177,6 @@
 	t.Logf("Deleted floating IP: %s", floatingIPID)
 }
 
-// PrintFloatingIP prints a floating IP and all of its attributes.
-func PrintFloatingIP(t *testing.T, fip *floatingips.FloatingIP) {
-	t.Logf("ID: %s", fip.ID)
-	t.Logf("FloatingNetworkID: %s", fip.FloatingNetworkID)
-	t.Logf("FloatingIP: %s", fip.FloatingIP)
-	t.Logf("PortID: %s", fip.PortID)
-	t.Logf("FixedIP: %s", fip.FixedIP)
-	t.Logf("TenantID: %s", fip.TenantID)
-	t.Logf("Status: %s", fip.Status)
-}
-
-// PrintRouterInterface prints a router interface and all of its attributes.
-func PrintRouterInterface(t *testing.T, routerInterface *routers.InterfaceInfo) {
-	t.Logf("ID: %s", routerInterface.ID)
-	t.Logf("SubnetID: %s", routerInterface.SubnetID)
-	t.Logf("PortID: %s", routerInterface.PortID)
-	t.Logf("TenantID: %s", routerInterface.TenantID)
-}
-
-// PrintRouter prints a router and all of its attributes.
-func PrintRouter(t *testing.T, router *routers.Router) {
-	t.Logf("ID: %s", router.ID)
-	t.Logf("Status: %s", router.Status)
-	t.Logf("GatewayInfo: %s", router.GatewayInfo)
-	t.Logf("AdminStateUp: %t", router.AdminStateUp)
-	t.Logf("Distributed: %t", router.Distributed)
-	t.Logf("Name: %s", router.Name)
-	t.Logf("TenantID: %s", router.TenantID)
-	t.Logf("Routes:")
-
-	for _, route := range router.Routes {
-		t.Logf("\tNextHop: %s", route.NextHop)
-		t.Logf("\tDestinationCIDR: %s", route.DestinationCIDR)
-	}
-}
-
 func WaitForRouterToCreate(client *gophercloud.ServiceClient, routerID string, secs int) error {
 	return gophercloud.WaitFor(secs, func() (bool, error) {
 		r, err := routers.Get(client, routerID).Extract()
diff --git a/acceptance/openstack/networking/v2/extensions/layer3/routers_test.go b/acceptance/openstack/networking/v2/extensions/layer3/routers_test.go
index 67688ec..e0be169 100644
--- a/acceptance/openstack/networking/v2/extensions/layer3/routers_test.go
+++ b/acceptance/openstack/networking/v2/extensions/layer3/routers_test.go
@@ -29,7 +29,7 @@
 	}
 
 	for _, router := range allRouters {
-		PrintRouter(t, &router)
+		tools.PrintResource(t, router)
 	}
 }
 
@@ -45,7 +45,7 @@
 	}
 	defer DeleteRouter(t, client, router.ID)
 
-	PrintRouter(t, router)
+	tools.PrintResource(t, router)
 
 	newName := tools.RandomString("TESTACC-", 8)
 	updateOpts := routers.UpdateOpts{
@@ -62,7 +62,7 @@
 		t.Fatalf("Unable to get router: %v", err)
 	}
 
-	PrintRouter(t, newRouter)
+	tools.PrintResource(t, newRouter)
 }
 
 func TestLayer3RouterInterface(t *testing.T) {
@@ -82,7 +82,7 @@
 	}
 	defer networking.DeleteSubnet(t, client, subnet.ID)
 
-	networking.PrintSubnet(t, subnet)
+	tools.PrintResource(t, subnet)
 
 	router, err := CreateExternalRouter(t, client)
 	if err != nil {
@@ -99,8 +99,8 @@
 		t.Fatalf("Failed to add interface to router: %v", err)
 	}
 
-	PrintRouter(t, router)
-	PrintRouterInterface(t, iface)
+	tools.PrintResource(t, router)
+	tools.PrintResource(t, iface)
 
 	riOpts := routers.RemoveInterfaceOpts{
 		SubnetID: subnet.ID,
diff --git a/acceptance/openstack/networking/v2/extensions/lbaas/lbaas.go b/acceptance/openstack/networking/v2/extensions/lbaas/lbaas.go
index 32bfcd4..1f7b2b0 100644
--- a/acceptance/openstack/networking/v2/extensions/lbaas/lbaas.go
+++ b/acceptance/openstack/networking/v2/extensions/lbaas/lbaas.go
@@ -158,63 +158,3 @@
 
 	t.Logf("Successfully deleted vip %s", vipID)
 }
-
-// PrintMember will print a member and all of its attributes.
-func PrintMember(t *testing.T, member *members.Member) {
-	t.Logf("ID: %s", member.ID)
-	t.Logf("TenantID: %s", member.TenantID)
-	t.Logf("Status: %s", member.Status)
-	t.Logf("Weight: %d", member.Weight)
-	t.Logf("AdminStateUp: %t", member.AdminStateUp)
-	t.Logf("PoolID: %s", member.PoolID)
-	t.Logf("Address: %s", member.Address)
-	t.Logf("ProtocolPort: %s", member.ProtocolPort)
-}
-
-// PrintMonitor will print a monitor and all of its attributes.
-func PrintMonitor(t *testing.T, monitor *monitors.Monitor) {
-	t.Logf("ID: %s", monitor.ID)
-	t.Logf("Name: %s", monitor.Name)
-	t.Logf("TenantID: %s", monitor.TenantID)
-	t.Logf("Status: %s", monitor.Status)
-	t.Logf("Type: %s", monitor.Type)
-	t.Logf("Delay: %d", monitor.Delay)
-	t.Logf("Timeout: %d", monitor.Timeout)
-	t.Logf("MaxRetries: %d", monitor.MaxRetries)
-	t.Logf("HTTPMethod: %s", monitor.HTTPMethod)
-	t.Logf("URLPath: %s", monitor.URLPath)
-	t.Logf("ExpectedCodes: %s", monitor.ExpectedCodes)
-	t.Logf("AdminStateUp: %t", monitor.AdminStateUp)
-}
-
-// PrintPool will print a pool and all of its attributes.
-func PrintPool(t *testing.T, pool *pools.Pool) {
-	t.Logf("ID: %s", pool.ID)
-	t.Logf("Name: %s", pool.Name)
-	t.Logf("TenantID: %s", pool.TenantID)
-	t.Logf("Status: %s", pool.Status)
-	t.Logf("LBMethod: %s", pool.LBMethod)
-	t.Logf("Description: %s", pool.Description)
-	t.Logf("SubnetID: %s", pool.SubnetID)
-	t.Logf("AdminStateUp: %t", pool.AdminStateUp)
-	t.Logf("MonitorIDs: %s", pool.MonitorIDs)
-	t.Logf("MemberIDs: %s", pool.MemberIDs)
-}
-
-// PrintVIP will print a vip and all of its attributes.
-func PrintVIP(t *testing.T, vip *vips.VirtualIP) {
-	t.Logf("ID: %s", vip.ID)
-	t.Logf("Name: %s", vip.Name)
-	t.Logf("TenantID: %s", vip.TenantID)
-	t.Logf("Status: %s", vip.Status)
-	t.Logf("Description: %s", vip.Description)
-	t.Logf("SubnetID: %s", vip.SubnetID)
-	t.Logf("Address: %s", vip.Address)
-	t.Logf("Protocol: %s", vip.Protocol)
-	t.Logf("ProtocolPort: %d", vip.ProtocolPort)
-	t.Logf("PoolID: %s", vip.PoolID)
-	t.Logf("PortID: %s", vip.PortID)
-	t.Logf("Persistence: %s", vip.Persistence)
-	t.Logf("ConnLimit: %d", vip.ConnLimit)
-	t.Logf("AdminStateUp: %t", vip.AdminStateUp)
-}
diff --git a/acceptance/openstack/networking/v2/extensions/lbaas/members_test.go b/acceptance/openstack/networking/v2/extensions/lbaas/members_test.go
index 004036e..75dec83 100644
--- a/acceptance/openstack/networking/v2/extensions/lbaas/members_test.go
+++ b/acceptance/openstack/networking/v2/extensions/lbaas/members_test.go
@@ -8,6 +8,7 @@
 	"github.com/gophercloud/gophercloud"
 	"github.com/gophercloud/gophercloud/acceptance/clients"
 	networking "github.com/gophercloud/gophercloud/acceptance/openstack/networking/v2"
+	"github.com/gophercloud/gophercloud/acceptance/tools"
 	"github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/lbaas/members"
 )
 
@@ -28,7 +29,7 @@
 	}
 
 	for _, member := range allMembers {
-		PrintMember(t, &member)
+		tools.PrintResource(t, member)
 	}
 }
 
@@ -62,7 +63,7 @@
 	}
 	defer DeleteMember(t, client, member.ID)
 
-	PrintMember(t, member)
+	tools.PrintResource(t, member)
 
 	updateOpts := members.UpdateOpts{
 		AdminStateUp: gophercloud.Enabled,
@@ -78,5 +79,5 @@
 		t.Fatalf("Unable to get member: %v")
 	}
 
-	PrintMember(t, newMember)
+	tools.PrintResource(t, newMember)
 }
diff --git a/acceptance/openstack/networking/v2/extensions/lbaas/monitors_test.go b/acceptance/openstack/networking/v2/extensions/lbaas/monitors_test.go
index e9a7dbb..56b413a 100644
--- a/acceptance/openstack/networking/v2/extensions/lbaas/monitors_test.go
+++ b/acceptance/openstack/networking/v2/extensions/lbaas/monitors_test.go
@@ -6,6 +6,7 @@
 	"testing"
 
 	"github.com/gophercloud/gophercloud/acceptance/clients"
+	"github.com/gophercloud/gophercloud/acceptance/tools"
 	"github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/lbaas/monitors"
 )
 
@@ -26,7 +27,7 @@
 	}
 
 	for _, monitor := range allMonitors {
-		PrintMonitor(t, &monitor)
+		tools.PrintResource(t, monitor)
 	}
 }
 
@@ -42,7 +43,7 @@
 	}
 	defer DeleteMonitor(t, client, monitor.ID)
 
-	PrintMonitor(t, monitor)
+	tools.PrintResource(t, monitor)
 
 	updateOpts := monitors.UpdateOpts{
 		Delay: 999,
@@ -58,5 +59,5 @@
 		t.Fatalf("Unable to get monitor: %v")
 	}
 
-	PrintMonitor(t, newMonitor)
+	tools.PrintResource(t, newMonitor)
 }
diff --git a/acceptance/openstack/networking/v2/extensions/lbaas/pools_test.go b/acceptance/openstack/networking/v2/extensions/lbaas/pools_test.go
index 8af4d19..b53237c 100644
--- a/acceptance/openstack/networking/v2/extensions/lbaas/pools_test.go
+++ b/acceptance/openstack/networking/v2/extensions/lbaas/pools_test.go
@@ -7,6 +7,7 @@
 
 	"github.com/gophercloud/gophercloud/acceptance/clients"
 	networking "github.com/gophercloud/gophercloud/acceptance/openstack/networking/v2"
+	"github.com/gophercloud/gophercloud/acceptance/tools"
 	"github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/lbaas/pools"
 )
 
@@ -27,7 +28,7 @@
 	}
 
 	for _, pool := range allPools {
-		PrintPool(t, &pool)
+		tools.PrintResource(t, pool)
 	}
 }
 
@@ -55,7 +56,7 @@
 	}
 	defer DeletePool(t, client, pool.ID)
 
-	PrintPool(t, pool)
+	tools.PrintResource(t, pool)
 
 	updateOpts := pools.UpdateOpts{
 		LBMethod: pools.LBMethodLeastConnections,
@@ -71,7 +72,7 @@
 		t.Fatalf("Unable to get pool: %v")
 	}
 
-	PrintPool(t, newPool)
+	tools.PrintResource(t, newPool)
 }
 
 func TestPoolsMonitors(t *testing.T) {
diff --git a/acceptance/openstack/networking/v2/extensions/lbaas/vips_test.go b/acceptance/openstack/networking/v2/extensions/lbaas/vips_test.go
index 1f61b36..ba3f9b4 100644
--- a/acceptance/openstack/networking/v2/extensions/lbaas/vips_test.go
+++ b/acceptance/openstack/networking/v2/extensions/lbaas/vips_test.go
@@ -27,7 +27,7 @@
 	}
 
 	for _, vip := range allVIPs {
-		PrintVIP(t, &vip)
+		tools.PrintResource(t, vip)
 	}
 }
 
@@ -61,7 +61,7 @@
 	}
 	defer DeleteVIP(t, client, vip.ID)
 
-	PrintVIP(t, vip)
+	tools.PrintResource(t, vip)
 
 	connLimit := 100
 	updateOpts := vips.UpdateOpts{
@@ -78,5 +78,5 @@
 		t.Fatalf("Unable to get vip: %v")
 	}
 
-	PrintVIP(t, newVIP)
+	tools.PrintResource(t, newVIP)
 }
diff --git a/acceptance/openstack/networking/v2/extensions/lbaas_v2/lbaas_v2.go b/acceptance/openstack/networking/v2/extensions/lbaas_v2/lbaas_v2.go
index d2e7195..093f835 100644
--- a/acceptance/openstack/networking/v2/extensions/lbaas_v2/lbaas_v2.go
+++ b/acceptance/openstack/networking/v2/extensions/lbaas_v2/lbaas_v2.go
@@ -258,116 +258,6 @@
 	t.Logf("Successfully deleted pool %s", poolID)
 }
 
-// PrintListener will print a listener and all of its attributes.
-func PrintListener(t *testing.T, listener *listeners.Listener) {
-	t.Logf("ID: %s", listener.ID)
-	t.Logf("TenantID: %s", listener.TenantID)
-	t.Logf("Name: %s", listener.Name)
-	t.Logf("Description: %s", listener.Description)
-	t.Logf("Protocol: %s", listener.Protocol)
-	t.Logf("DefaultPoolID: %s", listener.DefaultPoolID)
-	t.Logf("ConnLimit: %d", listener.ConnLimit)
-	t.Logf("SniContainerRefs: %s", listener.SniContainerRefs)
-	t.Logf("DefaultTlsContainerRef: %s", listener.DefaultTlsContainerRef)
-	t.Logf("AdminStateUp: %t", listener.AdminStateUp)
-
-	t.Logf("Pools:")
-	for _, pool := range listener.Pools {
-		t.Logf("\t%#v", pool)
-	}
-
-	t.Logf("LoadBalancers")
-	for _, lb := range listener.Loadbalancers {
-		t.Logf("\t%#v", lb)
-	}
-}
-
-// PrintLoadBalancer will print a load balancer and all of its attributes.
-func PrintLoadBalancer(t *testing.T, lb *loadbalancers.LoadBalancer) {
-	t.Logf("ID: %s", lb.ID)
-	t.Logf("Name: %s", lb.Name)
-	t.Logf("TenantID: %s", lb.TenantID)
-	t.Logf("Description: %s", lb.Description)
-	t.Logf("ProvisioningStatus: %s", lb.ProvisioningStatus)
-	t.Logf("VipAddress: %s", lb.VipAddress)
-	t.Logf("VipPortID: %s", lb.VipPortID)
-	t.Logf("VipSubnetID: %s", lb.VipSubnetID)
-	t.Logf("OperatingStatus: %s", lb.OperatingStatus)
-	t.Logf("Flavor: %s", lb.Flavor)
-	t.Logf("Provider: %s", lb.Provider)
-	t.Logf("AdminStateUp: %t", lb.AdminStateUp)
-
-	t.Logf("Listeners")
-	for _, listener := range lb.Listeners {
-		t.Logf("\t%#v", listener)
-	}
-}
-
-// PrintMember will print a member and all of its attributes.
-func PrintMember(t *testing.T, member *pools.Member) {
-	t.Logf("ID: %s", member.ID)
-	t.Logf("Name: %s", member.Name)
-	t.Logf("TenantID: %s", member.TenantID)
-	t.Logf("Weight: %d", member.Weight)
-	t.Logf("SubnetID: %s", member.SubnetID)
-	t.Logf("PoolID: %s", member.PoolID)
-	t.Logf("Address: %s", member.Address)
-	t.Logf("ProtocolPort: %d", member.ProtocolPort)
-	t.Logf("AdminStateUp: %t", member.AdminStateUp)
-}
-
-// PrintMonitor will print a monitor and all of its attributes.
-func PrintMonitor(t *testing.T, monitor *monitors.Monitor) {
-	t.Logf("ID: %s", monitor.ID)
-	t.Logf("Name: %s", monitor.Name)
-	t.Logf("TenantID: %s", monitor.TenantID)
-	t.Logf("Type: %s", monitor.Type)
-	t.Logf("Delay: %d", monitor.Delay)
-	t.Logf("Timeout: %d", monitor.Timeout)
-	t.Logf("MaxRetries: %d", monitor.MaxRetries)
-	t.Logf("HTTPMethod: %s", monitor.HTTPMethod)
-	t.Logf("URLPath: %s", monitor.URLPath)
-	t.Logf("ExpectedCodes: %s", monitor.ExpectedCodes)
-	t.Logf("AdminStateUp: %t", monitor.AdminStateUp)
-	t.Logf("Status: %s", monitor.Status)
-
-	t.Logf("Pools")
-	for _, pool := range monitor.Pools {
-		t.Logf("\t%#v", pool)
-	}
-}
-
-// PrintPool will print a pool and all of its attributes.
-func PrintPool(t *testing.T, pool *pools.Pool) {
-	t.Logf("ID: %s", pool.ID)
-	t.Logf("Name: %s", pool.Name)
-	t.Logf("TenantID: %s", pool.TenantID)
-	t.Logf("Description: %s", pool.Description)
-	t.Logf("LBMethod: %s", pool.LBMethod)
-	t.Logf("Protocol: %s", pool.Protocol)
-	t.Logf("MonitorID: %s", pool.MonitorID)
-	t.Logf("SubnetID: %s", pool.SubnetID)
-	t.Logf("AdminStateUp: %t", pool.AdminStateUp)
-	t.Logf("Persistence: %s", pool.Persistence)
-	t.Logf("Provider: %s", pool.Provider)
-	t.Logf("Monitor: %#v", pool.Monitor)
-
-	t.Logf("Listeners")
-	for _, listener := range pool.Listeners {
-		t.Logf("\t%#v", listener)
-	}
-
-	t.Logf("Members")
-	for _, member := range pool.Members {
-		t.Logf("\t%#v", member)
-	}
-
-	t.Logf("Loadbalancers")
-	for _, lb := range pool.Loadbalancers {
-		t.Logf("\t%#v", lb)
-	}
-}
-
 // WaitForLoadBalancerState will wait until a loadbalancer reaches a given state.
 func WaitForLoadBalancerState(client *gophercloud.ServiceClient, lbID, status string, secs int) error {
 	return gophercloud.WaitFor(secs, func() (bool, error) {
diff --git a/acceptance/openstack/networking/v2/extensions/lbaas_v2/listeners_test.go b/acceptance/openstack/networking/v2/extensions/lbaas_v2/listeners_test.go
index ac2681e..2d2dd03 100644
--- a/acceptance/openstack/networking/v2/extensions/lbaas_v2/listeners_test.go
+++ b/acceptance/openstack/networking/v2/extensions/lbaas_v2/listeners_test.go
@@ -6,6 +6,7 @@
 	"testing"
 
 	"github.com/gophercloud/gophercloud/acceptance/clients"
+	"github.com/gophercloud/gophercloud/acceptance/tools"
 	"github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/lbaas_v2/listeners"
 )
 
@@ -26,6 +27,6 @@
 	}
 
 	for _, listener := range allListeners {
-		PrintListener(t, &listener)
+		tools.PrintResource(t, listener)
 	}
 }
diff --git a/acceptance/openstack/networking/v2/extensions/lbaas_v2/loadbalancers_test.go b/acceptance/openstack/networking/v2/extensions/lbaas_v2/loadbalancers_test.go
index 7cd49ed..650eb2c 100644
--- a/acceptance/openstack/networking/v2/extensions/lbaas_v2/loadbalancers_test.go
+++ b/acceptance/openstack/networking/v2/extensions/lbaas_v2/loadbalancers_test.go
@@ -31,7 +31,7 @@
 	}
 
 	for _, lb := range allLoadbalancers {
-		PrintLoadBalancer(t, &lb)
+		tools.PrintResource(t, lb)
 	}
 }
 
@@ -64,7 +64,7 @@
 		t.Fatalf("Unable to get loadbalancer: %v", err)
 	}
 
-	PrintLoadBalancer(t, newLB)
+	tools.PrintResource(t, newLB)
 
 	// Because of the time it takes to create a loadbalancer,
 	// this test will include some other resources.
@@ -93,7 +93,7 @@
 		t.Fatalf("Unable to get listener")
 	}
 
-	PrintListener(t, newListener)
+	tools.PrintResource(t, newListener)
 
 	// Pool
 	pool, err := CreatePool(t, client, lb)
@@ -119,7 +119,7 @@
 		t.Fatalf("Unable to get pool")
 	}
 
-	PrintPool(t, newPool)
+	tools.PrintResource(t, newPool)
 
 	// Member
 	member, err := CreateMember(t, client, lb, newPool, subnet.ID, subnet.CIDR)
@@ -146,7 +146,7 @@
 		t.Fatalf("Unable to get member")
 	}
 
-	PrintMember(t, newMember)
+	tools.PrintResource(t, newMember)
 
 	// Monitor
 	monitor, err := CreateMonitor(t, client, lb, newPool)
@@ -173,6 +173,6 @@
 		t.Fatalf("Unable to get monitor")
 	}
 
-	PrintMonitor(t, newMonitor)
+	tools.PrintResource(t, newMonitor)
 
 }
diff --git a/acceptance/openstack/networking/v2/extensions/lbaas_v2/monitors_test.go b/acceptance/openstack/networking/v2/extensions/lbaas_v2/monitors_test.go
index 2e587d9..b312370 100644
--- a/acceptance/openstack/networking/v2/extensions/lbaas_v2/monitors_test.go
+++ b/acceptance/openstack/networking/v2/extensions/lbaas_v2/monitors_test.go
@@ -6,6 +6,7 @@
 	"testing"
 
 	"github.com/gophercloud/gophercloud/acceptance/clients"
+	"github.com/gophercloud/gophercloud/acceptance/tools"
 	"github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/lbaas_v2/monitors"
 )
 
@@ -26,6 +27,6 @@
 	}
 
 	for _, monitor := range allMonitors {
-		PrintMonitor(t, &monitor)
+		tools.PrintResource(t, monitor)
 	}
 }
diff --git a/acceptance/openstack/networking/v2/extensions/lbaas_v2/pools_test.go b/acceptance/openstack/networking/v2/extensions/lbaas_v2/pools_test.go
index 42ba5a2..b4f55a0 100644
--- a/acceptance/openstack/networking/v2/extensions/lbaas_v2/pools_test.go
+++ b/acceptance/openstack/networking/v2/extensions/lbaas_v2/pools_test.go
@@ -6,6 +6,7 @@
 	"testing"
 
 	"github.com/gophercloud/gophercloud/acceptance/clients"
+	"github.com/gophercloud/gophercloud/acceptance/tools"
 	"github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/lbaas_v2/pools"
 )
 
@@ -26,6 +27,6 @@
 	}
 
 	for _, pool := range allPools {
-		PrintPool(t, &pool)
+		tools.PrintResource(t, pool)
 	}
 }
diff --git a/acceptance/openstack/networking/v2/extensions/portsbinding/portsbinding.go b/acceptance/openstack/networking/v2/extensions/portsbinding/portsbinding.go
index b52cd80..a6d75f3 100644
--- a/acceptance/openstack/networking/v2/extensions/portsbinding/portsbinding.go
+++ b/acceptance/openstack/networking/v2/extensions/portsbinding/portsbinding.go
@@ -36,22 +36,3 @@
 
 	return port, nil
 }
-
-// PrintPortsbinging will print a port and all of its attributes.
-func PrintPortsbinding(t *testing.T, port *portsbinding.Port) {
-	t.Logf("ID: %s", port.ID)
-	t.Logf("NetworkID: %s", port.NetworkID)
-	t.Logf("Name: %s", port.Name)
-	t.Logf("AdminStateUp: %t", port.AdminStateUp)
-	t.Logf("Status: %s", port.Status)
-	t.Logf("MACAddress: %s", port.MACAddress)
-	t.Logf("FixedIPs: %s", port.FixedIPs)
-	t.Logf("TenantID: %s", port.TenantID)
-	t.Logf("DeviceOwner: %s", port.DeviceOwner)
-	t.Logf("SecurityGroups: %s", port.SecurityGroups)
-	t.Logf("DeviceID: %s", port.DeviceID)
-	t.Logf("DeviceOwner: %s", port.DeviceOwner)
-	t.Logf("AllowedAddressPairs: %s", port.AllowedAddressPairs)
-	t.Logf("HostID: %s", port.HostID)
-	t.Logf("VNICType: %s", port.VNICType)
-}
diff --git a/acceptance/openstack/networking/v2/extensions/portsbinding/portsbinding_test.go b/acceptance/openstack/networking/v2/extensions/portsbinding/portsbinding_test.go
index 2f2f618..803f62a 100644
--- a/acceptance/openstack/networking/v2/extensions/portsbinding/portsbinding_test.go
+++ b/acceptance/openstack/networking/v2/extensions/portsbinding/portsbinding_test.go
@@ -42,7 +42,7 @@
 	}
 	defer networking.DeletePort(t, client, port.ID)
 
-	PrintPortsbinding(t, port)
+	tools.PrintResource(t, port)
 
 	// Update port
 	newPortName := tools.RandomString("TESTACC-", 8)
@@ -54,5 +54,5 @@
 		t.Fatalf("Could not update port: %v", err)
 	}
 
-	PrintPortsbinding(t, newPort)
+	tools.PrintResource(t, newPort)
 }
diff --git a/acceptance/openstack/networking/v2/extensions/provider_test.go b/acceptance/openstack/networking/v2/extensions/provider_test.go
index 8136581..b0d5846 100644
--- a/acceptance/openstack/networking/v2/extensions/provider_test.go
+++ b/acceptance/openstack/networking/v2/extensions/provider_test.go
@@ -7,6 +7,7 @@
 
 	"github.com/gophercloud/gophercloud/acceptance/clients"
 	networking "github.com/gophercloud/gophercloud/acceptance/openstack/networking/v2"
+	"github.com/gophercloud/gophercloud/acceptance/tools"
 	"github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/provider"
 	"github.com/gophercloud/gophercloud/openstack/networking/v2/networks"
 )
@@ -30,5 +31,5 @@
 		t.Fatalf("Unable to extract network: %v", err)
 	}
 
-	PrintNetworkExtAttrs(t, newNetwork)
+	tools.PrintResource(t, newNetwork)
 }
diff --git a/acceptance/openstack/networking/v2/extensions/security_test.go b/acceptance/openstack/networking/v2/extensions/security_test.go
index 88003e7..c696377 100644
--- a/acceptance/openstack/networking/v2/extensions/security_test.go
+++ b/acceptance/openstack/networking/v2/extensions/security_test.go
@@ -7,6 +7,7 @@
 
 	"github.com/gophercloud/gophercloud/acceptance/clients"
 	networking "github.com/gophercloud/gophercloud/acceptance/openstack/networking/v2"
+	"github.com/gophercloud/gophercloud/acceptance/tools"
 	"github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/security/groups"
 )
 
@@ -28,7 +29,7 @@
 	}
 
 	for _, group := range allGroups {
-		PrintSecurityGroup(t, &group)
+		tools.PrintResource(t, group)
 	}
 }
 
@@ -50,7 +51,7 @@
 	}
 	defer DeleteSecurityGroupRule(t, client, rule.ID)
 
-	PrintSecurityGroup(t, group)
+	tools.PrintResource(t, group)
 }
 
 func TestSecurityGroupsPort(t *testing.T) {
@@ -89,5 +90,5 @@
 	}
 	defer networking.DeletePort(t, client, port.ID)
 
-	networking.PrintPort(t, port)
+	tools.PrintResource(t, port)
 }
diff --git a/acceptance/openstack/networking/v2/networking.go b/acceptance/openstack/networking/v2/networking.go
index cc5befb..c5e7ca2 100644
--- a/acceptance/openstack/networking/v2/networking.go
+++ b/acceptance/openstack/networking/v2/networking.go
@@ -6,7 +6,6 @@
 
 	"github.com/gophercloud/gophercloud"
 	"github.com/gophercloud/gophercloud/acceptance/tools"
-	"github.com/gophercloud/gophercloud/openstack/networking/v2/apiversions"
 	"github.com/gophercloud/gophercloud/openstack/networking/v2/networks"
 	"github.com/gophercloud/gophercloud/openstack/networking/v2/ports"
 	"github.com/gophercloud/gophercloud/openstack/networking/v2/subnets"
@@ -196,61 +195,6 @@
 	t.Logf("Deleted subnet: %s", subnetID)
 }
 
-// PrintAPIVersion will print an API version and all of its attributes.
-func PrintAPIVersion(t *testing.T, apiVersion *apiversions.APIVersion) {
-	t.Logf("ID: %s", apiVersion.ID)
-	t.Logf("Status: %s", apiVersion.Status)
-}
-
-// PrintNetwork will print a network and all of its attributes.
-func PrintNetwork(t *testing.T, network *networks.Network) {
-	t.Logf("ID: %s", network.ID)
-	t.Logf("Name: %s", network.Name)
-	t.Logf("AdminStateUp: %t", network.AdminStateUp)
-	t.Logf("Status: %s", network.Status)
-	t.Logf("TenantID: %s", network.TenantID)
-	t.Logf("Shared: %t", network.Shared)
-	t.Logf("Subnets: %s", network.Subnets)
-}
-
-// PrintPort will print a port and all of its attributes.
-func PrintPort(t *testing.T, port *ports.Port) {
-	t.Logf("ID: %s", port.ID)
-	t.Logf("NetworkID: %s", port.NetworkID)
-	t.Logf("Name: %s", port.Name)
-	t.Logf("AdminStateUp: %t", port.AdminStateUp)
-	t.Logf("Status: %s", port.Status)
-	t.Logf("MACAddress: %s", port.MACAddress)
-	t.Logf("FixedIPs: %s", port.FixedIPs)
-	t.Logf("TenantID: %s", port.TenantID)
-	t.Logf("DeviceOwner: %s", port.DeviceOwner)
-	t.Logf("SecurityGroups: %s", port.SecurityGroups)
-	t.Logf("DeviceID: %s", port.DeviceID)
-	t.Logf("DeviceOwner: %s", port.DeviceOwner)
-	t.Logf("AllowedAddressPairs: %s", port.AllowedAddressPairs)
-}
-
-// PrintSubnet will print a subnet and all of its attributes.
-func PrintSubnet(t *testing.T, subnet *subnets.Subnet) {
-	t.Logf("ID: %s", subnet.ID)
-	t.Logf("NetworkID: %s", subnet.NetworkID)
-	t.Logf("Name: %s", subnet.Name)
-	t.Logf("IPVersion: %d", subnet.IPVersion)
-	t.Logf("CIDR: %s", subnet.CIDR)
-	t.Logf("GatewayIP: %s", subnet.GatewayIP)
-	t.Logf("DNSNameservers: %s", subnet.DNSNameservers)
-	t.Logf("AllocationPools: %s", subnet.AllocationPools)
-	t.Logf("HostRoutes: %s", subnet.HostRoutes)
-	t.Logf("EnableDHCP: %t", subnet.EnableDHCP)
-	t.Logf("TenantID: %s", subnet.TenantID)
-}
-
-// PrintVersionResource will print an API version resource and all of its attributes.
-func PrintVersionResource(t *testing.T, versionResource *apiversions.APIVersionResource) {
-	t.Logf("Name: %s", versionResource.Name)
-	t.Logf("Collection: %s", versionResource.Collection)
-}
-
 func WaitForPortToCreate(client *gophercloud.ServiceClient, portID string, secs int) error {
 	return gophercloud.WaitFor(secs, func() (bool, error) {
 		p, err := ports.Get(client, portID).Extract()
diff --git a/acceptance/openstack/networking/v2/networks_test.go b/acceptance/openstack/networking/v2/networks_test.go
index a095079..66f42f8 100644
--- a/acceptance/openstack/networking/v2/networks_test.go
+++ b/acceptance/openstack/networking/v2/networks_test.go
@@ -27,7 +27,7 @@
 	}
 
 	for _, network := range allNetworks {
-		PrintNetwork(t, &network)
+		tools.PrintResource(t, network)
 	}
 }
 
@@ -44,7 +44,7 @@
 	}
 	defer DeleteNetwork(t, client, network.ID)
 
-	PrintNetwork(t, network)
+	tools.PrintResource(t, network)
 
 	newName := tools.RandomString("TESTACC-", 8)
 	updateOpts := &networks.UpdateOpts{
@@ -61,5 +61,5 @@
 		t.Fatalf("Unable to retrieve network: %v", err)
 	}
 
-	PrintNetwork(t, newNetwork)
+	tools.PrintResource(t, newNetwork)
 }
diff --git a/acceptance/openstack/networking/v2/ports_test.go b/acceptance/openstack/networking/v2/ports_test.go
index b3b9ecb..fa1b4a4 100644
--- a/acceptance/openstack/networking/v2/ports_test.go
+++ b/acceptance/openstack/networking/v2/ports_test.go
@@ -27,7 +27,7 @@
 	}
 
 	for _, port := range allPorts {
-		PrintPort(t, &port)
+		tools.PrintResource(t, port)
 	}
 }
 
@@ -58,7 +58,7 @@
 	}
 	defer DeletePort(t, client, port.ID)
 
-	PrintPort(t, port)
+	tools.PrintResource(t, port)
 
 	// Update port
 	newPortName := tools.RandomString("TESTACC-", 8)
@@ -70,5 +70,5 @@
 		t.Fatalf("Could not update port: %v", err)
 	}
 
-	PrintPort(t, newPort)
+	tools.PrintResource(t, newPort)
 }
diff --git a/acceptance/openstack/networking/v2/subnets_test.go b/acceptance/openstack/networking/v2/subnets_test.go
index 1d7696c..fd50a1f 100644
--- a/acceptance/openstack/networking/v2/subnets_test.go
+++ b/acceptance/openstack/networking/v2/subnets_test.go
@@ -29,7 +29,7 @@
 	}
 
 	for _, subnet := range allSubnets {
-		PrintSubnet(t, &subnet)
+		tools.PrintResource(t, subnet)
 	}
 }
 
@@ -53,7 +53,7 @@
 	}
 	defer DeleteSubnet(t, client, subnet.ID)
 
-	PrintSubnet(t, subnet)
+	tools.PrintResource(t, subnet)
 
 	// Update Subnet
 	newSubnetName := tools.RandomString("TESTACC-", 8)
@@ -71,7 +71,7 @@
 		t.Fatalf("Unable to get subnet: %v", err)
 	}
 
-	PrintSubnet(t, newSubnet)
+	tools.PrintResource(t, newSubnet)
 }
 
 func TestSubnetsDefaultGateway(t *testing.T) {
@@ -94,7 +94,7 @@
 	}
 	defer DeleteSubnet(t, client, subnet.ID)
 
-	PrintSubnet(t, subnet)
+	tools.PrintResource(t, subnet)
 
 	if subnet.GatewayIP == "" {
 		t.Fatalf("A default gateway was not created.")
@@ -135,7 +135,7 @@
 	}
 	defer DeleteSubnet(t, client, subnet.ID)
 
-	PrintSubnet(t, subnet)
+	tools.PrintResource(t, subnet)
 
 	if subnet.GatewayIP != "" {
 		t.Fatalf("A gateway exists when it shouldn't.")
