rsync-snapshot: fix [rsync-options] handling for non-flag options
authorTero Marttila <terom@paivola.fi>
Thu, 16 Feb 2012 10:53:13 +0200
changeset 21 de69e9ba8f22
parent 20 715709eca0e1
child 22 a2bc5cc9de4d
rsync-snapshot: fix [rsync-options] handling for non-flag options
scripts/pvlbackup-rsync-snapshot
--- a/scripts/pvlbackup-rsync-snapshot	Thu Feb 16 10:14:46 2012 +0200
+++ b/scripts/pvlbackup-rsync-snapshot	Thu Feb 16 10:53:13 2012 +0200
@@ -87,7 +87,7 @@
 
     # defaults
     parser.set_defaults(
-        loglevel            = logging.WARNING,
+        loglevel            = logging.INFO,
 
         target_intervals    = [],
     )
@@ -114,6 +114,10 @@
 
     return options, args
 
+## Configuration
+class ConfigError (Exception) :
+    pass
+
 def process_config_name (name) :
     """
         Process config file name into python version
@@ -167,15 +171,19 @@
 
     return config
 
-def config_bool (name, value) :
+def config_bool (name, value, strict=True) :
     if value.lower() in ('yes', 'true', '1', 'on') :
         return True
 
     elif value.lower() in ('no', 'false', '0', 'off') :
         return False
 
+    elif strict :
+        raise ConfigError("Unrecognized boolean value: {name} = {value}".format(name=name, value=value))
+
     else :
-        raise ConfigError("Unrecognized boolean value: {name} = {value}".format(name=name, value=value))
+        # allow non-boolean values
+        return value
 
 def config_int (name, value) :
     try :
@@ -295,7 +303,10 @@
 
         if rsync_options :
             # override
-            _rsync_options.update(rsync_options)
+            _rsync_options.update([
+                # parse
+                (option, config_bool(option, value, strict=False)) for option, value in rsync_options.iteritems()
+            ])
 
         # lookup intervals
         _intervals = [
@@ -645,7 +656,7 @@
         # parse
         interval = Interval.from_config(options, name, **interval_config)
         
-        log.info("Interval: %s", name)
+        log.debug("config interval: %s", name)
         
         # store
         options.intervals[name] = interval
@@ -653,8 +664,8 @@
     for option in config['rsync_options'] :
         value = config['rsync_options'][option]
 
-        # parse
-        value = config_bool(option, value)
+        # parse, allowing non-boolean values as well...
+        value = config_bool(option, value, strict=False)
 
         log.debug("rsync option: %s=%s", option, value)
 
@@ -672,7 +683,7 @@
         # parse
         target = Target.from_config(options, name, **target_config)
 
-        log.info("Target: %s", name)
+        log.info("Config target: %s", name)
 
         # run
         target.run(options)