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")
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")
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")
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")
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")
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")
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)
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")
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")
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")
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
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")
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")
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")
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")
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)
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)
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")
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")
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")
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")
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")
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")
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)
#!/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:
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)