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"
54 node.pcu_short_status = format_pcu_shortstatus(pcu)
57 node.pcu_status = "nopcu"
58 node.pcu_short_status = "none"
60 if node.kernel_version:
61 node.kernel = node.kernel_version.split()[2]
67 if node.observed_status != 'DOWN':
68 filtercount[node.observed_status] += 1
70 if node.plc_node_stats['last_contact'] != None:
71 filtercount[node.observed_status] += 1
73 filtercount['neverboot'] += 1
76 if filter == node.observed_status:
78 if node.plc_node_stats['last_contact'] != None:
82 elif filter == "neverboot":
83 if node.plc_node_stats['last_contact'] == None:
85 elif filter == "pending":
86 # TODO: look in message logs...
91 return dict(now=time.ctime(), query=query, fc=filtercount)
93 @expose(template="monitorweb.templates.pculist")
94 def pcu(self, filter='all'):
96 fbquery = FindbadPCURecord.get_all_latest()
98 filtercount = {'ok' : 0, 'NetDown': 0, 'Not_Run' : 0, 'pending' : 0, 'all' : 0}
102 if node.reboot_trial_status == str(0):
103 filtercount['ok'] += 1
104 elif node.reboot_trial_status == 'NetDown' or node.reboot_trial_status == 'Not_Run':
105 filtercount[node.reboot_trial_status] += 1
107 filtercount['pending'] += 1
109 node.ports = format_ports(node)
110 node.status = format_pcu_shortstatus(node)
115 elif filter == "ok" and node.reboot_trial_status == str(0):
117 elif filter == node.reboot_trial_status:
119 elif filter == "pending":
120 # TODO: look in message logs...
121 if node.reboot_trial_status != str(0) and \
122 node.reboot_trial_status != 'NetDown' and \
123 node.reboot_trial_status != 'Not_Run':
127 return dict(query=query, fc=filtercount)
129 @expose(template="monitorweb.templates.sitelist")
130 def site(self, filter='all'):
131 filtercount = {'good' : 0, 'down': 0, 'new' : 0, 'pending' : 0, 'all' : 0}
132 fbquery = HistorySiteRecord.query.all()
136 filtercount['all'] += 1
137 if site.new and site.slices_used == 0 and not site.enabled:
138 filtercount['new'] += 1
139 elif not site.enabled:
140 filtercount['pending'] += 1
142 filtercount[site.status] += 1
147 elif filter == 'new' and site.new and site.slices_used == 0 and not site.enabled:
149 elif filter == "pending" and not site.enabled:
151 elif filter == site.status:
154 return dict(query=query, fc=filtercount)
156 @expose(template="monitorweb.templates.pculist")
157 def action(self, filter='all'):
158 filtercount = {'ok' : 0, 'NetDown': 0, 'Not_Run' : 0, 'pending' : 0, 'all' : 0}
159 return dict(query=[], fc=filtercount)