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