diff --git a/acceptance/openstack/compute/v2/secdefrules_test.go b/acceptance/openstack/compute/v2/secdefrules_test.go
index 0e00b61..78b0798 100644
--- a/acceptance/openstack/compute/v2/secdefrules_test.go
+++ b/acceptance/openstack/compute/v2/secdefrules_test.go
@@ -25,7 +25,7 @@
 	deleteDefRule(t, client, id)
 }
 
-func createDefRule(t *testing.T, client *gophercloud.ServiceClient) int {
+func createDefRule(t *testing.T, client *gophercloud.ServiceClient) string {
 	opts := dsr.CreateOpts{
 		FromPort:   tools.RandomInt(80, 89),
 		ToPort:     tools.RandomInt(90, 99),
@@ -57,16 +57,16 @@
 	th.AssertNoErr(t, err)
 }
 
-func getDefRule(t *testing.T, client *gophercloud.ServiceClient, id int) {
+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 %d: %#v", id, rule)
+	t.Logf("Getting rule %s: %#v", id, rule)
 }
 
-func deleteDefRule(t *testing.T, client *gophercloud.ServiceClient, id int) {
+func deleteDefRule(t *testing.T, client *gophercloud.ServiceClient, id string) {
 	err := dsr.Delete(client, id).ExtractErr()
 	th.AssertNoErr(t, err)
 
-	t.Logf("Deleted rule %d", id)
+	t.Logf("Deleted rule %s", id)
 }
diff --git a/acceptance/openstack/compute/v2/secgroup_test.go b/acceptance/openstack/compute/v2/secgroup_test.go
index 53d84ff..4f50739 100644
--- a/acceptance/openstack/compute/v2/secgroup_test.go
+++ b/acceptance/openstack/compute/v2/secgroup_test.go
@@ -41,7 +41,7 @@
 	deleteSecGroup(t, client, groupID)
 }
 
-func createSecGroup(t *testing.T, client *gophercloud.ServiceClient) int {
+func createSecGroup(t *testing.T, client *gophercloud.ServiceClient) string {
 	opts := secgroups.CreateOpts{
 		Name:        tools.RandomString("secgroup_", 5),
 		Description: "something",
@@ -71,7 +71,7 @@
 	th.AssertNoErr(t, err)
 }
 
-func updateSecGroup(t *testing.T, client *gophercloud.ServiceClient, id int, newName string) {
+func updateSecGroup(t *testing.T, client *gophercloud.ServiceClient, id, newName string) {
 	opts := secgroups.UpdateOpts{
 		Name:        newName,
 		Description: tools.RandomString("dec_", 10),
@@ -82,14 +82,14 @@
 	t.Logf("Updated %s's name to %s", group.ID, group.Name)
 }
 
-func getSecGroup(t *testing.T, client *gophercloud.ServiceClient, id int) {
+func getSecGroup(t *testing.T, client *gophercloud.ServiceClient, id string) {
 	group, err := secgroups.Get(client, id).Extract()
 	th.AssertNoErr(t, err)
 
-	t.Logf("Getting %d: %#v", id, group)
+	t.Logf("Getting %s: %#v", id, group)
 }
 
-func addRemoveRules(t *testing.T, client *gophercloud.ServiceClient, id int) {
+func addRemoveRules(t *testing.T, client *gophercloud.ServiceClient, id string) {
 	opts := secgroups.CreateRuleOpts{
 		ParentGroupID: id,
 		FromPort:      22,
@@ -101,12 +101,12 @@
 	rule, err := secgroups.CreateRule(client, opts).Extract()
 	th.AssertNoErr(t, err)
 
-	t.Logf("Adding rule %d to group %d", rule.ID, id)
+	t.Logf("Adding rule %s to group %s", rule.ID, id)
 
 	err = secgroups.DeleteRule(client, rule.ID).ExtractErr()
 	th.AssertNoErr(t, err)
 
-	t.Logf("Deleted rule %d from group %d", rule.ID, id)
+	t.Logf("Deleted rule %s from group %s", rule.ID, id)
 }
 
 func findServer(t *testing.T, client *gophercloud.ServiceClient) (string, bool) {
@@ -169,9 +169,9 @@
 	t.Logf("Removing group %s from server %s", groupName, serverID)
 }
 
-func deleteSecGroup(t *testing.T, client *gophercloud.ServiceClient, id int) {
+func deleteSecGroup(t *testing.T, client *gophercloud.ServiceClient, id string) {
 	err := secgroups.Delete(client, id).ExtractErr()
 	th.AssertNoErr(t, err)
 
-	t.Logf("Deleted group %d", id)
+	t.Logf("Deleted group %s", id)
 }
