SysrootService: Add portage binhost logging.

The portage binhost is an important piece of information for a
lot of problems. Add logging to the two endpoints where the
problems most often manifest.

BUG=None
TEST=run_tests

Change-Id: I584eebde319134198be28ca427ce0957794da942
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/1618205
Tested-by: Sean Abraham <seanabraham@chromium.org>
Commit-Queue: Sean Abraham <seanabraham@chromium.org>
Reviewed-by: Alex Klein <saklein@chromium.org>
diff --git a/api/controller/sysroot.py b/api/controller/sysroot.py
index 518bac4..2560610 100644
--- a/api/controller/sysroot.py
+++ b/api/controller/sysroot.py
@@ -11,6 +11,8 @@
 from chromite.api.controller import controller_util
 from chromite.lib import build_target_util
 from chromite.lib import cros_build_lib
+from chromite.lib import cros_logging as logging
+from chromite.lib import portage_util
 from chromite.lib import sysroot_lib
 from chromite.service import sysroot
 
@@ -61,6 +63,8 @@
   if not target_sysroot.Exists():
     cros_build_lib.Die('Sysroot has not been created. Run Create first.')
 
+  _LogBinhost(build_target.name)
+
   try:
     sysroot.InstallToolchain(build_target, target_sysroot, run_configs)
   except sysroot_lib.ToolchainInstallError as e:
@@ -91,6 +95,8 @@
   if not target_sysroot.IsToolchainInstalled():
     cros_build_lib.Die('Toolchain must first be installed.')
 
+  _LogBinhost(build_target.name)
+
   use_flags = [u.flag for u in input_proto.use_flags]
   build_packages_config = sysroot.BuildPackagesRunConfig(
       event_file=event_file, usepkg=not compile_source,
@@ -104,3 +110,13 @@
       controller_util.CPVToPackageInfo(package, package_info)
 
     return controller.RETURN_CODE_UNSUCCESSFUL_RESPONSE_AVAILABLE
+
+
+def _LogBinhost(board):
+  """Log the portage binhost for the given board."""
+  binhost = portage_util.PortageqEnvvar('PORTAGE_BINHOST', board=board,
+                                        allow_undefined=True)
+  if not binhost:
+    logging.warning('Portage Binhost not found.')
+  else:
+    logging.info('Portage Binhost: %s', binhost)
diff --git a/api/controller/sysroot_unittest.py b/api/controller/sysroot_unittest.py
index 35c0f55..6e9e4c4 100644
--- a/api/controller/sysroot_unittest.py
+++ b/api/controller/sysroot_unittest.py
@@ -108,6 +108,8 @@
 
   def setUp(self):
     self.PatchObject(cros_build_lib, 'IsInsideChroot', return_value=True)
+    # Avoid running the portageq command.
+    self.PatchObject(sysroot_controller, '_LogBinhost')
     self.board = 'board'
     self.sysroot = os.path.join(self.tempdir, 'board')
     self.invalid_sysroot = os.path.join(self.tempdir, 'invalid', 'sysroot')
@@ -194,6 +196,8 @@
 
   def setUp(self):
     self.PatchObject(cros_build_lib, 'IsInsideChroot', return_value=True)
+    # Avoid running the portageq command.
+    self.PatchObject(sysroot_controller, '_LogBinhost')
     self.build_target = 'board'
     self.sysroot = os.path.join(self.tempdir, 'build', 'board')
     osutils.SafeMakedirs(self.sysroot)