summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVishvananda Ishaya <vishvananda@yahoo.com>2010-10-14 01:46:06 -0700
committerVishvananda Ishaya <vishvananda@yahoo.com>2010-10-14 01:46:06 -0700
commitf8e41d8a1e53b7fc7f4bd91815ed5e2a17dcd7da (patch)
tree62fd0e2fac1a64b289573cb2dcf70af4860654f1
parent914786b8f9d30e2762e290ef911710efcbe6d310 (diff)
downloadnova-f8e41d8a1e53b7fc7f4bd91815ed5e2a17dcd7da.tar.gz
nova-f8e41d8a1e53b7fc7f4bd91815ed5e2a17dcd7da.tar.xz
nova-f8e41d8a1e53b7fc7f4bd91815ed5e2a17dcd7da.zip
fix nosetests
-rw-r--r--nova/api/openstack/servers.py30
-rw-r--r--nova/context.py11
2 files changed, 25 insertions, 16 deletions
diff --git a/nova/api/openstack/servers.py b/nova/api/openstack/servers.py
index 8c41944d2..869ce73ca 100644
--- a/nova/api/openstack/servers.py
+++ b/nova/api/openstack/servers.py
@@ -93,6 +93,7 @@ class Controller(wsgi.Controller):
if not db_driver:
db_driver = FLAGS.db_driver
self.db_driver = utils.import_object(db_driver)
+ self.network_manager = utils.import_object(FLAGS.network_manager)
super(Controller, self).__init__()
def index(self, req):
@@ -109,7 +110,8 @@ class Controller(wsgi.Controller):
entity_maker - either _entity_detail or _entity_inst
"""
user_id = req.environ['nova.context']['user']['id']
- instance_list = self.db_driver.instance_get_all_by_user(None, user_id)
+ ctxt = context.RequestContext(user_id, user_id)
+ instance_list = self.db_driver.instance_get_all_by_user(ctxt, user_id)
limited_list = nova.api.openstack.limited(instance_list, req)
res = [entity_maker(inst)['server'] for inst in limited_list]
return _entity_list(res)
@@ -117,7 +119,8 @@ class Controller(wsgi.Controller):
def show(self, req, id):
""" Returns server details by server id """
user_id = req.environ['nova.context']['user']['id']
- inst = self.db_driver.instance_get_by_internal_id(None, int(id))
+ ctxt = context.RequestContext(user_id, user_id)
+ inst = self.db_driver.instance_get_by_internal_id(ctxt, int(id))
if inst:
if inst.user_id == user_id:
return _entity_detail(inst)
@@ -126,9 +129,10 @@ class Controller(wsgi.Controller):
def delete(self, req, id):
""" Destroys a server """
user_id = req.environ['nova.context']['user']['id']
- instance = self.db_driver.instance_get_by_internal_id(None, int(id))
+ ctxt = context.RequestContext(user_id, user_id)
+ instance = self.db_driver.instance_get_by_internal_id(ctxt, int(id))
if instance and instance['user_id'] == user_id:
- self.db_driver.instance_destroy(None, id)
+ self.db_driver.instance_destroy(ctxt, id)
return faults.Fault(exc.HTTPAccepted())
return faults.Fault(exc.HTTPNotFound())
@@ -154,13 +158,13 @@ class Controller(wsgi.Controller):
def update(self, req, id):
""" Updates the server name or password """
user_id = req.environ['nova.context']['user']['id']
+ ctxt = context.RequestContext(user_id, user_id)
inst_dict = self._deserialize(req.body, req)
if not inst_dict:
return faults.Fault(exc.HTTPUnprocessableEntity())
- ctxt = context.get_admin_context()
instance = self.db_driver.instance_get_by_internal_id(ctxt, int(id))
if not instance or instance.user_id != user_id:
return faults.Fault(exc.HTTPNotFound())
@@ -174,12 +178,13 @@ class Controller(wsgi.Controller):
""" multi-purpose method used to reboot, rebuild, and
resize a server """
user_id = req.environ['nova.context']['user']['id']
+ ctxt = context.RequestContext(user_id, user_id)
input_dict = self._deserialize(req.body, req)
try:
reboot_type = input_dict['reboot']['type']
except Exception:
raise faults.Fault(webob.exc.HTTPNotImplemented())
- inst_ref = self.db.instance_get_by_internal_id(None, int(id))
+ inst_ref = self.db.instance_get_by_internal_id(ctxt, int(id))
if not inst_ref or (inst_ref and not inst_ref.user_id == user_id):
return faults.Fault(exc.HTTPUnprocessableEntity())
cloud.reboot(id)
@@ -190,6 +195,7 @@ class Controller(wsgi.Controller):
inst = {}
user_id = req.environ['nova.context']['user']['id']
+ ctxt = context.RequestContext(user_id, user_id)
flavor_id = env['server']['flavorId']
@@ -236,12 +242,8 @@ class Controller(wsgi.Controller):
inst['vcpus'] = flavor['vcpus']
inst['local_gb'] = flavor['local_gb']
- ref = self.db_driver.instance_create(None, inst)
+ ref = self.db_driver.instance_create(ctxt, inst)
inst['id'] = ref.internal_id
- # TODO(dietz): this isn't explicitly necessary, but the networking
- # calls depend on an object with a project_id property, and therefore
- # should be cleaned up later
- api_context = context.RequestContext(user_id)
inst['mac_address'] = utils.generate_mac()
@@ -249,10 +251,10 @@ class Controller(wsgi.Controller):
inst['launch_index'] = 0
inst['hostname'] = str(ref.internal_id)
- self.db_driver.instance_update(None, inst['id'], inst)
+ self.db_driver.instance_update(ctxt, inst['id'], inst)
network_manager = utils.import_object(FLAGS.network_manager)
- address = network_manager.allocate_fixed_ip(api_context,
+ address = network_manager.allocate_fixed_ip(ctxt,
inst['id'])
# TODO(vish): This probably should be done in the scheduler
@@ -274,4 +276,4 @@ class Controller(wsgi.Controller):
FLAGS.network_topic,
{"method": "set_network_host",
"args": {"network_id": network_ref['id']}})
- return self.db_driver.queue_get_for(None, FLAGS.network_topic, host)
+ return self.db_driver.queue_get_for(context, FLAGS.network_topic, host)
diff --git a/nova/context.py b/nova/context.py
index 2a94d643d..7e2a54c04 100644
--- a/nova/context.py
+++ b/nova/context.py
@@ -23,6 +23,7 @@ RequestContext: context for requests that persist through all of nova.
import datetime
import random
+from nova import exception
from nova import utils
class RequestContext(object):
@@ -67,7 +68,10 @@ class RequestContext(object):
# file from manager.
from nova.auth import manager
if not self._user:
- self._user = manager.AuthManager().get_user(self.user_id)
+ try:
+ self._user = manager.AuthManager().get_user(self.user_id)
+ except exception.NotFound:
+ pass
return self._user
@property
@@ -76,7 +80,10 @@ class RequestContext(object):
# file from manager.
from nova.auth import manager
if not self._project:
- self._project = manager.AuthManager().get_project(self.project_id)
+ try:
+ self._project = manager.AuthManager().get_project(self.project_id)
+ except exception.NotFound:
+ pass
return self._project
def to_dict(self):