Ejemplo n.º 1
0
    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)
Ejemplo n.º 2
0
 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: