def get_empty_groups(n): if manifest().get("symmetric_groups", False): result = bla.uncoupled_groups() logging.info("uncoupled groups: " + str(result)) return result else: return None
def get_bad_groups(n): if manifest().get("symmetric_groups", False): (good_symm_groups, bad_symm_groups) = bla.filter_symm_groups() result = list(bad_symm_groups) logging.info("bad_symm_groups: " + str(result)) return result else: return None
def balance(n, request): global stats, groups, symm_groups try: logging.info("----------------------------------------") logging.info("New request" + str(len(request))) logging.info(request) weighted_groups = get_group_weights(n) target_groups = [] if manifest().get("symmetric_groups", False): lsymm_groups = weighted_groups[request[0]] for (gr_list, weight) in lsymm_groups: logging.info("gr_list: %s %d" % (str(gr_list), request[0])) grl = {'rating': weight, 'groups': gr_list} logging.info("grl: %s" % str(grl)) target_groups.append(grl) logging.info("target_groups: %s" % str(target_groups)) if target_groups: sorted_groups = sorted(target_groups, key=lambda gr: gr['rating'], reverse=True)[0] logging.info(sorted_groups) result = (sorted_groups['groups'], request[1]) else: result = ([], request[1]) else: for group_id in bla.all_group_ids(): target_groups.append(bla.get_group(int(group_id))) sorted_groups = sorted(target_groups, key=lambda gr: gr.freeSpaceInKb(), reverse=True)[:int(request[0])] logging.info(sorted_groups) result = ([g.groupId() for g in sorted_groups], request[1]) logging.info("result: %s" % str(result)) return result except Exception as e: logging.error("Balancer error: " + str(e) + "\n" + traceback.format_exc()) return {'Balancer error': str(e)}
import traceback import sys sys.path.append("/usr/lib") import elliptics import msgpack, json import balancer import balancelogicadapter import node_info_updater logging = Log() with open(manifest()["config"], "r") as config_file: config = json.load(config_file) log = elliptics.Logger(str(config["dnet_log"]), config["dnet_log_mask"]) n = elliptics.Node(log) for host in config["elliptics_nodes"]: try: logging.info("host: " + str(host)) n.add_remote(str(host[0]), host[1]) except Exception as e: logging.error("Error: " + str(e) + "\n" + traceback.format_exc()) meta_node = elliptics.Node(log) for host in config["metadata"]["nodes"]: try: