)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":32333,"name":"Aymeric Ducroquetz","email":"aymeric.ducroquetz@gmail.com","username":"AymericDu"},"change_message_id":"cdbd7d48c97bb7337494175b8eaf0aaf3d3c5ff1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"b73afdb4_79412abb","updated":"2022-06-20 16:55:46.000000000","message":"Now that multiple storage domains are allowed, it might be interesting to know which domain the customer is using.","commit_id":"aa7c02dac3a062eafa34d64fef6f651bd59f861d"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"f8fa1b8efad080c5e67ef8186f17681bdf61e264","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"b7954f7c_39c92656","updated":"2022-06-21 17:53:28.000000000","message":"Should probably update doc/source/logs.rst, too.","commit_id":"aa7c02dac3a062eafa34d64fef6f651bd59f861d"},{"author":{"_account_id":32333,"name":"Aymeric Ducroquetz","email":"aymeric.ducroquetz@gmail.com","username":"AymericDu"},"change_message_id":"a8263d839c3579dd45fbc975a470a4f26feac6c6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"f2fc09e6_bbd74f26","in_reply_to":"b7954f7c_39c92656","updated":"2022-06-22 13:58:27.000000000","message":"Done","commit_id":"aa7c02dac3a062eafa34d64fef6f651bd59f861d"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"5ae616aba299cff52d45b365279241cf631d01d7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"86e9d8db_c0f78311","updated":"2022-06-22 17:49:05.000000000","message":"Just added a test.","commit_id":"1831658b338d628f18a2e3357e7b7f5d34ec79df"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"e39be850a4a62af0d84ed1eab203bc049f37ce41","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"eb8fdf8f_3e49b827","updated":"2022-06-22 21:16:18.000000000","message":"recheck\n\nProbe test failure is unrelated (though I\u0027m getting more and more convinced that test_manage_shard_ranges_repair_root_shrinking_gaps is somehow flakey)","commit_id":"1831658b338d628f18a2e3357e7b7f5d34ec79df"},{"author":{"_account_id":32333,"name":"Aymeric Ducroquetz","email":"aymeric.ducroquetz@gmail.com","username":"AymericDu"},"change_message_id":"19dfb3216fc60de096cf67bac5a51b05e9b19784","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"0b8eb425_c8020463","in_reply_to":"86e9d8db_c0f78311","updated":"2022-06-23 06:43:52.000000000","message":"Thanks","commit_id":"1831658b338d628f18a2e3357e7b7f5d34ec79df"}],"swift/common/middleware/proxy_logging.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"f8fa1b8efad080c5e67ef8186f17681bdf61e264","unresolved":true,"context_lines":[{"line_number":243,"context_line":"            if self.log_hdrs_only:"},{"line_number":244,"context_line":"                logged_headers \u003d \u0027\\n\u0027.join(\u0027%s: %s\u0027 % (k, v)"},{"line_number":245,"context_line":"                                           for k, v in req.headers.items()"},{"line_number":246,"context_line":"                                           if k in self.log_hdrs_only)"},{"line_number":247,"context_line":"            else:"},{"line_number":248,"context_line":"                logged_headers \u003d \u0027\\n\u0027.join(\u0027%s: %s\u0027 % (k, v)"},{"line_number":249,"context_line":"                                           for k, v in req.headers.items())"}],"source_content_type":"text/x-python","patch_set":1,"id":"d3930eb0_5787c2f7","line":246,"updated":"2022-06-21 17:53:28.000000000","message":"What are the pros/cons of this vs. adding Host to access_log_headers_only?\n\nThough I\u0027m realizing it\u0027d be nice to have those values anonymized per-header...","commit_id":"aa7c02dac3a062eafa34d64fef6f651bd59f861d"},{"author":{"_account_id":32333,"name":"Aymeric Ducroquetz","email":"aymeric.ducroquetz@gmail.com","username":"AymericDu"},"change_message_id":"a8263d839c3579dd45fbc975a470a4f26feac6c6","unresolved":false,"context_lines":[{"line_number":243,"context_line":"            if self.log_hdrs_only:"},{"line_number":244,"context_line":"                logged_headers \u003d \u0027\\n\u0027.join(\u0027%s: %s\u0027 % (k, v)"},{"line_number":245,"context_line":"                                           for k, v in req.headers.items()"},{"line_number":246,"context_line":"                                           if k in self.log_hdrs_only)"},{"line_number":247,"context_line":"            else:"},{"line_number":248,"context_line":"                logged_headers \u003d \u0027\\n\u0027.join(\u0027%s: %s\u0027 % (k, v)"},{"line_number":249,"context_line":"                                           for k, v in req.headers.items())"}],"source_content_type":"text/x-python","patch_set":1,"id":"1b2653e6_7f476b4f","line":246,"in_reply_to":"d3930eb0_5787c2f7","updated":"2022-06-22 13:58:27.000000000","message":"It wasn\u0027t our main reason, but in fact we should anonymize this field because it can contain the bucket name in a virtual style.\nThe main reason was to be able to isolate this field to be able to process it (filter, sort, extract, count, etc.) more easily in the logs.\nIn addition, at OVHcloud, we use the LTSV format to be able to search (by field) the logs.","commit_id":"aa7c02dac3a062eafa34d64fef6f651bd59f861d"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"f8fa1b8efad080c5e67ef8186f17681bdf61e264","unresolved":false,"context_lines":[{"line_number":252,"context_line":"        domain \u003d req.environ.get(\u0027HTTP_HOST\u0027,"},{"line_number":253,"context_line":"                                 req.environ.get(\u0027SERVER_NAME\u0027, None))"},{"line_number":254,"context_line":"        if \u0027:\u0027 in domain:"},{"line_number":255,"context_line":"            domain, port \u003d domain.rsplit(\u0027:\u0027, 1)"},{"line_number":256,"context_line":"        duration_time_str \u003d \"%.4f\" % (end_time - start_time)"},{"line_number":257,"context_line":"        policy_index \u003d get_policy_index(req.headers, resp_headers)"},{"line_number":258,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"0249ed05_a59196b2","line":255,"range":{"start_line":255,"start_character":20,"end_line":255,"end_character":24},"updated":"2022-06-21 17:53:28.000000000","message":"This is discarded, yeah? Which is why we won\u0027t bother looking for SERVER_PORT like we do in https://github.com/openstack/swift/blob/master/swift/common/swob.py#L850-L854","commit_id":"aa7c02dac3a062eafa34d64fef6f651bd59f861d"},{"author":{"_account_id":32333,"name":"Aymeric Ducroquetz","email":"aymeric.ducroquetz@gmail.com","username":"AymericDu"},"change_message_id":"a8263d839c3579dd45fbc975a470a4f26feac6c6","unresolved":false,"context_lines":[{"line_number":252,"context_line":"        domain \u003d req.environ.get(\u0027HTTP_HOST\u0027,"},{"line_number":253,"context_line":"                                 req.environ.get(\u0027SERVER_NAME\u0027, None))"},{"line_number":254,"context_line":"        if \u0027:\u0027 in domain:"},{"line_number":255,"context_line":"            domain, port \u003d domain.rsplit(\u0027:\u0027, 1)"},{"line_number":256,"context_line":"        duration_time_str \u003d \"%.4f\" % (end_time - start_time)"},{"line_number":257,"context_line":"        policy_index \u003d get_policy_index(req.headers, resp_headers)"},{"line_number":258,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"35e748b6_040d3013","line":255,"range":{"start_line":255,"start_character":20,"end_line":255,"end_character":24},"in_reply_to":"0249ed05_a59196b2","updated":"2022-06-22 13:58:27.000000000","message":"`HTTP_HOST` can contain a port.\nWhich is why the other codes remove this part:\n- https://github.com/openstack/swift/blob/master/swift/common/middleware/domain_remap.py#L147\n- https://github.com/openstack/swift/blob/master/swift/common/middleware/s3api/s3request.py#L618","commit_id":"aa7c02dac3a062eafa34d64fef6f651bd59f861d"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"f8fa1b8efad080c5e67ef8186f17681bdf61e264","unresolved":true,"context_lines":[{"line_number":292,"context_line":"                                    self.anonymization_salt),"},{"line_number":293,"context_line":"            # Others information"},{"line_number":294,"context_line":"            \u0027method\u0027: method,"},{"line_number":295,"context_line":"            \u0027domain\u0027: domain,"},{"line_number":296,"context_line":"            \u0027protocol\u0027:"},{"line_number":297,"context_line":"                req.environ.get(\u0027SERVER_PROTOCOL\u0027),"},{"line_number":298,"context_line":"            \u0027status_int\u0027: status_int,"}],"source_content_type":"text/x-python","patch_set":1,"id":"86c668bb_fe7edc52","line":295,"updated":"2022-06-21 17:53:28.000000000","message":"How will this interact with domain_remap? How do we *want* them to interact? I could see good arguments for either of the obvious approaches:\n\n* Log the base domain, so we don\u0027t duplicate information from account/container\n* Log the full domain, so we see what the user actually sent\n\nI *think* we\u0027d get the first given our recommended pipelines -- given the possibility of exposing account/container, should we use a StrAnonymizer here?","commit_id":"aa7c02dac3a062eafa34d64fef6f651bd59f861d"},{"author":{"_account_id":32333,"name":"Aymeric Ducroquetz","email":"aymeric.ducroquetz@gmail.com","username":"AymericDu"},"change_message_id":"a8263d839c3579dd45fbc975a470a4f26feac6c6","unresolved":true,"context_lines":[{"line_number":292,"context_line":"                                    self.anonymization_salt),"},{"line_number":293,"context_line":"            # Others information"},{"line_number":294,"context_line":"            \u0027method\u0027: method,"},{"line_number":295,"context_line":"            \u0027domain\u0027: domain,"},{"line_number":296,"context_line":"            \u0027protocol\u0027:"},{"line_number":297,"context_line":"                req.environ.get(\u0027SERVER_PROTOCOL\u0027),"},{"line_number":298,"context_line":"            \u0027status_int\u0027: status_int,"}],"source_content_type":"text/x-python","patch_set":1,"id":"5d034880_f30f14a2","line":295,"in_reply_to":"86c668bb_fe7edc52","updated":"2022-06-22 13:58:27.000000000","message":"I don\u0027t use this middleware, so I admit I didn\u0027t think about it.\nOn the other hand, I agree that this field should also be anonymized because it can contain the bucket name in virtual style.","commit_id":"aa7c02dac3a062eafa34d64fef6f651bd59f861d"}]}
