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
|
||||
|
||||
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 join
|
||||
import json
|
||||
import imp
|
||||
|
||||
from layouts import Layout
|
||||
|
|
@ -92,7 +91,16 @@ class ConfigParser:
|
|||
config = cfgFile.read()
|
||||
|
||||
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)
|
||||
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)
|
||||
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
|
||||
|
|
@ -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):
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue