Automatic creation:creates nagios config from a set of sites and monitor their nodes
[infrastructure.git] / nagios / AutomaticConfig / GetConfig.py
diff --git a/nagios/AutomaticConfig/GetConfig.py b/nagios/AutomaticConfig/GetConfig.py
new file mode 100644 (file)
index 0000000..d876fe2
--- /dev/null
@@ -0,0 +1,101 @@
+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()