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]
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.