SysrootService: use package_indexes list when present.

If package_indexes is provided, then that is used instead of the
BINHOST.conf from the overlays.

BUG=chromium:1088059
TEST=unit tests pass.

Change-Id: Ic2041e7bcc93242403d01e1f12d93fbd44539d13
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/2341833
Tested-by: LaMont Jones <lamontjones@chromium.org>
Reviewed-by: Alex Klein <saklein@chromium.org>
Commit-Queue: LaMont Jones <lamontjones@chromium.org>
diff --git a/api/controller/sysroot.py b/api/controller/sysroot.py
index b0901ab..d632f06 100644
--- a/api/controller/sysroot.py
+++ b/api/controller/sysroot.py
@@ -15,6 +15,7 @@
 from chromite.api import validate
 from chromite.api.controller import controller_util
 from chromite.api.metrics import deserialize_metrics_log
+from chromite.lib import binpkg
 from chromite.lib import cros_build_lib
 from chromite.lib import cros_logging as logging
 from chromite.lib import goma_lib
@@ -41,8 +42,13 @@
 
   build_target = controller_util.ParseBuildTarget(input_proto.build_target,
                                                   input_proto.profile)
+  package_indexes = [
+      binpkg.PackageIndexInfo.from_protobuf(x)
+      for x in input_proto.package_indexes
+  ]
   run_configs = sysroot.SetupBoardRunConfig(
-      force=replace_sysroot, upgrade_chroot=update_chroot)
+      force=replace_sysroot, upgrade_chroot=update_chroot,
+      package_indexes=package_indexes)
 
   try:
     created = sysroot.Create(build_target, run_configs,
@@ -158,6 +164,10 @@
       input_proto.sysroot.build_target)
   packages = [controller_util.PackageInfoToString(x)
               for x in input_proto.packages]
+  package_indexes = [
+      binpkg.PackageIndexInfo.from_protobuf(x)
+      for x in input_proto.package_indexes
+  ]
 
   if not target_sysroot.IsToolchainInstalled():
     cros_build_lib.Die('Toolchain must first be installed.')
@@ -169,6 +179,7 @@
       usepkg=not compile_source,
       install_debug_symbols=True,
       packages=packages,
+      package_indexes=package_indexes,
       use_flags=use_flags,
       use_goma=use_goma,
       incremental_build=False)
diff --git a/api/controller/sysroot_unittest.py b/api/controller/sysroot_unittest.py
index 5aad793..f852abc 100644
--- a/api/controller/sysroot_unittest.py
+++ b/api/controller/sysroot_unittest.py
@@ -121,7 +121,8 @@
     sysroot_controller.Create(in_proto, out_proto, self.api_config)
 
     # Default value checks.
-    rc_patch.assert_called_with(force=force, upgrade_chroot=upgrade_chroot)
+    rc_patch.assert_called_with(force=force, upgrade_chroot=upgrade_chroot,
+                                package_indexes=[])
     self.assertEqual(board, out_proto.sysroot.build_target.name)
     self.assertEqual(sysroot_path, out_proto.sysroot.path)
 
@@ -137,7 +138,8 @@
     sysroot_controller.Create(in_proto, out_proto, self.api_config)
 
     # Not default value checks.
-    rc_patch.assert_called_with(force=force, upgrade_chroot=upgrade_chroot)
+    rc_patch.assert_called_with(force=force, upgrade_chroot=upgrade_chroot,
+                                package_indexes=[])
     self.assertEqual(board, out_proto.sysroot.build_target.name)
     self.assertEqual(sysroot_path, out_proto.sysroot.path)