[Erp5-report] r15078 - /erp5/trunk/utils/multi-oood/

nobody at svn.erp5.org nobody at svn.erp5.org
Fri Jun 29 20:39:49 CEST 2007


Author: bartek
Date: Fri Jun 29 20:39:48 2007
New Revision: 15078

URL: http://svn.erp5.org?rev=15078&view=rev
Log:
(by Adam):
- fixed naming convention
- improved formatting
- fixed one bug
- added missing docstrings

Modified:
    erp5/trunk/utils/multi-oood/config.py
    erp5/trunk/utils/multi-oood/logger.py
    erp5/trunk/utils/multi-oood/moood.conf
    erp5/trunk/utils/multi-oood/moood.py
    erp5/trunk/utils/multi-oood/oood.py

Modified: erp5/trunk/utils/multi-oood/config.py
URL: http://svn.erp5.org/erp5/trunk/utils/multi-oood/config.py?rev=15078&r1=15077&r2=15078&view=diff
==============================================================================
--- erp5/trunk/utils/multi-oood/config.py (original)
+++ erp5/trunk/utils/multi-oood/config.py Fri Jun 29 20:39:48 2007
@@ -17,16 +17,15 @@
 #
 ############################################################################
 
-import ConfigParser, os
+import ConfigParser
+import os
 import sys
 
-Config = ConfigParser.ConfigParser()
+config = ConfigParser.ConfigParser()
 
 try:
-  Config.read(['/etc/moood/moood.conf', 'moood.conf'])
+  config.read(['/etc/moood/moood.conf', 'moood.conf'])
 except:
   print 'Is config correct?'
   os.sys.exit(1)
 
-# vim: filetype=python syntax=python shiftwidth=2 softtabstop=2
-

Modified: erp5/trunk/utils/multi-oood/logger.py
URL: http://svn.erp5.org/erp5/trunk/utils/multi-oood/logger.py?rev=15078&r1=15077&r2=15078&view=diff
==============================================================================
--- erp5/trunk/utils/multi-oood/logger.py (original)
+++ erp5/trunk/utils/multi-oood/logger.py Fri Jun 29 20:39:48 2007
@@ -22,11 +22,11 @@
 import sys
 import traceback
 
-from config import Config
+from config import config
 
-filename = Config.get('system', 'log_file')
+filename = config.get('system', 'log_file')
 
-logging.basicConfig(level=eval(Config.get('system', 'log_level')), # :|
+logging.basicConfig(level=eval(config.get('system', 'log_level')), # :|
           format='%(asctime)s %(levelname)-8s %(message)s',
           datefmt='%a, %d %b %Y %H:%M:%S',
           filename=filename,
@@ -37,9 +37,7 @@
   logging.error(str(e))
   logging.debug(''.join(traceback.format_tb(tb)))
 
-Logger = logging
+logger = logging
 
-Logger.logException = logException
+logger.logException = logException
 
-# vim: filetype=python syntax=python shiftwidth=2 softtabstop=2
-

Modified: erp5/trunk/utils/multi-oood/moood.conf
URL: http://svn.erp5.org/erp5/trunk/utils/multi-oood/moood.conf?rev=15078&r1=15077&r2=15078&view=diff
==============================================================================
--- erp5/trunk/utils/multi-oood/moood.conf (original)
+++ erp5/trunk/utils/multi-oood/moood.conf Fri Jun 29 20:39:48 2007
@@ -36,7 +36,7 @@
 socket_timeout = 10
 # Time in seconds when moood refresh information
 # about ooods availability.
-ooods_list_refresh_time = 60
+oood_list_refresh_time = 60
 # Waiting for free oood timeout in seconds.
 wait_for_free_oood_time = 20
 

Modified: erp5/trunk/utils/multi-oood/moood.py
URL: http://svn.erp5.org/erp5/trunk/utils/multi-oood/moood.py?rev=15078&r1=15077&r2=15078&view=diff
==============================================================================
--- erp5/trunk/utils/multi-oood/moood.py (original)
+++ erp5/trunk/utils/multi-oood/moood.py Fri Jun 29 20:39:48 2007
@@ -31,59 +31,69 @@
 from SimpleXMLRPCServer import SimpleXMLRPCServer
 from SocketServer import ThreadingMixIn
 
-from config import Config
-from logger import Logger
-
-from oood import ListOoods
-
-socket.setdefaulttimeout(float(Config.get('misc', 'socket_timeout')))
+from config import config
+from logger import logger
+
+from oood import OoodContainer
+
+socket.setdefaulttimeout(float(config.get('misc', 'socket_timeout')))
 
 class MooodException(Exception): pass
 class AllOoodsAreBusy(MooodException): pass
 
 class MOood(ThreadingMixIn, SimpleXMLRPCServer):
-  """This class represents multi-oood server."""
+  """
+    This class represents multi-oood server.
+  """
   def server_bind(self):
     self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
     self.socket.bind(self.server_address)
 
 class Procesor(object):
-  public_funcs = ('convert', 'getmetadata', 'setmetadata', 'generate', 'getmetadatatoolong', 'getAllowedTargetItemList')
-  def __init__(self, listooods):
-    """Inicjuje obiekt."""
-    self._generateFuncs()
-    self.listooods = listooods
-
-  def _generateFuncs(self):
+  """
+    Main request handler. Functions executed by oood clients
+    are auto-generated.
+  """
+  public_function_list = ('convert', 'getmetadata', 'setmetadata', 'generate', 'getmetadatatoolong', 'getAllowedTargetItemList')
+  def __init__(self, oood_list):
+    """
+      Initiates the object, generating public functions.
+    """
+    self._generateFunctionList()
+    self.oood_list = oood_list
+
+  def _generateFunctionList(self):
     """Generate functions executed by oood clients."""
-    for f in self.public_funcs:
-      #setattr(self, 'run_' + f, self._wrap(f))
+    for f in self.public_function_list:
       setattr(self, f, self._wrap(f))
 
   def _wrap(self, f):
-    """Used to generate funcions executed by oood clients."""
+    """
+      Used to generate funcions executed by oood clients.
+    """
     def fun(*args, **kwargs):
-      Logger.debug('I have %s request.' % f)
-      oood = self.listooods.getFreeOood()
+      logger.debug('I have %s request.' % f)
+      oood = self.oood_list.getFreeOood()
       if not oood:
         raise AllOoodsAreBusy()
       try:
-        Logger.debug('I\'m asking oood (%s).' % oood.name)
-        #res = oood.sp.__getattr__('run_%s' % f)(*args, **kwargs)
+        logger.debug('I\'m asking oood (%s).' % oood.name)
         res = oood.sp.__getattr__('%s' % f)(*args, **kwargs)
-        Logger.debug('I have res.')
+        logger.debug('I have res.')
         return res
       finally:
         oood.free = True
     return fun
 
-  def ooods(self):
-    """Return information about available/unavailable and
-    free/busy ooods."""
-    adict={True:'available', False:'unavailable'}
-    fdict={True:'free', False:'busy'}
+  def getOoodInfo(self):
+    """
+      Return information about available/unavailable and
+      free/busy ooods.
+    """
+    adict = {True:'available', False:'unavailable'}
+    fdict = {True:'free', False:'busy'}
     dump = ''
-    for oood in self.listooods.list:
+    for oood in self.oood_list.list:
       dump += "%s\t%s" % (oood.name, adict[oood.available])
       if oood.available:
         dump += " (%s)" % fdict[oood.free]
@@ -120,7 +130,6 @@
   if not len(opts):
     usage()
   
-  #try:
   for o, a in opts:
     if o == '--stop':
       stop()
@@ -129,18 +138,17 @@
     elif o == '--state':
       state()
     elif o == '--show-ooods':
-      showOoodsStates()
+      showOoodInfo()
     else:
       usage()
-  #except Exception, e:
-  #  Logger.logException(e)
+
 
 def start():
   # Create a lock file to not run more than one server and to save the pid
-  lock_file_path = os.path.join(Config.get('system', 'run_dir'), 'server_pid.lock')
+  lock_file_path = os.path.join(config.get('system', 'run_dir'), 'server_pid.lock')
   if os.path.exists(lock_file_path):
     message = "Server is already running (lock file %s exists)" % lock_file_path
-    Logger.warning(message)
+    logger.warning(message)
     print message
     sys.exit(1)
   else:
@@ -149,40 +157,40 @@
       server_pid = os.getpid()
       lock_file.write(str(server_pid))
       lock_file.close()
-      Logger.debug('Lock file created as %s.' % lock_file_path)
+      logger.debug('Lock file created as %s.' % lock_file_path)
     except IOError:
-      message="I can't open lock file %s." % lock_file_path
-      Logger.error(message)
+      message = "I can't open lock file %s." % lock_file_path
+      logger.error(message)
       print message
       sys.exit(1)
 
     message = "Server - Started as process %s" % server_pid
-    Logger.info(message)
+    logger.info(message)
     print message
     atexit.register(lambda: sys.exit(0))
     signal.signal(signal.SIGTERM, atSIGTERM)
 
-  Ooods = ListOoods(Config.items('ooods'))
-  Ooods.setDaemon(True)
-  Ooods.start()
-  server = MOood((Config.get('server', 'server_host'), int(Config.get('server', 'server_port'))))
-  server.register_instance(Procesor(Ooods))
+  oood_container = OoodContainer(config.items('ooods'))
+  oood_container.setDaemon(True)
+  oood_container.start()
+  server = MOood((config.get('server', 'server_host'), int(config.get('server', 'server_port'))))
+  server.register_instance(Procesor(oood_container))
   server.serve_forever()
 
 def atSIGTERM(signum, frame):
-  lock_file_path = os.path.join(Config.get('system', 'run_dir'), 'server_pid.lock')
+  lock_file_path = os.path.join(config.get('system', 'run_dir'), 'server_pid.lock')
   try:
     os.remove(lock_file_path)
-    Logger.debug("Lock file removed.")
+    logger.debug("Lock file removed.")
   except IOError:
-    Logger.warning("I can't remove lock file (%s)." % lock_file_path)
+    logger.warning("I can't remove lock file (%s)." % lock_file_path)
   sys.exit(0)
 
 def stop():
-  lock_file_path = os.path.join(Config.get('system', 'run_dir'), 'server_pid.lock')
+  lock_file_path = os.path.join(config.get('system', 'run_dir'), 'server_pid.lock')
   # Get the server process id which is written in the lock file.
   if not os.path.exists(lock_file_path):
-    Logger.info("Server - Can't stop server: it was not running!")
+    logger.info("Server - Can't stop server: it was not running!")
     sys.exit(1)
   else:
     try:
@@ -190,27 +198,27 @@
       server_pid = int(lock_file.read())
       lock_file.close()
     except IOError:
-	  Logger.error("I can't open lock file.")
+	  logger.error("I can't open lock file.")
 
     try:
       os.kill(server_pid, signal.SIGTERM)
     except OSError:
-      Logger.warning("I can't kill moood.")
+      logger.warning("I can't kill moood.")
       
-    Logger.info("Server - Stopped properly")
+    logger.info("Server - Stopped properly")
     sys.exit(0)
 
 def state():
-  lock_file_path = os.path.join(Config.get('system', 'run_dir'), 'server_pid.lock')
+  lock_file_path = os.path.join(config.get('system', 'run_dir'), 'server_pid.lock')
   if os.path.exists(lock_file_path):
     print 'Multi-Oood is running.'
   else:
     print 'Multi-Oood is stoped.'
 
-def showOoodsStates():
-  sp = xmlrpclib.ServerProxy('http://%s:%s' % (Config.get('server', 'server_host'), int(Config.get('server', 'server_port'))), allow_none = True)
-  try:
-    print sp.ooods()
+def showOoodInfo():
+  sp = xmlrpclib.ServerProxy('http://%s:%s' % (config.get('server', 'server_host'), int(config.get('server', 'server_port'))), allow_none = True)
+  try:
+    print sp.getOoodInfo()
   except:
     print "I can't get info."
 
@@ -220,6 +228,3 @@
   except KeyboardInterrupt:
     sys.exit(0)
 
-
-# vim: filetype=python syntax=python shiftwidth=2 softtabstop=2
-

Modified: erp5/trunk/utils/multi-oood/oood.py
URL: http://svn.erp5.org/erp5/trunk/utils/multi-oood/oood.py?rev=15078&r1=15077&r2=15078&view=diff
==============================================================================
--- erp5/trunk/utils/multi-oood/oood.py (original)
+++ erp5/trunk/utils/multi-oood/oood.py Fri Jun 29 20:39:48 2007
@@ -23,39 +23,43 @@
 import time
 import xmlrpclib
 
-from config import Config
-from logger import Logger
+from config import config
+from logger import logger
 
-socket.setdefaulttimeout(float(Config.get('misc','socket_timeout')))
+socket.setdefaulttimeout(float(config.get('misc','socket_timeout')))
 
 class Oood(object):
-  """This class represents connection with oood."""
+  """
+    This class represents connection with oood.
+  """
 
   def __init__(self, name, addr):
-    """Create new object.
+    """
+      Create new object.
 
-    Arguments:
-      name - name 
-      addr - tupla (host, port)"""
-    
+      Arguments:
+        name - name 
+        addr - tuple (host, port)
+    """
     self.name = name
     self.free = True
     self.available = False
     self.sp = xmlrpclib.ServerProxy('http://%s:%s' % addr, allow_none = True)
-    Logger.debug('Created %s (%s:%s)' % (name, addr[0], addr[1]))
+    logger.debug('Created %s (%s:%s)' % (name, addr[0], addr[1]))
 
   def check(self):
-    """Checks if server is available. If is this set
-    self.available = True else self.available = False.
+    """
+      Checks if server is available. If is this set
+      self.available = True else self.available = False.
 
-    The true is returned when self.available changes.
+      The true is returned when self.available changes.
     """
     
     def changeAvailable(name, available):
       if self.available != available:
         self.available = available
         adict={True:'available', False:'unavailable'}
-        Logger.info('%s is now %s.' % (name, adict[available]))
+        logger.info('%s is now %s.' % (name, adict[available]))
         return True
       return False
 
@@ -70,29 +74,33 @@
   def __repr__(self):
     return '<%s a:%s f:%s>' % (self.name, self.available, self.free)
 
-class ListOoods(threading.Thread):
-  """This class represents ooods container."""
+class OoodContainer(threading.Thread):
+  """
+    This class represents ooods container. Container is a thread
+    which is checking ooods availability.
+  """
 
   def __init__(self, addrlist):
-    """Create object contained list of ooods.
+    """
+      Create object contained list of ooods.
 
-    Arguments:
-      addrlist - list of addrsses, where ooods are running.
-      List conteins tuple like (name, host, port).
-      Port can be in format:
-      '8008'
-      '8008-8012'
-      '8008,8012,8026'
-      '7777,8008-8012'
+      Arguments:
+        addrlist - list of addrsses, where ooods are running.
+        List conteins tuple like (name, host, port).
+        Port can be in format:
+        '8008'
+        '8008-8012'
+        '8008,8012,8026'
+        '7777,8008-8012'
     """
-
     threading.Thread.__init__(self)
     self.list = [Oood(name, (host, port)) for name, host, port in self._parseAddr(addrlist)]
-    self.refresh()
     self.lock = threading.Lock()
 
   def _parseAddr(self, addrlist):
-    """Parse list of adresses."""
+    """
+      Parse list of adresses.
+    """
     def createName(name, n):
       if n:
         return "%s-%s" % (name, n)
@@ -117,22 +125,24 @@
             newlist.append((createName(name, n), host, p))
             n += 1
         else:
-          Logger.error("I can't parse ports from config file.")
+          logger.error("I can't parse ports from config file.")
     return newlist
 
   def run(self):
+    """
+      Method representing the thread's activity. Refresh information
+      about availability each oood.
+    """
     while True:
-      time.sleep(float(Config.get('misc', 'ooods_list_refresh_time')))
-      self.refresh()
-
-  def refresh(self):
-    for oood in self.list:
-      oood.check()
+      for oood in self.list:
+        oood.check()
+      time.sleep(float(config.get('misc', 'oood_list_refresh_time')))
 
   def getFreeOood(self):
-    """Return free oood and set is status to busy. To free
-    this oood you should set oood.free = True."""
-
+    """
+      Return free oood and set is status to busy. To free
+      this oood you should set oood.free = True.
+    """
     self.lock.acquire()
     try:
       roood = None
@@ -143,11 +153,9 @@
             roood = oood
             roood.free = False
             return roood
-        if time.time() - starttime > float(Config.get('misc', 'wait_for_free_oood_time')):
+        if time.time() - starttime > float(config.get('misc', 'wait_for_free_oood_time')):
           break
       return None
     finally:
       self.lock.release()
 
-# vim: filetype=python syntax=python shiftwidth=2 softtabstop=2
-




More information about the Erp5-report mailing list