def get_host_status(hostlist): """ Test if SSH command works on a host and return a dictionary Return Ex: {host1: True, host2: False} where True represents SSH command success and False represents failure """ if not isinstance(hostlist, list): raise Exception("Input parameter should be of type list") pool = WorkerPool() for host in hostlist: cmd = Echo('ssh test', '', ctxt=REMOTE, remoteHost=host) pool.addCommand(cmd) pool.join() pool.haltWork() host_status_dict = {} for cmd in pool.getCompletedItems(): if not cmd.get_results().wasSuccessful(): host_status_dict[cmd.remoteHost] = False else: host_status_dict[cmd.remoteHost] = True return host_status_dict
def get_host_status(hostlist): """ Test if SSH command works on a host and return a dictionary Return Ex: {host1: True, host2: False} where True represents SSH command success and False represents failure """ if not isinstance(hostlist, list): raise Exception("Input parameter should be of type list") pool = WorkerPool(min(len(hostlist), 16)) for host in hostlist: cmd = Echo('ssh test', '', ctxt=REMOTE, remoteHost=host) pool.addCommand(cmd) pool.join() pool.haltWork() host_status_dict = {} for cmd in pool.getCompletedItems(): if not cmd.get_results().wasSuccessful(): host_status_dict[cmd.remoteHost] = False else: host_status_dict[cmd.remoteHost] = True return host_status_dict
def checkSSH(self): '''Check that ssh to hostlist is okay.''' pool = WorkerPool() for h in self.list: cmd = Echo('ssh test', '', ctxt=REMOTE, remoteHost=h) pool.addCommand(cmd) pool.join() pool.haltWork() for cmd in pool.getCompletedItems(): if not cmd.get_results().wasSuccessful(): raise SSHError("Unable to ssh to '%s'" % cmd.remoteHost) return True
def removeBadHosts(self): ''' Update list of host to include only the host on which SSH was successful''' pool = WorkerPool() for h in self.list: cmd = Echo('ssh test', '', ctxt=REMOTE, remoteHost=h) pool.addCommand(cmd) pool.join() pool.haltWork() bad_hosts = [] working_hosts = [] for cmd in pool.getCompletedItems(): if not cmd.get_results().wasSuccessful(): bad_hosts.append(cmd.remoteHost) else: working_hosts.append(cmd.remoteHost) self.list = working_hosts[:] return bad_hosts