[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