main: Add --test option for a dry run.
[matthijs/projects/backupninja.git] / src / lib / backupninja / action.py
index bb54d0a168f8b6985505ca658903b0c705a60baa..3939c8d487e677968efae783cff753a3dec810ea 100644 (file)
@@ -33,7 +33,13 @@ def run_all_actions(opts, global_config):
     opts are the parsed commandline options, global_config is the parsed
     global configuration.
     """
-    actions = config.list_actions(opts)
+    log.info('Running all actions')
+    try:
+        actions = config.list_actions(opts)
+    except OSError, e:
+        log.critical('Unable to list actions: %s', e)
+        return
+
     actions.sort()
 
     for action in actions:
@@ -44,6 +50,7 @@ def run_action(action, opts, global_config):
     Run a single action. opts are the parsed commandline options,
     global_config is the parsed global configuration.
     """
+    log.info('Running action "%s"', action)
     # Split the action filename
     parts = action.split('.', 2)
     if (len(parts) < 2):
@@ -53,15 +60,12 @@ def run_action(action, opts, global_config):
 
     # Get the config for this action
     action_config = config.get_action_config(opts, action)
-    # Create a handler for this action
-    handler = handlers.create_handler(action_ty, action_config)
 
-    # Silently skip invalid handlers, create_handler will have
-    # logged an error
-    if handler:
-        try:
-            # Run the handler
-            handler.run()
-            handler.finish()
-        except Exception, e:
-            log.error('Running action "%s" failed: %s', action, e)
+    try:
+        # Create a handler for this action
+        handler = handlers.create_handler(action_ty, action_config)
+        # Run it
+        handler.run(test=opts.test)
+        handler.finish(test=opts.test)
+    except Exception, e:
+        log.error('Running action "%s" failed: %s', action, e)