def POST(self): x = web.input(id='0', m_ip='', mp_user='', mp_pass='', ethname='') util = CommonUtil(x.m_ip, x.mp_user, x.mp_pass) result = util.create_ssh_masterToAgent(ethname=x.ethname) phymachine = objects.PhysicalMachineInfoObject.get_by_uid(x.id) additional_info = dict( phymachine.additional_info) if phymachine.additional_info else {} res = {} if result: res["result"] = "success" additional_info["init_status"] = "wait" PhysicalMachineInfo.update(phymachine, {'additional_info': additional_info}) db().commit() #必须在启动子线程之前把数据库session更新到database #否则会和子线程中对数据的修改造成冲突 t = threading.Thread(target=self.threadupdatestatus, args=( x.id, util, )) t.start() else: additional_info["init_status"] = False PhysicalMachineInfo.update(phymachine, {'additional_info': additional_info}) db().commit() return json.dumps(res)
def handlerMachine(self, pid): try: p = objects.PhysicalMachineInfoObject.get_by_uid(int(pid)) util = CommonUtil(p.ip, p.mp_username, p.mp_passwd) res = util.create_ssh_masterToAgent(ethname=p.ethname) additional_info = dict( p.additional_info) if p.additional_info else {} #additional_info["init_status"]=res #循环到当前agent上去读取/root/initnode_res #读取到True则表示init_node.sh在节点上成功执行 if res: try: util.excute_initnodeshell() time.sleep(1) util.getshellresulst() util.copynailgunagent() additional_info["init_status"] = True except Exception, e: logger.info(p.ip + u"读取initnode_res文件异常") additional_info["init_status"] = False else: