Example #1
0
File: vps_mgr.py Project: 42qu/vps
 def run_loop(self, *cmds):
     self.logger.info("worker for %s started" %
                      (",".join(map(CMD._get_name, cmds))))
     while self.running:
         try:
             rpc = self.rpc_connect()
             pending_jobs = []
             try:
                 for cmd in cmds:
                     vps_id = rpc.todo(cmd)
                     self.logger_debug.info("cmd:%s, vps_id:%s" %
                                            (CMD._get_name(cmd), vps_id))
                     if vps_id > 0:
                         vps_info = rpc.vps(vps_id)
                         if not self.vps_is_valid(vps_info):
                             self.logger.error(
                                 "invalid vps data received, cmd=%s, %s" %
                                 (CMD._get_name(cmd), self.dump_vps_info(vps_info)))
                             self.done_task(
                                 cmd, vps_id, False, "invalid vpsinfo")
                             vps_info = None
                         else:
                             pending_jobs.append((cmd, vps_id, vps_info))
             finally:
                 rpc.close()
             for cmd, vps_id, vps_info in pending_jobs:
                 if not self.running:
                     break
                 self.run_once(cmd, vps_id, vps_info)
         except (socket.error, RPC_Exception), e:
             self.logger_net.exception(e)
         except Exception, e:
             self.logger.exception("uncaught exception: " + str(e))
Example #2
0
 def run_loop(self, *cmds):
     self.logger.info("worker for %s started" %
                      (",".join(map(CMD._get_name, cmds))))
     while self.running:
         try:
             rpc = self.rpc_connect()
             pending_jobs = []
             try:
                 for cmd in cmds:
                     vps_id = rpc.todo(cmd)
                     self.logger_debug.info("cmd:%s, vps_id:%s" %
                                            (CMD._get_name(cmd), vps_id))
                     if vps_id > 0:
                         vps_info = rpc.vps(vps_id)
                         if not self.vps_is_valid(vps_info):
                             self.logger.error(
                                 "invalid vps data received, cmd=%s, %s" %
                                 (CMD._get_name(cmd),
                                  self.dump_vps_info(vps_info)))
                             self.done_task(cmd, vps_id, False,
                                            "invalid vpsinfo")
                             vps_info = None
                         else:
                             pending_jobs.append((cmd, vps_id, vps_info))
             finally:
                 rpc.close()
             for cmd, vps_id, vps_info in pending_jobs:
                 if not self.running:
                     break
                 self.run_once(cmd, vps_id, vps_info)
         except (socket.error, RPC_Exception), e:
             self.logger_net.exception(e)
         except Exception, e:
             self.logger.exception("uncaught exception: " + str(e))
Example #3
0
File: vps_mgr.py Project: 42qu/vps
 def _try_lock_vps(self, cmd, vps_id):
     self._locker.acquire()
     if self._vps_locker.has_key(vps_id):
         _cmd = self._vps_locker.get(vps_id)
         self.logger_debug.info("CMD %s try to lock vps%s failed: locked by CMD %s" % (
             CMD._get_name(cmd), vps_id, CMD._get_name(_cmd)
         ))
         res = False
     else:
         self._vps_locker[vps_id] = cmd
         res = True
     self._locker.release()
     return res
Example #4
0
 def _try_lock_vps(self, cmd, vps_id):
     self._locker.acquire()
     if self._vps_locker.has_key(vps_id):
         _cmd = self._vps_locker.get(vps_id)
         self.logger_debug.info(
             "CMD %s try to lock vps%s failed: locked by CMD %s" %
             (CMD._get_name(cmd), vps_id, CMD._get_name(_cmd)))
         res = False
     else:
         self._vps_locker[vps_id] = cmd
         res = True
     self._locker.release()
     return res
Example #5
0
File: vps_mgr.py Project: 42qu/vps
 def doing(self, cmd, vps_id):
     try:
         rpc = self.rpc_connect()
         try:
             rpc.doing(cmd, vps_id)
             self.logger.info("send doing cmd=%s vps_id=%s" %
                              (CMD._get_name(cmd), vps_id))
         finally:
             rpc.close()
     except Exception, e:
         self.logger_net.exception(e)
Example #6
0
 def doing(self, cmd, vps_id):
     try:
         rpc = self.rpc_connect()
         try:
             rpc.doing(cmd, vps_id)
             self.logger.info("send doing cmd=%s vps_id=%s" %
                              (CMD._get_name(cmd), vps_id))
         finally:
             rpc.close()
     except Exception, e:
         self.logger_net.exception(e)
Example #7
0
File: vps_mgr.py Project: 42qu/vps
 def done_task(self, cmd, vps_id, is_ok, msg=''):
     state = 0
     if not is_ok:
         state = 1
     try:
         rpc = self.rpc_connect()
         try:
             self.logger.info("send done_task cmd=%s vps_id=%s" %
                              (CMD._get_name(cmd), str(vps_id)))
             rpc.done(cmd, vps_id, state, msg)
         finally:
             rpc.close()
     except Exception, e:
         self.logger_net.exception(e)
Example #8
0
 def done_task(self, cmd, vps_id, is_ok, msg=''):
     state = 0
     if not is_ok:
         state = 1
     try:
         rpc = self.rpc_connect()
         try:
             self.logger.info("send done_task cmd=%s vps_id=%s" %
                              (CMD._get_name(cmd), str(vps_id)))
             rpc.done(cmd, vps_id, state, msg)
         finally:
             rpc.close()
     except Exception, e:
         self.logger_net.exception(e)