#from monitor.database.zabbixapi.model import *
from monitor_xmlrpc import MonitorXmlrpcServer
+from monitor import util
from monitor import reboot
+from monitor import bootman
from monitor import scanapi
+from monitor import config
import time
from monitor.wrapper.plccache import plcdb_hn2lb as site_hn2lb
agg.dns_short_status = 'Mismatch'
return agg
+class ActionListWidget(widgets.Widget):
+ pass
+
class NodeWidget(widgets.Widget):
pass
for pcuid_key in pcus:
pcuquery += [pcus[pcuid_key]]
- return dict(sitequery=sitequery, pcuquery=pcuquery, nodequery=nodequery, actions=actions_list, since=since, exceptions=exceptions)
+ 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
return dict(results=results)
@expose(template="monitorweb.templates.actionlist")
- def actionlist(self, action_type='down_notice', since=7, loginbase=None):
+ def actionlist(self, since=7, action_type=None, loginbase=None):
try: since = int(since)
except: since = 7
+ acts_query = ActionRecord.query.filter(
+ ActionRecord.date_created >= datetime.now() - timedelta(since)
+ )
if loginbase:
- acts = ActionRecord.query.filter_by(loginbase=loginbase
- ).filter(ActionRecord.date_created >= datetime.now() - timedelta(since)
- ).order_by(ActionRecord.date_created.desc())
- else:
- acts = ActionRecord.query.filter(ActionRecord.action_type==action_type
- ).filter(ActionRecord.date_created >= datetime.now() - timedelta(since)
- ).order_by(ActionRecord.date_created.desc())
+ acts_query = acts_query.filter_by(loginbase=loginbase)
+
+ if action_type:
+ acts_query = acts_query.filter(ActionRecord.action_type==action_type)
+
+ acts = acts_query.order_by(ActionRecord.date_created.desc())
+
query = [ a for a in acts ]
return dict(actions=query, action_type=action_type, since=since)
@cherrypy.expose()
def upload(self, log, **keywords):
- print "got data"
- data = log.file.read()
- target_file_name = os.path.join(os.getcwd(), log.filename)
- # open file in binary mode for writing
-
- f = open(target_file_name, 'wb')
- print "write data"
- f.write(data)
- f.close()
-
- #flash("File uploaded successfully: %s saved as: %s" \
- # % (upload_file.filename, target_file_name))
- #u = UploadedFile(filename=upload_file.filename,
- # abspath=target_file_name, size=0)
- print "redirecting "
-
- #redirect("monitor")
+ hostname = None
+ logtype = None
+ logtype_list = ['bm.log', ]
+
+ if 'hostname' in keywords:
+ hostname = keywords['hostname']
+ if 'type' in keywords and keywords['type'] in logtype_list:
+ logtype = keywords['type']
+
+ if not hostname: return ""
+ if not logtype: return "unknown logtype: %s" % logtype
+
+ short_target_filename = bootman.bootmanager_log_name(hostname)
+ abs_target_filename = os.path.join(config.MONITOR_BOOTMANAGER_LOG, short_target_filename)
+ print "write data: %s" % abs_target_filename
+ util.file.dumpFile(abs_target_filename, log.file.read())
+ bootman.bootmanager_log_action(hostname, short_target_filename, logtype)
+
+ print "redirecting 3"
+
return dict()