示例#1
0
def get_month_cost_range_list(request):
    from src.lib import django_api
    django_api.DjangoApi().os_environ_update()
    code = 500
    success = False
    result_dict = {}
    body_dict = {}
    month_list = []
    month_cost_list = []

    status, result = query_total_cost()
    if status:
        success = True
        code = 0
    if result:
        for record in result:
            month_list.append(record['month'])
            month_cost_list.append(record['month_cost'])

    body_dict['month_list'] = month_list
    body_dict['month_cost_list'] = month_cost_list
    result_dict['code'] = code
    result_dict['success'] = success
    result_dict['message'] = ''
    result_dict['body'] = body_dict
    result_json = json.dumps(result_dict, ensure_ascii=False)
    print(result_json)
    return HttpResponse(result_json,
                        content_type="application/json,charset=utf-8")
示例#2
0
文件: task.py 项目: kimkcn/cannon
def show_task_schedule(request):
    table_name = 'task_scheduler'
    job_id = str(request.GET['job_id'])
    job_name = str(request.GET['job_name'])
    job_status = str(request.GET['job_status'])

    data_list = []
    body_dict = {}
    result_dict = {}
    from src.lib import django_api
    django_api.DjangoApi().os_environ_update()
    mysql_conn = db_mysql.MyPymysqlPoolDict()
    code = 500
    message = "fail"
    success = False

    sql = "select * from %s where job_id like '%%%s%%' and job_name like '%%%s%%' and " \
          "job_status like '%%%s%%' order by last_schedule_starttime desc;" % \
          (table_name, job_id, job_name, job_status)

    try:
        tmp_result = mysql_conn.select(sql)
    except Exception as e:
        print(e)
    else:
        if tmp_result:
            for record in tmp_result:
                if record['job_status'] == 'normal':
                    record['job_status'] = '正常'
                else:
                    record['job_status'] = '暂停'
                if record['last_schedule_status'] in ['True', 'success']:
                    record['last_schedule_status'] = '成功'
                else:
                    record['last_schedule_status'] = '失败'
                record['last_schedule_starttime'] = record[
                    'last_schedule_starttime'].strftime("%Y-%m-%d %H:%M:%S")
                record['last_schedule_endtime'] = record[
                    'last_schedule_endtime'].strftime("%Y-%m-%d %H:%M:%S")
        else:
            tmp_result = ""
        code = 0
        message = "ok"
        success = True
        data_list = tmp_result
    finally:
        mysql_conn.dispose()

    body_dict['data'] = data_list
    result_dict = {
        'code': code,
        'success': success,
        'message': message,
        'body': body_dict
    }
    result_json = json.dumps(result_dict, ensure_ascii=False)
    return HttpResponse(result_json,
                        content_type="application/json,charset=utf-8")
示例#3
0
def query_resource_package(request):
    from src.lib import django_api
    django_api.DjangoApi().os_environ_update()
    mysql_conn = db_mysql.MyPymysqlPoolDict()
    result_dict = {
        'code': 500,
        'success': False,
        'message': 'fail',
        'body': {}
    }
    table_name = 'cost_resource_package'

    package_name = str(request.GET['package_name'])
    package_id = str(request.GET['package_id'])
    status = str(request.GET['status'])
    deduct_type = str(request.GET['deduct_type'])
    support_product = str(request.GET['support_product'])

    try:
        sql = "select * from %s where package_name like '%%%s%%' and package_id like '%%%s%%' and status like " \
              "'%%%s%%' and deduct_type like '%%%s%%' and support_product like '%%%s%%' order by remaining_amount;" % \
              (table_name, package_name, package_id, status, deduct_type, support_product)
        print(sql)
        tmp_result = mysql_conn.select(sql)
    except Exception as e:
        print('except, reason: %s' % e)
    else:
        result_dict['code'] = 0
        if tmp_result:
            for record in tmp_result:
                record['total_amount'] = '%s %s' % (
                    record['total_amount'], record['total_amount_unit'])
                record['remaining_amount'] = '%s %s' % (
                    record['remaining_amount'],
                    record['remaining_amount_unit'])
                record['effective_time'] = record['effective_time'].strftime(
                    "%Y-%m-%d %H:%M:%S")
                record['expiry_time'] = record['expiry_time'].strftime(
                    "%Y-%m-%d %H:%M:%S")
                record['update_time'] = record['update_time'].strftime(
                    "%Y-%m-%d %H:%M:%S")
            result_dict['success'] = True
            result_dict['message'] = 'success'
    finally:
        mysql_conn.dispose()

    result_dict['body']['data'] = tmp_result
    result_json = json.dumps(result_dict, ensure_ascii=False)
    return HttpResponse(result_json,
                        content_type="application/json,charset=utf-8")
示例#4
0
文件: task.py 项目: kimkcn/cannon
def query_task_job_config(request):
    table_name = 'task_job_config'
    try:
        job_id = str(request.GET['jobId'])
        job_status = str(request.GET['jobStatus'])
    except:
        job_id = ""
        job_status = ""

    data_list = []
    body_dict = {}
    from src.lib import django_api
    django_api.DjangoApi().os_environ_update()
    mysql_conn = db_mysql.MyPymysqlPoolDict()
    code = 500
    message = "fail"
    success = False

    try:
        sql = "select id, job_id jobId, `trigger`, trigger_args triggerArgs, jitter, run_at_startup runAtStartup, " \
              "enable jobStatus from %s where job_id like '%%%s%%' and enable like '%%%s%%' order by " \
              "trigger_args desc;" % (table_name, job_id, job_status)
        print("sql: ", sql)
        tmp_result = mysql_conn.select(sql)
        print(tmp_result, type(tmp_result))
    except Exception as e:
        print(e)
    else:
        if not tmp_result:
            tmp_result = ""
        code = 200
        success = True
        message = "ok"
        data_list = tmp_result
    finally:
        mysql_conn.dispose()

    body_dict['data'] = data_list
    result_dict = {
        'code': code,
        'success': success,
        'message': message,
        'body': body_dict
    }
    result_json = json.dumps(result_dict, ensure_ascii=False)
    print(result_json)
    return HttpResponse(result_json,
                        content_type="application/json,charset=utf-8")
示例#5
0
def query_account_balance(request):
    from src.lib import django_api
    django_api.DjangoApi().os_environ_update()
    mysql_conn = db_mysql.MyPymysqlPool()
    data_list = []
    body_dict = {}
    result_dict = {'code': 500, 'success': False, 'message': 'fail', 'body': body_dict}
    table_name = 'cost_account_balance'

    # 获取总条数,用于返回的json里面输出
    try:
        sql = "select count(id) from %s;" % table_name
        total_count = int(mysql_conn.select(sql)[0][0])
    except Exception as e:
        total_count = 0

    if total_count > 0:
        try:
            sql = "select balance.cost_item_id,item.item_remark,balance.balance,balance.update_time from " \
                  "cost_account_balance balance,cost_item item where item.id = balance.cost_item_id " \
                  "order by balance desc;"
            print(sql)
            tmp_result = mysql_conn.select(sql)
        except Exception as e:
            print('except, reason: %s' % e)
        else:
            result_dict['success'] = True
            result_dict['message'] = 'success'
            result_dict['code'] = 0
            for record in tmp_result:
                single_record = {}
                item_id = record[0]
                item_remark = record[1]
                balance = record[2]
                record_time = record[3].strftime("%Y-%m-%d %H:%M:%S")
                single_record['item_id'] = item_id
                single_record['item_remark'] = item_remark
                single_record['balance'] = balance
                single_record['record_time'] = record_time
                data_list.append(single_record)
        finally:
            mysql_conn.dispose()

    body_dict['data'] = data_list
    result_dict['count'] = total_count
    result_dict['body'] = body_dict
    result_json = json.dumps(result_dict, ensure_ascii=False)
    return HttpResponse(result_json, content_type="application/json,charset=utf-8")
示例#6
0
def query_bill_overview(request):
    from src.lib import django_api
    django_api.DjangoApi().os_environ_update()
    mysql_conn = db_mysql.MyPymysqlPoolDict()

    body_dict = {}
    result_dict = {
        'code': 500,
        'success': False,
        'message': 'fail',
        'body': body_dict
    }
    table_name = 'cost_bill_overview'

    cost_item_id = str(request.GET['cost_item_id'])
    billing_cycle = str(request.GET['billing_cycle'])
    product_code = str(request.GET['product'])

    sql = "select item.item_remark as item_remark, bill.billing_cycle as billing_cycle, " \
          "bill.product_code as product, sum(bill.pretax_amount) as pretax_amount from cost_bill_overview bill," \
          "cost_item item where item.id = bill.cost_item_id and cost_item_id like '%%%s%%' and " \
          "product_code like '%%%s%%' and billing_cycle like '%%%s%%' " \
          "group by item_remark,billing_cycle,product_code order by billing_cycle desc, pretax_amount desc;" % \
          (cost_item_id, product_code, billing_cycle)
    print(sql)

    try:
        tmp_result = mysql_conn.select(sql)
    except Exception as e:
        print('except, reason: %s' % e)
        result_dict['message'] = '数据库查询失败!'
    else:
        data_list = []
        result_dict['success'] = True
        result_dict['code'] = 0
        if not tmp_result:
            result_dict['message'] = '无匹配的数据'
        else:
            result_dict['message'] = 'success'
            data_list = tmp_result
    finally:
        mysql_conn.dispose()

    body_dict['data'] = data_list
    result_dict['body'] = body_dict
    result_json = json.dumps(result_dict, ensure_ascii=False)
    return HttpResponse(result_json,
                        content_type="application/json,charset=utf-8")
示例#7
0
def ak_sync(request):
    from src.lib import django_api
    django_api.DjangoApi().os_environ_update()
    data_list = []
    code = 500
    success = False
    status_message = 'access keys update is fail.'
    if request.method == 'GET':  # 当提交表单时
        get_ram_info = get_ak_info.GetRamInfo()
        result = get_ram_info.get_ak_list()
        if result:
            code = 200
            success = True
            status_message = 'access keys update is success.'
    else:
        status_message = 'error : Please use get request.'
    result_json = to_json_result(code, status_message, success, data_list)
    return HttpResponse(result_json)
示例#8
0
def query_item_cost(request):
    from src.lib import django_api
    django_api.DjangoApi().os_environ_update()
    mysql_conn = db_mysql.MyPymysqlPool()
    result_dict = {}
    body_dict = {}
    data_list = []
    code = 500
    success = False

    cost_item_id = str(request.GET['cost_item_id'])
    month = str(request.GET['month'])

    sql = "select cost.cost_item_id,item.item_remark,cost.month,cost.total_cost from cost_cycle_cost cost, " \
          "cost_item item where item.id = cost.cost_item_id and cost.cost_item_id like '%%%s%%' " \
          "and cost.month like '%%%s%%' order by month desc" % (cost_item_id, month)
    print(sql)
    try:
        tmp_db_result = mysql_conn.select(sql)
        print(tmp_db_result)
    except Exception as e:
        print('except, reason: %s' % e)
    else:
        if tmp_db_result:
            for db_record in tmp_db_result:
                item_dict = {
                    'item_id': db_record[0],
                    'item_remark': db_record[1],
                    'month': db_record[2],
                    'total_cost': db_record[3]
                }
                data_list.append(item_dict)
        success = True
        code = 0
    finally:
        mysql_conn.dispose()
    body_dict['data'] = data_list
    result_dict['code'] = code
    result_dict['success'] = success
    result_dict['message'] = ''
    result_dict['body'] = body_dict
    result_json = json.dumps(result_dict, ensure_ascii=False)
    return HttpResponse(result_json,
                        content_type="application/json,charset=utf-8")
示例#9
0
def get_month_total_cost_web(request):
    from src.lib import django_api
    django_api.DjangoApi().os_environ_update()
    result_dict = {}
    body_dict = {}
    code = 500
    success = False

    status, result = query_total_cost()
    if status:
        success = True
        code = 0

    body_dict['data'] = result
    result_dict['code'] = code
    result_dict['success'] = success
    result_dict['message'] = ''
    result_dict['body'] = body_dict
    result_json = json.dumps(result_dict, ensure_ascii=False)
    print(result_json)
    return HttpResponse(result_json,
                        content_type="application/json,charset=utf-8")
示例#10
0
文件: task.py 项目: kimkcn/cannon
def delete_task_job_config(request):  # 任务配置信息的变更接口!
    code = 500
    success = False
    data_list = []
    body_dict = {}
    from src.lib import django_api
    django_api.DjangoApi().os_environ_update()

    if request.method == 'POST':  # 当提交表单时
        mysql_conn = db_mysql.MyPymysqlPoolDict()
        table_name = 'task_job_config'
        table_id = int(request.body.decode())
        #table_id = json.loads(request.body.decode()).get('id')
        delete_sql = "delete from %s where id=%s" % (table_name, table_id)
        try:
            mysql_conn.delete(delete_sql)
        except Exception as e:
            print('delete task exception: ', e)
        else:
            code = 200
            success = True
            message = "删除任务成功"
        mysql_conn.dispose()
    else:
        message = '请求方法错误'

    body_dict['data'] = data_list
    result_dict = {
        'code': code,
        'success': success,
        'message': message,
        'body': body_dict
    }
    result_json = json.dumps(result_dict, ensure_ascii=False)
    print(result_json)
    return HttpResponse(result_json,
                        content_type="application/json,charset=utf-8")
示例#11
0
def query_total_cost():
    from src.lib import django_api
    django_api.DjangoApi().os_environ_update()
    mysql_conn = db_mysql.MyPymysqlPool()
    month_total_list = []
    status = False
    try:
        sql = "select month, sum(total_cost) from %s group by month order by month desc limit 12;" % table_name
        tmp_db_result = mysql_conn.select(sql)
    except Exception as e:
        print('except, reason: %s' % e)
    else:
        status = True
        if tmp_db_result:
            for db_record in tmp_db_result:
                month = db_record[0]
                total_cost = db_record[1]
                month_dict = {}
                month_dict['month'] = month
                month_dict['month_cost'] = total_cost
                month_total_list.append(month_dict)
    finally:
        mysql_conn.dispose()
    return status, month_total_list
示例#12
0
def query_product_renew(request):
    from src.lib import django_api
    from src.lib import time_api
    django_api.DjangoApi().os_environ_update()
    result_dict = {
        'code': 500,
        'success': False,
        'message': 'fail',
        'body': {}
    }
    table_name = 'cost_product_renew'
    tmp_result = {}

    cost_item_id = str(request.GET['cost_item_id'])
    instance_id = str(request.GET['instance_id'])
    product_code = str(request.GET['product_code'])
    status = str(request.GET['status'])
    page = int(request.GET['page'])
    limit = int(request.GET['limit'])

    print(cost_item_id, instance_id, product_code, status)
    mysql_conn = db_mysql.MyPymysqlPoolDict()
    offset = (page - 1) * limit  # (当前页数-1)*每页数量 = 每页的开始位置

    # 获取总条数,用于返回的json里面输出
    try:
        sql = "select count(id) as count from %s where cost_item_id like '%%%s%%' and instance_id like '%%%s%%' and " \
              "product_code like '%%%s%%' and status like '%%%s%%'" % \
              (table_name, cost_item_id, instance_id, product_code, status)
        print(sql)
        total_count = int(mysql_conn.select(sql)[0]['count'])
    except Exception as e:
        print("except: %s" % e)
        total_count = -1

    try:
        sql = "select cost_item_id, instance_id, instance_name, product_code, product_type, status, " \
              "subscription_type, end_time, create_time, sub_status, renew_status from %s where " \
              "cost_item_id like '%%%s%%' and instance_id like '%%%s%%' and product_code " \
              "like '%%%s%%' and status like '%%%s%%' order by end_time limit %s,%s;" % \
              (table_name, cost_item_id, instance_id, product_code, status, offset, limit)
        print(sql)
        tmp_result = mysql_conn.select(sql)
    except Exception as e:
        print('except: %s' % e)
    else:
        result_dict['code'] = 0
        if tmp_result:
            for record in tmp_result:
                record['count_down'] = int(
                    (record['end_time'] - time.time()) / 86400)
                record['end_time'] = time_api.timestamp_to_datetime(
                    record['end_time'])
                record['create_time'] = time_api.timestamp_to_datetime(
                    record['create_time'])

            print(tmp_result)
            result_dict['success'] = True
            result_dict['message'] = 'success'

    result_dict['body']['data'] = tmp_result
    result_dict['body']['count'] = total_count
    mysql_conn.dispose()
    result_json = json.dumps(result_dict, ensure_ascii=False)
    return HttpResponse(result_json,
                        content_type="application/json,charset=utf-8")
示例#13
0
文件: task.py 项目: kimkcn/cannon
def add_task_job_config(request):  # 任务配置信息的变更接口!
    code = 500
    success = False
    message = 'fail'
    result_dict = {'code': code, 'success': success, 'message': message}
    from src.lib import django_api
    django_api.DjangoApi().os_environ_update()

    if request.method == 'POST':  # 当提交表单时
        print(request.body.decode())
        table_name = 'task_job_config'
        job_id = json.loads(request.body.decode()).get('jobId')
        trigger = json.loads(request.body.decode()).get('trigger')
        trigger_args = json.loads(request.body.decode()).get('triggerArgs')

        if not job_id or not trigger or not trigger_args:
            result_dict['message'] = '必填参数(*)不能为空'
            result_json = json.dumps(result_dict, ensure_ascii=False)
            return HttpResponse(result_json,
                                content_type="application/json,charset=utf-8")

        if trigger == "crontab":
            values = trigger_args.split()
            if len(values) != 5:
                result_dict['message'] = 'crontab参数列数不正确,输入 {}, 需要 5'.format(
                    len(values))
                result_json = json.dumps(result_dict, ensure_ascii=False)
                return HttpResponse(
                    result_json, content_type="application/json,charset=utf-8")
        elif trigger == "cron":
            import re
            if not re.search('second', trigger_args):
                result_dict['message'] = 'cron仅支持second!'
                result_json = json.dumps(result_dict, ensure_ascii=False)
                return HttpResponse(
                    result_json, content_type="application/json,charset=utf-8")

        # 判断记录是否已存在
        mysql_conn = db_mysql.MyPymysqlPoolDict()
        sql = "select * from %s where job_id = '%s'" % (table_name, job_id)
        try:
            tmp_result = mysql_conn.select(sql)
        except Exception as e:
            print('query task exception: ', e)
            result_dict['message'] = "查询数据库失败"
        else:
            if tmp_result:
                result_dict['message'] = '记录已存在'
            else:
                jitter = json.loads(request.body.decode()).get('jitter')
                run_at_startup = json.loads(
                    request.body.decode()).get('runAtStartup')
                job_status = json.loads(request.body.decode()).get('jobStatus')

                add_sql = "INSERT INTO %s (`job_id`, `trigger`, `trigger_args`, `jitter`, `run_at_startup`, `enable`)" \
                          " VALUES ('%s', '%s', '%s', %s, '%s', '%s');" % \
                          (table_name, job_id, trigger, trigger_args, jitter, run_at_startup, job_status)
                try:
                    mysql_conn.insert(add_sql)
                except Exception as e:
                    print('insert task exception: ', e)
                    result_dict['message'] = "写入数据库异常"
                else:
                    result_dict['code'] = 200
                    result_dict['success'] = True
                    result_dict['message'] = "增加任务成功"
        mysql_conn.dispose()
    else:
        result_dict['message'] = '请求方法错误'

    result_json = json.dumps(result_dict, ensure_ascii=False)
    print(result_json)
    return HttpResponse(result_json,
                        content_type="application/json,charset=utf-8")
示例#14
0
文件: rules.py 项目: kimkcn/cannon
def select_rules(request):
    expression_list = []
    expression_reponse_dict = {}
    success = False
    code = 500
    message = ''
    expression_body_dict = {}

    try:
        page = int(request.GET['page'])
        limit = int(request.GET['limit'])
    except Exception as e:
        print("%s:将使用默认的page和limit" % e)
        page = 1
        limit = 10

    try:
        expression_name = str(request.GET['expression_name'])
    except Exception as e:
        print("%s:未传入表达式名称" % e)
        expression_name = ''

    django_api.DjangoApi().os_environ_update()
    offset = (page - 1) * limit  # (当前页数-1)*每页数量 = 每页的开始位置

    # 获取表数据总条数
    try:
        sql_count = "select count(id) from gps_rules"
        total_count = int(mysql_conn.select(sql_count)[0][0])
    except Exception as e:
        print("%s:rules表中无数据" % e)
        total_count = 0
        pass
    print(total_count)
    if total_count > 0:
        try:
            # 执行查询表数据
            sql_cmd = "select * from %s where expression_name like '%%%s%%' order by level limit %s,%s"\
                      % ('gps_rules', expression_name, offset, limit)
            result = mysql_conn.select(sql_cmd)
        except Exception as e:
            print("%s:没有查询到相关规则" % e)
            success = False
            code = 204
            message = "没有查询到表达式中包含:"+expression_name+"的相关规则"
            pass
        else:
            # 循环赋值,定义列表
            for record in result:
                expression_id = record[0]
                expression_name = record[1]
                method_name = record[2]
                level = record[3]
                compare = record[4]
                reference_value = record[5]
                available = record[6]

                single_expression = dict()
                single_expression['id'] = expression_id
                single_expression['expression_name'] = expression_name
                single_expression['method_name'] = method_name
                single_expression['level'] = level
                single_expression['compare'] = compare
                single_expression['reference_value'] = reference_value
                single_expression['available'] = available
                expression_list.append(single_expression)
            code = 200
            success = True
            message = 'ok'
    expression_body_dict['data'] = expression_list
    expression_body_dict['count'] = len(expression_list)

    expression_reponse_dict['code'] = code
    expression_reponse_dict['success'] = success
    expression_reponse_dict['message'] = message
    expression_reponse_dict['body'] = expression_body_dict
    expression_result_json = json.dumps(expression_reponse_dict, ensure_ascii=False)

    return HttpResponse(expression_result_json, content_type="application/json,charset=utf-8")
示例#15
0
文件: task.py 项目: kimkcn/cannon
def update_task_job_config(request):  # 任务配置信息的变更接口!
    code = 500
    success = False
    message = 'fail'
    result_dict = {'code': code, 'success': success, 'message': message}
    from src.lib import django_api
    django_api.DjangoApi().os_environ_update()

    if request.method == 'PUT':  # 当提交表单时
        mysql_conn = db_mysql.MyPymysqlPoolDict()
        table_name = 'task_job_config'
        table_id = json.loads(request.body.decode()).get('id')
        job_id = json.loads(request.body.decode()).get('jobId')
        trigger = json.loads(request.body.decode()).get('trigger')
        trigger_args = json.loads(request.body.decode()).get('triggerArgs')
        jitter = json.loads(request.body.decode()).get('jitter')
        run_at_startup = json.loads(request.body.decode()).get('runAtStartup')
        job_status = json.loads(request.body.decode()).get('jobStatus')

        if not job_id or not trigger or not trigger_args:
            result_dict['message'] = '必填参数(*)不能为空'
            result_json = json.dumps(result_dict, ensure_ascii=False)
            return HttpResponse(result_json,
                                content_type="application/json,charset=utf-8")

        if trigger == "crontab":
            values = trigger_args.split()
            if len(values) != 5:
                result_dict['message'] = 'crontab参数列数不正确,输入 {}, 需要 5'.format(
                    len(values))
                result_json = json.dumps(result_dict, ensure_ascii=False)
                return HttpResponse(
                    result_json, content_type="application/json,charset=utf-8")
        elif trigger == "cron":
            import re
            if not re.search('second', trigger_args):
                result_dict['message'] = 'cron仅支持second!'
                result_json = json.dumps(result_dict, ensure_ascii=False)
                return HttpResponse(
                    result_json, content_type="application/json,charset=utf-8")

        update_sql = "update %s set job_id='%s',`trigger`='%s', trigger_args='%s', jitter=%s, run_at_startup='%s', " \
                     "enable='%s' where `id`=%s" % \
                     (table_name, job_id, trigger, trigger_args, jitter, run_at_startup, job_status, table_id)
        print('update_sql: ', update_sql)
        try:
            mysql_conn.update(update_sql)
        except Exception as e:
            print('update task exception: ', e)
            result_dict['message'] = "更新数据库异常"
        else:
            result_dict['code'] = 200
            result_dict['success'] = True
            result_dict['message'] = "更新任务成功"
        mysql_conn.dispose()
    else:
        result_dict['message'] = '请求方法错误'

    result_json = json.dumps(result_dict, ensure_ascii=False)
    print(result_json)
    return HttpResponse(result_json,
                        content_type="application/json,charset=utf-8")
示例#16
0
def  pn_status(request):
    from src.lib import django_api
    django_api.DjangoApi().os_environ_update()
    data_list = []
    body_dict = {}
    body_dict['data'] = data_list

    # 定义默认的code和status值
    code = 500
    success = False
    if request.method == 'POST':  # 当提交表单时
        try:
            start_time = json.loads(request.body.decode()).get('start_time')
            end_time = json.loads(request.body.decode()).get('end_time')
            source_node = json.loads(request.body.decode()).get('source_node')
            node = json.loads(request.body.decode()).get('node')
            pn_attribute = json.loads(request.body.decode()).get('pn_attribute')
            type = json.loads(request.body.decode()).get('type')
        except Exception as e:
            print(e,'error: Failed to get transfer parameters.')
            status_message = " error : Failed to get transfer parameters."
            result_json = to_json_result(code, status_message, success, body_dict)
            return HttpResponse(result_json)
        #判断传入的源节点参数,并进行转换
        if source_node:
            if source_node not in ('aws','aliyun') and source_node != '':
                status_message = " error : source_node' value is incorrect."
                result_json = to_json_result(code, status_message, success, body_dict)
                return HttpResponse(result_json)
            else:
                if source_node == 'aliyun':
                    source_node = 'opscloud-1'
                elif source_node == 'aws':
                    source_node = 'aws-template-2'
                elif source_node == '':
                    source_node = 'opscloud-1'
        else:
            source_node = 'opscloud-1'

        if not start_time or not end_time :
            status_message = ' error : start_time,end_time value cannot be empty.'
            result_json = to_json_result(code, status_message, success,body_dict)
            return HttpResponse(result_json)

        start_time = is_vaild_data(start_time)
        end_time = is_vaild_data(end_time)

        if not start_time or  not end_time:
            status_message = ' error : One of start_time and end_time value is invaild.'
            result_json = to_json_result(code, status_message, success, body_dict)
            return HttpResponse(result_json)


        if start_time > end_time:
            status_message = ' error : start_time cannot be greater than end_time.'
            result_json = to_json_result(code, status_message, success, body_dict)
            return HttpResponse(result_json)
        if not type:
            pn_type = 0
        else:
            if type == 'telnet':
                pn_type = 2
            elif type == 'dealy':
                pn_type = 1
            elif  type == 'block':
                pn_type = 0


        if not node or node == '':
            if pn_attribute == 'master':
                node = pn_master_list
            elif pn_attribute == 'backup':
                node = pn_backup_list
            elif pn_attribute == '' or not pn_attribute or pn_attribute == 'all':
                if source_node == 'opscloud-1':
                    node = pn_aws_list
                elif source_node == 'aws-template-2':
                    node = pn_aliyun_list
        else:
            pn_list = pn_master_list + pn_backup_list + pn_aws_list + pn_aliyun_list
            print('pn_list',pn_list)
            if node not in pn_list:
                print("存在")
                print('111', node, pn_master_list)
                status_message = " error : node' value is incorrect. "
                body_dict['data'] = data_list
                result_json = to_json_result(code, status_message, success, body_dict)
                return HttpResponse(result_json)
            node = "('" + node + "')"   #将节点名称以字符串 转成类似元组的形式,sql语句只接受元组形式

        sql = "SELECT source,pn_node,type , MAX(r_clock - clock + 1) AS MaxDuration , SUM(r_clock - clock + 1) AS TotalDuration , COUNT(*) AS NumberOfTimes " \
              "FROM %s " \
              "WHERE clock BETWEEN %s AND %s  AND type = %s AND source = '%s'  AND pn_node IN %s " \
              "GROUP BY pn_node;" % (
                pn_event_data_table, start_time, end_time, pn_type, source_node, node)
        print('sql',sql)


        try:
            mysql_conn_dict = db_mysql.MyPymysqlPoolDict()
            result = mysql_conn_dict.select(sql)
            print('sql_result',result)
            mysql_conn_dict.dispose()
        except Exception as e:
            mysql_conn_dict.dispose()
            status_message = 'error: Database query failed. '
            print(e, status_message)
            result_json = to_json_result(code, status_message, success, body_dict)
            return HttpResponse(result_json)
        else:
            if not result:
                status_message = ' error : No eligible data.'
                result_json = to_json_result(code, status_message, success, body_dict)
                return HttpResponse(result_json)
            print('sql_result02',result)
            for r in result:
                if r['source'] == 'opscloud-1':
                    r['source'] = 'aliyun'
                elif r['source'] == 'aws-template-2':
                    r['source'] = 'aws'

                if r['pn_node'] == 'opscloud-1':
                    r['pn_node'] = 'aliyun'
                elif r['pn_node'] == 'aws-template-3':
                    r['pn_node'] = 'aws'
                r['TotalDuration'] = int(r['TotalDuration'])
            print('sql_result03', result)

            status_message = 'succes'
            code = 0
            success = True
            body_dict['data'] = result
            result_json = to_json_result(code, status_message, success, body_dict)
            print(result_json)

            return HttpResponse(result_json)
    else:
        status_message = ' error : Please use post request.'
        result_json = to_json_result(code, status_message, success, data_list)
        return HttpResponse(result_json)
示例#17
0
def pn_delay_status(request):
    from src.lib import django_api
    django_api.DjangoApi().os_environ_update()
    data_list = []
    body_dict = {}
    body_dict['data'] = data_list
    # 定义默认的code和status值
    code = 500
    success = False
    if request.method == 'POST':  # 当提交表单时
        try:
            start_time = json.loads(request.body.decode()).get('start_time')
            end_time = json.loads(request.body.decode()).get('end_time')
            source_node = json.loads(request.body.decode()).get('source_node')
            node = json.loads(request.body.decode()).get('node')
        except Exception as e:
            print(e, 'error: Failed to get transfer parameters.')
            status_message = " error : Failed to get transfer parameters."
            result_json = to_json_result(code, status_message, success,
                                         body_dict)
            return HttpResponse(result_json)
        #判断传入的源节点参数
        if source_node:
            if source_node not in ('aws', 'aliyun') and source_node != '':
                status_message = " error : source_node' value is incorrect."
                result_json = to_json_result(code, status_message, success,
                                             body_dict)
                return HttpResponse(result_json)
            elif source_node == '':
                source_node = 'aliyun'
        else:
            source_node = 'aliyun'

        if start_time and end_time:
            result_time = judge_time(start_time, end_time)
            if not result_time:
                status_message = " error :One of start_time and end_time value is incorrect."
                result_json = to_json_result(code, status_message, success,
                                             body_dict)
                return HttpResponse(result_json)
        else:
            status_message = ' error : start_time,end_time value cannot be empty.'
            result_json = to_json_result(code, status_message, success,
                                         body_dict)
            return HttpResponse(result_json)

        print('pn_node_list', pn_node_list)
        if node:
            if node == 'aws':
                node = 'aws-template-3'
            elif node == 'aliyun':
                node = 'opscloud-1'
            elif node not in pn_node_list:
                status_message = " error : node' value is incorrect. "
                result_json = to_json_result(code, status_message, success,
                                             body_dict)
                return HttpResponse(result_json)

        else:
            status_message = " error : node' value is empty. "
            result_json = to_json_result(code, status_message, success,
                                         body_dict)
            return HttpResponse(result_json)


        sql = "SELECT CAST(date AS CHAR ) AS date,source,PNnode,valueAvg,valueMax,value9999,value9995,value999,value99,value98 " \
              "FROM %s " \
              "where date BETWEEN '%s' AND '%s' AND source = '%s' AND PNnode = '%s';" % (
                pn_event_delay_data_table, start_time, end_time, source_node, node)
        print('sql', sql)

        try:
            mysql_conn_dict = db_mysql.MyPymysqlPoolDict()
            result = mysql_conn_dict.select(sql)
            print('sql_result', result)
        except Exception as e:
            status_message = 'error: Database query failed. '
            print(e, status_message)
        else:
            if not result:
                status_message = ' error : No eligible data.'
            else:
                date_list = []
                valueAvg_list = []
                valueMax_list = []
                value9999_list = []
                value9995_list = []
                value999_list = []
                value99_list = []
                value98_list = []

                value_all = {}
                for r in result:
                    date_list.append(r['date'])
                    valueAvg_list.append(r['valueAvg'])
                    valueMax_list.append(r['valueMax'])
                    value9999_list.append(r['value9999'])
                    value9995_list.append(r['value9995'])
                    value999_list.append(r['value999'])
                    value99_list.append(r['value99'])
                    value98_list.append(r['value98'])
                value_all['date'] = date_list
                value_all['valueAvg'] = valueAvg_list
                value_all['valueMax'] = valueMax_list
                value_all['value9999'] = value9999_list
                value_all['value9995'] = value9995_list
                value_all['value999'] = value999_list
                value_all['value99'] = value99_list
                value_all['value98'] = value98_list

                status_message = 'succes'
                code = 0
                success = True
                body_dict['StandardData'] = result
                body_dict['LineChartData'] = value_all
        finally:
            mysql_conn_dict.dispose()
            result_json = to_json_result(code, status_message, success,
                                         body_dict)
            print(result_json)
            return HttpResponse(result_json)
    else:
        status_message = ' error : Please use post request.'
        result_json = to_json_result(code, status_message, success, body_dict)
        return HttpResponse(result_json)
示例#18
0
def update_ak_apply_info(request):  # 更新ak的申请人信息接口
    print('111')
    result_dict = {'code': -1, 'success': False, 'message': 'fail'}
    from src.lib import django_api
    django_api.DjangoApi().os_environ_update()

    print(request.body.decode())

    if request.method != 'PUT':  # 当提交表单时
        result_dict['message'] = '请求方法错误, 需求PUT'
        result_json = json.dumps(result_dict, ensure_ascii=False)
        return HttpResponse(result_json,
                            content_type="application/json,charset=utf-8")

    mysql_conn = db_mysql.MyPymysqlPoolDict()
    table_name = 'ak_apply_list'
    ak_list_id = json.loads(request.body.decode()).get('id')
    apply_owner = json.loads(
        request.body.decode()).get('applyInfo').get('apply_owner')
    apply_owner_tl = json.loads(
        request.body.decode()).get('applyInfo').get('apply_owner_tl')
    apply_owner_department = json.loads(
        request.body.decode()).get('applyInfo').get('apply_owner_department')
    apply_type = json.loads(
        request.body.decode()).get('applyInfo').get('apply_type')
    apply_reason = json.loads(
        request.body.decode()).get('applyInfo').get('apply_reason')
    start_time = int(time.time())
    print(ak_list_id, apply_owner, apply_owner_tl, apply_owner_department,
          apply_type, apply_reason)
    sql = "select id from %s where ak_list_id=%s" % (table_name, ak_list_id)

    try:
        # 使用编辑操作统一了新增和更新,因此首先判断ak_list_id是否存在,存在则update,否则insert
        tmp_result = mysql_conn.select(sql)
        if tmp_result:
            update_sql = "UPDATE %s SET apply_owner='%s', apply_owner_tl = '%s', apply_owner_department='%s', " \
                         "apply_type='%s', apply_reason='%s' where `ak_list_id`=%s" % \
                         (table_name, apply_owner, apply_owner_tl, apply_owner_department, apply_type, apply_reason,
                          ak_list_id)
            print('update_sql: ', update_sql)
            mysql_conn.update(update_sql)
        else:
            insert_sql = "INSERT INTO %s SET ak_list_id=%s, apply_owner='%s', apply_owner_tl='%s', " \
                         "apply_owner_department='%s', apply_type='%s', apply_reason='%s', start_time=%s" % \
                         (table_name, ak_list_id, apply_owner, apply_owner_tl, apply_owner_department, apply_type,
                          apply_reason, start_time)
            print('insert_sql: ', insert_sql)
            mysql_conn.insert(insert_sql)
    except Exception as e:
        print('update task exception: ', e)
        result_dict['message'] = "写入申请人信息异常"
    else:
        result_dict['code'] = 200
        result_dict['success'] = True
        result_dict['message'] = "写入申请人信息成功"
    finally:
        mysql_conn.dispose()

    result_json = json.dumps(result_dict, ensure_ascii=False)
    print(result_json)
    return HttpResponse(result_json,
                        content_type="application/json,charset=utf-8")
示例#19
0
def query_ak_info_list(request):
    table_name = 'ak_list'
    accesskey_id = request.GET['accessKeyId']
    status = request.GET['status']
    cost_item_id = request.GET['costItemId']
    page = int(request.GET['page'])
    limit = int(request.GET['limit'])

    mysql_conn = db_mysql.MyPymysqlPoolDict()
    offset = (page - 1) * limit  # (当前页数-1)*每页数量 = 每页的开始位置

    data_list = []
    body_dict = {}
    from src.lib import django_api
    django_api.DjangoApi().os_environ_update()
    result_dict = {'code': 500, 'success': False, 'message': "fail"}

    # 获取总条数,用于返回的json里面输出
    sql = "select count(`id`) as count from %s where `accesskey_id` like '%%%s%%' and status like '%%%s%%' and " \
          "cost_item_id like '%%%s%%'" % (table_name, accesskey_id, status, cost_item_id)
    try:
        print(sql)
        total_count = int(mysql_conn.select(sql)[0]['count'])
    except Exception as e:
        print("except: %s" % e)
        result_dict['message'] = "查询AK数量异常"
        total_count = -1
        mysql_conn.dispose()
    else:
        if total_count > 0:
            # 查询ak信息
            sql1 = "select * from %s where `accesskey_id` like '%%%s%%' and status like '%%%s%%' and " \
                  "cost_item_id like '%%%s%%' limit %s,%s" \
                  % (table_name, accesskey_id, status, cost_item_id, offset, limit)
            # 查询ak的使用场景
            sql2 = "select * from ak_use_info"
            # 查询ak申请人信息
            sql3 = "select * from ak_apply_list"
            try:
                print("sql: ", sql1)
                tmp_result1 = mysql_conn.select(sql1)
                tmp_result2 = mysql_conn.select(sql2)
                tmp_result3 = mysql_conn.select(sql3)
            except Exception as e:
                result_dict['message'] = "查询具体AK信息异常"
            else:
                result_dict['code'] = 0
                result_dict['message'] = "success"
                result_dict['success'] = True
                for record in tmp_result1:
                    record.pop('update_time')
                    ak_list_id = record['id']
                    use_count = 0  # ak使用场景的计数,默认未使用
                    use_list = []  # 使用场景的列表
                    use_list_detail = {}  # 使用场景的明细列表
                    apply_info = {}
                    if record['policies']:
                        policies_num = len(record['policies'].split(','))
                    if record['last_use_time']:
                        record['last_use_time'] = record[
                            'last_use_time'].strftime("%Y-%m-%d %H:%M:%S")
                    if record['ak_status_change_time']:
                        record['ak_status_change_time'] = record[
                            'ak_status_change_time'].strftime(
                                "%Y-%m-%d %H:%M:%S")
                    if record['account_last_login_time']:
                        record['account_last_login_time'] = record[
                            'account_last_login_time'].strftime(
                                "%Y-%m-%d %H:%M:%S")
                    if tmp_result2:
                        for i in tmp_result2:
                            if ak_list_id == i['ak_list_id']:
                                use_count += 1
                                use_name = i['use_name']
                                use_detail = i['use_detail']
                                use_list.append(use_name)
                                use_list_detail[use_name] = use_detail
                    if tmp_result3:
                        for j in tmp_result3:
                            if ak_list_id == j['ak_list_id']:
                                j.pop('update_time')
                                from src.lib import time_api
                                j['start_time'] = time_api.timestamp_to_datetime(
                                    j['start_time'])
                                apply_info = j
                    record['use_num'] = use_count
                    record['policies_num'] = policies_num
                    record['use_list'] = use_list
                    record['use_list_detail'] = use_list_detail
                    record['applyInfo'] = apply_info
                data_list = tmp_result1
            finally:
                mysql_conn.dispose()
        else:
            result_dict['code'] = 0
            result_dict['message'] = "success"
            result_dict['success'] = True

    body_dict['data'] = data_list
    body_dict['count'] = total_count
    result_dict['body'] = body_dict
    result_json = json.dumps(result_dict, ensure_ascii=False)
    print(result_json)
    return HttpResponse(result_json,
                        content_type="application/json,charset=utf-8")
示例#20
0
def get_alert_list(request):
    mysql_conn = db_mysql.MyPymysqlPool()

    alertfrom = str(request.GET['alertfrom'])
    product = str(request.GET['product'])
    level = str(request.GET['level'])
    status = str(request.GET['status'])
    page = int(request.GET['page'])
    limit = int(request.GET['limit'])

    data_list = []
    result_dict = {}
    body_dict = {}
    from src.lib import django_api
    django_api.DjangoApi().os_environ_update()
    offset = (page-1)*limit     # (当前页数-1)*每页数量 = 每页的开始位置
    delta_hours = 720
    starttime = datetime.datetime.now()-datetime.timedelta(hours=delta_hours)
    code = 500
    message = 'fail'
    success = False

    # 获取总条数,用于返回的json里面输出
    try:
        sql = "select count(id) from %s where alert_from like '%%%s%%' and production like '%%%s%%' and " \
              "current_state like '%%%s%%' and priority like '%%%s%%' and start_time > '%s';" % \
              (alert_conf.table_name, alertfrom, product, status, level, starttime)
        print(sql)
        total_count = int(mysql_conn.select(sql)[0][0])
    except:
        total_count = -1

    if total_count > 0:
        # 获取每页的告警信息
        try:
            sql = "select * from %s where alert_from like '%%%s%%' and production like '%%%s%%' and " \
                  "current_state like '%%%s%%' and priority like '%%%s%%' and " \
                  "start_time > '%s' order by start_time desc limit %s,%s;" %\
                  (alert_conf.table_name, alertfrom, product, status, level, starttime, offset, limit)
            print(sql)
            tmp_result = mysql_conn.select(sql)
        except:
            pass
        else:
            if tmp_result:
                code = 0
                success = True
                for record in tmp_result:
                    alert_from = record[1]
                    production = record[2]
                    resource = record[4]
                    alert_state_tmp = record[5]
                    alert_detail = record[6]
                    expression = record[7]
                    if record[8] is not None:
                        value = int(record[8])
                    else:
                        value = None
                    start_time = record[9].strftime("%Y-%m-%d %H:%M:%S")
                    end_time = ""
                    if record[10]:
                        end_time = record[10].strftime("%Y-%m-%d %H:%M:%S")
                    priority = record[11]
                    priority_format = priority
                    single_alert = {}

                    if production in alert_conf.black_list:
                        continue

                    if priority == 1:
                        priority_format = "灾难"
                    elif priority == 2:
                        priority_format = "严重"
                    elif priority == 3:
                        priority_format = "一般"
                    else:
                        priority_format = "未知"

                    if alert_state_tmp == "OK":
                        alert_state = "恢复"
                    elif alert_state_tmp == "ALARM":
                        alert_state = "告警"

                    single_alert['alert_from'] = alert_from
                    single_alert['production'] = production
                    single_alert['resource'] = resource
                    single_alert['priority'] = priority_format
                    single_alert['alert_state'] = alert_state
                    single_alert['alert_detail'] = alert_detail
                    single_alert['expression'] = expression
                    single_alert['value'] = value
                    single_alert['start_time'] = start_time
                    single_alert['end_time'] = end_time
                    data_list.append(single_alert)
    elif total_count == 0:
        code = 0
        message = 'success'
        success = True

    body_dict['data'] = data_list
    body_dict['count'] = total_count
    result_dict['code'] = code
    result_dict['success'] = success
    result_dict['message'] = message
    result_dict['body'] = body_dict
    mysql_conn.dispose()
    result_json = json.dumps(result_dict, ensure_ascii=False)
    return HttpResponse(result_json, content_type="application/json,charset=utf-8")
示例#21
0
def get_sslexpiretime(request):
    expiretime_list = []
    ssl_result_dict = {}
    ssl_body_dict = {}
    success = False
    code = 500
    message = ''

    try:
        page = int(request.GET['page'])
        limit = int(request.GET['limit'])
    except Exception as e:
        print("%s:未传入,使用默认值" % e)
        page = 1
        limit = 10

    try:
        domain_name = str(request.GET['domain_name'])
    except Exception as e:
        print("%s:未传入,按顺序查找" % e)
        domain_name = ''
    try:
        match_status = str(request.GET['match_status'])
    except Exception as e:
        print("%s:未传入,按顺序查找" % e)
        match_status = ''

    django_api.DjangoApi().os_environ_update()
    offset = (page-1)*limit     # (当前页数-1)*每页数量 = 每页的开始位置

    # 获取表数据总条数
    try:
        sql_count = "select count(id) from %s where domain_name like '%%%s%%' and match_status like '%%%s%%';" % ('ssl_expire_date', domain_name, match_status)
        total_count = int(mysql_conn.select(sql_count)[0][0])
    except Exception as e:
        print("%s:表中无数据或表数据异常" % e)
        total_count = 0

    if total_count > 0:
        try:
            # 执行查询表数据
            sql_cmd = "select * from %s where domain_name like '%%%s%%' and match_status like '%%%s%%' order by " \
                      "expire_date limit %s,%s ;" % ('ssl_expire_date', domain_name, match_status, offset, limit)
            result = mysql_conn.select(sql_cmd)
        except Exception as e:
            print("%s:sql查询异常" % e)
            pass
        else:
            # 循环赋值,定义列表
            try:
                for record in result:
                    ssl_id = record[0]
                    domain = record[1]
                    domain_name = record[2]
                    expire_date = record[3].strftime("%Y-%m-%d %H:%M:%S")
                    ssl_cn = record[4]
                    match_status = record[5]
                    if match_status == 'False':
                        match_status = '不匹配'
                    elif match_status == 'True':
                        match_status = '匹配'
                    time = record[6].strftime("%Y-%m-%d %H:%M:%S")

                    single_expiretime = dict()
                    single_expiretime['id'] = ssl_id
                    single_expiretime['domain'] = domain
                    single_expiretime['domain_name'] = domain_name
                    single_expiretime['expire_date'] = expire_date
                    single_expiretime['ssl_cn'] = ssl_cn
                    single_expiretime['match_status'] = match_status
                    single_expiretime['time'] = time
                    expiretime_list.append(single_expiretime)
                code = 200
                success = True
                message = 'ok'
            except Exception as e:
                print("%s:赋值出错可能是数据表字段有误,或数据库取数据有误" % e)
                pass
    ssl_body_dict['data'] = expiretime_list
    ssl_body_dict['count'] = total_count

    ssl_result_dict['code'] = code
    ssl_result_dict['success'] = success
    ssl_result_dict['message'] = message
    ssl_result_dict['body'] = ssl_body_dict
    expire_result_json = json.dumps(ssl_result_dict,ensure_ascii=False)

    return HttpResponse(expire_result_json, content_type="application/json,charset=utf-8")
示例#22
0
def get_ram_userinfo(request):
    userinfo_list = []
    ram_result_dict = {}
    ram_body_dict = {}
    success = False
    code = 500
    message = ''

    try:
        page = int(request.GET['page'])
        limit = int(request.GET['limit'])
    except Exception as e:
        print("%s:未传入page或limit,使用默认值" % e)
        page = 1
        limit = 10

    try:
        username = str(request.GET['username'])
    except Exception as e:
        print("%s:未传入username,使用默认值" % e)
        username = ''

    django_api.DjangoApi().os_environ_update()
    offset = (page - 1) * limit  # (当前页数-1)*每页数量 = 每页的开始位置

    # 获取表数据总条数
    try:
        sql_count = "select count(id) from %s ;" % ('ram_user_info')
        total_count = int(mysql_conn.select(sql_count)[0][0])
    except Exception as e:
        print("%s:表数据为空,使用默认值" % e)
        total_count = 0

    if total_count > 0:
        try:
            # 执行查询表数据
            sql_cmd = "select * from %s where username like '%%%s%%' order by username limit %s,%s" % \
                      ('ram_user_info', username, offset, limit)
            result = mysql_conn.select(sql_cmd)
        except Exception as e:
            print("%s:查询数据失败" % e)
            pass
        else:
            # 循环赋值,定义列表
            for record in result:
                username = record[1]
                login_enable = record[2]
                try:
                    lastlogin_time = record[3].strftime("%Y-%m-%d %H:%M:%S")
                except Exception as e:
                    print("%s:未获取到用户最后登录时间" % e)
                    lastlogin_time = ''
                policies_info = record[4]
                ak_info = record[5]

                single_userinfo = dict()
                single_userinfo['username'] = username
                single_userinfo['login_enable'] = login_enable
                single_userinfo['lastlogin_time'] = lastlogin_time
                single_userinfo['policies_info'] = policies_info
                single_userinfo['ak_info'] = ak_info

                userinfo_list.append(single_userinfo)
            code = 200
            success = True
            message = 'ok'
    ram_body_dict['data'] = userinfo_list
    ram_body_dict['count'] = total_count

    ram_result_dict['code'] = code
    ram_result_dict['success'] = success
    ram_result_dict['message'] = message
    ram_result_dict['body'] = ram_body_dict
    ram_result_json = json.dumps(ram_result_dict, ensure_ascii=False)

    print(ram_result_json)
    return HttpResponse(ram_result_json,
                        content_type="application/json,charset=utf-8")
示例#23
0
def get_problem_data(request):
    expression_id_list = list()
    result_list = list()
    single_problem = dict()
    problem_list = list()
    problem_response_dict = dict()
    problem_body_dict = dict()
    success = False
    code = 1
    message = ''
    # 设置默认的page和limit值
    try:
        page = int(request.GET['page'])
        limit = int(request.GET['limit'])
    except Exception as e:
        print("%s:未传入page或limit,使用默认值" % e)
        page = 1
        limit = 10
    # 接收传入的类型,根据类型搜索相同方法的表达式id
    try:
        gps_type = str(request.GET['type'])
        sql_cmd = "select id from %s where method_name = '%s'" % ('gps_rules',
                                                                  gps_type)
        result = mysql_conn.select(sql_cmd)
        for i in result:
            expression_id = i['id']
            expression_id_list.append(expression_id)
    except Exception as e:
        print("%s:未传入,使用默认值" % e)
    # 接收传入的异常数据主体
    try:
        gps_object = str(request.GET['gps_object'])
    except Exception as e:
        print("%s:未传入gps_object,使用默认值" % e)
        gps_object = ''
    # 接收传入的异常级别
    try:
        level = str(request.GET['level'])
    except Exception as e:
        print("%s:未传入level,使用默认值" % e)
        level = ''
    # 设置每页起始值
    django_api.DjangoApi().os_environ_update()
    offset = (page - 1) * limit  # (当前页数-1)*每页数量 = 每页的开始位置
    # 获取表数据总条数
    try:
        sql_count = "select count(id) from gps_problem;"
        total_count = int(mysql_conn.select(sql_count)[0]['count(id)'])
    except Exception as e:
        print("%s:表中无数据" % e)
        total_count = 0

    if total_count > 0 and len(expression_id_list) > 0:
        try:
            for m in expression_id_list:
                # 执行查询表数据
                sql_cmd = "select * from %s where expression_id like '%s' and gps_object like '%%%s%%' and level like " \
                          "'%%%s%%' order by time limit %s,%s;" % ('gps_problem', m, gps_object, level, offset, limit)
                result = mysql_conn.select(sql_cmd)
                result_list.append(result)
        except Exception as e:
            print("%s:sql语句执行失败" % e)
            pass

    elif total_count > 0 and len(expression_id_list) == 0:
        try:
            sql_cmd = "select * from %s where gps_object like '%%%s%%' and level like '%%%s%%'" \
                      " order by time limit %s,%s;" % ('gps_problem', gps_object, level, offset, limit)
            result = mysql_conn.select(sql_cmd)
            result_list.append(result)
        except Exception as e:
            print("%s:sql语句执行失败" % e)
            pass
    else:
        message = '请检查gps_problem表中是否有数据'

    if len(result_list[0]) > 0:
        # 循环赋值,定义列表
        result = result_list[0]
        for record in result:
            expression_id = record['expression_id']
            level = record['level']
            gps_object = record['gps_object']
            value = record['value']
            time = record['time'].strftime("%Y-%m-%d %H:%M:%S")
            status = record['status']

            single_problem['expression_id'] = expression_id
            single_problem['level'] = level
            single_problem['gps_object'] = gps_object
            single_problem['value'] = value
            single_problem['time'] = time
            single_problem['status'] = status
            problem_list.append(single_problem)
        code = 0
        success = True
        message = 'ok'

    problem_body_dict['data'] = problem_list
    problem_body_dict['count'] = len(problem_list)
    problem_response_dict['code'] = code
    problem_response_dict['success'] = success
    problem_response_dict['message'] = message
    problem_response_dict['body'] = problem_body_dict
    problem_result_json = json.dumps(problem_response_dict, ensure_ascii=False)

    return HttpResponse(problem_result_json,
                        content_type="application/json,charset=utf-8")
示例#24
0
def  pn_delay_status(request):
    from src.lib import django_api
    django_api.DjangoApi().os_environ_update()
    data_list = []
    body_dict = {}
    body_dict['data'] = data_list
    # 定义默认的code和status值
    code = 500
    success = False
    if request.method == 'POST':  # 当提交表单时
        try:
            start_time = json.loads(request.body.decode()).get('start_time')
            end_time = json.loads(request.body.decode()).get('end_time')
            source_node = json.loads(request.body.decode()).get('source_node')
            node = json.loads(request.body.decode()).get('node')
            pn_attribute = json.loads(request.body.decode()).get('pn_attribute')
        except Exception as e:
            print(e,'error: Failed to get transfer parameters.')
            status_message = " error : Failed to get transfer parameters."
            result_json = to_json_result(code, status_message, success, body_dict)
            return HttpResponse(result_json)
        #判断传入的源节点参数
        if source_node:
            if source_node not in ('aws','aliyun') and source_node != '':
                status_message = " error : source_node' value is incorrect."
                result_json = to_json_result(code, status_message, success, body_dict)
                return HttpResponse(result_json)
            elif source_node == '':
                source_node = 'aliyun'
        else:
            source_node = 'aliyun'

        if start_time and end_time :
            result_time = judge_time(start_time, end_time)
            if not result_time:
                status_message = " error :One of start_time and end_time value is incorrect."
                result_json = to_json_result(code, status_message, success, body_dict)
                return HttpResponse(result_json)
        else:
            status_message = ' error : start_time,end_time value cannot be empty.'
            result_json = to_json_result(code, status_message, success, body_dict)
            return HttpResponse(result_json)



        if not node or node == '':
            if pn_attribute == 'master':
                node = pn_master_list
            elif pn_attribute == 'backup':
                node = pn_backup_list
            elif pn_attribute == '' or not pn_attribute or pn_attribute == 'all':
                if source_node == 'aliyun':
                    node = pn_aws_list
                elif source_node == 'aws':
                    node = pn_aliyun_list
        else:
            pn_list = pn_master_list + pn_backup_list + pn_aws_list + pn_aliyun_list
            print('pn_list',pn_list)
            if node not in pn_list:
                status_message = " error : node' value is incorrect. "
                result_json = to_json_result(code, status_message, success, body_dict)
                return HttpResponse(result_json)
            node = "('" + node + "')"   #将节点名称以字符串 转成类似元组的形式,sql语句只接受元组形式

        sql = "SELECT CAST(date AS CHAR ) AS date,source,PNnode,valueAvg,valueMax,valueA,valueB,valueC,valueD,valueE,valueF,valueG,valueH,valueI,valueJ,valueK " \
              "FROM %s " \
              "where date BETWEEN '%s' AND '%s' AND source = '%s' AND PNnode IN %s;" % (
                pn_event_delay_data_table, start_time, end_time, source_node, node)
        print('sql',sql)


        try:
            mysql_conn_dict = db_mysql.MyPymysqlPoolDict()
            result = mysql_conn_dict.select(sql)
            print('sql_result',result)
            mysql_conn_dict.dispose()
        except Exception as e:
            mysql_conn_dict.dispose()
            status_message = 'error: Database query failed. '
            print(e,status_message)
            result_json = to_json_result(code, status_message, success, body_dict)
            return HttpResponse(result_json)
        else:
            if not result:
                status_message = ' error : No eligible data.'
                result_json = to_json_result(code, status_message, success, body_dict)
                return HttpResponse(result_json)
            print('sql_result02',result)

            status_message = 'succes'
            code = 0
            success = True
            body_dict['data'] = result
            result_json = to_json_result(code, status_message, success, body_dict)
            print(result_json)

            return HttpResponse(result_json)
    else:
        status_message = ' error : Please use post request.'
        result_json = to_json_result(code, status_message, success, body_dict)
        return HttpResponse(result_json)
示例#25
0
#!/usr/bin/env python3
# coding:utf-8
from django.http import HttpResponse
import json

from src.lib import db_mysql

mysql_conn = db_mysql.MyPymysqlPool()
from src.lib import django_api

django_api.DjangoApi().os_environ_update()


def get_sas_vul_count(request):
    vul_name_list = []
    vul_name_body_dict = {}
    vul_name_reponse_dict = {}
    success = False
    code = 1
    message = ''

    try:
        page = int(request.GET['page'])
        limit = int(request.GET['limit'])
    except:
        page = 1
        limit = 10

    try:
        vul_type = str(request.GET['vul_type'])
    except:
示例#26
0
def pn_status(request):
    from src.lib import django_api
    django_api.DjangoApi().os_environ_update()
    data_list = []
    body_dict = {'data': data_list}

    # 定义默认的code和status值
    code = 500
    success = False
    if request.method == 'POST':  # 当提交表单时
        try:
            start_time_str = json.loads(
                request.body.decode()).get('start_time')
            end_time_str = json.loads(request.body.decode()).get('end_time')
            source_node = json.loads(request.body.decode()).get('source_node')
            dest_node = json.loads(request.body.decode()).get('dest_node')
            #pn_attribute = json.loads(request.body.decode()).get('pn_attribute')
            type = json.loads(request.body.decode()).get('type')
        except Exception as e:
            print(e, 'error: Failed to get transfer parameters.')
            status_message = " error : Failed to get transfer parameters."
            result_json = to_json_result(code, status_message, success,
                                         body_dict)
            return HttpResponse(result_json)
        #判断传入的源节点参数,并进行转换
        if source_node:
            if source_node not in ('aws', 'aliyun') and source_node != '':
                status_message = " error : source_node' value is incorrect."
                result_json = to_json_result(code, status_message, success,
                                             body_dict)
                return HttpResponse(result_json)
            else:
                if source_node == 'aliyun':
                    source_node = 'opscloud-1'
                elif source_node == 'aws':
                    source_node = 'aws-template-2'
                elif source_node == '':
                    source_node = 'opscloud-1'
        else:
            source_node = 'opscloud-1'

        if not start_time_str or not end_time_str:
            status_message = ' error : start_time,end_time value cannot be empty.'
            result_json = to_json_result(code, status_message, success,
                                         body_dict)
            return HttpResponse(result_json)

        start_time = is_vaild_data(start_time_str)
        end_time = is_vaild_data(end_time_str)

        if not start_time or not end_time:
            status_message = ' error : One of start_time and end_time value is invaild.'
            result_json = to_json_result(code, status_message, success,
                                         body_dict)
            return HttpResponse(result_json)

        if start_time > end_time:
            status_message = ' error : start_time cannot be greater than end_time.'
            result_json = to_json_result(code, status_message, success,
                                         body_dict)
            return HttpResponse(result_json)
        if not type:
            pn_type = 0
        else:
            if type == 'telnet':
                pn_type = 2
            #elif type == 'dealy':
            #    pn_type = 1
            elif type == 'icmp':
                pn_type = 0
            else:
                pn_type = 0

        if not dest_node:
            status_message = " error : dest_node's value is empty. "
            body_dict['data'] = data_list
            result_json = to_json_result(code, status_message, success,
                                         body_dict)
            return HttpResponse(result_json)
        else:
            pn_list = pn_master_list + pn_backup_list
            if dest_node == 'aliyun':
                if pn_type == 2:
                    dest_node = 'zabbix-server'
                elif pn_type == 0:
                    dest_node = 'opscloud-1'
            elif dest_node == 'aws':
                if pn_type == 2:
                    dest_node = 'aws-zabbix-proxy'
                elif pn_type == 0:
                    dest_node = 'aws-template-3'
            elif dest_node not in pn_list:
                status_message = " error : dest_node' value is incorrect. "
                body_dict['data'] = data_list
                result_json = to_json_result(code, status_message, success,
                                             body_dict)
                return HttpResponse(result_json)

            dest_node = "('" + dest_node + "')"  #将节点名称以字符串 转成类似元组的形式,sql语句只接受元组形式

        table_data_result = select_pn_block_data(start_time, end_time, pn_type,
                                                 source_node, dest_node)
        if not table_data_result:
            code = 0
            success = True
            status_message = ' 提示:未查询到相关数据.'
            result_json = to_json_result(code, status_message, success,
                                         body_dict)
            return HttpResponse(result_json)
        graphic_data = {}
        graphic_data_date = []
        value_max_duration = []
        value_total_duration = []
        value_number_of_times = []
        day_start_stamp, day_diff = get_dat_diff(
            start_time_str, end_time_str)  #获取开始时间的时间戳,开始时间至结束时间的天数差
        #得到时间范围内每一天专线不可用的数据值
        for i in range(0, day_diff):
            day_end_stamp = day_start_stamp + 86400
            day_date = time.strftime("%Y-%m-%d",
                                     time.localtime(day_start_stamp))
            #print(day_start_stamp, day_end_stamp,day_date)
            graphic_data_result = select_pn_block_data(day_start_stamp,
                                                       day_end_stamp, pn_type,
                                                       source_node, dest_node)
            day_start_stamp = day_end_stamp
            graphic_data_date.append(day_date)

            if graphic_data_result:
                value_max_duration.append(
                    graphic_data_result[0]['max_duration'])
                value_total_duration.append(
                    graphic_data_result[0]['total_duration'])
                value_number_of_times.append(
                    graphic_data_result[0]['number_of_times'])
            else:
                value_max_duration.append(0)
                value_total_duration.append(0)
                value_number_of_times.append(0)
        graphic_data['graphic_data_date'] = graphic_data_date
        graphic_data['value_max_duration'] = value_max_duration
        graphic_data['value_total_duration'] = value_total_duration
        graphic_data['value_number_of_times'] = value_number_of_times

        status_message = 'succes'
        code = 0
        success = True
        body_dict['TableData'] = table_data_result
        body_dict['GraphicData'] = graphic_data
        result_json = to_json_result(code, status_message, success, body_dict)
        print(result_json)

        return HttpResponse(result_json)
    else:
        status_message = ' error : Please use post request.'
        result_json = to_json_result(code, status_message, success, data_list)
        return HttpResponse(result_json)