Example #1
0
def report_new_node(new_node):
    try:
        if app.status == C.STATUS_LEADER:
            app_logger.info(info_stamp() + "%s joined", new_node)
            app.conn.broadcast_new_node(new_node, app.topology)
        else:
            leaderip, leaderport = decode_id(app.nodes[C.NODE_LEADER])
            app.conn.new_node_report(leaderip, leaderport, new_node)
    except:
        pass
Example #2
0
def process_leader_message(leader_json):
    if leader_json == app.id:
        app_logger.debug(debug_stamp() +
                         'Leader information distributed successfully')
        backip, backport = decode_id(app.nodes[C.NODE_BACK])
    elif app.nodes[C.NODE_FRONT]:
        dstip, dstport = decode_id(app.nodes[C.NODE_FRONT])
        app.conn.send_leader(dstip, dstport, leader_json)

    app.nodes[C.NODE_LEADER] = leader_json
    app_logger.info(info_stamp() + 'New leader: %s', app.nodes[C.NODE_LEADER])
Example #3
0
def report_dead_node(dead_node):
    try:
        leaderip, leaderport = decode_id(app.nodes[C.NODE_LEADER])
        if app.status == C.STATUS_LEADER:
            app_logger.info(info_stamp() + "%s lost connection", dead_node)
            app.conn.broadcast_dead_node(dead_node, app.topology)
            remove_node(dead_node)
        else:
            app.conn.death_report(leaderip, leaderport, dead_node)
    except:
        pass
Example #4
0
def logout():
    if app.nodes[C.NODE_FRONT] != app.nodes[C.NODE_BACK]:
        backip, backport = decode_id(app.nodes[C.NODE_BACK])
        frontip, frontport = decode_id(app.nodes[C.NODE_FRONT])
        app.conn.send_front_setting(backip, backport, app.nodes[C.NODE_FRONT])
        app.conn.send_back_setting(frontip, frontport, app.nodes[C.NODE_BACK])
    if app.status == C.STATUS_LEADER:
        app.conn.broadcast_loggedout_node(app.id, app.topology)

    app_logger.info(info_stamp() + "Logging out...")
    report_logout(app.id)
    os._exit(0)
Example #5
0
def heartbeat():
    while True:
        try:
            leader_ip, leaderport = decode_id(app.nodes[C.NODE_LEADER])
            if app.status != C.STATUS_LEADER:
                app.conn.heartbeat(leader_ip, leaderport)
        except:
            if app.nodes[C.NODE_LEADER]:
                app_logger.info(info_stamp() + "%s lost connection",
                                app.nodes[C.NODE_LEADER])
            app.nodes[C.NODE_LEADER] = None
        finally:
            time.sleep(C.SLEEP_TIME)
Example #6
0
def process_welcome_json(json):
    try:
        app.nodes[C.NODE_BACK] = json[C.NODE_BACK]
    except:
        pass

    try:
        app.nodes[C.NODE_FRONT] = json[C.NODE_FRONT]
    except:
        pass

    try:
        app.nodes[C.NODE_LEADER] = json[C.NODE_LEADER]
        if app.nodes[C.NODE_LEADER]:
            app_logger.info(info_stamp() + 'New leader: %s',
                            app.nodes[C.NODE_LEADER])
    except:
        pass
Example #7
0
def process_info_death(dead_node):  # follower
    app_logger.info(info_stamp() + "%s lost connection", dead_node)
Example #8
0
def process_dead_node(dead_node):
    app_logger.info(info_stamp() + "%s lost connection", dead_node)
    remove_node(dead_node)
    app.conn.broadcast_dead_node(dead_node, app.topology)
Example #9
0
def process_info_new(new_node):  # follower
    app_logger.info(info_stamp() + "%s joined", new_node)
Example #10
0
def process_new_node(new_node):  # leader
    app_logger.info(info_stamp() + "%s joined", new_node)
    app.conn.broadcast_new_node(new_node, app.topology)
Example #11
0
def process_info_loggedout(loggedout_node):  # follower
    app_logger.info(info_stamp() + "%s logged out", loggedout_node)
Example #12
0
def process_logout(loggedout_node):  # leader
    # TODO report death to all nodes
    app_logger.info(info_stamp() + "%s logged out", loggedout_node)
    remove_node(loggedout_node)
    app.conn.broadcast_loggedout_node(loggedout_node, app.topology)