From 60a2b331c38f275e1fc3a2f0f6f22ef680754ee0 Mon Sep 17 00:00:00 2001
From: Stephen Soltesz <soltesz@cs.princeton.edu>
Date: Tue, 11 Dec 2007 22:45:50 +0000
Subject: [PATCH] Cache more stuff from plc in local files.

---
 syncplcdb.py | 34 +++++++++++++++++++++++++++++-----
 1 file changed, 29 insertions(+), 5 deletions(-)

diff --git a/syncplcdb.py b/syncplcdb.py
index 0bae012..35ac57b 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:
@@ -31,38 +32,61 @@ def dsn_from_dsln(d_sites, id2lb, l_nodes):
 				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'])
 	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', '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)
 	
-- 
2.47.0