Esempio n. 1
0
def execute_script(request):
    """
    执行脚本
    """
    # 接收并处理数据
    post = request.POST
    files = request.FILES

    ip_data = post["ipList"].split(',')
    ip_list = list()
    for item_ip in ip_data:
        ip_list.append(dict(ip=item_ip, bk_cloud_id=0))

    script_param = post["scriptWord"]
    bk_biz_id = post["businessId"]

    re_list = list()
    temp_dict = dict()
    for key in files:
        _file = files.get(key)
        temp_dict["filename"] = _file.name
        temp_dict['file_content'] = _file.file.read()
        re_list.append(dict(filename=temp_dict["filename"]))

    # 执行数据
    client = get_client_by_request(request)

    encode_param = base64.b64encode(script_param)
    encode_content = base64.b64encode(temp_dict['file_content'])
    kwargs = {
        "bk_biz_id": bk_biz_id,
        "script_param": encode_param,
        "script_content": encode_content,
        "account": "root",
        "ip_list": ip_list
    }
    result = client.job.fast_execute_script(kwargs)

    result_data = result["data"]
    job_instance_name = result_data["job_instance_name"]
    job_instance_id = result_data["job_instance_id"]

    # 保存数据
    task_val = dict()
    task_val["job_instance_name"] = job_instance_name
    task_val["job_instance_id"] = job_instance_id
    task_val["script_name"] = temp_dict["filename"]
    task_val["bk_biz_id"] = bk_biz_id
    task_val["ip"] = ip_list
    task_val["script_param"] = encode_param
    task_val["script_content"] = encode_content
    TaskDetail(**task_val).save()

    return render_json({"result": u"已启动作业:%s (%s)" % (job_instance_name, job_instance_id)})
Esempio n. 2
0
def get_monitor_host(request):
    param = json.loads(request.body)
    monitor_list = MonitorItem.objects.filter(bk_biz_id=param['bk_biz_id'])
    if param['ip_list']:
        monitor_list = monitor_list.filter(ip__in=param['ip_list'])

    monitor_list = monitor_list.order_by('id')
    return render_json({
        'data': [model_to_dict(obj) for obj in monitor_list],
        'result': True,
    })
Esempio n. 3
0
def get_mem_info(request):
    try:
        info = json.loads(request.body)
        app_id = info["id"]
        ip = info["ip"]
        task_id = execute_script(app_id,ip)
        # print task_id
        memory_info = get_task_result(str(task_id))
        # print memory_info
        # print memory_info["data"]

        mem_list = memory_info["data"].split()
        total_memory = float(mem_list[7])
        used_memory = float(mem_list[8])
        data = {"total_memory": total_memory,"used_memory": used_memory}
        memory_used_rate = "%.2f%%" %(used_memory/total_memory*100)

    except Exception as e:
        return render_json({"result": False, "memory_info": e})
    return render_json({"result": True, "memory_info": memory_used_rate})
Esempio n. 4
0
def verify_name_only(request):
    '''
    验证名字的唯一性
    :param request:
    :return:
    '''
    body = json.loads(request.body)
    name = body['name']
    id = body['id']
    res = function.verify_name_only(name, id)
    return render_json(res)
Esempio n. 5
0
def search_sys_info(request):
    try:
        username = request.user.username
        request_data = json.loads(request.body)
        return_data = []
        data = {
            "id": "1",
            "sys_name": "test",
            "sys_code": "te",
            "owners": "dd",
            "is_control": "否",
            "department": "dd",
            "comment": "dja",
            "first_owner": "cyz"
        }
        return_data.append(data)
        return render_json({"result": True, "data": return_data})
    except Exception as e:
        logger.error(e)
        return render_json({"result": False, "msg": [u"查询系统信息失败!!"]})
Esempio n. 6
0
def test_exam(request):
    '''
    测试
    :param request:
    :return:
    '''
    return render_json({
        'name': request.user.username,
        'test': 'demo-eaxm',
        'message': 'success'
    })
Esempio n. 7
0
def get_sys_tree(request):
    try:
        client = get_client_by_request(request)
        kwargs = {}
        result = client.cc.get_app_by_user(kwargs)
        if result["result"]:
            datas = result["data"]
            app_list = [{
                "name": data["ApplicationName"],
                "id": data["ApplicationID"],
                "checked": False,
                "isParent": False,
                "type": "first",
                "children_add": False,
                "is_open": False
            } for data in datas if data["ApplicationID"] != "1"]

        return render_json({"result": True, "data": app_list})
    except Exception, e:
        return render_json({"result": False, "error": e})
Esempio n. 8
0
def job_list(request):
    """
    get jobs
    """
    # 默认从django settings中获取APP认证信息:应用ID和应用TOKEN
    # 默认从django request中获取用户登录态bk_token
    client = get_client_by_request(request)
    # 组件参数
    kwargs = {"bk_biz_id": 2}
    result = client.job.get_job_list(kwargs)
    return render_json(result)
Esempio n. 9
0
def update_organization(request):
    """更新组织"""
    result = json.loads(request.body)
    organization_id = int(result['id'])
    try:
        organization = Organization.objects.filter(id=organization_id)[0]
    except ObjectDoesNotExist:
        raise Http404("organization does not exist")
    Organization.objects.update_organization(organization, result,
                                             request.user)
    return render_json({'result': True, 'data': "update success"})
Esempio n. 10
0
def search_all_host(request):
    try:
        requst_data = json.loads(request.body)
        client = get_client_by_user(request.user.username)
        kwargs = {
            "bk_app_code": APP_ID,
            "bk_app_secret": APP_TOKEN,
            "bk_username": '******',
            "ip" : {"flag": "bk_host_innerip|bk_host_outerip","exact": 1,"data": []},

            "condition": [
            {
                "bk_obj_id": "biz",
                "fields": [
                    "default",
                    "bk_biz_id",
                    "bk_biz_name",
                ],
                # 根据业务ID查询主机
                "condition": [
                    {
                        "field": "bk_biz_id",
                        "operator": "$eq",
                        "value": int(requst_data['biz'])
                    }
                ]
            },

            {
            "bk_obj_id": "module",
            "fields": [],
            "condition": []
        },
        {
            "bk_obj_id": "set",
            "fields": [],
            "condition": []
        },
        ]
        }
        result = client.cc.search_host(kwargs)
        host_list = []
        if result["result"]:
            for i in result['data']['info']:
                host_list.append({
                    'id':i['host']['bk_host_id'],
                    'bk_host_innerip':i['host']['bk_host_innerip'],
                    'area': i['host']['bk_cloud_id'][0]['bk_inst_name'],
                    'module': [j['bk_module_name'] for j in i['module']][0] if [j['bk_module_name'] for j in i['module']] else '',
                    #'agent_status': u'正常' if get_host_agent(request.user.username, i['host']['bk_host_innerip'], i['host']['bk_cloud_id'][0]['bk_inst_id']) else u'异常',
                })
        return render_json({"result": True, "data": host_list})
    except Exception as e:
        logger.error(e)
Esempio n. 11
0
def app_list(request):
    """
    获取业务
    """
    # 默认从django settings中获取APP认证信息:应用ID和应用TOKEN
    # 默认从django request中获取用户登录态bk_token
    client = get_client_by_request(request)
    # 组件参数
    kwargs = {}
    result = client.cc.get_app_list(kwargs)
    return render_json(result)
Esempio n. 12
0
def api_holiday_list(request):
    holiday_list = []
    q_query = Q()
    year = request.POST.get("year")
    if year:
        q_query = q_query & Q(year=year)
    result_list = Holiday.objects.filter(q_query).values()

    if result_list:
        holiday_list = list(result_list)
    return render_json({"success": True, "data": holiday_list})
Esempio n. 13
0
def search_topu(request):
    id = request.GET['id']
    client = get_client_by_user(request.user.username)
    kwarg = {
        "bk_app_code": APP_ID,
        "bk_app_secret": APP_TOKEN,
        "bk_username": request.user.username,
        "bk_biz_id": id,
    }
    data = client.cc.search_biz_inst_topo(kwarg)
    return render_json({'result': True, 'data': data})
Esempio n. 14
0
def test_la(request):
    client = get_client_by_user(request.user.username)
    kwarg = {
        "bk_app_code": APP_ID,
        "bk_app_secret": APP_TOKEN,
        "bk_username": request.user.username,
        "target_app_code": APP_ID,
        "fields": "bk_app_code;bk_app_name;introduction;creator;developer"
    }
    data = client.bk_paas.get_app_info(kwarg)
    return render_json({'result': True, 'data': data})
Esempio n. 15
0
def delete_task(request):
    try:
        task_obj = json.loads(request.body)
        CheckTask.objects.filter(id=task_obj['id']).update(is_deleted=True)
        CeleryTimeSet.objects.filter(checktask__id=task_obj['id']).update(
            is_deleted=True)
        check_task = CheckTask.objects.get(id=task_obj['id'])
        log = OperationLog()
        log.create_log(check_task, None, 'delete', request.user.username)
        return render_json({'result': True})
    except Exception as e:
        logger.exception(e)
        return render_json({
            'result':
            False,
            'data':
            u'\u7cfb\u7edf\u5f02\u5e38\uff0c\u8bf7\u8054\u7cfb\u7ba1\u7406\u5458\uff01'
        })

    return
Esempio n. 16
0
def list_host(request):
    bk_biz_id = request.GET.get('bk_biz_id')
    client = get_client_by_request(request)
    res = search_host_esb(client, request.user.username, bk_biz_id)
    result = []
    for item in res['data']:
        params = {
            'bk_host_innerip': item['host']['bk_host_innerip']
        }
        result.append(params)
    return render_json({'data': result})
Esempio n. 17
0
def get_vulnscan_report_chartdata(request):
    soc_task_resultid = request.GET.get('soc_task_resultid')
    print soc_task_resultid
    sum = VulnScanReport.objects.filter(
        soc_task_resultid=soc_task_resultid).count()
    info = VulnScanReport.objects.filter(
        soc_task_resultid=soc_task_resultid).filter(risk_level=u'信息').count()
    warning = VulnScanReport.objects.filter(
        soc_task_resultid=soc_task_resultid).filter(risk_level=u'警告').count()
    danger = VulnScanReport.objects.filter(
        soc_task_resultid=soc_task_resultid).filter(risk_level=u'危险').count()
    emergence = VulnScanReport.objects.filter(
        soc_task_resultid=soc_task_resultid).filter(risk_level=u'紧急').count()

    res = {
        'code': 0,
        'result': True,
        'messge': 'success',
        'data': {
            "title":
            "漏洞报告",
            "series": [
                {
                    'name': u'紧急',
                    'value': emergence,
                    'itemStyle': {
                        'color': 'green'
                    },
                },
                {
                    'name': u'警告',
                    'value': warning,
                    'itemStyle': {
                        'color': 'blue'
                    },
                },
                {
                    'name': u'危险',
                    'value': danger,
                    'itemStyle': {
                        'color': 'yellow'
                    },
                },
                {
                    'name': u'信息',
                    'value': info,
                    'itemStyle': {
                        'color': 'red'
                    },
                },
            ]
        }
    }
    return render_json(res)
Esempio n. 18
0
def search_student(request):
    name=request.POST.get('name_info')

    students=StudentInfo.objects.filter(name__icontains=name).values()

    result_list=[]
    for stu in students:
        result_list.append(stu)


    return render_json({'result':True, 'student':result_list})
Esempio n. 19
0
def do_del_user(req):
    op_ids = req.POST.getlist("userIds")
    if op_ids == None or op_ids == "":
        return render_json({'code': False, 'msg': u"必须传递参数op_id且值不为空"})
    try:
        for op_id in op_ids:
            user = BkingOperator.objects.get(op_id=op_id)
            #删除账号
            BkingOperator.objects.filter(op_id=op_id).delete()
            #删除账号关联的角色信息
            BkingOpRoleGrant.objects.filter(
                login_code=user.login_code).delete()
            return render_json({'code': True, 'msg': u"数据删除成功"})
    except Exception, e:
        logger.error('delete object for BkingOperator is error:{}'.format(
            repr(e)))
        return render_json({
            'code': False,
            'msg': u"数据删除失败:{}".format(repr(e))
        })
Esempio n. 20
0
def application_type_create(request):
    form = ApplicationTypeForm(request.POST)
    if not form.is_valid():
        return render_json({'result': False, "msg": u'参数错误!'})
    cc_name = form.cleaned_data['cc_name']
    template_type = form.cleaned_data['template_type']
    try:
        app = Application.objects.get(cc_name=cc_name)
    except ObjectDoesNotExist:
        return render_json({'result': False, "msg": u'业务名称错误!'})
    n = BusinessType.objects.filter(app=app, types=template_type).count()
    if n > 0:
        return render_json({'result': False, "msg": u'模版类型已存在!'})
    else:
        try:
            BusinessType.objects.create(types=template_type, app=app)
            return render_json({'result': True, "msg": u'增加模版类型成功!'})
        except Exception, e:
            logger.error(u'增加模版类型错误, %s!' % e)
            return render_json({'result': False, "msg": u'增加模版类型错误!'})
Esempio n. 21
0
def switch_func(request):
    """
    开启、关闭示例功能
    """
    try:
        status = int(request.POST.get('status', '0'))
        # 更改功能开关的状态
        Function_controller.objects.filter(func_code='func_test').update(enabled=status)
    except Exception, e:
        msg = u"更改功能状态出错,异常信息:%s" % e
        return render_json({'res': False, 'msg': msg})
Esempio n. 22
0
def add_sys(request):
    try:
        req_data = json.loads(request.body)
        start_time = to_datetime(req_data['start_time'])

        # 存入数据库

        data = {
            "id": 2,
            "sys_name": "新增系统",
            "sys_code": "www",
            "owners": "wwwww",
            "is_control": "是",
            "department": "www",
            "comment": "wwwww",
        }

        return render_json({"result": True, "data": data})
    except Exception as e:
        return render_json({"result": False, "msg": [u"新增系统信息失败!!"]})
Esempio n. 23
0
def esb_test2(request):
    '''
    @note: 蓝鲸体系组件调用 执行任务 用到的前端文件esb_test.html
    '''
    client = get_client_by_request(request)
    kwargs = {
        "app_code": settings.APP_ID,
        "app_secret": settings.APP_TOKEN,
        # 通过cookie获取到bk_token
        "bk_token": request.COOKIES['bk_token'],
        "app_id": 2,   # 业务ID
    }
    result = client.my_app.get_flask_content(kwargs)
    content = result['content']
    message = result['message']
    import time
    time.sleep(10)
    if result['result']:
        return render_json({'result': True,'content': content,'message': message or u'调取第三方接口Flask_Api成功'})
    return render_json({'result': False, 'content': content,'message': message or u'调取第三方接口Flask_Api失败'})
Esempio n. 24
0
def get_report_server_detail_by_id(request):
    try:
        server_obj = json.loads(request.body)
        menu_list = _get_report_server_detail_by_id(server_obj)
        error_list, summary = get_error_server_list(server_obj['id'])
        return render_json({
            'result': True,
            'menu_list': menu_list,
            'error_list': error_list,
            'summary': summary
        })
    except Exception as e:
        logger.exception(e)
        return render_json({
            'result':
            False,
            'data': [
                u'\u7cfb\u7edf\u5f02\u5e38\uff0c\u8bf7\u8054\u7cfb\u7ba1\u7406\u5458\uff01'
            ]
        })
Esempio n. 25
0
def get_history_data(request):
    """
    获取磁盘容量历史数据 API
    """
    ip = request.GET.get('ip', '')
    filesystem = request.GET.get('filesystem', '')
    mounted = request.GET.get('mounted', '')
    token = request.GET.get('token', '')
    if token != TOKEN:
        return render_json({
            'result': False,
            'data': [],
            'message': u"token不合法"
        })

    capacitydatas = CapacityData.objects.all()
    if ip:
        capacitydatas = capacitydatas.filter(ip=ip)
    if filesystem:
        capacitydatas = capacitydatas.filter(filesystem=filesystem)
    if mounted:
        capacitydatas = capacitydatas.filter(mounted=mounted)

    datalist = []
    for _data in capacitydatas:
        datalist.append({
            'ip':
            _data.ip,
            'filesystem':
            _data.filesystem,
            'mounted':
            _data.mounted,
            'size':
            _data.size,
            'use':
            _data.use,
            'createtime':
            _data.createtime.strftime('%Y-%m-%d %H:%M:%S')
        })

    return render_json({'result': True, 'data': datalist, 'message': 'ok'})
Esempio n. 26
0
def vcenter(request, vm_id):
    if request.method == 'GET':
        response = requests.get("https://api.starbucks.net/auth",
                                auth=('S-Cmdbcn', 'K{RTOLtTP^*Muc#'),
                                verify=False)
        token = response.headers['x-api-key']
        return render_json({"result": "ok", "token": token})

    if request.method == "DELETE":
        logger.info(vm_id)
        if not vm_id:
            return render_json({
                "data": "",
                "bk_status": False,
                "Message": "vm id is required"
            })
        try:
            response = requests.get("https://api.starbucks.net/auth",
                                    auth=('S-Cmdbcn', 'K{RTOLtTP^*Muc#'),
                                    verify=False)
            token = response.headers['x-api-key']
            headers = {'Authorization': token, 'accept': 'application/json'}
            data = request.POST['data']
            logger.info(data)
            logger.info(token)
            res = requests.delete(
                "https://api.starbucks.net/bean-api/api/v1/server/verde/" +
                vm_id,
                headers=headers,
                verify=False)
            return render_json({
                "data": res.json(),
                "bk_status": True,
                "Message": u"成功"
            })
        except Exception as e:
            return render_json({
                "data": "",
                "bk_status": False,
                "Message": e.message
            })
Esempio n. 27
0
def get_agent_status(request, cc_biz_id):
    """获取agent安装状态

    :param request:
    :param cc_biz_id:
    :return:
    """
    hosts_list = CCBiz.hosts(cc_biz_id).get('data') or []
    hostid_list = [host_key(h) for h in hosts_list]
    agent_status_info = CCBiz.agent_status(cc_biz_id, hostid_list)
    if hosts_list and not len(agent_status_info):
        return render_json({
            'result': False,
            'message': u"查询agent状态接口失败",
            'data': []
        })
    agent_fail_cnt = agent_ok_cnt = 0
    ok_ip_list = list()
    fail_ip_list = list()
    for hostid, status in agent_status_info.iteritems():
        ip, plat_id = parse_host_id(hostid)
        if status == AGENT_STATUS.ON:
            agent_ok_cnt += 1
            ok_ip_list.append({'ip': ip, 'cc_plat_id': plat_id})
        else:
            agent_fail_cnt += 1
            fail_ip_list.append({'ip': ip, 'cc_plat_id': plat_id})
    details = {
        'agent_ok_cnt': agent_ok_cnt,
        'agent_fail_cnt': agent_fail_cnt,
        'ok_ip_list': ok_ip_list,
        'fail_ip_list': fail_ip_list,
    }
    res = {
        'result': True,
        'message': "",
        'data': agent_ok_cnt,
        'details': details
    }

    return render_json(res)
Esempio n. 28
0
def get_task_option(request):
    try:
        filter_obj = eval(request.body)
        if not filter_obj['type_id']:
            return render_json({
                'result':
                False,
                'data':
                [u'\u8bf7\u5148\u9009\u62e9\u7cfb\u7edf\u7c7b\u578b\uff01']
            })
        mail_data = MailReceiver.objects.all()
        module_list = CheckModule.objects.filter(is_deleted=False,
                                                 os_type=str(
                                                     filter_obj['type_id']))
        if not request.user.is_superuser:
            mail_data = MailReceiver.objects.filter(
                created_by=request.user.username)
            module_list = module_list.filter(
                Q(created_by=request.user.username) | Q(created_by='system'))
        mails = [{
            'text': o['mailbox'],
            'id': o['mailbox']
        } for o in mail_data.values('mailbox').distinct()]
        module_list_return = [{
            'id': i.id,
            'text': i.name + '(' + i.created_by + ')'
        } for i in module_list]
        return render_json({
            'result': True,
            'mail_list': mails,
            'module_list': module_list_return
        })
    except Exception as e:
        logger.exception(e)
        return render_json({
            'result':
            False,
            'data': [
                u'\u7cfb\u7edf\u5f02\u5e38\uff0c\u8bf7\u8054\u7cfb\u7ba1\u7406\u5458\uff01'
            ]
        })
Esempio n. 29
0
def do_add_user(req):
    user_name = req.user.username
    if user_name == None or user_name == "":
        return render_json({'code': False, 'msg': u"获取用户信息失败"})
    login_code = req.POST.get("login_code")
    op_name = req.POST.get("op_name")
    op_password = req.POST.get("op_password")
    bill_class = req.POST.get("bill_class")
    region_id = req.POST.get("region_id")
    county_id = req.POST.get("county_id")
    org_id = req.POST.get("org_id")
    email = req.POST.get("email")
    phone_id = req.POST.get("phone_id")
    status = req.POST.get("status")
    mark = req.POST.get("mark")
    try:
        users = BkingOperator.objects.filter(login_code=login_code)
        if users.exists():
            return render_json({'code': False, 'msg': u"登录名已存在"})
        BkingOperator.objects.create(login_code=login_code,
                                     op_name=op_name,
                                     op_password=hash_code(
                                         op_password, login_code),
                                     bill_class=bill_class,
                                     region_id=region_id,
                                     county_id=county_id,
                                     org_id=org_id,
                                     email=email,
                                     phone_id=phone_id,
                                     status=status,
                                     mark=mark,
                                     create_op=user_name)
        logger.error('insert object to BkingOperator is success')
        return render_json({'code': False, 'msg': u"账号数据新增成功"})
    except Exception, e:
        logger.error('insert object to BkingOperator is error:{}'.format(
            repr(e)))
        return render_json({
            'code': False,
            'msg': u"账号数据新增失败:{}".format(repr(e))
        })
Esempio n. 30
0
def search_hosts(request):
    '''获取业务下的集群下的主机'''
    try:
        bk_set_id = json.loads(request.body)['bk_set_id']
        url = host_url + '/api/c/compapi/v2/cc/search_host/'
        params = {
            "bk_app_code":
            bk_app_code,
            "bk_app_secret":
            bk_app_secret,
            "bk_username":
            '******',
            "condition": [{
                "bk_obj_id":
                "set",
                "fields": [],
                "condition": [{
                    "field": "bk_set_id",
                    "operator": "$eq",
                    "value": bk_set_id
                }]
            }]
        }
        res = requests.post(url, json.dumps(params)).json()
        res_list = []
        for host_item in res['data']['info']:
            res_dict = {
                'bk_host_innerip': host_item['host']['bk_host_innerip'],
                'bk_os_name': host_item['host']['bk_os_name'],
                'bk_cpu': host_item['host']['bk_cpu'],
                'bk_host_name': host_item['host']['bk_host_name'],
                'bk_inst_name':
                host_item['host']['bk_cloud_id'][0]['bk_inst_name']
            }
            res_list.append(res_dict)
        return render_json({'result': True, 'data': res_list})
    except Exception as e:
        return render_json({
            'result': False,
            'message': u'获取业务下集群下主机失败,{}'.format(e)
        })
Esempio n. 31
0
def add_to_celery_list(request):
    server_obj = json.loads(request.body)
    Servers.objects.update_or_create(ip_address=server_obj["ip_address"],
                                     cloud_id=server_obj["cloud_id"],
                                     app_id=server_obj["app_id"],
                                     os_name=server_obj["os_name"],
                                     cloud_name=server_obj["cloud_name"],
                                     defaults={
                                         "is_deleted": False,
                                         "created_by": request.user.username
                                     })
    return render_json({"result": True})
Esempio n. 32
0
            )
        # 获取功能开启状态
        is_enabled = func_info.enabled
    except Exception, e:
        logger.error(u"加载功能推荐页面失败,异常信息:%s" % e)
        is_enabled = False
    return render_mako_context(request, '/home_application/func_check.part',
                               {'is_enabled': is_enabled})


def switch_func(request):
    """
    开启、关闭示例功能
    """
    try:
        status = int(request.POST.get('status', '0'))
        # 更改功能开关的状态
        Function_controller.objects.filter(func_code='func_test').update(enabled=status)
    except Exception, e:
        msg = u"更改功能状态出错,异常信息:%s" % e
        return render_json({'res': False, 'msg': msg})
    return render_json({'res': True, 'msg': u"操作成功"})


@function_check('func_test')
def excute_func(request):
    """
    开启、关闭示例功能
    """
    return render_json({'res': True, 'msg': u"这是一个功能开关示例"})
Esempio n. 33
0
def excute_func(request):
    """
    开启、关闭示例功能
    """
    return render_json({'res': True, 'msg': u"这是一个功能开关示例"})