More merges from trunk. Not everything came over the first time.
This commit is contained in:
@@ -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):
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -103,7 +103,7 @@ class BasicModel(object):
|
||||
|
||||
@classmethod
|
||||
def _redis_name(cls):
|
||||
return cls.override_type or cls.__name__
|
||||
return cls.override_type or cls.__name__.lower()
|
||||
|
||||
@classmethod
|
||||
def lookup(cls, identifier):
|
||||
|
||||
@@ -266,7 +266,7 @@ class APIRequestHandler(tornado.web.RequestHandler):
|
||||
|
||||
# Authenticate the request.
|
||||
try:
|
||||
(user, project) = users.UserManager.instance().authenticate(
|
||||
(user, project) = manager.AuthManager().authenticate(
|
||||
access,
|
||||
signature,
|
||||
auth_params,
|
||||
|
||||
@@ -516,8 +516,12 @@ class CloudController(object):
|
||||
|
||||
# get defaults from imagestore
|
||||
image_id = image['imageId']
|
||||
kernel_id = image.get('kernelId', None)
|
||||
ramdisk_id = image.get('ramdiskId', None)
|
||||
kernel_id = image.get('kernelId', FLAGS.default_kernel)
|
||||
ramdisk_id = image.get('ramdiskId', FLAGS.default_ramdisk)
|
||||
|
||||
# make sure we have access to kernel and ramdisk
|
||||
self._get_image(context, kernel_id)
|
||||
self._get_image(context, ramdisk_id)
|
||||
|
||||
# API parameters overrides of defaults
|
||||
kernel_id = kwargs.get('kernel_id', kernel_id)
|
||||
|
||||
@@ -205,12 +205,13 @@ class ProcessPool(object):
|
||||
self._pool.release()
|
||||
return rv
|
||||
|
||||
_instance = None
|
||||
def SharedPool():
|
||||
global _instance
|
||||
if _instance is None:
|
||||
_instance = ProcessPool()
|
||||
return _instance
|
||||
class SharedPool(ProcessPool):
|
||||
_instance = None
|
||||
def __new__(cls, *args, **kwargs):
|
||||
if not cls._instance:
|
||||
cls._instance = super(SharedPool, cls).__new__(
|
||||
cls, *args, **kwargs)
|
||||
return cls._instance
|
||||
|
||||
def simple_execute(cmd, **kwargs):
|
||||
return SharedPool().simple_execute(cmd, **kwargs)
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -120,10 +120,3 @@ class ProcessTestCase(test.TrialTestCase):
|
||||
pool2 = process.SharedPool()
|
||||
self.assert_(id(pool1) == id(pool2))
|
||||
|
||||
def test_shared_pool_works_as_singleton(self):
|
||||
d1 = process.simple_execute('sleep 1')
|
||||
d2 = process.simple_execute('sleep 0.005')
|
||||
# lp609749: would have failed with
|
||||
# exceptions.AssertionError: Someone released me too many times:
|
||||
# too many tokens!
|
||||
return d1
|
||||
|
||||
Reference in New Issue
Block a user