5 from monitor.wrapper import plc, plccache
6 from monitor import database
9 from monitor.database.dborm import zab_session as session
12 plcdb = plccache.l_sites # database.dbLoad("l_plcsites")
13 netid2ip = plccache.plcdb_netid2ip # database.dbLoad("plcdb_netid2ip")
14 lb2hn = plccache.plcdb_lb2hn # database.dbLoad("plcdb_lb2hn")
16 def get_site_iplist(loginbase):
17 node_list = lb2hn[loginbase]
19 # TODO: ip_list string cannot be longer than 255 characters.
20 # TODO: if it is, then we need to break up the discovery rule.
22 for node in node_list:
23 ip = netid2ip[node['nodenetwork_ids'][0]]
24 if len(ip_list) > 0: ip_list += ","
29 def add_loginbase(loginbase):
31 techs = plc.getTechEmails(loginbase)
32 pis = plc.getPIEmails(loginbase)
33 iplist = get_site_iplist(loginbase)
35 print "zabbixsite.setup_site('%s', %s, %s, '%s')" % (loginbase,techs, pis, iplist)
36 zabbixsite.setup_site(loginbase, techs, pis, iplist)
38 if __name__=="__main__":
40 from monitor import parser as parsermodule
41 parser = parsermodule.getParser()
42 parser.set_defaults( setupglobal=False, syncsite=True, site=None)
43 parser.add_option("", "--setupglobal", action="store_true", dest="setupglobal",
44 help="Setup global settings.")
45 parser.add_option("", "--nosite", action="store_false", dest="syncsite",
46 help="Do not sync sites.")
47 parser.add_option("", "--site", dest="site",
48 help="Sync only given site name.")
49 opts = parsermodule.parse_args(parser)
52 zabbixsite.setup_global()
55 api = plc.getAuthAPI()
56 query = {'peer_id' : None}
58 query.update({'login_base' : opts.site})
60 sites = api.GetSites(query, ['login_base'])
62 add_loginbase(site['login_base'])
65 # TODO: for any removed site that is in the db, call zabbixsite.delete_site()