def install_gluster(tarball): nodes = run_helper.get_nodes_ip() clients = run_helper.get_client_ip() for client in clients: if client not in nodes: nodes.append(client) if not os.path.exists(tarball): print 'INFO: Source tarball ' + tarball + ' doesn\'t exist. Proceeding to download from bits.gluster.com' download_url = 'http://bits.gluster.com/pub/gluster/glusterfs/src/' + tarball cmd = 'wget ' + download_url wget_status = os.system(cmd) if wget_status: print 'unable to download ' + tarball + ' from bits.gluster.com, \n Exiting...' sys.exit(1) prefix_path = run_helper.get_prefix_path() build_dir = run_helper.get_build_dir() if build_dir[-1] != '/': build_dir = build_dir + '/' ret_queue = Queue.Queue() threads = [] for node in nodes: t = threading.Thread(target=real_install_gluster, args=(node, tarball, build_dir, prefix_path, ret_queue)) t.start() threads.append(t) ret_codes = [] for t in threads: t.join() ret_codes.append(ret_queue.get()) return_value = 0 for ret in ret_codes: if ret != 0: return_value = 1 break return return_value
def install_gluster_rpms(rpms): nodes = run_helper.get_nodes_ip() clients = run_helper.get_client_ip() for client in clients: if client not in nodes: nodes.append(client) g_version = run_helper.get_gluster_version() if g_version[-7:] == '.tar.gz': gluster_version = g_version[:-7] else: gluster_version = g_version match = re.search(r'glusterfs-([\w.]+)', gluster_version) if not match: print 'unable to get gluster version to determine the rpm URL. Please check the configfile' sys.exit(1) version = match.group(1) ret_queue = Queue.Queue() threads = [] for node in nodes: t = threading.Thread(target=install_rpm, args=(node, version, rpms, ret_queue)) t.start() threads.append(t) ret_codes = [] for t in threads: t.join() ret_codes.append(ret_queue.get()) ret_value = 0 for ret in ret_codes: if ret != 0: ret_value = 1 break return ret_value