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
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)}
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