]> Frank Brehm's Git Trees - my-stuff/py-logrotate.git/commitdiff
Module LogRotateStatusFile.py weitergemacht
authorFrank Brehm <frank@brehm-online.com>
Mon, 13 Jun 2011 21:01:07 +0000 (21:01 +0000)
committerFrank Brehm <frank@brehm-online.com>
Mon, 13 Jun 2011 21:01:07 +0000 (21:01 +0000)
git-svn-id: http://svn.brehm-online.com/svn/my-stuff/python/PyLogrotate/trunk@250 ec8d2aa5-1599-4edb-8739-2b3a1bc399aa

LogRotateHandler.py
LogRotateStatusFile.py

index 5b6bde5357786d2d26954193cf0db8c8c2c33cd6..65d6ad1d6662870274e003f65ce31a83632347e7 100755 (executable)
@@ -27,6 +27,9 @@ import errno
 from LogRotateConfig import LogrotateConfigurationError
 from LogRotateConfig import LogrotateConfigurationReader
 
+from LogRotateStatusFile import LogrotateStatusFileError
+from LogRotateStatusFile import LogrotateStatusFile
+
 revision = '$Revision$'
 revision = re.sub( r'\$', '', revision )
 revision = re.sub( r'Revision: ', r'r', revision )
index 9cd1a6ea85beefc1e6266f9b81b9c32b2fa4da42..e36a17f2a2650f0a00576d6f8547bf3605adbcfe 100755 (executable)
@@ -33,6 +33,13 @@ __license__    = 'GPL3'
 
 #========================================================================
 
+class LogrotateStatusFileError(Exception):
+    '''
+    Base class for exceptions in this module.
+    '''
+
+#========================================================================
+
 class LogrotateStatusFile(object):
     '''
     Class for operations with the logrotate state file
@@ -97,6 +104,12 @@ class LogrotateStatusFile(object):
         @type: str
         '''
 
+        self.file_name_is_absolute = False
+        '''
+        @ivar: flag, that shows, that the file name is now an absolute path
+        @type: bool
+        '''
+
         self.fd = None
         '''
         @ivar: the file object of the opened status file, or None, if not opened
@@ -161,8 +174,59 @@ class LogrotateStatusFile(object):
 
     #-------------------------------------------------------
     def _read(self, must_exists = True):
+        '''
+        Reads the status file and put the results in the dict self.file_state.
+        Puts back the absolute path of the status file in self.file_name on success.
+
+        Throws a LogrotateStatusFileError on a error.
+
+        @param must_exists: throws an exception, if true and the status file
+                            doesn't exists
+        @type must_exists:  bool
+
+        @return:    success of reading
+        @rtype:     bool
+        '''
+
+        self.file_state = {}
+        _ = self.t.lgettext
+
+        # Check for existence of status file
+        if not os.path.exists(self.file_name):
+            msg = _("Status file '%s' doesn't exists.") % (self.file_name)
+            if must_exists:
+                raise LogrotateStatusFileError(msg)
+            else:
+                self.logger.info(msg)
+            return False
+
+        # makes the name of the status file an absolute path
+        if not self.file_name_is_absolute:
+            self.file_name = os.path.abspath(self.file_name)
+            self.file_name_is_absolute = True
+            if self.verbose > 2:
+                msg = _("Absolute path of status file is now '%s'.") % (self.file_name)
+                self.logger.debug(msg)
+
+        # Checks, that the status file is a regular file
+        if not os.path.isfile(self.file_name):
+            msg = _("Status file '%s' is not a regular file.") % (self.file_name)
+            raise LogrotateStatusFileError(msg)
+            return False
+
+        msg = _("Reading status file '%s' ...") % (self.file_name)
+        self.logger.debug(msg)
+
+        fd = None
+        try:
+            fd = open(self.file_name, 'Ur')
+        except IOError, e:
+            msg = _("Could not read status file '%s': ") % (configfile) + str(e)
+            raise LogrotateStatusFileError(msg)
+        self.fd = fd
+
+        
 
-        pass
         return True
 
 #========================================================================