def get_slave_bricks_status(host, vol): po = Popen(['gluster', '--xml', '--remote-host=' + host, 'volume', 'status', vol, "detail"], stdout=PIPE, stderr=PIPE) vix = po.stdout.read() po.wait() po.terminate_geterr(fail_on_err=False) if po.returncode != 0: logging.info("Volume status command failed, unable to get " "list of up nodes of %s, returning empty list: %s" % (vol, po.returncode)) return [] vi = XET.fromstring(vix) if vi.find('opRet').text != '0': logging.info("Unable to get list of up nodes of %s, " "returning empty list: %s" % (vol, vi.find('opErrstr').text)) return [] up_hosts = set() try: for el in vi.findall('volStatus/volumes/volume/node'): if el.find('status').text == '1': up_hosts.add(el.find('hostname').text) except (ParseError, AttributeError, ValueError) as e: logging.info("Parsing failed to get list of up nodes of %s, " "returning empty list: %s" % (vol, e)) return list(up_hosts)
def get_slave_bricks_status(host, vol): po = Popen(['gluster', '--xml', '--remote-host=' + host, 'volume', 'status', vol, "detail"], stdout=PIPE, stderr=PIPE) vix = po.stdout.read() po.wait() po.terminate_geterr(fail_on_err=False) if po.returncode != 0: logging.info("Volume status command failed, unable to get " "list of up nodes of %s, returning empty list: %s" % (vol, po.returncode)) return [] vi = XET.fromstring(vix) if vi.find('opRet').text != '0': logging.info("Unable to get list of up nodes of %s, " "returning empty list: %s" % (vol, vi.find('opErrstr').text)) return [] up_hosts = set() try: for el in vi.findall('volStatus/volumes/volume/node'): if el.find('status').text == '1': up_hosts.add(el.find('hostname').text) except (ParseError, AttributeError, ValueError) as e: logging.info("Parsing failed to get list of up nodes of %s, " "returning empty list: %s" % (vol, e)) return list(up_hosts)
def monitor(*resources): # Mount geo-rep management volume if gconf.meta_volume: mgmt_mnt = os.path.join(gconf.working_dir, gconf.meta_volume) if not os.path.exists(mgmt_mnt): try: os.makedirs(mgmt_mnt) except OSError: ex = sys.exc_info()[1] if ex.errno == EEXIST: pass else: raise if not os.path.ismount(mgmt_mnt): po = Popen([ "mount", "-t", "glusterfs", "localhost:%s" % gconf.meta_volume, mgmt_mnt ], stdout=PIPE, stderr=PIPE) po.wait() po.terminate_geterr() # Check if gsyncd restarted in pause state. If # yes, send SIGSTOP to negative of monitor pid # to go back to pause state. if gconf.pause_on_start: os.kill(-os.getpid(), signal.SIGSTOP) """oh yeah, actually Monitor is used as singleton, too""" return Monitor().multiplex(*distribute(*resources))
def monitor(*resources): # Mount geo-rep management volume if gconf.meta_volume: mgmt_mnt = os.path.join(gconf.working_dir, gconf.meta_volume) if not os.path.exists(mgmt_mnt): try: os.makedirs(mgmt_mnt) except OSError: ex = sys.exc_info()[1] if ex.errno == EEXIST: pass else: raise if not os.path.ismount(mgmt_mnt): po = Popen(["mount", "-t", "glusterfs", "localhost:%s" % gconf.meta_volume, mgmt_mnt], stdout=PIPE, stderr=PIPE) po.wait() po.terminate_geterr() # Check if gsyncd restarted in pause state. If # yes, send SIGSTOP to negative of monitor pid # to go back to pause state. if gconf.pause_on_start: os.kill(-os.getpid(), signal.SIGSTOP) """oh yeah, actually Monitor is used as singleton, too""" return Monitor().multiplex(*distribute(*resources))
def __init__(self, vol, host='localhost', prelude=[]): po = Popen(prelude + ['gluster', '--xml', '--remote-host=' + host, 'volume', 'info', vol], stdout=PIPE, stderr=PIPE) vix = po.stdout.read() po.wait() po.terminate_geterr() vi = XET.fromstring(vix) if vi.find('opRet').text != '0': if prelude: via = '(via %s) ' % prelude.join(' ') else: via = ' ' raise GsyncdError('getting volume info of %s%s failed with errorcode %s', (vol, via, vi.find('opErrno').text)) self.tree = vi self.volume = vol self.host = host
def __init__(self, vol, host='localhost', prelude=[]): po = Popen(prelude + ['gluster', '--xml', '--remote-host=' + host, 'volume', 'info', vol], stdout=PIPE, stderr=PIPE) vix = po.stdout.read() po.wait() po.terminate_geterr() vi = XET.fromstring(vix) if vi.find('opRet').text != '0': if prelude: via = '(via %s) ' % prelude.join(' ') else: via = ' ' raise GsyncdError('getting volume info of %s%s ' 'failed with errorcode %s' % (vol, via, vi.find('opErrno').text)) self.tree = vi self.volume = vol self.host = host
def __init__(self, vol, host="localhost", prelude=[]): po = Popen( prelude + ["gluster", "--xml", "--remote-host=" + host, "volume", "info", vol], stdout=PIPE, stderr=PIPE ) vix = po.stdout.read() po.wait() po.terminate_geterr() vi = XET.fromstring(vix) if vi.find("opRet").text != "0": if prelude: via = "(via %s) " % prelude.join(" ") else: via = " " raise GsyncdError( "getting volume info of %s%s " "failed with errorcode %s", (vol, via, vi.find("opErrno").text) ) self.tree = vi self.volume = vol self.host = host