From 7a8bc0e6be726cd6d6f63e7d2bac3f1548ed39ba Mon Sep 17 00:00:00 2001 From: Jonathan Lebon Date: Oct 01 2019 19:55:07 +0000 Subject: Include failure message if signing CoreOS artifacts failed So that we at least have some idea why signing failed and we don't have to both the robosignatory devs to pull out the logs. Signed-off-by: Jonathan Lebon --- diff --git a/robosignatory/coreos.py b/robosignatory/coreos.py index 45fa3c9..2f14b3b 100644 --- a/robosignatory/coreos.py +++ b/robosignatory/coreos.py @@ -67,6 +67,7 @@ class CoreOSSigner(object): except SigningFailed as e: log.error(e) response.body["status"] = "FAILURE" + response.body["failure-message"] = str(e) publish(response) else: response.body["status"] = "SUCCESS" diff --git a/tests/test_coreos.py b/tests/test_coreos.py index b00e64f..c4bf595 100644 --- a/tests/test_coreos.py +++ b/tests/test_coreos.py @@ -73,9 +73,11 @@ class TestCoreOS(unittest.TestCase): self.consumer = CoreOSSigner(TEST_CONFIG) self.consumer.bucket = mock.Mock() - def _get_response_message(self, source_msg, failed=False): + def _get_response_message(self, source_msg, failed=False, failure_msg=""): body = dict(source_msg.body) body.update({"status": "FAILURE" if failed else "SUCCESS"}) + if failed: + body.update({"failure-message": failure_msg}) return Message( topic=source_msg.topic + ".finished", body=body @@ -119,7 +121,8 @@ class TestCoreOS(unittest.TestCase): new_body["artifacts"][0]["checksum"] = "sha256:wrong-checksum" msg = Message(topic=ARTIFACTS_MESSAGE.topic, body=new_body) self.consumer.bucket.download_file.side_effect = fake_download - expected_response = self._get_response_message(msg, failed=True) + expected_response = self._get_response_message(msg, failed=True, + failure_msg='Incorrect SHA256 for some/path/test1, not signing') with mock_sends(expected_response): self.consumer.consume(msg) @@ -132,7 +135,9 @@ class TestCoreOS(unittest.TestCase): def test_signing_failed(self, run_command): self.consumer.bucket.download_file.side_effect = fake_download run_command.return_value = 1, "stdout", "stderr" - expected_response = self._get_response_message(ARTIFACTS_MESSAGE, failed=True) + expected_response = self._get_response_message( + ARTIFACTS_MESSAGE, failed=True, + failure_msg='Error signing! Signing output: 1, stdout: stdout, stderr: stderr') with mock_sends(expected_response): self.consumer.consume(ARTIFACTS_MESSAGE) @@ -145,7 +150,9 @@ class TestCoreOS(unittest.TestCase): def test_no_signature(self, run_command): self.consumer.bucket.download_file.side_effect = fake_download run_command.return_value = 0, "stdout", "stderr" - expected_response = self._get_response_message(ARTIFACTS_MESSAGE, failed=True) + expected_response = self._get_response_message( + ARTIFACTS_MESSAGE, failed=True, + failure_msg='Signer did not produce any signature file for some/path/test1') with mock_sends(expected_response): self.consumer.consume(ARTIFACTS_MESSAGE)