package cli import ( "github.com/openshift/origin/pkg/auth/ldaputil" "github.com/openshift/origin/pkg/auth/ldaputil/ldapclient" "github.com/openshift/origin/pkg/cmd/admin/groups/sync" "github.com/openshift/origin/pkg/cmd/admin/groups/sync/ad" "github.com/openshift/origin/pkg/cmd/admin/groups/sync/interfaces" "github.com/openshift/origin/pkg/cmd/server/api" ) var _ SyncBuilder = &ADBuilder{} var _ PruneBuilder = &ADBuilder{} type ADBuilder struct { ClientConfig ldapclient.Config Config *api.ActiveDirectoryConfig adLDAPInterface *ad.ADLDAPInterface } func (b *ADBuilder) GetGroupLister() (interfaces.LDAPGroupLister, error) { return b.getADLDAPInterface() } func (b *ADBuilder) GetGroupNameMapper() (interfaces.LDAPGroupNameMapper, error) { return &syncgroups.DNLDAPGroupNameMapper{}, nil } func (b *ADBuilder) GetUserNameMapper() (interfaces.LDAPUserNameMapper, error) { return syncgroups.NewUserNameMapper(b.Config.UserNameAttributes), nil } func (b *ADBuilder) GetGroupMemberExtractor() (interfaces.LDAPMemberExtractor, error) { return b.getADLDAPInterface() } func (b *ADBuilder) getADLDAPInterface() (*ad.ADLDAPInterface, error) { if b.adLDAPInterface != nil { return b.adLDAPInterface, nil } userQuery, err := ldaputil.NewLDAPQuery(b.Config.AllUsersQuery) if err != nil { return nil, err } b.adLDAPInterface = ad.NewADLDAPInterface(b.ClientConfig, userQuery, b.Config.GroupMembershipAttributes, b.Config.UserNameAttributes) return b.adLDAPInterface, nil } func (b *ADBuilder) GetGroupDetector() (interfaces.LDAPGroupDetector, error) { return b.getADLDAPInterface() }