summaryrefslogtreecommitdiffstats
path: root/modules
diff options
context:
space:
mode:
authorChristos Triantafyllidis <christos.triantafyllidis@gmail.com>2012-06-12 00:49:17 +0300
committerChristos Triantafyllidis <christos.triantafyllidis@gmail.com>2012-06-12 00:49:17 +0300
commitcf9c34812219c3417d9e4d8af4cafaedd1e8988c (patch)
treecef1abdeae93887b20de84202b6d7cd42e713a72 /modules
downloadDynamicNagiosConfig-cf9c34812219c3417d9e4d8af4cafaedd1e8988c.tar.gz
DynamicNagiosConfig-cf9c34812219c3417d9e4d8af4cafaedd1e8988c.tar.xz
DynamicNagiosConfig-cf9c34812219c3417d9e4d8af4cafaedd1e8988c.zip
Initial GIT import
Diffstat (limited to 'modules')
-rw-r--r--modules/datacenter_definitions.py10
-rw-r--r--modules/datacenter_definitions/file.py12
-rw-r--r--modules/host_definitions.py10
-rw-r--r--modules/host_definitions/fedora_infra_hosts.py14
-rw-r--r--modules/host_definitions/file.py12
-rw-r--r--modules/nagios_config.py31
6 files changed, 89 insertions, 0 deletions
diff --git a/modules/datacenter_definitions.py b/modules/datacenter_definitions.py
new file mode 100644
index 0000000..a71ecfd
--- /dev/null
+++ b/modules/datacenter_definitions.py
@@ -0,0 +1,10 @@
+#!/usr/bin/env python
+import dyn_module
+
+def get(config):
+ result = dict()
+ for dc_def_module in config:
+ dc_def_mod = dyn_module.load_module("modules/datacenter_definitions/%s.py" % dc_def_module)
+ dc_def_mod.get(config[dc_def_module],result)
+
+ return result
diff --git a/modules/datacenter_definitions/file.py b/modules/datacenter_definitions/file.py
new file mode 100644
index 0000000..d66b49d
--- /dev/null
+++ b/modules/datacenter_definitions/file.py
@@ -0,0 +1,12 @@
+#!/usr/bin/env python
+import yaml
+
+def get(config,result):
+ dc_config = yaml.load(file(config["file"], 'r'))
+ for dc in dc_config:
+ if result.has_key(dc):
+ result[dc].update(dc_config[dc])
+ else:
+ result[dc] = dc_config[dc]
+
+ return result \ No newline at end of file
diff --git a/modules/host_definitions.py b/modules/host_definitions.py
new file mode 100644
index 0000000..3026986
--- /dev/null
+++ b/modules/host_definitions.py
@@ -0,0 +1,10 @@
+#!/usr/bin/env python
+import dyn_module
+
+def get(config):
+ result = dict()
+ for host_def_module in config:
+ host_def_mod = dyn_module.load_module("modules/host_definitions/%s.py" % host_def_module)
+ host_def_mod.get(config[host_def_module],result)
+
+ return result
diff --git a/modules/host_definitions/fedora_infra_hosts.py b/modules/host_definitions/fedora_infra_hosts.py
new file mode 100644
index 0000000..6ac1878
--- /dev/null
+++ b/modules/host_definitions/fedora_infra_hosts.py
@@ -0,0 +1,14 @@
+#!/usr/bin/env python
+import os
+
+def get(config,result):
+ for host in [ name for name in os.listdir(config["path"]) if os.path.isdir(os.path.join(config["path"], name)) ]:
+ if not result.has_key(host):
+ result[host] = dict()
+ path = os.path.join(config["path"], host, "autoinfo")
+ if os.path.exists(os.path.join(path, "datacenter")):
+ result[host]["datacenter"] = open(os.path.join(path, "datacenter"),"r").read()
+ if os.path.exists(os.path.join(path, "distro")):
+ result[host]["distro"] = open(os.path.join(path, "distro"),"r").read()
+
+ return result
diff --git a/modules/host_definitions/file.py b/modules/host_definitions/file.py
new file mode 100644
index 0000000..3466db3
--- /dev/null
+++ b/modules/host_definitions/file.py
@@ -0,0 +1,12 @@
+#!/usr/bin/env python
+import yaml
+
+def get(config,result):
+ hosts_config = yaml.load(file(config["file"], 'r'))
+ for host in hosts_config:
+ if result.has_key(host):
+ result[host].update(hosts_config[host])
+ else:
+ result[host] = hosts_config[host]
+
+ return result \ No newline at end of file
diff --git a/modules/nagios_config.py b/modules/nagios_config.py
new file mode 100644
index 0000000..d7668f9
--- /dev/null
+++ b/modules/nagios_config.py
@@ -0,0 +1,31 @@
+#!/usr/bin/env python
+from string import Template
+
+def generate(defaults,hosts,datacenters):
+ host_template = Template(file("templates/host", 'r').read())
+ for host in hosts:
+ hostdict = {"hostname": host}
+ if hosts[host].has_key("parents"):
+ hostdict["parents"] = 'parents ' + hosts[host]["parents"]
+ elif hosts[host].has_key("datacenter") and datacenters.has_key(hosts[host]["datacenter"]):
+ hostdict["parents"] = 'parents ' + datacenters[hosts[host]["datacenter"]]["gateway"]
+ else:
+ hostdict["parents"] = ''
+
+ if hosts[host].has_key("use"):
+ hostdict["use"] = hosts[host]["use"]
+ else:
+ hostdict["use"] = defaults["default_host_use"]
+
+ if hosts[host].has_key("alias"):
+ hostdict["host_alias"] = hosts[host]["alias"]
+ else:
+ hostdict["host_alias"] = host
+
+ if hosts[host].has_key("address"):
+ hostdict["host_address"] = hosts[host]["address"]
+ else:
+ hostdict["host_address"] = host
+
+ print host_template.substitute(hostdict)
+ \ No newline at end of file