Beispiel #1
0
def handle_sync_data(data, method):
    if 'contents' in data:
        dns_list, handle_list, result = [], [], []
        for i in data['contents']:
            res = check_data(i, method)
            if res == 'true':
                if i['service'] == 'dns':
                    #dns_list.append(i)
                    dns_queue.put(i)
                else:
                    handle_list.append(i)
            elif res == 'done':
                conf_logger.info('conf success: data: {}'.format(data))
                content.add_oplog(i, 'success', '')
                r = {
                    'id': i['id'],
                    'status': 'success',
                    'description': 'conf success'
                }
                result.append(r)
            else:
                conf_logger.info('conf failed: {} data: {}'.format(res, data))
                content.add_oplog(i, 'fail', res)
                r = {'id': i['id'], 'status': 'fail', 'description': res}
                result.append(r)
        if len(handle_list) > 0:
            task = sync_loop.create_task(
                pub_handle_conf({'contents': handle_list}))
            sync_loop.run_until_complete(task)
            res = task.result()
            return json.dumps(result + res), 200, {
                "Content-Type": "application/json"
            }
Beispiel #2
0
def cmp_update_db(data, proxy_res, xforward_res):
    data = change_data(data)
    proxy_res = change_data(proxy_res)
    xforward_res = change_data(xforward_res)
    l = []
    for i in data:
        if i in xforward_res and i in proxy_res:
            if proxy_res[i]['status'] == 'success' and xforward_res[i][
                    'status'] == 'success':
                content.add_oplog(data[i], 'success', '')
                handle_db_methods[data[i]['bt']][data[i]['sbt']][
                    data[i]['op']](data[i])
                conf_logger.info('conf success: {}'.format(data[i]))
                l.append(proxy_res[i])
            elif proxy_res[i]['status'] != 'success' and xforward_res[i][
                    'status'] == 'success':
                content.add_oplog(data[i], proxy_res[i]['status'],
                                  proxy_res[i]['msg'])
                conf_logger.info('conf failed: {}'.format(data[i]))
                l.append(proxy_res[i])
            elif proxy_res[i]['status'] == 'success' and xforward_res[i][
                    'status'] != 'success':
                content.add_oplog(data[i], xforward_res[i]['status'],
                                  xforward_res[i]['msg'])
                conf_logger.info('conf failed: {}'.format(data[i]))
                l.append(xforward_res[i])
            else:
                content.add_oplog(data[i], 'failed', 'conf failed')
                conf_logger.info('conf failed: {}'.format(data[i]))
                l.append(xforward_res[i])
        else:
            content.add_oplog(data[i], 'failed', 'api return error')
            conf_logger.info('conf failed: {}'.format(data[i]))
            l.append({'id': i, 'status': 'faild', 'msg': 'api return error'})
    return l
Beispiel #3
0
def beat_main_task():
    d = register.get_all_register()
    if d is not None:
        for k in d:
            crm_cfg[k] = d[k]
            conf_logger.info('load register {}:{}'.format(k, d[k]))
    while True:
        #print(crm_cfg)
        if 'proxy' in crm_cfg and beat_connect(
                crm_cfg['proxy']['ip'], crm_cfg['proxy']['port']) == False:
            register.del_register('proxy')
            conf_logger.info('del register proxy:{}'.format(crm_cfg['proxy']))
            del crm_cfg['proxy']
        if 'xforward' in crm_cfg and beat_connect(
                crm_cfg['xforward']['ip'],
                crm_cfg['xforward']['port']) == False:
            register.del_register('xforward')
            conf_logger.info('del register xforward:{}'.format(
                crm_cfg['xforward']))
            del crm_cfg['xforward']
        if 'recursion' in crm_cfg and beat_connect(
                crm_cfg['recursion']['ip'],
                crm_cfg['recursion']['port']) == False:
            register.del_register('recursion')
            conf_logger.info('del register recursion:{}'.format(
                crm_cfg['recursion']))
            del crm_cfg['recursion']
        time.sleep(30)
Beispiel #4
0
def handle_data(data, method):
    if 'contents' in data:
        dns_list, handle_list = [], []
        for i in data['contents']:
            res = check_data(i, method)
            if res == 'true':
                if i['service'] == 'dns':
                    dns_queue.put(i)
                else:
                    handle_list.append(i)
            elif res == 'done':
                conf_logger.info('conf success: data: {}'.format(data))
                content.add_oplog(i, 'success', '')
            else:
                conf_logger.info('conf failed: {} data: {}'.format(res, data))
                content.add_oplog(i, 'fail', res)
        if len(handle_list) > 0:
            contents = {'contents': handle_list}
            handle_queue.put(contents)
Beispiel #5
0
def update_db(data, res):
    data = change_data(data)
    res = change_data(res)
    for i in data:
        if i in res:
            content.add_oplog(data[i], res[i]['status'], res[i]['msg'])
            if res[i]['status'] == 'success':
                handle_db_methods[data[i]['bt']][data[i]['sbt']][
                    data[i]['op']](data[i])
                conf_logger.info('conf success: {}'.format(data[i]))
            else:
                conf_logger.info('conf failed: {}'.format(data[i]))
        else:
            content.add_oplog(data[i], 'failed', 'api return error')
            conf_logger.info('conf failed: {}'.format(data[i]))
Beispiel #6
0
def handle_register(source, data, ip):
    if source == 'ms':
        return {'contents': gen_conf(handle.get_all_handle())}
    elif source == 'proxy':
        crm_cfg['proxy'] = get_url(data, ip)
        register.put_register('proxy', crm_cfg['proxy'])
        conf_logger.info('proxy register: {}'.format(crm_cfg['proxy']))
        return {'contents': gen_conf(handle.get_all_proxy_handle())}
    elif source == 'xforward':
        crm_cfg['xforward'] = get_url(data, ip)
        register.put_register('xforward', crm_cfg['xforward'])
        conf_logger.info('xforward register: {}'.format(crm_cfg['xforward']))
        return {'contents': gen_conf(handle.get_all_xforward_handle())}
    elif source == 'recursion':
        crm_cfg['recursion'] = get_url(data, ip)
        register.put_register('recursion', crm_cfg['recursion'])
        conf_logger.info('recursion register: {}'.format(crm_cfg['recursion']))
        return {'contents': gen_conf(handle.get_all_recursion_handle())}
Beispiel #7
0
async def pub_conf(data):
    async with aiohttp.ClientSession() as client:
        if data['bt'] in fpga_bt:
            fpga_res = await conf_dnsys(client, data)
            conf_logger.debug('recv data from dnsys: {}'.format(fpga_res))
            try:
                if fpga_res[0]['status'] == 'success':
                    #可能还需调用ybind commit接口
                    content.add_oplog(data, 'success', '')
                    handle_real_data(data)
                    conf_logger.info('conf success: {}'.format(data))
                    return 'success'
                else:
                    content.add_oplog(data, 'fail', fpga_res[0]['msg'])
                    conf_logger.info('conf failed: {}'.format(data))
                    return fpga_res[0]['msg']
            except Exception as e:
                conf_logger.error(str(e))
                content.add_oplog(data, 'fail', 'fpga api return result error')
                conf_logger.info('conf failed: {}'.format(data))
                return 'fpga api return result error'
        elif data['bt'] in ybind_bt:
            ybind_res = await conf_ybind(client, data)
            conf_logger.debug('recv ybind:{}'.format(ybind_res))
            try:
                if ybind_res['description'] == 'Success':
                    content.add_oplog(data, 'success', '')
                    handle_real_data(data)
                    conf_logger.info('conf success: {}'.format(data))
                    return 'success'
                else:
                    content.add_oplog(data, 'fail', ybind_res['description'])
                    conf_logger.info('conf failed: {}'.format(data))
                    return ybind_res['description']
            except Exception as e:
                conf_logger.error(str(e))
                content.add_oplog(data, 'fail',
                                  'ybind api return result error')
                conf_logger.info('conf failed: {}'.format(data))
                return 'ybind api return result error'
        else:
            fpga_res = await conf_dnsys(client, data)
            ybind_res = await conf_ybind(client, data)
            conf_logger.debug('recv data from ybind:{} dnsys:{}'.format(
                ybind_res, fpga_res))
            try:
                if ybind_res['description'] == 'Success' and fpga_res[0][
                        'status'] == 'success':
                    #可能还需调用ybind commit接口
                    content.add_oplog(data, 'success', '')
                    handle_real_data(data)
                    conf_logger.info('conf success {}'.format(data))
                    return 'success'
                elif ybind_res['description'] == 'Success' and fpga_res[0][
                        'status'] != 'success':
                    # ybind回退操作
                    #ybind_res = await rollback_ybind(client,data)
                    content.add_oplog(
                        data, 'fail',
                        'ybind conf success and fpga conf failed')
                    conf_logger.info('conf failed: {}'.format(data))
                    return fpga_res[0]['msg']
                elif ybind_res['description'] != 'Success' and fpga_res[0][
                        'status'] == 'success':
                    # fpga回滚操作
                    #fpga_res = await rollback_fpga(client,data)
                    content.add_oplog(
                        data, 'fail',
                        'dnsys conf success and ybind conf failed')
                    conf_logger.info('conf failed: {}'.format(data))
                    return ybind_res['description']
                else:
                    content.add_oplog(data, 'fail',
                                      'dnsys and ybind conf failed')
                    conf_logger.info('conf failed: {}'.format(data))
                    return 'dnsys and ybind conf failed'
            except Exception as e:
                conf_logger.error(str(e))
                content.add_oplog(data, 'fail', 'api return result error')
                conf_logger.info('conf failed: {}'.format(data))
                return 'api return result error'