Пример #1
0
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())
Пример #2
0
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
Пример #3
0
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())
Пример #4
0
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())
Пример #5
0
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())  
Пример #6
0
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())
Пример #7
0
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())
Пример #8
0
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())
Пример #9
0
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())


    
Пример #10
0
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())
Пример #11
0
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())
Пример #12
0
 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)
Пример #13
0
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())
Пример #14
0
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())
Пример #15
0
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())
Пример #16
0
    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
Пример #17
0
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())




    
Пример #18
0
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())
Пример #19
0
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())
Пример #20
0
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
Пример #21
0
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())