[Erp5-report] r45648 luke - /erp5/trunk/utils/slapos.recipe.erp5/src/slapos/recipe/erp5/

nobody at svn.erp5.org nobody at svn.erp5.org
Fri Apr 22 15:21:36 CEST 2011


Author: luke
Date: Fri Apr 22 15:21:35 2011
New Revision: 45648

URL: http://svn.erp5.org?rev=45648&view=rev
Log:
 - register zeo rotation and add utility script to send any signal to pid value stored in file

Added:
    erp5/trunk/utils/slapos.recipe.erp5/src/slapos/recipe/erp5/killpidfromfile.py
Modified:
    erp5/trunk/utils/slapos.recipe.erp5/src/slapos/recipe/erp5/__init__.py

Modified: erp5/trunk/utils/slapos.recipe.erp5/src/slapos/recipe/erp5/__init__.py
URL: http://svn.erp5.org/erp5/trunk/utils/slapos.recipe.erp5/src/slapos/recipe/erp5/__init__.py?rev=45648&r1=45647&r2=45648&view=diff
==============================================================================
--- erp5/trunk/utils/slapos.recipe.erp5/src/slapos/recipe/erp5/__init__.py [utf8] (original)
+++ erp5/trunk/utils/slapos.recipe.erp5/src/slapos/recipe/erp5/__init__.py [utf8] Fri Apr 22 15:21:35 2011
@@ -55,6 +55,10 @@ class Recipe(BaseSlapRecipe):
     # self.cron_d is a directory, where cron jobs can be registered
     self.cron_d = self.installCrond()
     self.logrotate_d = self.installLogrotate()
+    self.killpidfromfile = zc.buildout.easy_install.scripts(
+        [('killpidfromfile', __name__ + '.killpidfromfile',
+          'killpidfromfile')], self.ws, sys.executable, self.bin_directory)[0]
+    self.path_list.append(self.killpidfromfile)
     ca_conf = self.installCertificateAuthority()
     memcached_conf = self.installMemcached(ip=self.getLocalIPv4Address(),
         port=11000)
@@ -460,12 +464,16 @@ class Recipe(BaseSlapRecipe):
     return []
 
   def installZeo(self, ip, port, name, path):
+    zeo_event_log = os.path.join(self.log_directory, 'zeo.log')
+    zeo_pid = os.path.join(self.run_directory, 'zeo.pid')
+    self.registerLogRotation('zeo', [zeo_event_log],
+        self.killpidfromfile + ' ' + zeo_pid + ' SIGUSR2')
     config = dict(
       zeo_ip=ip,
       zeo_port=port,
       zeo_storagename=name,
-      zeo_event_log=os.path.join(self.log_directory, 'zeo.log'),
-      zeo_pid=os.path.join(self.run_directory, 'zeo.pid'),
+      zeo_event_log=zeo_event_log,
+      zeo_pid=zeo_pid,
       zeo_zodb=path
     )
     zeo_conf_path = self.createConfigurationFile('zeo.conf',

Added: erp5/trunk/utils/slapos.recipe.erp5/src/slapos/recipe/erp5/killpidfromfile.py
URL: http://svn.erp5.org/erp5/trunk/utils/slapos.recipe.erp5/src/slapos/recipe/erp5/killpidfromfile.py?rev=45648&view=auto
==============================================================================
--- erp5/trunk/utils/slapos.recipe.erp5/src/slapos/recipe/erp5/killpidfromfile.py (added)
+++ erp5/trunk/utils/slapos.recipe.erp5/src/slapos/recipe/erp5/killpidfromfile.py [utf8] Fri Apr 22 15:21:35 2011
@@ -0,0 +1,12 @@
+import sys
+import os
+import signal
+def killpidfromfile():
+  file = sys.argv[1]
+  sig = getattr(signal, sys.argv[2], None)
+  if sig is None:
+    raise ValueError('Unknwon signal name %s' % sys.argv[2])
+  if os.path.exists(file):
+    pid = int(open(file).read())
+    print 'Killing pid %s with signal %s' % (pid, sys.argv[2])
+    os.kill(pid, sig)



More information about the Erp5-report mailing list