From dfdb206a664268297a346a4cf899f494f7d236f7 Mon Sep 17 00:00:00 2001 From: Jamie Lennox Date: Fri, 4 Jul 2014 09:51:04 +1000 Subject: [PATCH] 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 --- keystoneclient/v2_0/client.py | 2 +- keystoneclient/v2_0/users.py | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/keystoneclient/v2_0/client.py b/keystoneclient/v2_0/client.py index 0d4e68509..08263a7a4 100644 --- a/keystoneclient/v2_0/client.py +++ b/keystoneclient/v2_0/client.py @@ -135,7 +135,7 @@ class Client(httpclient.HTTPClient): self.services = services.ServiceManager(self) self.tenants = tenants.TenantManager(self) self.tokens = tokens.TokenManager(self) - self.users = users.UserManager(self) + self.users = users.UserManager(self, self.roles) # extensions self.ec2 = ec2.CredentialsManager(self) diff --git a/keystoneclient/v2_0/users.py b/keystoneclient/v2_0/users.py index 57f036ee0..fcac0b55f 100644 --- a/keystoneclient/v2_0/users.py +++ b/keystoneclient/v2_0/users.py @@ -35,6 +35,10 @@ class UserManager(base.ManagerWithFind): """Manager class for manipulating Keystone users.""" resource_class = User + def __init__(self, client, role_manager): + super(UserManager, self).__init__(client) + self.role_manager = role_manager + def get(self, user): return self._get("/users/%s" % base.getid(user), "user") @@ -122,5 +126,5 @@ class UserManager(base.ManagerWithFind): "users") def list_roles(self, user, tenant=None): - return self.api.roles.roles_for_user(base.getid(user), - base.getid(tenant)) + return self.role_manager.roles_for_user(base.getid(user), + base.getid(tenant))