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
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
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}"
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
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
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")
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']:
+ 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)
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 = []
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()
+ session_clear_all()
loginbase=None
loginbase_list=[]
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)
# 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):
- session.flush(); session.clear()
+ def pcuviewold(self, loginbase=None, pcuid=None, hostname=None, since=20, **data):
+ session_clear_all()
sitequery=[]
pcuquery=[]
nodequery=[]
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)
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 = []
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()
print "redirecting 3"
return dict()
+