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"]
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)
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)
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)
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)
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)
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)
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)
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)
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