rsync-snapshot: better ConfigError for referencing invalid [interval:..] from [target:...:intervals]; tidy up INFO output a little
authorTero Marttila <terom@paivola.fi>
Fri, 02 Mar 2012 16:59:14 +0200
changeset 35 b6c0bdd6d8d4
parent 34 8c23dc925ed7
child 36 6070507e09ce
rsync-snapshot: better ConfigError for referencing invalid [interval:..] from [target:...:intervals]; tidy up INFO output a little
scripts/pvlbackup-rsync-snapshot
--- a/scripts/pvlbackup-rsync-snapshot	Fri Mar 02 16:46:38 2012 +0200
+++ b/scripts/pvlbackup-rsync-snapshot	Fri Mar 02 16:59:14 2012 +0200
@@ -289,6 +289,18 @@
     """
 
     @classmethod
+    def config_intervals (cls, name, intervals) :
+        for interval, arg in intervals.iteritems() :
+            # lookup base from options.intervals
+            try :
+                base = options.intervals[interval]
+            except KeyError:
+                raise ConfigError("Unknown interval for [target:{target}]: {interval}".format(target=name, interval=interval))
+
+            # parse
+            yield Interval.from_target_config(interval, base, arg)
+
+    @classmethod
     def from_config (cls, options, name,
         path            = False,
         source          = None,
@@ -313,12 +325,7 @@
             ])
 
         # lookup intervals
-        _intervals = [
-            (
-                # lookup base from options.intervals
-                Interval.from_target_config(name, options.intervals.get(name), arg)
-            ) for name, arg in intervals.iteritems()
-        ]
+        _intervals = list(cls.config_intervals(name, intervals))
 
         return cls(name, 
             path            = path if path else name,
@@ -443,7 +450,7 @@
         if os.path.exists(path) :
             target = os.readlink(path)
 
-            log.info("%s: Found existing: %s -> %s", interval, name, target)
+            log.info("%s: Keeping existing: %s -> %s", interval, name, target)
 
         else :
             # update
@@ -543,7 +550,7 @@
             log.warn("Found broken symlinks to snapshots: %s", ' '.join(broken))
         
         if unused :
-            log.info("Clean out unused snapshots: %s", ' '.join(unused))
+            log.info("Cleaning out %d unused snapshots:", len(unused))
 
             for name in unused :
                 path = os.path.join(snapshots_path, name)