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

View File

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