summaryrefslogtreecommitdiff
path: root/mobmonitor
diff options
context:
space:
mode:
Diffstat (limited to 'mobmonitor')
-rwxr-xr-xmobmonitor/scripts/mobmonitor.py8
-rw-r--r--mobmonitor/static/js/main.js2
-rw-r--r--mobmonitor/util/__init__.py0
-rw-r--r--mobmonitor/util/collect_logs.py40
4 files changed, 49 insertions, 1 deletions
diff --git a/mobmonitor/scripts/mobmonitor.py b/mobmonitor/scripts/mobmonitor.py
index 2bc70b874..e3fff6431 100755
--- a/mobmonitor/scripts/mobmonitor.py
+++ b/mobmonitor/scripts/mobmonitor.py
@@ -12,12 +12,14 @@ import json
import os
import sys
+from cherrypy.lib.static import serve_file
from logging import handlers as logging_handlers
from chromite.lib import remote_access
from chromite.lib import commandline
from chromite.lib import cros_logging as logging
from chromite.mobmonitor.checkfile import manager
+from chromite.mobmonitor.util import collect_logs
STATICDIR = '/etc/mobmonitor/static'
@@ -111,6 +113,12 @@ class MobMonitorRoot(object):
args, kwargs)
return json.dumps(manager.MapServiceStatusToDict(status))
+ @cherrypy.expose
+ def CollectLogs(self):
+ tarfile = collect_logs.collect_logs()
+ return serve_file(tarfile, 'application/x-download',
+ 'attachment', os.path.basename(tarfile))
+
def SetupLogging(logdir):
logging.basicConfig(
diff --git a/mobmonitor/static/js/main.js b/mobmonitor/static/js/main.js
index ec1fad689..f09d36c42 100644
--- a/mobmonitor/static/js/main.js
+++ b/mobmonitor/static/js/main.js
@@ -19,7 +19,7 @@ $(document).ready(function() {
// Setup the log collection button.
$(document).on('click', '.collect-logs', function() {
- console.log('Collecting logs!');
+ window.open('/CollectLogs', '_blank');
});
// Setup the repair action buttons
diff --git a/mobmonitor/util/__init__.py b/mobmonitor/util/__init__.py
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/mobmonitor/util/__init__.py
diff --git a/mobmonitor/util/collect_logs.py b/mobmonitor/util/collect_logs.py
new file mode 100644
index 000000000..503fbdf69
--- /dev/null
+++ b/mobmonitor/util/collect_logs.py
@@ -0,0 +1,40 @@
+# Copyright 2015 The Chromium OS Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+"""Simple log collection script for Mob* Monitor"""
+
+from __future__ import print_function
+
+import os
+import tempfile
+import shutil
+
+from chromite.lib import cros_build_lib
+
+
+TMPDIR_PREFIX = 'moblab_logs_'
+LOG_DIRS = {
+ 'system_logs': '/var/log',
+ 'autotest_logs': '/usr/local/autotest/logs'
+}
+
+
+def collect_logs():
+ tempdir = tempfile.mkdtemp(prefix=TMPDIR_PREFIX)
+ os.chmod(tempdir, 0o777)
+
+ for name, path in LOG_DIRS.iteritems():
+ if not os.path.exists(path):
+ continue
+ shutil.copytree(path, os.path.join(tempdir, name))
+
+ cmd = ['mobmoncli', 'GetStatus']
+ cros_build_lib.RunCommand(
+ cmd,
+ log_stdout_to_file=os.path.join(tempdir, 'mobmonitor_getstatus')
+ )
+
+ tarball = '%s.tgz' % tempdir
+ cros_build_lib.CreateTarball(tarball, tempdir)
+ return tarball