1 import turbogears as tg
2 from turbogears import controllers, expose, flash
3 # from monitorweb import model
5 # log = logging.getLogger("monitorweb.controllers")
6 from monitor.database.info.model import *
7 from pcucontrol import reboot
11 if pcu.port_status and len(pcu.port_status.keys()) > 0 :
12 obj = reboot.model_to_object(pcu.plc_pcu_stats['model'])
13 for port in obj.supported_ports:
14 state = pcu.port_status[str(port)]
15 retval.append( (port, state) )
18 retval = [( "Closed/Filtered", "state" )]
22 def format_pcu_shortstatus(pcu):
24 if pcu.reboot_trial_status == str(0):
26 elif pcu.reboot_trial_status == "NetDown" or pcu.reboot_trial_status == "Not_Run":
27 status = pcu.reboot_trial_status
33 class Root(controllers.RootController):
34 @expose(template="monitorweb.templates.welcome")
37 # log.debug("Happy TurboGears Controller Responding For Duty")
38 flash("Your application is now running")
39 return dict(now=time.ctime())
41 @expose(template="monitorweb.templates.nodelist")
42 def node(self, filter='BOOT'):
44 fbquery = FindbadNodeRecord.get_all_latest()
46 filtercount = {'DOWN' : 0, 'BOOT': 0, 'DEBUG' : 0, 'neverboot' : 0, 'pending' : 0, 'all' : 0}
49 pcu = FindbadPCURecord.get_latest_by(plc_pcuid=node.plc_pcuid).first()
51 node.pcu_status = pcu.reboot_trial_status
53 node.pcu_status = "nodata"
55 node.pcu_status = "nopcu"
57 if node.kernel_version:
58 node.kernel = node.kernel_version.split()[2]
63 if node.observed_status != 'DOWN':
64 filtercount[node.observed_status] += 1
66 if node.plc_node_stats['last_contact'] != None:
67 filtercount[node.observed_status] += 1
69 filtercount['neverboot'] += 1
72 if filter == node.observed_status:
74 if node.plc_node_stats['last_contact'] != None:
78 elif filter == "neverboot":
79 if node.plc_node_stats['last_contact'] == None:
81 elif filter == "pending":
82 # TODO: look in message logs...
87 return dict(now=time.ctime(), query=query, fc=filtercount)
89 @expose(template="monitorweb.templates.pculist")
90 def pcu(self, filter='all'):
92 fbquery = FindbadPCURecord.get_all_latest()
94 filtercount = {'ok' : 0, 'NetDown': 0, 'Not_Run' : 0, 'pending' : 0, 'all' : 0}
98 if node.reboot_trial_status == str(0):
99 filtercount['ok'] += 1
100 elif node.reboot_trial_status == 'NetDown' or node.reboot_trial_status == 'Not_Run':
101 filtercount[node.reboot_trial_status] += 1
103 filtercount['pending'] += 1
105 print reboot.pcu_name(node.plc_pcu_stats)
106 node.ports = format_ports(node)
107 node.status = format_pcu_shortstatus(node)
112 elif filter == "ok" and node.reboot_trial_status == str(0):
114 elif filter == node.reboot_trial_status:
116 elif filter == "pending":
117 # TODO: look in message logs...
118 if node.reboot_trial_status != str(0) and \
119 node.reboot_trial_status != 'NetDown' and \
120 node.reboot_trial_status != 'Not_Run':
124 return dict(query=query, fc=filtercount)
126 @expose(template="monitorweb.templates.pculist")
127 def site(self, filter='all'):
128 filtercount = {'ok' : 0, 'NetDown': 0, 'Not_Run' : 0, 'pending' : 0, 'all' : 0}
129 return dict(query=[], fc=filtercount)
131 @expose(template="monitorweb.templates.pculist")
132 def action(self, filter='all'):
133 filtercount = {'ok' : 0, 'NetDown': 0, 'Not_Run' : 0, 'pending' : 0, 'all' : 0}
134 return dict(query=[], fc=filtercount)