Esempio n. 1
0
def save_scene_record_view(request):
    if request.method != "POST":
        return public.fail_result_http(u"Only support POST!")
    else:
        data = json.loads(request.body)
        if data.get('id'):
            data['modify_by'] = public.get_user_mail(request)
        else:
            data["creator"] = public.get_user_mail(request)
        ret = utils.save_scene_record(data)
        return public.success_result_http(ret)
Esempio n. 2
0
def bind_api_tag_view(request):
    if request.method == "POST":
        data = json.loads(request.body)
        data["user"] = public.get_user_mail(request)
        utils.bind_api_tag(data)
        return public.success_result_http()
    else:
        return public.fail_result_http("Only Post!")
Esempio n. 3
0
def save_api_view(request):
    if request.method != "POST":
        return public.fail_result_http(u"Only support POST!")
    else:
        data = json.loads(request.body)
        data["creator"] = public.get_user_mail(request)
        ret = utils.save_api(data)
        return public.success_result_http(ret)
Esempio n. 4
0
def save_job_view(request):
    if request.method == "POST":
        data = json.loads(request.body)
        data["user"] = public.get_user_mail(request)
        ret = utils.save_job(data)
        if ret:
            return public.fail_result_http(ret)
        return public.success_result_http()
    else:
        return public.fail_result_http("POST Only!")
Esempio n. 5
0
def save_job_view(request):
    if request.method == "POST":
        data = json.loads(request.body)
        data["user"] = public.get_user_mail(request)
        ret = utils.save_job(data)
        if ret:
            return public.fail_result_http(ret)
        return public.success_result_http()
    else:
        return public.fail_result_http("POST Only!")
Esempio n. 6
0
def save_module_job(request):
    '''
    {
        "module_id":1,
        "name":"test1",
        "type":1,
        "scene":"",
        "desc":"xxxx",
        "job_detail":{
            "description":"just a test",
            "command":"ls -l",
            "params":[
                {
                    "name":"branch_num",
                    "description":"just a test",
                    "default_value":"trunk"
                },
                {
                    "name":"version",
                    "description":"121212",
                    "default_value":""
                }
            ]
        }
    }
    '''
    data = json.loads(request.body)
    module_id = data.get("module_id")
    if not module_id:
        return None
    id = data.get("id")
    json_data = {}
    module = models.Module.objects.get(id=module_id)
    json_data["view_name"] = module.name
    json_data["job_name"] = "%s-%s" % (module.name,
                                       time.strftime("%y%m%d%H%M%S"))
    json_data["job_detail"] = data.get("job_detail")
    j = Jenkins()
    if id:
        job = models.Job.objects.get(id=id)
        old_name = job.jenkins_name
        if old_name:
            j.delete_job(old_name)
    else:
        job = models.Job()
    j.create_view_job(json_data, "JOB_CONFIG_XML", request)
    job.module_id = module_id
    job.name = data.get("name")
    job.jenkins_name = json_data.get("job_name")
    job.type = data.get("type")
    job.scene = data.get("scene")
    job.desc = data.get("desc")
    job.user = public.get_user_mail(request)
    job.job_detail = json.dumps(data.get("job_detail"))
    job.save()
Esempio n. 7
0
def get_user_view(request):
    data = {}
    work_id = int(request.GET.get("work_id")) if request.GET.get("work_id") else 0
    data["work_id"] = work_id
    data["q"] = request.GET.get("q", "")
    data["flag"] = request.GET.get("flag", "")
    data["page_current"] = request.GET.get("page_current", 1)
    ret = data
    ret["user"] = utils.get_user_info(data)
    ret["auth"] = utils.check_auth(public.get_user_mail(request), work_id)
    return render(request, 'user_info.html', {'data': ret})
Esempio n. 8
0
def save_module_job(request):
    '''
    {
        "module_id":1,
        "name":"test1",
        "type":1,
        "scene":"",
        "desc":"xxxx",
        "job_detail":{
            "description":"just a test",
            "command":"ls -l",
            "params":[
                {
                    "name":"branch_num",
                    "description":"just a test",
                    "default_value":"trunk"
                },
                {
                    "name":"version",
                    "description":"121212",
                    "default_value":""
                }
            ]
        }
    }
    '''
    data = json.loads(request.body)
    module_id = data.get("module_id")
    if not module_id:
        return None
    id = data.get("id")
    json_data = {}
    module = models.Module.objects.get(id=module_id)
    json_data["view_name"] = module.name
    json_data["job_name"] = "%s-%s" % (module.name, time.strftime("%y%m%d%H%M%S"))
    json_data["job_detail"] = data.get("job_detail")
    j = Jenkins()
    if id:
        job = models.Job.objects.get(id=id)
        old_name = job.jenkins_name
        if old_name:
            j.delete_job(old_name)
    else:
        job = models.Job()
    j.create_view_job(json_data, "JOB_CONFIG_XML", request)
    job.module_id = module_id
    job.name = data.get("name")
    job.jenkins_name = json_data.get("job_name")
    job.type = data.get("type")
    job.scene = data.get("scene")
    job.desc = data.get("desc")
    job.user = public.get_user_mail(request)
    job.job_detail = json.dumps(data.get("job_detail"))
    job.save()
Esempio n. 9
0
def get_user_view(request):
    data = {}
    work_id = int(
        request.GET.get("work_id")) if request.GET.get("work_id") else 0
    data["work_id"] = work_id
    data["q"] = request.GET.get("q", "")
    data["flag"] = request.GET.get("flag", "")
    data["page_current"] = request.GET.get("page_current", 1)
    ret = data
    ret["user"] = utils.get_user_info(data)
    ret["auth"] = utils.check_auth(public.get_user_mail(request), work_id)
    return render(request, 'user_info.html', {'data': ret})
Esempio n. 10
0
def start_task(request):
    data = json.loads(request.body)
    task_id = data.get("task_id")
    sheet_id = data.get("sheet_id", "")
    run_type = data.get("run_type", public.RUN_TYPE_DEBUG)
    if not task_id:
        return "task_id is not exits!"
    task = models.Task.objects.get(id=task_id)
    subtask = models.SubTask.objects.filter(task_id=task_id, is_start=True)
    module_id = task.module_id
    task_record = models.TaskRecord()
    task_record.task_id = task_id
    task_record.module_id = module_id
    if len(subtask):
        task_record.status = public.STATUS_RUNNING
    else:
        task_record.status = public.STATUS_FAIL
    options = model_to_dict(task)
    options["other"] = data
    options["runner"] = public.get_user_mail(request)
    task_record.options = json.dumps(options)
    if run_type == public.RUN_TYPE_AUTO:
        task_record.sheet_id = data.get("sn")
    else:
        task_record.sheet_id = sheet_id
    task_record.run_type = run_type
    task_record.save()
    task_record_id = task_record.id
    for sub in subtask:
        param = {}
        param["task_record_id"] = task_record_id
        param["task_id"] = task_id
        param["module_id"] = module_id
        param["subtask_id"] = sub.id
        param["is_start"] = sub.is_start
        param["user"] = public.get_user_mail(request)
        param["options"] = json.dumps(model_to_dict(sub))
        param["run_params"] = data.get("run_params", [])
        create_sub_task_record(param)
Esempio n. 11
0
def start_task(request):
    data = json.loads(request.body)
    task_id = data.get("task_id")
    sheet_id = data.get("sheet_id", "")
    run_type = data.get("run_type", public.RUN_TYPE_DEBUG)
    if not task_id:
        return "task_id is not exits!"
    task = models.Task.objects.get(id=task_id)
    subtask = models.SubTask.objects.filter(task_id=task_id, is_start=True)
    module_id = task.module_id
    task_record = models.TaskRecord()
    task_record.task_id = task_id
    task_record.module_id = module_id
    if len(subtask):
        task_record.status = public.STATUS_RUNNING
    else:
        task_record.status = public.STATUS_FAIL
    options = model_to_dict(task)
    options["other"] = data
    options["runner"] = public.get_user_mail(request)
    task_record.options = json.dumps(options)
    if run_type == public.RUN_TYPE_AUTO:
        task_record.sheet_id = data.get("sn")
    else:
        task_record.sheet_id = sheet_id
    task_record.run_type = run_type
    task_record.save()
    task_record_id = task_record.id
    for sub in subtask:
        param = {}
        param["task_record_id"] = task_record_id
        param["task_id"] = task_id
        param["module_id"] = module_id
        param["subtask_id"] = sub.id
        param["is_start"] = sub.is_start
        param["user"] = public.get_user_mail(request)
        param["options"] = json.dumps(model_to_dict(sub))
        param["run_params"] = data.get("run_params", [])
        create_sub_task_record(param)
Esempio n. 12
0
def save_resource_view(request):
    if request.method != "POST":
        return public.fail_result_http(u"Only support POST!")
    else:
        body = request.POST
        data = {}
        if body.get("id"):
            data["id"] = body.get("id")
        data["name"] = body.get("name")
        data["desc"] = body.get("desc")
        data["creator"] = public.get_user_mail(request)
        utils.save_resource(data)
        return redirect("/assess_mgr/resource")
Esempio n. 13
0
def save_task(request):
    data = json.loads(request.body)
    id = data.get("id")
    if id:
        task = models.Task.objects.get(id=id)
    else:
        task = models.Task()
    task.name = data.get("name")
    task.module_id = data.get("module_id")
    task.desc = data.get("desc")
    task.type = data.get("type")
    task.user = public.get_user_mail(request)
    task.save()

    svn_list = data.get("svn_list") if data.get("svn_list") else []
    if not isinstance(svn_list, list):
        svn_list = [svn_list]
    param = {}
    param["task_id"] = task.id
    param["svn_list"] = svn_list
    param["timer"] = data.get("timer")
    param["user"] = public.get_user_mail(request)
    save_task_trigger_job(param)
Esempio n. 14
0
def post_api_view(request):
    if request.method != "POST":
        return public.fail_result_http(u"Only support POST!")
    else:
        data = {}
        module_id = request.POST.get("module_id")
        data["module_id"] = module_id
        data["name"] = request.POST.get("name")
        data["desc"] = request.POST.get("desc")
        data["creator"] = public.get_user_mail(request)
        if request.POST.get("id"):
            data["id"] = request.POST.get("id")
        utils.save_api(data)
        return redirect("/assess_mgr/module_api?id=" + module_id)
Esempio n. 15
0
def save_task(request):
    data = json.loads(request.body)
    id = data.get("id")
    if id:
        task = models.Task.objects.get(id=id)
    else:
        task = models.Task()
    task.name = data.get("name")
    task.module_id = data.get("module_id")
    task.desc = data.get("desc")
    task.type = data.get("type")
    task.user = public.get_user_mail(request)
    task.save()

    svn_list = data.get("svn_list") if data.get("svn_list") else []
    if not isinstance(svn_list, list):
        svn_list = [svn_list]
    param = {}
    param["task_id"] = task.id
    param["svn_list"] = svn_list
    param["timer"] = data.get("timer")
    param["user"] = public.get_user_mail(request)
    save_task_trigger_job(param)
Esempio n. 16
0
def save_job_reason(request):
    data = json.loads(request.body)
    id = data.get("id")
    reason = data.get("reason")
    fail_type = data.get("fail_type")
    status = data.get("status")
    user = public.get_user_mail(request)
    if status:
        models.JobRecord.objects.filter(id=id).update(reason=reason, user=user, fail_type=fail_type, status=status)
        job_record = models.JobRecord.objects.get(id=id)
        task_status = get_task_record_status(job_record.task_record_id)
        sub_status = get_sub_task_record_status(job_record.subtask_record_id)
        models.TaskRecord.objects.filter(id=job_record.task_record_id).update(status=task_status)
        models.SubTaskRecord.objects.filter(id=job_record.subtask_record_id).update(status=sub_status)
    else:
        models.JobRecord.objects.filter(id=id).update(reason=reason, user=user, fail_type=fail_type)
Esempio n. 17
0
def save_job_reason(request):
    data = json.loads(request.body)
    id = data.get("id")
    reason = data.get("reason")
    fail_type = data.get("fail_type")
    status = data.get("status")
    user = public.get_user_mail(request)
    if status:
        models.JobRecord.objects.filter(id=id).update(reason=reason,
                                                      user=user,
                                                      fail_type=fail_type,
                                                      status=status)
        job_record = models.JobRecord.objects.get(id=id)
        task_status = get_task_record_status(job_record.task_record_id)
        sub_status = get_sub_task_record_status(job_record.subtask_record_id)
        models.TaskRecord.objects.filter(id=job_record.task_record_id).update(
            status=task_status)
        models.SubTaskRecord.objects.filter(
            id=job_record.subtask_record_id).update(status=sub_status)
    else:
        models.JobRecord.objects.filter(id=id).update(reason=reason,
                                                      user=user,
                                                      fail_type=fail_type)
Esempio n. 18
0
def save_sub_task(request):
    data = json.loads(request.body)
    task_id = data.get("task_id") if data.get("task_id") else 0
    id = int(data.get("id")) if data.get("id") else 0
    pre_id = int(data.get("pre")) if data.get("pre") else 0
    is_start = int(data.get("is_start")) if data.get("is_start") else 0
    if not task_id:
        return u"task_id不存在"
    sub_tasks = models.SubTask.objects.filter(task_id=task_id)
    if id:
        sub_task = sub_tasks.get(id=id)
        if pre_id == id and id != 0:
            return u"不可以将自己设为前置子任务"
    else:
        sub_task = models.SubTask()

    if is_start != 0:
        sub_task.is_start = True
        sub_task.pre = 0
    else:
        sub_task.is_start = False
        sub_task.pre = pre_id
    sub_task.name = data.get("name")
    sub_task.task_id = task_id
    sub_task.type = data.get("type") if data.get("type") else 0
    sub_task.desc = data.get("desc")
    sub_task.user = public.get_user_mail(request)
    sub_task.save()
    sub_tasks.filter(next=sub_task.id).update(next=0)
    if pre_id and False == sub_task.is_start:
        sub_tasks.filter(id=pre_id).update(next=sub_task.id)
    if is_start:
        start_sub = sub_tasks.exclude(id=sub_task.id).filter(is_start=True)
        if start_sub:
            sub_task.next = start_sub[0].id
            sub_task.save()
        start_sub.update(pre=sub_task.id, is_start=False)
Esempio n. 19
0
def save_sub_task(request):
    data = json.loads(request.body)
    task_id = data.get("task_id") if data.get("task_id") else 0
    id = int(data.get("id")) if data.get("id") else 0
    pre_id = int(data.get("pre")) if data.get("pre") else 0
    is_start = int(data.get("is_start")) if data.get("is_start") else 0
    if not task_id:
        return u"task_id不存在"
    sub_tasks = models.SubTask.objects.filter(task_id=task_id)
    if id:
        sub_task = sub_tasks.get(id=id)
        if pre_id == id and id != 0:
            return u"不可以将自己设为前置子任务"
    else:
        sub_task = models.SubTask()

    if is_start != 0:
        sub_task.is_start = True
        sub_task.pre = 0
    else:
        sub_task.is_start = False
        sub_task.pre = pre_id
    sub_task.name = data.get("name")
    sub_task.task_id = task_id
    sub_task.type = data.get("type") if data.get("type") else 0
    sub_task.desc = data.get("desc")
    sub_task.user = public.get_user_mail(request)
    sub_task.save()
    sub_tasks.filter(next=sub_task.id).update(next=0)
    if pre_id and False == sub_task.is_start:
        sub_tasks.filter(id=pre_id).update(next=sub_task.id)
    if is_start:
        start_sub = sub_tasks.exclude(id=sub_task.id).filter(is_start=True)
        if start_sub:
            sub_task.next = start_sub[0].id
            sub_task.save()
        start_sub.update(pre=sub_task.id, is_start=False)
Esempio n. 20
0
def get_public(request):
    ret = {}
    ret["module_list"] = get_module()
    ret["auth"] = web_utlis.check_auth(public.get_user_mail(request),
                                       public.WORK_ASSESS)
    return ret
Esempio n. 21
0
def jenkins_view(request):
    public_date = data_utils.get_public(request)
    group_id = public_date.get('group_id')
    # 默认 newlab
    name = "agile"
    ret = {}
    """
    ret['version'] = data_utils.get_seal_or_newlab_version()
    """
    ret['biz_version'] = data_utils.get_seal_or_newlab_version('biz')
    ret['shanghaife_version'] = data_utils.get_seal_or_newlab_version(
        'shanghaife')

    ret['online'] = []

    ret['data'] = {}
    ret['data']['jobs'] = []

    content = data_utils.get_online_package()

    collection_job = data_utils.get_collection(request)
    job_list = []
    for job in collection_job:
        job_list.append(job.get("id"))
    if int(group_id) == 0:  # others
        group_job = data_utils.get_jobs_not_group()
    elif int(group_id) == -1:
        group_job = collection_job
    else:
        group_job = data_utils.get_group_jobs(group_id)

    for i in group_job:
        if i["id"] in job_list:
            i["collection"] = 1
        if i['name'].startswith("newlabs_"):
            tmp_job_name = i['name']
            i['jobname'] = tmp_job_name
            i['name'] = i['name'][8:]

            # get specific info
            job = data_utils.JenkinsInfo(name=name, job=tmp_job_name)
            if job.get_status() == False:
                continue
            this_ret = job.get_ret()

            if not this_ret.get('lastBuild'):
                this_ret['lastBuild'] = {}

            i['url'] = this_ret.get('url')
            # get seald version info and operator
            this_oper_info = data_utils.get_latest_job_record(i['jobname'])
            i['sealed_version'] = this_oper_info['sealed_version']
            online_info = data_utils.get_latest_online_version(
                content, i['jobname'])

            if online_info != False:
                i['has_online_version'] = True
                i['online_version'] = online_info

                tmp_dict = {}
                tmp_dict['jobname'] = i['jobname']
                tmp_dict['online_version'] = online_info
                ret['online'].append(tmp_dict)
            else:
                i['has_online_version'] = False

            i['newlab_version'] = this_oper_info['newlab_version']
            i['user'] = this_oper_info['user']

            if this_ret['color'] == 'blue':
                i['lastbuild_status'] = 'success'
            elif this_ret['color'] == 'disabled':
                i['lastbuild_status'] = 'disabled'
            elif this_ret['color'] == 'notbuilt':
                i['lastbuild_status'] = 'notbuilt'
            elif this_ret['color'].find('anime'):
                i['lastbuild_status'] = 'building'
            else:
                i['lastbuild_status'] = 'fail'

            if 'number' in this_ret['lastBuild']:
                i['lastBuild'] = this_ret['lastBuild']['number']
            else:
                i['lastBuild'] = ""

            if 'url' in this_ret['lastBuild']:
                i['lastBuild_console'] = this_ret['lastBuild'][
                    'url'] + 'console'
                i['lastBuild_consoleText'] = this_ret['lastBuild'][
                    'url'] + 'consoleText'
            else:
                i['lastBuild_console'] = ''
                i['lastBuild_consoleText'] = ''

            i['view'] = name
            i['buildable'] = this_ret['buildable']
            i['trigger_url'] = "http://jenkins.meiliworks.com/view/" + name + "/job/" + tmp_job_name + "/build?delay=0sec"

            if len(this_ret['property']) != 1:
                # 需要参数  目前支持1个参数

                this_param_info = this_ret['property'][1][
                    'parameterDefinitions'][0]
                i['trigger_param'] = this_param_info['name']
                i['trigger_param_description'] = this_param_info['description']
                tmp_default_param = {}
                tmp_default_param[this_param_info["defaultParameterValue"][
                    'name'].encode("utf-8")] = this_param_info[
                        "defaultParameterValue"]['value'].encode("utf-8")
                i['trigger_default_param'] = json.dumps(tmp_default_param)
                """
                # 支持多参数
                i['trigger_param'] = []
                i['trigger_param_description'] = []
                i['trigger_default_param'] = []
                this_param_info_array = this_ret['property'][1]['parameterDefinitions']
                for this_param_info in this_param_info_array:
                    i['trigger_param'].append(this_param_info['name'])
                    i['trigger_param_description'].append(this_param_info['description'])
                    tmp_default_param = {}
                    tmp_default_param[this_param_info["defaultParameterValue"]['name'].encode("utf-8")] = this_param_info["defaultParameterValue"]['value'].encode("utf-8")
                    i['trigger_default_param'].append(json.dumps(tmp_default_param))
                """
            else:
                # 不需要参数, 都设成 ‘none’ 供前端判断
                i['trigger_param'] = 'none'
                i['trigger_default_param'] = 'none'

            # add classification
            ret['data']['jobs'].append(i)

    #获取用户权限信息
    ret["data"]["public"] = public_date
    ret["auth"] = utils.check_auth(public.get_user_mail(request),
                                   public.WORK_PRE_LAUNCH)
    return render(request, "jenkinsnew.html", ret)
Esempio n. 22
0
def get_public(request):
    ret = {}
    ret["module_list"] = get_module()
    ret["auth"] = web_utlis.check_auth(public.get_user_mail(request), public.WORK_ASSESS)
    return ret
Esempio n. 23
0
def jenkins_trigger(request):
    """
    :author: yechengzhou
    :param request: contains trigger para
    :return:
    """
    if request.method != "POST":
        return public.fail_result_http(u"该接口只支持POST")
    else:
        """
        data is a json
        {
            "name" : "branch_name",
            "value" : "lab1:172.16.7.201"
        }
        """
        """
        # 添加用户操作记录
        this_option = models.JenkinsUser()
        this_option.type = 2
        tmp_arr = request.REQUEST['url'].split("/")
        this_option.jobname = tmp_arr[tmp_arr.index('job') + 1]
        this_option.viewname = "newlab"
        this_option.optiontime = public.str2datetime(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())), "%Y-%m-%d %H:%M:%S")
        # get user info
        user_info = web_utils.get_user_cookie(request)
        this_option.mail = user_info['mail']
"""
        user_dict = {}
        user_dict['usermail'] = public.get_user_mail(request)


        this_request_dict = dict(request.REQUEST)

        if "url" in request.REQUEST:
            if request.REQUEST.get('daily') == "merge":
                # 对 biz shanghaife 做特殊处理
                if 'biz' in request.REQUEST['url'] or 'shanghaife' in request.REQUEST['url']:
                    module_name = request.REQUEST['branch_num']
                    # get latest sealed version
                    #get jobname from url
                    this_url = request.REQUEST['url']
                    job_name = this_url[this_url.find("/job/") + 5 : this_url.find("/build?")]
                    job_name = job_name + "_" + request.REQUEST['branch_num']
                    this_record = utils.get_latest_job_record(job_name,True)



                    if this_record['sealed_version'] == 'unknown':
                        return public.fail_result_http(u'此模块没有封板信息,不能合入')

                    this_request_dict['branch_num'] = this_record['sealed_version']

                else:
                    this_url = request.REQUEST['url']
                    job_name = this_url[this_url.find("/job/") + 5 : this_url.find("/build?")]
                    this_record = utils.get_latest_job_record(job_name)
                    if this_record['sealed_version'] == 'unknown':
                            return public.fail_result_http(u'此模块没有封板信息,不能合入')

            JT = utils.JenkinsTrigger(this_request_dict['url'],this_request_dict,user_dict)
            if JT.trigger():
                return public.success_result_http()
            else:
                return public.fail_result_http(u"jenkins触发有错误")
        else:
            return public.fail_result_http(u"缺少触发url")
Esempio n. 24
0
def jenkins_view(request):
    public_date = data_utils.get_public(request)
    group_id = public_date.get('group_id')
    # 默认 newlab
    name = "agile"
    ret = {}
    """
    ret['version'] = data_utils.get_seal_or_newlab_version()
    """
    ret['biz_version'] = data_utils.get_seal_or_newlab_version('biz')
    ret['shanghaife_version'] = data_utils.get_seal_or_newlab_version('shanghaife')

    ret['online'] = []

    ret['data'] = {}
    ret['data']['jobs'] = []

    content = data_utils.get_online_package()

    collection_job = data_utils.get_collection(request)
    job_list = []
    for job in collection_job:
        job_list.append(job.get("id"))
    if int(group_id) == 0:  # others
        group_job = data_utils.get_jobs_not_group()
    elif int(group_id) == -1:
        group_job = collection_job
    else:
        group_job = data_utils.get_group_jobs(group_id)

    for i in group_job:
        if i["id"] in job_list:
            i["collection"] = 1
        if i['name'].startswith("newlabs_"):
            tmp_job_name = i['name']
            i['jobname'] = tmp_job_name
            i['name'] = i['name'][8:]

            # get specific info
            job = data_utils.JenkinsInfo(name=name, job = tmp_job_name)
            if job.get_status() == False:
                continue
            this_ret = job.get_ret()

            if not this_ret.get('lastBuild'):
                this_ret['lastBuild'] = {}

            i['url'] = this_ret.get('url')
            # get seald version info and operator
            this_oper_info = data_utils.get_latest_job_record(i['jobname'])
            i['sealed_version'] = this_oper_info['sealed_version']
            online_info = data_utils.get_latest_online_version(content, i['jobname'])


            if online_info != False:
                i['has_online_version'] = True
                i['online_version'] = online_info

                tmp_dict = {}
                tmp_dict['jobname'] = i['jobname']
                tmp_dict['online_version'] = online_info
                ret['online'].append(tmp_dict)
            else:
                i['has_online_version'] = False

            i['newlab_version'] = this_oper_info['newlab_version']
            i['user'] = this_oper_info['user']

            if this_ret['color'] == 'blue':
                i['lastbuild_status'] = 'success'
            elif this_ret['color'] == 'disabled':
                i['lastbuild_status'] ='disabled'
            elif this_ret['color'] == 'notbuilt':
                i['lastbuild_status'] ='notbuilt'
            elif this_ret['color'].find('anime'):
                i['lastbuild_status'] ='building'
            else:
                i['lastbuild_status'] = 'fail'


            if 'number' in this_ret['lastBuild']:
                i['lastBuild'] = this_ret['lastBuild']['number']
            else:
                i['lastBuild'] = ""

            if 'url' in this_ret['lastBuild']:
                i['lastBuild_console'] = this_ret['lastBuild']['url'] + 'console'
                i['lastBuild_consoleText'] = this_ret['lastBuild']['url'] + 'consoleText'
            else:
                i['lastBuild_console'] = ''
                i['lastBuild_consoleText'] = ''

            i['view'] = name
            i['buildable'] = this_ret['buildable']
            i['trigger_url'] = "http://jenkins.meiliworks.com/view/" + name + "/job/" + tmp_job_name + "/build?delay=0sec"

            if len(this_ret['property']) != 1:
                # 需要参数  目前支持1个参数

                this_param_info = this_ret['property'][1]['parameterDefinitions'][0]
                i['trigger_param'] = this_param_info['name']
                i['trigger_param_description'] = this_param_info['description']
                tmp_default_param = {}
                tmp_default_param[this_param_info["defaultParameterValue"]['name'].encode("utf-8")] = this_param_info["defaultParameterValue"]['value'].encode("utf-8")
                i['trigger_default_param'] = json.dumps(tmp_default_param)
                """
                # 支持多参数
                i['trigger_param'] = []
                i['trigger_param_description'] = []
                i['trigger_default_param'] = []
                this_param_info_array = this_ret['property'][1]['parameterDefinitions']
                for this_param_info in this_param_info_array:
                    i['trigger_param'].append(this_param_info['name'])
                    i['trigger_param_description'].append(this_param_info['description'])
                    tmp_default_param = {}
                    tmp_default_param[this_param_info["defaultParameterValue"]['name'].encode("utf-8")] = this_param_info["defaultParameterValue"]['value'].encode("utf-8")
                    i['trigger_default_param'].append(json.dumps(tmp_default_param))
                """
            else:
                # 不需要参数, 都设成 ‘none’ 供前端判断
                i['trigger_param' ] = 'none'
                i['trigger_default_param'] = 'none'

            # add classification
            ret['data']['jobs'].append(i)


    #获取用户权限信息
    ret["data"]["public"] = public_date
    ret["auth"] = utils.check_auth(public.get_user_mail(request), public.WORK_PRE_LAUNCH)
    return render(request,"jenkinsnew.html", ret)
Esempio n. 25
0
def jenkins_trigger(request):
    """
    :author: yechengzhou
    :param request: contains trigger para
    :return:
    """
    if request.method != "POST":
        return public.fail_result_http(u"该接口只支持POST")
    else:
        """
        data is a json
        {
            "name" : "branch_name",
            "value" : "lab1:172.16.7.201"
        }
        """
        """
        # 添加用户操作记录
        this_option = models.JenkinsUser()
        this_option.type = 2
        tmp_arr = request.REQUEST['url'].split("/")
        this_option.jobname = tmp_arr[tmp_arr.index('job') + 1]
        this_option.viewname = "newlab"
        this_option.optiontime = public.str2datetime(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())), "%Y-%m-%d %H:%M:%S")
        # get user info
        user_info = web_utils.get_user_cookie(request)
        this_option.mail = user_info['mail']
"""
        user_dict = {}
        user_dict['usermail'] = public.get_user_mail(request)

        this_request_dict = dict(request.REQUEST)

        if "url" in request.REQUEST:
            if request.REQUEST.get('daily') == "merge":
                # 对 biz shanghaife 做特殊处理
                if 'biz' in request.REQUEST[
                        'url'] or 'shanghaife' in request.REQUEST['url']:
                    module_name = request.REQUEST['branch_num']
                    # get latest sealed version
                    #get jobname from url
                    this_url = request.REQUEST['url']
                    job_name = this_url[this_url.find("/job/") +
                                        5:this_url.find("/build?")]
                    job_name = job_name + "_" + request.REQUEST['branch_num']
                    this_record = utils.get_latest_job_record(job_name, True)

                    if this_record['sealed_version'] == 'unknown':
                        return public.fail_result_http(u'此模块没有封板信息,不能合入')

                    this_request_dict['branch_num'] = this_record[
                        'sealed_version']

                else:
                    this_url = request.REQUEST['url']
                    job_name = this_url[this_url.find("/job/") +
                                        5:this_url.find("/build?")]
                    this_record = utils.get_latest_job_record(job_name)
                    if this_record['sealed_version'] == 'unknown':
                        return public.fail_result_http(u'此模块没有封板信息,不能合入')

            JT = utils.JenkinsTrigger(this_request_dict['url'],
                                      this_request_dict, user_dict)
            if JT.trigger():
                return public.success_result_http()
            else:
                return public.fail_result_http(u"jenkins触发有错误")
        else:
            return public.fail_result_http(u"缺少触发url")