Make sysinfo more configurable. This adds some methods to the job
classes, job.add_sysinfo_command and job.add_sysinfo_logfile, that
can be used to add more commands and/or logfiles to the standard
sysinfo collection for the job.

Risk: High
Visiblity: You can add code to control files to customize sysinfo
collection.

Signed-off-by: John Admanski <[email protected]>



git-svn-id: http://test.kernel.org/svn/autotest/trunk@2289 592f7852-d20e-0410-864c-8624ca9c26a4
diff --git a/server/server_job.py b/server/server_job.py
index df773b8..6ddc7c7 100755
--- a/server/server_job.py
+++ b/server/server_job.py
@@ -7,7 +7,7 @@
 """
 
 import getpass, os, sys, re, stat, tempfile, time, select, subprocess, traceback
-from autotest_lib.client.bin import fd_stack
+from autotest_lib.client.bin import fd_stack, sysinfo
 from autotest_lib.client.common_lib import error, log, utils, packages
 from autotest_lib.server import test, subcommand
 from autotest_lib.tko import db as tko_db, status_lib, utils as tko_utils
@@ -204,6 +204,8 @@
         self.stdout = fd_stack.fd_stack(1, sys.stdout)
         self.stderr = fd_stack.fd_stack(2, sys.stderr)
 
+        self.sysinfo = sysinfo.sysinfo(self.resultdir)
+
         if not os.access(self.tmpdir, os.W_OK):
             try:
                 os.makedirs(self.tmpdir, 0700)
@@ -550,6 +552,22 @@
                         optional_fields={"kernel": kernel})
 
 
+    def add_sysinfo_command(self, command, logfile=None, on_every_test=False):
+        self._add_sysinfo_loggable(sysinfo.command(command, logfile),
+                                   on_every_test)
+
+
+    def add_sysinfo_logfile(self, file, on_every_test=False):
+        self._add_sysinfo_loggable(sysinfo.logfile(file), on_every_test)
+
+
+    def _add_sysinfo_loggable(self, loggable, on_every_test):
+        if on_every_test:
+            self.sysinfo.test_loggables.add(loggable)
+        else:
+            self.sysinfo.boot_loggables.add(loggable)
+
+
     def record(self, status_code, subdir, operation, status='',
                optional_fields=None):
         """