def test(self): result = vcluster.ExchangeNodeRoot("node1.example.com", "/tmp/file", _basedir=None, _noderoot=None) self.assertEqual(result, "/tmp/file") self.assertRaises(RuntimeError, vcluster.ExchangeNodeRoot, "node1.example.com", "/tmp/node1.example.com", _basedir="/tmp", _noderoot="/tmp/nodeZZ.example.com") result = vcluster.ExchangeNodeRoot("node2.example.com", "/tmp/node1.example.com/file", _basedir="/tmp", _noderoot="/tmp/node1.example.com") self.assertEqual(result, "/tmp/node2.example.com/file")
def CopyFileToNode(self, node, port, filename): """Copy a file to another node with scp. @param node: node in the cluster @param filename: absolute pathname of a local file @rtype: boolean @return: the success of the operation """ if not os.path.isabs(filename): logging.error("File %s must be an absolute path", filename) return False if not os.path.isfile(filename): logging.error("File %s does not exist", filename) return False command = [constants.SCP, "-p"] command.extend(self._BuildSshOptions(True, False, True, True, port=port)) command.append(filename) if netutils.IP6Address.IsValid(node): node = netutils.FormatAddress((node, None)) command.append("%s:%s" % (node, vcluster.ExchangeNodeRoot(node, filename))) result = utils.RunCmd(command) if result.failed: logging.error("Copy to node %s failed (%s) error '%s'," " command was '%s'", node, result.fail_reason, result.output, result.cmd) return not result.failed