def WorkOrderFlow_background_detail(request): task_id = request.GET.get('task_id', '') obj = get_object(TaskResult, task_id=task_id) obj2 = get_object(WorkOrderFlow, celery_task_id=task_id) if not obj: if obj2: if obj2.back_exe_enable == True: tpl_celery_task_status = "任务已结束,任务队列结果已清理,执行结果日志请查看celery日志" elif obj2.auto_exe_enable == True: tpl_celery_task_status = "任务已结束,任务队列结果已清理,执行结果日志请查看celery日志" elif obj2.status == "CREATED" or obj2.status == "PENDING": celery_schedule_time = obj2.celery_schedule_time time_now = datetime.now() if time_now > celery_schedule_time: tpl_celery_task_status = "任务已结束,任务队列结果已清理,执行结果日志请查看celery日志" else: tpl_celery_task_status = "任务未开始,请等待计划时间执行后再查看" elif obj2.status == "9": tpl_celery_task_status = "任务已撤销,无执行详情信息" else: tpl_celery_task_status = "任务未开始,等待审批后自动执行" else: obj = obj.as_dict() tpl_CeleryTaskResult_form = CeleryTaskResult_form(initial=obj) if obj2: tpl_WorkOrderFlow_form = WorkOrderFlow_detail_form(instance=obj2) return render(request, "skworkorders/WorkOrderFlow_background_detail.html", locals())
def format_to_user_vars(**message_dic): WorkOrder_id = int(message_dic['id']) obj = get_object(WorkOrder, id=WorkOrder_id) if obj.var_opional_switch == True and obj.var_opional is not None: user_vars_dic={} obj_VarsGroup=VarsGroup.objects.get(name=obj.var_opional) for obj_var in obj_VarsGroup.vars.all(): obj_var_name = str(obj_var.name) if obj_var_name in message_dic: user_vars_dic[obj_var_name]=message_dic[obj_var_name] message_dic.pop(obj_var_name) else: user_vars_dic={} message_dic.pop("csrfmiddlewaretoken") message_dic.pop("id") # message_dic["user_vars"] = str(json.dumps(user_vars_dic)) message_dic["user_vars"] = user_vars_dic if "back_exe_enable" in message_dic: if message_dic["back_exe_enable"] == "on": message_dic["back_exe_enable"] = 1 if message_dic["back_exe_enable"] == "False": message_dic["back_exe_enable"] = 0 if message_dic["auto_exe_enable"] == "on": message_dic["auto_exe_enable"] = 1 if message_dic["auto_exe_enable"] == "False": message_dic["auto_exe_enable"] = 0 return message_dic,user_vars_dic
def WorkOrder_edit(request): temp_name = "skworkorders/skworkorders-header.html" ids = request.GET.get('id', '') obj = get_object(WorkOrder, id=ids) print(obj.var_built_in) print(type(obj.var_built_in)) if request.method == 'POST': tpl_WorkOrder_form = WorkOrder_form(request.POST, instance=obj) if tpl_WorkOrder_form.is_valid(): tpl_WorkOrder_form.save() ret = [] message = "SUCCESS\n保存成功" ret.append(message) tips = "保存成功!" display_control = "" return render(request,"skworkorders/WorkOrder_edit.html", locals()) else: tips = "保存失败!" display_control = "" return render(request,"skworkorders/WorkOrder_edit.html", locals()) else: tpl_WorkOrder_form = WorkOrder_form(instance=obj) display_control = "none" return render(request,"skworkorders/WorkOrder_edit.html", locals())
def WorkOrderFlow_release(request, ids): temp_name = "skworkorders/skworkorders-header.html" obj = get_object(WorkOrderFlow, id=ids) obj_title=obj.title dic_init={'workorder':obj.workorder, 'env':obj.env, 'user_vars':obj.user_vars, } tpl_WorkOrderFlow_release_form = WorkOrderFlow_release_form(initial=dic_init) return render(request,"skworkorders/WorkOrderFlow_release.html", locals())
def WorkOrderCommit_add(request, ids): temp_name = "skworkorders/skworkorders-header.html" status = 0 obj = get_object(WorkOrder, id=ids) obj_title = str(obj.name) obj_audit = obj.audit_flow user = request.user if not obj_audit: obj_level = "0" else: obj_level = AuditFlow.objects.get(name=obj_audit).level dic_init={'title':obj_title, 'workorder':obj.name, 'workorder_id':obj.id, 'workorder_group':obj.group, 'env':obj.env, 'user_commit':request.user, 'status':"0", 'audit_level':obj_level, } if permission_submit_pass(user, WorkOrder_id=ids): tpl_WorkOrderCommit_form = WorkOrderCommit_form(initial=dic_init) if obj.var_opional_switch == True and obj.var_opional: try: tpl_custom_form_list = get_VarsGroup_form(obj.var_opional) print(tpl_custom_form_list) except Exception as err: tpl_error_msg = {} tpl_error_msg['result'] = 'failed' # tpl_error_msg['message'] = 'Please check that registration variable is correct,for more information, please contact the administrator' tpl_error_msg['message'] = err return render(request,"error_result.html", locals()) if obj.audit_enable == False: tpl_WorkOrderCommit_form.fields["desc"].widget=forms.HiddenInput() if obj.schedule_enable == False: tpl_WorkOrderCommit_form.fields["celery_schedule_time"].widget=forms.HiddenInput() if obj.back_exe_enable == False: tpl_WorkOrderCommit_form.fields["back_exe_enable"].widget=forms.HiddenInput() if obj.auto_exe_enable == False: tpl_WorkOrderCommit_form.fields["auto_exe_enable"].widget=forms.HiddenInput() return render(request,"skworkorders/WorkOrderCommit_add.html", locals()) else: tpl_error_msg = {} tpl_error_msg['result'] = 'failed' tpl_error_msg['message'] = 'permission deny' return render(request,"error_result.html", locals())
def WorkOrderFlow_foreground_detail_log(request, ids): obj = get_object(WorkOrderFlow, id=ids) created_at = obj.created_at.strftime("%Y%m%d.%H%M%S") task_name_created = obj.title + '.' + created_at logPath = settings.LOG_PATH logPath = settings.SKSTACK_PLUGINS_LOGS_PATH workorder_group = obj.workorder_group tpl_WorkOrderFlow_form_log = showLog(created_at, task_name_created, logPath, workorder_group) # print(tpl_WorkOrderFlow_form) return render(request, "skworkorders/WorkOrderFlow_foreground_detail_log.html", locals())
def AuditFlow_edit(request, ids): status = 0 obj = get_object(AuditFlow, id=ids) if request.method == 'POST': tpl_AuditFlow_form = AuditFlow_form(request.POST, instance=obj) if tpl_AuditFlow_form.is_valid(): tpl_AuditFlow_form.save() status = 1 else: status = 2 else: tpl_AuditFlow_form = AuditFlow_form(instance=obj) return render(request,"skaccounts/AuditFlow_edit.html", locals())
def WorkOrderGroup_edit(request, ids): status = 0 obj = get_object(WorkOrderGroup, id=ids) if request.method == 'POST': tpl_WorkOrderGroup_form = WorkOrderGroup_form(request.POST, instance=obj) if tpl_WorkOrderGroup_form.is_valid(): tpl_WorkOrderGroup_form.save() status = 1 else: status = 2 else: tpl_WorkOrderGroup_form = WorkOrderGroup_form(instance=obj) return render(request,"skworkorders/WorkOrderGroup_edit.html", locals())
def ConfigCenter_check(request,ids): temp_name = "skworkorders/skworkorders-header.html" obj = get_object(ConfigCenter, id=ids) cmd = "date" ret,retcode = ssh_cmd_back(obj.ip,obj.port,obj.username,obj.password,cmd,obj.rsa_key) ret.insert(0,"SSH登陆验证:检测配置中心时间") if retcode == 0: ret.append("执行成功") else: ret.append("执行失败") return render(request,"skworkorders/ConfigCenter_check.html", locals())
def ConfigCenter_edit(request, ids): status = 0 obj = get_object(ConfigCenter, id=ids) if request.method == 'POST': tpl_ConfigCenter_form = ConfigCenter_form(request.POST, instance=obj) if tpl_ConfigCenter_form.is_valid(): tpl_ConfigCenter_form.save() status = 1 else: status = 2 else: tpl_ConfigCenter_form = ConfigCenter_form(instance=obj) return render(request,"skworkorders/ConfigCenter_edit.html", locals())
def Environment_edit(request, ids): status = 0 obj = get_object(Environment, id=ids) if request.method == 'POST': tpl_Environment_form = Environment_form(request.POST, instance=obj) if tpl_Environment_form.is_valid(): tpl_Environment_form.save() status = 1 else: status = 2 else: tpl_Environment_form = Environment_form(instance=obj) return render(request, "skworkorders/Environment_edit.html", locals())
def __init__(self,WorkOrderFlow_id,login_user,request): self.obj = WorkOrderFlow.objects.get(id=WorkOrderFlow_id) self.obj2 = WorkOrder.objects.get(id = self.obj.workorder_id) try: self.obj3 = get_object(ConfigCenter, id=self.obj.config_center_id) self.config_center_dic = json.dumps(model_to_dict(self.obj3 )) except Exception as e: self.config_center_dic = None self.user = login_user self.request = request self.channel_name = str(self.obj2.name) + "_" + str(self.obj2.env) + "_" + str(self.obj2.id) + "_taskcommit_lock" RedisLock.__init__(self, self.channel_name)
def WorkOrderCommit_help(request, ids): temp_name = "skworkorders/skworkorders-header.html" obj = get_object(WorkOrder, id=ids) obj2 = Environment.objects.get(name_english = obj.env) dic_init={'name':obj.name, 'desc':obj.desc, 'env':obj2.name_english, 'audit_enable':obj.audit_enable, } tpl_WorkOrderCommit_help_form = WorkOrderCommit_help_form(initial=dic_init) return render(request,"skworkorders/WorkOrderCommit_help.html", locals())
def VarsGroup_edit(request, ids): temp_name = "skworkorders/skworkorders-header.html" obj = get_object(VarsGroup, id=ids) if request.method == 'POST': tpl_VarsGroup_form = VarsGroup_form(request.POST, instance=obj) if tpl_VarsGroup_form.is_valid(): tpl_VarsGroup_form.save() tips = "保存成功!" display_control = "" else: tips = "保存失败!" display_control = "" else: display_control = "none" tpl_VarsGroup_form = VarsGroup_form(instance=obj) return render(request, "skworkorders/VarsGroup_edit.html", locals())
def Vars_edit(request, ids): status = 0 obj = get_object(Vars, id=ids) if request.method == 'POST': tpl_Vars_form = Vars_form(request.POST, instance=obj) if tpl_Vars_form.is_valid(): tpl_Vars_form.save() status = 1 tips = "successful!" display_control = "" else: tips = "failed!" display_control = "" else: display_control = "none" tpl_Vars_form = Vars_form(instance=obj) return render(request, "skworkorders/Vars_edit2.html", locals())
def __init__(self, WorkOrder_id, request, message_dic): self.obj = WorkOrder.objects.get(id=WorkOrder_id) self.user = request.user self.request = request self.message_dic_format, self.user_vars_dic = format_to_user_vars( **message_dic) self.channel_name = str(self.obj.name) + "_" + str( self.obj.env) + "_" + str(self.obj.id) + "_taskcommit_lock" try: RedisLock.__init__(self, self.channel_name) except Exception as e: self.sendmsg("ERROR Failed to connect to redis") try: self.obj3 = get_object(ConfigCenter, id=self.obj.config_center_id) self.config_center_dic = json.dumps(model_to_dict(self.obj3)) except Exception as e: self.config_center_dic = None
def UserGroup_edit(request, ids): temp_name = "skaccounts/accounts-header.html" status = 0 obj = get_object(UserGroup, id=ids) if request.method == 'POST': tpl_UserGroup_form = UserGroup_form(request.POST, instance=obj) if tpl_UserGroup_form.is_valid(): tpl_UserGroup_form.save() status = 1 return HttpResponseRedirect(reverse('UserGroup_index')) else: status = 3 else: tpl_UserGroup_form = UserGroup_form(instance=obj) return render(request,"skaccounts/UserGroup_edit.html", locals())
def WorkOrder_add_from_template(request,ids): temp_name = "skworkorders/skworkorders-header.html" if request.method == "POST": tpl_WorkOrder_form = WorkOrder_form(request.POST) if tpl_WorkOrder_form.is_valid(): tpl_WorkOrder_form.save() tips = "提交成功!" display_control = "" else: tips = "提交失败!" display_control = "" return render(request,"skworkorders/WorkOrder_add.html", locals()) else: display_control = "none" obj = get_object(WorkOrder, id=ids) print(obj.user_dep, end=' ') dic_init={ 'desc':obj.desc, 'user_dep':obj.user_dep.all(), 'env':obj.env, 'group':obj.group, 'status':obj.status, 'var_built_in':obj.var_built_in, 'var_opional_switch':obj.var_opional_switch, 'var_opional':obj.var_opional, 'pre_task':obj.pre_task, 'main_task':obj.main_task, 'post_task':obj.post_task, 'audit_enable':obj.audit_enable, 'audit_flow':obj.audit_flow, } tpl_WorkOrder_form = WorkOrder_form(initial=dic_init) return render(request,"skworkorders/WorkOrder_add.html", locals())
def Vars_check(request, ids): temp_name = "skworkorders/skworkorders-header.html" obj = get_object(Vars, id=ids) tpl_var_check_form = get_Vars_form(obj) return render(request, "skworkorders/Vars_check.html", locals())
def custom_task(obj_WorkOrder,user_vars_dic,request,taskname): obj = obj_WorkOrder obj_sk_vars_dic = {} obj_sk_vars_dic["sk__name"] = obj.name obj_sk_vars_dic["sk__env"] = str(obj.env).lower() obj2 = get_object(ConfigCenter, id=obj.config_center_id) taskname_dic = {"pre_task":obj.pre_task,"main_task":obj.main_task,"post_task":obj.post_task} if taskname_dic[taskname]: task = var_change2(taskname_dic[taskname],**user_vars_dic) task = var_change2(task,**obj_sk_vars_dic) if obj.var_built_in: var_built_in_dic = eval(obj.var_built_in) task = var_change2(task,**var_built_in_dic) task_list = task.split("\r") ret_message="INFO %s:start \n\r" % taskname log.info(ret_message) if obj.config_center in [None]: for cmd in task_list: print(cmd) try: log.info("cmd_start:%s" % cmd ) pcmd = Popen(cmd,stdout=PIPE,stderr=STDOUT,shell=True) while True: for line in iter(pcmd.stdout.readline,b''): line = str(line, encoding='utf-8').replace('\n', "\n\r"); request.websocket.send(json.dumps(line,ensure_ascii=False).encode('utf-8')) if pcmd.poll() is not None: break except Exception as msg: log.error("cmd_result:%s" % msg) msg = "ERROR %s \n\r" % msg msg = json.dumps("%s %s" % (datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f'),msg),ensure_ascii=False).encode('utf-8') request.websocket.send(msg) return 1 retcode=pcmd.wait() if retcode==0: ret_message="INFO %s: succesfull \n\r" % taskname else: ret_message="ERROR %s: failed \n\r" % taskname log.error(ret_message) break else: for cmd in task_list: try: log.info("ssh_cmd_start:%s config_center_ip:%s" % (cmd,obj2.ip)) retcode = ssh_cmd(obj2.ip,obj2.port,obj2.username,obj2.password,cmd,obj2.rsa_key,request) except Exception as msg: log.error("ssh_cmd_result:%s" % msg) retcode = 1111 if retcode == 0: ret_message="INFO %s:successful \n\r" % taskname log.info(ret_message) else: ret_message="ERROR %s: faild \n\r" % taskname return retcode
def WorkOrderFlow_foreground_detail(request, ids): obj = get_object(WorkOrderFlow, id=ids) tpl_WorkOrderFlow_form = WorkOrderFlow_detail_form(instance=obj) return render(request, "skworkorders/WorkOrderFlow_foreground_detail.html", locals())