From 92792670f025bead1bf69f234d44cdcfa5c4dd15 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C5=81ukasz=20Nowak?= <luke@nexedi.com>
Date: Fri, 22 Apr 2011 09:31:58 +0000
Subject: [PATCH]  - install logrotate and setup its cron entry  - put cron
 configuration in etc directory

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@45631 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 .../erp5/src/slapos/recipe/erp5/__init__.py    | 18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)

diff --git a/slapos/recipe/erp5/src/slapos/recipe/erp5/__init__.py b/slapos/recipe/erp5/src/slapos/recipe/erp5/__init__.py
index 2200e1f3af..6b15c6e5ea 100644
--- a/slapos/recipe/erp5/src/slapos/recipe/erp5/__init__.py
+++ b/slapos/recipe/erp5/src/slapos/recipe/erp5/__init__.py
@@ -54,6 +54,7 @@ class Recipe(BaseSlapRecipe):
     self.requirements, self.ws = self.egg.working_set([__name__])
     # self.cron_d is a directory, where cron jobs can be registered
     self.cron_d = self.installCrond()
+    self.logrotate_d = self.installLogrotate()
     ca_conf = self.installCertificateAuthority()
     memcached_conf = self.installMemcached(ip=self.getLocalIPv4Address(),
         port=11000)
@@ -88,6 +89,19 @@ class Recipe(BaseSlapRecipe):
     ))
     return self.path_list
 
+  def installLogrotate(self):
+    """Installs logortate main configuration file and registers its to cron"""
+    logrotate_d = os.path.abspath(os.path.join(self.etc_directory,
+      'logrotate.d'))
+    self._createDirectory(logrotate_d)
+    logrotate_conf = self.createConfigurationFile("logrotate.conf",
+        "include %s" % logrotate_d)
+    logrotate_cron = os.path.join(self.cron_d, 'logrotate')
+    state_file = os.path.join(self.data_root_directory, 'logrotate.status')
+    open(logrotate_cron, 'w').write('0 0 * * * %s -s %s %s' % (self.options['logrotate_binary'], state_file, logrotate_conf))
+    self.path_list.extend([logrotate_d, logrotate_conf, logrotate_cron])
+    return logrotate_d
+
   def linkBinary(self):
     """Links binaries to instance's bin directory for easier exposal"""
     for linkline in self.options.get('link_binary_list', '').splitlines():
@@ -234,8 +248,8 @@ class Recipe(BaseSlapRecipe):
 
   def installCrond(self):
     timestamps = self.createDataDirectory('cronstamps')
-    cron_d = os.path.join(self.var_directory, 'cron.d')
-    crontabs = os.path.join(self.var_directory, 'crontabs')
+    cron_d = os.path.join(self.etc_directory, 'cron.d')
+    crontabs = os.path.join(self.etc_directory, 'crontabs')
     logfile = os.path.join(self.log_directory, 'cron.log')
     self._createDirectory(cron_d)
     self._createDirectory(crontabs)
-- 
2.30.9