source: genesis/tools/yaml2nag.py@ 8683

Last change on this file since 8683 was 8644, checked in by richardvm, 14 years ago

nagios config generator

  • Property svn:executable set to *
File size: 2.5 KB
Line 
1#!/usr/bin/env python
2
3import os
4import glob
5import pprint
6
7try:
8 import yaml
9except ImportError, e:
10 print e
11 print "[ERROR] Please install the python-yaml or devel/py-yaml package"
12 exit(1)
13
14try:
15 from yaml import CLoader as Loader
16 from yaml import CDumper as Dumper
17except ImportError:
18 from yaml import Loader, Dumper
19
20NODE_DIR = os.getcwd()
21NODE_PREFIX = 'nodes-7-2,'
22
23def get_yaml(item):
24 """ Get configuration yaml for 'item'"""
25 gfile = NODE_DIR + '/%s/wleiden.yaml' % item
26
27 f = open(gfile, 'r')
28 datadump = yaml.load(f,Loader=Loader)
29 f.close()
30
31 return datadump
32
33def get_all_configs():
34 """ Get dict with key 'host' with all configs present """
35 configs = dict()
36 for host in get_hostlist():
37 datadump = get_yaml(host)
38 configs[host] = datadump
39 return configs
40
41def get_nodelist():
42 """ Get all available nodes - sorted """
43 os.chdir(NODE_DIR)
44 nodelist = sorted(glob.glob("CNode*"))
45 return nodelist
46
47def get_hostlist():
48 """ Combined hosts and proxy list"""
49 return get_nodelist()
50
51def get_all_configs():
52 """ Get dict with key 'host' with all configs present """
53 configs = dict()
54 for host in get_hostlist():
55 datadump = get_yaml(host)
56 configs[host] = datadump
57 return configs
58
59def is_ileiden(node):
60 """ Is this a iLeiden node """
61 if (node['ileiden']):
62 return str(',nodes-ileiden')
63 else:
64 return str('')
65
66def get_up_interfaces(node, prefix):
67 """ Get nagios syntax for up interlinks """
68 iface_up = list()
69
70 for inf in node['interfaces'].split(','):
71 iface = 'iface_%s' % inf
72 if (node[iface]['status'] == 'up' and is_ap(node[iface])):
73 iface_up.append('iface-%s' % inf)
74
75 return ','.join(iface_up)
76
77def is_ap(node):
78 try:
79 if node['mode'] == 'ap-wds':
80 return 0
81 else:
82 return 1
83 except:
84 return 1
85
86def get_hostname(node):
87 return node['nodename']
88
89def get_ip(node):
90 return node['masterip']
91
92def is_iris(node):
93 try:
94 if node['release'] == '8.0-RELEASE':
95 return 1
96 elif node['release'] == '7.2-RELEASE':
97 return 1
98
99 return None
100 except:
101 print node['nodename']
102def main():
103 allconfigs = get_all_configs()
104# pprint.pprint(allconfigs)
105
106 for k,v in allconfigs.iteritems():
107 if is_iris(v):
108 ileiden = is_ileiden(v)
109 interfaces = get_up_interfaces(v, 'iface-')
110 hostname = get_hostname(v)
111 ip = get_ip(v)
112
113 print """
114define host{
115 use host-pnp
116 host_name %s
117 alias %s
118 address %s
119 hostgroups %s%s%s
120}
121
122 """ % (hostname, hostname, ip, NODE_PREFIX, interfaces, ileiden)
123
124
125main()
Note: See TracBrowser for help on using the repository browser.