Specify a filter by user for get projects

This commit is contained in:
Vishvananda Ishaya
2010-07-28 10:47:53 -07:00
parent 34a8baa096
commit 63c135a6bc
3 changed files with 14 additions and 5 deletions

View File

@@ -120,10 +120,13 @@ class LdapDriver(object):
'(objectclass=novaKeyPair)') '(objectclass=novaKeyPair)')
return [self.__to_key_pair(uid, attr) for attr in attrs] return [self.__to_key_pair(uid, attr) for attr in attrs]
def get_projects(self): def get_projects(self, uid=None):
"""Retrieve list of projects""" """Retrieve list of projects"""
filter = '(objectclass=novaProject)'
if uid:
filter = "(&%s(member=%s))" % (filter, self.__uid_to_dn(uid))
attrs = self.__find_objects(FLAGS.ldap_project_subtree, attrs = self.__find_objects(FLAGS.ldap_project_subtree,
'(objectclass=novaProject)') filter)
return [self.__to_project(attr) for attr in attrs] return [self.__to_project(attr) for attr in attrs]
def create_user(self, name, access_key, secret_key, is_admin): def create_user(self, name, access_key, secret_key, is_admin):

View File

@@ -547,10 +547,10 @@ class AuthManager(object):
if project_dict: if project_dict:
return Project(**project_dict) return Project(**project_dict)
def get_projects(self): def get_projects(self, user=None):
"""Retrieves list of all projects""" """Retrieves list of projects, optionally filtered by user"""
with self.driver() as drv: with self.driver() as drv:
project_list = drv.get_projects() project_list = drv.get_projects(User.safe_id(user))
if not project_list: if not project_list:
return [] return []
return [Project(**project_dict) for project_dict in project_list] return [Project(**project_dict) for project_dict in project_list]

View File

@@ -193,9 +193,15 @@ class AuthTestCase(test.BaseTestCase):
for vpn in vpns: for vpn in vpns:
vpn.destroy() vpn.destroy()
def test_214_can_retrieve_project_by_user(self):
project = self.manager.create_project('testproj2', 'test2', 'Another test project', ['test2'])
self.assert_(len(self.manager.get_projects()) > 1)
self.assertEqual(len(self.manager.get_projects('test2')), 1)
def test_299_can_delete_project(self): def test_299_can_delete_project(self):
self.manager.delete_project('testproj') self.manager.delete_project('testproj')
self.assertFalse(filter(lambda p: p.name == 'testproj', self.manager.get_projects())) self.assertFalse(filter(lambda p: p.name == 'testproj', self.manager.get_projects()))
self.manager.delete_project('testproj2')
def test_999_can_delete_users(self): def test_999_can_delete_users(self):
self.manager.delete_user('test1') self.manager.delete_user('test1')