diff options
| author | Vishvananda Ishaya <vishvananda@gmail.com> | 2010-07-28 22:49:11 +0000 |
|---|---|---|
| committer | Tarmac <> | 2010-07-28 22:49:11 +0000 |
| commit | c0e3fd6d728abe012f10a55c4f2bf2c895a6c724 (patch) | |
| tree | 3bfd32c69f2e272470396153e7528af152ccf81c | |
| parent | d32e41bc6237f1413e663144ab72d4a89627b71a (diff) | |
| parent | 2ecdf8cdd81df36ef34fc7522aae3f5f1b217d81 (diff) | |
| download | nova-c0e3fd6d728abe012f10a55c4f2bf2c895a6c724.tar.gz nova-c0e3fd6d728abe012f10a55c4f2bf2c895a6c724.tar.xz nova-c0e3fd6d728abe012f10a55c4f2bf2c895a6c724.zip | |
Adds optional user param to the get projects command.
| -rw-r--r-- | nova/auth/ldapdriver.py | 7 | ||||
| -rw-r--r-- | nova/auth/manager.py | 6 | ||||
| -rw-r--r-- | nova/tests/auth_unittest.py | 6 |
3 files changed, 14 insertions, 5 deletions
diff --git a/nova/auth/ldapdriver.py b/nova/auth/ldapdriver.py index 1591c88e9..055e8332b 100644 --- a/nova/auth/ldapdriver.py +++ b/nova/auth/ldapdriver.py @@ -120,10 +120,13 @@ class LdapDriver(object): '(objectclass=novaKeyPair)') 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""" + filter = '(objectclass=novaProject)' + if uid: + filter = "(&%s(member=%s))" % (filter, self.__uid_to_dn(uid)) attrs = self.__find_objects(FLAGS.ldap_project_subtree, - '(objectclass=novaProject)') + filter) return [self.__to_project(attr) for attr in attrs] def create_user(self, name, access_key, secret_key, is_admin): diff --git a/nova/auth/manager.py b/nova/auth/manager.py index 66027f6c2..7307f673b 100644 --- a/nova/auth/manager.py +++ b/nova/auth/manager.py @@ -547,10 +547,10 @@ class AuthManager(object): if project_dict: return Project(**project_dict) - def get_projects(self): - """Retrieves list of all projects""" + def get_projects(self, user=None): + """Retrieves list of projects, optionally filtered by user""" with self.driver() as drv: - project_list = drv.get_projects() + project_list = drv.get_projects(User.safe_id(user)) if not project_list: return [] return [Project(**project_dict) for project_dict in project_list] diff --git a/nova/tests/auth_unittest.py b/nova/tests/auth_unittest.py index 0cd377b70..6f35bab4e 100644 --- a/nova/tests/auth_unittest.py +++ b/nova/tests/auth_unittest.py @@ -193,9 +193,15 @@ class AuthTestCase(test.BaseTestCase): for vpn in vpns: 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): self.manager.delete_project('testproj') self.assertFalse(filter(lambda p: p.name == 'testproj', self.manager.get_projects())) + self.manager.delete_project('testproj2') def test_999_can_delete_users(self): self.manager.delete_user('test1') |
