Example #1
0
def read_valve(router_id):
    log.debug('valve router_id: %r' % router_id)
    key = ('read', 'valve', str(router_id))
    ret_queue = PseudoGeventQueue()
    args = [
        ROUTER_SCRIPT,
        'get',
        'valve',
        str(router_id),
    ]
    cmd_waiting_queues_put(router_id, router_hash, key, args, ret_queue)
    ret_list = []
    output = cmd_response_get(ret_queue, read_response_handle(ret_list))
    if output:
        return json_response(status=SERVER_ERROR,
                             description=output), HTTP_INTERNAL_SERVER_ERROR

    try:
        valve = Valve(json.loads(ret_list[0]))
        valve.validate()
        return json_response(status=SUCCESS,
                             data=valve.to_primitive(),
                             type="ROUTER"), HTTP_OK
    except Exception, e:
        log.debug(e)
        log.debug(output)
        return json_response(status=SERVER_ERROR,
                             description=str(e)), HTTP_INTERNAL_SERVER_ERROR
Example #2
0
def read_lan(router_id, if_index):
    key = ('read', 'valve-lan', str(router_id), str(if_index))
    ret_queue = PseudoGeventQueue()
    args = [
        ROUTER_SCRIPT,
        'get',
        'valve-lan',
        str(router_id),
        str(if_index),
    ]
    cmd_waiting_queues_put(router_id, router_hash, key, args, ret_queue)
    ret_list = []
    output = cmd_response_get(ret_queue, read_response_handle(ret_list))
    if output:
        return json_response(status=SERVER_ERROR,
                             description=output), HTTP_INTERNAL_SERVER_ERROR

    try:
        lan = Lan(json.loads(ret_list[0]))
        lan.validate()
        return json_response(status=SUCCESS,
                             data=lan.to_primitive(),
                             type="LAN"), HTTP_OK
    except Exception, e:
        log.debug(e)
        log.debug(output)
        return json_response(status=SERVER_ERROR,
                             description=str(e)), HTTP_INTERNAL_SERVER_ERROR
Example #3
0
def put_cmd(cmd, router_id):
    log.debug('router_id: %r, command: %r' % (router_id, cmd.to_native()))

    key = ('exec-cmd', cmd.command, str(router_id))
    message = []

    args = [
        ROUTER_SCRIPT,
        cmd.command,
        str(router_id),
        cmd.if_type,
        str(cmd.if_index),
        cmd.source,
        cmd.target,
        '%.3f' % (cmd.interval / 1000.0),
    ]
    message.append(args)

    ret_queue = PseudoGeventQueue()
    cmd_waiting_queues_put(router_id, router_hash,
                           key, message, ret_queue)
    ret_list = []
    err = cmd_response_get(ret_queue, read_response_handle(ret_list))
    if err or not ret_list:
        return json_response(
            data={'OUTPUT': ''}, status=SUCCESS), HTTP_OK
    else:
        return json_response(
            data={'OUTPUT': ret_list[0]}, status=SUCCESS), HTTP_OK
Example #4
0
def read_conn_limit(router_id):
    key = ('read', 'conn', str(router_id))
    args = [ROUTER_SCRIPT, 'get', 'conntrack', '%d' % router_id]

    ret_queue = PseudoGeventQueue()
    cmd_waiting_queues_put(router_id, router_hash, key, args, ret_queue)
    ret_list = []
    output = cmd_response_get(ret_queue, read_response_handle(ret_list))
    if output:
        log.error('router %d: %s' % (router_id, output))
        return json_response(status=SERVER_ERROR,
                             description=output), HTTP_INTERNAL_SERVER_ERROR

    return json_response(status=SUCCESS, data={"RESULT": ret_list[0]}), HTTP_OK