deploy: collect ec/cpu UART logs

The UART logs are important for deployment trouble-shooting.

BUG=chromium:943673
TEST=Ran deploy script and `prepare/main.py` locally.

Change-Id: I90c3cce74951bfb05b5b19ecc13537f3e28283f0
Reviewed-on: https://chromium-review.googlesource.com/1536492
Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com>
Tested-by: Congbin Guo <guocb@chromium.org>
Reviewed-by: Allen Li <ayatane@chromium.org>
diff --git a/server/cros/servo/servo.py b/server/cros/servo/servo.py
index da9f484..0ecccc5 100644
--- a/server/cros/servo/servo.py
+++ b/server/cros/servo/servo.py
@@ -137,6 +137,7 @@
     def __init__(self, servo):
         self._servo = servo
         self._streams = []
+        self._logs_dir = None
 
     def start_capture(self):
         """Start capturing Uart streams."""
@@ -151,13 +152,13 @@
                 logging.debug('The servod is too old that ec_uart_capture not '
                               'supported.')
 
-    def dump(self, output_dir):
-        """Dump UART streams to log files accordingly.
+    def dump(self):
+        """Dump UART streams to log files accordingly."""
+        if not self._logs_dir:
+            return
 
-        @param output_dir: A string of output directory name.
-        """
         for stream, logfile in self._streams:
-            logfile_fullname = os.path.join(output_dir, logfile)
+            logfile_fullname = os.path.join(self._logs_dir, logfile)
             try:
                 content = self._servo.get(stream)
             except Exception as err:
@@ -184,6 +185,18 @@
                 logging.warn('Failed to stop UART logging for %s: %s', uart,
                              err)
 
+    @property
+    def logs_dir(self):
+        """Return the directory to save UART logs."""
+        return self._logs_dir
+
+    @logs_dir.setter
+    def logs_dir(self, a_dir):
+        """Set directory to save UART logs.
+
+        @param a_dir  String of logs directory name."""
+        self._logs_dir = a_dir
+
 
 class Servo(object):
 
@@ -1001,17 +1014,24 @@
             logging.debug('Not a servo v4, unable to set role to %s.', role)
 
 
-    def dump_uart_streams(self, output_dir):
-        """Get buffered UART streams and append to log files.
+    @property
+    def uart_logs_dir(self):
+        """Return the directory to save UART logs."""
+        return self._uart.logs_dir if self._uart else ""
 
-        @param output_dir: A string of directory name to save log files.
-        """
+
+    @uart_logs_dir.setter
+    def uart_logs_dir(self, logs_dir):
+        """Set directory to save UART logs.
+
+        @param logs_dir  String of directory name."""
         if self._uart:
-            self._uart.dump(output_dir)
+            self._uart.logs_dir = logs_dir
 
 
     def close(self):
         """Close the servo object."""
         if self._uart:
             self._uart.stop_capture()
+            self._uart.dump()
             self._uart = None