From 91ae95fd00961cf94b1d19182742e93efef9b58d Mon Sep 17 00:00:00 2001
From: Andrea Spadaccini <spadaccio@google.com>
Date: Wed, 2 Nov 2011 15:33:21 +0000
Subject: [PATCH] Uniform master IP activation and deactivation

Add the master IP family parameter to the master IP deactivation RPCs,
so that the activation and deactivation interfaces are uniform.

Signed-off-by: Andrea Spadaccini <spadaccio@google.com>
Reviewed-by: Guido Trotter <ultrotter@google.com>
---
 lib/backend.py      |  4 +++-
 lib/bootstrap.py    |  9 +++++----
 lib/cmdlib.py       | 17 ++++++++++-------
 lib/rpc_defs.py     |  1 +
 lib/server/noded.py |  3 ++-
 5 files changed, 21 insertions(+), 13 deletions(-)

diff --git a/lib/backend.py b/lib/backend.py
index c1c205daf..29f0723af 100644
--- a/lib/backend.py
+++ b/lib/backend.py
@@ -375,14 +375,16 @@ def StartMasterDaemons(no_voting):
 
 @RunLocalHooks(constants.FAKE_OP_MASTER_TURNDOWN, "master-ip-turndown",
                _BuildMasterIpEnv)
-def DeactivateMasterIp(master_ip, master_netmask, master_netdev):
+def DeactivateMasterIp(master_ip, master_netmask, master_netdev, family):
   """Deactivate the master IP on this node.
 
   @param master_ip: the master IP
   @param master_netmask: the master IP netmask
   @param master_netdev: the master network device
+  @param family: the IP family
 
   """
+  # pylint: disable=W0613
   # TODO: log and report back to the caller the error failures; we
   # need to decide in which case we fail the RPC for this
 
diff --git a/lib/bootstrap.py b/lib/bootstrap.py
index a7c865312..db5cd4bd8 100644
--- a/lib/bootstrap.py
+++ b/lib/bootstrap.py
@@ -567,8 +567,9 @@ def FinalizeClusterDestroy(master):
   modify_ssh_setup = cfg.GetClusterInfo().modify_ssh_setup
   runner = rpc.BootstrapRunner()
 
-  (_, ip, netdev, netmask, _) = cfg.GetMasterNetworkParameters()
-  result = runner.call_node_deactivate_master_ip(master, ip, netmask, netdev)
+  (_, ip, netdev, netmask, family) = cfg.GetMasterNetworkParameters()
+  result = runner.call_node_deactivate_master_ip(master, ip, netmask, netdev,
+                                                 family)
   msg = result.fail_msg
   if msg:
     logging.warning("Could not disable the master IP: %s", msg)
@@ -707,9 +708,9 @@ def MasterFailover(no_voting=False):
   logging.info("Stopping the master daemon on node %s", old_master)
 
   runner = rpc.BootstrapRunner()
-  (_, ip, netdev, netmask, _) = cfg.GetMasterNetworkParameters()
+  (_, ip, netdev, netmask, family) = cfg.GetMasterNetworkParameters()
   result = runner.call_node_deactivate_master_ip(old_master, ip, netmask,
-                                                 netdev)
+                                                 netdev, family)
   msg = result.fail_msg
   if msg:
     logging.warning("Could not disable the master IP: %s", msg)
diff --git a/lib/cmdlib.py b/lib/cmdlib.py
index 53eb65740..f0bb09b83 100644
--- a/lib/cmdlib.py
+++ b/lib/cmdlib.py
@@ -1355,12 +1355,13 @@ class LUClusterDestroy(LogicalUnit):
     """Destroys the cluster.
 
     """
-    (master, ip, dev, netmask, _) = self.cfg.GetMasterNetworkParameters()
+    (master, ip, dev, netmask, family) = self.cfg.GetMasterNetworkParameters()
 
     # Run post hooks on master node before it's removed
     _RunPostHook(self, master)
 
-    result = self.rpc.call_node_deactivate_master_ip(master, ip, netmask, dev)
+    result = self.rpc.call_node_deactivate_master_ip(master, ip, netmask, dev,
+                                                     family)
     result.Raise("Could not disable the master role")
 
     return master
@@ -3327,7 +3328,8 @@ class LUClusterRename(LogicalUnit):
 
     # shutdown the master IP
     (master, ip, dev, netmask, family) = self.cfg.GetMasterNetworkParameters()
-    result = self.rpc.call_node_deactivate_master_ip(master, ip, netmask, dev)
+    result = self.rpc.call_node_deactivate_master_ip(master, ip, netmask, dev,
+                                                     family)
     result.Raise("Could not disable the master role")
 
     try:
@@ -3700,10 +3702,11 @@ class LUClusterSetParams(LogicalUnit):
       helper_os("blacklisted_os", self.op.blacklisted_os, "blacklisted")
 
     if self.op.master_netdev:
-      (master, ip, dev, netmask, _) = self.cfg.GetMasterNetworkParameters()
+      (master, ip, dev, netmask, family) = self.cfg.GetMasterNetworkParameters()
       feedback_fn("Shutting down master ip on the current netdev (%s)" %
                   self.cluster.master_netdev)
-      result = self.rpc.call_node_deactivate_master_ip(master, ip, netmask, dev)
+      result = self.rpc.call_node_deactivate_master_ip(master, ip, netmask, dev,
+                                                       family)
       result.Raise("Could not disable the master ip")
       feedback_fn("Changing master_netdev from %s to %s" %
                   (dev, self.op.master_netdev))
@@ -3903,8 +3906,8 @@ class LUClusterDeactivateMasterIp(NoHooksLU):
     """Deactivate the master IP.
 
     """
-    (master, ip, dev, netmask, _) = self.cfg.GetMasterNetworkParameters()
-    self.rpc.call_node_deactivate_master_ip(master, ip, netmask, dev)
+    (master, ip, dev, netmask, family) = self.cfg.GetMasterNetworkParameters()
+    self.rpc.call_node_deactivate_master_ip(master, ip, netmask, dev, family)
 
 
 def _WaitForSync(lu, instance, disks=None, oneshot=False):
diff --git a/lib/rpc_defs.py b/lib/rpc_defs.py
index c956be02a..6550b5736 100644
--- a/lib/rpc_defs.py
+++ b/lib/rpc_defs.py
@@ -411,6 +411,7 @@ CALLS = {
       ("master_ip", None, "The master IP"),
       ("master_netmask", None, "The master IP netmask"),
       ("master_netdev", None, "The master network device"),
+      ("ip_family", None, "The cluster IP family"),
       ], None,
      "Deactivates master IP on a node"),
     ("node_change_master_netmask", SINGLE, TMO_FAST, [
diff --git a/lib/server/noded.py b/lib/server/noded.py
index 07672d98a..c701a2338 100644
--- a/lib/server/noded.py
+++ b/lib/server/noded.py
@@ -704,7 +704,8 @@ class NodeHttpServer(http.server.HttpServer):
     """Deactivate the master IP on this node.
 
     """
-    return backend.DeactivateMasterIp(params[0], params[1], params[2])
+    return backend.DeactivateMasterIp(params[0], params[1], params[2],
+                                      params[3])
 
   @staticmethod
   def perspective_node_stop_master(params):
-- 
GitLab