)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"009fd7a26b77237d7cc5046288b224460e881896","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"1623ad23_45442f8a","updated":"2024-05-17 21:13:12.000000000","message":"you\u0027re +2 but not +A - i\u0027m ok merging the working unittest as-is if you are.","commit_id":"893deca2743cc7590dbea90d5b0adfcf999bbc8b"}],"test/unit/common/middleware/s3api/test_bucket.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"fc9a1b17987592d8cb0e9b6297b8012fac90c69c","unresolved":true,"context_lines":[{"line_number":1525,"context_line":"                \u0027Signature\u003dX\u0027,"},{"line_number":1526,"context_line":"            ]),"},{"line_number":1527,"context_line":"            \u0027Date\u0027: self.get_date_header(),"},{"line_number":1528,"context_line":"            \u0027x-amz-content-sha256\u0027: \u0027not the hash\u0027,"},{"line_number":1529,"context_line":"        }"},{"line_number":1530,"context_line":"        req \u003d Request.blank(\u0027/bucket\u0027,"},{"line_number":1531,"context_line":"                            environ\u003d{\u0027REQUEST_METHOD\u0027: \u0027PUT\u0027},"}],"source_content_type":"text/x-python","patch_set":1,"id":"30342d1b_3c353044","line":1528,"updated":"2024-05-16 19:18:24.000000000","message":"We might want to go with `sha256().hexdigest()` or something -- IDK if AWS bombs out early on headers that don\u0027t look like a hash, but I wouldn\u0027t be surprised.","commit_id":"893deca2743cc7590dbea90d5b0adfcf999bbc8b"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"009fd7a26b77237d7cc5046288b224460e881896","unresolved":true,"context_lines":[{"line_number":1525,"context_line":"                \u0027Signature\u003dX\u0027,"},{"line_number":1526,"context_line":"            ]),"},{"line_number":1527,"context_line":"            \u0027Date\u0027: self.get_date_header(),"},{"line_number":1528,"context_line":"            \u0027x-amz-content-sha256\u0027: \u0027not the hash\u0027,"},{"line_number":1529,"context_line":"        }"},{"line_number":1530,"context_line":"        req \u003d Request.blank(\u0027/bucket\u0027,"},{"line_number":1531,"context_line":"                            environ\u003d{\u0027REQUEST_METHOD\u0027: \u0027PUT\u0027},"}],"source_content_type":"text/x-python","patch_set":1,"id":"44676b7e_398c30d3","line":1528,"in_reply_to":"30342d1b_3c353044","updated":"2024-05-17 21:13:12.000000000","message":"but this unittest will never run against s3 and our code doesn\u0027t have the behavior you describe.","commit_id":"893deca2743cc7590dbea90d5b0adfcf999bbc8b"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"f8fa5d7508194d49b3e4021fc32db9e8dacd429c","unresolved":true,"context_lines":[{"line_number":1525,"context_line":"                \u0027Signature\u003dX\u0027,"},{"line_number":1526,"context_line":"            ]),"},{"line_number":1527,"context_line":"            \u0027Date\u0027: self.get_date_header(),"},{"line_number":1528,"context_line":"            \u0027x-amz-content-sha256\u0027: \u0027not the hash\u0027,"},{"line_number":1529,"context_line":"        }"},{"line_number":1530,"context_line":"        req \u003d Request.blank(\u0027/bucket\u0027,"},{"line_number":1531,"context_line":"                            environ\u003d{\u0027REQUEST_METHOD\u0027: \u0027PUT\u0027},"}],"source_content_type":"text/x-python","patch_set":1,"id":"09a8c493_6017cda4","line":1528,"in_reply_to":"44676b7e_398c30d3","updated":"2024-05-17 21:31:01.000000000","message":"Eh, I\u0027ll just keep it in mind for https://review.opendev.org/c/openstack/swift/+/836755/21/swift/common/middleware/s3api/s3request.py#1112 ...","commit_id":"893deca2743cc7590dbea90d5b0adfcf999bbc8b"}],"test/unit/common/middleware/s3api/test_obj.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"009fd7a26b77237d7cc5046288b224460e881896","unresolved":true,"context_lines":[{"line_number":823,"context_line":"                        self.get_v4_amz_date_header().split(\u0027T\u0027, 1)[0]),"},{"line_number":824,"context_line":"                \u0027x-amz-date\u0027: self.get_v4_amz_date_header(),"},{"line_number":825,"context_line":"                \u0027x-amz-storage-class\u0027: \u0027STANDARD\u0027,"},{"line_number":826,"context_line":"                \u0027x-amz-content-sha256\u0027: \u0027not the hash\u0027,"},{"line_number":827,"context_line":"                \u0027Date\u0027: self.get_date_header()},"},{"line_number":828,"context_line":"            body\u003dself.object_body)"},{"line_number":829,"context_line":"        req.date \u003d datetime.now()"}],"source_content_type":"text/x-python","patch_set":1,"id":"5ca5f407_4b819068","line":826,"updated":"2024-05-17 21:13:12.000000000","message":"I think i have some recent prior art?","commit_id":"893deca2743cc7590dbea90d5b0adfcf999bbc8b"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"f8fa5d7508194d49b3e4021fc32db9e8dacd429c","unresolved":true,"context_lines":[{"line_number":823,"context_line":"                        self.get_v4_amz_date_header().split(\u0027T\u0027, 1)[0]),"},{"line_number":824,"context_line":"                \u0027x-amz-date\u0027: self.get_v4_amz_date_header(),"},{"line_number":825,"context_line":"                \u0027x-amz-storage-class\u0027: \u0027STANDARD\u0027,"},{"line_number":826,"context_line":"                \u0027x-amz-content-sha256\u0027: \u0027not the hash\u0027,"},{"line_number":827,"context_line":"                \u0027Date\u0027: self.get_date_header()},"},{"line_number":828,"context_line":"            body\u003dself.object_body)"},{"line_number":829,"context_line":"        req.date \u003d datetime.now()"}],"source_content_type":"text/x-python","patch_set":1,"id":"f7a00fd3_c32b01f4","line":826,"in_reply_to":"5ca5f407_4b819068","updated":"2024-05-17 21:31:01.000000000","message":"Ah, I was so hopeful [in 2019](https://github.com/openstack/swift/commit/3a8f5dbf):\n```\nIn the future, Swift will hopefully grow a way to perform SHA256\nverification on the object-server. This would offer two main benefits:\n\n  - End-to-end message integrity checking.\n  - Move CPU load of calculating the hash from the proxy (which is\n    somewhat CPU-bound) to the object-server (which tends to have CPU to\n    spare).\n```","commit_id":"893deca2743cc7590dbea90d5b0adfcf999bbc8b"}]}
