示例#1
0
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)
示例#2
0
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)
示例#3
0
def get_active_user(request):
    """
    通过蓝鲸获取当前用户
    :param request:
    :return:            dict
    """
    client = tools.interface_param(request)
    res = client.bk_login.get_user({})
    return res
示例#4
0
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)
示例#5
0
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)
示例#6
0
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)
示例#7
0
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
示例#8
0
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
示例#9
0
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
示例#10
0
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)
示例#11
0
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': '失败'})