modified *list templates with abreviated information
[monitor.git] / nodequery.py
index 71c62bc..bcebf15 100755 (executable)
@@ -4,7 +4,7 @@
 import sys
 from monitor import database
 from nodecommon import *
-from unified_model import Record
+from monitor.model import Record
 import glob
 import os
 import traceback
@@ -13,11 +13,11 @@ import time
 import re
 import string
 
-from monitor.pcu import reboot
+from pcucontrol  import reboot
 from monitor.wrapper import plc, plccache
 api = plc.getAuthAPI()
 
-from monitor.database import FindbadNodeRecord, FindbadPCURecord
+from monitor.database.info.model import FindbadNodeRecordSync, FindbadNodeRecord, FindbadPCURecord, session
 from monitor import util
 from monitor import config
 
@@ -75,10 +75,10 @@ def get(fb, path):
     indexes = path.split(".")
     values = fb
     for index in indexes:
-        if index in values:
-            values = values[index]
-        else:
-            raise NoKeyException(index)
+               if values and index in values:
+                       values = values[index]
+               else:
+                       raise NoKeyException(index)
     return values
 
 def verifyType(constraints, data):
@@ -254,9 +254,10 @@ def query_to_dict(query):
        return ad
 
 def pcu_in(fbdata):
-       if 'plcnode' in fbdata:
-               if 'pcu_ids' in fbdata['plcnode']:
-                       if len(fbdata['plcnode']['pcu_ids']) > 0:
+       #if 'plcnode' in fbdata:
+       if 'plc_node_stats' in fbdata:
+               if fbdata['plc_node_stats'] and 'pcu_ids' in fbdata['plc_node_stats']:
+                       if len(fbdata['plc_node_stats']['pcu_ids']) > 0:
                                return True
        return False
 
@@ -273,20 +274,29 @@ def pcu_select(str_query, nodelist=None):
                fbpcu_list = [ p.plc_pcuid for p in fbpcuquery ]
 
        dict_query = query_to_dict(str_query)
-
-       for noderec in fbquery:
-               if nodelist is not None: 
-                       if noderec.hostname not in nodelist: continue
-       
-               fb_nodeinfo  = noderec.to_dict()
-               if pcu_in(fb_nodeinfo):
-                       pcurec = FindbadPCURecord.get_latest_by(plc_pcuid=get(fb_nodeinfo, 'plc_node_stats.pcu_ids')[0])
-                       pcuinfo = pcurec.to_dict()
-                       if verify(dict_query, pcuinfo):
-                               nodenames.append(noderec.hostname)
-                               str = "cmdhttps/locfg.pl -s %s -f iloxml/License.xml -u %s -p '%s' | grep MESSAGE" % \
-                                                       (reboot.pcu_name(pcuinfo), pcuinfo['username'], pcuinfo['password'])
-                               pcunames.append(pcuinfo['plc_pcuid'])
+       print "dict_query", dict_query
+       print 'length %s' % len(fbpcuquery.all())
+
+       for pcurec in fbpcuquery:
+               pcuinfo = pcurec.to_dict()
+               if verify(dict_query, pcuinfo):
+                       #nodenames.append(noderec.hostname)
+                       #print 'appending %s' % pcuinfo['plc_pcuid']
+                       pcunames.append(pcuinfo['plc_pcuid'])
+
+       #for noderec in fbquery:
+       #       if nodelist is not None: 
+       #               if noderec.hostname not in nodelist: continue
+#      
+#              fb_nodeinfo  = noderec.to_dict()
+#              if pcu_in(fb_nodeinfo):
+#                      pcurec = FindbadPCURecord.get_latest_by(plc_pcuid=get(fb_nodeinfo, 
+#                                                                                                      'plc_node_stats.pcu_ids')[0]).first()
+#                      if pcurec:
+#                              pcuinfo = pcurec.to_dict()
+#                              if verify(dict_query, pcuinfo):
+#                                      nodenames.append(noderec.hostname)
+#                                      pcunames.append(pcuinfo['plc_pcuid'])
        return (nodenames, pcunames)
 
 def node_select(str_query, nodelist=None, fb=None):