Merge "Don't deepcopy RpcContext"
This commit is contained in:
@@ -175,6 +175,12 @@ class RpcContext(rpc_common.CommonRpcContext):
|
|||||||
self.conf = kwargs.pop('conf')
|
self.conf = kwargs.pop('conf')
|
||||||
super(RpcContext, self).__init__(**kwargs)
|
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,
|
def reply(self, reply=None, failure=None, ending=False,
|
||||||
connection_pool=None):
|
connection_pool=None):
|
||||||
if self.msg_id:
|
if self.msg_id:
|
||||||
|
@@ -287,6 +287,9 @@ class CommonRpcContext(object):
|
|||||||
def from_dict(cls, values):
|
def from_dict(cls, values):
|
||||||
return cls(**values)
|
return cls(**values)
|
||||||
|
|
||||||
|
def deepcopy(self):
|
||||||
|
return self.from_dict(self.to_dict())
|
||||||
|
|
||||||
def update_store(self):
|
def update_store(self):
|
||||||
local.store.context = self
|
local.store.context = self
|
||||||
|
|
||||||
@@ -299,7 +302,7 @@ class CommonRpcContext(object):
|
|||||||
# convert the RpcContext back to its native RequestContext doing
|
# convert the RpcContext back to its native RequestContext doing
|
||||||
# something like nova.context.RequestContext.from_dict(ctxt.to_dict())
|
# something like nova.context.RequestContext.from_dict(ctxt.to_dict())
|
||||||
|
|
||||||
context = copy.deepcopy(self)
|
context = self.deepcopy()
|
||||||
context.values['is_admin'] = True
|
context.values['is_admin'] = True
|
||||||
|
|
||||||
context.values.setdefault('roles', [])
|
context.values.setdefault('roles', [])
|
||||||
|
@@ -34,6 +34,13 @@ class RpcContext(rpc_common.CommonRpcContext):
|
|||||||
self._response = []
|
self._response = []
|
||||||
self._done = False
|
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):
|
def reply(self, reply=None, failure=None, ending=False):
|
||||||
if ending:
|
if ending:
|
||||||
self._done = True
|
self._done = True
|
||||||
|
Reference in New Issue
Block a user