diff --git a/.gitignore b/.gitignore index 114fa0b..54b9dc0 100644 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,5 @@ plugins .metadata examples/private.json +examples/private.yaml +examples/private.yml diff --git a/linspector/config/parser.py b/linspector/config/parser.py index 4e193b8..44091e5 100644 --- a/linspector/config/parser.py +++ b/linspector/config/parser.py @@ -19,7 +19,6 @@ along with this program. If not, see . from os.path import isfile from os.path import join -import json import imp from layouts import Layout @@ -92,7 +91,16 @@ class ConfigParser: config = cfgFile.read() self.log.info("reading Config: " + configFilename) - return json.loads(config) + + if self.configFilename.endswith(".yaml") or configFilename.endswith("yml"): + import yaml + return yaml.load(config) + elif configFilename.endswith(".json"): + import json + return json.loads(config) + else: + print "could not determine config format. Only json and yaml are supported for now" + exit(2) def _create_raw_Object(self, jsonDict, msgName, creator): """ @@ -220,21 +228,23 @@ class FullConfigParser(ConfigParser): :param configFilename: the configuration file to parse """ - self.jsonDict = self._read_json_config(configFilename) + + + self.dict = self._read_json_config(configFilename) # first step - creator = lambda name, values: Layout(name,**values) - layouts = self._create_raw_Object(self.jsonDict[KEY_LAYOUTS], "Layout", creator) + creator = lambda name, values: Layout(name, **values) + layouts = self._create_raw_Object(self.dict[KEY_LAYOUTS], "Layout", creator) creator = lambda name, values: Member(name, **values) - members = self._create_raw_Object(self.jsonDict[KEY_MEMBERS], "Member", creator) + members = self._create_raw_Object(self.dict[KEY_MEMBERS], "Member", creator) creator = lambda name, values: HostGroup(name, **values) - self.hostgroups = self._create_raw_Object(self.jsonDict[KEY_HOSTGROUPS], "Hostgroup", creator) + self.hostgroups = self._create_raw_Object(self.dict[KEY_HOSTGROUPS], "Hostgroup", creator) creator = parsePeriodList - periods = self._create_raw_Object(self.jsonDict[KEY_PERIODS], "Period", creator) + periods = self._create_raw_Object(self.dict[KEY_PERIODS], "Period", creator) #2. import and replace items_func = lambda hostgroup: hostgroup.get_services() @@ -280,7 +290,7 @@ class FullConfigParser(ConfigParser): for service in hg.get_services(): service.set_hostgroup(hg) core = None - if "core" in self.jsonDict: - core = self.jsonDict["core"] + if "core" in self.dict: + core = self.dict["core"] return linConf, core \ No newline at end of file diff --git a/linspector/core/job.py b/linspector/core/job.py index 4de08d1..2dc4a74 100644 --- a/linspector/core/job.py +++ b/linspector/core/job.py @@ -71,6 +71,10 @@ class Job: def set_job(self, job): self.job = job + def set_enabled(self, enabled=True): + self._enabled = enabled + + def handle_threshold(self, jobInfo, serviceThreshold, executionSucessful): if executionSucessful: if self.jobThreshold > 0: @@ -91,7 +95,7 @@ class Job: self.handle_alarm(jobInfo, self.jobThreshold - serviceThreshold) def handle_alarm(self, jobInfo, thresholdOffset): - for member in self.service.get_hostgroup().get_members(): + for member in self.members: #TODO: Put Tasks in a run queue and execute them in a background thread. FIFO! Reduces delay in core. for task in member.get_tasks(): task.execute(jobInfo.get_message(), self.core) @@ -116,11 +120,7 @@ class Job: else: self.log.debug("Job " + self.hex_string() + " disabled") - def enable(self): - self._enabled = True - def disable(self): - self._enabled = False class JobInfo(object): diff --git a/linspector/frontends/lish.py b/linspector/frontends/lish.py index bee4c1f..738090a 100644 --- a/linspector/frontends/lish.py +++ b/linspector/frontends/lish.py @@ -200,10 +200,7 @@ class LishCommander(Exit, ShellCommander, LogCommander): cmd = text[1] if cmd in ["enable", "disable"]: - if "n" in cmd: - job.enable() - else: - job.disable() + job.set_enabled("n" in cmd) else: print "invalid or missing parameter\n" self.help_job()