summaryrefslogtreecommitdiffstats
path: root/nova/api
diff options
context:
space:
mode:
authorVishvananda Ishaya <vishvananda@gmail.com>2011-08-17 19:31:01 -0700
committerVishvananda Ishaya <vishvananda@gmail.com>2011-08-17 19:31:01 -0700
commit90650e5becb541790a8949edebaf0bff0ceb8f5b (patch)
treea49ef31d55771ed57bdb42cd070a3a9ee6c8558d /nova/api
parentdd749989dd30fdc49af7e4af453e91faf3914b75 (diff)
make admin context the default, clean up pipelib
Diffstat (limited to 'nova/api')
-rw-r--r--nova/api/auth.py18
-rw-r--r--nova/api/ec2/admin.py4
2 files changed, 21 insertions, 1 deletions
diff --git a/nova/api/auth.py b/nova/api/auth.py
index cd3e3e8a0..050216fd7 100644
--- a/nova/api/auth.py
+++ b/nova/api/auth.py
@@ -45,6 +45,24 @@ class InjectContext(wsgi.Middleware):
return self.application
+class AdminContext(wsgi.Middleware):
+ """Return an admin context no matter what"""
+
+ @webob.dec.wsgify(RequestClass=wsgi.Request)
+ def __call__(self, req):
+ # Build a context, including the auth_token...
+ remote_address = req.remote_addr
+ if FLAGS.use_forwarded_for:
+ remote_address = req.headers.get('X-Forwarded-For', remote_address)
+ ctx = context.RequestContext('admin',
+ 'admin',
+ is_admin=True,
+ remote_address=remote_address)
+
+ req.environ['nova.context'] = ctx
+ return self.application
+
+
class KeystoneContext(wsgi.Middleware):
"""Make a request context from keystone headers"""
diff --git a/nova/api/ec2/admin.py b/nova/api/ec2/admin.py
index df7876b9d..dfbbc0a2b 100644
--- a/nova/api/ec2/admin.py
+++ b/nova/api/ec2/admin.py
@@ -283,8 +283,10 @@ class AdminController(object):
# NOTE(vish) import delayed because of __init__.py
from nova.cloudpipe import pipelib
pipe = pipelib.CloudPipe()
+ proj = manager.AuthManager().get_project(project)
+ user_id = proj.project_manager_id
try:
- pipe.launch_vpn_instance(project)
+ pipe.launch_vpn_instance(project, user_id)
except db.NoMoreNetworks:
raise exception.ApiError("Unable to claim IP for VPN instance"
", ensure it isn't running, and try "