[8644] | 1 | #!/usr/bin/env python
|
---|
| 2 |
|
---|
| 3 | import os
|
---|
| 4 | import glob
|
---|
| 5 | import pprint
|
---|
| 6 |
|
---|
| 7 | try:
|
---|
| 8 | import yaml
|
---|
| 9 | except ImportError, e:
|
---|
| 10 | print e
|
---|
| 11 | print "[ERROR] Please install the python-yaml or devel/py-yaml package"
|
---|
| 12 | exit(1)
|
---|
| 13 |
|
---|
| 14 | try:
|
---|
| 15 | from yaml import CLoader as Loader
|
---|
| 16 | from yaml import CDumper as Dumper
|
---|
| 17 | except ImportError:
|
---|
| 18 | from yaml import Loader, Dumper
|
---|
| 19 |
|
---|
| 20 | NODE_DIR = os.getcwd()
|
---|
| 21 | NODE_PREFIX = 'nodes-7-2,'
|
---|
| 22 |
|
---|
| 23 | def 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 |
|
---|
| 33 | def 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 |
|
---|
| 41 | def get_nodelist():
|
---|
| 42 | """ Get all available nodes - sorted """
|
---|
| 43 | os.chdir(NODE_DIR)
|
---|
| 44 | nodelist = sorted(glob.glob("CNode*"))
|
---|
| 45 | return nodelist
|
---|
| 46 |
|
---|
| 47 | def get_hostlist():
|
---|
| 48 | """ Combined hosts and proxy list"""
|
---|
| 49 | return get_nodelist()
|
---|
| 50 |
|
---|
| 51 | def 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 |
|
---|
| 59 | def is_ileiden(node):
|
---|
| 60 | """ Is this a iLeiden node """
|
---|
| 61 | if (node['ileiden']):
|
---|
| 62 | return str(',nodes-ileiden')
|
---|
| 63 | else:
|
---|
| 64 | return str('')
|
---|
| 65 |
|
---|
| 66 | def 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 |
|
---|
| 77 | def 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 |
|
---|
[8686] | 86 | def is_up(node):
|
---|
| 87 | """ Is node Up?"""
|
---|
| 88 | if node['status'] == 'up':
|
---|
| 89 | return 1
|
---|
| 90 | else:
|
---|
| 91 | return 0
|
---|
| 92 |
|
---|
[8644] | 93 | def get_hostname(node):
|
---|
| 94 | return node['nodename']
|
---|
| 95 |
|
---|
| 96 | def get_ip(node):
|
---|
| 97 | return node['masterip']
|
---|
| 98 |
|
---|
| 99 | def is_iris(node):
|
---|
| 100 | try:
|
---|
| 101 | if node['release'] == '8.0-RELEASE':
|
---|
| 102 | return 1
|
---|
| 103 | elif node['release'] == '7.2-RELEASE':
|
---|
| 104 | return 1
|
---|
[8810] | 105 | elif node['release'] == '8.1-RELEASE':
|
---|
[8809] | 106 | return 1
|
---|
[8913] | 107 | elif node['release'] == '8.2-RELEASE':
|
---|
| 108 | return 1
|
---|
[8644] | 109 |
|
---|
| 110 | return None
|
---|
| 111 | except:
|
---|
[8808] | 112 | return 0
|
---|
| 113 |
|
---|
[8644] | 114 | def main():
|
---|
| 115 | allconfigs = get_all_configs()
|
---|
[8808] | 116 | # pprint.pprint(allconfigs)
|
---|
[8644] | 117 |
|
---|
| 118 | for k,v in allconfigs.iteritems():
|
---|
[8808] | 119 |
|
---|
[8686] | 120 | if is_iris(v) and is_up(v):
|
---|
[8644] | 121 | ileiden = is_ileiden(v)
|
---|
| 122 | interfaces = get_up_interfaces(v, 'iface-')
|
---|
| 123 | hostname = get_hostname(v)
|
---|
| 124 | ip = get_ip(v)
|
---|
| 125 |
|
---|
| 126 | print """
|
---|
| 127 | define host{
|
---|
| 128 | use host-pnp
|
---|
| 129 | host_name %s
|
---|
| 130 | alias %s
|
---|
| 131 | address %s
|
---|
| 132 | hostgroups %s%s%s
|
---|
| 133 | }
|
---|
| 134 |
|
---|
| 135 | """ % (hostname, hostname, ip, NODE_PREFIX, interfaces, ileiden)
|
---|
| 136 |
|
---|
| 137 |
|
---|
| 138 | main()
|
---|