added yaml support
This commit is contained in:
parent
cb676249ac
commit
16a5a09bf5
4 changed files with 28 additions and 19 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
|
@ -17,3 +17,5 @@ plugins
|
||||||
.metadata
|
.metadata
|
||||||
|
|
||||||
examples/private.json
|
examples/private.json
|
||||||
|
examples/private.yaml
|
||||||
|
examples/private.yml
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
from os.path import isfile
|
from os.path import isfile
|
||||||
from os.path import join
|
from os.path import join
|
||||||
import json
|
|
||||||
import imp
|
import imp
|
||||||
|
|
||||||
from layouts import Layout
|
from layouts import Layout
|
||||||
|
|
@ -92,7 +91,16 @@ class ConfigParser:
|
||||||
config = cfgFile.read()
|
config = cfgFile.read()
|
||||||
|
|
||||||
self.log.info("reading Config: " + configFilename)
|
self.log.info("reading Config: " + configFilename)
|
||||||
|
|
||||||
|
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)
|
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):
|
def _create_raw_Object(self, jsonDict, msgName, creator):
|
||||||
"""
|
"""
|
||||||
|
|
@ -220,21 +228,23 @@ class FullConfigParser(ConfigParser):
|
||||||
|
|
||||||
:param configFilename: the configuration file to parse
|
:param configFilename: the configuration file to parse
|
||||||
"""
|
"""
|
||||||
self.jsonDict = self._read_json_config(configFilename)
|
|
||||||
|
|
||||||
|
self.dict = self._read_json_config(configFilename)
|
||||||
|
|
||||||
# first step
|
# first step
|
||||||
creator = lambda name, values: Layout(name,**values)
|
creator = lambda name, values: Layout(name, **values)
|
||||||
layouts = self._create_raw_Object(self.jsonDict[KEY_LAYOUTS], "Layout", creator)
|
layouts = self._create_raw_Object(self.dict[KEY_LAYOUTS], "Layout", creator)
|
||||||
|
|
||||||
creator = lambda name, values: Member(name, **values)
|
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)
|
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
|
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
|
#2. import and replace
|
||||||
items_func = lambda hostgroup: hostgroup.get_services()
|
items_func = lambda hostgroup: hostgroup.get_services()
|
||||||
|
|
@ -280,7 +290,7 @@ class FullConfigParser(ConfigParser):
|
||||||
for service in hg.get_services():
|
for service in hg.get_services():
|
||||||
service.set_hostgroup(hg)
|
service.set_hostgroup(hg)
|
||||||
core = None
|
core = None
|
||||||
if "core" in self.jsonDict:
|
if "core" in self.dict:
|
||||||
core = self.jsonDict["core"]
|
core = self.dict["core"]
|
||||||
|
|
||||||
return linConf, core
|
return linConf, core
|
||||||
|
|
@ -71,6 +71,10 @@ class Job:
|
||||||
def set_job(self, job):
|
def set_job(self, job):
|
||||||
self.job = job
|
self.job = job
|
||||||
|
|
||||||
|
def set_enabled(self, enabled=True):
|
||||||
|
self._enabled = enabled
|
||||||
|
|
||||||
|
|
||||||
def handle_threshold(self, jobInfo, serviceThreshold, executionSucessful):
|
def handle_threshold(self, jobInfo, serviceThreshold, executionSucessful):
|
||||||
if executionSucessful:
|
if executionSucessful:
|
||||||
if self.jobThreshold > 0:
|
if self.jobThreshold > 0:
|
||||||
|
|
@ -91,7 +95,7 @@ class Job:
|
||||||
self.handle_alarm(jobInfo, self.jobThreshold - serviceThreshold)
|
self.handle_alarm(jobInfo, self.jobThreshold - serviceThreshold)
|
||||||
|
|
||||||
def handle_alarm(self, jobInfo, thresholdOffset):
|
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.
|
#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():
|
for task in member.get_tasks():
|
||||||
task.execute(jobInfo.get_message(), self.core)
|
task.execute(jobInfo.get_message(), self.core)
|
||||||
|
|
@ -116,11 +120,7 @@ class Job:
|
||||||
else:
|
else:
|
||||||
self.log.debug("Job " + self.hex_string() + " disabled")
|
self.log.debug("Job " + self.hex_string() + " disabled")
|
||||||
|
|
||||||
def enable(self):
|
|
||||||
self._enabled = True
|
|
||||||
|
|
||||||
def disable(self):
|
|
||||||
self._enabled = False
|
|
||||||
|
|
||||||
|
|
||||||
class JobInfo(object):
|
class JobInfo(object):
|
||||||
|
|
|
||||||
|
|
@ -200,10 +200,7 @@ class LishCommander(Exit, ShellCommander, LogCommander):
|
||||||
|
|
||||||
cmd = text[1]
|
cmd = text[1]
|
||||||
if cmd in ["enable", "disable"]:
|
if cmd in ["enable", "disable"]:
|
||||||
if "n" in cmd:
|
job.set_enabled("n" in cmd)
|
||||||
job.enable()
|
|
||||||
else:
|
|
||||||
job.disable()
|
|
||||||
else:
|
else:
|
||||||
print "invalid or missing parameter\n"
|
print "invalid or missing parameter\n"
|
||||||
self.help_job()
|
self.help_job()
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue