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/local.py as it is now not used. Change-Id: I64f6af5090e98579b93a616bc79f4aaa6cd2b2ee Closes-bug: 1435588
This commit is contained in:
parent
d06b6c098b
commit
5eea2226e0
@ -29,7 +29,6 @@ from heat.common import policy
|
|||||||
from heat.common import wsgi
|
from heat.common import wsgi
|
||||||
from heat.db import api as db_api
|
from heat.db import api as db_api
|
||||||
from heat.engine import clients
|
from heat.engine import clients
|
||||||
from heat.openstack.common import local
|
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
@ -105,8 +104,6 @@ class RequestContext(context.RequestContext):
|
|||||||
self.auth_token_info = auth_token_info
|
self.auth_token_info = auth_token_info
|
||||||
self.auth_url = auth_url
|
self.auth_url = auth_url
|
||||||
self.roles = roles or []
|
self.roles = roles or []
|
||||||
if overwrite or not hasattr(local.store, 'context'):
|
|
||||||
self.update_store()
|
|
||||||
self._session = None
|
self._session = None
|
||||||
self._clients = None
|
self._clients = None
|
||||||
self.trust_id = trust_id
|
self.trust_id = trust_id
|
||||||
@ -119,9 +116,6 @@ class RequestContext(context.RequestContext):
|
|||||||
else:
|
else:
|
||||||
self.is_admin = is_admin
|
self.is_admin = is_admin
|
||||||
|
|
||||||
def update_store(self):
|
|
||||||
local.store.context = self
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def session(self):
|
def session(self):
|
||||||
if self._session is None:
|
if self._session is None:
|
||||||
|
@ -18,12 +18,11 @@
|
|||||||
Middleware for authenticating against custom backends.
|
Middleware for authenticating against custom backends.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import logging
|
from oslo_context import context
|
||||||
|
from oslo_log import log as logging
|
||||||
import webob.exc
|
import webob.exc
|
||||||
|
|
||||||
from heat.common.i18n import _
|
from heat.common.i18n import _
|
||||||
from heat.openstack.common import local
|
|
||||||
from heat.rpc import client as rpc_client
|
from heat.rpc import client as rpc_client
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
@ -43,8 +42,8 @@ class AuthProtocol(object):
|
|||||||
we can't authenticate.
|
we can't authenticate.
|
||||||
"""
|
"""
|
||||||
LOG.debug('Authenticating user token')
|
LOG.debug('Authenticating user token')
|
||||||
context = local.store.context
|
ctx = context.get_current()
|
||||||
authenticated = self.rpc_client.authenticated_to_backend(context)
|
authenticated = self.rpc_client.authenticated_to_backend(ctx)
|
||||||
if authenticated:
|
if authenticated:
|
||||||
return self.app(env, start_response)
|
return self.app(env, start_response)
|
||||||
else:
|
else:
|
||||||
|
@ -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
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# 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
|
# The list of modules to copy from oslo-incubator
|
||||||
module=crypto
|
module=crypto
|
||||||
module=eventlet_backdoor
|
module=eventlet_backdoor
|
||||||
module=local
|
|
||||||
module=loopingcall
|
module=loopingcall
|
||||||
module=policy
|
module=policy
|
||||||
module=service
|
module=service
|
||||||
|
Loading…
Reference in New Issue
Block a user