clearer names for actions, and infer actions better
[monitor.git] / zabbix / zabbixsync.py
index 5cc2cd3..340b4d8 100755 (executable)
@@ -3,6 +3,9 @@
 import sys
 import os
 import site
+from monitor.config import config
+config.zabbix_enabled = True
+
 from monitor.wrapper import plc, plccache
 from monitor import database
 
@@ -12,7 +15,7 @@ from monitor.database.zabbixapi.model import confirm_ids, HostGroup
 
 
 plcdb = plccache.l_sites # database.dbLoad("l_plcsites")
-netid2ip = plccache.plcdb_netid2ip # database.dbLoad("plcdb_netid2ip")
+#netid2ip = plccache.plcdb_netid2ip # database.dbLoad("plcdb_netid2ip")
 lb2hn = plccache.plcdb_lb2hn # database.dbLoad("plcdb_lb2hn")
 
 def get_site_iplist(loginbase):
@@ -22,8 +25,11 @@ def get_site_iplist(loginbase):
        # TODO: if it is, then we need to break up the discovery rule.
        ip_list = ""
        for node in node_list:
-               if len(node['nodenetwork_ids']) > 0:
-                       ip = netid2ip[node['nodenetwork_ids'][0]]
+               if len(node['interface_ids']) > 0:
+                       ifs = plc.api.GetInterfaces({'interface_id' : node['interface_ids'], 'is_primary' : True})
+                       print ifs
+                       #ip = netid2ip[node['interface_ids'][0]]
+                       ip = ifs[0]['ip']
                        if len(ip_list) > 0: ip_list += ","
                        ip_list += ip
 
@@ -44,7 +50,7 @@ if __name__=="__main__":
 
        from monitor import parser as parsermodule
        parser = parsermodule.getParser(['cacheset'])
-       parser.set_defaults( setupglobal=False, syncsite=True, site=None, setupids=False)
+       parser.set_defaults( setupglobal=False, syncsite=True, site=None, sitelist=None, setupids=False)
        parser.add_option("", "--setupids", action="store_true", dest="setupids",
                                                help="Setup global IDs.")
        parser.add_option("", "--setupglobal", action="store_true", dest="setupglobal",
@@ -53,6 +59,8 @@ if __name__=="__main__":
                                                help="Do not sync sites.")
        parser.add_option("", "--site", dest="site",
                                                help="Sync only given site name.")
+       parser.add_option("", "--sitelist", dest="sitelist",
+                                               help="Sync only given site names in the list.")
        opts = parsermodule.parse_args(parser)
 
        os.system("""echo '' > /usr/share/monitor/nodelist.txt""")
@@ -74,6 +82,9 @@ if __name__=="__main__":
                query = {'peer_id' : None}
                if opts.site:
                        query.update({'login_base' : opts.site})
+               elif opts.sitelist:
+                       l = opts.sitelist.split(",")
+                       query.update({'login_base' : l})
 
                # ADD SITES
                sites = api.GetSites(query, ['login_base'])
@@ -89,6 +100,7 @@ if __name__=="__main__":
                        in_db_not_plc = set(site_db_list) - set(site_api_list)
                        for login_base in in_db_not_plc:
                                print "Deleting %s" % login_base
-                               zabbixsite.delete_site(site['login_base'])
+                               zabbixsite.delete_site(login_base)
+                               session.flush()