Improve Glance profiling

Put osprofiler middleware as a almost first middleware.
This allows us to:
1) Get more preciese duration. We are measuring duration of all middlewares.
2) authenticate middleware is requesting keystone, so if we init osprofiler
   before this middleware, we will get trace infomration from keystone as well.

Change-Id: I11c5d21e6e6b0bd514dee295da410b208d7c798c
This commit is contained in:
Boris Pavlovic 2014-08-18 14:59:05 +04:00
parent f2e6001c3e
commit 725ce9dfa3
3 changed files with 14 additions and 13 deletions

View File

@ -1,38 +1,38 @@
# Use this pipeline for no auth or image caching - DEFAULT
[pipeline:glance-api]
pipeline = versionnegotiation unauthenticated-context osprofiler rootapp
pipeline = versionnegotiation osprofiler unauthenticated-context rootapp
# Use this pipeline for image caching and no auth
[pipeline:glance-api-caching]
pipeline = versionnegotiation unauthenticated-context osprofiler cache rootapp
pipeline = versionnegotiation osprofiler unauthenticated-context cache rootapp
# Use this pipeline for caching w/ management interface but no auth
[pipeline:glance-api-cachemanagement]
pipeline = versionnegotiation unauthenticated-context osprofiler cache cachemanage rootapp
pipeline = versionnegotiation osprofiler unauthenticated-context cache cachemanage rootapp
# Use this pipeline for keystone auth
[pipeline:glance-api-keystone]
pipeline = versionnegotiation authtoken context osprofiler rootapp
pipeline = versionnegotiation osprofiler authtoken context rootapp
# Use this pipeline for keystone auth with image caching
[pipeline:glance-api-keystone+caching]
pipeline = versionnegotiation authtoken context osprofiler cache rootapp
pipeline = versionnegotiation osprofiler authtoken context cache rootapp
# Use this pipeline for keystone auth with caching and cache management
[pipeline:glance-api-keystone+cachemanagement]
pipeline = versionnegotiation authtoken context osprofiler cache cachemanage rootapp
pipeline = versionnegotiation osprofiler authtoken context cache cachemanage rootapp
# Use this pipeline for authZ only. This means that the registry will treat a
# user as authenticated without making requests to keystone to reauthenticate
# the user.
[pipeline:glance-api-trusted-auth]
pipeline = versionnegotiation context osprofiler rootapp
pipeline = versionnegotiation osprofiler context rootapp
# Use this pipeline for authZ only. This means that the registry will treat a
# user as authenticated without making requests to keystone to reauthenticate
# the user and uses cache management
[pipeline:glance-api-trusted-auth+cachemanagement]
pipeline = versionnegotiation context osprofiler cache cachemanage rootapp
pipeline = versionnegotiation osprofiler context cache cachemanage rootapp
[composite:rootapp]
paste.composite_factory = glance.api:root_app_factory

View File

@ -1,16 +1,16 @@
# Use this pipeline for no auth - DEFAULT
[pipeline:glance-registry]
pipeline = unauthenticated-context osprofiler registryapp
pipeline = osprofiler unauthenticated-context registryapp
# Use this pipeline for keystone auth
[pipeline:glance-registry-keystone]
pipeline = authtoken context osprofiler registryapp
pipeline = osprofiler authtoken context registryapp
# Use this pipeline for authZ only. This means that the registry will treat a
# user as authenticated without making requests to keystone to reauthenticate
# the user.
[pipeline:glance-registry-trusted-auth]
pipeline = context osprofiler registryapp
pipeline = osprofiler context registryapp
[app:registryapp]
paste.app_factory = glance.registry.api:API.factory

View File

@ -17,6 +17,7 @@ import os.path
import shutil
import fixtures
import osprofiler.web
import stubout
from glance.api.middleware import context
@ -71,7 +72,7 @@ class TestPasteApp(test_utils.BaseTestCase):
self.assertIsInstance(app, expected_app_type)
def test_load_paste_app(self):
expected_middleware = context.UnauthenticatedContextMiddleware
expected_middleware = osprofiler.web.WsgiMiddleware
self._do_test_load_paste_app(expected_middleware)
def test_load_paste_app_paste_config_not_found(self):
@ -90,7 +91,7 @@ class TestPasteApp(test_utils.BaseTestCase):
def test_load_paste_app_with_paste_config_file(self):
paste_config_file = os.path.join(os.getcwd(),
'etc/glance-registry-paste.ini')
expected_middleware = context.UnauthenticatedContextMiddleware
expected_middleware = osprofiler.web.WsgiMiddleware
self._do_test_load_paste_app(expected_middleware,
paste_config_file=paste_config_file)