faft: Move stop and start daemon methods to faft client

Move these methods to faft client as RPCs.

BUG=None
TEST=Ran a FAFT test.

Change-Id: I91ff3aed3d93ae987b2ae4d0eefdd74866148ad1
Reviewed-on: https://chromium-review.googlesource.com/783880
Commit-Ready: Wai-Hong Tam <waihong@google.com>
Tested-by: Wai-Hong Tam <waihong@google.com>
Reviewed-by: Kevin Shelton <kmshelton@chromium.org>
diff --git a/client/cros/faft/rpc_functions.py b/client/cros/faft/rpc_functions.py
index 1b41f06..b139551 100755
--- a/client/cros/faft/rpc_functions.py
+++ b/client/cros/faft/rpc_functions.py
@@ -707,6 +707,14 @@
     def _updater_cleanup(self):
         self._updater.cleanup_temp_dir()
 
+    def _updater_stop_daemon(self):
+        """Stop update-engine daemon."""
+        return self._updater.stop_daemon()
+
+    def _updater_start_daemon(self):
+        """Start update-engine daemon."""
+        return self._updater.start_daemon()
+
     def _updater_get_fwid(self):
         """Retrieve shellball's fwid.
 
diff --git a/client/cros/faft/utils/firmware_updater.py b/client/cros/faft/utils/firmware_updater.py
index ee2c757..4fc058f 100644
--- a/client/cros/faft/utils/firmware_updater.py
+++ b/client/cros/faft/utils/firmware_updater.py
@@ -22,6 +22,7 @@
     put shellball under /var/tmp/faft/autest with name chromeos-firmwareupdate.
     """
 
+    DAEMON = 'update-engine'
     CBFSTOOL = 'cbfstool'
     HEXDUMP = 'hexdump -v -e \'1/1 "0x%02x\\n"\''
     SIGNER = '/usr/share/vboot/bin/make_dev_firmware.sh'
@@ -70,6 +71,18 @@
         if self.os_if.is_dir(self._temp_path):
             self.os_if.remove_dir(self._temp_path)
 
+    def stop_daemon(self):
+        """Stop update-engine daemon."""
+        self.os_if.log('Stopping %s...' % self.DAEMON)
+        cmd = 'status %s | grep stop || stop %s' % (self.DAEMON, self.DAEMON)
+        self.os_if.run_shell_command(cmd)
+
+    def start_daemon(self):
+        """Start update-engine daemon."""
+        self.os_if.log('Starting %s...' % self.DAEMON)
+        cmd = 'status %s | grep start || start %s' % (self.DAEMON, self.DAEMON)
+        self.os_if.run_shell_command(cmd)
+
     def retrieve_fwid(self):
         """Retrieve shellball's fwid.
 
diff --git a/server/cros/faft/firmware_test.py b/server/cros/faft/firmware_test.py
index 411f47a..57de2df 100644
--- a/server/cros/faft/firmware_test.py
+++ b/server/cros/faft/firmware_test.py
@@ -165,7 +165,7 @@
                 logging.info('mainfw_act is B. rebooting to set it A')
                 self.switcher.mode_aware_reboot()
         self._setup_gbb_flags()
-        self._stop_service('update-engine')
+        self.faft_client.updater.stop_daemon()
         self._create_faft_lockfile()
         self._setup_ec_write_protect(ec_wp)
         # See chromium:239034 regarding needing this sync.
@@ -185,7 +185,7 @@
         self.switcher.restore_mode()
         self._restore_ec_write_protect()
         self._restore_gbb_flags()
-        self._start_service('update-engine')
+        self.faft_client.updater.start_daemon()
         self._remove_faft_lockfile()
         self._record_servo_log()
         self._record_faft_client_log()
@@ -458,24 +458,6 @@
         command = 'rm -f %s' % (self.lockfile)
         self.faft_client.system.run_shell_command(command)
 
-    def _stop_service(self, service):
-        """Stops a upstart service on the client.
-
-        @param service: The name of the upstart service.
-        """
-        logging.info('Stopping %s...', service)
-        command = 'status %s | grep stop || stop %s' % (service, service)
-        self.faft_client.system.run_shell_command(command)
-
-    def _start_service(self, service):
-        """Starts a upstart service on the client.
-
-        @param service: The name of the upstart service.
-        """
-        logging.info('Starting %s...', service)
-        command = 'status %s | grep start || start %s' % (service, service)
-        self.faft_client.system.run_shell_command(command)
-
     def clear_set_gbb_flags(self, clear_mask, set_mask):
         """Clear and set the GBB flags in the current flashrom.
 
diff --git a/server/cros/faft/utils/mode_switcher.py b/server/cros/faft/utils/mode_switcher.py
index 21161e8..03f17eb 100644
--- a/server/cros/faft/utils/mode_switcher.py
+++ b/server/cros/faft/utils/mode_switcher.py
@@ -609,7 +609,7 @@
             # Check the FAFT client is avaiable.
             self.faft_client.system.is_available()
             # Stop update-engine as it may change firmware/kernel.
-            self.faft_framework._stop_service('update-engine')
+            self.faft_framework.faft_client.updater.stop_daemon()
         else:
             logging.error('wait_for_client() timed out.')
             raise ConnectionError('DUT is still down unexpectedly')