+ @expose(template="monitorweb.templates.nodelist", allow_json=True)
+ def node3(self, filter=None):
+ nhquery = HistoryNodeRecord.query.all()
+ query = []
+ for nh in nhquery:
+ if filter:
+ if nh.status == filter:
+ query.append(nh)
+ else:
+ query.append(nh)
+
+ rquery=[]
+ for q in query:
+ fb = FindbadNodeRecord.get_latest_by(hostname=q.hostname)
+ rquery.append(fb)
+
+ return dict(now=time.ctime(), query=rquery)
+
+ def node_query(self, filter):
+ nhquery = HistoryNodeRecord.query.all()
+ query = []
+ for nh in nhquery:
+ if filter:
+ if nh.status == filter:
+ query.append(nh)
+ else:
+ query.append(nh)
+
+ rquery=[]
+ for q in query:
+ fb = FindbadNodeRecord.get_latest_by(hostname=q.hostname)
+ agg = prep_node_for_display(fb)
+ rquery.append(agg)
+ return rquery
+
+ @expose("cheetah:monitorweb.templates.nodelist_plain", as_format="plain",
+ accept_format="text/plain", content_type="text/plain")
+ @expose(template="monitorweb.templates.nodelist", allow_json=True)
+ def node2(self, filter=None):
+ rquery=self.node_query(filter)
+ widget = NodeWidget(template='monitorweb.templates.node_template')
+ return dict(now=time.ctime(), query=rquery, nodewidget=widget)
+
+ @expose("cheetah:monitorweb.templates.query_plain", as_format="plain",
+ accept_format="text/plain", content_type="text/plain")
+ @expose(template="monitorweb.templates.query", allow_json=True)
+ def query(self, **data):
+ query = []
+
+ for k in data:
+ print k, data[k]
+
+ fbquery = None
+
+ if 'object' in data and data['object'] == "nodes":
+ fbquery = FindbadNodeRecord.get_all_latest()
+ elif 'object' in data and data['object'] == "nodehistory":
+ hostname = data['nodehistory_hostname']
+ data['date_checked'] = 'date_checked'
+ fbrecord = FindbadNodeRecord.get_by(hostname=hostname)
+ fbquery = fbrecord.versions[-500:]
+
+ if fbquery:
+ for node in fbquery:
+ # NOTE: reformat some fields.
+ if type(node) is not type(FindbadNodeRecord):
+ agg = node.__dict__.copy()
+ else:
+ agg = node.to_dict()
+ if agg['plc_node_stats']:
+ agg.update(agg['plc_node_stats'])
+ if agg['install_date']:
+ agg['install_date'] = time.mktime(time.strptime(agg['install_date'], "%a %b %d %H:%M:%S %Y"))
+ if agg['kernel_version']:
+ agg['kernel_version'] = agg['kernel_version'].split()[2]
+ if 'traceroute' in data and agg['traceroute']:
+ agg['traceroute'] = "<pre>" + agg['traceroute'] + "</pre>"
+ if 'rpmvalue' in data and 'rpms' in data:
+ if agg['rpms']:
+ rpm_list = agg['rpms'].split()
+ rpm_list = filter(lambda x: re.match(data['rpmvalue'], x, re.I),
+ rpm_list)
+ agg['rpms'] = " ".join(rpm_list)
+
+ query.append(agg)
+
+ fields=data.copy()
+
+ try:
+ del fields['object']
+ del fields['rpmvalue']
+ del fields['nodehistory_hostname']
+ except: pass
+ return dict(now=time.ctime(), query=query, fields=fields, data=data, queryform=getNodeQueryForm())
+
+ @expose(template="monitorweb.templates.nodefast", allow_json=True)
+ def node(self, filter=None):
+ nhquery = HistoryNodeRecord.query.all()
+ query = []
+ for nh in nhquery:
+ if filter:
+ if nh.status == filter:
+ agg = prep_nodehist(nh)
+ query.append(agg)
+ else:
+ agg = prep_nodehist(nh)
+ query.append(agg)
+
+ return dict(now=time.ctime(), query=query)
+