cleaned up most of the issues
This commit is contained in:
		@@ -23,6 +23,7 @@ Auth driver using the DB as its backend.
 | 
				
			|||||||
import logging
 | 
					import logging
 | 
				
			||||||
import sys
 | 
					import sys
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from nova import context
 | 
				
			||||||
from nova import exception
 | 
					from nova import exception
 | 
				
			||||||
from nova import db
 | 
					from nova import db
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -46,26 +47,26 @@ class DbDriver(object):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    def get_user(self, uid):
 | 
					    def get_user(self, uid):
 | 
				
			||||||
        """Retrieve user by id"""
 | 
					        """Retrieve user by id"""
 | 
				
			||||||
        return self._db_user_to_auth_user(db.user_get({}, uid))
 | 
					        return self._db_user_to_auth_user(db.user_get(context.get_admin_context(), uid))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def get_user_from_access_key(self, access):
 | 
					    def get_user_from_access_key(self, access):
 | 
				
			||||||
        """Retrieve user by access key"""
 | 
					        """Retrieve user by access key"""
 | 
				
			||||||
        return self._db_user_to_auth_user(db.user_get_by_access_key({}, access))
 | 
					        return self._db_user_to_auth_user(db.user_get_by_access_key(context.get_admin_context(), access))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def get_project(self, pid):
 | 
					    def get_project(self, pid):
 | 
				
			||||||
        """Retrieve project by id"""
 | 
					        """Retrieve project by id"""
 | 
				
			||||||
        return self._db_project_to_auth_projectuser(db.project_get({}, pid))
 | 
					        return self._db_project_to_auth_projectuser(db.project_get(context.get_admin_context(), pid))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def get_users(self):
 | 
					    def get_users(self):
 | 
				
			||||||
        """Retrieve list of users"""
 | 
					        """Retrieve list of users"""
 | 
				
			||||||
        return [self._db_user_to_auth_user(user) for user in db.user_get_all({})]
 | 
					        return [self._db_user_to_auth_user(user) for user in db.user_get_all(context.get_admin_context())]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def get_projects(self, uid=None):
 | 
					    def get_projects(self, uid=None):
 | 
				
			||||||
        """Retrieve list of projects"""
 | 
					        """Retrieve list of projects"""
 | 
				
			||||||
        if uid:
 | 
					        if uid:
 | 
				
			||||||
            result = db.project_get_by_user({}, uid)
 | 
					            result = db.project_get_by_user(context.get_admin_context(), uid)
 | 
				
			||||||
        else:
 | 
					        else:
 | 
				
			||||||
            result = db.project_get_all({})
 | 
					            result = db.project_get_all(context.get_admin_context())
 | 
				
			||||||
        return [self._db_project_to_auth_projectuser(proj) for proj in result]
 | 
					        return [self._db_project_to_auth_projectuser(proj) for proj in result]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def create_user(self, name, access_key, secret_key, is_admin):
 | 
					    def create_user(self, name, access_key, secret_key, is_admin):
 | 
				
			||||||
@@ -76,7 +77,7 @@ class DbDriver(object):
 | 
				
			|||||||
                   'is_admin'   : is_admin
 | 
					                   'is_admin'   : is_admin
 | 
				
			||||||
                 }
 | 
					                 }
 | 
				
			||||||
        try:
 | 
					        try:
 | 
				
			||||||
            user_ref = db.user_create({}, values)
 | 
					            user_ref = db.user_create(context.get_admin_context(), values)
 | 
				
			||||||
            return self._db_user_to_auth_user(user_ref)
 | 
					            return self._db_user_to_auth_user(user_ref)
 | 
				
			||||||
        except exception.Duplicate, e:
 | 
					        except exception.Duplicate, e:
 | 
				
			||||||
            raise exception.Duplicate('User %s already exists' % name)
 | 
					            raise exception.Duplicate('User %s already exists' % name)
 | 
				
			||||||
@@ -98,7 +99,7 @@ class DbDriver(object):
 | 
				
			|||||||
    def create_project(self, name, manager_uid,
 | 
					    def create_project(self, name, manager_uid,
 | 
				
			||||||
                       description=None, member_uids=None):
 | 
					                       description=None, member_uids=None):
 | 
				
			||||||
        """Create a project"""
 | 
					        """Create a project"""
 | 
				
			||||||
        manager = db.user_get({}, manager_uid)
 | 
					        manager = db.user_get(context.get_admin_context(), manager_uid)
 | 
				
			||||||
        if not manager:
 | 
					        if not manager:
 | 
				
			||||||
            raise exception.NotFound("Project can't be created because "
 | 
					            raise exception.NotFound("Project can't be created because "
 | 
				
			||||||
                                     "manager %s doesn't exist" % manager_uid)
 | 
					                                     "manager %s doesn't exist" % manager_uid)
 | 
				
			||||||
@@ -113,7 +114,7 @@ class DbDriver(object):
 | 
				
			|||||||
        members = set([manager])
 | 
					        members = set([manager])
 | 
				
			||||||
        if member_uids != None:
 | 
					        if member_uids != None:
 | 
				
			||||||
            for member_uid in member_uids:
 | 
					            for member_uid in member_uids:
 | 
				
			||||||
                member = db.user_get({}, member_uid)
 | 
					                member = db.user_get(context.get_admin_context(), member_uid)
 | 
				
			||||||
                if not member:
 | 
					                if not member:
 | 
				
			||||||
                    raise exception.NotFound("Project can't be created "
 | 
					                    raise exception.NotFound("Project can't be created "
 | 
				
			||||||
                                             "because user %s doesn't exist"
 | 
					                                             "because user %s doesn't exist"
 | 
				
			||||||
@@ -126,17 +127,20 @@ class DbDriver(object):
 | 
				
			|||||||
                   'description': description }
 | 
					                   'description': description }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        try:
 | 
					        try:
 | 
				
			||||||
            project = db.project_create({}, values)
 | 
					            project = db.project_create(context.get_admin_context(), values)
 | 
				
			||||||
        except exception.Duplicate:
 | 
					        except exception.Duplicate:
 | 
				
			||||||
            raise exception.Duplicate("Project can't be created because "
 | 
					            raise exception.Duplicate("Project can't be created because "
 | 
				
			||||||
                                      "project %s already exists" % name)
 | 
					                                      "project %s already exists" % name)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        for member in members:
 | 
					        for member in members:
 | 
				
			||||||
            db.project_add_member({}, project['id'], member['id'])
 | 
					            db.project_add_member(context.get_admin_context(),
 | 
				
			||||||
 | 
					                                  project['id'],
 | 
				
			||||||
 | 
					                                  member['id'])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # This looks silly, but ensures that the members element has been
 | 
					        # This looks silly, but ensures that the members element has been
 | 
				
			||||||
        # correctly populated
 | 
					        # correctly populated
 | 
				
			||||||
        project_ref = db.project_get({}, project['id'])
 | 
					        project_ref = db.project_get(context.get_admin_context(),
 | 
				
			||||||
 | 
					                                     project['id'])
 | 
				
			||||||
        return self._db_project_to_auth_projectuser(project_ref)
 | 
					        return self._db_project_to_auth_projectuser(project_ref)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def modify_project(self, project_id, manager_uid=None, description=None):
 | 
					    def modify_project(self, project_id, manager_uid=None, description=None):
 | 
				
			||||||
@@ -145,7 +149,7 @@ class DbDriver(object):
 | 
				
			|||||||
            return
 | 
					            return
 | 
				
			||||||
        values = {}
 | 
					        values = {}
 | 
				
			||||||
        if manager_uid:
 | 
					        if manager_uid:
 | 
				
			||||||
            manager = db.user_get({}, manager_uid)
 | 
					            manager = db.user_get(context.get_admin_context(), manager_uid)
 | 
				
			||||||
            if not manager:
 | 
					            if not manager:
 | 
				
			||||||
                raise exception.NotFound("Project can't be modified because "
 | 
					                raise exception.NotFound("Project can't be modified because "
 | 
				
			||||||
                                          "manager %s doesn't exist" %
 | 
					                                          "manager %s doesn't exist" %
 | 
				
			||||||
@@ -154,17 +158,21 @@ class DbDriver(object):
 | 
				
			|||||||
        if description:
 | 
					        if description:
 | 
				
			||||||
            values['description'] = description
 | 
					            values['description'] = description
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        db.project_update({}, project_id, values)
 | 
					        db.project_update(context.get_admin_context(), project_id, values)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def add_to_project(self, uid, project_id):
 | 
					    def add_to_project(self, uid, project_id):
 | 
				
			||||||
        """Add user to project"""
 | 
					        """Add user to project"""
 | 
				
			||||||
        user, project = self._validate_user_and_project(uid, project_id)
 | 
					        user, project = self._validate_user_and_project(uid, project_id)
 | 
				
			||||||
        db.project_add_member({}, project['id'], user['id'])
 | 
					        db.project_add_member(context.get_admin_context(),
 | 
				
			||||||
 | 
					                              project['id'],
 | 
				
			||||||
 | 
					                              user['id'])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def remove_from_project(self, uid, project_id):
 | 
					    def remove_from_project(self, uid, project_id):
 | 
				
			||||||
        """Remove user from project"""
 | 
					        """Remove user from project"""
 | 
				
			||||||
        user, project = self._validate_user_and_project(uid, project_id)
 | 
					        user, project = self._validate_user_and_project(uid, project_id)
 | 
				
			||||||
        db.project_remove_member({}, project['id'], user['id'])
 | 
					        db.project_remove_member(context.get_admin_context(),
 | 
				
			||||||
 | 
					                                 project['id'],
 | 
				
			||||||
 | 
					                                 user['id'])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def is_in_project(self, uid, project_id):
 | 
					    def is_in_project(self, uid, project_id):
 | 
				
			||||||
        """Check if user is in project"""
 | 
					        """Check if user is in project"""
 | 
				
			||||||
@@ -183,34 +191,37 @@ class DbDriver(object):
 | 
				
			|||||||
    def add_role(self, uid, role, project_id=None):
 | 
					    def add_role(self, uid, role, project_id=None):
 | 
				
			||||||
        """Add role for user (or user and project)"""
 | 
					        """Add role for user (or user and project)"""
 | 
				
			||||||
        if not project_id:
 | 
					        if not project_id:
 | 
				
			||||||
            db.user_add_role({}, uid, role)
 | 
					            db.user_add_role(context.get_admin_context(), uid, role)
 | 
				
			||||||
            return
 | 
					            return
 | 
				
			||||||
        db.user_add_project_role({}, uid, project_id, role)
 | 
					        db.user_add_project_role(context.get_admin_context(),
 | 
				
			||||||
 | 
					                                 uid, project_id, role)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def remove_role(self, uid, role, project_id=None):
 | 
					    def remove_role(self, uid, role, project_id=None):
 | 
				
			||||||
        """Remove role for user (or user and project)"""
 | 
					        """Remove role for user (or user and project)"""
 | 
				
			||||||
        if not project_id:
 | 
					        if not project_id:
 | 
				
			||||||
            db.user_remove_role({}, uid, role)
 | 
					            db.user_remove_role(context.get_admin_context(), uid, role)
 | 
				
			||||||
            return
 | 
					            return
 | 
				
			||||||
        db.user_remove_project_role({}, uid, project_id, role)
 | 
					        db.user_remove_project_role(context.get_admin_context(),
 | 
				
			||||||
 | 
					                                    uid, project_id, role)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def get_user_roles(self, uid, project_id=None):
 | 
					    def get_user_roles(self, uid, project_id=None):
 | 
				
			||||||
        """Retrieve list of roles for user (or user and project)"""
 | 
					        """Retrieve list of roles for user (or user and project)"""
 | 
				
			||||||
        if project_id is None:
 | 
					        if project_id is None:
 | 
				
			||||||
            roles = db.user_get_roles({}, uid)
 | 
					            roles = db.user_get_roles(context.get_admin_context(), uid)
 | 
				
			||||||
            return roles
 | 
					            return roles
 | 
				
			||||||
        else:
 | 
					        else:
 | 
				
			||||||
            roles = db.user_get_roles_for_project({}, uid, project_id)
 | 
					            roles = db.user_get_roles_for_project(context.get_admin_context(),
 | 
				
			||||||
 | 
					                                                  uid, project_id)
 | 
				
			||||||
            return roles
 | 
					            return roles
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def delete_user(self, id):
 | 
					    def delete_user(self, id):
 | 
				
			||||||
        """Delete a user"""
 | 
					        """Delete a user"""
 | 
				
			||||||
        user = db.user_get({}, id)
 | 
					        user = db.user_get(context.get_admin_context(), id)
 | 
				
			||||||
        db.user_delete({}, user['id'])
 | 
					        db.user_delete(context.get_admin_context(), user['id'])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def delete_project(self, project_id):
 | 
					    def delete_project(self, project_id):
 | 
				
			||||||
        """Delete a project"""
 | 
					        """Delete a project"""
 | 
				
			||||||
        db.project_delete({}, project_id)
 | 
					        db.project_delete(context.get_admin_context(), project_id)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def modify_user(self, uid, access_key=None, secret_key=None, admin=None):
 | 
					    def modify_user(self, uid, access_key=None, secret_key=None, admin=None):
 | 
				
			||||||
        """Modify an existing user"""
 | 
					        """Modify an existing user"""
 | 
				
			||||||
@@ -223,13 +234,13 @@ class DbDriver(object):
 | 
				
			|||||||
            values['secret_key'] = secret_key
 | 
					            values['secret_key'] = secret_key
 | 
				
			||||||
        if admin is not None:
 | 
					        if admin is not None:
 | 
				
			||||||
            values['is_admin'] = admin
 | 
					            values['is_admin'] = admin
 | 
				
			||||||
        db.user_update({}, uid, values)
 | 
					        db.user_update(context.get_admin_context(), uid, values)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def _validate_user_and_project(self, user_id, project_id):
 | 
					    def _validate_user_and_project(self, user_id, project_id):
 | 
				
			||||||
        user = db.user_get({}, user_id)
 | 
					        user = db.user_get(context.get_admin_context(), user_id)
 | 
				
			||||||
        if not user:
 | 
					        if not user:
 | 
				
			||||||
            raise exception.NotFound('User "%s" not found' % user_id)
 | 
					            raise exception.NotFound('User "%s" not found' % user_id)
 | 
				
			||||||
        project = db.project_get({}, project_id)
 | 
					        project = db.project_get(context.get_admin_context(), project_id)
 | 
				
			||||||
        if not project:
 | 
					        if not project:
 | 
				
			||||||
            raise exception.NotFound('Project "%s" not found' % project_id)
 | 
					            raise exception.NotFound('Project "%s" not found' % project_id)
 | 
				
			||||||
        return user, project
 | 
					        return user, project
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										13
									
								
								nova/test.py
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								nova/test.py
									
									
									
									
									
								
							@@ -32,6 +32,7 @@ from tornado import ioloop
 | 
				
			|||||||
from twisted.internet import defer
 | 
					from twisted.internet import defer
 | 
				
			||||||
from twisted.trial import unittest
 | 
					from twisted.trial import unittest
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from nova import context
 | 
				
			||||||
from nova import db
 | 
					from nova import db
 | 
				
			||||||
from nova import fakerabbit
 | 
					from nova import fakerabbit
 | 
				
			||||||
from nova import flags
 | 
					from nova import flags
 | 
				
			||||||
@@ -64,8 +65,9 @@ class TrialTestCase(unittest.TestCase):
 | 
				
			|||||||
        #             now that we have some required db setup for the system
 | 
					        #             now that we have some required db setup for the system
 | 
				
			||||||
        #             to work properly.
 | 
					        #             to work properly.
 | 
				
			||||||
        self.start = datetime.datetime.utcnow()
 | 
					        self.start = datetime.datetime.utcnow()
 | 
				
			||||||
        if db.network_count(None) != 5:
 | 
					        ctxt = context.get_admin_context()
 | 
				
			||||||
            network_manager.VlanManager().create_networks(None,
 | 
					        if db.network_count(ctxt) != 5:
 | 
				
			||||||
 | 
					            network_manager.VlanManager().create_networks(ctxt,
 | 
				
			||||||
                                                          FLAGS.fixed_range,
 | 
					                                                          FLAGS.fixed_range,
 | 
				
			||||||
                                                          5, 16,
 | 
					                                                          5, 16,
 | 
				
			||||||
                                                          FLAGS.vlan_start,
 | 
					                                                          FLAGS.vlan_start,
 | 
				
			||||||
@@ -87,8 +89,9 @@ class TrialTestCase(unittest.TestCase):
 | 
				
			|||||||
        self.stubs.SmartUnsetAll()
 | 
					        self.stubs.SmartUnsetAll()
 | 
				
			||||||
        self.mox.VerifyAll()
 | 
					        self.mox.VerifyAll()
 | 
				
			||||||
        # NOTE(vish): Clean up any ips associated during the test.
 | 
					        # NOTE(vish): Clean up any ips associated during the test.
 | 
				
			||||||
        db.fixed_ip_disassociate_all_by_timeout(None, FLAGS.host, self.start)
 | 
					        ctxt = context.get_admin_context()
 | 
				
			||||||
        db.network_disassociate_all(None)
 | 
					        db.fixed_ip_disassociate_all_by_timeout(ctxt, FLAGS.host, self.start)
 | 
				
			||||||
 | 
					        db.network_disassociate_all(ctxt)
 | 
				
			||||||
        rpc.Consumer.attach_to_twisted = self.originalAttach
 | 
					        rpc.Consumer.attach_to_twisted = self.originalAttach
 | 
				
			||||||
        for x in self.injected:
 | 
					        for x in self.injected:
 | 
				
			||||||
            try:
 | 
					            try:
 | 
				
			||||||
@@ -98,7 +101,7 @@ class TrialTestCase(unittest.TestCase):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        if FLAGS.fake_rabbit:
 | 
					        if FLAGS.fake_rabbit:
 | 
				
			||||||
            fakerabbit.reset_all()
 | 
					            fakerabbit.reset_all()
 | 
				
			||||||
        db.security_group_destroy_all(None)
 | 
					        db.security_group_destroy_all(ctxt)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        super(TrialTestCase, self).tearDown()
 | 
					        super(TrialTestCase, self).tearDown()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,11 +17,11 @@
 | 
				
			|||||||
from xml.etree.ElementTree import fromstring as xml_to_tree
 | 
					from xml.etree.ElementTree import fromstring as xml_to_tree
 | 
				
			||||||
from xml.dom.minidom import parseString as xml_to_dom
 | 
					from xml.dom.minidom import parseString as xml_to_dom
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from nova import context
 | 
				
			||||||
from nova import db
 | 
					from nova import db
 | 
				
			||||||
from nova import flags
 | 
					from nova import flags
 | 
				
			||||||
from nova import test
 | 
					from nova import test
 | 
				
			||||||
from nova import utils
 | 
					from nova import utils
 | 
				
			||||||
from nova.api import context
 | 
					 | 
				
			||||||
from nova.api.ec2 import cloud
 | 
					from nova.api.ec2 import cloud
 | 
				
			||||||
from nova.auth import manager
 | 
					from nova.auth import manager
 | 
				
			||||||
from nova.virt import libvirt_conn
 | 
					from nova.virt import libvirt_conn
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user