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
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 })
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}, )
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}, )
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}, )
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 })
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": "修改失败" })
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操作"})
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":"修改失败"})