clearer names for actions, and infer actions better
[monitor.git] / zabbix / hosts.py
1 #!/usr/bin/python
2
3 from monitor.wrapper import plc
4 import os
5
6 api = plc.api
7
8 HOSTS_FILE="/etc/hosts"
9
10 def is_in_file(filename, pattern):
11         f = os.popen("grep %s %s" % ( pattern, filename))
12         content = f.read()
13         if len(content) > 0:
14                 return True
15         else:
16                 return False
17 def add_to_file(filename, data):
18         os.system("echo '%s' >> %s" % (data, filename))
19         #print "echo '%s' >> %s" % (data, filename)
20
21 sites = api.GetSites({'login_base' : 'mlab*'}, ['node_ids'])
22 for s in sites:
23         nodes = api.GetNodes(s['node_ids'], ['hostname', 'interface_ids'])
24         for node in nodes:
25                 try:
26                         i = api.GetInterfaces({ 'interface_id' :  node['interface_ids'], 'is_primary' : True})
27                         #print len(i), i
28                         #print "%s %s" % (i[0]['ip'], node['hostname'])
29                         if not is_in_file(HOSTS_FILE, node['hostname']):
30                                 add_to_file(HOSTS_FILE, "%s %s" % (i[0]['ip'], node['hostname']))
31                 except:
32                         pass