Example #1
0
    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)
Example #2
0
 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()
Example #3
0
 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()
Example #4
0
 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()
Example #5
0
 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()
Example #6
0
    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)
Example #7
0
 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()
Example #8
0
 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()