diff --git a/plugins/pulp_rpm/plugins/importers/yum/repomd/metadata.py b/plugins/pulp_rpm/plugins/importers/yum/repomd/metadata.py index e3e9f2ba2..22e8c9738 100644 --- a/plugins/pulp_rpm/plugins/importers/yum/repomd/metadata.py +++ b/plugins/pulp_rpm/plugins/importers/yum/repomd/metadata.py @@ -200,6 +200,9 @@ def download_metadata_files(self): download_request_list.append(request) self.downloader.download(download_request_list) + if self.event_listener.failed_reports: + error_report = self.event_listener.failed_reports[0] + raise IOError(error_report.error_msg) def verify_metadata_files(self): """ diff --git a/plugins/test/unit/plugins/importers/yum/repomd/test_metadata.py b/plugins/test/unit/plugins/importers/yum/repomd/test_metadata.py index ef4de0af5..ce2fd9a90 100644 --- a/plugins/test/unit/plugins/importers/yum/repomd/test_metadata.py +++ b/plugins/test/unit/plugins/importers/yum/repomd/test_metadata.py @@ -8,6 +8,7 @@ import mock from nectar.config import DownloaderConfig +from nectar.report import DownloadReport from pulp_rpm.devel.skip import skip_broken from pulp_rpm.plugins.importers.yum.utils import RepoURLModifier @@ -206,6 +207,21 @@ def test_does_not_skip_unknown_sqlite_files(self): self.assertTrue(requests[0].destination.endswith('primary')) self.assertTrue(requests[1].destination.endswith('pkgtags.sqlite.gz')) + def test_failed_reports(self): + self.metadata_files.downloader.download = mock.MagicMock( + spec_set=self.metadata_files.downloader.download + ) + self.metadata_files.metadata = { + 'primary': file_info_factory('primary'), + } + + report = DownloadReport('url', '/destination') + report.download_failed() + self.metadata_files.event_listener.failed_reports.append(report) + + # Ensure an exception is raised if the download failed + self.assertRaises(IOError, self.metadata_files.download_metadata_files) + class TestQueryAuthToken(unittest.TestCase): def setUp(self):