From 0137840fb685f5949d56eb68ed3b012977f97213 Mon Sep 17 00:00:00 2001 From: mozhulee <21621232@zju.edu.cn> Date: Fri, 30 Jun 2017 13:50:01 +0800 Subject: [PATCH] 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> --- pkg/openstack/client.go | 25 +++++++++++-------- .../openstack/identity/v2/users/urls.go | 2 +- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/pkg/openstack/client.go b/pkg/openstack/client.go index fbc3fbf..9a8e302 100644 --- a/pkg/openstack/client.go +++ b/pkg/openstack/client.go @@ -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 }) diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/identity/v2/users/urls.go b/vendor/github.com/gophercloud/gophercloud/openstack/identity/v2/users/urls.go index e26613f..4613e7a 100644 --- a/vendor/github.com/gophercloud/gophercloud/openstack/identity/v2/users/urls.go +++ b/vendor/github.com/gophercloud/gophercloud/openstack/identity/v2/users/urls.go @@ -3,7 +3,7 @@ package users import "github.com/gophercloud/gophercloud" const ( - tenantPath = "tenants" + tenantPath = "v2.0/tenants" userPath = "v2.0/users" rolePath = "roles" )