mirror of
https://github.com/ansible/awx.git
synced 2026-03-25 21:05:03 -02:30
fix a bug when testing UDP-based logging configuration
see: https://github.com/ansible/ansible-tower/issues/7868
This commit is contained in:
@@ -21,7 +21,7 @@ from awx.api.generics import * # noqa
|
|||||||
from awx.api.permissions import IsSuperUser
|
from awx.api.permissions import IsSuperUser
|
||||||
from awx.api.versioning import reverse, get_request_version
|
from awx.api.versioning import reverse, get_request_version
|
||||||
from awx.main.utils import * # noqa
|
from awx.main.utils import * # noqa
|
||||||
from awx.main.utils.handlers import BaseHTTPSHandler, LoggingConnectivityException
|
from awx.main.utils.handlers import BaseHTTPSHandler, UDPHandler, LoggingConnectivityException
|
||||||
from awx.main.tasks import handle_setting_changes
|
from awx.main.tasks import handle_setting_changes
|
||||||
from awx.conf.license import get_licensed_features
|
from awx.conf.license import get_licensed_features
|
||||||
from awx.conf.models import Setting
|
from awx.conf.models import Setting
|
||||||
@@ -202,7 +202,11 @@ class SettingLoggingTest(GenericAPIView):
|
|||||||
for k, v in serializer.validated_data.items():
|
for k, v in serializer.validated_data.items():
|
||||||
setattr(mock_settings, k, v)
|
setattr(mock_settings, k, v)
|
||||||
mock_settings.LOG_AGGREGATOR_LEVEL = 'DEBUG'
|
mock_settings.LOG_AGGREGATOR_LEVEL = 'DEBUG'
|
||||||
BaseHTTPSHandler.perform_test(mock_settings)
|
if mock_settings.LOG_AGGREGATOR_PROTOCOL.upper() == 'UDP':
|
||||||
|
UDPHandler.perform_test(mock_settings)
|
||||||
|
return Response(status=status.HTTP_201_CREATED)
|
||||||
|
else:
|
||||||
|
BaseHTTPSHandler.perform_test(mock_settings)
|
||||||
except LoggingConnectivityException as e:
|
except LoggingConnectivityException as e:
|
||||||
return Response({'error': str(e)}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
|
return Response({'error': str(e)}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
|
||||||
return Response(status=status.HTTP_200_OK)
|
return Response(status=status.HTTP_200_OK)
|
||||||
|
|||||||
@@ -292,6 +292,21 @@ class UDPHandler(BaseHandler):
|
|||||||
payload = _encode_payload_for_socket(payload)
|
payload = _encode_payload_for_socket(payload)
|
||||||
return self.socket.sendto(payload, (self._get_host(hostname_only=True), self.port or 0))
|
return self.socket.sendto(payload, (self._get_host(hostname_only=True), self.port or 0))
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def perform_test(cls, settings):
|
||||||
|
"""
|
||||||
|
Tests logging connectivity for the current logging settings.
|
||||||
|
"""
|
||||||
|
handler = cls.from_django_settings(settings)
|
||||||
|
handler.enabled_flag = True
|
||||||
|
handler.setFormatter(LogstashFormatter(settings_module=settings))
|
||||||
|
logger = logging.getLogger(__file__)
|
||||||
|
fn, lno, func = logger.findCaller()
|
||||||
|
record = logger.makeRecord('awx', 10, fn, lno,
|
||||||
|
'AWX Connection Test', tuple(),
|
||||||
|
None, func)
|
||||||
|
handler.emit(_encode_payload_for_socket(record))
|
||||||
|
|
||||||
|
|
||||||
HANDLER_MAPPING = {
|
HANDLER_MAPPING = {
|
||||||
'https': BaseHTTPSHandler,
|
'https': BaseHTTPSHandler,
|
||||||
|
|||||||
Reference in New Issue
Block a user