def _take_action(self, parsed_args): import zookeeper from oio.zk.client import get_meta0_paths, get_connected_handles self.logger.debug("Checking meta0 services") # TODO: tcp touch to the meta0 services # check they are registered in the ZK for zh in get_connected_handles(self.zookeeper()): for p in get_meta0_paths(zh, self.app.options.ns): try: registered = set() for n in zookeeper.get_children(zh.get(), p): v, m = zookeeper.get(zh.get(), p + '/' + n) registered.add(v) known = set() for t, i, p, s in self.filter_services( self.catalog, 'meta0'): known.add('%s:%d' % (i, p)) self.logger.info("meta0 known=%d zk_registered=%d", len(known), len(registered)) assert registered == known except Exception as ex: self.logger.exception( "Failed to list the meta0 services " "from zookeeper: %s", ex) finally: zh.close() yield ('OK', None)
def iterate_groups(self, parsed_args, non_leaf=False): from oio.zk.client import get_connected_handles, \ generate_namespace_tree as _run ns, cnxstr = self.get_params(parsed_args) for zh in get_connected_handles(cnxstr, logger=self.log): for group in _run(ns, parsed_args.srvtype, non_leaf=non_leaf): yield zh.get(), group zh.close()
def take_action(self, parsed_args): ns, cnxstr = self.get_params(parsed_args) if not parsed_args.yeah: self.log.warn("This action on [%s] requires iron bollocks.", ns) return for zh in get_connected_handles(cnxstr): try: delete_children(zh.get(), ns, self.log) except Exception as ex: self.log.exception("Failed to flush TODO: %s", str(ex)) zh.close()
def take_action(self, parsed_args): ns, cnxstr = self.get_params(parsed_args) if not parsed_args.yeah: self.log.warn("This action on [%s] requires iron bollocks.", ns) return from oio.zk.client import get_connected_handles, delete_children for zh in get_connected_handles(cnxstr, logger=self.log): try: delete_children(zh.get(), ns, self.log) except Exception as ex: self.log.exception("Failed to flush '%s': %s", zh.cnxstr, str(ex)) self.__class__.success = False finally: zh.close()
def take_action(self, parsed_args): # Adapt the batch size for slow ZK batch_size = 2048 if parsed_args.slow: batch_size = 8 # Send a bootstrap on each ensemble ns, cnxstr = self.get_params(parsed_args) for zh in get_connected_handles(cnxstr): try: create_namespace_tree(zh.get(), ns, self.log, batch_size=batch_size, precheck=parsed_args.lazy) except Exception as ex: self.log.exception("Failed to bootstrap TODO: %s", str(ex)) zh.close()
def _take_action(self, parsed_args): from oio.zk.client import get_meta0_paths, get_connected_handles self.logger.debug("Checking meta0 services") # TODO: tcp touch to the meta0 services # check they are registered in the ZK for zh in get_connected_handles(self.zookeeper(), logger=self.logger): for path in get_meta0_paths(zh, self.app.options.ns): try: zk_registered = set() for node in zh.get().get_children(path): addr, _ = zh.get().get(path + '/' + node) if addr is not None: addr = addr.decode('utf-8') zk_registered.add(addr) known = set() for _, host, port, score in self.filter_services( self.catalog, 'meta0'): if score == 0: self.success = False yield ('Warn', '%s:%d is down' % (host, port)) known.add('%s:%d' % (host, port)) self.logger.info("meta0 known=%d zk_registered=%d", len(known), len(zk_registered)) for item in zk_registered - known: self.success = False yield ('Error', '%s unknown but present in zk' % item) for item in known - zk_registered: self.success = False yield ('Error', '%s known but not present in zk' % item) except Exception as ex: self.success = False yield ('Error', "Failed to list the meta0 services " "from zookeeper: %s" % ex) finally: zh.close() if self.success: yield ('OK', None)
def take_action(self, parsed_args): # Adapt the batch size for slow ZK batch_size = 2048 if parsed_args.slow: batch_size = 8 # Send a bootstrap on each ensemble ns, cnxstr = self.get_params(parsed_args) from oio.zk.client import get_connected_handles, create_namespace_tree for zh in get_connected_handles(cnxstr, logger=self.log): try: create_namespace_tree(zh.get(), ns, self.log, batch_size=batch_size, precheck=parsed_args.lazy) except Exception as ex: self.log.exception("Failed to bootstrap '%s': %s", zh.cnxstr, ex) self.__class__.success = False finally: zh.close()
def iterate_groups(self, parsed_args, non_leaf=False): ns, cnxstr = self.get_params(parsed_args) for zh in get_connected_handles(cnxstr): for group in _run(ns, parsed_args.srvtype, non_leaf=non_leaf): yield zh.get(), group zh.close()