Skip to content

Commit f2b387e

Browse files
committed
Identity v3 region delete
1 parent 4487beb commit f2b387e

8 files changed

Lines changed: 55 additions & 0 deletions

File tree

acceptance/openstack/identity/v3/identity.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,18 @@ func DeleteRole(t *testing.T, client *gophercloud.ServiceClient, roleID string)
235235
t.Logf("Deleted role: %s", roleID)
236236
}
237237

238+
// DeleteRegion will delete a reg by ID. A fatal error will occur if
239+
// the role failed to be deleted. This works best when using it as
240+
// a deferred function.
241+
func DeleteRegion(t *testing.T, client *gophercloud.ServiceClient, regionID string) {
242+
err := regions.Delete(client, regionID).ExtractErr()
243+
if err != nil {
244+
t.Fatalf("Unable to delete region %s: %v", regionID, err)
245+
}
246+
247+
t.Logf("Deleted region: %s", regionID)
248+
}
249+
238250
// UnassignRole will delete a role assigned to a user/group on a project/domain
239251
// A fatal error will occur if it fails to delete the assignment.
240252
// This works best when using it as a deferred function.

acceptance/openstack/identity/v3/regions_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ func TestRegionsCRUD(t *testing.T) {
7979
if err != nil {
8080
t.Fatalf("Unable to create region: %v", err)
8181
}
82+
defer DeleteRegion(t, client, region.ID)
8283

8384
tools.PrintResource(t, region)
8485
tools.PrintResource(t, region.Extra)

openstack/identity/v3/regions/doc.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,12 @@ Example to Create a Region
3434
region, err := regions.Create(identityClient, createOpts).Extract()
3535
if err != nil {
3636
panic(err)
37+
38+
Example to Delete a Region
39+
40+
regionID := "TestRegion"
41+
err := regions.Delete(identityClient, regionID).ExtractErr()
42+
if err != nil {
3743
}
3844
*/
3945
package regions

openstack/identity/v3/regions/requests.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,3 +95,9 @@ func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r Create
9595
})
9696
return
9797
}
98+
99+
// Delete deletes a region.
100+
func Delete(client *gophercloud.ServiceClient, regionID string) (r DeleteResult) {
101+
_, r.Err = client.Delete(deleteURL(client, regionID), nil)
102+
return
103+
}

openstack/identity/v3/regions/results.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,12 @@ type CreateResult struct {
7272
regionResult
7373
}
7474

75+
// DeleteResult is the response from a Delete operation. Call its ExtractErr to
76+
// determine if the request succeeded or failed.
77+
type DeleteResult struct {
78+
gophercloud.ErrResult
79+
}
80+
7581
// RegionPage is a single page of Region results.
7682
type RegionPage struct {
7783
pagination.LinkedPageBase

openstack/identity/v3/regions/testing/fixtures.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,3 +139,14 @@ func HandleCreateRegionSuccessfully(t *testing.T) {
139139
fmt.Fprintf(w, GetOutput)
140140
})
141141
}
142+
143+
// HandleDeleteRegionSuccessfully creates an HTTP handler at `/regions` on the
144+
// test handler mux that tests region deletion.
145+
func HandleDeleteRegionSuccessfully(t *testing.T) {
146+
th.Mux.HandleFunc("/regions/RegionOne-West", func(w http.ResponseWriter, r *http.Request) {
147+
th.TestMethod(t, r, "DELETE")
148+
th.TestHeader(t, r, "X-Auth-Token", client.TokenID)
149+
150+
w.WriteHeader(http.StatusNoContent)
151+
})
152+
}

openstack/identity/v3/regions/testing/requests_test.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,3 +71,12 @@ func TestCreateRegion(t *testing.T) {
7171
th.AssertNoErr(t, err)
7272
th.CheckDeepEquals(t, SecondRegion, *actual)
7373
}
74+
75+
func TestDeleteRegion(t *testing.T) {
76+
th.SetupHTTP()
77+
defer th.TeardownHTTP()
78+
HandleDeleteRegionSuccessfully(t)
79+
80+
res := regions.Delete(client.ServiceClient(), "RegionOne-West")
81+
th.AssertNoErr(t, res.Err)
82+
}

openstack/identity/v3/regions/urls.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,7 @@ func getURL(client *gophercloud.ServiceClient, regionID string) string {
1313
func createURL(client *gophercloud.ServiceClient) string {
1414
return client.ServiceURL("regions")
1515
}
16+
17+
func deleteURL(client *gophercloud.ServiceClient, regionID string) string {
18+
return client.ServiceURL("regions", regionID)
19+
}

0 commit comments

Comments
 (0)