Skip to content

Instantly share code, notes, and snippets.

@vishvananda
Created October 21, 2011 17:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save vishvananda/1304500 to your computer and use it in GitHub Desktop.
Save vishvananda/1304500 to your computer and use it in GitHub Desktop.
diff --git a/nova/context.py b/nova/context.py
index de5b791..7f08877 100644
--- a/nova/context.py
+++ b/nova/context.py
@@ -1,5 +1,6 @@
# vim: tabstop=4 shiftwidth=4 softtabstop=4
+# Copyright 2011 OpenStack LLC.
# Copyright 2010 United States Government as represented by the
# Administrator of the National Aeronautics and Space Administration.
# All Rights Reserved.
@@ -21,6 +22,7 @@
import uuid
from nova import utils
+from nova import local
class RequestContext(object):
@@ -51,6 +53,7 @@ class RequestContext(object):
self.request_id = request_id
self.auth_token = auth_token
self.strategy = strategy
+ setattr(local.store, 'context', self)
def to_dict(self):
return {'user_id': self.user_id,
diff --git a/nova/local.py b/nova/local.py
new file mode 100644
index 0000000..5aff787
--- /dev/null
+++ b/nova/local.py
@@ -0,0 +1,23 @@
+# vim: tabstop=4 shiftwidth=4 softtabstop=4
+
+# Copyright 2011 OpenStack LLC.
+# 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.
+
+"""Greenthread local storage of variables"""
+
+from eventlet import corolocal
+
+
+store = corolocal.local()
diff --git a/nova/log.py b/nova/log.py
index 1e04f75..86f1570 100644
--- a/nova/log.py
+++ b/nova/log.py
@@ -1,5 +1,6 @@
# vim: tabstop=4 shiftwidth=4 softtabstop=4
+# Copyright 2011 OpenStack LLC.
# Copyright 2010 United States Government as represented by the
# Administrator of the National Aeronautics and Space Administration.
# All Rights Reserved.
@@ -38,6 +39,7 @@ import traceback
import nova
from nova import flags
+from nova import local
from nova import version
@@ -152,6 +154,8 @@ class NovaLogger(logging.Logger):
"""Extract context from any log call."""
if not extra:
extra = {}
+ if context is None:
+ context = getattr(local.store, 'context', None)
if context:
extra.update(_dictify_context(context))
extra.update({"nova_version": version.version_string_with_vcs()})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment