Пример #1
0
    def get_group_weights(self, request):
        namespaces = {}
        all_symm_group_objects = []
        for couple in storage.couples:
            if couple.status not in storage.GOOD_STATUSES:
                continue

            symm_group = bla.SymmGroup(couple)
            namespaces.setdefault(couple.namespace, set())
            namespaces[couple.namespace].add(len(couple))
            all_symm_group_objects.append(symm_group)
            # logger.debug(str(symm_group))

        result = {}

        for namespace, sizes in namespaces.iteritems():
            for size in sizes:
                (group_weights, info) = balancelogic.rawBalance(
                    all_symm_group_objects,
                    bla.getConfig(),
                    bla._and(bla.GroupSizeEquals(size), bla.GroupNamespaceEquals(namespace)),
                )
                result.setdefault(namespace, {})[size] = [
                    ([g.group_id for g in item[0].groups],) + item[1:] + (int(item[0].get_stat().free_space),)
                    for item in group_weights.items()
                ]
                logger.info("Cluster info: " + str(info))

        logger.info(str(result))
        return result
Пример #2
0
def get_group_weights(n):
    try:
        size_to_sgs = {}
        (good, bad) = bla.filter_symm_groups()
        all_symm_groups = list(good) + list(bad)
        all_symm_group_objects = []
        for tuple_symm_group in all_symm_groups:
            symm_group = bla.SymmGroup(tuple_symm_group)
            sized_symm_groups = size_to_sgs.setdefault(len(tuple_symm_group), [])
            sized_symm_groups.append(symm_group)
            all_symm_group_objects.append(symm_group)
            logging.info(str(symm_group))

        result = {}

        for size in size_to_sgs:
            (group_weights, info) = balancelogic.rawBalance(all_symm_group_objects, bla.getConfig(), bla.GroupSizeEquals(size))
            result[size] = [item for item in group_weights.items()]
            logging.info("Cluster info: " + str(info))

        logging.info(str(result))
        return result
    except Exception as e:
        logging.error("Balancelogic error: " + str(e) + "\n" + traceback.format_exc())
        return {'Balancelogic error': str(e)}
Пример #3
0
    def get_group_weights(self, request):
        namespaces = {}
        all_symm_group_objects = []
        for couple in storage.couples:
            if couple.status not in storage.GOOD_STATUSES:
                continue

            symm_group = bla.SymmGroup(couple)
            namespaces.setdefault(couple.namespace, set())
            namespaces[couple.namespace].add(len(couple))
            all_symm_group_objects.append(symm_group)
            # logger.debug(str(symm_group))

        result = {}

        for namespace, sizes in namespaces.iteritems():
            for size in sizes:
                (group_weights, info) = balancelogic.rawBalance(
                    all_symm_group_objects, bla.getConfig(),
                    bla._and(bla.GroupSizeEquals(size),
                             bla.GroupNamespaceEquals(namespace)))
                result.setdefault(namespace, {})[size] = \
                    [([g.group_id for g in item[0].groups],) +
                         item[1:] +
                         (int(item[0].get_stat().free_space),)
                     for item in group_weights.items()]
                logger.info('Cluster info: ' + str(info))

        logger.info(str(result))
        return result