コード例 #1
0
ファイル: script.py プロジェクト: uglyliu/pj-job
def save(request, validator=ScriptSaveForm):
    """
    保存脚本
    """
    me = request.session.get("username")
    script_id = request.formdata.get("script_id")
    name = request.formdata.get("name")
    content = request.formdata.get("content")
    type = request.formdata.get("type")
    project_id = request.formdata.get("project_id")

    if sys.getsizeof(content) / 1024 > 50:
        return jsonify(success=False, msg=u"脚本不能超过50KB")

    try:
        script = Script.objects.get(id=script_id, project_id=project_id)
    except:
        return jsonify(code=1, success=False, msg=u"脚本不存在")

    #相同业务,存在id不同,但name相同的脚本,报错
    if Script.objects.filter(project_id=project_id,
                             name=name).exists() and script.name != name:
        return jsonify(code=2, success=False, msg=u"脚本名不能重复")

    script.name = name
    script.content = compress(content)
    script.type = type
    script.last_user = me
    script.save()

    return jsonify(success=True)
コード例 #2
0
ファイル: user.py プロジェクト: uglyliu/pj-job
def delete(request, validator=UserDelForm):
    """
    删除用户
    """
    project_id = request.formdata.get("project_id")
    users_id = request.formdata.get("users_id")

    try:
        users_id = list(set(json.loads(users_id)))
    except:
        return jsonify(success=False, msg=u"表单参数有误")

    for user_id in users_id:
        if not isinstance(user_id, int):
            return jsonify(success=False, msg=u"表单参数有误")

    users = User.objects.filter(id__in=users_id, project_id=project_id)
    if not users.count():
        return jsonify(success=False, msg=u"用户不存在")

    if ScriptNode.objects.filter(user__in=users).exists():
        return jsonify(success=False, msg=u"用户正在被使用")
    users.delete()

    return jsonify(success=True)
コード例 #3
0
ファイル: script.py プロジェクト: honglongwei/pj-job
def template(request, validator = ScriptTemplateForm):
    """
    获取脚本模版
    """
    project_id = request.formdata.get("project_id")
    type = request.formdata.get("type")

    base_dir = settings.BASE_DIR
    template_dir = base_dir + "/apps/manage/common/template"
    script_path = None

    if(type == 1):
        script_path = template_dir + "/template.sh"
    elif(type == 2):
        script_path = template_dir + "/template.bat"
    elif(type == 3):
        script_path = template_dir + "/template.py"
    else:
        pass

    data = None
    if os.path.exists(script_path) and os.path.isfile(script_path):
        fp = open(script_path, "r")
        data = fp.read()
        fp.close()
    else:
        return jsonify(success = False, msg = u"脚本模版不存在")

    return jsonify(success = True, data = data)
コード例 #4
0
ファイル: script.py プロジェクト: honglongwei/pj-job
def save(request, validator = ScriptSaveForm):
    """
    保存脚本
    """
    me = request.session.get("username")
    script_id = request.formdata.get("script_id")
    name = request.formdata.get("name")
    content = request.formdata.get("content")
    type = request.formdata.get("type")
    project_id = request.formdata.get("project_id")

    if sys.getsizeof(content)/1024 > 50:
        return jsonify(success = False, msg = u"脚本不能超过50KB")

    try:
        script = Script.objects.get(id = script_id, project_id = project_id)
    except:
        return jsonify(code = 1, success = False, msg = u"脚本不存在")

    #相同业务,存在id不同,但name相同的脚本,报错
    if Script.objects.filter(project_id = project_id, name = name).exists() and script.name != name:
        return jsonify(code = 2, success = False, msg = u"脚本名不能重复")
    
    script.name = name  
    script.content = compress(content)
    script.type = type
    script.last_user = me
    script.save()

    return jsonify(success = True)
コード例 #5
0
ファイル: script.py プロジェクト: honglongwei/pj-job
def delete(request, validator = ScriptDelForm):
    """
    删除脚本
    """
    project_id = request.formdata.get("project_id")
    scripts_id = request.formdata.get("scripts_id")

    try:
        scripts_id = list(set(json.loads(scripts_id)))
    except:
        return jsonify(code = 2, success = False, msg = u"表单参数有误")

    for script_id in scripts_id:
        if not isinstance(script_id, int):
            return jsonify(code = 3, success = False, msg = u"表单参数有误")

    scripts = Script.objects.filter(id__in = scripts_id, project_id = project_id)
    if not scripts.count():
        return jsonify(success = False, msg = u"脚本不存在")
        
    if ScriptNode.objects.filter(script__in = scripts).exists():
        return jsonify(success = False, msg = u"脚本正在被使用")
    scripts.delete()

    return jsonify(success = True)
コード例 #6
0
ファイル: script.py プロジェクト: honglongwei/pj-job
def add(request, validator = ScriptAddForm):
    """
    新建脚本
    """
    me = request.session.get("username")
    name = request.formdata.get("name")
    content = request.formdata.get("content")
    type = request.formdata.get("type")
    project_id = request.formdata.get("project_id")

    if sys.getsizeof(content)/1024 > 50:
        return jsonify(success = False, msg = u"脚本不能超过50KB")

    if Script.objects.filter(name = name, project_id = project_id).exists():
        return jsonify(success = False, msg = u"脚本已存在")

    script = Script()
    script.name = name
    script.content = compress(content)
    script.type = type
    script.create_user = me
    script.last_user = me
    script.project_id = project_id
    script.save()
    return jsonify(success = True)
コード例 #7
0
ファイル: procedure.py プロジェクト: uglyliu/pj-job
def add(request, validator=ProcedureAddForm):
    """
    新建流程
    """
    project_id = request.formdata.get("project_id")
    procedure = request.formdata.get("procedure")

    try:
        procedure_dict = json.loads(procedure)
    except Exception:
        return jsonify(test={"code": 1}, success=False, msg=u"表单数据格式错误")

    success, msg, procedure_checked = procedureCheck(project_id,
                                                     procedure_dict,
                                                     check_unique=True)
    if not success:
        return jsonify(test={"code": 2}, success=False, msg=msg)

    me = request.session.get("username")
    procedure_id = do_addProcedure(me, project_id, procedure_checked)

    return jsonify(test={
        "code": 4,
        "id": procedure_id
    },
                   success=True,
                   msg=u"添加成功")
コード例 #8
0
def getNode(request, validator=HistoryNodeForm):
    """
    获取节点历史数据
    """
    project_id = request.formdata.get("project_id")
    node_id = request.formdata.get("node_id")

    try:
        node = HistoryScriptNode.objects.get(id=node_id)
    except Exception:
        return jsonify(test={"code": 3}, success=False, msg=u"未找到节点记录")

    data = {}
    data["id"] = node.id
    data["name"] = node.name
    data["user"] = node.user
    data["type"] = 1
    data["start_time"] = humanReadableDate(node.start_time)
    data["end_time"] = humanReadableDate(node.end_time)
    data["total_time"] = node.total_time
    data["status"] = node.status

    servers = []
    server_objs = HistoryScriptServer.objects.filter(node_id=node_id)
    for obj in server_objs:
        server = {}
        server["id"] = obj.id
        server["host"] = obj.host
        server["code"] = obj.code
        server["total_time"] = obj.total_time
        servers.append(server)
    data["servers"] = servers

    return jsonify(test={"code": 4}, success=True, data=data)
コード例 #9
0
ファイル: script.py プロジェクト: uglyliu/pj-job
def delete(request, validator=ScriptDelForm):
    """
    删除脚本
    """
    project_id = request.formdata.get("project_id")
    scripts_id = request.formdata.get("scripts_id")

    try:
        scripts_id = list(set(json.loads(scripts_id)))
    except:
        return jsonify(code=2, success=False, msg=u"表单参数有误")

    for script_id in scripts_id:
        if not isinstance(script_id, int):
            return jsonify(code=3, success=False, msg=u"表单参数有误")

    scripts = Script.objects.filter(id__in=scripts_id, project_id=project_id)
    if not scripts.count():
        return jsonify(success=False, msg=u"脚本不存在")

    if ScriptNode.objects.filter(script__in=scripts).exists():
        return jsonify(success=False, msg=u"脚本正在被使用")
    scripts.delete()

    return jsonify(success=True)
コード例 #10
0
ファイル: procedure.py プロジェクト: uglyliu/pj-job
def runTemp(request, validator=ProcedureAddForm):
    """
    临时流程执行
    """
    project_id = request.formdata.get("project_id")
    procedure = request.formdata.get("procedure")

    try:
        procedure_dict = json.loads(procedure)
    except Exception:
        return jsonify(test={"code": 1}, success=False, msg=u"表单数据格式错误")

    success, msg, procedure_checked = procedureCheck(project_id,
                                                     procedure_dict)
    if not success:
        return jsonify(test={"code": 2}, success=False, msg=msg)

    me = request.session.get("username")
    task = do_createTask(project_id, me, procedure_checked)

    ret = execute(task=task)

    return jsonify(test={
        "code": 4,
        "engine": ret,
        "id": task.get("id")
    },
                   success=True,
                   data=task.get("id"))
コード例 #11
0
ファイル: script.py プロジェクト: uglyliu/pj-job
def add(request, validator=ScriptAddForm):
    """
    新建脚本
    """
    me = request.session.get("username")
    name = request.formdata.get("name")
    content = request.formdata.get("content")
    type = request.formdata.get("type")
    project_id = request.formdata.get("project_id")

    if sys.getsizeof(content) / 1024 > 50:
        return jsonify(success=False, msg=u"脚本不能超过50KB")

    if Script.objects.filter(name=name, project_id=project_id).exists():
        return jsonify(success=False, msg=u"脚本已存在")

    script = Script()
    script.name = name
    script.content = compress(content)
    script.type = type
    script.create_user = me
    script.last_user = me
    script.project_id = project_id
    script.save()
    return jsonify(success=True)
コード例 #12
0
ファイル: script.py プロジェクト: uglyliu/pj-job
def template(request, validator=ScriptTemplateForm):
    """
    获取脚本模版
    """
    project_id = request.formdata.get("project_id")
    type = request.formdata.get("type")

    base_dir = settings.BASE_DIR
    template_dir = base_dir + "/apps/manage/common/template"
    script_path = None

    if (type == 1):
        script_path = template_dir + "/template.sh"
    elif (type == 2):
        script_path = template_dir + "/template.bat"
    elif (type == 3):
        script_path = template_dir + "/template.py"
    else:
        pass

    data = None
    if os.path.exists(script_path) and os.path.isfile(script_path):
        fp = open(script_path, "r")
        data = fp.read()
        fp.close()
    else:
        return jsonify(success=False, msg=u"脚本模版不存在")

    return jsonify(success=True, data=data)
コード例 #13
0
ファイル: procedure.py プロジェクト: honglongwei/pj-job
def save(request, validator = ProcedureSaveForm):
    """
    保存流程
    """
    project_id = request.formdata.get("project_id")
    procedure_id = request.formdata.get("procedure_id")
    procedure = request.formdata.get("procedure")

    try:
        procedure_dict = json.loads(procedure)
    except Exception:
        return jsonify(test = {"code": 1}, success = False, msg = u"表单数据格式错误")

    try:
        old_procedure = Procedure.objects.get(id = procedure_id, project_id = project_id)
    except:
        return jsonify(test = {"code": 2}, success = False, msg = u"流程不存在")

    # 先删除原有数据再新建流程
    create_user = do_deleteProcedure(old_procedure)

    success, msg, procedure_checked = procedureCheck(project_id, procedure_dict, check_unique = True)
    if not success:
        return jsonify(test = {"code": 3}, success = False, msg = msg)

    me = request.session.get("username")
    do_addProcedure(me, project_id, procedure_checked, id = procedure_id, create_user = create_user)

    return jsonify(test = {"code": 4}, success = True, msg = u"保存成功")
コード例 #14
0
ファイル: views.py プロジェクト: honglongwei/pj-job
def getNode(request, validator = HistoryNodeForm):
    """
    获取节点历史数据
    """
    project_id = request.formdata.get("project_id")
    node_id = request.formdata.get("node_id")

    try:
        node = HistoryScriptNode.objects.get(id = node_id)
    except Exception:
        return jsonify(test = {"code": 3}, success = False, msg = u"未找到节点记录")

    data = {}
    data["id"] = node.id
    data["name"] = node.name
    data["user"] = node.user
    data["type"] = 1
    data["start_time"] = humanReadableDate(node.start_time)
    data["end_time"] = humanReadableDate(node.end_time)
    data["total_time"] = node.total_time
    data["status"] = node.status

    servers = []
    server_objs = HistoryScriptServer.objects.filter(node_id = node_id)
    for obj in server_objs:
        server = {}
        server["id"] = obj.id
        server["host"] = obj.host
        server["code"] = obj.code
        server["total_time"] = obj.total_time
        servers.append(server)
    data["servers"] = servers

    return jsonify(test = {"code": 4}, success = True, data = data)
コード例 #15
0
def getServer(request, validator=HistoryServerForm):
    """
    获取服务器执行结果数据
    """
    project_id = request.formdata.get("project_id")
    server_id = request.formdata.get("server_id")

    try:
        server = HistoryScriptServer.objects.get(id=server_id)
    except Exception:
        return jsonify(test={"code": 3}, success=False, msg=u"未找到服务器")

    log = dcompress(server.log)
    return jsonify(test={"code": 4}, success=True, data=log)
コード例 #16
0
ファイル: views.py プロジェクト: honglongwei/pj-job
def getServer(request, validator = HistoryServerForm):
    """
    获取服务器执行结果数据
    """
    project_id = request.formdata.get("project_id")
    server_id = request.formdata.get("server_id")

    try:
        server = HistoryScriptServer.objects.get(id = server_id)
    except Exception:
        return jsonify(test = {"code": 3}, success = False, msg = u"未找到服务器")

    log = dcompress(server.log)
    return jsonify(test = {"code": 4}, success = True, data = log)
コード例 #17
0
ファイル: procedure.py プロジェクト: honglongwei/pj-job
def delete(request, validator = ProcedureGetForm):
    """
    删除流程
    """
    project_id = request.formdata.get("project_id")
    procedure_id = request.formdata.get("procedure_id")

    try:
        procedure = Procedure.objects.get(id = procedure_id, project_id = project_id)
    except Exception:
        return jsonify(test = {"code": 2}, success = False, msg = u"流程不存在")

    do_deleteProcedure(procedure, delete_script = False)
    return jsonify(test = {"code": 4}, success = True)
コード例 #18
0
ファイル: procedure.py プロジェクト: uglyliu/pj-job
def delete(request, validator=ProcedureGetForm):
    """
    删除流程
    """
    project_id = request.formdata.get("project_id")
    procedure_id = request.formdata.get("procedure_id")

    try:
        procedure = Procedure.objects.get(id=procedure_id,
                                          project_id=project_id)
    except Exception:
        return jsonify(test={"code": 2}, success=False, msg=u"流程不存在")

    do_deleteProcedure(procedure, delete_script=False)
    return jsonify(test={"code": 4}, success=True)
コード例 #19
0
ファイル: middlewares.py プロジェクト: honglongwei/pj-job
    def process_view(self, request, view_func, view_args, view_kwargs):
        if request.path in self.white_list:
            return

        if not request.session.get("username"):
            return jsonify(code = 1000, success = False)
        return
コード例 #20
0
def run(request):
    """
    流程执行
    """
    # project_id = request.formdata.get("project_id")
    #    task = do_createTask()
    #    ret = execute(task = task)
    data = [{
        "host": "8.8.8.8",
        "os": u'Linux',
        "owner": u"张三",
        "desc": u"我是张三"
    }, {
        "host": "9.9.9.9",
        "os": u'Windows',
        "owner": u"李四",
        "desc": u"我是李四"
    }, {
        "host": "7.7.7.7",
        "os": u'Windows',
        "owner": u"王五",
        "desc": u"我是王五"
    }]

    return jsonify(test={"code": 4}, success=True, data=data)
コード例 #21
0
    def process_view(self, request, view_func, view_args, view_kwargs):
        if request.path in self.white_list:
            return

        if not request.session.get("username"):
            return jsonify(code=1000, success=False)
        return
コード例 #22
0
ファイル: cmdb.py プロジェクト: honglongwei/pj-job
def get(request, validator = ServerForm):
    """
    获取服务器列表
    """
    project_id = request.formdata.get("project_id")
    cache = request.formdata.get("cache")

    service = getCmdbService()
    try:
        ret = service.cmdb.getServer(project_id = project_id, cache = cache)
    except:
        return jsonify(test = {"code": 3}, success = False, msg = u"资产系统异常")

    result = ret.get("result")
    data = result.get("data")

    return jsonify(test = {"code": 4}, success = True, data = data)
コード例 #23
0
def get(request, validator=ServerForm):
    """
    获取服务器列表
    """
    project_id = request.formdata.get("project_id")
    cache = request.formdata.get("cache")

    service = getCmdbService()
    try:
        ret = service.cmdb.getServer(project_id=project_id, cache=cache)
    except:
        return jsonify(test={"code": 3}, success=False, msg=u"资产系统异常")

    result = ret.get("result")
    data = result.get("data")

    return jsonify(test={"code": 4}, success=True, data=data)
コード例 #24
0
ファイル: procedure.py プロジェクト: uglyliu/pj-job
def run(request, validator=ProcedureGetForm):
    """
    流程执行
    """
    project_id = request.formdata.get("project_id")
    procedure_id = request.formdata.get("procedure_id")

    try:
        procedure = Procedure.objects.get(id=procedure_id,
                                          project_id=project_id)
    except Exception:
        return jsonify(test={"code": 2}, success=False, msg=u"流程不存在")

    procedure_dict = {}
    procedure_dict["name"] = procedure.name
    steps = []
    step_objs = Step.objects.filter(procedure_id=procedure_id)
    for step in step_objs:
        step_ = {}
        step_["name"] = step.name
        step_["type"] = step.type
        step_["index"] = step.index
        nodes = []
        node_objs = ScriptNode.objects.filter(step_id=step.id)
        for node in node_objs:
            node_ = {}
            node_["name"] = node.script.name
            node_["type"] = node.script.type
            node_["args"] = node.args
            node_["user"] = node.user
            node_["index"] = node.index
            node_["status"] = 0
            node_["content"] = node.script.content
            node_["servers"] = node.servers
            nodes.append(node_)
        step_["nodes"] = nodes
        steps.append(step_)
    procedure_dict["steps"] = steps

    me = request.session.get("username")
    task = do_createTask(project_id, me, procedure_dict)

    execute(task=task)

    return jsonify(test={"code": 4}, success=True, data=task.get("id"))
コード例 #25
0
ファイル: user.py プロジェクト: uglyliu/pj-job
def add(request, validator=UserAddForm):
    """
    添加用户
    """
    me = request.session.get("username")
    project_id = request.formdata.get("project_id")
    name = request.formdata.get("name")

    if User.objects.filter(name=name, project_id=project_id).exists():
        return jsonify(success=False, msg=u"用户已存在")

    user = User()
    user.name = name
    user.project_id = project_id
    user.create_user = me
    user.save()

    return jsonify(test={"id": user.id}, success=True, msg=u"用户添加成功")
コード例 #26
0
def login(request, validator = LoginForm):
    """
    用户登录
    """
    username = request.formdata.get("username")
    password = request.formdata.get("password")

    service = getAuthService()
    try:
        ret = service.auth.login(username = username, password = password)
    except Exception:
        return jsonify(test = {"code": 2}, success = False, msg = u"权限系统异常")

    result = ret.get("result", {})
    success = result.get("success")

    if not success:
        return jsonify(test = {"code": 3}, success = False, msg = u"用户名或密码错误")

    data = result.get("data", {})
    user = data.get("user", {})
    user_id = user.get("id")
    username = user.get("username")

    project = data.get("project")
    if not project:
        return jsonify(test = {"code": 4}, success = False, msg = u"请先申请业务权限")

    service = getCmdbService()
    try:
        ret = service.cmdb.getProject(project_id = project)
    except Exception:
        return jsonify(test = {"code": 5}, success = False, msg = u"资产系统异常")

    result = ret.get("result", {})
    projects = result.get("data")
    if not projects:
        return jsonify(test = {"code": 6}, success = False, msg = u"业务数据错误")

    request.session["user_id"] = user_id
    request.session["username"] = username
    request.session["project"] = projects

    return get(request)
コード例 #27
0
ファイル: procedure.py プロジェクト: honglongwei/pj-job
def run(request, validator = ProcedureGetForm):
    """
    流程执行
    """
    project_id = request.formdata.get("project_id")
    procedure_id = request.formdata.get("procedure_id")

    try:
        procedure = Procedure.objects.get(id = procedure_id, project_id = project_id)
    except Exception:
        return jsonify(test = {"code": 2}, success = False, msg = u"流程不存在")

    procedure_dict = {}
    procedure_dict["name"] = procedure.name
    steps = []
    step_objs = Step.objects.filter(procedure_id = procedure_id)
    for step in step_objs:
        step_ = {}
        step_["name"] = step.name
        step_["type"] = step.type
        step_["index"] = step.index
        nodes = []
        node_objs = ScriptNode.objects.filter(step_id = step.id)
        for node in node_objs:
            node_ = {}
            node_["name"] = node.script.name
            node_["type"] = node.script.type
            node_["args"] = node.args
            node_["user"] = node.user
            node_["index"] = node.index
            node_["status"] = 0
            node_["content"] = node.script.content
            node_["servers"] = node.servers
            nodes.append(node_)
        step_["nodes"] = nodes
        steps.append(step_)
    procedure_dict["steps"] = steps

    me = request.session.get("username")
    task = do_createTask(project_id, me, procedure_dict)

    execute(task = task)

    return jsonify(test = {"code": 4}, success = True, data = task.get("id"))
コード例 #28
0
ファイル: views.py プロジェクト: honglongwei/pj-job
def retry(request, validator = HandleForm):
    """
    失败主机重试
    """
    project_id = request.formdata.get("project_id")
    task_id = request.formdata.get("task_id")
    step_id = request.formdata.get("step_id")
    node_id = request.formdata.get("node_id")

    try:
        task = do_resumeTask(do_getProcedure(project_id, task_id), step_id, node_id, handler = retryHandler)
    except NotFoundException:
        return jsonify(test = {"code": 3}, success = False, msg = u"忽略错误失败")
    except StatusErrorException:
        return jsonify(test = {"code": 4}, success = False, msg = u"忽略错误失败")

    ret = execute(task = task)

    return jsonify(test = {"engine": ret}, success = True, msg = u"流程继续执行")
コード例 #29
0
def getTask(request, validator=HistoryTaskForm):
    """
    获取任务历史数据
    """
    project_id = request.formdata.get("project_id")
    task_id = request.formdata.get("task_id")

    try:
        task = HistoryTask.objects.get(id=task_id, project_id=project_id)
    except Exception:
        return jsonify(test={"code": 3}, success=False, msg=u"未找到任务记录")

    data = {}
    data["name"] = task.name
    data["status"] = task.status
    data["user"] = task.user
    data["total_time"] = task.total_time
    data["start_time"] = humanReadableDate(task.start_time)
    data["end_time"] = humanReadableDate(task.end_time)
    steps = []
    step_objs = HistoryStep.objects.filter(task_id=task_id)
    for step in step_objs:
        step_ = {}
        step_["id"] = step.id
        step_["name"] = step.name
        step_["type"] = step.type
        nodes = []
        node_objs = HistoryScriptNode.objects.filter(step_id=step.id)
        for node in node_objs:
            node_ = {}
            node_["id"] = node.id
            node_["name"] = node.name
            node_["start_time"] = humanReadableDate(node.start_time)
            node_["end_time"] = humanReadableDate(node.end_time)
            node_["total_time"] = node.total_time
            node_["status"] = node.status
            node_["num"] = node.historyscriptserver_set.count()
            nodes.append(node_)
        step_["nodes"] = nodes
        steps.append(step_)
    data["steps"] = steps

    return jsonify(test={"code": 4, "task": data}, success=True, data=data)
コード例 #30
0
ファイル: views.py プロジェクト: honglongwei/pj-job
def getTask(request, validator = HistoryTaskForm):
    """
    获取任务历史数据
    """
    project_id = request.formdata.get("project_id")
    task_id = request.formdata.get("task_id")

    try:
        task = HistoryTask.objects.get(id = task_id, project_id = project_id)
    except Exception:
        return jsonify(test = {"code": 3}, success = False, msg = u"未找到任务记录")

    data = {}
    data["name"] = task.name
    data["status"] = task.status
    data["user"] = task.user
    data["total_time"] = task.total_time
    data["start_time"] = humanReadableDate(task.start_time)
    data["end_time"] = humanReadableDate(task.end_time)
    steps = []
    step_objs = HistoryStep.objects.filter(task_id = task_id)
    for step in step_objs:
        step_ = {}
        step_["id"] = step.id
        step_["name"] = step.name
        step_["type"] = step.type
        nodes = []
        node_objs = HistoryScriptNode.objects.filter(step_id = step.id)
        for node in node_objs:
            node_ = {}
            node_["id"] = node.id
            node_["name"] = node.name
            node_["start_time"] = humanReadableDate(node.start_time)
            node_["end_time"] = humanReadableDate(node.end_time)
            node_["total_time"] = node.total_time
            node_["status"] = node.status
            node_["num"] = node.historyscriptserver_set.count()
            nodes.append(node_)
        step_["nodes"] = nodes
        steps.append(step_)
    data["steps"] = steps

    return jsonify(test = {"code": 4, "task": data}, success = True, data = data)
コード例 #31
0
ファイル: script.py プロジェクト: honglongwei/pj-job
def get(request, validator = ScriptGetForm):
    """
    返回脚本内容
    """
    project_id = request.formdata.get("project_id")
    script_id = request.formdata.get("script_id")

    try:
        script = Script.objects.values("name", "content", "type").get(id = script_id, project_id = project_id)
    except Exception:
        return jsonify(success = False, msg = u"脚本不存在")

    data = {
        "name": script.get("name"),
        "content": dcompress(script.get("content")),
        "type": script.get("type")
    }

    return jsonify(success = True, data = data)
コード例 #32
0
ファイル: middlewares.py プロジェクト: honglongwei/pj-job
    def process_view(self, request, view_func, view_args, view_kwargs):
        if request.path in self.white_list:
            return

        project_id = request.formdata.get("project_id")
        user_id = request.session.get("user_id")

        if not hasPermissionProject(user_id, project_id):
            return jsonify(test = {"code": 600}, success = False, msg = u"当前用户没有业务权限")
        return
コード例 #33
0
ファイル: views.py プロジェクト: uglyliu/pj-job
def get(request, validator=ProjectForm):
    """
    获取业务数据
    """
    project_id = request.formdata.get("project_id")

    servers = 250
    procedures = Procedure.objects.filter(project_id=project_id).count()

    gte_time = datetime.date.today() - datetime.timedelta(days=7)
    tasks = HistoryTask.objects.filter(
        project_id=project_id,
        start_time__gte=gte_time).order_by("-start_time").values()

    total = len(tasks)
    success = 0
    fail = 0
    runing = 0

    tasks = tasks[0:10]

    for task in tasks:
        task["start_time"] = humanReadableDate(task["start_time"])
        task["end_time"] = humanReadableDate(task["end_time"])

        status = task.get("status")
        if status == 0:
            runing += 1

        elif status == 1:
            success += 1

        elif status == 2:
            fail += 1

        else:
            pass

    status = {
        "total": total,
        "success": success,
        "fail": fail,
        "runing": runing
    }

    data = {
        "tasks": list(tasks),
        "info": {
            "procedures": procedures,
            "servers": servers,
            "status": status
        }
    }

    return jsonify(test={"code": 3}, success=True, data=data)
コード例 #34
0
ファイル: procedure.py プロジェクト: honglongwei/pj-job
def add(request, validator = ProcedureAddForm):
    """
    新建流程
    """
    project_id = request.formdata.get("project_id")
    procedure = request.formdata.get("procedure")

    try:
        procedure_dict = json.loads(procedure)
    except Exception:
        return jsonify(test = {"code": 1}, success = False, msg = u"表单数据格式错误")

    success, msg, procedure_checked = procedureCheck(project_id, procedure_dict, check_unique = True)
    if not success:
        return jsonify(test = {"code": 2}, success = False, msg = msg)

    me = request.session.get("username")
    procedure_id = do_addProcedure(me, project_id, procedure_checked)

    return jsonify(test = {"code": 4, "id": procedure_id}, success = True, msg = u"添加成功")
コード例 #35
0
def getStep(request, validator=HistoryNodeForm):
    """
    获取步骤详情数据
    """
    project_id = request.formdata.get("project_id")
    node_id = request.formdata.get("node_id")

    try:
        node = HistoryScriptNode.objects.values("args", "type",
                                                "content").get(id=node_id)
    except:
        return jsonify(test={"code": 3}, success=False, msg=u"未找到节点记录")

    args = node.get("args")
    type = node.get("type")
    content = dcompress(node.get("content"))

    data = {"args": args, "type": type, "content": content}

    return jsonify(test={"code": 4}, success=True, data=data)
コード例 #36
0
ファイル: script.py プロジェクト: uglyliu/pj-job
def get(request, validator=ScriptGetForm):
    """
    返回脚本内容
    """
    project_id = request.formdata.get("project_id")
    script_id = request.formdata.get("script_id")

    try:
        script = Script.objects.values("name", "content",
                                       "type").get(id=script_id,
                                                   project_id=project_id)
    except Exception:
        return jsonify(success=False, msg=u"脚本不存在")

    data = {
        "name": script.get("name"),
        "content": dcompress(script.get("content")),
        "type": script.get("type")
    }

    return jsonify(success=True, data=data)
コード例 #37
0
    def process_view(self, request, view_func, view_args, view_kwargs):
        if request.path in self.white_list:
            return

        project_id = request.formdata.get("project_id")
        user_id = request.session.get("user_id")

        if not hasPermissionProject(user_id, project_id):
            return jsonify(test={"code": 600},
                           success=False,
                           msg=u"当前用户没有业务权限")
        return
コード例 #38
0
ファイル: user.py プロジェクト: uglyliu/pj-job
def show(request, validator=ProjectForm):
    """
    获取用户列表
    """
    project_id = request.formdata.get("project_id")

    users = User.objects.filter(project_id=project_id).values(
        "id", "name", "create_user", "create_time").order_by("-create_time")
    data = []
    for user in users:
        user["create_time"] = humanReadableDate(user["create_time"])
        data.append(user)
    return jsonify(success=True, data=data)
コード例 #39
0
def retry(request, validator=HandleForm):
    """
    失败主机重试
    """
    project_id = request.formdata.get("project_id")
    task_id = request.formdata.get("task_id")
    step_id = request.formdata.get("step_id")
    node_id = request.formdata.get("node_id")

    try:
        task = do_resumeTask(do_getProcedure(project_id, task_id),
                             step_id,
                             node_id,
                             handler=retryHandler)
    except NotFoundException:
        return jsonify(test={"code": 3}, success=False, msg=u"忽略错误失败")
    except StatusErrorException:
        return jsonify(test={"code": 4}, success=False, msg=u"忽略错误失败")

    ret = execute(task=task)

    return jsonify(test={"engine": ret}, success=True, msg=u"流程继续执行")
コード例 #40
0
ファイル: script.py プロジェクト: honglongwei/pj-job
def show(request, validator = ProjectForm):
    """
    获取脚本列表
    """
    project_id = request.formdata.get("project_id")

    scripts = Script.objects.filter(project_id = project_id).values("id", "name", "create_user", "create_time", "last_user", "last_time").order_by("-last_time")
    data = []
    for script in scripts:
        script["create_time"] = humanReadableDate(script["create_time"])
        script["last_time"] = humanReadableDate(script["last_time"])
        data.append(script)
    return jsonify(success = True, data = data)
コード例 #41
0
ファイル: procedure.py プロジェクト: honglongwei/pj-job
def runTemp(request, validator = ProcedureAddForm):
    """
    临时流程执行
    """
    project_id = request.formdata.get("project_id")
    procedure = request.formdata.get("procedure")

    try:
        procedure_dict = json.loads(procedure)
    except Exception:
        return jsonify(test = {"code": 1}, success = False, msg = u"表单数据格式错误")

    success, msg, procedure_checked = procedureCheck(project_id, procedure_dict)
    if not success:
        return jsonify(test = {"code": 2}, success = False, msg = msg)

    me = request.session.get("username")
    task = do_createTask(project_id, me, procedure_checked)

    ret = execute(task = task)

    return jsonify(test = {"code": 4, "engine": ret, "id": task.get("id")}, success = True, data = task.get("id"))
コード例 #42
0
ファイル: procedure.py プロジェクト: honglongwei/pj-job
def show(request, validator = ProjectForm):
    """
    显示常用流程
    """
    project_id = request.formdata.get("project_id")

    data = []
    procedures = Procedure.objects.filter(project_id = project_id).values().order_by("-last_time")
    for procedure in procedures:
        procedure["create_time"] = humanReadableDate(procedure["create_time"])
        procedure["last_time"] = humanReadableDate(procedure["last_time"])
        data.append(procedure)

    return jsonify(test = {"code": 4, "data": data}, success = True, data = data)
コード例 #43
0
ファイル: views.py プロジェクト: honglongwei/pj-job
def getStep(request, validator = HistoryNodeForm):
    """
    获取步骤详情数据
    """
    project_id = request.formdata.get("project_id")
    node_id = request.formdata.get("node_id")

    try:
       node = HistoryScriptNode.objects.values("args", "type", "content").get(id = node_id)
    except:
        return jsonify(test = {"code": 3}, success = False, msg = u"未找到节点记录")

    args = node.get("args")
    type = node.get("type")
    content = dcompress(node.get("content"))

    data = {
        "args": args,
        "type": type,
        "content": content
    }

    return jsonify(test = {"code": 4}, success = True, data = data)
コード例 #44
0
ファイル: procedure.py プロジェクト: uglyliu/pj-job
def get(request, validator=ProcedureGetForm):
    """
    获取流程
    """
    project_id = request.formdata.get("project_id")
    procedure_id = request.formdata.get("procedure_id")

    try:
        procedure = Procedure.objects.get(id=procedure_id,
                                          project_id=project_id)
    except:
        return jsonify(test={"code": 1}, success=False, msg=u"流程不存在")

    data = {}
    data["name"] = procedure.name
    steps = []
    step_objs = Step.objects.filter(procedure_id=procedure_id)
    for step in step_objs:
        step_ = {}
        step_["name"] = step.name
        step_["type"] = step.type
        nodes = []
        node_objs = ScriptNode.objects.filter(step_id=step.id)
        for node in node_objs:
            node_ = {}
            node_["name"] = node.script.name
            node_["type"] = node.script.type
            node_["args"] = node.args
            node_["user"] = node.user_id
            node_["content"] = dcompress(node.script.content)
            node_["servers"] = node.servers.split("|")
            nodes.append(node_)
        step_["nodes"] = nodes
        steps.append(step_)
    data["steps"] = steps

    return jsonify(test={"code": 4}, success=True, data=data)
コード例 #45
0
def get(request):
    """
    获取当前登录用户数据
    """
    user_id = request.session.get("user_id")
    username = request.session.get("username")
    project = request.session.get("project")

    ret = {
        "user_id": user_id,
        "username": username,
        "project": project
    }

    return jsonify(test = {"code": 7}, success = True, data = ret)
コード例 #46
0
ファイル: procedure.py プロジェクト: uglyliu/pj-job
def show(request, validator=ProjectForm):
    """
    显示常用流程
    """
    project_id = request.formdata.get("project_id")

    data = []
    procedures = Procedure.objects.filter(
        project_id=project_id).values().order_by("-last_time")
    for procedure in procedures:
        procedure["create_time"] = humanReadableDate(procedure["create_time"])
        procedure["last_time"] = humanReadableDate(procedure["last_time"])
        data.append(procedure)

    return jsonify(test={"code": 4, "data": data}, success=True, data=data)
コード例 #47
0
ファイル: procedure.py プロジェクト: honglongwei/pj-job
def get(request, validator = ProcedureGetForm):
    """
    获取流程
    """
    project_id = request.formdata.get("project_id")
    procedure_id = request.formdata.get("procedure_id")

    try:
        procedure = Procedure.objects.get(id = procedure_id, project_id = project_id)
    except:
        return jsonify(test = {"code": 1}, success = False, msg = u"流程不存在")

    data = {}
    data["name"] = procedure.name
    steps = []
    step_objs = Step.objects.filter(procedure_id = procedure_id)
    for step in step_objs:
        step_ = {}
        step_["name"] = step.name
        step_["type"] = step.type
        nodes = []
        node_objs = ScriptNode.objects.filter(step_id = step.id)
        for node in node_objs:
            node_ = {}
            node_["name"] = node.script.name
            node_["type"] = node.script.type
            node_["args"] = node.args
            node_["user"] = node.user_id
            node_["content"] = dcompress(node.script.content)
            node_["servers"] = node.servers.split("|")
            nodes.append(node_)
        step_["nodes"] = nodes
        steps.append(step_)
    data["steps"] = steps

    return jsonify(test = {"code": 4}, success = True, data = data)
コード例 #48
0
ファイル: procedure.py プロジェクト: uglyliu/pj-job
def save(request, validator=ProcedureSaveForm):
    """
    保存流程
    """
    project_id = request.formdata.get("project_id")
    procedure_id = request.formdata.get("procedure_id")
    procedure = request.formdata.get("procedure")

    try:
        procedure_dict = json.loads(procedure)
    except Exception:
        return jsonify(test={"code": 1}, success=False, msg=u"表单数据格式错误")

    try:
        old_procedure = Procedure.objects.get(id=procedure_id,
                                              project_id=project_id)
    except:
        return jsonify(test={"code": 2}, success=False, msg=u"流程不存在")

    # 先删除原有数据再新建流程
    create_user = do_deleteProcedure(old_procedure)

    success, msg, procedure_checked = procedureCheck(project_id,
                                                     procedure_dict,
                                                     check_unique=True)
    if not success:
        return jsonify(test={"code": 3}, success=False, msg=msg)

    me = request.session.get("username")
    do_addProcedure(me,
                    project_id,
                    procedure_checked,
                    id=procedure_id,
                    create_user=create_user)

    return jsonify(test={"code": 4}, success=True, msg=u"保存成功")
コード例 #49
0
ファイル: script.py プロジェクト: uglyliu/pj-job
def show(request, validator=ProjectForm):
    """
    获取脚本列表
    """
    project_id = request.formdata.get("project_id")

    scripts = Script.objects.filter(project_id=project_id).values(
        "id", "name", "create_user", "create_time", "last_user",
        "last_time").order_by("-last_time")
    data = []
    for script in scripts:
        script["create_time"] = humanReadableDate(script["create_time"])
        script["last_time"] = humanReadableDate(script["last_time"])
        data.append(script)
    return jsonify(success=True, data=data)
コード例 #50
0
ファイル: views.py プロジェクト: honglongwei/pj-job
def show(request, validator = HistoryGetForm):
    """
    获取任务历史列表
    """
    project_id = request.formdata.get("project_id")
    start = request.formdata.get("start")
    limit = request.formdata.get("limit")

    tasks_total = HistoryTask.objects.filter(project_id = project_id).count()
    tasks = HistoryTask.objects.filter(project_id = project_id).order_by("-start_time")[start:start + limit]
    data = list(tasks.values())

    if data:
        for task in data:
            task["start_time"] = humanReadableDate(task["start_time"])
            task["end_time"] = humanReadableDate(task["end_time"])

    return jsonify(test = {"total": tasks_total}, success = True, total = tasks_total, data = data)
コード例 #51
0
    def process_view(self, request, view_func, view_args, view_kwargs):
        args_obj = inspect.getargspec(view_func)
        args_names = args_obj.args
        request.formdata = {}

        if "validator" not in args_names:
            return

        default_values = args_obj.defaults
        default_args = args_names[len(default_values) - len(args_names):]

        try:
            form_class = default_values[default_args.index("validator")]
        except Exception:
            raise Exception("validator must has a default value")

        form = form_class(request.POST)
        if not form.validate():
            return jsonify(test={"code": 500}, success=False, msg=u"表单参数有误")

        request.formdata = form.data
        return
コード例 #52
0
def show(request, validator=HistoryGetForm):
    """
    获取任务历史列表
    """
    project_id = request.formdata.get("project_id")
    start = request.formdata.get("start")
    limit = request.formdata.get("limit")

    tasks_total = HistoryTask.objects.filter(project_id=project_id).count()
    tasks = HistoryTask.objects.filter(
        project_id=project_id).order_by("-start_time")[start:start + limit]
    data = list(tasks.values())

    if data:
        for task in data:
            task["start_time"] = humanReadableDate(task["start_time"])
            task["end_time"] = humanReadableDate(task["end_time"])

    return jsonify(test={"total": tasks_total},
                   success=True,
                   total=tasks_total,
                   data=data)
コード例 #53
0
ファイル: middlewares.py プロジェクト: honglongwei/pj-job
    def process_view(self, request, view_func, view_args, view_kwargs):
        args_obj = inspect.getargspec(view_func)
        args_names = args_obj.args
        request.formdata = {}

        if "validator" not in args_names:
            return

        default_values = args_obj.defaults
        default_args = args_names[len(default_values) - len(args_names):]

        try:
            form_class = default_values[default_args.index("validator")]
        except Exception:
            raise Exception("validator must has a default value")

        form = form_class(request.POST)
        if not form.validate():
            return jsonify(test = {"code": 500}, success = False, msg = u"表单参数有误")

        request.formdata = form.data
        return
コード例 #54
0
ファイル: script.py プロジェクト: honglongwei/pj-job
def search(request):
    """
    查询脚本
    """
    return jsonify(success = True)
コード例 #55
0
ファイル: views.py プロジェクト: honglongwei/pj-job
def search(request, validator = QueryForm):
    """
    查询历史
    """
    success, data, msg = query(request.formdata, HistoryTask)
    return jsonify(test = {"code": 2}, success = True, data = data, msg = msg)
コード例 #56
0
ファイル: middlewares.py プロジェクト: honglongwei/pj-job
 def process_request(self, request):
     if request.method != "POST":
         return jsonify(code = 2000, success = False)
     return
コード例 #57
0
ファイル: quick.py プロジェクト: honglongwei/pj-job
def file(request):
    """
    快速文件分发
    这个先不搞
    """
    return jsonify(success = True)
コード例 #58
0
ファイル: quick.py プロジェクト: honglongwei/pj-job
def script(request):
    """
    快速脚本执行
    """
    return jsonify(success = True)