Merge "Don't deepcopy RpcContext"

This commit is contained in:
Jenkins
2012-05-31 19:04:51 +00:00
committed by Gerrit Code Review
3 changed files with 17 additions and 1 deletions

View File

@@ -175,6 +175,12 @@ class RpcContext(rpc_common.CommonRpcContext):
self.conf = kwargs.pop('conf')
super(RpcContext, self).__init__(**kwargs)
def deepcopy(self):
values = self.to_dict()
values['conf'] = self.conf
values['msg_id'] = self.msg_id
return self.__class__(**values)
def reply(self, reply=None, failure=None, ending=False,
connection_pool=None):
if self.msg_id:

View File

@@ -287,6 +287,9 @@ class CommonRpcContext(object):
def from_dict(cls, values):
return cls(**values)
def deepcopy(self):
return self.from_dict(self.to_dict())
def update_store(self):
local.store.context = self
@@ -299,7 +302,7 @@ class CommonRpcContext(object):
# convert the RpcContext back to its native RequestContext doing
# something like nova.context.RequestContext.from_dict(ctxt.to_dict())
context = copy.deepcopy(self)
context = self.deepcopy()
context.values['is_admin'] = True
context.values.setdefault('roles', [])

View File

@@ -34,6 +34,13 @@ class RpcContext(rpc_common.CommonRpcContext):
self._response = []
self._done = False
def deepcopy(self):
values = self.to_dict()
new_inst = self.__class__(**values)
new_inst._response = self._response
new_inst._done = self._done
return new_inst
def reply(self, reply=None, failure=None, ending=False):
if ending:
self._done = True