Esempio n. 1
0
 def regTaskList(self):
     regTaskList = []
     for task in list(keys(cTasks)):
         if task.startswith('tasks.celery_deploy') or task.startswith(
                 'tasks.celery_sched'):
             regTaskList.append(task)
     return regTaskList
Esempio n. 2
0
def task_dispatch(request):
    if request.method == "GET":
        # 获取注册的任务
        regTaskList = []
        for task in list(keys(cTasks)):
            if task.startswith('OpsManage.tasks.ansible') or task.startswith(
                    'OpsManage.tasks.sched'):
                regTaskList.append(task)
        try:
            crontabList = CrontabSchedule.objects.all().order_by("-id")
            intervalList = IntervalSchedule.objects.all().order_by("-id")
            taskList = PeriodicTask.objects.all().order_by("-id")
            playbookList = Ansible_Playbook.objects.all()
        except:
            crontabList = []
            intervalList = []
            taskList = []
        return render(
            request, 'crontask/task_dispatch.html', {
                "user": request.user,
                "crontabList": crontabList,
                "intervalList": intervalList,
                "taskList": taskList,
                "regTaskList": regTaskList,
                "playbookList": playbookList
            })
Esempio n. 3
0
def task_view(request):  
    if request.method == "GET":          
        try:       
            workList = WorkerState.objects.all()
            regTaskList = []
            for task in  list(keys(cTasks)):
                if task.startswith('OpsManage.tasks.ansible') or task.startswith('OpsManage.tasks.assets.sched'):
                    regTaskList.append(task)              
        except Exception, ex:
            print ex
            taskLog = []
        return render(request,'task/task_view.html',
                      {"user":request.user,"regTaskList":regTaskList,"workList":workList},
                     )    
Esempio n. 4
0
def task_view(request):  
    if request.method == "GET":          
        try:       
            workList = WorkerState.objects.all()
            regTaskList = []
            for task in  list(keys(cTasks)):
                if task.startswith('OpsManage.tasks.ansible') or task.startswith('OpsManage.tasks.sched'):
                    regTaskList.append(task)              
        except Exception, ex:
            logger.warn(msg="获取Celery Task失败: {ex}".format(ex=str(ex)))
            taskLog = []
        return render(request,'task/task_view.html',
                      {"user":request.user,"regTaskList":regTaskList,"workList":workList},
                     )    
Esempio n. 5
0
def task_view(request):  
    if request.method == "GET":          
        try:       
            workList = WorkerState.objects.all()
            regTaskList = []
            for task in  list(keys(cTasks)):
                if task.startswith('OpsManage.tasks.ansible') or task.startswith('OpsManage.tasks.sched'):
                    regTaskList.append(task)              
        except Exception, ex:
            print ex
            taskLog = []
        return render(request,'task/task_view.html',
                      {"user":request.user,"regTaskList":regTaskList,"workList":workList},
                     )    
Esempio n. 6
0
def task_model(request):
    if request.method == "GET":
        # 获取注册的任务
        regTaskList = []
        for task in list(keys(cTasks)):
            if task.startswith('OpsManage.tasks.ansible') or task.startswith(
                    'OpsManage.tasks.sched'):
                regTaskList.append(task)
        try:
            crontabList = CrontabSchedule.objects.all().order_by("-id")
            intervalList = IntervalSchedule.objects.all().order_by("-id")
            taskList = PeriodicTask.objects.all().order_by("-id")
            playbookList = Ansible_Playbook.objects.all()

            newtaskList = []
            for item in taskList:
                if item.kwargs.find('playbook_id') == -1:
                    continue
                kwargs = json.loads(item.kwargs)
                playbook_id = kwargs["playbook_id"]
                playbook = Ansible_Playbook.objects.get(id=int(playbook_id))
                task = {
                    'id': item.id,
                    'name': item.name,
                    'task': item.task,
                    'last_run_at': item.last_run_at,
                    'total_run_count': item.total_run_count,
                    'enabled': item.enabled,
                    'crontab_id': item.crontab_id,
                    'interval_id': item.interval_id,
                    'expires': item.expires,
                    'playbook_name': playbook.playbook_name,
                }
                newtaskList.append(task)
        except:
            crontabList = []
            intervalList = []
            newtaskList = []
        return render(
            request, 'crontask/task_model.html', {
                "user": request.user,
                "crontabList": crontabList,
                "intervalList": intervalList,
                "taskList": newtaskList,
                "regTaskList": regTaskList,
                "playbookList": playbookList
            })
Esempio n. 7
0
def task_model(request):
    if request.method == "GET":
        #获取注册的任务
        regTaskList = []
        for task in list(keys(cTasks)):
            if task.startswith('OpsManage.tasks.ansible') or task.startswith(
                    'OpsManage.tasks.sched'):
                regTaskList.append(task)
        try:
            crontabList = CrontabSchedule.objects.all().order_by("-id")
            intervalList = IntervalSchedule.objects.all().order_by("-id")
            taskList = PeriodicTask.objects.all().order_by("-id")
        except:
            crontabList = []
            intervalList = []
            taskList = []
        return render(
            request, 'task/task_model.html', {
                "user": request.user,
                "crontabList": crontabList,
                "intervalList": intervalList,
                "taskList": taskList,
                "regTaskList": regTaskList
            })
    elif request.method == "POST":
        op = request.POST.get('op')
        if op in [
                'addCrontab', 'delCrontab', 'addInterval', 'delInterval',
                'addTask', 'editTask', 'delTask'
        ] and request.user.has_perm('djcelery.change_periodictask'):
            if op == 'addCrontab':
                try:
                    CrontabSchedule.objects.create(
                        minute=request.POST.get('minute'),
                        hour=request.POST.get('hour'),
                        day_of_week=request.POST.get('day_of_week'),
                        day_of_month=request.POST.get('day_of_month'),
                        month_of_year=request.POST.get('month_of_year'),
                    )
                    return JsonResponse({
                        "code": 200,
                        "data": None,
                        "msg": "添加成功"
                    })
                except:
                    return JsonResponse({
                        "code": 500,
                        "data": None,
                        "msg": "添加失败"
                    })
            elif op == 'delCrontab':
                try:
                    CrontabSchedule.objects.get(
                        id=request.POST.get('id')).delete()
                    return JsonResponse({
                        "code": 200,
                        "data": None,
                        "msg": "删除成功"
                    })
                except:
                    return JsonResponse({
                        "code": 500,
                        "data": None,
                        "msg": "删除失败"
                    })
            elif op == 'addInterval':
                try:
                    IntervalSchedule.objects.create(
                        every=request.POST.get('every'),
                        period=request.POST.get('period'))
                    return JsonResponse({
                        "code": 200,
                        "data": None,
                        "msg": "添加成功"
                    })
                except:
                    return JsonResponse({
                        "code": 500,
                        "data": None,
                        "msg": "添加失败"
                    })
            elif op == 'delInterval':
                try:
                    IntervalSchedule.objects.get(
                        id=request.POST.get('id')).delete()
                    return JsonResponse({
                        "code": 200,
                        "data": None,
                        "msg": "删除成功"
                    })
                except:
                    return JsonResponse({
                        "code": 500,
                        "data": None,
                        "msg": "删除失败"
                    })
            elif op == 'addTask':
                try:
                    PeriodicTask.objects.create(
                        name=request.POST.get('name'),
                        interval_id=request.POST.get('interval', None),
                        task=request.POST.get('task', None),
                        crontab_id=request.POST.get('crontab', None),
                        args=request.POST.get('args', '[]'),
                        kwargs=request.POST.get('kwargs', '{}'),
                        queue=request.POST.get('queue', None),
                        enabled=int(request.POST.get('enabled', 1)),
                        expires=request.POST.get('expires', None))
                    return JsonResponse({
                        "code": 200,
                        "data": None,
                        "msg": "添加成功"
                    })
                except Exception, e:
                    return JsonResponse({
                        "code": 500,
                        "data": str(e),
                        "msg": "添加失败"
                    })
            elif op == 'delTask':
                try:
                    PeriodicTask.objects.get(
                        id=request.POST.get('id')).delete()
                    return JsonResponse({
                        "code": 200,
                        "data": None,
                        "msg": "删除成功"
                    })
                except:
                    return JsonResponse({
                        "code": 500,
                        "data": None,
                        "msg": "删除失败"
                    })
            elif op == 'editTask':
                try:
                    task = PeriodicTask.objects.get(id=request.POST.get('id'))
                    task.name = request.POST.get('name')
                    task.interval_id = request.POST.get('interval', None)
                    task.crontab_id = request.POST.get('crontab', None)
                    task.args = request.POST.get('args')
                    task.kwargs = request.POST.get('kwargs')
                    task.queue = request.POST.get('queue', None)
                    task.expires = request.POST.get('expires', None)
                    task.enabled = int(request.POST.get('enabled'))
                    task.save()
                    return JsonResponse({
                        "code": 200,
                        "data": None,
                        "msg": "修改成功"
                    })
                except Exception, e:
                    return JsonResponse({
                        "code": 500,
                        "data": str(e),
                        "msg": "修改失败"
                    })
Esempio n. 8
0
def task_view(request):
    if request.method == "GET":
        try:
            workList = WorkerState.objects.all()
            regTaskList = []
            for task in list(keys(cTasks)):
                if task.startswith('ConfManage.tasks.cron') or task.startswith(
                        'ConfManage.tasks.sched'):
                    regTaskList.append(task)
        except Exception as ex:
            logger.warn(msg="获取Celery Task失败: {ex}".format(ex=str(ex)))
            taskLog = []
        return render(
            request,
            'task/task_view.html',
            {
                "user": request.user,
                "regTaskList": regTaskList,
                "workList": workList
            },
        )
    elif request.method == "POST":
        op = request.POST.get('op')
        if op in ['view', 'delete', 'kill'
                  ] and request.user.has_perm('djcelery.change_taskstate'):
            try:
                task = {}
                for ds in PeriodicTask.objects.all():
                    task[ds.task] = ds.name
                taskLog = TaskState.objects.get(id=request.POST.get('id'))
            except:
                return JsonResponse({
                    "code": 500,
                    "data": None,
                    "msg": "任务不存在"
                })
            if op == 'view':
                try:
                    data = dict()
                    work = WorkerState.objects.get(id=taskLog.worker_id)
                    data['id'] = taskLog.id
                    data['task_id'] = taskLog.task_id
                    data['worker'] = work.hostname
                    if task.has_key(taskLog.name):
                        data['name'] = task[taskLog.name]
                    else:
                        data['name'] = taskLog.name
                    data['tstamp'] = taskLog.tstamp
                    data['args'] = taskLog.args.replace('[u', '[')
                    data['kwargs'] = taskLog.kwargs.replace('u\'', '\'')
                    data['result'] = taskLog.result
                    data['state'] = taskLog.state
                    data['runtime'] = taskLog.runtime
                    return JsonResponse({
                        "code": 200,
                        "data": data,
                        "msg": "操作成功"
                    })
                except Exception as ex:
                    logger.warn(msg="查看Celery Task运行日志失败: {ex}".format(
                        ex=str(ex)))
                    return JsonResponse({
                        "code": 500,
                        "data": None,
                        "msg": "日志查看失败。"
                    })
            elif op == 'delete':
                try:
                    taskLog.delete()
                    return JsonResponse({
                        "code": 200,
                        "data": None,
                        "msg": "删除成功"
                    })
                except Exception as ex:
                    return JsonResponse({
                        "code": 500,
                        "data": ex,
                        "msg": "日志删除失败"
                    })
            elif op == 'kill':
                try:
                    revoke(taskLog.task_id, terminate=True)
                    return JsonResponse({
                        "code": 200,
                        "data": None,
                        "msg": "任务终止成功"
                    })
                except Exception as ex:
                    logger.warn(msg="终止任务失败: {ex}".format(ex=str(ex)))
                    return JsonResponse({
                        "code": 500,
                        "data": ex,
                        "msg": "任务终止成功"
                    })
        else:
            return JsonResponse({
                "code": 500,
                "data": "终止任务失败: {ex}".format(ex=str(ex)),
                "msg": "不支持的操作或者您没有权限操作操作此项。"
            })
    else:
        return JsonResponse({"code": 500, "data": None, "msg": "不支持的HTTP操作"})
Esempio n. 9
0
def task_model(request):
    if request.method == "GET":
        #获取注册的任务
        regTaskList = []
        for task in list(keys(cTasks)):
            if task.startswith('OpsManage.tasks.ansible') or task.startswith('OpsManage.tasks.sched'):
                regTaskList.append(task)
        try:
            crontabList = CrontabSchedule.objects.all().order_by("-id")
            intervalList = IntervalSchedule.objects.all().order_by("-id")
            taskList = PeriodicTask.objects.all().order_by("-id")
        except:
            crontabList = []
            intervalList = []
            taskList = []
        return render(request,'task/task_model.html',{"user":request.user,"crontabList":crontabList,
                                              "intervalList":intervalList,"taskList":taskList,
                                              "regTaskList":regTaskList})  
    elif request.method == "POST":
        op = request.POST.get('op') 
        if op in ['addInterval','delInterval','addTask','editTask','delTask'] and request.user.has_perm('djcelery.change_periodictask'): 
            if op == 'addInterval':
                try:
                    IntervalSchedule.objects.create(every=request.POST.get('every'),period=request.POST.get('period'))
                    return  JsonResponse({"code":200,"data":None,"msg":"添加成功"})
                except:
                    return  JsonResponse({"code":500,"data":None,"msg":"添加失败"})    
            elif op == 'delInterval':
                try:
                    IntervalSchedule.objects.get(id=request.POST.get('id')).delete()
                    return  JsonResponse({"code":200,"data":None,"msg":"删除成功"})
                except:
                    return  JsonResponse({"code":500,"data":None,"msg":"删除失败"})
            elif op == 'addTask':
                try:
                    PeriodicTask.objects.create(name=request.POST.get('name'),
                                                interval_id=request.POST.get('interval',None),
                                                task=request.POST.get('task',None),
                                                crontab_id=request.POST.get('crontab',None),
                                                args = request.POST.get('args','[]'),
                                                kwargs = request.POST.get('kwargs','{}'),
                                                queue = request.POST.get('queue',None),
                                                enabled = int(request.POST.get('enabled',1)),
                                                expires = request.POST.get('expires',None)
                                                      )
                    return  JsonResponse({"code":200,"data":None,"msg":"添加成功"})
                except Exception,e:
                    return  JsonResponse({"code":500,"data":str(e),"msg":"添加失败"})    
            elif op == 'delTask':
                try:
                    PeriodicTask.objects.get(id=request.POST.get('id')).delete()
                    return  JsonResponse({"code":200,"data":None,"msg":"删除成功"})
                except:
                    return  JsonResponse({"code":500,"data":None,"msg":"删除失败"})
            elif op == 'editTask':
                try:
                    task = PeriodicTask.objects.get(id=request.POST.get('id'))
                    task.name = request.POST.get('name')
                    task.interval_id = request.POST.get('interval',None)
                    task.crontab_id = request.POST.get('crontab',None)
                    task.args = request.POST.get('args')
                    task.kwargs = request.POST.get('kwargs')
                    task.queue = request.POST.get('queue',None)
                    task.expires = request.POST.get('expires',None)
                    task.enabled = int(request.POST.get('enabled'))
                    task.save()
                    return  JsonResponse({"code":200,"data":None,"msg":"修改成功"})
                except Exception,e:
                    return  JsonResponse({"code":500,"data":str(e),"msg":"修改失败"})