Skip to content

Commit

Permalink
Improve Glance profiling
Browse files Browse the repository at this point in the history
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
  • Loading branch information
boris-42 committed Aug 23, 2014
1 parent f2e6001 commit 725ce9d
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 13 deletions.
16 changes: 8 additions & 8 deletions etc/glance-api-paste.ini
@@ -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
Expand Down
6 changes: 3 additions & 3 deletions etc/glance-registry-paste.ini
@@ -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
Expand Down
5 changes: 3 additions & 2 deletions glance/tests/unit/common/test_config.py
Expand Up @@ -17,6 +17,7 @@
import shutil

import fixtures
import osprofiler.web
import stubout

from glance.api.middleware import context
Expand Down Expand Up @@ -71,7 +72,7 @@ def _appendto(orig, copy, str):
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):
Expand All @@ -90,7 +91,7 @@ def test_load_paste_app_with_paste_flavor(self):
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)

Expand Down

0 comments on commit 725ce9d

Please sign in to comment.