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