def set_algo_view(request): if request.method != "POST": return public.fail_result_http(u"POST only") data = json.loads(request.body) x = data.get("x") y = data.get("y") module = data.get("module_id") scene = data.get("scene_id") resource_name = data.get("resource") if len(utils.get_resource_by_name(resource_name)): resource_id = utils.get_resource_by_name(resource_name).get('id') else: print 'get resource id failed' record_id = data.get("id") if not (x and y and module and scene): return public.fail_result_http(u"module, scence, X, Y should not be NONE") ret = algo.set_algo_info(module, scene , resource_name, x, y) # save formula info tmp = {} tmp['a'] = ret.get('a') tmp['b'] = ret.get('b') this_formula = {} this_formula['resource_id'] = resource_id if resource_id else 0 this_formula['record_id'] = record_id this_formula['formula'] = json.dumps(tmp) utils.save_formula(this_formula) if type(ret) == type(""): return public.fail_result_http(ret) return public.success_result_http(ret)
def jenkins_info(request): """ :author: yechengzhou :param request: :return: """ if request.method != "GET": return public.fail_result_http(u'该接口只支持GET') if 'name' in request.REQUEST: if 'job' in request.REQUEST: logging.debug('') job = utils.JenkinsInfo(name=request.REQUEST['name'], job=request.REQUEST['job']) if job.get_status(): return public.success_result_http(json.dumps(job.get_ret())) else: return public.fail_result_http(u'get jenkins info failed') else: view = utils.JenkinsInfo(name=request.REQUEST['name']) if view.get_status(): return public.success_result_http(json.dumps(view.get_ret())) else: return public.fail_result_http(u'get jenkins info failed') else: return public.fail_result_http(u"wrong argument")
def get_branch_svn_log(request): """ :author: yechengzhou :param request: request should contains branch name and module name :return: json format branch svn log """ if request.method != "GET": return public.fail_result_http(u"该接口只支持GET") else: module = request.GET.get('module') branch = request.GET.get('branch') type = request.GET.get('type') # 0 -- one day 1 -- last 10 if not (module and branch): return public.fail_result_http(u"参数错误") else: if type == '0' or type == None: if branch != "trunk": start = branch.split('_')[-2] start_time = public.str2datetime(start, "%Y%m%d") end_time = start_time + datetime.timedelta(days=1) end = public.datetime2str(end_time, "%Y%m%d") ret = utils.get_branch_svn_log(module,branch, start, end) else: ret = utils.get_branch_svn_log(module,branch) elif type == '1': ret = utils.get_branch_svn_log(module,branch ) return public.success_result_http(ret)
def get_build_status(request): if request.method != "GET": return public.fail_result_http(u"do not accept get method") else: job_name = request.REQUEST.get('name') view = request.REQUEST.get('view') # build = request.REQUEST.get('build') # 目前只有newlab if job_name and job_name != 'undefined' and not job_name.startswith( "newlabs"): job_name = "newlabs_" + job_name else: return public.fail_result_http('get job name failed') view = "agile" JB = utils.JenkinsInfo(view, job_name) build = JB.get_ret()['builds'][0]['number'] JI = utils.JenkinsInfo(view, job_name, str(build)) if JI.get_status(): if_building = JI.get_ret()['building'] if JI.get_ret()['result']: job_status = JI.get_ret()['result'].lower() else: job_status = 'fail' return public.success_result_http({ "status": job_status, 'building': if_building }) else: logging.error("Get Job Info Failed:" + str(request)) return public.fail_result_http('get job info failed')
def get_branch_svn_log(request): """ :author: yechengzhou :param request: request should contains branch name and module name :return: json format branch svn log """ if request.method != "GET": return public.fail_result_http(u"该接口只支持GET") else: module = request.GET.get('module') branch = request.GET.get('branch') type = request.GET.get('type') # 0 -- one day 1 -- last 10 if not (module and branch): return public.fail_result_http(u"参数错误") else: if type == '0' or type == None: if branch != "trunk": start = branch.split('_')[-2] start_time = public.str2datetime(start, "%Y%m%d") end_time = start_time + datetime.timedelta(days=1) end = public.datetime2str(end_time, "%Y%m%d") ret = utils.get_branch_svn_log(module, branch, start, end) else: ret = utils.get_branch_svn_log(module, branch) elif type == '1': ret = utils.get_branch_svn_log(module, branch) return public.success_result_http(ret)
def get_build_status(request): if request.method != "GET": return public.fail_result_http(u"do not accept get method") else: job_name = request.REQUEST.get('name') view = request.REQUEST.get('view') # build = request.REQUEST.get('build') # 目前只有newlab if job_name and job_name != 'undefined' and not job_name.startswith("newlabs"): job_name = "newlabs_" + job_name else: return public.fail_result_http('get job name failed') view = "agile" JB = utils.JenkinsInfo(view, job_name) build = JB.get_ret()['builds'][0]['number'] JI = utils.JenkinsInfo(view, job_name, str(build)) if JI.get_status(): if_building = JI.get_ret()['building'] if JI.get_ret()['result']: job_status = JI.get_ret()['result'].lower() else: job_status = 'fail' return public.success_result_http({"status":job_status, 'building': if_building}) else: logging.error("Get Job Info Failed:" + str(request)) return public.fail_result_http('get job info failed')
def start_task_view(request): if request.method == "POST": ret = utils.start_task(request) if ret: return public.fail_result_http(ret) return public.success_result_http(ret) else: return public.fail_result_http("Only POST!")
def set_auth_view(request): if request.method != "POST": return public.fail_result_http(u"Only support POST!") else: ret = utils.set_auth(request) if ret: return public.fail_result_http(ret) return public.success_result_http(ret)
def rm_group_view(request): if request.method != "POST": return public.fail_result_http(u"Only support POST!") else: body = json.loads(request.body) ret = utils.rm_group(body.get("id")) if ret != True: return public.fail_result_http(ret) return public.success_result_http(ret)
def set_next_job_view(request): if request.method == "POST": data = json.loads(request.body) ret = utils.set_next_job(data) if ret: return public.fail_result_http(ret) return public.success_result_http() else: return public.fail_result_http("POST Only!")
def set_sub_task_job_order_view(request): if request.method == "POST": data = json.loads(request.body) ret = utils.set_sub_task_job_order(data) if ret: return public.fail_result_http(ret) return public.success_result_http(ret) else: return public.fail_result_http("Only POST!")
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!")
def delete_single_api_record(request): data = json.loads(request.body) public = utils.get_public(request) if public.get('auth').get('write') != 1: return public.fail_result_http('have no write right') if data.get('id'): ret = utils.delete_api_record(data.get('id')) return public.success_result_http(ret) else: return public.fail_result_http('id is empty')
def save_promotion_record_view(request): logger.debug(request) if request.method == "POST": data = json.loads(request.body) err = utils.save_promotion_record(data) if err: return public.fail_result_http(err, data) else: return public.fail_result_http(u"该接口只支持POST数据") return public.success_result_http()
def rm_job_view(request): if request.method == "POST": data = json.loads(request.body) id = data.get("id") ret = utils.rm_job(id) if ret: return public.fail_result_http(ret) return public.success_result_http() else: return public.fail_result_http("POST Only!")
def rm_task_view(request): if request.method == "POST": data = json.loads(request.body) id = data.get("id") ret = utils.rm_task(id) if ret: return public.fail_result_http(ret) return public.success_result_http() else: return public.fail_result_http("Only POST!")
def get_latest_online_version(request): if request.method != "GET": return public.fail_result_http(u'Only support GET') else: if request.REQUEST.get("jobname"): print "bingo",request.REQUEST.get("jobname") ret = utils.get_latest_online_version(request.REQUEST.get("jobname")) return public.success_result_http(ret) else: return public.fail_result_http(u'please provide jobname')
def jenkins_switch(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 { "on_off" : "branch_name", "url" : job url } """ """ # 添加用户操作记录 this_option = models.JenkinsUser() if request.REQUEST['on_off'] == "enable": this_option.type = 1 elif request.REQUEST['on_off'] == "disable": this_option.type = 0 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'] """ if request.REQUEST['on_off'] == "enable": type = 1 elif request.REQUEST['on_off'] == "disable": type = 0 if "url" in request.REQUEST and "on_off" in request.REQUEST: JT = utils.JenkinsJobSwitch(request.REQUEST['url'], request.REQUEST['on_off']) if JT.switch(): #this_option.save() this_info = {} this_info['view_name'] = 'agile' this_url = request.REQUEST.get('url') this_info['job_name'] = this_url[this_url.find("/job/") + 5:this_url.find("/build?")] this_info['type'] = type this_info['version'] = "" utils.save_job_record(request, this_info) return public.success_result_http() else: return public.fail_result_http(u"jenkins触发有错误") else: return public.fail_result_http(u"缺少触发参数,需要url和on_off")
def save_goback_information(request): #存储推送来的数据!-package_status if request.method == "POST": err = data_utils.save_goback_information() if err: return public.fail_result_http(err) else: err = data_utils.save_goback_information() if err: return public.fail_result_http(err) return public.success_result_http()
def get_latest_online_version(request): if request.method != "GET": return public.fail_result_http(u'Only support GET') else: if request.REQUEST.get("jobname"): print "bingo", request.REQUEST.get("jobname") ret = utils.get_latest_online_version( request.REQUEST.get("jobname")) return public.success_result_http(ret) else: return public.fail_result_http(u'please provide jobname')
def jenkins_switch(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 { "on_off" : "branch_name", "url" : job url } """ """ # 添加用户操作记录 this_option = models.JenkinsUser() if request.REQUEST['on_off'] == "enable": this_option.type = 1 elif request.REQUEST['on_off'] == "disable": this_option.type = 0 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'] """ if request.REQUEST['on_off'] == "enable": type = 1 elif request.REQUEST['on_off'] == "disable": type = 0 if "url" in request.REQUEST and "on_off" in request.REQUEST: JT = utils.JenkinsJobSwitch(request.REQUEST['url'],request.REQUEST['on_off']) if JT.switch(): #this_option.save() this_info = {} this_info['view_name'] = 'agile' this_url = request.REQUEST.get('url') this_info['job_name'] = this_url[this_url.find("/job/") + 5 : this_url.find("/build?")] this_info['type'] = type this_info['version'] = "" utils.save_job_record(request, this_info) return public.success_result_http() else: return public.fail_result_http(u"jenkins触发有错误") else: return public.fail_result_http(u"缺少触发参数,需要url和on_off")
def save_auto_report(request): """ 存储推送来的数据!-autoreport jichaoliu """ if request.method == "POST": data = json.loads(request.body) err = utils.save_get_report(data) if err: return public.fail_result_http(err, data) else: return public.fail_result_http(u"该接口只支持POST数据") return public.success_result_http()
def get_branch_diff(request): if request.method != "GET": return public.fail_result_http(u"Only support GET") else: if request.REQUEST.get('module') and request.REQUEST.get('b1') and request.REQUEST.get('b2'): ret = utils.diff_branch(request.REQUEST.get('module') , request.REQUEST.get('b1'), request.REQUEST.get('b2')) if ret == False: return public.fail_result_http("branch error","branch可能有问题,请检查svn下是否有对应branch") else: if ret == "": ret = u"两个branch的代码无差别" return public.success_result_http(ret) else: return public.fail_result_http(u"miss some argument, module & b1 &b2 needed")
def save_package_status(request): #存储推送来的数据!-package_status temp = re.findall('addData_reason.*({.*?})', str(request)) data ={} if request.method == "POST": data["addData_reason"] = temp[0] err = data_utils.save_package_status(data) if err: return public.fail_result_http(err, data) else: data["addData_reason"] = temp[0] err = data_utils.save_package_status(data) if err: return public.fail_result_http(err, data) return public.success_result_http()
def update_api_mob_version_view(request): if request.method == "POST": data = json.loads(request.body) ret = utils.update_api_mob_version(data) return public.success_result_http(ret) else: return public.fail_result_http("Only Post!")
def save_api_resource_view(request): if request.method != "POST": return public.fail_result_http(u"Only support POST!") else: data = json.loads(request.body) ret = utils.save_api_resource(data) return public.success_result_http(ret)
def get_sealed_or_newlab_version(request): # 获取封板号 封板号没有就返回newlab版本 if request.method != "GET": return public.fail_result_http(u"Only support GET") else: ret = utils.get_seal_or_newlab_version(request.REQUEST.get("module")) return public.success_result_http(ret)
def bind_job_view(request): if request.method != "POST": return public.fail_result_http(u"Only support POST!") else: data = json.loads(request.body) ret = utils.bind_job(data) return public.success_result_http(ret)
def filter_api_view(request): q = request.GET.get("q") data = utils.filter_api(q) if data: return public.success_result_http(data) else: return public.fail_result_http(data)
def save_sealed_info(request): """ :author: yechengzhou :param request: json :return: err msg, None means success """ if request.method == "POST": data = json.loads(request.POST.get('retjson')) err = utils.save_sealed_info(data) if err: return public.fail_result_http(err, data) else: return public.success_result_http() else: return public.fail_result_http(u"该接口只支持POST数据")
def save_single_api_record(request): id = utils.save_api_record(json.loads(request.body)) public_info = utils.get_public(request) if public_info.get('auth').get('write') != 1: return public.fail_result_http('have no write right') else: return public.success_result_http({'id': id})
def save_module_view(request): if request.method == "POST": data = json.loads(request.body) ret = utils.save_module(data) return public.success_result_http(ret) else: return public.fail_result_http("Only POST!")
def save_package_status(request): #存储推送来的数据!-package_status temp = re.findall('addData_reason.*({.*?})', str(request)) data = {} if request.method == "POST": data["addData_reason"] = temp[0] err = data_utils.save_package_status(data) if err: return public.fail_result_http(err, data) else: data["addData_reason"] = temp[0] err = data_utils.save_package_status(data) if err: return public.fail_result_http(err, data) return public.success_result_http()
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!")
def rm_api_view(request): if request.method != "POST": return public.fail_result_http(u"Only support POST!") else: data = json.loads(request.body) id = data.get("id") utils.rm_api(id) return public.success_result_http()
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)
def bin_sub_task_job_view(request): if request.method == "POST": data = json.loads(request.body) sub_task_id = data.get("sub_task_id") job_id_list = data.get("job_id_list") ret = utils.bind_sub_task_job(sub_task_id, job_id_list) return public.success_result_http(ret) else: return public.fail_result_http("Only POST!")
def save_svn_history_view(request): logger.debug(request) if request.method == "POST": data = json.loads(request.body) utils.save_svn_history(data) else: return public.fail_result_http(u"该接口只支持POST数据") return public.success_result_http()
def build_job(request): if request.method == "POST": j = utils.Jenkins() data = json.loads(request.body) job_name = data.get("job_name") parameters = {"parameters": data.get("parameters")} ret = j.build_job(job_name, parameters) return public.success_result_http(ret) else: return public.fail_result_http("POST Only!")
def get_sealdiffonline(request): """ :author: yechengzhou :param request: day :return: json """ if request.method == "GET": try: day = request.GET.get("day") ret = utils.get_sealdiffonline(day) except: ret = utils.get_sealdiffonline() if ret == 1: return public.fail_result_http(u"上线信息空") elif ret: return public.success_result_http(ret) else: return public.fail_result_http(u"diff信息不存在")
def get_branch_diff(request): if request.method != "GET": return public.fail_result_http(u"Only support GET") else: if request.REQUEST.get('module') and request.REQUEST.get( 'b1') and request.REQUEST.get('b2'): ret = utils.diff_branch(request.REQUEST.get('module'), request.REQUEST.get('b1'), request.REQUEST.get('b2')) if ret == False: return public.fail_result_http( "branch error", "branch可能有问题,请检查svn下是否有对应branch") else: if ret == "": ret = u"两个branch的代码无差别" return public.success_result_http(ret) else: return public.fail_result_http( u"miss some argument, module & b1 &b2 needed")
def get_push_status(request): data = {} if request.method == "GET": data["time"] = request.GET.get("time") data["area"] = request.GET.get("location") data["module"]=request.GET.get("version") rtData=utils.get_push_status(data) else: return public.fail_result_http(u"该接口只支持GET数据") return JsonResponse(rtData)
def save_group_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") id = utils.save_group(data) return redirect("/jenkins?group_id=%s" % id)
def get_history_by_module(request): if request.method != "GET": return public.fail_result_http(u"Only support GET") else: para = {} para["module"] = request.REQUEST.get('module') version = request.REQUEST.get('version') # branch num # RB_vdoota_20150720_103028 tmp_list = version.split("_") para["end"] = tmp_list[-2] + tmp_list[-1] return public.success_result_http(utils.get_svn_history_test(para))
def set_api_badge_view(request): if request.method == "POST": body = json.loads(request.body) url_param = body.get("url_param") badge = body.get("badge") work = body.get("work") data = body.get("detail") ret = utils.set_api_badge(url_param, badge) utils.save_api_ranking(work, data) return public.success_result_http(ret) else: return public.fail_result_http(u"该接口为POST类型!")