def sync(nodes, paths): cmds = [] for n in nodes: args = ["-rRl", "--delete", "--rsh=\"ssh -o ConnectTimeout=30\""] dst = ["%s:/" % util.formatRsyncAddr(util.scopeAddr(n.host))] args += paths + dst cmdline = "rsync %s" % " ".join(args) cmds += [(n, cmdline, "", None)] for (id, success, output) in runLocalCmdsParallel(cmds): if not success: util.warn("error rsyncing to %s: %s" % (util.scopeAddr(id.host), output))
def _sendEventInit(node, event, args, result_event): host = util.scopeAddr(node.addr) try: bc = broccoli.Connection("%s:%d" % (host, node.getPort()), broclass="control", flags=broccoli.BRO_CFLAG_ALWAYS_QUEUE, connect=False) bc.subscribe(result_event, _event_callback(bc)) bc.got_result = False bc.connect() except IOError, e: util.debug(1, "broccoli: cannot connect", prefix=node.name) return (False, str(e))
def isAlive(host): if host in _deadHosts: return False (success, output) = runLocalCmd("ssh -o ConnectTimeout=30 %s true" % util.scopeAddr(host)) if not success: _deadHosts[host] = True if config.Config.cron == "0": util.warn("host %s is not alive" % host) return success
def isAlive(host): if host in _deadHosts: return False (success, output) = runLocalCmd( os.path.join(config.Config.scriptsdir, "is-alive") + " " + util.scopeAddr(host)) if not success and not config.Config.cron == "1": _deadHosts[host] = True util.warn("host %s is not alive" % host) return success
def _getConnection(host): global WhoAmI if not WhoAmI: (success, output) = captureCmd("whoami") if not success: util.error("can't get 'whoami'") WhoAmI = output[0] if not host: host = config.Config.manager() if host.name in Connections: p = Connections[host.name] if p.poll() != None: # Terminated. global _deadHosts _deadHosts[host.host] = True util.warn("connection to %s broke" % host.host) return None return (p.stdin, p.stdout) if isLocal(host): cmdline = "sh" else: # Check whether host is alive. if not isAlive(host.host): return None cmdline = "ssh -o ConnectTimeout=30 -l %s %s sh" % ( WhoAmI, util.scopeAddr(host.host)) util.debug(1, cmdline, prefix="local") try: p = popen(cmdline) except OSError, e: util.warn("cannot login into %s [IOError: %s]" % (host.host, e)) return None
def _getConnection(host): global WhoAmI if not WhoAmI: (success, output) = captureCmd("whoami") if not success: util.error("can't get 'whoami'") WhoAmI = output[0] if not host: host = config.Config.manager() if host.name in Connections: p = Connections[host.name] if p.poll() != None: # Terminated. global _deadHosts _deadHosts[host.host] = True util.warn("connection to %s broke" % host.host) return None return (p.stdin, p.stdout) if isLocal(host): cmdline = "sh" else: # Check whether host is alive. if not isAlive(host.host): return None cmdline = "ssh -o ConnectTimeout=30 -l %s %s sh" % (WhoAmI, util.scopeAddr(host.host)) util.debug(1, cmdline, prefix="local") try: p = popen(cmdline) except OSError, e: util.warn("cannot login into %s [IOError: %s]" % (host.host, e)) return None
def _getConnection(host): global WhoAmI if not WhoAmI: (success, output) = runLocalCmd("whoami") if not success: util.error("can't get 'whoami'") WhoAmI = output[0] if not host: host = config.Config.manager() if host.name in Connections: p = Connections[host.name] if p.poll() != None: # Terminated. global _deadHosts if host.host not in _deadHosts: _deadHosts[host.host] = True util.warn("connection to %s broke" % host.host) return None return (p.stdin, p.stdout) if isLocal(host): cmdline = "sh" else: # Check whether host is alive. if not isAlive(host.host): return None # ServerAliveInterval and ServerAliveCountMax prevents broctl from # hanging if a remote host is disconnected from network while an ssh # session is open. cmdline = "ssh -o ConnectTimeout=30 -o ServerAliveInterval=10 -o ServerAliveCountMax=3 -l %s %s sh" % (WhoAmI, util.scopeAddr(host.host)) util.debug(1, cmdline, prefix="local") try: p = popen(cmdline) except OSError, e: util.warn("cannot login into %s [IOError: %s]" % (host.host, e)) return None
def isAlive(host): if host in _deadHosts: return False (success, output) = runLocalCmd(os.path.join(config.Config.scriptsdir, "is-alive") + " " + util.scopeAddr(host)) if not success and not config.Config.cron == "1": _deadHosts[host] = True util.warn("host %s is not alive" % host) return success