Pass roles manager to user manager

This is part of breaking a cyclical dependency where the client has a
reference to the manager but the manager has a reference to the client.

To be able to pass in an adapter to the managers we need to remove the
client specific usages of manager, including referring to other managers
via the client.

Change-Id: I8fba7ece05e33d519eb31994a072275598ba76ea
This commit is contained in:
Jamie Lennox
2014-07-04 09:51:04 +10:00
parent 2635c994e0
commit dfdb206a66
2 changed files with 7 additions and 3 deletions

View File

@@ -135,7 +135,7 @@ class Client(httpclient.HTTPClient):
self.services = services.ServiceManager(self) self.services = services.ServiceManager(self)
self.tenants = tenants.TenantManager(self) self.tenants = tenants.TenantManager(self)
self.tokens = tokens.TokenManager(self) self.tokens = tokens.TokenManager(self)
self.users = users.UserManager(self) self.users = users.UserManager(self, self.roles)
# extensions # extensions
self.ec2 = ec2.CredentialsManager(self) self.ec2 = ec2.CredentialsManager(self)

View File

@@ -35,6 +35,10 @@ class UserManager(base.ManagerWithFind):
"""Manager class for manipulating Keystone users.""" """Manager class for manipulating Keystone users."""
resource_class = User resource_class = User
def __init__(self, client, role_manager):
super(UserManager, self).__init__(client)
self.role_manager = role_manager
def get(self, user): def get(self, user):
return self._get("/users/%s" % base.getid(user), "user") return self._get("/users/%s" % base.getid(user), "user")
@@ -122,5 +126,5 @@ class UserManager(base.ManagerWithFind):
"users") "users")
def list_roles(self, user, tenant=None): def list_roles(self, user, tenant=None):
return self.api.roles.roles_for_user(base.getid(user), return self.role_manager.roles_for_user(base.getid(user),
base.getid(tenant)) base.getid(tenant))