コード例 #1
0
ファイル: balancer.py プロジェクト: vkap/mastermind
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
コード例 #2
0
ファイル: balancer.py プロジェクト: vkap/mastermind
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
コード例 #3
0
ファイル: balancer.py プロジェクト: vkap/mastermind
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)}
コード例 #4
0
ファイル: __init__.py プロジェクト: vkap/mastermind
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: