X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=zabbix%2Fzabbixsync.py;h=3af935b518d8dd4101ed52d57b4113d06951b885;hb=a06427d1c9506ee93888e8f2f80b6c4bdd134527;hp=54b30d58e945119a046e724ba8021ceda2f68647;hpb=c0d3e59ff639296fd16eb2b2bab18bc78b0a7415;p=monitor.git diff --git a/zabbix/zabbixsync.py b/zabbix/zabbixsync.py index 54b30d5..3af935b 100755 --- a/zabbix/zabbixsync.py +++ b/zabbix/zabbixsync.py @@ -2,17 +2,16 @@ import sys import site -from monitor.wrapper import plc +from monitor.wrapper import plc, plccache from monitor import database import zabbixsite -from monitor.database.dborm import session +from monitor.database.dborm import zab_session as session -print "test" -plcdb = database.dbLoad("l_plcsites") -netid2ip = database.dbLoad("plcdb_netid2ip") -lb2hn = database.dbLoad("plcdb_lb2hn") +plcdb = plccache.l_sites # database.dbLoad("l_plcsites") +netid2ip = plccache.plcdb_netid2ip # database.dbLoad("plcdb_netid2ip") +lb2hn = plccache.plcdb_lb2hn # database.dbLoad("plcdb_lb2hn") def get_site_iplist(loginbase): node_list = lb2hn[loginbase] @@ -37,13 +36,32 @@ def add_loginbase(loginbase): zabbixsite.setup_site(loginbase, techs, pis, iplist) if __name__=="__main__": - #sites = api.GetSites({'peer_id' : None}, ['login_base']) - for loginbase in ['princeton', 'princetondsl', 'monitorsite']: - add_loginbase(loginbase) + + from monitor import parser as parsermodule + parser = parsermodule.getParser() + parser.set_defaults( setupglobal=False, syncsite=True, site=None) + parser.add_option("", "--setupglobal", action="store_true", dest="setupglobal", + help="Setup global settings.") + parser.add_option("", "--nosite", action="store_false", dest="syncsite", + help="Do not sync sites.") + parser.add_option("", "--site", dest="site", + help="Sync only given site name.") + opts = parsermodule.parse_args(parser) + + if opts.setupglobal: + zabbixsite.setup_global() session.flush() - # TODO: for any site that is in the db, call zabbixsite.delete_site() + if opts.syncsite: + api = plc.getAuthAPI() + query = {'peer_id' : None} + if opts.site: + query.update({'login_base' : opts.site}) + + sites = api.GetSites(query, ['login_base']) + for site in sites: + add_loginbase(site['login_base']) + session.flush() + + # TODO: for any removed site that is in the db, call zabbixsite.delete_site() -## Hosts & Templates -# no need to define hosts? -# add template? It appears that the xml-based tempate system is sufficient.