From 5c0527ed6f88c1454345e3881e24b03f6969c62d Mon Sep 17 00:00:00 2001 From: Guido Trotter <ultrotter@google.com> Date: Fri, 27 Jun 2008 14:28:27 +0000 Subject: [PATCH] LUAddNode: use node-verify to check node hostname As we can't use ssh.VerifyNodeHostname directly, we'll set up a mini node-verify to do checking between the master and the new node. In the future networking checks, or more nodes, can be added as well. Reviewed-by: iustinp --- lib/cmdlib.py | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/lib/cmdlib.py b/lib/cmdlib.py index 46893dc90..1b85486e9 100644 --- a/lib/cmdlib.py +++ b/lib/cmdlib.py @@ -1615,12 +1615,22 @@ class LUAddNode(LogicalUnit): " you gave (%s). Please fix and re-run this" " command." % new_node.secondary_ip) - success, msg = self.ssh.VerifyNodeHostname(node) - if not success: - raise errors.OpExecError("Node '%s' claims it has a different hostname" - " than the one the resolver gives: %s." - " Please fix and re-run this command." % - (node, msg)) + node_verify_list = [self.sstore.GetMasterNode()] + node_verify_param = { + 'nodelist': [node], + # TODO: do a node-net-test as well? + } + + result = rpc.call_node_verify(node_verify_list, node_verify_param) + for verifier in node_verify_list: + if not result[verifier]: + raise errors.OpExecError("Cannot communicate with %s's node daemon" + " for remote verification" % verifier) + if result[verifier]['nodelist']: + for failed in result[verifier]['nodelist']: + feedback_fn("ssh/hostname verification failed %s -> %s" % + (verifier, result[verifier]['nodelist'][failed])) + raise errors.OpExecError("ssh/hostname verification failed.") # Distribute updated /etc/hosts and known_hosts to all nodes, # including the node just added -- GitLab