build-api: Gracefully handle absent versions

betty boards are failing to return builder metadata because protos can't
resolve None to an str type. This change wraps those setters in a
presence check, to ensure that the proto can just handle those missing
values.

BUG=b:213879649
TEST=run_tests

Change-Id: I2c7c7803e11cc092a29c4811cd443b62ac79bc3a
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/3378849
Reviewed-by: George Engelbrecht <engeg@google.com>
Reviewed-by: Alex Klein <saklein@chromium.org>
Commit-Queue: Benjamin Shai <bshai@google.com>
Tested-by: Benjamin Shai <bshai@google.com>
diff --git a/api/controller/packages.py b/api/controller/packages.py
index 3b0df05..a9f98ae 100644
--- a/api/controller/packages.py
+++ b/api/controller/packages.py
@@ -223,8 +223,10 @@
       build_target.name)
 
   fw_versions = packages.determine_firmware_versions(build_target)
-  build_target_metadata.main_firmware_version = fw_versions.main_fw_version
-  build_target_metadata.ec_firmware_version = fw_versions.ec_fw_version
+  if fw_versions:
+    build_target_metadata.main_firmware_version = fw_versions.main_fw_version
+    build_target_metadata.ec_firmware_version = fw_versions.ec_fw_version
+
   build_target_metadata.kernel_version = packages.determine_kernel_version(
       build_target)
   fingerprints = packages.find_fingerprints(build_target)