From 2a984bbc981554560bf91645facaf535da803738 Mon Sep 17 00:00:00 2001 From: Brian Coca Date: Mon, 6 Jun 2016 11:47:45 -0400 Subject: [PATCH] much more fine grained error messages fixes #16039 --- lib/ansible/galaxy/api.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/lib/ansible/galaxy/api.py b/lib/ansible/galaxy/api.py index de3c5d293ce..0d1eb0fccde 100644 --- a/lib/ansible/galaxy/api.py +++ b/lib/ansible/galaxy/api.py @@ -33,6 +33,7 @@ import ansible.constants as C from ansible.errors import AnsibleError from ansible.module_utils.urls import open_url from ansible.galaxy.token import GalaxyToken +from ansible.utils.unicode import to_str try: from __main__ import display @@ -109,12 +110,21 @@ class GalaxyAPI(object): Fetches the Galaxy API current version to ensure the API server is up and reachable. """ + url = '%s/api/' % self._api_server try: - url = '%s/api/' % self._api_server - data = json.load(open_url(url, validate_certs=self._validate_certs)) - return data['current_version'] + return_data =open_url(url, validate_certs=self._validate_certs) except Exception as e: - raise AnsibleError("The API server (%s) is not responding, please try again later" % url) + raise AnsibleError("Failed to get data from the API server (%s): %s " % (url, to_str(e))) + + try: + data = json.load(return_data) + except Exception as e: + raise AnsibleError("Could not process data from the API server (%s): %s " % (url, to_str(e))) + + if not 'current_version' in data: + raise AnsibleError("missing required 'current_version' from server response (%s)" % url) + + return data['current_version'] @g_connect def authenticate(self, github_token):