From f7dac8e68d9196423c3500762f62f54ccb9361e2 Mon Sep 17 00:00:00 2001 From: Ryan Petrello Date: Wed, 8 Apr 2020 14:43:03 -0400 Subject: [PATCH] more external logging unit test fixups --- .../tests/functional/api/test_settings.py | 1 + awx/main/tests/unit/api/test_logger.py | 139 +++++++++++++----- awx/main/utils/external_logging.py | 1 - 3 files changed, 101 insertions(+), 40 deletions(-) diff --git a/awx/main/tests/functional/api/test_settings.py b/awx/main/tests/functional/api/test_settings.py index 385bd32129..67c9868649 100644 --- a/awx/main/tests/functional/api/test_settings.py +++ b/awx/main/tests/functional/api/test_settings.py @@ -255,6 +255,7 @@ def _mock_logging_defaults(): value = settings_registry.get_setting_field(key).get_default() setattr(mock_settings_obj, key, value) mock_settings_json[key] = value + setattr(mock_settings_obj, 'MAX_EVENT_RES_DATA', 700000) return mock_settings_obj, mock_settings_json diff --git a/awx/main/tests/unit/api/test_logger.py b/awx/main/tests/unit/api/test_logger.py index d08362259b..ac1a63acbb 100644 --- a/awx/main/tests/unit/api/test_logger.py +++ b/awx/main/tests/unit/api/test_logger.py @@ -36,44 +36,105 @@ data_loggly = { # name this whatever you want @pytest.mark.parametrize( 'enabled, type, host, port, protocol, expected_config', [ - (True, 'loggly', 'http://logs-01.loggly.com/inputs/1fd38090-2af1-4e1e-8d80-492899da0f71/tag/http/', None, 'https', - '''$IncludeConfig /etc/rsyslog.conf\ninput(type="imuxsock" Socket="/var/run/rsyslog/rsyslog.sock" unlink="on") -template(name="awx" type="string" string="%msg%")\nmodule(load="omhttp") -action(type="omhttp" server="logs-01.loggly.com" serverport="80" usehttps="off" skipverifyhost="off" action.resumeRetryCount="-1" template="awx" ''' + - 'errorfile="/var/log/tower/external.err" healthchecktimeout="20000" restpath="inputs/1fd38090-2af1-4e1e-8d80-492899da0f71/tag/http/")'), - (True, 'other', 'localhost', 9000, 'udp', - '''$IncludeConfig /etc/rsyslog.conf -input(type="imuxsock" Socket="/var/run/rsyslog/rsyslog.sock" unlink="on") -template(name="awx" type="string" string="%msg%") -action(type="omfwd" target="localhost" port="9000" protocol="udp" action.resumeRetryCount="-1" template="awx")'''), - (True, 'other', 'localhost', 9000, 'tcp', - '''$IncludeConfig /etc/rsyslog.conf -input(type="imuxsock" Socket="/var/run/rsyslog/rsyslog.sock" unlink="on") -template(name="awx" type="string" string="%msg%") -action(type="omfwd" target="localhost" port="9000" protocol="tcp" action.resumeRetryCount="-1" template="awx")'''), - (False, 'loggly', 'http://logs-01.loggly.com/inputs/1fd38090-2af1-4e1e-8d80-492899da0f71/tag/http/', 8080, 'https', - '''$IncludeConfig /etc/rsyslog.conf'''), - (True, 'splunk', 'https://yoursplunk:8088/services/collector/event', None, None, - '''$IncludeConfig /etc/rsyslog.conf -input(type="imuxsock" Socket="/var/run/rsyslog/rsyslog.sock" unlink="on") -template(name="awx" type="string" string="%msg%") -module(load="omhttp") -action(type="omhttp" server="yoursplunk" serverport="8088" usehttps="on" skipverifyhost="off" action.resumeRetryCount="-1" template="awx" ''' + - 'errorfile="/var/log/tower/external.err" healthchecktimeout="20000" restpath="services/collector/event")'), - (True, 'splunk', 'https://yoursplunk/services/collector/event', 8088, None, - '''$IncludeConfig /etc/rsyslog.conf -input(type="imuxsock" Socket="/var/run/rsyslog/rsyslog.sock" unlink="on") -template(name="awx" type="string" string="%msg%") -module(load="omhttp") -action(type="omhttp" server="yoursplunk" serverport="8088" usehttps="on" skipverifyhost="off" action.resumeRetryCount="-1" template="awx" ''' + - 'errorfile="/var/log/tower/external.err" healthchecktimeout="20000" restpath="services/collector/event")'), - (True, 'splunk', 'https://yoursplunk/services/collector/event', 8088, 'https', - '''$IncludeConfig /etc/rsyslog.conf -input(type="imuxsock" Socket="/var/run/rsyslog/rsyslog.sock" unlink="on") -template(name="awx" type="string" string="%msg%") -module(load="omhttp") -action(type="omhttp" server="yoursplunk" serverport="8088" usehttps="on" skipverifyhost="off" action.resumeRetryCount="-1" template="awx" ''' + - 'errorfile="/var/log/tower/external.err" healthchecktimeout="20000" restpath="services/collector/event")'), + ( + True, + 'loggly', + 'http://logs-01.loggly.com/inputs/1fd38090-2af1-4e1e-8d80-492899da0f71/tag/http/', + None, + 'https', + '\n'.join([ + 'template(name="awx" type="string" string="%msg%")\nmodule(load="omhttp")', + 'action(type="omhttp" server="logs-01.loggly.com" serverport="80" usehttps="off" skipverifyhost="off" action.resumeRetryCount="-1" template="awx" errorfile="/var/log/tower/external.err" healthchecktimeout="20000" restpath="inputs/1fd38090-2af1-4e1e-8d80-492899da0f71/tag/http/")', # noqa + ]) + ), + ( + True, # localhost w/ custom UDP port + 'other', + 'localhost', + 9000, + 'udp', + '\n'.join([ + 'template(name="awx" type="string" string="%msg%")', + 'action(type="omfwd" target="localhost" port="9000" protocol="udp" action.resumeRetryCount="-1" template="awx")', # noqa + ]) + ), + ( + True, # localhost w/ custom TCP port + 'other', + 'localhost', + 9000, + 'tcp', + '\n'.join([ + 'template(name="awx" type="string" string="%msg%")', + 'action(type="omfwd" target="localhost" port="9000" protocol="tcp" action.resumeRetryCount="-1" template="awx")', # noqa + ]) + ), + ( + True, # https, default port 443 + 'splunk', + 'https://yoursplunk/services/collector/event', + None, + None, + '\n'.join([ + 'template(name="awx" type="string" string="%msg%")\nmodule(load="omhttp")', + 'action(type="omhttp" server="yoursplunk" serverport="443" usehttps="on" skipverifyhost="off" action.resumeRetryCount="-1" template="awx" errorfile="/var/log/tower/external.err" healthchecktimeout="20000" restpath="services/collector/event")', # noqa + ]) + ), + ( + True, # http, default port 80 + 'splunk', + 'http://yoursplunk/services/collector/event', + None, + None, + '\n'.join([ + 'template(name="awx" type="string" string="%msg%")\nmodule(load="omhttp")', + 'action(type="omhttp" server="yoursplunk" serverport="80" usehttps="off" skipverifyhost="off" action.resumeRetryCount="-1" template="awx" errorfile="/var/log/tower/external.err" healthchecktimeout="20000" restpath="services/collector/event")', # noqa + ]) + ), + ( + True, # https, custom port in URL string + 'splunk', + 'https://yoursplunk:8088/services/collector/event', + None, + None, + '\n'.join([ + 'template(name="awx" type="string" string="%msg%")\nmodule(load="omhttp")', + 'action(type="omhttp" server="yoursplunk" serverport="8088" usehttps="on" skipverifyhost="off" action.resumeRetryCount="-1" template="awx" errorfile="/var/log/tower/external.err" healthchecktimeout="20000" restpath="services/collector/event")', # noqa + ]) + ), + ( + True, # https, custom port explicitly specified + 'splunk', + 'https://yoursplunk/services/collector/event', + 8088, + None, + '\n'.join([ + 'template(name="awx" type="string" string="%msg%")\nmodule(load="omhttp")', + 'action(type="omhttp" server="yoursplunk" serverport="8088" usehttps="on" skipverifyhost="off" action.resumeRetryCount="-1" template="awx" errorfile="/var/log/tower/external.err" healthchecktimeout="20000" restpath="services/collector/event")', # noqa + ]) + ), + ( + True, # no scheme specified in URL, default to https, respect custom port + 'splunk', + 'yoursplunk.org/services/collector/event', + 8088, + 'https', + '\n'.join([ + 'template(name="awx" type="string" string="%msg%")\nmodule(load="omhttp")', + 'action(type="omhttp" server="yoursplunk.org" serverport="8088" usehttps="on" skipverifyhost="off" action.resumeRetryCount="-1" template="awx" errorfile="/var/log/tower/external.err" healthchecktimeout="20000" restpath="services/collector/event")', # noqa + ]) + ), + ( + True, # respect custom http-only port + 'splunk', + 'http://yoursplunk.org/services/collector/event', + 8088, + None, + '\n'.join([ + 'template(name="awx" type="string" string="%msg%")\nmodule(load="omhttp")', + 'action(type="omhttp" server="yoursplunk.org" serverport="8088" usehttps="off" skipverifyhost="off" action.resumeRetryCount="-1" template="awx" errorfile="/var/log/tower/external.err" healthchecktimeout="20000" restpath="services/collector/event")', # noqa + ]) + ), ] ) def test_rsyslog_conf_template(enabled, type, host, port, protocol, expected_config): @@ -96,4 +157,4 @@ def test_rsyslog_conf_template(enabled, type, host, port, protocol, expected_con tmpl = construct_rsyslog_conf_template(mock_settings) # check validity of created template - assert tmpl in expected_config + assert expected_config in tmpl diff --git a/awx/main/utils/external_logging.py b/awx/main/utils/external_logging.py index e5e11d5156..7865a5a705 100644 --- a/awx/main/utils/external_logging.py +++ b/awx/main/utils/external_logging.py @@ -67,7 +67,6 @@ def construct_rsyslog_conf_template(settings=settings): parts.append( f'action(type="omfwd" target="{host}" port="{port}" protocol="{protocol}" action.resumeRetryCount="-1" template="awx")' # noqa ) - # parts.append('$IncludeConfig /var/lib/awx/rsyslog/*.conf') tmpl = '\n'.join(parts) return tmpl