Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixes uaa pagination issue #527

Merged
merged 13 commits into from
Apr 3, 2024
Merged
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -20,3 +20,4 @@ make-binary.sh
.idea
test-for-pagination.sh
export-cli.sh
docker.env
13 changes: 7 additions & 6 deletions commands/cleanup_org_users.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,13 @@ type CleanupOrgUsersCommand struct {

// Execute - removes org users
func (c *CleanupOrgUsersCommand) Execute([]string) error {
if cfMgmt, err := InitializePeekManagers(c.BaseCFConfigCommand, c.Peek, nil); err == nil {
errs := cfMgmt.UserManager.CleanupOrgUsers()
if len(errs) > 0 {
return fmt.Errorf("got errors processing cleanup users %v", errs)
}
return nil
cfMgmt, err := InitializePeekManagers(c.BaseCFConfigCommand, c.Peek, nil)
if err != nil {
return err
}
errs := cfMgmt.UserManager.CleanupOrgUsers()
if len(errs) > 0 {
return fmt.Errorf("got errors processing cleanup users %v", errs)
}
return nil
}
44 changes: 32 additions & 12 deletions commands/initialize.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
package commands

import (
"crypto/tls"
"fmt"
"net/http"
"os"
"strings"

routing_api "code.cloudfoundry.org/routing-api"
Expand All @@ -24,6 +27,7 @@ import (
"github.com/vmwarepivotallabs/cf-mgmt/space"
"github.com/vmwarepivotallabs/cf-mgmt/uaa"
"github.com/vmwarepivotallabs/cf-mgmt/user"
"github.com/vmwarepivotallabs/cf-mgmt/util"
"github.com/xchapter7x/lo"
)

Expand Down Expand Up @@ -85,8 +89,22 @@ func InitializePeekManagers(baseCommand BaseCFConfigCommand, peek bool, ldapMgr
cfMgmt.SystemDomain = baseCommand.SystemDomain
cfMgmt.ConfigManager = config.NewManager(cfMgmt.ConfigDirectory)

httpClient := &http.Client{
Transport: &http.Transport{
TLSClientConfig: &tls.Config{
InsecureSkipVerify: true,
},
},
}
if strings.EqualFold(os.Getenv("LOG_LEVEL"), "trace") {
loggingTranport := util.NewLoggingTransport(httpClient.Transport)
httpClient = &http.Client{
Transport: loggingTranport,
}
}

userAgent := fmt.Sprintf("cf-mgmt/%s", configcommands.VERSION)
uaaMgr, err := uaa.NewDefaultUAAManager(cfMgmt.SystemDomain, baseCommand.UserID, baseCommand.ClientSecret, userAgent, peek)
uaaMgr, err := uaa.NewDefaultUAAManager(cfMgmt.SystemDomain, baseCommand.UserID, baseCommand.ClientSecret, userAgent, httpClient, peek)
if err != nil {
return nil, err
}
Expand All @@ -97,11 +115,10 @@ func InitializePeekManagers(baseCommand BaseCFConfigCommand, peek bool, ldapMgr
if baseCommand.Password != "" {
lo.G.Warning("Password parameter is deprecated, create uaa client and client-secret instead")
c = &cfclient.Config{
ApiAddress: fmt.Sprintf("https://api.%s", cfMgmt.SystemDomain),
SkipSslValidation: true,
Username: baseCommand.UserID,
Password: baseCommand.Password,
UserAgent: userAgent,
ApiAddress: fmt.Sprintf("https://api.%s", cfMgmt.SystemDomain),
Username: baseCommand.UserID,
Password: baseCommand.Password,
UserAgent: userAgent,
}
cv3, err = v3config.NewUserPassword(fmt.Sprintf("https://api.%s", cfMgmt.SystemDomain),
baseCommand.UserID,
Expand All @@ -111,11 +128,10 @@ func InitializePeekManagers(baseCommand BaseCFConfigCommand, peek bool, ldapMgr
}
} else {
c = &cfclient.Config{
ApiAddress: fmt.Sprintf("https://api.%s", cfMgmt.SystemDomain),
SkipSslValidation: true,
ClientID: baseCommand.UserID,
ClientSecret: baseCommand.ClientSecret,
UserAgent: userAgent,
ApiAddress: fmt.Sprintf("https://api.%s", cfMgmt.SystemDomain),
ClientID: baseCommand.UserID,
ClientSecret: baseCommand.ClientSecret,
UserAgent: userAgent,
}
cv3, err = v3config.NewClientSecret(fmt.Sprintf("https://api.%s", cfMgmt.SystemDomain),
baseCommand.UserID,
Expand All @@ -124,12 +140,16 @@ func InitializePeekManagers(baseCommand BaseCFConfigCommand, peek bool, ldapMgr
return nil, err
}
}
c.HttpClient = httpClient
cv3.UserAgent = userAgent
cv3.WithHTTPClient(httpClient)

client, err := cfclient.NewClient(c)
if err != nil {
return nil, err
}
cv3.WithSkipTLSValidation(true)
v3client, err := v3cfclient.New(cv3)

if err != nil {
return nil, err
}
Expand Down
14 changes: 8 additions & 6 deletions commands/update_space_users.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,14 @@ func (c *UpdateSpaceUsersCommand) Execute([]string) error {
if ldapMgr != nil {
defer ldapMgr.Close()
}
if cfMgmt, err := InitializePeekManagers(c.BaseCFConfigCommand, c.Peek, ldapMgr); err == nil {
errs := cfMgmt.UserManager.UpdateSpaceUsers()
if len(errs) > 0 {
return fmt.Errorf("got errors processing update space users %v", errs)
}
return nil
cfMgmt, err := InitializePeekManagers(c.BaseCFConfigCommand, c.Peek, ldapMgr)
if err != nil {
return err
}
errs := cfMgmt.UserManager.UpdateSpaceUsers()
if len(errs) > 0 {
return fmt.Errorf("got errors processing update space users %v", errs)
}
return nil

}
10 changes: 1 addition & 9 deletions role/manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ type DefaultManager struct {
OrgRoles map[string]map[string]*RoleUsers
SpaceRoles map[string]map[string]*RoleUsers
CFUsers map[string]*resource.User
UAAUsers *uaa.Users
UAAMgr uaa.Manager
Peek bool
OrgRolesUsers map[string]map[string]map[string]string
Expand Down Expand Up @@ -276,14 +275,7 @@ func (m *DefaultManager) GetCFUsers() (map[string]*resource.User, error) {
}

func (m *DefaultManager) GetUAAUsers() (*uaa.Users, error) {
if m.UAAUsers == nil {
uaaUsers, err := m.UAAMgr.ListUsers()
if err != nil {
return nil, err
}
m.UAAUsers = uaaUsers
}
return m.UAAUsers, nil
return m.UAAMgr.ListUsers()
}

func (m *DefaultManager) UpdateOrgRoleUsers(orgGUID string, roleUser *RoleUsers) {
Expand Down
10 changes: 5 additions & 5 deletions role/manager_org_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"errors"

"github.com/cloudfoundry-community/go-cfclient/v3/resource"
uaaclient "github.com/cloudfoundry-community/go-uaa"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
. "github.com/vmwarepivotallabs/cf-mgmt/role"
Expand All @@ -18,21 +19,21 @@ var _ = Describe("given RoleManager", func() {
roleClient *fakes.FakeCFRoleClient
userClient *fakes.FakeCFUserClient
jobClient *fakes.FakeCFJobClient
uaaFake *uaafakes.FakeManager
uaaFake *uaafakes.FakeUaa
)
BeforeEach(func() {
roleClient = new(fakes.FakeCFRoleClient)
userClient = new(fakes.FakeCFUserClient)
jobClient = new(fakes.FakeCFJobClient)
uaaFake = new(uaafakes.FakeManager)
uaaFake = new(uaafakes.FakeUaa)
})
Context("Role Manager", func() {
BeforeEach(func() {
roleManager = &DefaultManager{
RoleClient: roleClient,
UserClient: userClient,
JobClient: jobClient,
UAAMgr: uaaFake,
UAAMgr: &uaa.DefaultUAAManager{Client: uaaFake},
}
})

Expand Down Expand Up @@ -181,8 +182,7 @@ var _ = Describe("given RoleManager", func() {
})
Context("Remove", func() {
BeforeEach(func() {
uaaUsers := &uaa.Users{}
uaaFake.ListUsersReturns(uaaUsers, nil)
uaaFake.ListUsersReturns([]uaaclient.User{}, uaaclient.Page{StartIndex: 1, TotalResults: 0, ItemsPerPage: 500}, nil)
userClient.ListAllReturns([]*resource.User{
{GUID: "test-user-guid"},
}, nil)
Expand Down
10 changes: 5 additions & 5 deletions role/manager_space_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"errors"

"github.com/cloudfoundry-community/go-cfclient/v3/resource"
uaaclient "github.com/cloudfoundry-community/go-uaa"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
. "github.com/vmwarepivotallabs/cf-mgmt/role"
Expand All @@ -18,28 +19,27 @@ var _ = Describe("given RoleManager", func() {
roleClient *fakes.FakeCFRoleClient
userClient *fakes.FakeCFUserClient
jobClient *fakes.FakeCFJobClient
uaaFake *uaafakes.FakeManager
uaaFake *uaafakes.FakeUaa
)
BeforeEach(func() {
roleClient = new(fakes.FakeCFRoleClient)
userClient = new(fakes.FakeCFUserClient)
jobClient = new(fakes.FakeCFJobClient)
uaaFake = new(uaafakes.FakeManager)
uaaFake = new(uaafakes.FakeUaa)
})
Context("Role Manager", func() {
BeforeEach(func() {
roleManager = &DefaultManager{
RoleClient: roleClient,
UserClient: userClient,
JobClient: jobClient,
UAAMgr: uaaFake,
UAAMgr: &uaa.DefaultUAAManager{Client: uaaFake},
}
})

Context("Remove", func() {
BeforeEach(func() {
uaaUsers := &uaa.Users{}
uaaFake.ListUsersReturns(uaaUsers, nil)
uaaFake.ListUsersReturns([]uaaclient.User{}, uaaclient.Page{StartIndex: 1, TotalResults: 0, ItemsPerPage: 500}, nil)
userClient.ListAllReturns([]*resource.User{
{GUID: "test-user-guid"},
}, nil)
Expand Down
2 changes: 2 additions & 0 deletions role/role_users.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ func (r *RoleUsers) OrphanedUsers() []string {

func (r *RoleUsers) HasUserForGUID(userName, userGUID string) bool {
userList := r.users[strings.ToLower(userName)]
lo.G.Debugf("Users %v found for userName [%s] and guid [%s]", userList, userName, userGUID)
for _, user := range userList {
if strings.EqualFold(user.GUID, userGUID) {
return true
Expand All @@ -65,6 +66,7 @@ func (r *RoleUsers) HasUserForGUID(userName, userGUID string) bool {

func (r *RoleUsers) HasUserForOrigin(userName, origin string) bool {
userList := r.users[strings.ToLower(userName)]
lo.G.Debugf("Users %v found for userName [%s] and origin [%s]", userList, userName, origin)
for _, user := range userList {
if strings.EqualFold(user.Origin, origin) {
return true
Expand Down
7 changes: 4 additions & 3 deletions space/spaces_metadata_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (
. "github.com/onsi/gomega"
"github.com/vmwarepivotallabs/cf-mgmt/config"
configfakes "github.com/vmwarepivotallabs/cf-mgmt/config/fakes"
"github.com/vmwarepivotallabs/cf-mgmt/uaa"

orgfakes "github.com/vmwarepivotallabs/cf-mgmt/organizationreader/fakes"
"github.com/vmwarepivotallabs/cf-mgmt/space"
Expand All @@ -15,7 +16,7 @@ import (

var _ = Describe("given SpaceManager", func() {
var (
fakeUaa *uaafakes.FakeManager
fakeUaa *uaafakes.FakeUaa
fakeOrgMgr *orgfakes.FakeReader
spaceManager space.DefaultManager
fakeReader *configfakes.FakeReader
Expand All @@ -24,14 +25,14 @@ var _ = Describe("given SpaceManager", func() {
)

BeforeEach(func() {
fakeUaa = new(uaafakes.FakeManager)
fakeUaa = new(uaafakes.FakeUaa)
fakeOrgMgr = new(orgfakes.FakeReader)
fakeReader = new(configfakes.FakeReader)
fakeSpaceClient = new(spacefakes.FakeCFSpaceClient)
fakeSpaceFeatureClient = new(spacefakes.FakeCFSpaceFeatureClient)
spaceManager = space.DefaultManager{
Cfg: fakeReader,
UAAMgr: fakeUaa,
UAAMgr: &uaa.DefaultUAAManager{Client: fakeUaa},
OrgReader: fakeOrgMgr,
Peek: false,
SpaceClient: fakeSpaceClient,
Expand Down
7 changes: 4 additions & 3 deletions space/spaces_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import (
. "github.com/onsi/gomega"
"github.com/vmwarepivotallabs/cf-mgmt/config"
configfakes "github.com/vmwarepivotallabs/cf-mgmt/config/fakes"
"github.com/vmwarepivotallabs/cf-mgmt/uaa"

"time"

Expand All @@ -20,7 +21,7 @@ import (

var _ = Describe("given SpaceManager", func() {
var (
fakeUaa *uaafakes.FakeManager
fakeUaa *uaafakes.FakeUaa
fakeOrgMgr *orgfakes.FakeReader
spaceManager space.DefaultManager
fakeReader *configfakes.FakeReader
Expand All @@ -29,14 +30,14 @@ var _ = Describe("given SpaceManager", func() {
)

BeforeEach(func() {
fakeUaa = new(uaafakes.FakeManager)
fakeUaa = new(uaafakes.FakeUaa)
fakeOrgMgr = new(orgfakes.FakeReader)
fakeReader = new(configfakes.FakeReader)
fakeSpaceClient = new(spacefakes.FakeCFSpaceClient)
fakeSpaceFeatureClient = new(spacefakes.FakeCFSpaceFeatureClient)
spaceManager = space.DefaultManager{
Cfg: fakeReader,
UAAMgr: fakeUaa,
UAAMgr: &uaa.DefaultUAAManager{Client: fakeUaa},
OrgReader: fakeOrgMgr,
Peek: false,
SpaceClient: fakeSpaceClient,
Expand Down
2 changes: 1 addition & 1 deletion uaa/definition.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package uaa

//go:generate go run github.com/maxbrunsfeld/counterfeiter/v6 -generate
//counterfeiter:generate -o fakes/fake_mgr.go uaa.go Manager
//counterfeiter:generate -o fakes/uaa_client.go uaa.go uaa
Loading