X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=syncplcdb.py;h=b0e42a68dc0004ca862dd7084673eee5211c29f4;hb=d5b0651a666c9a6b2deb4103ed15c3c06075395d;hp=0bae012fcb758213222ea9df4a1797d2e61cf48f;hpb=66b2c2382b2c4550f962a7224466f26a23510820;p=monitor.git diff --git a/syncplcdb.py b/syncplcdb.py index 0bae012..b0e42a6 100755 --- a/syncplcdb.py +++ b/syncplcdb.py @@ -20,6 +20,7 @@ def dsites_from_lsites(l_sites): return (d_sites, id2lb) def dsn_from_dsln(d_sites, id2lb, l_nodes): + lb2hn = {} dsn = {} hn2lb = {} for node in l_nodes: @@ -27,42 +28,70 @@ def dsn_from_dsln(d_sites, id2lb, l_nodes): if node['site_id'] in id2lb.keys(): login_base = id2lb[node['site_id']] else: + print "%s has a foreign site_id %s" % (node['hostname'], + node['site_id']) + continue for i in id2lb: print i, " ", id2lb[i] raise Exception, "Node has missing site id!! %s %d" %(node['hostname'], node['site_id']) if not login_base in dsn: + lb2hn[login_base] = [] dsn[login_base] = {} dsn[login_base]['plc'] = d_sites[login_base] dsn[login_base]['monitor'] = {} # event log, or something hostname = node['hostname'] + lb2hn[login_base].append(node) dsn[login_base][hostname] = {} dsn[login_base][hostname]['plc'] = node dsn[login_base][hostname]['comon'] = {} dsn[login_base][hostname]['monitor'] = {} hn2lb[hostname] = login_base - return (dsn, hn2lb) + return (dsn, hn2lb, lb2hn) + +def create_netid2ip(l_nodes, l_nodenetworks): + netid2ip = {} + for node in l_nodes: + for netid in node['nodenetwork_ids']: + found = False + for nn in l_nodenetworks: + if nn['nodenetwork_id'] == netid: + found = True + netid2ip[netid] = nn['ip'] + if not found: + print "ERROR! %s" % node + + return netid2ip def create_plcdb(): # get sites, and stats - l_sites = plc.getSites({'peer_id':None}, ['login_base', 'site_id']) + l_sites = plc.getSites({'peer_id':None}, ['login_base', 'site_id', 'abbreviated_name', 'latitude', 'longitude', + 'max_slices', 'slice_ids', 'node_ids' ]) if len(l_sites) == 0: sys.exit(1) (d_sites,id2lb) = dsites_from_lsites(l_sites) # get nodes at each site, and - l_nodes = plc.getNodes({'peer_id':None}, ['hostname', 'site_id', 'version', 'last_updated', 'date_created', 'last_contact', 'pcu_ids']) - (plcdb, hn2lb) = dsn_from_dsln(d_sites, id2lb, l_nodes) + l_nodes = plc.getNodes({'peer_id':None}, ['hostname', 'node_id', 'ports', 'site_id', 'version', + 'last_updated', 'date_created', 'last_contact', 'pcu_ids', 'nodenetwork_ids']) + + l_nodenetworks = plc.getNodeNetworks() + (plcdb, hn2lb, lb2hn) = dsn_from_dsln(d_sites, id2lb, l_nodes) + netid2ip = create_netid2ip(l_nodes, l_nodenetworks) # save information for future. id2lb = id2lb hn2lb = hn2lb db = plcdb - if config.cachenodes: + if ('cachenodes' in dir(config) and config.cachenodes) or \ + 'cachenodes' not in dir(config): soltesz.dbDump("plcdb_hn2lb", hn2lb) + soltesz.dbDump("plcdb_lb2hn", lb2hn) + soltesz.dbDump("plcdb_netid2ip", netid2ip) + soltesz.dbDump("l_plcnodenetworks", l_nodenetworks) soltesz.dbDump("l_plcnodes", l_nodes) soltesz.dbDump("l_plcsites", l_sites)