1 # -*- mode: python; sh-basic-offset: 4; indent-tabs-mode: nil; -*-
2 # vim: set filetype=python sw=4 sts=4 expandtab autoindent:
4 # Backupninja python reimplementation, based on original backupninja program
6 # Copyright (C) 2010 Matthijs Kooijman <matthijs@stdin.nl>
8 # This program is free software; you can redistribute it and/or modify
9 # it under the terms of the GNU General Public License as published by
10 # the Free Software Foundation; either version 2 of the License, or
11 # (at your option) any later version.
13 # This program is distributed in the hope that it will be useful,
14 # but WITHOUT ANY WARRANTY; without even the implied warranty of
15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 # GNU General Public License for more details.
18 # You should have received a copy of the GNU General Public License along
19 # with this program; if not, write to the Free Software Foundation, Inc.,
20 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
22 """ Load configuration for backupninja and configured actions """
24 import os, ConfigParser
26 default_config_dir = '/etc/backupninja'
27 default_global_config = 'backupninja.conf'
28 default_actions_dir = 'actions'
32 def get_global_config(opts):
34 Returns the global configuration, in a SafeConfigParser object.
35 If the configuration file can not be found, logs an error and
38 opts are the parsed commandline options.
40 global_config = os.path.join(default_config_dir, default_global_config)
41 return _load_config(global_config)
43 def get_action_config(opts, action):
45 Returns the configuration for the named action, in a
46 SafeConfigParser object. If the configuration file can not be found,
47 logs an error and returns None.
49 opts are the parsed commandline options.
51 actions_dir = os.path.join(default_config_dir, default_actions_dir)
52 return _load_config(os.path.join(actions_dir, action))
54 def list_actions(opts):
56 Lists all actions defined in the configuration directory. Returns a
57 list of action names that can be passed to get_action_config.
58 opts are the parsed commandline options.
60 actions_dir = os.path.join(default_config_dir, default_actions_dir)
61 return os.listdir(actions_dir)
63 def _load_config(filename):
64 # Open a file and read it
65 config = ConfigParser.SafeConfigParser()
66 log.debug('Reading config file "%s"', filename)
68 file = open(filename, 'r')
70 # Log the error and return None
71 msg = 'Unable to open configuration file "%s": %s' % (filename, e)