From 41e079ce36d9b91ce9c0ee18688f35f188801901 Mon Sep 17 00:00:00 2001
From: Andrea Spadaccini <spadaccio@google.com>
Date: Thu, 27 Oct 2011 19:34:57 +0100
Subject: [PATCH] Explicitly pass params to change_master_netmask

Make the master explicitly pass the parameters to the
change_master_netmask RPC, and change all the call flow to use the new
interface.

Signed-off-by: Andrea Spadaccini <spadaccio@google.com>
Reviewed-by: Michael Hanselmann <hansmi@google.com>
---
 lib/backend.py      | 8 ++++++--
 lib/cmdlib.py       | 7 ++++---
 lib/rpc_defs.py     | 5 ++++-
 lib/server/noded.py | 3 ++-
 4 files changed, 16 insertions(+), 7 deletions(-)

diff --git a/lib/backend.py b/lib/backend.py
index 77addb2e9..47a83e3cf 100644
--- a/lib/backend.py
+++ b/lib/backend.py
@@ -412,11 +412,15 @@ def StopMasterDaemons():
                   result.cmd, result.exit_code, result.output)
 
 
-def ChangeMasterNetmask(netmask):
+def ChangeMasterNetmask(old_netmask, netmask, master_ip, master_netdev):
   """Change the netmask of the master IP.
 
+  @param old_netmask: the old value of the netmask
+  @param netmask: the new value of the netmask
+  @param master_ip: the master IP
+  @param master_netdev: the master network device
+
   """
-  master_netdev, master_ip, _, _, old_netmask = GetMasterInfo()
   if old_netmask == netmask:
     return
 
diff --git a/lib/cmdlib.py b/lib/cmdlib.py
index d60552be7..53eb65740 100644
--- a/lib/cmdlib.py
+++ b/lib/cmdlib.py
@@ -3710,10 +3710,11 @@ class LUClusterSetParams(LogicalUnit):
       self.cluster.master_netdev = self.op.master_netdev
 
     if self.op.master_netmask:
-      master = self.cfg.GetMasterNode()
+      (master, ip, dev, old_netmask, _) = self.cfg.GetMasterNetworkParameters()
       feedback_fn("Changing master IP netmask to %s" % self.op.master_netmask)
-      result = self.rpc.call_node_change_master_netmask(master,
-                                                        self.op.master_netmask)
+      result = self.rpc.call_node_change_master_netmask(master, old_netmask,
+                                                        self.op.master_netmask,
+                                                        ip, dev)
       if result.fail_msg:
         msg = "Could not change the master IP netmask: %s" % result.fail_msg
         self.LogWarning(msg)
diff --git a/lib/rpc_defs.py b/lib/rpc_defs.py
index b4f799e60..c956be02a 100644
--- a/lib/rpc_defs.py
+++ b/lib/rpc_defs.py
@@ -414,7 +414,10 @@ CALLS = {
       ], None,
      "Deactivates master IP on a node"),
     ("node_change_master_netmask", SINGLE, TMO_FAST, [
-      ("netmask", None, None),
+      ("old_netmask", None, "The old value of the netmask"),
+      ("netmask", None, "The new value of the netmask"),
+      ("master_ip", None, "The master IP"),
+      ("master_netdev", None, "The master network device"),
       ], None, "Change master IP netmask"),
     ("node_leave_cluster", SINGLE, TMO_NORMAL, [
       ("modify_ssh_setup", None, None),
diff --git a/lib/server/noded.py b/lib/server/noded.py
index 7e1619ead..07672d98a 100644
--- a/lib/server/noded.py
+++ b/lib/server/noded.py
@@ -718,7 +718,8 @@ class NodeHttpServer(http.server.HttpServer):
     """Change the master IP netmask.
 
     """
-    return backend.ChangeMasterNetmask(params[0])
+    return backend.ChangeMasterNetmask(params[0], params[1], params[2],
+                                       params[3])
 
   @staticmethod
   def perspective_node_leave_cluster(params):
-- 
GitLab