Don't use a different thread local store to oslo.log

Context logging does not work if we don't do it in a way that
oslo.log can pick up the context.

- Use the thread local storage from the base RequestContext class.
- Use the helper method context.get_current() as appropriate
- Update the custom_backend_auth.
- Remove heat/openstack/common/ as it is now not used.

Change-Id: I64f6af5090e98579b93a616bc79f4aaa6cd2b2ee
Closes-bug: 1435588
Angus Salkeld 8 years ago
parent d06b6c098b
commit 5eea2226e0
  1. 6
  2. 9
  3. 45
  4. 1

@ -29,7 +29,6 @@ from heat.common import policy
from heat.common import wsgi
from heat.db import api as db_api
from heat.engine import clients
from heat.openstack.common import local
LOG = logging.getLogger(__name__)
@ -105,8 +104,6 @@ class RequestContext(context.RequestContext):
self.auth_token_info = auth_token_info
self.auth_url = auth_url
self.roles = roles or []
if overwrite or not hasattr(, 'context'):
self._session = None
self._clients = None
self.trust_id = trust_id
@ -119,9 +116,6 @@ class RequestContext(context.RequestContext):
self.is_admin = is_admin
def update_store(self): = self
def session(self):
if self._session is None:

@ -18,12 +18,11 @@
Middleware for authenticating against custom backends.
import logging
from oslo_context import context
from oslo_log import log as logging
import webob.exc
from heat.common.i18n import _
from heat.openstack.common import local
from heat.rpc import client as rpc_client
LOG = logging.getLogger(__name__)
@ -43,8 +42,8 @@ class AuthProtocol(object):
we can't authenticate.
LOG.debug('Authenticating user token')
context =
authenticated = self.rpc_client.authenticated_to_backend(context)
ctx = context.get_current()
authenticated = self.rpc_client.authenticated_to_backend(ctx)
if authenticated:
return, start_response)

@ -1,45 +0,0 @@
# Copyright 2011 OpenStack Foundation.
# All Rights Reserved.
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
"""Local storage of variables using weak references"""
import threading
import weakref
class WeakLocal(threading.local):
def __getattribute__(self, attr):
rval = super(WeakLocal, self).__getattribute__(attr)
if rval:
# NOTE(mikal): this bit is confusing. What is stored is a weak
# reference, not the value itself. We therefore need to lookup
# the weak reference and return the inner value here.
rval = rval()
return rval
def __setattr__(self, attr, value):
value = weakref.ref(value)
return super(WeakLocal, self).__setattr__(attr, value)
# NOTE(mikal): the name "store" should be deprecated in the future
store = WeakLocal()
# A "weak" store uses weak references and allows an object to fall out of scope
# when it falls out of scope in the code that uses the thread local storage. A
# "strong" store will hold a reference to the object so that it never falls out
# of scope.
weak_store = WeakLocal()
strong_store = threading.local()

@ -3,7 +3,6 @@
# The list of modules to copy from oslo-incubator