projects
/
matthijs
/
projects
/
backupninja.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Action: Add config accessor functions.
[matthijs/projects/backupninja.git]
/
src
/
lib
/
backupninja
/
action.py
diff --git
a/src/lib/backupninja/action.py
b/src/lib/backupninja/action.py
index 1ebc737cfdd76c7b0c176f175659128fd87e7a32..83afc954c8d782403d113b9e5dc3daa3eac65fb9 100644
(file)
--- a/
src/lib/backupninja/action.py
+++ b/
src/lib/backupninja/action.py
@@
-21,6
+21,7
@@
""" Running backup actions """
""" Running backup actions """
+import os
import logging as log
from backupninja import config
import logging as log
from backupninja import config
@@
-33,32
+34,41
@@
def run_all_actions(opts, global_config):
opts are the parsed commandline options, global_config is the parsed
global configuration.
"""
opts are the parsed commandline options, global_config is the parsed
global configuration.
"""
- actions = config.list_actions(opts)
- actions.sort()
+ log.info('Running all actions')
+ try:
+ action_configs = config.list_actions(opts)
+ except OSError, e:
+ log.critical('Unable to list actions: %s', e)
+ return
- for action in actions:
- run_action(action, opts, global_config)
+ action_configs.sort()
-def run_action(action, opts, global_config):
+ for action_config in action_configs:
+ run_action(action_config, opts, global_config)
+
+def run_action(action_config, opts, global_config):
"""
"""
- Run a single action. opts are the parsed commandline options,
+ Run a single action. action_config is the full path to its
+ configuration file. opts are the parsed commandline options,
global_config is the parsed global configuration.
"""
# Split the action filename
global_config is the parsed global configuration.
"""
# Split the action filename
- parts =
action.split('.', 2
)
- if (len(parts)
<
2):
- log.error('Invalid action filename: "%s". Should be in the form name.type, where type is a valid handler.')
+ parts =
os.path.basename(action_config).split('.'
)
+ if (len(parts)
!=
2):
+ log.error('Invalid action filename: "%s". Should be in the form name.type, where type is a valid handler.'
% action_config
)
return
(action_name, action_ty) = parts
return
(action_name, action_ty) = parts
-
- # Get the config for this action
- action_config = config.get_action_config(opts, action)
+ log.info('Running action "%s.%s"', action_name, action_ty)
try:
# Create a handler for this action
try:
# Create a handler for this action
- handler = handlers.create_handler(action_ty, action_config)
+ action = handlers.create_action(action_ty)
+ # Let the handler load its configuration file
+ action.load_config(action_config)
# Run it
# Run it
-
handler.run(
)
-
handler.finish(
)
+
action.run(test=opts.test
)
+
action.finish(test=opts.test
)
except Exception, e:
except Exception, e:
- log.error('Running action "%s" failed: %s', action, e)
+ log.error('Running action "%s.%s" failed: %s', action_name, action_ty, e)
+ import traceback
+ log.debug(traceback.format_exc())