)]}'
{"swift/common/middleware/bulk.py":[{"author":{"_account_id":9625,"name":"Thiago da Silva","email":"thiagodasilva@gmail.com","username":"thiago"},"change_message_id":"1811f0bbf19f95b4103424521f062dcd9b3cdb8b","unresolved":false,"context_lines":[{"line_number":321,"context_line":"        :returns: True if created container, False if container exists"},{"line_number":322,"context_line":"        :raises CreateContainerError: when unable to create container"},{"line_number":323,"context_line":"        \"\"\""},{"line_number":324,"context_line":"        head_cont_req \u003d make_subrequest("},{"line_number":325,"context_line":"            req.environ, method\u003d\u0027HEAD\u0027, path\u003dwsgi_quote(container_path),"},{"line_number":326,"context_line":"            headers\u003d{\u0027X-Auth-Token\u0027: req.headers.get(\u0027X-Auth-Token\u0027)},"},{"line_number":327,"context_line":"            swift_source\u003d\u0027EA\u0027)"},{"line_number":328,"context_line":"        resp \u003d head_cont_req.get_response(self.app)"},{"line_number":329,"context_line":"        if resp.is_success:"},{"line_number":330,"context_line":"            return False"},{"line_number":331,"context_line":"        if resp.status_int \u003d\u003d HTTP_NOT_FOUND:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_60c6929f","line":328,"range":{"start_line":324,"start_character":8,"end_line":328,"end_character":51},"updated":"2020-01-16 05:05:30.000000000","message":"could get_container_info be used here?","commit_id":"7d2dcb49ddb7a273c796dcc65bbab5c83799a171"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"10a920b0fbb7ff3c5ab77d3b19cbd97e6b19b289","unresolved":false,"context_lines":[{"line_number":630,"context_line":"                    # Copy some whitelisted headers to the subrequest"},{"line_number":631,"context_line":"                    for k, v in req.headers.items():"},{"line_number":632,"context_line":"                        if ((k.lower() in (\u0027x-delete-at\u0027, \u0027x-delete-after\u0027))"},{"line_number":633,"context_line":"                                or is_user_meta(\u0027object\u0027, k)):"},{"line_number":634,"context_line":"                            create_headers[k] \u003d v"},{"line_number":635,"context_line":""},{"line_number":636,"context_line":"                    create_obj_req \u003d make_subrequest("}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_e60dc1e7","line":633,"updated":"2020-01-15 21:56:16.000000000","message":"I wonder how many more of the headers at https://github.com/openstack/swift/blob/2.23.0/etc/object-server.conf-sample#L135 people have been using with this... and what other headers people may have added at the object layer :-/\n\nWould it be better to hardcode just the user-meta check, and provide a config option for a list of additional headers to allow?","commit_id":"7d2dcb49ddb7a273c796dcc65bbab5c83799a171"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"64959c60adb0638aa8d4a4c032b0aef755aa5f49","unresolved":false,"context_lines":[{"line_number":630,"context_line":"                    # Copy some whitelisted headers to the subrequest"},{"line_number":631,"context_line":"                    for k, v in req.headers.items():"},{"line_number":632,"context_line":"                        if ((k.lower() in (\u0027x-delete-at\u0027, \u0027x-delete-after\u0027))"},{"line_number":633,"context_line":"                                or is_user_meta(\u0027object\u0027, k)):"},{"line_number":634,"context_line":"                            create_headers[k] \u003d v"},{"line_number":635,"context_line":""},{"line_number":636,"context_line":"                    create_obj_req \u003d make_subrequest("}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_964ad821","line":633,"in_reply_to":"3fa7e38b_40403605","updated":"2020-01-17 19:47:57.000000000","message":"Given that it\u0027s been like a year and a half since the change that broke it and we\u0027ve only heard about problems with expiry headers... IDK that I\u0027d worry about it yet.","commit_id":"7d2dcb49ddb7a273c796dcc65bbab5c83799a171"},{"author":{"_account_id":9625,"name":"Thiago da Silva","email":"thiagodasilva@gmail.com","username":"thiago"},"change_message_id":"1811f0bbf19f95b4103424521f062dcd9b3cdb8b","unresolved":false,"context_lines":[{"line_number":630,"context_line":"                    # Copy some whitelisted headers to the subrequest"},{"line_number":631,"context_line":"                    for k, v in req.headers.items():"},{"line_number":632,"context_line":"                        if ((k.lower() in (\u0027x-delete-at\u0027, \u0027x-delete-after\u0027))"},{"line_number":633,"context_line":"                                or is_user_meta(\u0027object\u0027, k)):"},{"line_number":634,"context_line":"                            create_headers[k] \u003d v"},{"line_number":635,"context_line":""},{"line_number":636,"context_line":"                    create_obj_req \u003d make_subrequest("}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_40403605","line":633,"in_reply_to":"3fa7e38b_e60dc1e7","updated":"2020-01-16 05:05:30.000000000","message":"could we black-list instead? maybe make use of copy_header_subset[1]?\n\n[1] - https://github.com/openstack/swift/blob/master/swift/common/request_helpers.py#L366","commit_id":"7d2dcb49ddb7a273c796dcc65bbab5c83799a171"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"10a920b0fbb7ff3c5ab77d3b19cbd97e6b19b289","unresolved":false,"context_lines":[{"line_number":647,"context_line":"                            # strings; the key is already UTF-8 encoded, but"},{"line_number":648,"context_line":"                            # we still have to encode the value."},{"line_number":649,"context_line":"                            create_obj_req.headers[header_name] \u003d \\"},{"line_number":650,"context_line":"                                pax_value.encode(\"utf-8\")"},{"line_number":651,"context_line":""},{"line_number":652,"context_line":"                    resp \u003d create_obj_req.get_response(self.app)"},{"line_number":653,"context_line":"                    containers_accessed.add(container)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_8c950f97","line":650,"updated":"2020-01-15 21:56:16.000000000","message":":+1: So, the xattrs still override the overall request headers. Good.","commit_id":"7d2dcb49ddb7a273c796dcc65bbab5c83799a171"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"64959c60adb0638aa8d4a4c032b0aef755aa5f49","unresolved":false,"context_lines":[{"line_number":629,"context_line":""},{"line_number":630,"context_line":"                    # Copy some whitelisted headers to the subrequest"},{"line_number":631,"context_line":"                    for k, v in req.headers.items():"},{"line_number":632,"context_line":"                        if ((k.lower() in (\u0027x-delete-at\u0027, \u0027x-delete-after\u0027))"},{"line_number":633,"context_line":"                                or is_user_meta(\u0027object\u0027, k)):"},{"line_number":634,"context_line":"                            create_headers[k] \u003d v"},{"line_number":635,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_36cd24ba","line":632,"range":{"start_line":632,"start_character":59,"end_line":632,"end_character":73},"updated":"2020-01-17 19:47:57.000000000","message":"I wonder if we should be resolving this to a single x-delete-at value for the whole archive... meh, I think I\u0027d be fine with doing that later.","commit_id":"ff0753fe19be3d7442aef3972e08adc48d25fe93"}],"test/unit/common/middleware/test_bulk.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"10a920b0fbb7ff3c5ab77d3b19cbd97e6b19b289","unresolved":false,"context_lines":[{"line_number":228,"context_line":"        req.headers[\u0027accept\u0027] \u003d \u0027application/json;q\u003d1.0\u0027"},{"line_number":229,"context_line":"        req.headers[\u0027X-Delete-At\u0027] \u003d \u00271577383915\u0027"},{"line_number":230,"context_line":"        req.headers[\u0027X-Object-Meta-Dog\u0027] \u003d \u0027Rantanplan\u0027"},{"line_number":231,"context_line":"        req.headers[\u0027X-Horse\u0027] \u003d \u0027Jolly Jumper\u0027"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"        resp \u003d req.get_response(self.bulk)"},{"line_number":234,"context_line":"        self.assertEqual(resp.status_int, 200)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_2cd2db60","line":231,"updated":"2020-01-15 21:56:16.000000000","message":"Might want to add one of\n\n* X-Object-Meta-Lunch\n* X-Object-Meta-Afternoon-Snack\n* X-Object-Meta-Muppet\n* X-Object-Meta-Cat\n\nto demonstrate the intended precedence.","commit_id":"7d2dcb49ddb7a273c796dcc65bbab5c83799a171"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"64959c60adb0638aa8d4a4c032b0aef755aa5f49","unresolved":false,"context_lines":[{"line_number":228,"context_line":"        req.headers[\u0027accept\u0027] \u003d \u0027application/json;q\u003d1.0\u0027"},{"line_number":229,"context_line":"        req.headers[\u0027X-Delete-At\u0027] \u003d \u00271577383915\u0027"},{"line_number":230,"context_line":"        req.headers[\u0027X-Object-Meta-Dog\u0027] \u003d \u0027Rantanplan\u0027"},{"line_number":231,"context_line":"        req.headers[\u0027X-Horse\u0027] \u003d \u0027Jolly Jumper\u0027"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"        resp \u003d req.get_response(self.bulk)"},{"line_number":234,"context_line":"        self.assertEqual(resp.status_int, 200)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_961178fb","line":231,"in_reply_to":"3fa7e38b_2cd2db60","updated":"2020-01-17 19:47:57.000000000","message":"Done","commit_id":"7d2dcb49ddb7a273c796dcc65bbab5c83799a171"}]}
