From 1ac0a832fcec05117372a44c88ae183c6afe3d31 Mon Sep 17 00:00:00 2001 From: Frank Brehm Date: Thu, 23 Mar 2017 18:23:09 +0100 Subject: [PATCH] Adding rotation of status file. --- pp_lib/quota_check.py | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/pp_lib/quota_check.py b/pp_lib/quota_check.py index e54bf0a..b243d11 100644 --- a/pp_lib/quota_check.py +++ b/pp_lib/quota_check.py @@ -38,7 +38,7 @@ from .common import pp, terminal_can_colors, to_bytes, to_bool, to_str from .cfg_app import PpCfgAppError, PpConfigApplication -__version__ = '0.4.1' +__version__ = '0.4.2' LOG = logging.getLogger(__name__) UTC = datetime.timezone.utc @@ -276,8 +276,36 @@ class PpQuotaCheckApp(PpConfigApplication): LOG.debug("Status from {f!r}:\n{s}".format( f=self.statusfile, s=pp(status))) + if 'checks' in status: + dates = [] + for date in status['checks'].keys(): + dates.append(date) + if dates: + dates.sort() + first_date = dates[0].replace(tzinfo=UTC) + tdiff = self.now - first_date + if tdiff.days > 7 or len(dates) > 5: + self.rotate_status_file(dates[-1]) + return {} + return status + # ------------------------------------------------------------------------- + def rotate_status_file(self, date=None): + + if not os.path.isfile(self.statusfile): + LOG.debug("File {!r} to rotate does not exists.".format(self.statusfile)) + return + + if not date: + file_stat = os.stat(self.statusfile) + date = datetime.datetime.utcfromtimestamp(file_stat.st_mtime) + (stem, ext) = os.path.splitext(self.statusfile) + new_fname = "{s}.{d}{e}".format( + s=stem, d=date.strftime('%Y-%m-%d_%H:%M:%S'), e=ext) + LOG.info("Renaming {o!r} -> {n!r}.".format(o=self.statusfile, n=new_fname)) + os.rename(self.statusfile, new_fname) + # ------------------------------------------------------------------------- def write_status_data(self): -- 2.39.5