scripts/ci/gitlab-pipeline-status: use more descriptive exceptions

For two very different error conditions.

Signed-off-by: Cleber Rosa <crosa@redhat.com>
Message-Id: <20200904164258.240278-7-crosa@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
This commit is contained in:
Cleber Rosa 2020-09-04 12:42:57 -04:00 committed by Thomas Huth
parent 79df438eeb
commit 176498ab57
1 changed files with 10 additions and 2 deletions

View File

@ -23,6 +23,14 @@ import time
import sys
class CommunicationFailure(Exception):
"""Failed to communicate to gitlab.com APIs."""
class NoPipelineFound(Exception):
"""Communication is successfull but pipeline is not found."""
def get_local_branch_commit(branch='staging'):
"""
Returns the commit sha1 for the *local* branch named "staging"
@ -50,14 +58,14 @@ def get_pipeline_status(project_id, commit_sha1):
connection.request('GET', url=url)
response = connection.getresponse()
if response.code != http.HTTPStatus.OK:
raise ValueError("Failed to receive a successful response")
raise CommunicationFailure("Failed to receive a successful response")
json_response = json.loads(response.read())
# As far as I can tell, there should be only one pipeline for the same
# project + commit. If this assumption is false, we can add further
# filters to the url, such as username, and order_by.
if not json_response:
raise ValueError("No pipeline found")
raise NoPipelineFound("No pipeline found")
return json_response[0]