Example #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)
Example #2
0
 def POST(self):
   x=web.input(id='0',mp_ip='',mp_user='',mp_pass='')
   poweroffcmd="ipmitool -I lanplus -H %s -U %s -P %s chassis power off" %(x.mp_ip,x.mp_user,x.mp_pass)
   powerstatuscmd="ipmitool -I lanplus -H %s-U %s -P %s chassis power status" %(x.mp_ip,x.mp_user,x.mp_pass)
   cmd=os.popen(poweroffcmd)
   time.sleep(2)
   phymachine=objects.PhysicalMachineInfoObject.get_by_uid(x.id)
   PhysicalMachineInfo.update(phymachine,{'power_status':0})
   return json.dumps({'result':"sucess"})
Example #3
0
 def POST(self):
   x=web.input(id='0',mp_ip='',mp_user='',mp_pass='')
   poweroffcmd="ipmitool -I lanplus -H %s -U %s -P %s chassis power off" %(x.mp_ip,x.mp_user,x.mp_pass)
   powerstatuscmd="ipmitool -I lanplus -H %s-U %s -P %s chassis power status" %(x.mp_ip,x.mp_user,x.mp_pass)
   cmd=os.popen(poweroffcmd)
   time.sleep(2)
   phymachine=objects.PhysicalMachineInfoObject.get_by_uid(x.id)
   PhysicalMachineInfo.update(phymachine,{'power_status':0})
   return json.dumps({'result':"sucess"})
Example #4
0
 def POST(self):
   x=web.input(id='0',mp_ip='',mp_user='',mp_pass='')
   poweroncmd="ipmitool -I lanplus -H %s -U %s -P %s chassis power on" %(x.mp_ip,x.mp_user,x.mp_pass)
   powerstatuscmd="ipmitool -I lanplus -H %s -U %s -P %s chassis power status" %(x.mp_ip,x.mp_user,x.mp_pass)
   cmd=os.popen(poweroncmd)
   cmd=os.popen(powerstatuscmd).read()
   if cmd:
       phymachine=objects.PhysicalMachineInfoObject.get_by_uid(x.id)
       PhysicalMachineInfo.update(phymachine,{'power_status':1})
   return json.dumps({'result':cmd})
Example #5
0
 def POST(self):
   x=web.input(id='0',mp_ip='',mp_user='',mp_pass='')
   poweroncmd="ipmitool -I lanplus -H %s -U %s -P %s chassis power on" %(x.mp_ip,x.mp_user,x.mp_pass)
   powerstatuscmd="ipmitool -I lanplus -H %s -U %s -P %s chassis power status" %(x.mp_ip,x.mp_user,x.mp_pass)
   cmd=os.popen(poweroncmd)
   cmd=os.popen(powerstatuscmd).read()
   if cmd:
       phymachine=objects.PhysicalMachineInfoObject.get_by_uid(x.id)
       PhysicalMachineInfo.update(phymachine,{'power_status':1})
   return json.dumps({'result':cmd})
     def POST(self):
          x=web.input(ids='')
          idlist = x.ids.split(",")
          #logger.info(idlist)
          for pid in idlist:
              p=objects.PhysicalMachineInfoObject.get_by_uid(int(pid))
              poweroffcmd="ipmitool -I lanplus -H %s -U %s -P %s chassis power off" %(p.mp_ip,p.mp_username,p.mp_passwd)
              #powerstatuscmd="ipmitool -I lanplus -H %s-U %s -P %s chassis power status" %(p.mp_ip,p.mp_username,p.mp_passwd)
              cmd=os.popen(poweroffcmd)
              time.sleep(2)
              PhysicalMachineInfo.update(p,{'power_status':0})

          return json.dumps({'result':"sucess"})
Example #7
0
     def POST(self):
          x=web.input(ids='')
          idlist = x.ids.split(",")
          #logger.info(idlist)
          for pid in idlist:
              p=objects.PhysicalMachineInfoObject.get_by_uid(int(pid))
              poweroffcmd="ipmitool -I lanplus -H %s -U %s -P %s chassis power off" %(p.mp_ip,p.mp_username,p.mp_passwd)
              #powerstatuscmd="ipmitool -I lanplus -H %s-U %s -P %s chassis power status" %(p.mp_ip,p.mp_username,p.mp_passwd)
              cmd=os.popen(poweroffcmd)
              time.sleep(2)
              PhysicalMachineInfo.update(p,{'power_status':0})

          return json.dumps({'result':"sucess"})
    def POST(self):
       x = web.input(ids='')
       idlist = x.ids.split(",")
       for pid in idlist:
           p=objects.PhysicalMachineInfoObject.get_by_uid(int(pid))
           poweroncmd="ipmitool -I lanplus -H %s -U %s -P %s chassis power on" %(p.mp_ip,p.mp_username,p.mp_passwd)
           powerstatuscmd="ipmitool -I lanplus -H %s -U %s -P %s chassis power status" %(p.mp_ip,p.mp_username,p.mp_passwd)
           cmd=os.popen(poweroncmd)
           time.sleep(5)
           cmd=os.popen(powerstatuscmd).read()
           if cmd:
              PhysicalMachineInfo.update(p,{'power_status':1})

       return json.dumps({'result':cmd})
Example #9
0
    def POST(self):
       x = web.input(ids='')
       idlist = x.ids.split(",")
       for pid in idlist:
           p=objects.PhysicalMachineInfoObject.get_by_uid(int(pid))
           poweroncmd="ipmitool -I lanplus -H %s -U %s -P %s chassis power on" %(p.mp_ip,p.mp_username,p.mp_passwd)
           powerstatuscmd="ipmitool -I lanplus -H %s -U %s -P %s chassis power status" %(p.mp_ip,p.mp_username,p.mp_passwd)
           cmd=os.popen(poweroncmd)
           time.sleep(5)
           cmd=os.popen(powerstatuscmd).read()
           if cmd:
              PhysicalMachineInfo.update(p,{'power_status':1})

       return json.dumps({'result':cmd})
Example #10
0
    def POST(self):
        x = web.input(ids='')
        idlist = x.ids.split(",")
        for pid in idlist:
            p = objects.PhysicalMachineInfoObject.get_by_uid(int(pid))
            additional_info = dict(
                p.additional_info) if p.additional_info else {}
            additional_info["init_status"] = "wait"
            PhysicalMachineInfo.update(p, {'additional_info': additional_info})
            db().commit()

        t = threading.Thread(target=self.thread_excutemethd, args=(idlist, ))
        t.start()
        logger.info(u"PhymachineInitAgentIdsHandler主线程执行完毕")
        return json.dumps({'result': "success"})
     def POST(self):
          x=web.input(ids='')
          idlist = x.ids.split(",")
          for pid in idlist:
              p=objects.PhysicalMachineInfoObject.get_by_uid(int(pid))
              powerstatuscmd="ipmitool -I lanplus -H %s -U %s -P %s chassis power status" %(p.mp_ip,p.mp_username,p.mp_passwd)
              cmd=os.popen(powerstatuscmd).read()
              logger.info("the node %s is %s" % (p.ip,cmd))
              #Chassis Power is on  Chassis Power is off
              if "on" in cmd:
                 PhysicalMachineInfo.update(p,{'power_status':1})
              else:
                 PhysicalMachineInfo.update(p,{'power_status':0})

          return json.dumps({'result':"sucess"})
Example #12
0
     def POST(self):
          x=web.input(ids='')
          idlist = x.ids.split(",")
          for pid in idlist:
              p=objects.PhysicalMachineInfoObject.get_by_uid(int(pid))
              powerstatuscmd="ipmitool -I lanplus -H %s -U %s -P %s chassis power status" %(p.mp_ip,p.mp_username,p.mp_passwd)
              cmd=os.popen(powerstatuscmd).read()
              logger.info("the node %s is %s" % (p.ip,cmd))
              #Chassis Power is on  Chassis Power is off
              if "on" in cmd:
                 PhysicalMachineInfo.update(p,{'power_status':1})
              else:
                 PhysicalMachineInfo.update(p,{'power_status':0})

          return json.dumps({'result':"sucess"})
Example #13
0
class PhymachineInitAgentHandler(BaseHandler):
    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 threadupdatestatus(self, pid, util):
        #excute_initnodeshell 是个阻塞函数,一直会等到init_node.sh在
        #每个节点上执行完毕才会执行后面的代码
        util.excute_initnodeshell()
        phymachine = objects.PhysicalMachineInfoObject.get_by_uid(pid)
        additional_info = dict(
            phymachine.additional_info) if phymachine.additional_info else {}
        additional_info["init_status"] = False
        try:
            util.getshellresulst()
            util.copynailgunagent()
            logger.info(phymachine.ip +
                        u":读到initnode_res文件,子线程设置init_status为true")
            additional_info["init_status"] = True
        except Exception, e:
            logger.info(phymachine.ip + u"读取initnode_res文件异常")

        PhysicalMachineInfo.update(phymachine,
                                   {'additional_info': additional_info})
        db().commit()
        logger.info(phymachine.ip + u":初始化完毕")
Example #14
0
            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:
                additional_info["init_status"] = False
        except Exception, e:
            additional_info["init_status"] = False
            logger.info(e)
        PhysicalMachineInfo.update(p, {'additional_info': additional_info})
        db().commit()

    def thread_excutemethd(self, idlist):
        pool = threadpool.ThreadPool(5)
        requests = threadpool.makeRequests(self.handlerMachine, idlist)
        [pool.putRequest(req) for req in requests]
        pool.wait()
        logger.info(u"节点批量初始化结束%s" % (str(idlist)))


class PhymachineInitAgentStatusHandler(BaseHandler):
    def POST(self):
        x = web.input(ids='')
        idlist = x.ids.split(",")
        phymachines = db().query(PhysicalMachineInfo).filter(