Use ssconf for SSH ports in NodeVerify
authorHelga Velroyen <helgav@google.com>
Tue, 27 Oct 2015 14:17:06 +0000 (15:17 +0100)
committerHelga Velroyen <helgav@google.com>
Tue, 27 Oct 2015 16:01:42 +0000 (17:01 +0100)
This fixes issue 773. For a while already, SSH ports are
available via ssconf. This enables us to simplify the
RPC signature of NodeVerify.

Signed-off-by: Helga Velroyen <helgav@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>

lib/backend.py
lib/cmdlib/node.py
lib/rpc_defs.py
lib/server/noded.py
test/py/ganeti.backend_unittest.py

index cd94d92..b53fcb6 100644 (file)
@@ -1100,7 +1100,7 @@ def _VerifySshClutter(node_status_list, my_name):
   return result
 
 
-def VerifyNode(what, cluster_name, all_hvparams, node_groups, groups_cfg):
+def VerifyNode(what, cluster_name, all_hvparams, node_groups):
   """Verify the status of the local node.
 
   Based on the input L{what} parameter, various checks are done on the
@@ -1131,8 +1131,6 @@ def VerifyNode(what, cluster_name, all_hvparams, node_groups, groups_cfg):
   @type node_groups: a dict of strings
   @param node_groups: node _names_ mapped to their group uuids (it's enough to
       have only those nodes that are in `what["nodelist"]`)
-  @type groups_cfg: a dict of dict of strings
-  @param groups_cfg: a dictionary mapping group uuids to their configuration
   @rtype: dict
   @return: a dictionary with the same keys as the input dict, and
       values representing the result of the checks
@@ -1177,19 +1175,15 @@ def VerifyNode(what, cluster_name, all_hvparams, node_groups, groups_cfg):
 
     # Try to contact all nodes
     val = {}
+    ssh_port_map = ssconf.SimpleStore().GetSshPortMap()
     for node in nodes:
-      params = groups_cfg.get(node_groups.get(node))
-      ssh_port = params["ndparams"].get(constants.ND_SSH_PORT)
-      logging.debug("Ssh port %s (None = default) for node %s",
-                    str(ssh_port), node)
-
       # We only test if master candidates can communicate to other nodes.
       # We cannot test if normal nodes cannot communicate with other nodes,
       # because the administrator might have installed additional SSH keys,
       # over which Ganeti has no power.
       if my_name in mcs:
         success, message = _GetSshRunner(cluster_name). \
-                              VerifyNodeHostname(node, ssh_port)
+                              VerifyNodeHostname(node, ssh_port_map)
         if not success:
           val[node] = message
 
index e9f7618..50e86ce 100644 (file)
@@ -312,7 +312,6 @@ class LUNodeAdd(LogicalUnit):
           [node_name], vparams, cname,
           self.cfg.GetClusterInfo().hvparams,
           {node_name: self.node_group},
-          self.cfg.GetAllNodeGroupsInfoDict()
         )[node_name]
       (errmsgs, _) = CheckNodePVs(result.payload, excl_stor)
       if errmsgs:
index b38ea1f..aceb768 100644 (file)
@@ -514,8 +514,6 @@ _NODE_CALLS = [
     ("cluster_name", None, "Cluster name"),
     ("all_hvparams", None, "Dictionary mapping hypervisor names to hvparams"),
     ("node_groups", None, "node names mapped to their group uuids"),
-    ("groups_cfg", None,
-      "a dictionary mapping group uuids to their configuration"),
     ], None, None, "Request verification of given parameters"),
   ("node_volumes", MULTI, None, constants.RPC_TMO_FAST, [], None, None,
    "Gets all volumes on node(s)"),
index 880f2e1..4ce0421 100644 (file)
@@ -821,9 +821,9 @@ class NodeRequestHandler(http.server.HttpServerHandler):
     """Run a verify sequence on this node.
 
     """
-    (what, cluster_name, hvparams, node_groups, groups_cfg) = params
+    (what, cluster_name, hvparams, node_groups) = params
     return backend.VerifyNode(what, cluster_name, hvparams,
-                              node_groups, groups_cfg)
+                              node_groups)
 
   @classmethod
   def perspective_node_verify_light(cls, params):
index 68b2eee..9f58957 100755 (executable)
@@ -135,7 +135,7 @@ class TestNodeVerify(testutils.GanetiTestCase):
     local_data = (netutils.Hostname.GetSysName(),
                   constants.IP4_ADDRESS_LOCALHOST)
     result = backend.VerifyNode({constants.NV_MASTERIP: local_data},
-                                None, {}, {}, {})
+                                None, {}, {})
     self.failUnless(constants.NV_MASTERIP in result,
                     "Master IP data not returned")
     self.failUnless(result[constants.NV_MASTERIP], "Cannot reach localhost")
@@ -147,7 +147,7 @@ class TestNodeVerify(testutils.GanetiTestCase):
     # we just test that whatever TcpPing returns, VerifyNode returns too
     netutils.TcpPing = lambda a, b, source=None: False
     result = backend.VerifyNode({constants.NV_MASTERIP: bad_data},
-                                None, {}, {}, {})
+                                None, {}, {})
     self.failUnless(constants.NV_MASTERIP in result,
                     "Master IP data not returned")
     self.failIf(result[constants.NV_MASTERIP],