From fe3ea605516b4f229acabadaf8cb2cd174a0ef6d Mon Sep 17 00:00:00 2001 From: Webster Mudge Date: Fri, 22 Nov 2024 09:07:55 -0500 Subject: [PATCH] Add HTTP status test when discovering CM endpoint (#253) Signed-off-by: Webster Mudge --- plugins/module_utils/cm_utils.py | 8 +++++++- plugins/modules/cm_endpoint_info.py | 5 +---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/plugins/module_utils/cm_utils.py b/plugins/module_utils/cm_utils.py index f75273a0..3fbe3a84 100644 --- a/plugins/module_utils/cm_utils.py +++ b/plugins/module_utils/cm_utils.py @@ -29,7 +29,7 @@ from time import sleep from ansible.module_utils.basic import AnsibleModule from ansible.module_utils.common.dict_transformations import recursive_diff -from ansible.module_utils.common.text.converters import to_text +from ansible.module_utils.common.text.converters import to_native, to_text from time import sleep from cm_client import ( ApiClient, @@ -434,6 +434,12 @@ def discover_endpoint(self, config): if not self.version: pre_versioned = urljoin(rendered_url, "/api/version") versioned = rest.pool_manager.request("GET", pre_versioned, headers=headers) + if versioned.status != 200: + self.module.fail_json( + "Unable to retrieve API version", + status=to_native(versioned.status), + reason=to_native(versioned.reason), + ) self.version = versioned.data.decode("utf-8") # Construct the discovered API endpoint diff --git a/plugins/modules/cm_endpoint_info.py b/plugins/modules/cm_endpoint_info.py index 540b8023..565e55ee 100644 --- a/plugins/modules/cm_endpoint_info.py +++ b/plugins/modules/cm_endpoint_info.py @@ -23,7 +23,6 @@ } DOCUMENTATION = r""" ---- module: cm_endpoint_info short_description: Discover the Cloudera Manager API endpoint description: @@ -38,7 +37,6 @@ """ EXAMPLES = r""" ---- # This will first try 'http://example.cloudera.com:7180' and will # follow any redirects - name: Gather details using auto-discovery @@ -50,9 +48,8 @@ """ RETURN = r""" ---- endpoint: - description: The discovered Cloudera Manager API endpoint + description: The discovered Cloudera Manager API endpoint, i.e. the base URL. type: str returned: always """