X-Git-Url: http://git.onelab.eu/?p=monitor.git;a=blobdiff_plain;f=web%2FMonitorWeb%2Fmonitorweb%2Fcontrollers.py;h=1ce95cc8b4c33e51129508b778dac952f5823887;hp=0c80feef5ff5a60a0d94bec24db93133882dcb77;hb=32e64e33bc81735e22024c5a44510848bb3c88df;hpb=28582f7068d5ef8e74cb3b70134f682d4ab471bc diff --git a/web/MonitorWeb/monitorweb/controllers.py b/web/MonitorWeb/monitorweb/controllers.py index 0c80fee..1ce95cc 100644 --- a/web/MonitorWeb/monitorweb/controllers.py +++ b/web/MonitorWeb/monitorweb/controllers.py @@ -87,6 +87,8 @@ def prep_pcu_for_display(pcu): except: agg.loginbase = "unknown" + agg.pcuhist = HistoryPCURecord.query.get(pcu.plc_pcuid) + agg.ports = format_ports(pcu.port_status, pcu.plc_pcu_stats['model']) agg.status = format_pcu_shortstatus(pcu) @@ -351,6 +353,81 @@ class Root(controllers.RootController, MonitorXmlrpcServer): raise RuntimeError("Unknown action given") return + @expose(template="monitorweb.templates.simpleview") + def simpleview(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() + + loginbase=None + hostname=None + pcuid=None + since=20 + + exceptions = None + sitequery=[] + nodequery=[] + pcuquery=[] + actions=[] + + for key in data: + print key, data[key] + + if 'query' in data: + obj = data['query'] + if len(obj.split(".")) > 1: hostname = obj + else: loginbase=obj + + if 'loginbase' in data: + loginbase = data['loginbase'] + + if 'hostname' in data: + hostname = data['hostname'] + + if 'pcuid' in data: + try: pcuid = int(data['pcuid']) + except: pcuid = None + + if 'since' in data: + try: since = int(since) + except: since = 20 + + if pcuid: + print "pcuid: %s" % pcuid + pcu = FindbadPCURecord.get_latest_by(plc_pcuid=pcuid) + loginbase = PlcSite.query.get(pcu.plc_pcu_stats['site_id']).plc_site_stats['login_base'] + + if hostname: + node = FindbadNodeRecord.get_latest_by(hostname=hostname) + loginbase = PlcSite.query.get(node.plc_node_stats['site_id']).plc_site_stats['login_base'] + + if loginbase: + actions = ActionRecord.query.filter_by(loginbase=loginbase + ).filter(ActionRecord.date_created >= datetime.now() - timedelta(since) + ).order_by(ActionRecord.date_created.desc()) + actions = [ a for a in actions ] + sitequery = [HistorySiteRecord.by_loginbase(loginbase)] + # NOTE: because a single pcu may be assigned to multiple hosts, + # track unique pcus by their plc_pcuid, then turn dict into list + pcus = {} + for node in FindbadNodeRecord.query.filter_by(loginbase=loginbase): + # NOTE: reformat some fields. + agg = prep_node_for_display(node) + nodequery += [agg] + if agg.pcu: + pcus[agg.pcu.pcu.plc_pcuid] = agg.pcu + + for pcuid_key in pcus: + pcuquery += [pcus[pcuid_key]] + + return dict(sitequery=sitequery, pcuquery=pcuquery, nodequery=nodequery, actions=actions, since=since, exceptions=exceptions) + + # TODO: add form validation @expose(template="monitorweb.templates.pcuview") @exception_handler(nodeaction_handler,"isinstance(tg_exceptions,RuntimeError)")