dsa-check-backuppg: Support per host and per cluster retention times
authorPeter Palfrader <peter@palfrader.org>
Tue, 14 Nov 2017 09:30:20 +0000 (10:30 +0100)
committerPeter Palfrader <peter@palfrader.org>
Tue, 14 Nov 2017 09:30:20 +0000 (10:30 +0100)
dsa-nagios-checks/checks/dsa-check-backuppg
dsa-nagios-checks/debian/changelog

index ddef856..b12479b 100755 (executable)
@@ -120,6 +120,25 @@ def parse_pg_backup_info(fn):
     f.close()
     return i
 
+def get_retention(config, host, db):
+    assert('retention' in config)
+
+    assert('backups' in config)
+    assert(isinstance(config['backups'], dict))
+
+    assert(host in config['backups'])
+    assert(isinstance(config['backups'][host], dict))
+
+    assert(db in config['backups'][host])
+    if isinstance(config['backups'][host][db], dict) and 'retention' in config['backups'][host][db]:
+        r = config['backups'][host][db]['retention']
+    elif '_retention' in config['backups'][host]:
+        r = config['backups'][host]['_retention']
+    else:
+        r = config['retention']
+
+    assert(isinstance(r, int))
+    return r
 
 parser = optparse.OptionParser()
 parser.set_usage("%prog [-c=<CONFFILE>]               (nagios mode)\n" +
@@ -264,7 +283,7 @@ for dir in os.listdir('.'):
                 backup_state[db]['base_needs_wal_until'] = walbase
 
                 start = time.mktime(time.strptime(info['start time'], '%Y-%m-%d %H:%M:%S %Z'))
-                if start + config['retention'] < time.time():
+                if start + get_retention(config, dir, db) < time.time():
                     backup_state[db]['can_expire_for_base_hit'] = True
                 continue
 
index c7c3861..bd22f5f 100644 (file)
@@ -7,6 +7,8 @@ dsa-nagios-checks (111) UNRELEASED; urgency=medium
   * dsa-update-unowned-file-status: ignore autofs and nfs4
   * dsa-check-backuppg: Do not print info level items (IGNORED, etc.)
     without -v.
+  * dsa-check-backuppg: Support per host and per cluster retention
+    times.
 
   [ Julien Cristau ]
   * Set LWP::UserAgent timeout in dsa-check-mirrorsync