Merge changes I17ca4b69,I9e6ec0d2

* changes:
  Remove nova.log usage from nova.rpc.
  Remove nova.context dependency from nova.rpc
This commit is contained in:
Jenkins
2012-05-30 20:11:41 +00:00
committed by Gerrit Code Review
4 changed files with 53 additions and 11 deletions

View File

@@ -26,6 +26,7 @@ AMQP, but is deprecated and predates this code.
"""
import inspect
import logging
import sys
import uuid
@@ -33,8 +34,6 @@ from eventlet import greenpool
from eventlet import pools
from eventlet import semaphore
from nova import context
from nova import log as logging
from nova.openstack.common import excutils
from nova.openstack.common import local
import nova.rpc.common as rpc_common
@@ -169,12 +168,12 @@ def msg_reply(conf, msg_id, connection_pool, reply=None, failure=None,
conn.direct_send(msg_id, msg)
class RpcContext(context.RequestContext):
class RpcContext(rpc_common.CommonRpcContext):
"""Context that supports replying to a rpc.call"""
def __init__(self, *args, **kwargs):
def __init__(self, **kwargs):
self.msg_id = kwargs.pop('msg_id', None)
self.conf = kwargs.pop('conf')
super(RpcContext, self).__init__(*args, **kwargs)
super(RpcContext, self).__init__(**kwargs)
def reply(self, reply=None, failure=None, ending=False,
connection_pool=None):

View File

@@ -18,13 +18,14 @@
# under the License.
import copy
import logging
import sys
import traceback
from nova import log as logging
from nova.openstack.common import cfg
from nova.openstack.common import importutils
from nova.openstack.common import jsonutils
from nova.openstack.common import local
LOG = logging.getLogger(__name__)
@@ -267,3 +268,46 @@ def deserialize_remote_exception(conf, data):
# first exception argument.
failure.args = (message,) + failure.args[1:]
return failure
class CommonRpcContext(object):
def __init__(self, **kwargs):
self.values = kwargs
def __getattr__(self, key):
try:
return self.values[key]
except KeyError:
raise AttributeError(key)
def to_dict(self):
return copy.deepcopy(self.values)
@classmethod
def from_dict(cls, values):
return cls(**values)
def update_store(self):
local.store.context = self
def elevated(self, read_deleted=None, overwrite=False):
"""Return a version of this context with admin flag set."""
# TODO(russellb) This method is a bit of a nova-ism. It makes
# some assumptions about the data in the request context sent
# across rpc, while the rest of this class does not. We could get
# rid of this if we changed the nova code that uses this to
# convert the RpcContext back to its native RequestContext doing
# something like nova.context.RequestContext.from_dict(ctxt.to_dict())
context = copy.deepcopy(self)
context.values['is_admin'] = True
context.values.setdefault('roles', [])
if 'admin' not in context.values['roles']:
context.values['roles'].append('admin')
if read_deleted is not None:
context.values['read_deleted'] = read_deleted
return context

View File

@@ -23,15 +23,14 @@ import time
import eventlet
from nova import context
from nova.rpc import common as rpc_common
CONSUMERS = {}
class RpcContext(context.RequestContext):
def __init__(self, *args, **kwargs):
super(RpcContext, self).__init__(*args, **kwargs)
class RpcContext(rpc_common.CommonRpcContext):
def __init__(self, **kwargs):
super(RpcContext, self).__init__(**kwargs)
self._response = []
self._done = False

View File

@@ -18,6 +18,7 @@
import functools
import itertools
import json
import logging
import time
import uuid
@@ -26,7 +27,6 @@ import greenlet
import qpid.messaging
import qpid.messaging.exceptions
from nova import log as logging
from nova.openstack.common import cfg
from nova.rpc import amqp as rpc_amqp
from nova.rpc import common as rpc_common