def run(self):
     logger.info('JianzhuThread start, will do %d times'%(Times))
     #logger.info('I will jianzhu: ' + ' '.join(Jianzhu_List))
     if Delay_Time > 0:
         logger.info('I will start jianzhu at ' + util.next_time(Delay_Time))
         time.sleep(Delay_Time)
     inteval = 30
     ci = 1
     # old
     if Times > 0:
         while ci <= Times:
             for i in range(len(Jianzhu_List)):
                 self.do_jianzhu(Jianzhu_List[i])
                 if i < len(Jianzhu_List) - 1:
                     time.sleep(inteval)
             logger.info('sleeping %d seconds in %d time'%(Sleep_Time, ci))
             logger.info('next round will at ' + util.next_time(Sleep_Time))
             ci += 1
             time.sleep(Sleep_Time)
     else:
         while True:
             # get general info
             gi = GeneralInfo()
             next_cd = gi.get_next_CDTime()
             stime = gi.get_serverTime()
             next_jname = self.get_next_jname(gi)
             sp = 0
             if not next_jname:
                 logger.info('I will send notify at server time: ' + util.next_time(gi.get_next_CDTime()-gi.get_serverTime()))
                 time.sleep(max(0, gi.get_next_CDTime() - gi.get_serverTime()))
                 logger.info('All jianzu has upgraded to max level, will exit')
                 util.notify('All jianzu has upgraded to max level')
                 break
             if next_cd > stime:
                 sp = next_cd - stime + 1
             if sp > 0:
                 logger.info('I will start upgrade %s at %s'%(next_jname, util.next_time(sp)))
                 time.sleep(sp)
             else:
                 logger.info('I will start upgrade %s now'%(next_jname))
             res = self.do_jianzhu(next_jname)
             if res.has_key('exception'):
                 msg = res['exception']['message']
                 logger.error('Got Exception "%s", will exit'%(msg))
                 if msg == 'CDTimeNotCool':
                     continue
                 elif msg == 'noBuildTeamUsable':
                     continue
                 elif msg == 'maintenance':
                     time.sleep(2000)
                     continue
                 return
             time.sleep(2)