X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=web%2FMonitorWeb%2Fmonitorweb%2Fcontrollers.py;h=c540888eedc2b51e75bec8158b3c94321c9c7f8a;hb=bd5fd5bfc5e998b3ac022c8cd6c5f14fef83207d;hp=48ec3d24d3a4f5d468f30b6549f68af96a5385a7;hpb=6c38b5cef7bf12fa4ade23ae1c54b3491797fb1d;p=monitor.git diff --git a/web/MonitorWeb/monitorweb/controllers.py b/web/MonitorWeb/monitorweb/controllers.py index 48ec3d2..c540888 100644 --- a/web/MonitorWeb/monitorweb/controllers.py +++ b/web/MonitorWeb/monitorweb/controllers.py @@ -11,6 +11,7 @@ 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 monitor import util from monitor import reboot @@ -23,6 +24,13 @@ from monitor.wrapper.plccache import plcdb_hn2lb as site_hn2lb from monitorweb.templates.links import * +def session_clear_all(): + session.flush() + try: + session.expunge_all() + except AttributeError: # SQLAlchemy < 0.5.1 + session.clear() + class ObjectQueryFields(widgets.WidgetsList): """The WidgetsList defines the fields of the form.""" pass @@ -53,11 +61,13 @@ 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") + 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") @@ -263,7 +273,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") @@ -339,7 +349,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']: @@ -347,7 +360,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) @@ -380,7 +394,7 @@ class Root(controllers.RootController, MonitorXmlrpcServer): def nodeslow(self, filter='boot'): print "NODE------------------" print "befor-len: ", len( [ i for i in session] ) - session.flush(); session.clear() + session_clear_all() print "after-len: ", len( [ i for i in session] ) fbquery = FindbadNodeRecord.get_all_latest() query = [] @@ -504,7 +518,7 @@ class Root(controllers.RootController, MonitorXmlrpcServer): def pre_view(self, **data): - session.flush(); session.clear() + session_clear_all() loginbase=None loginbase_list=[] @@ -605,7 +619,7 @@ class Root(controllers.RootController, MonitorXmlrpcServer): @expose(template="monitorweb.templates.pcuview") @exception_handler(nodeaction_handler,"isinstance(tg_exceptions,RuntimeError)") def pcuviewold(self, loginbase=None, pcuid=None, hostname=None, since=20, **data): - session.flush(); session.clear() + session_clear_all() sitequery=[] pcuquery=[] nodequery=[] @@ -664,7 +678,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) @@ -709,18 +723,20 @@ 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------------------" print "befor-len: ", len( [ i for i in session] ) - session.flush(); session.clear() + session_clear_all() print "after-len: ", len( [ i for i in session] ) fbquery = FindbadPCURecord.get_all_latest() query = [] @@ -758,7 +774,7 @@ class Root(controllers.RootController, MonitorXmlrpcServer): def site(self, filter='all'): print "SITE------------------" print "befor-len: ", len( [ i for i in session] ) - session.flush(); session.clear() + session_clear_all() print "after-len: ", len( [ i for i in session] ) filtercount = {'good' : 0, 'down': 0, 'online':0, 'offline' : 0, 'new' : 0, 'pending' : 0, 'all' : 0} fbquery = HistorySiteRecord.query.all() @@ -893,3 +909,4 @@ class Root(controllers.RootController, MonitorXmlrpcServer): print "redirecting 3" return dict() +