Minor updates:
[monitor.git] / web / MonitorWeb / monitorweb / controllers.py
index 5ac368b..0f919ab 100644 (file)
@@ -11,6 +11,8 @@ import os
 from monitor.database.info.model import *
 #from monitor.database.zabbixapi.model import *
 from monitor_xmlrpc import MonitorXmlrpcServer
+from controllers_local import LocalExtensions
+from pcucontrol.reboot import pcu_name
 
 from monitor import util
 from monitor import reboot
@@ -53,16 +55,20 @@ class NodeQueryFields(widgets.WidgetsList):
        external_dns_status = widgets.CheckBox(label="Hostname Resolves?")
        kernel_version = widgets.CheckBox(label="Kernel")
        bootcd_version = widgets.CheckBox(label="BootCD")
+       boot_server = widgets.CheckBox(label="Boot Server")
+       install_date = widgets.CheckBox(label="Installation Date")
        observed_status = widgets.CheckBox(label="Observed Status")
        uptime = widgets.CheckBox(label="Uptime")
        traceroute = widgets.CheckBox(label="Traceroute")
        port_status = widgets.CheckBox(label="Port Status")
+       plc_pcuid = widgets.CheckBox(label="PCU ID")
        rpms = widgets.CheckBox(label="RPM")
        rpmvalue = widgets.TextField(label="RPM Pattern")
 
 class QueryForm(widgets.TableForm):
     template = """
     <form xmlns:py="http://purl.org/kid/ns#"
+        id="queryform"
         name="${name}"
         action="${action}"
         method="${method}"
@@ -143,7 +149,7 @@ def format_ports(data, pcumodel=None):
 def format_pcu_shortstatus(pcu):
        status = "error"
        if pcu:
-               if pcu.reboot_trial_status == str(0):
+               if pcu.reboot_trial_status == str(0) or pcu.reboot_trial_status == "Test: No error":
                        status = "Ok"
                elif pcu.reboot_trial_status == "NetDown" or pcu.reboot_trial_status == "Not_Run":
                        status = pcu.reboot_trial_status
@@ -165,6 +171,7 @@ def prep_pcu_for_display(pcu):
 
        agg.ports = format_ports(pcu.port_status, pcu.plc_pcu_stats['model'])
        agg.status = format_pcu_shortstatus(pcu)
+       agg.pcu_name = pcu_name(pcu.plc_pcu_stats)
 
        #print pcu.entry_complete
        agg.entry_complete_str = pcu.entry_complete
@@ -261,7 +268,7 @@ def prep_node_for_display(node, pcuhash=None, preppcu=True, asofdate=None):
        return agg
 
 
-class Root(controllers.RootController, MonitorXmlrpcServer):
+class Root(controllers.RootController, MonitorXmlrpcServer, LocalExtensions):
        @expose(template="monitorweb.templates.welcome")
        def index(self):
                # log.debug("Happy TurboGears Controller Responding For Duty")
@@ -337,7 +344,10 @@ class Root(controllers.RootController, MonitorXmlrpcServer):
                                        agg = node.__dict__.copy()
                                else:
                                        agg = node.to_dict()
-                               agg.update(agg['plc_node_stats'])
+                                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']:
@@ -345,7 +355,8 @@ class Root(controllers.RootController, MonitorXmlrpcServer):
                                if 'rpmvalue' in data and 'rpms' in data:
                                        if agg['rpms']:
                                                rpm_list = agg['rpms'].split()
-                                               rpm_list = filter(lambda x: data['rpmvalue'] in x, rpm_list)
+                                               rpm_list = filter(lambda x: re.match(data['rpmvalue'], x, re.I),
+                                                                  rpm_list)
                                                agg['rpms'] = " ".join(rpm_list)
 
                                query.append(agg)
@@ -595,6 +606,12 @@ class Root(controllers.RootController, MonitorXmlrpcServer):
                                for pcuid_key in pcus:
                                        pcuquery += [pcus[pcuid_key]]
 
+               #for a in nodequery:
+               #       print type(a.node)
+               #       print type(a.node.hostname)
+               nodequery.sort(lambda a,b: cmp(a.node.hostname,b.node.hostname))
+               pcuquery.sort(lambda a,b: cmp(a.pcu_name,b.pcu_name))
+
                actionlist_widget = ActionListWidget(template='monitorweb.templates.actionlist_template')
                return dict(sitequery=sitequery, pcuquery=pcuquery, nodequery=nodequery, actions=actions_list, actionlist_widget=actionlist_widget, since=since, exceptions=exceptions)
 
@@ -662,7 +679,7 @@ class Root(controllers.RootController, MonitorXmlrpcServer):
                query = []
                if pcu_id:
                        fbnode = HistoryPCURecord.get_by(plc_pcuid=pcu_id)
-                       l = fbnode.versions[-100:]
+                       l = fbnode.versions[-1000:]
                        l.reverse()
                        for pcu in l:
                                #prep_node_for_display(node)
@@ -707,13 +724,15 @@ class Root(controllers.RootController, MonitorXmlrpcServer):
                if loginbase:
                        fbsite = HistorySiteRecord.get_by(loginbase=loginbase)
                        # TODO: add links for earlier history if desired.
-                       l = fbsite.versions[-100:]
+                       l = fbsite.versions[-1000:]
                        l.reverse()
                        for site in l:
                                query.append(site)
                return dict(query=query, loginbase=loginbase)
 
 
+       @expose("cheetah:monitorweb.templates.pculist_plain", as_format="plain", 
+               accept_format="text/plain", content_type="text/plain")
        @expose(template="monitorweb.templates.pculist")
        def pcu(self, filter='all'):
                print "PCUVIEW------------------"
@@ -891,3 +910,4 @@ class Root(controllers.RootController, MonitorXmlrpcServer):
                print "redirecting 3"
 
                return dict()
+