def get_user_muenu(request): """ 获取角色对应的菜单名和Url :param request: :return: """ cilent = tools.interface_param(request) # 蓝鲸平台获取当前用户,取得当前用户的角色id # user = cilent.bk_login.get_user({}) # bk_roleid = user['data']['bk_role'] # 根据菜单和角色表查出该角色对应的菜单 user_dto_name = request.user.username user_db = user_info.objects.filter(user_name=user_dto_name) role_id = 1 if user_db.count() > 0: user_db_data = user_db.get() role_id = user_db_data.user_type_id role_menus = rm.objects.filter(roleid=role_id) temp_list = [] for r_m in role_menus: # 菜单id,菜单表和菜单角色表都要对应起来 menu_id = model_to_dict(r_m)['muenuid'] # 菜单名称 try: menu_name = Muenu.objects.get(id=menu_id) except Exception as e: continue temp = {} temp = model_to_dict(menu_name) temp_list.append(temp) return tools.success_result(temp_list)
def model_tree_host(request): """ 树状主机信息显示 :param request: :return: """ try: param = {"bk_biz_id": 2} client = tools.interface_param(request) res = client.cc.search_biz_inst_topo(param) if res.get('result'): # 判断调用search_biz_inst_topo接口是否成功,成功则取数据,失败则返回错误信息 bk_tree_list = res.get('data') else: bk_tree_list = [] logger.error(u"请求主机拓扑列表失败:%s" % res.get('message')) test_list = bk_tree_list[0]['child'] # 取出集群数据 display_list = [] for i in test_list: # 循环遍历取出集群名称 dic = { 'bk_inst_name': i['bk_inst_name'], 'bk_inst_id': i['bk_inst_id'], } child_list = [] for child in i['child']: dic1 = { 'child_bk_inst_name': child['bk_inst_name'], 'child_bk_inst_id': child['bk_inst_id'], } child_list.append(dic1) dic['child'] = child_list display_list.append(dic) result = tools.success_result(display_list) except Exception, e: result = tools.error_result(e)
def get_active_user(request): """ 通过蓝鲸获取当前用户 :param request: :return: dict """ client = tools.interface_param(request) res = client.bk_login.get_user({}) return res
def get_user(request): """ 获取当前用户 :param request: :return: """ try: client = tools.interface_param(request) result = client.bk_login.get_user({}) # 获取当前用户信息 except Exception, e: result = tools.error_result(e)
def edit_scene_type_by_uuid(request): """ 修改场景分组 :param request: :return: """ request_body = json.loads(request.body) print request_body['start_time'] print request_body['stop_time'] start_time = datetime.datetime.strptime(request_body['start_time'], "%H:%M:%S") stop_time = datetime.datetime.strptime(request_body['stop_time'], "%H:%M:%S") scene_type_name = request_body['name'] uuid = request_body['uuid'] client = tools.interface_param(request) user = client.bk_login.get_user({}) res = function.edit_scene_type_by_uuid(uuid, user['data']['bk_username'], scene_type_name, start_time, stop_time) return render_json(res)
def add_scene_type(request): """ 新增场景类型 :param request: :return: """ try: request_body = json.loads(request.body) start_time = datetime.datetime.strptime(request_body['start_time'], "%H:%M:%S") stop_time = datetime.datetime.strptime(request_body['stop_time'], "%H:%M:%S") scene_type_name = request_body['name'] client = tools.interface_param(request) user = client.bk_login.get_user({}) res = function.add_scene_type(user['data']['bk_username'], scene_type_name, start_time, stop_time) info = make_log_info(u'增加场景类型', u'业务日志', u'SceneType', sys._getframe().f_code.co_name, get_active_user(request)['data']['bk_username'], '成功', '无') except Exception as e: info = make_log_info(u'增加场景类型', u'业务日志', u'SceneType', sys._getframe().f_code.co_name, get_active_user(request)['data']['bk_username'], '失败', repr(e)) res = {} # add_log(info) return render_json(res)
def saveconn_all(request): """ 保存 :param request: :return: """ try: res = json.loads(request.body) cilent = tools.interface_param(request) user = cilent.bk_login.get_user({}) # 获取用户名 res['createname'] = request.user.username res['editname'] = request.user.username # 密码加密后保存 password = encryption_str(res['password']) res['password'] = password re = Conn(**res).save() status_dic = {} # 计算总页数,取5有余就+1页 items_count = Conn.objects.count() pages = items_count / 5 if 0 != items_count % 5: pages = pages + 1 status_dic['message'] = 'ok' status_dic['page_count'] = pages info = make_log_info(u'增加数据库连接配置', u'业务日志', u'Conn', sys._getframe().f_code.co_name, request.user.username, '成功', '无') add_log(info) return tools.success_result(status_dic) except Exception as e: info = make_log_info(u'增加数据库连接配置', u'业务日志', u'Conn', sys._getframe().f_code.co_name, request.user.username, '失败', repr(e)) add_log(info) res1 = tools.error_result(e) return res1
def get_jobInstance(request): """ 获取作业状态以及作业步骤状态 :param request: :return: """ monitor = Monitor.objects.filter(status=0, monitor_type=3) jion_list = [] dic = [] for moni in monitor: jobId = model_to_dict(moni)['jion_id'] jion_list.append(jobId) for jion in jion_list: try: job_ins = Job.objects.filter(job_id=jion) for y in job_ins: cilent = tools.interface_param(request) id = y.instance_id instance_status = cilent.job.get_job_instance_status({ "bk_app_code": APP_ID, "bk_app_secret": APP_TOKEN, "bk_biz_id": 2, "job_instance_id": id, }) # 作业状态码 iStatus = instance_status['data']['job_instance']['status'] # 作业步骤状态码 stepStatus = instance_status['data']['blocks'][0][ 'step_instances'][0]['status'] dic.append(iStatus) dic.append(stepStatus) return dic except Exception as e: return e
def get_flowStatus(request): """ 获取流程节点状态并实时更新 :param request: :return: """ try: flow = Monitor.objects.filter(status=0, monitor_type=4) # 流程元类型 flow_list = [] dic = [] for x in flow: flow_list.append(model_to_dict(x)['jion_id']) for y in flow_list: flows = Flow.objects.filter(flow_id=y) for i in flows: cilent = tools.interface_param(request) res = cilent.sops.get_task_status({ "bk_app_code": APP_ID, "bk_app_secret": APP_TOKEN, "bk_biz_id": "2", "task_id": y, # task_id }) res1 = cilent.sops.create_task({ "bk_app_code": APP_ID, "bk_app_secret": APP_TOKEN, "bk_biz_id": "2", "template_id": "5", "name": "zz", "flow_type": "common" }) task_id = res1['data']['task_id'] time = datetime.datetime.now() # 创建节点 Flow.objects.create(instance_id=task_id, status=0, start_time=None, test_flag=1, flow_id=y) status = 0 if res['data']['state'] == 'RUNNING': status = 2 r = Flow.objects.filter(instance_id=task_id).update( status=status, start_time=time) elif res['data']['state'] == 'FAILED': status = 3 elif res['data']['state'] == 'SUSPENDED': status = 4 elif res['data']['state'] == 'REVOKED': status = 5 elif res['data']['state'] == 'FINISHED': status = 6 info = make_log_info(u'增加节点', u'业务日志', u'Flow', sys._getframe().f_code.co_name, request.user.username, '成功', '无') except Exception as e: info = make_log_info(u'增加节点', u'业务日志', u'Flow', sys._getframe().f_code.co_name, request.user.username, '失败', repr(e)) add_log(info) r = Flow.objects.filter(instance_id=task_id).update(status=status) return r
def show_host(request): """ 取出所有主机信息 :param request: :return: """ limit = 7 # 暂时为7 bk_biz_id = 2 start_page = tools.page_paging(request, limit) # 起始页码 try: display_list = [] # 定义一个空列表 param = { # 以下定义search_host--查询主机接口参数 "ip": { "data": [], "exact": 1, "flag": "bk_host_innerip|bk_host_outerip" }, "condition": [ { "bk_obj_id": "biz", "fields": [], "condition": [ { "field": "bk_biz_id", "operator": "$eq", "value": bk_biz_id } ] }, ], "page": { "start": start_page, "limit": limit, "sort": "bk_host_id" }, } param2 = { # 定义get_agent_status--agent状态接口参数 "bk_supplier_id": 0, "hosts": [{ "ip": 0, "bk_cloud_id": "0" }] } client = tools.interface_param(request) res = client.cc.search_host(param) # 调用search_host接口 # 判断调用search_host接口是否成功,成功则取数据,失败则返回错误信息 if res.get('result'): bk_host_list = res.get('data').get('info') else: bk_host_list = [] logger.error(u"请求主机列表失败:%s" % res.get('message')) for i in bk_host_list: # 循环遍历接口返回的参数,取出数据保存 dic = { 'bk_os_name': i['host']['bk_os_name'], 'bk_host_name': i['host']['bk_host_name'], 'bk_host_innerip': i['host']['bk_host_innerip'], 'bk_inst_name': i['host']['bk_cloud_id'][0]['bk_inst_name'], } param2['hosts'][0]['ip'] = dic['bk_host_innerip'] res2 = client.gse.get_agent_status(param2) # 调用get_agent_status接口 bk_agent_info = res2['data'] if bk_agent_info['0:' + dic['bk_host_innerip']]['bk_agent_alive'] == 1: dic['bk_agent_alive'] = u"Agent已安装" else: dic['bk_agent_alive'] = u"Agent未安装" display_list.append(dic) # 把取出来的数据保存到display_list里面 print display_list result = tools.success_result(display_list) except Exception, e: result = tools.error_result(e)
def select_module_host(request): """ 此函数类似于show_host函数 :param request: :return: """ try: param = { "ip": { "data": [], "exact": 1, "flag": "bk_host_innerip|bk_host_outerip" }, "condition": [ { "bk_obj_id": "biz", "fields": [], "condition": [{ "field": "bk_biz_id", "operator": "$eq", "value": 2 }] }, { "bk_obj_id": "set", "fields": [], "condition": [{ "field": "bk_set_id", "operator": "$eq", "value": 7 }] }, { "bk_obj_id": "module", "fields": [], "condition": [{ "field": "bk_module_id", "operator": "$eq", "value": 34 }] }, ], "page": { "sort": "bk_host_id" }, } param1 = { # 定义get_agent_status--agent状态接口参数 "bk_supplier_id": 0, "hosts": [{ "ip": 0, "bk_cloud_id": "0" }] } client = tools.interface_param(request) res = client.cc.search_host(param) if res.get('result', False): module_list = res.get('data') else: module_list = [] logger.error(u"请求module信息失败:%s" % res.get('message')) display_list = [] for_list = module_list['info'] for i in for_list: dic = { 'bk_host_name': i['host']['bk_host_name'], 'bk_host_innerip': i['host']['bk_host_innerip'], } param1['hosts'][0]['ip'] = dic['bk_host_innerip'] res2 = client.gse.get_agent_status(param1) # 调用get_agent_status接口 bk_agent_info = res2['data'] if bk_agent_info['0:' + dic['bk_host_innerip']]['bk_agent_alive'] == 1: dic['bk_agent_alive'] = u"Agent已安装" else: dic['bk_agent_alive'] = u"Agent未安装" display_list.append(dic) count = module_list['count'] return_dic = {'results': display_list, 'count': count} return return_dic except Exception as e: return render_json({'results': '失败'})