Add fake_project_id middleware for noauth
This adds a middleware for noauth that would inject a fake project_id for create requests. This would ensure that api consumers don't have to provide a fake project_id in requests. Closes-Bug: #1934039 Change-Id: I5e1de571034be41f1147c130fce66e6cf70b1369
This commit is contained in:
parent
13e96bf6bd
commit
ec550f5f52
@ -6,7 +6,7 @@ use = egg:Paste#urlmap
|
|||||||
|
|
||||||
[composite:neutronapi_v2_0]
|
[composite:neutronapi_v2_0]
|
||||||
use = call:neutron.auth:pipeline_factory
|
use = call:neutron.auth:pipeline_factory
|
||||||
noauth = cors http_proxy_to_wsgi request_id catch_errors osprofiler extensions neutronapiapp_v2_0
|
noauth = cors http_proxy_to_wsgi request_id fake_project_id catch_errors osprofiler extensions neutronapiapp_v2_0
|
||||||
keystone = cors http_proxy_to_wsgi request_id catch_errors osprofiler authtoken keystonecontext extensions neutronapiapp_v2_0
|
keystone = cors http_proxy_to_wsgi request_id catch_errors osprofiler authtoken keystonecontext extensions neutronapiapp_v2_0
|
||||||
|
|
||||||
[composite:neutronversions_composite]
|
[composite:neutronversions_composite]
|
||||||
@ -28,6 +28,9 @@ oslo_config_project = neutron
|
|||||||
paste.filter_factory = neutron.api.extensions:ProjectIdMiddleware.factory
|
paste.filter_factory = neutron.api.extensions:ProjectIdMiddleware.factory
|
||||||
oslo_config_project = neutron
|
oslo_config_project = neutron
|
||||||
|
|
||||||
|
[filter:fake_project_id]
|
||||||
|
paste.filter_factory = neutron.auth:NoauthFakeProjectId.factory
|
||||||
|
|
||||||
[filter:http_proxy_to_wsgi]
|
[filter:http_proxy_to_wsgi]
|
||||||
paste.filter_factory = oslo_middleware.http_proxy_to_wsgi:HTTPProxyToWSGI.factory
|
paste.filter_factory = oslo_middleware.http_proxy_to_wsgi:HTTPProxyToWSGI.factory
|
||||||
|
|
||||||
|
@ -39,6 +39,21 @@ class NeutronKeystoneContext(base.ConfigurableMiddleware):
|
|||||||
return self.application
|
return self.application
|
||||||
|
|
||||||
|
|
||||||
|
class NoauthFakeProjectId(base.ConfigurableMiddleware):
|
||||||
|
"""Add fake project_id for noauth auth_strategy."""
|
||||||
|
|
||||||
|
@webob.dec.wsgify
|
||||||
|
def __call__(self, req):
|
||||||
|
ctx = context.Context.from_environ(req.environ)
|
||||||
|
if not ctx.project_id:
|
||||||
|
# Inject project_id
|
||||||
|
ctx.project_id = 'fake_project_id'
|
||||||
|
# Inject the context with the admin flag set
|
||||||
|
req.environ['neutron.context'] = ctx.elevated()
|
||||||
|
|
||||||
|
return self.application
|
||||||
|
|
||||||
|
|
||||||
def pipeline_factory(loader, global_conf, **local_conf):
|
def pipeline_factory(loader, global_conf, **local_conf):
|
||||||
"""Create a paste pipeline based on the 'auth_strategy' config option."""
|
"""Create a paste pipeline based on the 'auth_strategy' config option."""
|
||||||
pipeline = local_conf[cfg.CONF.auth_strategy]
|
pipeline = local_conf[cfg.CONF.auth_strategy]
|
||||||
|
@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
features:
|
||||||
|
- When ``noauth`` auth_strategy is used, neutron no longer requires
|
||||||
|
a resource creation request to include a dummy 'project_id' in
|
||||||
|
request body. A default project_id ``fake_project_id`` would be
|
||||||
|
populated automatically in that case and would make the use of
|
||||||
|
``noauth`` usage simpler.
|
Loading…
Reference in New Issue
Block a user