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