From d5ea30e8812f10ff74bcbd850c9323aaf024566d Mon Sep 17 00:00:00 2001 From: Michael Hanselmann <hansmi@google.com> Date: Thu, 5 Jan 2012 21:11:04 +0100 Subject: [PATCH] rpc: Change signature of RpcRunner Instead of receiving the whole masterd context, it only gets the configuration and the lock monitor callback. This simplifies unittesting. Additionaly, two new arguments for testing are added. Signed-off-by: Michael Hanselmann <hansmi@google.com> Reviewed-by: Iustin Pop <iustin@google.com> --- lib/rpc.py | 17 ++++++++++------- lib/server/masterd.py | 2 +- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/lib/rpc.py b/lib/rpc.py index bf854046f..954beb7d6 100644 --- a/lib/rpc.py +++ b/lib/rpc.py @@ -584,14 +584,16 @@ class RpcRunner(_RpcClientBase, """RPC runner class. """ - def __init__(self, context): + def __init__(self, cfg, lock_monitor_cb, _req_process_fn=None, _getents=None): """Initialized the RPC runner. - @type context: C{masterd.GanetiContext} - @param context: Ganeti context + @type cfg: L{config.ConfigWriter} + @param cfg: Configuration + @type lock_monitor_cb: callable + @param lock_monitor_cb: Lock monitor callback """ - self._cfg = context.cfg + self._cfg = cfg encoders = _ENCODERS.copy() @@ -603,15 +605,16 @@ class RpcRunner(_RpcClientBase, }) # Resolver using configuration - resolver = compat.partial(_NodeConfigResolver, self._cfg.GetNodeInfo, - self._cfg.GetAllNodesInfo) + resolver = compat.partial(_NodeConfigResolver, cfg.GetNodeInfo, + cfg.GetAllNodesInfo) # Pylint doesn't recognize multiple inheritance properly, see # <http://www.logilab.org/ticket/36586> and # <http://www.logilab.org/ticket/35642> # pylint: disable=W0233 _RpcClientBase.__init__(self, resolver, encoders.get, - lock_monitor_cb=context.glm.AddToLockMonitor) + lock_monitor_cb=lock_monitor_cb, + _req_process_fn=_req_process_fn) _generated_rpc.RpcClientConfig.__init__(self) _generated_rpc.RpcClientBootstrap.__init__(self) _generated_rpc.RpcClientDefault.__init__(self) diff --git a/lib/server/masterd.py b/lib/server/masterd.py index ed294adee..41df24ede 100644 --- a/lib/server/masterd.py +++ b/lib/server/masterd.py @@ -469,7 +469,7 @@ class GanetiContext(object): self.cfg.SetContext(self) # RPC runner - self.rpc = rpc.RpcRunner(self) + self.rpc = rpc.RpcRunner(self.cfg, self.glm.AddToLockMonitor) # Job queue self.jobqueue = jqueue.JobQueue(self) -- GitLab