diff options
Diffstat (limited to 'mobmonitor')
-rwxr-xr-x | mobmonitor/scripts/mobmonitor.py | 8 | ||||
-rw-r--r-- | mobmonitor/static/js/main.js | 2 | ||||
-rw-r--r-- | mobmonitor/util/__init__.py | 0 | ||||
-rw-r--r-- | mobmonitor/util/collect_logs.py | 40 |
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 |