+++ /dev/null
-#!/usr/bin/python
-
-import database
-
-class NagiosObject(object):
- trans = {'d2_coords': '2d_coords'}
-
- def __init__(self, id, **kwargs):
- self.id = id
- self.kwords = kwargs.keys()
- for key in self.kwords:
- self.__setattr__(key, kwargs[key])
-
- def toString(self):
- ret = ""
- ret += "define %s {\n" % self.id
- for key in self.kwords:
- if key in self.trans:
- ret += " %s %s\n" % (self.trans[key], self.__getattribute__(key))
- else:
- ret += " %s %s\n" % (key, self.__getattribute__(key))
- ret += "}\n"
- return ret
-
-class Host(NagiosObject):
- def __init__(self, **kwargs):
- NagiosObject.__init__(self, "host", **kwargs)
-
-class HostGroup(NagiosObject):
- def __init__(self, **kwargs):
- NagiosObject.__init__(self, "hostgroup", **kwargs)
-
-class Service(NagiosObject):
- def __init__(self, **kwargs):
- NagiosObject.__init__(self, "service", **kwargs)
-
-class ServiceDependency(NagiosObject):
- def __init__(self, **kwargs):
- NagiosObject.__init__(self, "servicedependency", **kwargs)
-
-class ServiceGroup(NagiosObject):
- def __init__(self, **kwargs):
- NagiosObject.__init__(self, "servicegroup", **kwargs)
-
-
-globalservices = []
-for service in [('NET', "Network Services"),
- ('SSH', "SSH Service"),
- ('SSH806', "Auxiliary SSH Service"),
- ('HTTP', "PlanetFlow HTTP"),
- ('COTOP', "HTTP based COTOP"),
- ]:
- #('PLSOFT', "PlanetLab Software"),
- #('MGMT', "Remote Management")]:
- globalservices.append(ServiceGroup(servicegroup_name=service[0], alias=service[1]))
-
-
-globalhost = [Host( name="planetlab-host",
- use="generic-host",
- check_period="24x7",
- check_interval="60",
- retry_interval="5",
- max_check_attempts="10",
- check_command="check-host-alive",
- contact_groups="admins",
- register="0")]
-
-for obj in globalhost + globalservices:
- print obj.toString()
-
-plcdb = database.dbLoad("l_plcsites")
-netid2ip = database.dbLoad("plcdb_netid2ip")
-lb2hn = database.dbLoad("plcdb_lb2hn")
-
-for site in plcdb:
- shortname = site['abbreviated_name']
- lb = site['login_base']
- hg = HostGroup(hostgroup_name=lb, alias=shortname)
- lat = site['latitude']
- lon = site['longitude']
- lon_x = -1
- lat_y = -1
- if lat is not None and lon is not None:
- scale = 5
- lon_x = int(180 + lon) * scale
- lat_y = int(180 - (lat + 90)) * scale
-
- if site['login_base'] in lb2hn:
- nodes = lb2hn[site['login_base']]
- else:
- continue
-
- if len(nodes) == 0:
- continue
-
- print hg.toString()
-
- for node in nodes:
- hn = node['hostname']
- if len(node['interface_ids']) == 0:
- continue
-
- ip = netid2ip[node['interface_ids'][0]]
-
- if lon_x is not -1 and lat_y is not -1:
- coords="%s,%s" % (lon_x, lat_y)
- else:
- coords="0,0"
-
- h = Host(use="planetlab-host",
- host_name=hn,
- alias=hn,
- address=ip,
- d2_coords=coords,
- statusmap_image="icon-system.png",
- hostgroups=lb)
-
- print h.toString()
-
- s1 = Service(use="generic-service",
- host_name=hn,
- service_description="aSSH",
- display_name="aSSH",
- servicegroups="NET,SSH",
- check_command="check_ssh!-t 120")
- s2 = Service(use="generic-service",
- host_name=hn,
- service_description="bSSH806",
- display_name="bSSH806",
- servicegroups="NET,SSH806",
- check_command="check_ssh!-p 806 -t 120")
- s3 = Service(use="generic-service",
- host_name=hn,
- service_description="cHTTP",
- display_name="cHTTP",
- servicegroups="NET,HTTP",
- check_command="check_http!-t 120")
- s4 = Service(use="generic-service",
- host_name=hn,
- service_description="dCOTOP",
- display_name="dCOTOP",
- servicegroups="NET,COTOP",
- check_command="check_http!-p 3120 -t 120")
-
- sd1 = ServiceDependency(host_name=hn,
- service_description="aSSH",
- dependent_host_name=hn,
- dependent_service_description="bSSH806",
- execution_failure_criteria="w,u,c,p",)
-
- sd2 = ServiceDependency(host_name=hn,
- service_description="aSSH",
- dependent_host_name=hn,
- dependent_service_description="cHTTP",
- execution_failure_criteria="w,u,c,p",)
-
- sd3 = ServiceDependency(host_name=hn,
- service_description="aSSH",
- dependent_host_name=hn,
- dependent_service_description="dCOTOP",
- execution_failure_criteria="w,u,c,p",)
-
- for service in [s1,s2,s3,s4,sd1,sd2,sd3]:
- print service.toString()
-