--- /dev/null
+import os, sys, time, string
+from optparse import OptionParser
+import xmlrpclib
+
+
+class GetConfig:
+
+ subversion_id = "$Id$"
+
+ def __init__ (self):
+ self.url="https://localhost:443/PLCAPI/"
+ self.server=xmlrpclib.Server(self.url,allow_none=True)
+ self.path="/etc/nagios/config-sample/"
+ self.path1="/etc/nagios/"
+
+ def create_hostgroup(self, file, nodes_infos):
+ f1=open(file,"a")
+ i=0
+ j=0
+ memberhost=""
+ alias=[]
+ list=[]
+ site_name=nodes_infos[0]['Site_name']##initialize the first site name
+
+ while 1:
+ if(i<len(nodes_infos) and site_name==nodes_infos[i]['Site_name']):
+ memberhost=memberhost+nodes_infos[i]['node_hostname']+","
+ i=i+1
+ elif (i<len(nodes_infos) and site_name!=nodes_infos[i]['Site_name']):
+ alias.append(site_name)
+ list.append(memberhost)
+ memberhost=""
+ memberhost=memberhost+nodes_infos[i]['node_hostname']+","
+ site_name=nodes_infos[i]['Site_name']
+ alias.append(site_name)
+ i=i+1
+
+ elif (i>=len(nodes_infos)):
+ alias.append(site_name)
+ list.append(memberhost)
+ break
+
+
+ print list
+ print alias
+ while (j < len(list)):
+ f1.write("\ndefine hostgroup { \n")
+ f1.write("hostgroup_name "+str(j)+"\n")
+ f1.write("alias %s\n"%alias[j])
+ f1.write("members %s\n } \n"%list[j])
+ j=j+1
+ f1.close()
+
+ def generate_file(self,sample_file, file,login,nodes_infos):
+
+ f1=open(self.path+sample_file,"rb")
+ f2=open(self.path1+file,"wb")
+ f2.write(f1.read())
+ f1.close()
+ f2.close()
+ if (login=="h"):
+ self.create_host(self.path1+file,nodes_infos)
+ elif (login=="s"):
+ self.create_service(self.path1+file,nodes_infos)
+ elif (login=="g"):
+ self.create_hostgroup(self.path1+file, nodes_infos)
+
+
+
+ def create_host(self,file,nodes_infos):
+ f1=open(file,"a")
+ i=0
+ while (i<len(nodes_infos)):
+ f1.write("\n define host { \n")
+ f1.write("host_name %s\n"%nodes_infos[i]['node_hostname'])
+ f1.write("use linux-server\n")
+ f1.write("alias %s\n"%nodes_infos[i]['node_hostname'])
+ f1.write("address %s\n } \n"%nodes_infos[i]['node_ip'])
+ i=i+1
+ f1.close()
+
+
+ def create_service(self,file,nodes_infos):
+ i=0
+ f1=open(file,"a")
+ f2=open("ServiceName","r")
+ while (i<len(nodes_infos)):
+ while 1:
+ txt=f2.readline()
+ service=txt.strip()
+ if txt=='':
+ f2.seek(0)
+ break
+ f1.write("\ndefine service { \n")
+ f1.write("host_name %s\n"%nodes_infos[i]['node_hostname'])
+ f1.write("use remote-service\n")
+ f1.write("service_description %s\n"%service)
+ f1.write("check_command %s!%s \n } \n"%(service,nodes_infos[i]['node_hostname']))
+ i=i+1
+ f2.close()
+ f1.close()
--- /dev/null
+#!/usr/bin/env python
+
+import os, sys, time
+from optparse import OptionParser
+import xmlrpclib
+from GetConfig import *
+
+class GetMonitoring:
+
+ subversion_id = "$Id$"
+
+ def __init__ (self):
+ self.url="https://localhost:443/PLCAPI/"
+ self.server=xmlrpclib.Server(self.url,allow_none=True)
+
+ #self.path=os.path.dirname(sys.argv[0])
+
+ def auth_root (self):
+ return {'Username':self.args[0],
+ 'AuthMethod':'password',
+ 'AuthString':self.args[1],
+ 'Role' : 'root'
+ }
+
+
+
+#################################
+###############################
+
+ def GetSiteNodes(self,sites_names):
+ i=0
+
+ tab_node_infos=[]##its an array containing struct of Site,nodes hostname and ip for each nodes
+ ##to be monitored
+ while (i< len(sites_names)):
+ filter_site={'abbreviated_name':sites_names[i]}
+ return_value=['site_id']
+ ##Getting the site_id from the given site name args
+ site_id=self.server.GetSites(self.auth_root(),filter_site,return_value)
+ if (site_id==[]):
+ print "Site Not found or duplicated Site Name please check your Site's Name::",sites_names[i]
+ exit
+
+ ##Getting nodes_id relative to the site to be monitored
+ filter_node={'site_id':site_id[0]['site_id']}
+ node_ids =self.server.GetNodes(self.auth_root(),filter_node,['node_id','hostname'])
+ ##Getting information for nodes to be monitored
+ j=0
+ while(j < len(node_ids)):
+
+ sn_info={'Site_name':None,
+ 'node_hostname':None,
+ 'node_ip':None
+ }
+ sn_info['Site_name']=sites_names[i]
+
+ filter=node_ids[j]['node_id']
+ node_infos=self.server.GetNodeNetworks(self.auth_root(),filter,['ip'])
+ sn_info['node_hostname']=node_ids[j]['hostname']
+ #tab_node_infos.append(self.sn_info['node_hostname'])
+ sn_info['node_ip']=node_infos[0]['ip']
+ tab_node_infos.append(sn_info)
+ j=j+1
+
+ i=i+1
+ #print node_ids
+ return tab_node_infos
+
+#######################################
+######################################
+
+
+ def main (self):
+ try:
+
+ ##################
+ ######options
+ usage = """usage: %prog [options] UserName(email) passwd Sites Names [-h for help]"""
+ parser=OptionParser(usage=usage,version=self.subversion_id)
+ # verbosity
+ parser.add_option("-v","--verbose", action="store_true", dest="verbose", default=False,
+ help="Run in verbose mode")
+
+ (self.options, self.args) = parser.parse_args()
+ i=0
+
+ site_name=[]
+ nodes_infos=[]
+
+ getConfig=GetConfig()
+
+ if (len (self.args) < 3 ):
+ print "please check your command"
+ print usage
+
+ else:
+ i=2
+ while (i < len(self.args)) :
+ site_name.append(self.args[i])
+ i=i+1
+
+ nodes_infos=self.GetSiteNodes(site_name)
+ getConfig.generate_file("services-sample.cfg","services.cfg","s",nodes_infos)
+ getConfig.generate_file("hosts-sample.cfg","hosts.cfg","h",nodes_infos)
+ getConfig.generate_file("hostgroups-sample.cfg","hostgroups.cfg","g",nodes_infos)
+
+ print "Info on what will be monitored grouped by Site:-------->"
+ for node in nodes_infos:
+ print "------------>",node
+
+
+
+ res=os.system("nagios -v /etc/nagios/nagios.cfg")
+ if (not res):
+ os.system("service nagios reload")
+
+
+ ######################
+ ########end options
+ ##################
+
+
+ except Exception, e:
+ print str(e)
+ sys.exit(1)
+
+if __name__ == "__main__":
+ GetMonitoring().main()