Exemplo n.º 1
0
def get_servers_info():
    logger.info(1)
    res = Servers.objects.all()
    for m in res:
        if not m.men_info or not m.disk_info:
            get_other_info.delay(m.id)

    app_list = Servers.objects.all().values("app_id", "created_by").distinct()
    run_apps = []
    for i in app_list:
        servers = Servers.objects.filter(app_id=i["app_id"], is_deleted=False)
        one_app = {
            "app_id": i["app_id"],
            "ip_list": [{"ip": u.ip_address, "bk_cloud_id": u.cloud_id} for u in servers],
        }
        client = get_client_by_user(i["created_by"])
        result = get_server_perform(client, one_app, i["created_by"])
        if result["result"]:
            run_apps.append({"app_id": i["app_id"], "job_instance_id": result["data"], "username": i["created_by"]})
    performance_list = []
    for i in run_apps:
        client = get_client_by_user(i["username"])
        one_app_result = get_task_ip_log(client, i["app_id"], i["job_instance_id"], i["username"])
        performance_list += create_server_perform(one_app_result, i["app_id"])
    ServerPerformance.objects.bulk_create(
        performance_list, batch_size=500
    )
Exemplo n.º 2
0
    def test_get_client_by_user(self):
        user = self.user_model(username=TS['bk_user']['bk_username'])
        client = get_client_by_user(user)
        result = client.bk_login.get_user()
        self.assertTrue(result['result'], json.dumps(result))
        self.assertEqual(result['data']['bk_username'], TS['bk_user']['bk_username'])

        client = get_client_by_user(TS['bk_user']['bk_username'])
        result = client.bk_login.get_user()
        self.assertTrue(result['result'], json.dumps(result))
        self.assertEqual(result['data']['bk_username'], TS['bk_user']['bk_username'])
Exemplo n.º 3
0
 def setup_bk_client(cls, request=None, user=None, **kwargs):
     """
     获取蓝鲸的client对象
     request和user对象二选一,同时传入,使用request参数
     """
     if request:
         _client = get_client_by_request(request, **kwargs)
     elif user:
         _client = get_client_by_user(user, **kwargs)
     else:
         _client = get_client_by_user(settings.ADMIN_USERNAME, **kwargs)
     cls.client = _client
Exemplo n.º 4
0
def save_history(request, result1):
    content = result1['data'][0]['stepAnalyseResult'][0]['ipLogContent']
    end_time = content['endTime']
    start_time = content['startTime']
    ip = content['ip']
    log_content = content['logContent']
    name = content['resultTypeText']
    try:
        Taskhistory.objects.create(end_time=end_time, start_time=start_time, ip=ip, result=log_content,
                                   name=name, username=get_current_username(request))
    except Exception as ex:
        print str(ex)
        print get_client_by_user(request)
    data = {'result': True}
    return JsonResponse(data)
Exemplo n.º 5
0
def excute_by_script(username,
                     biz_id,
                     ip_list,
                     script_content,
                     script_type=1,
                     script_timeout=600):
    client = get_client_by_user(username)
    #   app_list=[{'ip':'192.168.165.51','bk_cloud_id':'2'}]
    kwargs = {
        "bk_app_code": APP_ID,
        "bk_app_secret": APP_TOKEN,
        "bk_biz_id": int(biz_id),
        "bk_username": username,
        "script_content": base64.b64encode(script_content),
        "ip_list": ip_list,
        "script_type": script_type,
        "account": 'root',
        "script_timeout": script_timeout
    }
    result = client.job.fast_execute_script(kwargs)
    if result["result"]:
        task_id = result["data"]["job_instance_id"]
        time.sleep(2)
        return get_ip_log_content(client, username, task_id, biz_id)
    else:
        return {"result": False, "data": result["message"]}
Exemplo n.º 6
0
def app_detail(request):

    try:
        client = get_client_by_user(request.user.username)
        kwargs = {
            "bk_app_code": APP_ID,
            "bk_app_secret": APP_TOKEN,
            "bk_username": '******',
            "target_app_code": APP_ID,
            "fields": 'introduction;creator;developer',


        }
        result = client.bk_paas.get_app_info(kwargs)
        my_dict = {}
        if result["result"]:
            my_dict['message'] = result['message']
            my_dict['code'] = result['code']
            my_dict['data'] = [{'bk_app_code':result['data'][0]['bk_app_code'], "introduction": result['data'][0]['introduction'], "creator": result['data'][0]['creator'],"bk_app_name": result['data'][0]['bk_app_name'],"developer": result['data'][0]['developer']}]
            my_dict['result'] = result['result']
            my_dict['request_id'] = result['request_id']

        return render_json(my_dict)
    except Exception as e:
        print e
Exemplo n.º 7
0
def install_mysql_by_script(username,
                            app_id,
                            app_list,
                            script_content,
                            script_type=1,
                            script_timeout=600):
    client = get_client_by_user(username)
    kwargs = {
        "bk_app_code": APP_ID,
        "bk_app_secret": APP_TOKEN,
        "bk_biz_id": app_id,
        "bk_username": username,
        "script_content": base64.b64encode(script_content),
        "ip_list": app_list,
        "script_type": script_type,
        "account": 'root',
        "script_timeout": script_timeout
    }
    result = client.job.fast_execute_script(kwargs)
    if result["result"]:
        task_id = result["data"]["job_instance_id"]
        time.sleep(2)
        return get_ip_log_content(client, username, task_id, app_id)
    else:
        return {"result": False, "data": result["message"]}
Exemplo n.º 8
0
def search_topo(request):
    try:
        request_data = json.loads(request.body)

        client = get_client_by_user(request.user.username)


        topo = []
        for k in request_data['biz_list']:

            kwargs = {
                "bk_app_code": APP_ID,
                "bk_app_secret": APP_TOKEN,
                "bk_username": '******',
                "bk_biz_id": int(k['id'])
            }
            result = client.cc.search_biz_inst_topo(kwargs)

            if result["result"]:
                global topo_list
                topo_list = []
                # need_data = []
                # for child in result['data']:
                #     if
                get_inst_of_same_level(result['data'])
                topo.append({"id": int(k['id']), "name": k['text'], "bk_obj_id": "biz","isParent": 'true', 'children': copy.deepcopy(topo_list)})

        return render_json({"result": True, "data": topo})
    except Exception as e:
        logger.error(e)
Exemplo n.º 9
0
def get_all_users(username):
    client = get_client_by_user(username)
    res = client.bk_login.get_all_users()
    if res["result"]:
        return {"result": True, "data": res["data"]}
    else:
        return {"result": False, "data": res["message"]}
Exemplo n.º 10
0
def install_mysql_by_script(username,
                            instance_info,
                            script_content,
                            script_type=1,
                            script_timeout=600):
    client = get_client_by_user(username)
    kwargs = {
        "app_code": APP_ID,
        "app_secret": APP_TOKEN,
        "app_id": instance_info['app_id'],
        "username": username,
        "content": base64.b64encode(script_content),
        "ip_list": [{
            "ip": instance_info['ip'],
            "source": instance_info['source']
        }],
        "type": script_type,
        "account": username,
        "script_timeout": script_timeout
    }
    result = client.job.fast_execute_script(kwargs)
    if result["result"]:
        task_id = result["data"]["taskInstanceId"]
        time.sleep(2)
        return get_ip_log_content(client, username, task_id)
    else:
        return {"result": False, "data": result["message"]}
Exemplo n.º 11
0
    def sync_user(self, request, *args, **kwargs):
        """
        同步蓝鲸用户

            {}
        """
        # bk用户和app用户字段映射
        user_maps = [
            {'from': 'bk_username', 'to': 'username'},
            {'from': 'chname', 'to': 'chname'},
            {'from': 'phone', 'to': 'phone'},
            {'from': 'email', 'to': 'email'},
        ]
        user_model = get_user_model()
        client = get_client_by_user(request.user.username)
        result = client.bk_login.get_all_users()
        username_list = []
        if result['result']:
            user_list = result['data']
            for user in user_list:
                to_user = get_mapping(user, user_maps)
                username_list.append(to_user['username'])
                user_model.objects.update_or_create(defaults=to_user, username=to_user['username'])
            user_model.objects.exclude(username__in=username_list).delete()
            return Response()
        else:
            raise ValueError(result['message'])
Exemplo n.º 12
0
 def __init__(self):
     self.client = get_client_by_user("admin")
     self.send_type = {
         "mail": self.send_mail,
         "sms": self.send_sms,
         "weixin": self.send_weixin
     }
Exemplo n.º 13
0
def search_all_host(request):
    try:
        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":"$nin","value":6}]
                }
            ]
        }
        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'],
                    'text':i['host']['bk_host_innerip']
                })
        return render_json({"result": True, "data": host_list})
    except Exception as e:
        logger.error(e)
Exemplo n.º 14
0
def send_Email(user, content):
    # receiver_address = MailInfo.objects.filter(name=user).values("email_address")
    # if len(receiver_address) < 1:
    #     # 当操作用户不在邮件接收列表中时,则向默认邮件接收人发送邮件
    #     logger.info("当前执行用户不在邮件发送用户中,发送邮件给默认邮件接收用户")
    receiver_address_list = []
    receiver_address=[]
    for address in receiver_address:
        receiver_address_list.append(address['email_address'])
    receiver = ",".join(receiver_address_list)
    client = get_client_by_user(user)
    kwargs = {
        'bk_app_code': settings.APP_ID,
        'bk_app_secret': settings.APP_TOKEN,
        'bk_username': user,
        'receiver': receiver,
        'title': u'有孚云常用查询脚本执行结果通知',
        'content': content,
        'body_format': "Html"
    }
    result = client.cmsi.send_mail(kwargs)
    if result['result']:
        logger.info(u"邮件已发送至%s" % receiver)
        #MailRecords.objects.create(receiver=receiver, content=content, sent_state="success")
    else:
        logger.info(u"邮件发送失败:%s" % result['message'])
Exemplo n.º 15
0
def get_user_detail(username):
    """
    param:username  用户名
    return:{"email","*****@*****.**","telephone":""}
    """
    client = get_client_by_user("admin")
    kwargs = {
        "id": f"{username}",
    }
    res = client.usermanage.retrieve_user(kwargs)

    result = {"result": res['result'], "message": res['message']}
    if res.get("result", False):
        result.update({
            'username': res['data']['username'],
            'email': res['data']['email'],
            'telephone': res['data']['telephone'],
            'qq': res['data']['qq'],
            'wx_openid': res['data']['wx_openid'],
            'wx_userid': res['data']['wx_userid']
        })
    else:
        logger.warning(f"获取用户信息失败  接口名称(retrieve_user) 请求参数({kwargs})")

    return result
Exemplo n.º 16
0
def execute_script_log(script_content, script_param, ip):
    """
    执行脚本命令,并获取执行log
    """
    user = User.objects.get(username='******')
    client = get_client_by_user(user.username)

    # base64 快速执行脚本需要的参数,并执行client
    fast_execute_script_result = fast_execute_script(client, script_content,
                                                     script_param, ip)
    logger.info(fast_execute_script_result)

    # 如果快速脚本调用成功,执行log日志查询,获取执行内容
    if fast_execute_script_result['message'] == 'success':
        job_instance_id = fast_execute_script_result['data']['job_instance_id']
        get_job_instance_log_result = get_job_instance_log(
            client, job_instance_id)

        # 如果日志查询成功,提取内容
        if get_job_instance_log_result['message'] == 'success':
            # 匹配log_content规则
            regex = r"(?<='log_content': ').*?(?=')"

            return re.findall(regex, str(get_job_instance_log_result),
                              re.MULTILINE)
    else:
        return None
Exemplo n.º 17
0
def search_host_by_business(request):
    client = get_client_by_user(request)
    dict_data = json.loads(request.body)
    params = {
        "bk_app_code": APP_ID,
        "bk_app_secret": APP_TOKEN,
        "bk_username": request.user.username,
        "bk_biz_id": dict_data['bk_biz_id'],
        "condition": [],
        "page": {
            "start": 0,
            "limit": 100,
        }
    }
    res = client.cc.search_host(params)
    infos = res['data']['info']
    info_list = []
    for info in infos[0:7]:
        host = info['host']
        dict = {
            'business_id': dict_data['bk_biz_id'],
            'ip': host['bk_host_innerip'],
            'sys_name': host['bk_os_name'],
            'host_name': host['bk_host_name'],
            'cloud_region': 'default area',
            'bk_cloud_id': host['bk_cloud_id'][0]['bk_obj_id'],
            'men': host['bk_mem'],
            'disk': host['bk_disk'],
            'cpu': host['bk_cpu'],
        }
        info_list.append(dict)
    return success_result(info_list)
Exemplo n.º 18
0
def save_capacity_data(username='******'):
    """
    执行 celery 异步任务

    调用celery任务方法:
        task.delay(arg1, arg2, kwarg1='x', kwarg2='y')
        task.apply_async(args=[arg1, arg2], kwargs={'kwarg1': 'x', 'kwarg2': 'y'})
        delay(): 简便方法,类似调用普通函数
        apply_async(): 设置celery的额外执行选项时必须使用该方法,如定时(eta)等
                      详见 :http://celery.readthedocs.org/en/latest/userguide/calling.html
    """
    biz_id = 3  # 请修改为你需要执行的业务ID(可在蓝鲸配置平台里查询)
    ip = '10.0.1.192'  # 请修改为你需要执行的业务IP(可在蓝鲸配置平台里查询)
    # 作业ID和脚本ID二选一
    job_id = 12  # 请修改为你需要执行的作业ID(可在蓝鲸作业平台里查询)
    script_id = 0  # 请修改为你需要执行的脚本ID(可在蓝鲸作业平台里查询)
    # 使用该方式调用云API时,请先将您的SaaS APPID 加入白名单 http://xx.xx.xx.xx/admin/bkcore/functioncontroller/
    client = get_client_by_user(username)
    result, job_instance_id = get_job_instance_id(client, biz_id, ip, job_id,
                                                  script_id)
    if result:
        count = 0
        while True:
            is_finish, capacity_data = get_host_capaticy(
                client, biz_id, job_instance_id, ip)
            if is_finish or count > 20:
                break
            count += 1
            time.sleep(3)
Exemplo n.º 19
0
def get_all_user(request):

    client = get_client_by_user(request.user.username)

    param = {
        "bk_app_code": APP_ID,
        "bk_app_secret": APP_TOKEN,
        "bk_username": "******"
    }

    result = client.bk_login.get_all_user(param)
    return_data = []
    if result['result']:
        for user in result['data']:
            if user['bk_username'] == request.user.username:
                continue
            return_data.append({
                'id': user['bk_username'],
                'text': user['bk_username']
            })
        data = {'result': True, 'data': return_data}

    else:
        data = {'result': False, 'msg': [u"查询用户信息失败!!"]}

    return render_json(data)
Exemplo n.º 20
0
def search_set(request):
    try:
        request_data = json.loads(request.body)
        app_id = request_data['app_id']
        client = get_client_by_user(request.user.username)
        param = {
            "bk_app_code": APP_ID,
            "bk_app_secret": APP_TOKEN,
            "bk_username": '******',
            "bk_biz_id": app_id,
            "page": {
                "start": 0,
                "limit": 0,
                "sort": "bk_set_id"
            },
            "fields": ['bk_set_name', 'bk_set_id'],
            "condition": {}
        }
        result = client.cc.search_set(param)
        data_list = []
        if result['result']:
            data_list = [{
                'id': i['bk_set_id'],
                'text': i['bk_set_name']
            } for i in result['data']['info']]

        return render_json({'result': True, 'data': data_list})
    except Exception as e:
        logger.error(e)
Exemplo n.º 21
0
def check_service():
    client = get_client_by_user('bk_four')
    execute_check_service.apply_async(args=[client, 6])
    now = datetime.datetime.now()
    Operations.objects.create(celery_opra_time=now,
                              celery_opra_content='检查服务状态')
    logger.error(u'开始调用check_service周期任务,当前时间:{}'.format(now))
Exemplo n.º 22
0
def search_host_by_ip(request):
    try:
        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": ['192.168.165.51']
            },
            "condition": [{
                "bk_obj_id": "biz",
                "fields": [
                    "default",
                    "bk_biz_id",
                    "bk_biz_name",
                ],
                "condition": []
            }]
        }
        result = client.cc.search_host(kwargs)
        d = {}
        if result["result"]:
            d = {}

        return render_json({"result": True, "data": d})
    except Exception as e:
        logger.error(e)
Exemplo n.º 23
0
def fast_script(username,
                server,
                script_content,
                script_type=1,
                script_timeout=3600):
    '''
    :param username: 用户名
    :param server: {'app_id': 业务id,
                            'ip_list': [{'ip': 主机ip, 'source': 主机source}],
                            'account': 执行账号(root,administrator)}
    :param script_content:脚本内容
    :param script_type:脚本类型 1(shell脚本)、2(bat脚本)、3(perl脚本)、4(python脚本)、5(Powershell脚本)
    :param script_timeout:超时时间
    :return:
    '''
    client = get_client_by_user(username)
    kwargs = {
        "app_code": APP_ID,
        "app_secret": APP_TOKEN,
        "app_id": server["app_id"],
        "username": username,
        "content": base64.b64encode(script_content),
        "ip_list": server["ip_list"],
        "type": script_type,
        "account": server["account"],
        "script_timeout": script_timeout
    }
    result = client.job.fast_execute_script(kwargs)
    if result["result"]:
        task_id = result["data"]["taskInstanceId"]
        time.sleep(2)
        return get_ip_log_content(client, username, task_id)
    else:
        return {"result": False, "data": result["message"]}
Exemplo n.º 24
0
def check_cpu_util():
    task_id = '2'
    app_id = '3'
    target_ip = '1:10.0.1.109'

    steps = [{"ipList": target_ip, "stepId": 2}]
    client = get_client_by_user('admin')
    result = client.job.execute_task({
        "app_id": app_id,
        "task_id": task_id,
        "steps": steps
    })

    execute_status = 'Waiting'

    while (execute_status != 'Finished'):
        time.sleep(5)
        execute_status = check_tasks_status(result['data']['taskInstanceId'])

    result_new = get_instance_detail(result['data']['taskInstanceId'])

    log_content = result_new['data'][0]['stepAnalyseResult'][0][
        'ipLogContent'][0]['logContent']
    # ip = result_new['data'][0]['stepAnalyseResult'][0]['ipLogContent'][0]['ip']
    # print log_content
    CpuUtil.objects.create(log=log_content,
                           time=datetime.now(),
                           ip=result_new['data'][0]['stepAnalyseResult'][0]
                           ['ipLogContent'][0]['ip'],
                           userspace=float(log_content.split()[26]),
                           systemspace=float(log_content.split()[28]),
                           idle=float(log_content.split()[35]))

    return result_new
Exemplo n.º 25
0
 def get_access_token_from_esb(self):
     """
     从ESB获取access_token
     """
     client = get_client_by_user('admin')
     esb_result = client.esb.get_weixin_access_token({})
     return esb_result
Exemplo n.º 26
0
def get_monitor_detail():
    logger.error('开始')
    hosts = Host.objects.filter(is_deleted=False)
    host_list = [i.toDic() for i in hosts]
    ip_dic = {}
    for host in host_list:
        if host["app_id"] in ip_dic.keys():
            ip_dic[host["app_id"]].append({"ip": host['ip_address'], "bk_cloud_id": host["cloud_id"]})
        else:
            ip_dic[host["app_id"]] = []
            ip_dic[host["app_id"]].append({"ip": host['ip_address'], "bk_cloud_id": host["cloud_id"]})

    client = get_client_by_user("admin")
    script = """
    #!/bin/bash
    MEMORY=$(free -m | awk 'NR==2{printf "%.2f%%", $3*100/$2 }')
    DISK=$(df -h)
    CPU=$(top -bn1 | grep load | awk '{printf "%.2f%%", $(NF-2)}')
    echo -e "$MEMORY|$CPU|$DISK"
    """
    for biz_id in ip_dic.keys():
        check_obj = {'app_id': biz_id, 'ip_list': ip_dic[biz_id]}
        result = fast_execute_script(check_obj, client, "admin", 'root', script)
        if result["result"]:
            time.sleep(5)
            detail = get_info_by_jobid(biz_id, result["data"])
            logger.error(detail)
            if detail["result"]:
                sync_detail(detail["data"])
Exemplo n.º 27
0
def search_hosts(request):
    try:
        request_data = json.loads(request.body)
        set_id = request_data['set_id']
        app_id = request_data['app_id']
        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":
                "set",
                "fields": [
                    "default",
                    "bk_set_id",
                    "bk_set_name",
                ],
                # 根据业务ID查询主机
                "condition": [{
                    "field": "bk_set_id",
                    "operator": "$eq",
                    "value": int(set_id)
                }]
            }]
        }
        result = client.cc.search_host(kwargs)
        host_list = []
        if result["result"]:
            for i in result['data']['info']:
                host_list.append({
                    'host_ip':
                    i['host']['bk_host_innerip'],
                    'host_name':
                    i['host']['bk_host_name'],
                    'server_name':
                    i['host']['bk_host_name'],
                    'app_id':
                    app_id,
                    'bk_cloud_name':
                    i['host']['bk_cloud_id'][0]['bk_inst_name'],
                    'bk_cloud_id':
                    i['host']['bk_cloud_id'][0]['bk_inst_id'],
                    'os_type':
                    os_type[i['host']['bk_os_type']]
                    if i['host']['bk_os_type'] else '',
                    'bk_os_name':
                    i['host']['bk_os_name']
                })
        return render_json({"result": True, "data": host_list})
    except Exception as e:
        logger.error(e)
Exemplo n.º 28
0
def async_task(bk_biz_id):
    """
    定义一个 celery 异步任务
    """
    # 创建操作记录
    client = get_client_by_user('dingyu')
    client.set_bk_api_ver('v2')
    kwargs = {"bk_biz_id": bk_biz_id, "bk_job_id": 1019}
    res = client.job.execute_job(kwargs)
    task_id = res.get('data').get('job_instance_id')
    while not client.job.get_job_instance_status({
            'bk_biz_id': bk_biz_id,
            'job_instance_id': task_id,
    }).get('data').get('is_finished'):
        print 'waiting job finished...'
        time.sleep(1.2)

    res = client.job.get_job_instance_log({
        'bk_biz_id': bk_biz_id,
        'job_instance_id': task_id
    })

    log_content = res['data'][0]['step_results'][0]['ip_logs'][0][
        'log_content']
    check_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
    OptLog.objects.create(
        operator='dingyu',
        bk_biz_id=bk_biz_id,
        bk_job_id=task_id,
        opt_at=check_time,
        host_list=res['data'][0]['step_results'][0]['ip_logs'][0]['ip'],
        job_status=res['data'][0]['status'],
        job_content=log_content)
Exemplo n.º 29
0
def search_inst_detail(request):
    try:
        client = get_client_by_user(request.user.username)
        param = {
            "bk_app_code": APP_ID,
            "bk_app_secret": APP_TOKEN,
            "bk_username": '******',
            "bk_obj_id": "mssql",
            "page": {
                "start": 0,
                "limit": 0,
                "sort": "-bk_inst_id"
            },
            "fields": {},
            "condition": {
                'bk_inst_name': 'mssql-192.168.169.22'
            }
        }
        result = client.cc.search_inst_by_object(param)
        inst_data = {}
        if result['result']:
            inst_data = {'inst_id': result['data']['info'][0]['bk_inst_id']}
        return render_json({'result': True, 'data': inst_data})
    except Exception as e:
        logger.error(e)
Exemplo n.º 30
0
    def execute_platform_task(self, bk_token, kwargs):
        '''
        启动平台作业
        '''

        task_inst_id = task_inst_name = ''
        try:
            logger.info(u'job.execute_platform_task->kwargs: %s' % kwargs)
            # client = get_client_by_bk_token(bk_token)
            ##########将执行job作业的用户改为
            client = get_client_by_user('admin')
            res = client.job.execute_platform_task(**kwargs)
            logger.info(u'job.execute_platform_task->res: %s' % res)
            if res.get('result', False):
                code, result = 0, True  # ijobs接口调用成功
                data = res.get('data', {})
                task_inst_id = data.get('taskInstanceId')
                task_inst_name = data.get('taskInstanceName')
                message = u'作业启动成功.'
            else:
                code, result = -1, False  # ijobs接口调用失败
                message = u'作业启动失败: %s' % res.get('message')
                logger.error(message)
        except Exception, e:
            code, result = -10000, False  # 接口调用异常
            message = u'作业启动异常: %s' % e
            logger.error(message)