controller/packages: Simplify GetTargetVersions.

Simplify the controller function to only do input/output
translation, using the new service method instead.

BUG=b:194405049
TEST=run_tests

Change-Id: I83fffe7ac79534df2d474b083681e1783ee55fe8
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/3273762
Tested-by: Alex Klein <saklein@chromium.org>
Commit-Queue: Alex Klein <saklein@chromium.org>
Reviewed-by: Sergey Frolov <sfrolov@google.com>
diff --git a/api/controller/packages.py b/api/controller/packages.py
index 11062a7..3b0df05 100644
--- a/api/controller/packages.py
+++ b/api/controller/packages.py
@@ -169,51 +169,18 @@
 def GetTargetVersions(input_proto, output_proto, _config):
   """Returns the target versions."""
   build_target = controller_util.ParseBuildTarget(input_proto.build_target)
-  # Look up the android package here once since the operation is so slow.
-  android_package = packages.determine_android_package(build_target.name)
-  if android_package:
-    # Android version.
-    android_version = packages.determine_android_version(
-        build_target.name, package=android_package)
-    logging.info('Found android version: %s', android_version)
-    if android_version:
-      output_proto.android_version = android_version
-    # Android branch version.
-    android_branch_version = packages.determine_android_branch(
-        build_target.name, package=android_package)
-    logging.info('Found android branch version: %s', android_branch_version)
-    if android_branch_version:
-      output_proto.android_branch_version = android_branch_version
-    # Android target version.
-    android_target_version = packages.determine_android_target(
-        build_target.name, package=android_package)
-    logging.info('Found android target version: %s', android_target_version)
-    if android_target_version:
-      output_proto.android_target_version = android_target_version
+  package_list = [
+      controller_util.PackageInfoToCPV(x) for x in input_proto.packages or []
+  ]
+  target_versions = packages.get_target_versions(build_target, package_list)
 
-  # TODO(crbug/1019770): Investigate cases where builds_chrome is true but
-  # chrome_version is None.
-
-  # If input_proto.packages is empty, then the default set of packages will
-  # be used as defined in dependency.GetBuildDependency.
-  package_list = None
-  if input_proto.packages:
-    package_list = [
-        controller_util.PackageInfoToCPV(x) for x in input_proto.packages
-    ]
-  builds_chrome = packages.builds(constants.CHROME_CP, build_target,
-                                  packages=package_list)
-  if builds_chrome:
-    # Chrome version fetch.
-    chrome_version = packages.determine_chrome_version(build_target)
-    logging.info('Found chrome version: %s', chrome_version)
-    if chrome_version:
-      output_proto.chrome_version = chrome_version
-
-  # The ChromeOS version info.
-  output_proto.platform_version = packages.determine_platform_version()
-  output_proto.milestone_version = packages.determine_milestone_version()
-  output_proto.full_version = packages.determine_full_version()
+  output_proto.android_version = target_versions.android_version or ''
+  output_proto.android_branch_version = target_versions.android_branch or ''
+  output_proto.android_target_version = target_versions.android_target or ''
+  output_proto.chrome_version = target_versions.chrome_version or ''
+  output_proto.platform_version = target_versions.platform_version or ''
+  output_proto.milestone_version = target_versions.milestone_version or ''
+  output_proto.full_version = target_versions.full_version or ''
 
 
 def _GetBuilderMetadataResponse(input_proto, output_proto, _config):