{"action":"created","comment":{"url":"https://api.github.com/repos/ansible/awx/pulls/comments/338669670","pull_request_review_id":306703387,"id":338669670,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDMzODY2OTY3MA==","diff_hunk":"@@ -161,40 +161,8 @@ class SettingLoggingTest(GenericAPIView):\n     filter_backends = []\n \n     def post(self, request, *args, **kwargs):\n-        defaults = dict()\n-        for key in settings_registry.get_registered_settings(category_slug='logging'):\n-            try:\n-                defaults[key] = settings_registry.get_setting_field(key).get_default()\n-            except serializers.SkipField:\n-                defaults[key] = None\n-        obj = type('Settings', (object,), defaults)()\n-        serializer = self.get_serializer(obj, data=request.data)\n-        serializer.is_valid(raise_exception=True)\n-        # Special validation specific to logging test.\n-        errors = {}\n-        for key in ['LOG_AGGREGATOR_TYPE', 'LOG_AGGREGATOR_HOST']:\n-            if not request.data.get(key, ''):\n-                errors[key] = 'This field is required.'\n-        if errors:\n-            raise ValidationError(errors)\n-\n-        if request.data.get('LOG_AGGREGATOR_PASSWORD', '').startswith('$encrypted$'):\n-            serializer.validated_data['LOG_AGGREGATOR_PASSWORD'] = getattr(\n-                settings, 'LOG_AGGREGATOR_PASSWORD', ''\n-            )\n-\n-        try:\n-            class MockSettings:\n-                pass\n-            mock_settings = MockSettings()\n-            for k, v in serializer.validated_data.items():\n-                setattr(mock_settings, k, v)\n-            AWXProxyHandler().perform_test(custom_settings=mock_settings)\n-            if mock_settings.LOG_AGGREGATOR_PROTOCOL.upper() == 'UDP':\n-                return Response(status=status.HTTP_201_CREATED)\n-        except LoggingConnectivityException as e:\n-            return Response({'error': str(e)}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)\n-        return Response(status=status.HTTP_200_OK)\n+        logging.getLogger('awx').info('AWX Connection Test')","path":"awx/conf/views.py","position":54,"original_position":54,"commit_id":"c31a762e203f2a38ba5b96a9d99f40fea136945b","original_commit_id":"ca6d8ea9ce2f79287aff9d6e83c5307de35d8eae","user":{"login":"ryanpetrello","id":214912,"node_id":"MDQ6VXNlcjIxNDkxMg==","avatar_url":"https://avatars1.githubusercontent.com/u/214912?v=4","gravatar_id":"","url":"https://api.github.com/users/ryanpetrello","html_url":"https://github.com/ryanpetrello","followers_url":"https://api.github.com/users/ryanpetrello/followers","following_url":"https://api.github.com/users/ryanpetrello/following{/other_user}","gists_url":"https://api.github.com/users/ryanpetrello/gists{/gist_id}","starred_url":"https://api.github.com/users/ryanpetrello/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ryanpetrello/subscriptions","organizations_url":"https://api.github.com/users/ryanpetrello/orgs","repos_url":"https://api.github.com/users/ryanpetrello/repos","events_url":"https://api.github.com/users/ryanpetrello/events{/privacy}","received_events_url":"https://api.github.com/users/ryanpetrello/received_events","type":"User","site_admin":false},"body":"For what it's worth, this is what we do with notification templates - you can't test them until after you've saved.","created_at":"2019-10-24T16:21:18Z","updated_at":"2019-10-24T16:21:18Z","html_url":"https://github.com/ansible/awx/pull/5092#discussion_r338669670","pull_request_url":"https://api.github.com/repos/ansible/awx/pulls/5092","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/ansible/awx/pulls/comments/338669670"},"html":{"href":"https://github.com/ansible/awx/pull/5092#discussion_r338669670"},"pull_request":{"href":"https://api.github.com/repos/ansible/awx/pulls/5092"}},"in_reply_to_id":338631997},"pull_request":{"url":"https://api.github.com/repos/ansible/awx/pulls/5092","id":332098873,"node_id":"MDExOlB1bGxSZXF1ZXN0MzMyMDk4ODcz","html_url":"https://github.com/ansible/awx/pull/5092","diff_url":"https://github.com/ansible/awx/pull/5092.diff","patch_url":"https://github.com/ansible/awx/pull/5092.patch","issue_url":"https://api.github.com/repos/ansible/awx/issues/5092","number":5092,"state":"open","locked":false,"title":"POC: replace our external log aggregation feature with rsyslog","user":{"login":"ryanpetrello","id":214912,"node_id":"MDQ6VXNlcjIxNDkxMg==","avatar_url":"https://avatars1.githubusercontent.com/u/214912?v=4","gravatar_id":"","url":"https://api.github.com/users/ryanpetrello","html_url":"https://github.com/ryanpetrello","followers_url":"https://api.github.com/users/ryanpetrello/followers","following_url":"https://api.github.com/users/ryanpetrello/following{/other_user}","gists_url":"https://api.github.com/users/ryanpetrello/gists{/gist_id}","starred_url":"https://api.github.com/users/ryanpetrello/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ryanpetrello/subscriptions","organizations_url":"https://api.github.com/users/ryanpetrello/orgs","repos_url":"https://api.github.com/users/ryanpetrello/repos","events_url":"https://api.github.com/users/ryanpetrello/events{/privacy}","received_events_url":"https://api.github.com/users/ryanpetrello/received_events","type":"User","site_admin":false},"body":"- this change adds rsyslog (https://github.com/rsyslog/rsyslog) as\r\n  a new service that runs on every AWX node (managed by supervisord)\r\n  in particular, this feature requires a recent version (v8.38+) of\r\n  rsyslog that supports the omhttp module\r\n  (https://github.com/rsyslog/rsyslog-doc/pull/750)\r\n- the \"external_logger\" handler in AWX is now a `SysLogHandler` that ships\r\n  logs to the local UDP port where rsyslog is configured to listen (by\r\n  default, 51414)\r\n- every time a `LOG_AGGREGATOR_*` setting is changed, every AWX node\r\n  reconfigures and restarts its local instance of rsyslog so that its\r\n  fowarding settings match what has been configured in AWX\r\n- unlike the prior implementation, if the external logging aggregator\r\n  (splunk/logstash) goes temporarily offline, rsyslog will retain the\r\n  messages and ship them when the log aggregator is back online\r\n- 4xx or 5xx level errors are recorded at `/var/log/tower/external.err`","created_at":"2019-10-24T15:04:40Z","updated_at":"2019-10-24T16:21:18Z","closed_at":null,"merged_at":null,"merge_commit_sha":"abc25503fa76e4b79de28d40ba8c22157b824b52","assignee":null,"assignees":[],"requested_reviewers":[{"login":"matburt","id":89544,"node_id":"MDQ6VXNlcjg5NTQ0","avatar_url":"https://avatars0.githubusercontent.com/u/89544?v=4","gravatar_id":"","url":"https://api.github.com/users/matburt","html_url":"https://github.com/matburt","followers_url":"https://api.github.com/users/matburt/followers","following_url":"https://api.github.com/users/matburt/following{/other_user}","gists_url":"https://api.github.com/users/matburt/gists{/gist_id}","starred_url":"https://api.github.com/users/matburt/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/matburt/subscriptions","organizations_url":"https://api.github.com/users/matburt/orgs","repos_url":"https://api.github.com/users/matburt/repos","events_url":"https://api.github.com/users/matburt/events{/privacy}","received_events_url":"https://api.github.com/users/matburt/received_events","type":"User","site_admin":false},{"login":"chrismeyersfsu","id":722880,"node_id":"MDQ6VXNlcjcyMjg4MA==","avatar_url":"https://avatars3.githubusercontent.com/u/722880?v=4","gravatar_id":"","url":"https://api.github.com/users/chrismeyersfsu","html_url":"https://github.com/chrismeyersfsu","followers_url":"https://api.github.com/users/chrismeyersfsu/followers","following_url":"https://api.github.com/users/chrismeyersfsu/following{/other_user}","gists_url":"https://api.github.com/users/chrismeyersfsu/gists{/gist_id}","starred_url":"https://api.github.com/users/chrismeyersfsu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chrismeyersfsu/subscriptions","organizations_url":"https://api.github.com/users/chrismeyersfsu/orgs","repos_url":"https://api.github.com/users/chrismeyersfsu/repos","events_url":"https://api.github.com/users/chrismeyersfsu/events{/privacy}","received_events_url":"https://api.github.com/users/chrismeyersfsu/received_events","type":"User","site_admin":false},{"login":"shanemcd","id":773186,"node_id":"MDQ6VXNlcjc3MzE4Ng==","avatar_url":"https://avatars1.githubusercontent.com/u/773186?v=4","gravatar_id":"","url":"https://api.github.com/users/shanemcd","html_url":"https://github.com/shanemcd","followers_url":"https://api.github.com/users/shanemcd/followers","following_url":"https://api.github.com/users/shanemcd/following{/other_user}","gists_url":"https://api.github.com/users/shanemcd/gists{/gist_id}","starred_url":"https://api.github.com/users/shanemcd/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/shanemcd/subscriptions","organizations_url":"https://api.github.com/users/shanemcd/orgs","repos_url":"https://api.github.com/users/shanemcd/repos","events_url":"https://api.github.com/users/shanemcd/events{/privacy}","received_events_url":"https://api.github.com/users/shanemcd/received_events","type":"User","site_admin":false},{"login":"ghjm","id":2052848,"node_id":"MDQ6VXNlcjIwNTI4NDg=","avatar_url":"https://avatars0.githubusercontent.com/u/2052848?v=4","gravatar_id":"","url":"https://api.github.com/users/ghjm","html_url":"https://github.com/ghjm","followers_url":"https://api.github.com/users/ghjm/followers","following_url":"https://api.github.com/users/ghjm/following{/other_user}","gists_url":"https://api.github.com/users/ghjm/gists{/gist_id}","starred_url":"https://api.github.com/users/ghjm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ghjm/subscriptions","organizations_url":"https://api.github.com/users/ghjm/orgs","repos_url":"https://api.github.com/users/ghjm/repos","events_url":"https://api.github.com/users/ghjm/events{/privacy}","received_events_url":"https://api.github.com/users/ghjm/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/ansible/awx/pulls/5092/commits","review_comments_url":"https://api.github.com/repos/ansible/awx/pulls/5092/comments","review_comment_url":"https://api.github.com/repos/ansible/awx/pulls/comments{/number}","comments_url":"https://api.github.com/repos/ansible/awx/issues/5092/comments","statuses_url":"https://api.github.com/repos/ansible/awx/statuses/c31a762e203f2a38ba5b96a9d99f40fea136945b","head":{"label":"ryanpetrello:rsyslog","ref":"rsyslog","sha":"c31a762e203f2a38ba5b96a9d99f40fea136945b","user":{"login":"ryanpetrello","id":214912,"node_id":"MDQ6VXNlcjIxNDkxMg==","avatar_url":"https://avatars1.githubusercontent.com/u/214912?v=4","gravatar_id":"","url":"https://api.github.com/users/ryanpetrello","html_url":"https://github.com/ryanpetrello","followers_url":"https://api.github.com/users/ryanpetrello/followers","following_url":"https://api.github.com/users/ryanpetrello/following{/other_user}","gists_url":"https://api.github.com/users/ryanpetrello/gists{/gist_id}","starred_url":"https://api.github.com/users/ryanpetrello/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ryanpetrello/subscriptions","organizations_url":"https://api.github.com/users/ryanpetrello/orgs","repos_url":"https://api.github.com/users/ryanpetrello/repos","events_url":"https://api.github.com/users/ryanpetrello/events{/privacy}","received_events_url":"https://api.github.com/users/ryanpetrello/received_events","type":"User","site_admin":false},"repo":{"id":102690498,"node_id":"MDEwOlJlcG9zaXRvcnkxMDI2OTA0OTg=","name":"awx","full_name":"ryanpetrello/awx","private":false,"owner":{"login":"ryanpetrello","id":214912,"node_id":"MDQ6VXNlcjIxNDkxMg==","avatar_url":"https://avatars1.githubusercontent.com/u/214912?v=4","gravatar_id":"","url":"https://api.github.com/users/ryanpetrello","html_url":"https://github.com/ryanpetrello","followers_url":"https://api.github.com/users/ryanpetrello/followers","following_url":"https://api.github.com/users/ryanpetrello/following{/other_user}","gists_url":"https://api.github.com/users/ryanpetrello/gists{/gist_id}","starred_url":"https://api.github.com/users/ryanpetrello/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ryanpetrello/subscriptions","organizations_url":"https://api.github.com/users/ryanpetrello/orgs","repos_url":"https://api.github.com/users/ryanpetrello/repos","events_url":"https://api.github.com/users/ryanpetrello/events{/privacy}","received_events_url":"https://api.github.com/users/ryanpetrello/received_events","type":"User","site_admin":false},"html_url":"https://github.com/ryanpetrello/awx","description":"AWX Project","fork":true,"url":"https://api.github.com/repos/ryanpetrello/awx","forks_url":"https://api.github.com/repos/ryanpetrello/awx/forks","keys_url":"https://api.github.com/repos/ryanpetrello/awx/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ryanpetrello/awx/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ryanpetrello/awx/teams","hooks_url":"https://api.github.com/repos/ryanpetrello/awx/hooks","issue_events_url":"https://api.github.com/repos/ryanpetrello/awx/issues/events{/number}","events_url":"https://api.github.com/repos/ryanpetrello/awx/events","assignees_url":"https://api.github.com/repos/ryanpetrello/awx/assignees{/user}","branches_url":"https://api.github.com/repos/ryanpetrello/awx/branches{/branch}","tags_url":"https://api.github.com/repos/ryanpetrello/awx/tags","blobs_url":"https://api.github.com/repos/ryanpetrello/awx/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ryanpetrello/awx/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ryanpetrello/awx/git/refs{/sha}","trees_url":"https://api.github.com/repos/ryanpetrello/awx/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ryanpetrello/awx/statuses/{sha}","languages_url":"https://api.github.com/repos/ryanpetrello/awx/languages","stargazers_url":"https://api.github.com/repos/ryanpetrello/awx/stargazers","contributors_url":"https://api.github.com/repos/ryanpetrello/awx/contributors","subscribers_url":"https://api.github.com/repos/ryanpetrello/awx/subscribers","subscription_url":"https://api.github.com/repos/ryanpetrello/awx/subscription","commits_url":"https://api.github.com/repos/ryanpetrello/awx/commits{/sha}","git_commits_url":"https://api.github.com/repos/ryanpetrello/awx/git/commits{/sha}","comments_url":"https://api.github.com/repos/ryanpetrello/awx/comments{/number}","issue_comment_url":"https://api.github.com/repos/ryanpetrello/awx/issues/comments{/number}","contents_url":"https://api.github.com/repos/ryanpetrello/awx/contents/{+path}","compare_url":"https://api.github.com/repos/ryanpetrello/awx/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ryanpetrello/awx/merges","archive_url":"https://api.github.com/repos/ryanpetrello/awx/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ryanpetrello/awx/downloads","issues_url":"https://api.github.com/repos/ryanpetrello/awx/issues{/number}","pulls_url":"https://api.github.com/repos/ryanpetrello/awx/pulls{/number}","milestones_url":"https://api.github.com/repos/ryanpetrello/awx/milestones{/number}","notifications_url":"https://api.github.com/repos/ryanpetrello/awx/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ryanpetrello/awx/labels{/name}","releases_url":"https://api.github.com/repos/ryanpetrello/awx/releases{/id}","deployments_url":"https://api.github.com/repos/ryanpetrello/awx/deployments","created_at":"2017-09-07T04:14:31Z","updated_at":"2019-10-21T16:09:47Z","pushed_at":"2019-10-24T15:41:23Z","git_url":"git://github.com/ryanpetrello/awx.git","ssh_url":"git@github.com:ryanpetrello/awx.git","clone_url":"https://github.com/ryanpetrello/awx.git","svn_url":"https://github.com/ryanpetrello/awx","homepage":"","size":220868,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":0,"license":{"key":"other","name":"Other","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"devel"}},"base":{"label":"ansible:devel","ref":"devel","sha":"f1c2a95f0d7549c1753bf12b353ff9e98d16842b","user":{"login":"ansible","id":1507452,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE1MDc0NTI=","avatar_url":"https://avatars2.githubusercontent.com/u/1507452?v=4","gravatar_id":"","url":"https://api.github.com/users/ansible","html_url":"https://github.com/ansible","followers_url":"https://api.github.com/users/ansible/followers","following_url":"https://api.github.com/users/ansible/following{/other_user}","gists_url":"https://api.github.com/users/ansible/gists{/gist_id}","starred_url":"https://api.github.com/users/ansible/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ansible/subscriptions","organizations_url":"https://api.github.com/users/ansible/orgs","repos_url":"https://api.github.com/users/ansible/repos","events_url":"https://api.github.com/users/ansible/events{/privacy}","received_events_url":"https://api.github.com/users/ansible/received_events","type":"Organization","site_admin":false},"repo":{"id":91594105,"node_id":"MDEwOlJlcG9zaXRvcnk5MTU5NDEwNQ==","name":"awx","full_name":"ansible/awx","private":false,"owner":{"login":"ansible","id":1507452,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE1MDc0NTI=","avatar_url":"https://avatars2.githubusercontent.com/u/1507452?v=4","gravatar_id":"","url":"https://api.github.com/users/ansible","html_url":"https://github.com/ansible","followers_url":"https://api.github.com/users/ansible/followers","following_url":"https://api.github.com/users/ansible/following{/other_user}","gists_url":"https://api.github.com/users/ansible/gists{/gist_id}","starred_url":"https://api.github.com/users/ansible/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ansible/subscriptions","organizations_url":"https://api.github.com/users/ansible/orgs","repos_url":"https://api.github.com/users/ansible/repos","events_url":"https://api.github.com/users/ansible/events{/privacy}","received_events_url":"https://api.github.com/users/ansible/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/ansible/awx","description":"AWX Project","fork":false,"url":"https://api.github.com/repos/ansible/awx","forks_url":"https://api.github.com/repos/ansible/awx/forks","keys_url":"https://api.github.com/repos/ansible/awx/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ansible/awx/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ansible/awx/teams","hooks_url":"https://api.github.com/repos/ansible/awx/hooks","issue_events_url":"https://api.github.com/repos/ansible/awx/issues/events{/number}","events_url":"https://api.github.com/repos/ansible/awx/events","assignees_url":"https://api.github.com/repos/ansible/awx/assignees{/user}","branches_url":"https://api.github.com/repos/ansible/awx/branches{/branch}","tags_url":"https://api.github.com/repos/ansible/awx/tags","blobs_url":"https://api.github.com/repos/ansible/awx/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ansible/awx/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ansible/awx/git/refs{/sha}","trees_url":"https://api.github.com/repos/ansible/awx/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ansible/awx/statuses/{sha}","languages_url":"https://api.github.com/repos/ansible/awx/languages","stargazers_url":"https://api.github.com/repos/ansible/awx/stargazers","contributors_url":"https://api.github.com/repos/ansible/awx/contributors","subscribers_url":"https://api.github.com/repos/ansible/awx/subscribers","subscription_url":"https://api.github.com/repos/ansible/awx/subscription","commits_url":"https://api.github.com/repos/ansible/awx/commits{/sha}","git_commits_url":"https://api.github.com/repos/ansible/awx/git/commits{/sha}","comments_url":"https://api.github.com/repos/ansible/awx/comments{/number}","issue_comment_url":"https://api.github.com/repos/ansible/awx/issues/comments{/number}","contents_url":"https://api.github.com/repos/ansible/awx/contents/{+path}","compare_url":"https://api.github.com/repos/ansible/awx/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ansible/awx/merges","archive_url":"https://api.github.com/repos/ansible/awx/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ansible/awx/downloads","issues_url":"https://api.github.com/repos/ansible/awx/issues{/number}","pulls_url":"https://api.github.com/repos/ansible/awx/pulls{/number}","milestones_url":"https://api.github.com/repos/ansible/awx/milestones{/number}","notifications_url":"https://api.github.com/repos/ansible/awx/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ansible/awx/labels{/name}","releases_url":"https://api.github.com/repos/ansible/awx/releases{/id}","deployments_url":"https://api.github.com/repos/ansible/awx/deployments","created_at":"2017-05-17T15:50:14Z","updated_at":"2019-10-24T15:47:25Z","pushed_at":"2019-10-24T16:13:24Z","git_url":"git://github.com/ansible/awx.git","ssh_url":"git@github.com:ansible/awx.git","clone_url":"https://github.com/ansible/awx.git","svn_url":"https://github.com/ansible/awx","homepage":"","size":221037,"stargazers_count":6742,"watchers_count":6742,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":1602,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":822,"license":{"key":"other","name":"Other","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":1602,"open_issues":822,"watchers":6742,"default_branch":"devel"}},"_links":{"self":{"href":"https://api.github.com/repos/ansible/awx/pulls/5092"},"html":{"href":"https://github.com/ansible/awx/pull/5092"},"issue":{"href":"https://api.github.com/repos/ansible/awx/issues/5092"},"comments":{"href":"https://api.github.com/repos/ansible/awx/issues/5092/comments"},"review_comments":{"href":"https://api.github.com/repos/ansible/awx/pulls/5092/comments"},"review_comment":{"href":"https://api.github.com/repos/ansible/awx/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/ansible/awx/pulls/5092/commits"},"statuses":{"href":"https://api.github.com/repos/ansible/awx/statuses/c31a762e203f2a38ba5b96a9d99f40fea136945b"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"ryanpetrello"}}