faft: Suppress errors from rotate_servod_logs.

The rotate_servod_logs command is sometimes encountering an error,
causing tests to fail.  Any problems with rotating the logs should
only affect the troubleshooting of test failures, and not themselves
cause test failures.

This change also adds a log message indicating the attempt, to show
why the control is being called.

BUG=chromium:1023938
BUG=chromium:932820

TEST=Run firmware_FAFTSetup, with servod running and log file made immutable via chattr.

Change-Id: I84843617ba77d5aa7ef018bab6d53a617acb1906
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/autotest/+/1913492
Tested-by: Dana Goyette <dgoyette@chromium.org>
Reviewed-by: Ruben Rodriguez Buchillon <coconutruben@chromium.org>
Commit-Queue: Dana Goyette <dgoyette@chromium.org>
diff --git a/server/cros/servo/servo.py b/server/cros/servo/servo.py
index acf0825..295bf3e 100644
--- a/server/cros/servo/servo.py
+++ b/server/cros/servo/servo.py
@@ -332,6 +332,8 @@
         log_dir = '/var/log/servod_%s' % self._servo_host.servo_port
 
         if filename:
+            logging.info("Saving servod logs: %s/%s.*", directory or '.',
+                         filename)
             # TODO(crrev.com/c/1793030): remove no-level case once CL is pushed
             for level_name in ('', 'DEBUG', 'INFO', 'WARNING'):
 
@@ -380,7 +382,12 @@
         try:
             self.set_nocheck('rotate_servod_logs', 'yes')
         except ControlUnavailableError as e:
+            # Missing control (possibly old servod)
             logging.warn("Couldn't rotate servod logs: %s", str(e))
+        except error.TestFail:
+            # Control exists but gave an error; don't let it fail the test.
+            # The error is already logged in set_nocheck().
+            pass
 
     def get_power_state_controller(self):
         """Return the power state controller for this Servo.