api: PackageIndexInfo deserialization

Add PackageIndexInfo deserialization function to controller_util.
Preparation for removing protobuf dependencies in lib/.

BUG=b:265998356
TEST=./run_test

Change-Id: Iac25771aa561839d887a935c7779dd95a1053dd4
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/4179353
Tested-by: Alex Klein <saklein@chromium.org>
Reviewed-by: Lizzy Presland <zland@google.com>
Commit-Queue: Alex Klein <saklein@chromium.org>
diff --git a/api/controller/controller_util_unittest.py b/api/controller/controller_util_unittest.py
index 085c510..e955f24 100644
--- a/api/controller/controller_util_unittest.py
+++ b/api/controller/controller_util_unittest.py
@@ -8,6 +8,7 @@
 from chromite.api.gen.chromite.api import build_api_test_pb2
 from chromite.api.gen.chromite.api import sysroot_pb2
 from chromite.api.gen.chromiumos import common_pb2
+from chromite.lib import binpkg
 from chromite.lib import build_target_lib
 from chromite.lib import chroot_lib
 from chromite.lib import cros_test_lib
@@ -227,3 +228,29 @@
         packages, output_proto, target_sysroot
     )
     assert len(output_proto.failed_package_data) == 3
+
+
+def test_package_index_info():
+    """Quick check converting to/from protobuf works."""
+    sha = "SHA"
+    number = 5
+    build_target_name = "build_target"
+    profile_name = "profile"
+    location = "location"
+
+    msg = common_pb2.PackageIndexInfo()
+    msg.snapshot_sha = sha
+    msg.snapshot_number = number
+    msg.build_target.name = build_target_name
+    msg.profile.name = profile_name
+    msg.location = location
+
+    obj = binpkg.PackageIndexInfo(
+        snapshot_sha=sha,
+        snapshot_number=number,
+        build_target=build_target_lib.BuildTarget(name=build_target_name),
+        profile=sysroot_lib.Profile(name=profile_name),
+        location=location,
+    )
+
+    assert obj == controller_util.deserialize_package_index_info(msg)