Example #1
0
 def NOtest_script(self):
     ret = test.script(str(uuid.uuid1()),
                       compress("echo test && sleep 10 && echo 1"), 1,
                       "root", "asdf")
     print dcompress(ret["stdout"])
     print dcompress(ret["stderr"])
     print ret["retcode"]
Example #2
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)
Example #3
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)
Example #4
0
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)
Example #5
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)
Example #6
0
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)
Example #7
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)
Example #8
0
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)
Example #9
0
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)
Example #10
0
def script(id, hosts, content, type, user, args):
    """
    脚本执行逻辑
    """
    lost, back = client(hosts, fun = "job.script", 
        args = {
            "id": id,
            "type": type,
            "content": content,
            "user": user,
            "args": args
        })

    result = {}

    for host in back:
        data = back.get(host)
        if isinstance(data, dict):
            try:
                retcode = int(data["retcode"])
                stdout = str(data["stdout"])
                stderr = str(data["stderr"])
                total_time = int(data["total_time"])

            except Exception:
                result[host] = {
                    "code": 250,
                    "log": u"协议错误",
                    "time": 0
                }
                continue

            stdout = dcompress(stdout)
            stderr = dcompress(stderr)

            if not isCharset(stdout) or not isCharset(stderr):
                result[host] = {
                    "code": 250,
                    "log": u"字符编码错误",
                    "time": 0
                }
                continue

            if sys.getsizeof(stdout)/1024 > 100:
                stdout = stdout[0:100000]
        
            if sys.getsizeof(stderr)/1024 > 100:
                stderr = stderr[0:100000]

            result[host] = {
                "code": retcode,
                "log": stdout if stdout else stderr,
                "time": total_time
            }

        else:
            result[host] = {
                "code": 250,
                "log": str(data),
                "time": 0
            }

    for host in lost:
        result[host] = {
            "code": 250,
            "log": u"客户端未返回",
            "time": 0
        }
    
    return result
Example #11
0
 def NOtest_script(self):
     ret = test.script(str(uuid.uuid1()), compress("echo test && sleep 10 && echo 1"), 1, "root", "asdf")
     print dcompress(ret["stdout"])
     print dcompress(ret["stderr"])
     print ret["retcode"]