match rpm pattern with regexp
[monitor.git] / web / MonitorWeb / monitorweb / controllers.py
index c46dc42..149a397 100644 (file)
@@ -53,8 +53,11 @@ 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")
        rpms = widgets.CheckBox(label="RPM")
        rpmvalue = widgets.TextField(label="RPM Pattern")
@@ -62,6 +65,7 @@ class NodeQueryFields(widgets.WidgetsList):
 class QueryForm(widgets.TableForm):
     template = """
     <form xmlns:py="http://purl.org/kid/ns#"
+        id="queryform"
         name="${name}"
         action="${action}"
         method="${method}"
@@ -337,12 +341,17 @@ class Root(controllers.RootController, MonitorXmlrpcServer):
                                else:
                                        agg = node.to_dict()
                                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: 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)
@@ -489,10 +498,15 @@ class Root(controllers.RootController, MonitorXmlrpcServer):
        def simpleview(self, **data):
                return self.pre_view(**data)
 
+       @expose(template="monitorweb.templates.simpleview")
+       def pcuview(self, **data):
+               return self.pre_view(**data)
+
        @expose(template="monitorweb.templates.detailview")
        def detailview(self, **data):
                return self.pre_view(**data)
 
+
        def pre_view(self, **data):
                session.flush(); session.clear()
 
@@ -594,7 +608,7 @@ class Root(controllers.RootController, MonitorXmlrpcServer):
        # TODO: add form validation
        @expose(template="monitorweb.templates.pcuview")
        @exception_handler(nodeaction_handler,"isinstance(tg_exceptions,RuntimeError)")
-       def pcuview(self, loginbase=None, pcuid=None, hostname=None, since=20, **data):
+       def pcuviewold(self, loginbase=None, pcuid=None, hostname=None, since=20, **data):
                session.flush(); session.clear()
                sitequery=[]
                pcuquery=[]