]> git.ipfire.org Git - collecty.git/blame - collecty/__init__.py
Add some command line flags and help.
[collecty.git] / collecty / __init__.py
CommitLineData
a49a4b46
MT
1#!/usr/bin/python
2
3import signal
4
5import ConfigParser as configparser
6
7import plugins
8
9class ConfigError(Exception):
10 pass
11
12class Collecty(object):
13 def __init__(self):
14 self.config = configparser.ConfigParser()
15 self.instances = []
16
17 def read_config(self, config):
18 self.config.read(config)
19
20 for section in self.config.sections():
21 try:
22 plugin = self.config.get(section, "plugin")
23 plugin = plugins.find(plugin)
24 except configparser.NoOptionError:
25 raise ConfigError, "Syntax error in configuration: plugin option is missing."
26 except:
27 raise Exception, "Plugin configuration error: Maybe plugin wasn't found? %s" % plugin
28
29 kwargs = {}
30 for (key, value) in self.config.items(section):
31 if key == "plugin":
32 continue
33
34 kwargs[key] = value
35 kwargs["file"] = section
36
37 i = plugin(self, **kwargs)
38 self.instances.append(i)
39
40 def debug(self, message):
41 print message
42
43 def run(self):
44 signal.signal(signal.SIGTERM, lambda *args: self.shutdown())
45
46 for i in self.instances:
47 i.start()
48
49 def shutdown(self):
50 for i in self.instances:
51 self.debug("Stopping %s..." % i)
52 i.shutdown()