From d2e3f234fa05807962d36789ead4704999b24e2c Mon Sep 17 00:00:00 2001 From: Valerij Maljulin Date: Oct 15 2019 11:29:34 +0000 Subject: Change error from 502 to 404 when Koji build not found This fixes #415 Signed-off-by: Valerij Maljulin --- diff --git a/greenwave/api_v1.py b/greenwave/api_v1.py index 0900e63..d6bca08 100644 --- a/greenwave/api_v1.py +++ b/greenwave/api_v1.py @@ -388,6 +388,9 @@ def make_decision(): {"type":"RemoteRule"}]. Do not use this parameter along with `decision_context`. :statuscode 200: A decision was made. :statuscode 400: Invalid data was given. + :statuscode 404: No Koji build found + :statuscode 502: Error while querying Koji to retrieve the SCM URL + :statuscode 504: Timeout while querying an upstream """ # noqa: E501 data = request.get_json() if data: diff --git a/greenwave/resources.py b/greenwave/resources.py index eda8380..b5bf10d 100644 --- a/greenwave/resources.py +++ b/greenwave/resources.py @@ -14,7 +14,7 @@ import socket from urllib.parse import urlparse import xmlrpc.client from flask import current_app -from werkzeug.exceptions import BadGateway +from werkzeug.exceptions import BadGateway, NotFound from greenwave.cache import cached from greenwave.request_session import get_requests_session @@ -137,8 +137,7 @@ def retrieve_scm_from_koji(nvr): def retrieve_scm_from_koji_build(nvr, build, koji_url): if not build: - raise BadGateway( - 'Failed to find Koji build for "{}" at "{}"'.format(nvr, koji_url)) + raise NotFound('Failed to find Koji build for "{}" at "{}"'.format(nvr, koji_url)) source = build.get('source') if not source: diff --git a/greenwave/tests/test_retrieve_gating_yaml.py b/greenwave/tests/test_retrieve_gating_yaml.py index 86a88c9..665dd1b 100644 --- a/greenwave/tests/test_retrieve_gating_yaml.py +++ b/greenwave/tests/test_retrieve_gating_yaml.py @@ -5,7 +5,7 @@ from requests.exceptions import ConnectionError, HTTPError import pytest import mock -from werkzeug.exceptions import BadGateway +from werkzeug.exceptions import BadGateway, NotFound import greenwave.app_factory from greenwave.resources import ( @@ -42,7 +42,7 @@ def test_retrieve_scm_from_nonexistent_build(): nvr = 'foo-1.2.3-1.fc29' build = {} expected_error = 'Failed to find Koji build for "{}" at "{}"'.format(nvr, KOJI_URL) - with pytest.raises(BadGateway, match=expected_error): + with pytest.raises(NotFound, match=expected_error): retrieve_scm_from_koji_build(nvr, build, KOJI_URL)