Update openstack client

Update including
* Fix DeleteAllUsersOnTenant method can't list specific tenant's users
* Enhance err extracl of delete tenant

Change-Id: I4a54397c8f9c07f945efbd514b0a68f741e199e0
Signed-off-by: mozhuli <21621232@zju.edu.cn>
This commit is contained in:
mozhulee 2017-06-30 13:50:01 +08:00
parent 76ef989737
commit 0137840fb6
2 changed files with 16 additions and 11 deletions

View File

@ -165,14 +165,18 @@ func (c *Client) CreateTenant(tenantName string) (string, error) {
func (c *Client) DeleteTenant(tenantName string) error {
return tenants.List(c.Identity, nil).EachPage(func(page pagination.Page) (bool, error) {
tenantList, err1 := tenants.ExtractTenants(page)
if err1 != nil {
return false, err1
tenantList, err := tenants.ExtractTenants(page)
if err != nil {
return false, err
}
for _, t := range tenantList {
if t.Name == tenantName {
re := tenants.Delete(c.Identity, t.ID)
glog.V(4).Infof("Tenant %s deleted: %v", tenantName, re)
err := tenants.Delete(c.Identity, t.ID).ExtractErr()
if err != nil {
glog.Errorf("Delete openstack tenant %s error: %v", tenantName, err)
return false, err
}
glog.V(4).Infof("Tenant %s deleted", tenantName)
break
}
}
@ -201,17 +205,18 @@ func (c *Client) DeleteAllUsersOnTenant(tenantName string) error {
if err != nil {
return nil
}
// TODO the users.List method returned users have empty TenantID option
return users.List(c.Identity).EachPage(func(page pagination.Page) (bool, error) {
return users.ListUsers(c.Identity, tenantID).EachPage(func(page pagination.Page) (bool, error) {
usersList, err := users.ExtractUsers(page)
if err != nil {
return false, err
}
for _, u := range usersList {
if u.TenantID == tenantID {
res := users.Delete(c.Identity, u.ID)
glog.V(4).Infof("User %s deleted: %v", u.Name, res)
res := users.Delete(c.Identity, u.ID)
if res.Err != nil {
glog.Errorf("Delete openstack user %s error: %v", u.Name, err)
return false, err
}
glog.V(4).Infof("User %s deleted: %v", u.Name, res)
}
return true, nil
})

View File

@ -3,7 +3,7 @@ package users
import "github.com/gophercloud/gophercloud"
const (
tenantPath = "tenants"
tenantPath = "v2.0/tenants"
userPath = "v2.0/users"
rolePath = "roles"
)