api: don't fail on missing instructions

When signer instructions are not present for a build target, we return
None for the channel->instructions dict. Make sure that dict is present
before calling functions on it.

BUG=b:233669048
TEST=unit-test

Change-Id: I5f8acb4fa090607b07b17ed9cd1987ec5fc92dc8
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/3664616
Commit-Queue: Benjamin Shai <bshai@google.com>
Reviewed-by: Greg Edelston <gredelston@google.com>
Reviewed-by: George Engelbrecht <engeg@google.com>
Tested-by: Benjamin Shai <bshai@google.com>
diff --git a/api/controller/image.py b/api/controller/image.py
index c6c19b6..9572b4a 100644
--- a/api/controller/image.py
+++ b/api/controller/image.py
@@ -487,7 +487,8 @@
   except Exception:
     logging.error('PushImage failed: ', exc_info=True)
     return controller.RETURN_CODE_COMPLETED_UNSUCCESSFULLY
-  for uris in channel_to_uris.values():
-    for uri in uris:
-      _output_proto.instructions.add().instructions_file_path = uri
+  if channel_to_uris:
+    for uris in channel_to_uris.values():
+      for uri in uris:
+        _output_proto.instructions.add().instructions_file_path = uri
   return controller.RETURN_CODE_SUCCESS