From d23e11c43c6358aa8455e4922ca16e0f341e5263 Mon Sep 17 00:00:00 2001 From: AlanCoding Date: Fri, 7 Jul 2017 16:48:00 -0400 Subject: [PATCH] handle Splunk hostname case from support --- awx/main/tests/unit/utils/test_handlers.py | 8 ++++++-- awx/main/utils/handlers.py | 3 ++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/awx/main/tests/unit/utils/test_handlers.py b/awx/main/tests/unit/utils/test_handlers.py index e246f58b30..7d1de6da7a 100644 --- a/awx/main/tests/unit/utils/test_handlers.py +++ b/awx/main/tests/unit/utils/test_handlers.py @@ -177,8 +177,6 @@ def test_base_logging_handler_emit_system_tracking(): @pytest.mark.parametrize('host, port, normalized, hostname_only', [ - ('localhost', None, 'http://localhost', False), - ('localhost', 8080, 'http://localhost:8080', False), ('http://localhost', None, 'http://localhost', False), ('http://localhost', 8080, 'http://localhost:8080', False), ('https://localhost', 443, 'https://localhost:443', False), @@ -190,6 +188,12 @@ def test_base_logging_handler_emit_system_tracking(): 'http://splunk.server:8088/services/collector/event', False), ('http://splunk.server/services/collector/event', 8088, 'http://splunk.server:8088/services/collector/event', False), + ('splunk.server:8088/services/collector/event', 80, + 'http://splunk.server:8088/services/collector/event', False), + ('splunk.server/services/collector/event', 8088, + 'http://splunk.server:8088/services/collector/event', False), + ('localhost', None, 'http://localhost', False), + ('localhost', 8080, 'http://localhost:8080', False), ('localhost', 4399, 'localhost', True), ('tcp://localhost:4399/foo/bar', 4399, 'localhost', True), ]) diff --git a/awx/main/utils/handlers.py b/awx/main/utils/handlers.py index e725bffc37..b0c3cb941b 100644 --- a/awx/main/utils/handlers.py +++ b/awx/main/utils/handlers.py @@ -159,7 +159,8 @@ class BaseHandler(logging.Handler): """ host = self.host or '' # urlparse requires '//' to be provided if scheme is not specified - if not urlparse.urlsplit(host).scheme and not host.startswith('//'): + original_parsed = urlparse.urlsplit(host) + if (not original_parsed.scheme and not host.startswith('//')) or original_parsed.hostname is None: host = '%s://%s' % (scheme, host) if scheme else '//%s' % host parsed = urlparse.urlsplit(host)