)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"10c4b394ceac90f6029ff73c2871f3a6ad14a778","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     indianwhocodes \u003cnairashwin952013@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2023-06-30 09:53:23 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"format sysmeta,usermeta in swift-container-info"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I5c3d260d677c61213c42662c6641207d9b7f026a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"0583bda0_2e62b785","line":7,"updated":"2023-07-03 07:03:38.000000000","message":"The scope of this change is actually begger then this. It actaully formats the sysmeta and meta in both the container and account info tools.\n\nAlso more information in the commit message would be nice. Seeing as this is what in the future we\u0027ll be referring too. Maybe something like:\n\n\n  Propery format meta and sysmeta in db info cli tools\n\n  Currently we make no effort in formatting the meta and sysmeta\n  inside a db when we use the info (swift-{container,account}-info\n  tools.\n\n  This patch properly formats them so they are easier to parse by human eyes:\n\n    $ swift-container-info \u003cpath container db\u003e\n    ...\n    System Metadata:\n      X-Container-Sysmeta-Potatoes: 99.9\n      X-Container-Sysmeta-Something-Really-Really-Really-Really-Long: something_else_long\n    User Metadata:\n      X-Container-Meta-Coffee: yes\n      X-Container-Meta-Something-Else: 0\n      X-Container-Meta-Chicken: salt","commit_id":"8dc9a112eb809faa5eca031fb00399e0d8b90f7c"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"abd4a0fc6e1e7287dd245da00774641b87cad72e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"c4f0581e_9360ed48","updated":"2023-06-23 22:16:03.000000000","message":"FWIW, something like https://paste.opendev.org/show/b4iOj5SruyAGVYdLropN/ ought to get unit tests passing (+/- some potential dict-ordering issues)","commit_id":"2f7192595e704794fb357922c67f7c0b6e6dee28"},{"author":{"_account_id":34892,"name":"ASHWIN A NAIR","display_name":"indianwhocodes","email":"nairashwin952013@gmail.com","username":"indianwhocodes","status":"Nvidia"},"change_message_id":"40b401e41ac4b31c3d5181db56f87ecb563c10d3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"aafc904a_370f7f58","in_reply_to":"c4f0581e_9360ed48","updated":"2023-06-28 01:41:45.000000000","message":"Thanks, this should be mergeable now.","commit_id":"2f7192595e704794fb357922c67f7c0b6e6dee28"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"6d851f546c5c87b85d81f872ed2b56e79b5bc733","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"918466db_43008f8e","updated":"2023-06-28 11:47:13.000000000","message":"@Ashwin thanks for improving this. I think my suggestion is the same as Tim\u0027s ;-)","commit_id":"ca0cffc005d6735bdb60ee41c97130e62a133029"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"a575279deadb0c2f8fbed5dedf76385936a27930","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"382685c5_17c3ff32","updated":"2023-06-28 21:34:38.000000000","message":"Heh -- remember how I said something about \"some potential dict-ordering issues\"? Yeah, that\u0027s what the one failure\u0027s about. Man I want to rip out py2...","commit_id":"73f364a0a1bf275485a5499f44399edc6bd1a0c2"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"2c1460f2bd1f396746dc07c4d9ef73f0bfda1cd6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"191c8838_fb34950f","updated":"2023-07-03 18:47:01.000000000","message":"change looks obvious, existing tests seem to cover the spirit (although a new test with multiple [sys]meta keys would have been nice too).  Commit message has a solid title and seems to cover the why.","commit_id":"e82536c64da655a5e35b967cb617092df8585c75"}],"swift/cli/info.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"abd4a0fc6e1e7287dd245da00774641b87cad72e","unresolved":true,"context_lines":[{"line_number":303,"context_line":"        print(\u0027No system metadata found in db file\u0027)"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"    if user_metadata:"},{"line_number":306,"context_line":"        print(\u0027  User Metadata: %s\u0027 % user_metadata)"},{"line_number":307,"context_line":"    else:"},{"line_number":308,"context_line":"        print(\u0027No user metadata found in db file\u0027)"},{"line_number":309,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"10b30b74_f8f2a4d6","line":306,"updated":"2023-06-23 22:16:03.000000000","message":"If we want to pretty-print sysmeta, we probably want to do it for user meta, too.","commit_id":"12a96095818b6b1555c882d68d6709dc5ba6769e"},{"author":{"_account_id":34892,"name":"ASHWIN A NAIR","display_name":"indianwhocodes","email":"nairashwin952013@gmail.com","username":"indianwhocodes","status":"Nvidia"},"change_message_id":"40b401e41ac4b31c3d5181db56f87ecb563c10d3","unresolved":false,"context_lines":[{"line_number":303,"context_line":"        print(\u0027No system metadata found in db file\u0027)"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"    if user_metadata:"},{"line_number":306,"context_line":"        print(\u0027  User Metadata: %s\u0027 % user_metadata)"},{"line_number":307,"context_line":"    else:"},{"line_number":308,"context_line":"        print(\u0027No user metadata found in db file\u0027)"},{"line_number":309,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"b762ec38_38250f86","line":306,"in_reply_to":"10b30b74_f8f2a4d6","updated":"2023-06-28 01:41:45.000000000","message":"Ack","commit_id":"12a96095818b6b1555c882d68d6709dc5ba6769e"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"abd4a0fc6e1e7287dd245da00774641b87cad72e","unresolved":true,"context_lines":[{"line_number":299,"context_line":"            print(\u0027  %s: %s\u0027 % (title, value))"},{"line_number":300,"context_line":"    if sys_metadata:"},{"line_number":301,"context_line":"        sys_metadata \u003d json.dumps(sys_metadata, indent\u003d2)"},{"line_number":302,"context_line":"        print(\u0027  System Metadata: %s\u0027 % sys_metadata)"},{"line_number":303,"context_line":"    else:"},{"line_number":304,"context_line":"        print(\u0027No system metadata found in db file\u0027)"},{"line_number":305,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"97a5c3af_af57e253","line":302,"updated":"2023-06-23 22:16:03.000000000","message":"The indent on `System Metadata:` will make this come out a little weird:\n```\n...\n  X-Container-Bar: goo\n  System Metadata: {\n  \"mydata\": \"swift\"\n}\nNo user metadata found in db file\n...\n```\nwhen I\u0027m pretty sure you want something more like\n```\n...\n  X-Container-Bar: goo\n  System Metadata: {\n    \"mydata\": \"swift\"\n  }\nNo user metadata found in db file\n...\n```\nWhy wouldn\u0027t we do something more like\n```\n...\n  X-Container-Bar: goo\n  System Metadata:\n    Mydata: swift\nNo user metadata found in db file\n...\n```\nthough? Seems like it\u0027d be more in line with how we treat non-user, non-sys meta","commit_id":"2f7192595e704794fb357922c67f7c0b6e6dee28"},{"author":{"_account_id":34892,"name":"ASHWIN A NAIR","display_name":"indianwhocodes","email":"nairashwin952013@gmail.com","username":"indianwhocodes","status":"Nvidia"},"change_message_id":"40b401e41ac4b31c3d5181db56f87ecb563c10d3","unresolved":false,"context_lines":[{"line_number":299,"context_line":"            print(\u0027  %s: %s\u0027 % (title, value))"},{"line_number":300,"context_line":"    if sys_metadata:"},{"line_number":301,"context_line":"        sys_metadata \u003d json.dumps(sys_metadata, indent\u003d2)"},{"line_number":302,"context_line":"        print(\u0027  System Metadata: %s\u0027 % sys_metadata)"},{"line_number":303,"context_line":"    else:"},{"line_number":304,"context_line":"        print(\u0027No system metadata found in db file\u0027)"},{"line_number":305,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"128c052b_93303558","line":302,"in_reply_to":"97a5c3af_af57e253","updated":"2023-06-28 01:41:45.000000000","message":"Ack","commit_id":"2f7192595e704794fb357922c67f7c0b6e6dee28"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"6d851f546c5c87b85d81f872ed2b56e79b5bc733","unresolved":true,"context_lines":[{"line_number":298,"context_line":"            title \u003d key.replace(\u0027_\u0027, \u0027-\u0027).title()"},{"line_number":299,"context_line":"            print(\u0027  %s: %s\u0027 % (title, value))"},{"line_number":300,"context_line":"    if sys_metadata:"},{"line_number":301,"context_line":"        sys_metadata \u003d json.dumps(sys_metadata, indent\u003d2)"},{"line_number":302,"context_line":"        print(\u0027  System Metadata: %s\u0027 % sys_metadata)"},{"line_number":303,"context_line":"    else:"},{"line_number":304,"context_line":"        print(\u0027No system metadata found in db file\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"4e7daf7b_11b5d130","line":301,"updated":"2023-06-28 11:47:13.000000000","message":"this is already better. But given that we take the trouble to format all the other metadata (above), perhaps we could do the same here: i.e.:\n\n```\ndiff --git a/swift/cli/info.py b/swift/cli/info.py\nindex ab67d2c9e..0ce44f0a9 100644\n--- a/swift/cli/info.py\n+++ b/swift/cli/info.py\n@@ -298,8 +298,9 @@ def print_db_info_metadata(db_type, info, metadata, drop_prefixes\u003dFalse,\n             title \u003d key.replace(\u0027_\u0027, \u0027-\u0027).title()\n             print(\u0027  %s: %s\u0027 % (title, value))\n     if sys_metadata:\n-        sys_metadata \u003d json.dumps(sys_metadata, indent\u003d2)\n-        print(\u0027  System Metadata: %s\u0027 % sys_metadata)\n+        print(\u0027  System Metadata:\u0027)\n+        for key, value in sys_metadata.items():\n+            print(\u0027    %s: %s\u0027 % (key, value))\n     else:\n         print(\u0027No system metadata found in db file\u0027)\n         ```\n         \nwhich the prints as:\n\n```\n  System Metadata:\n    X-Container-Sysmeta-Sharding: True\n    X-Container-Sysmeta-Shard-Context-88d82040-4c45-4f05-8b62-833705fe415d-sdb4: {\"ref\": \"88d82040-4c45-4f05-8b62-833705fe415d-sdb4\", \"cursor\": \"\", \"max_row\": 60, \"cleave_to_row\": 60, \"last_cleave_to_row\": null, \"cleaving_done\": true, \"misplaced_done\": true, \"ranges_done\": 3, \"ranges_todo\": 0}\n```","commit_id":"ca0cffc005d6735bdb60ee41c97130e62a133029"},{"author":{"_account_id":34892,"name":"ASHWIN A NAIR","display_name":"indianwhocodes","email":"nairashwin952013@gmail.com","username":"indianwhocodes","status":"Nvidia"},"change_message_id":"9368195f020685a1a45a436047db1d13c9104434","unresolved":false,"context_lines":[{"line_number":298,"context_line":"            title \u003d key.replace(\u0027_\u0027, \u0027-\u0027).title()"},{"line_number":299,"context_line":"            print(\u0027  %s: %s\u0027 % (title, value))"},{"line_number":300,"context_line":"    if sys_metadata:"},{"line_number":301,"context_line":"        sys_metadata \u003d json.dumps(sys_metadata, indent\u003d2)"},{"line_number":302,"context_line":"        print(\u0027  System Metadata: %s\u0027 % sys_metadata)"},{"line_number":303,"context_line":"    else:"},{"line_number":304,"context_line":"        print(\u0027No system metadata found in db file\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"c6888381_2ca73769","line":301,"in_reply_to":"4e7daf7b_11b5d130","updated":"2023-08-17 16:14:40.000000000","message":"Ack","commit_id":"ca0cffc005d6735bdb60ee41c97130e62a133029"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"6d851f546c5c87b85d81f872ed2b56e79b5bc733","unresolved":true,"context_lines":[{"line_number":304,"context_line":"        print(\u0027No system metadata found in db file\u0027)"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"    if user_metadata:"},{"line_number":307,"context_line":"        user_metadata \u003d json.dumps(user_metadata, indent\u003d2)"},{"line_number":308,"context_line":"        print(\u0027  User Metadata: %s\u0027 % user_metadata)"},{"line_number":309,"context_line":"    else:"},{"line_number":310,"context_line":"        print(\u0027No user metadata found in db file\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"57403d84_593053fa","line":307,"updated":"2023-06-28 11:47:13.000000000","message":"ditto","commit_id":"ca0cffc005d6735bdb60ee41c97130e62a133029"},{"author":{"_account_id":34892,"name":"ASHWIN A NAIR","display_name":"indianwhocodes","email":"nairashwin952013@gmail.com","username":"indianwhocodes","status":"Nvidia"},"change_message_id":"9368195f020685a1a45a436047db1d13c9104434","unresolved":false,"context_lines":[{"line_number":304,"context_line":"        print(\u0027No system metadata found in db file\u0027)"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"    if user_metadata:"},{"line_number":307,"context_line":"        user_metadata \u003d json.dumps(user_metadata, indent\u003d2)"},{"line_number":308,"context_line":"        print(\u0027  User Metadata: %s\u0027 % user_metadata)"},{"line_number":309,"context_line":"    else:"},{"line_number":310,"context_line":"        print(\u0027No user metadata found in db file\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5271f80a_7d3cd4b3","line":307,"in_reply_to":"57403d84_593053fa","updated":"2023-08-17 16:14:40.000000000","message":"Ack","commit_id":"ca0cffc005d6735bdb60ee41c97130e62a133029"}],"test/unit/cli/test_info.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"2dfd6b9705e6163ebf426e9544357110168c198e","unresolved":true,"context_lines":[{"line_number":199,"context_line":"  State: unsharded\u0027\u0027\u0027 % POLICIES[0].name"},{"line_number":200,"context_line":"        self.maxDiff \u003d None"},{"line_number":201,"context_line":"        self.assertEqual(out.getvalue().strip().split(\u0027\\n\u0027),"},{"line_number":202,"context_line":"                         exp_out.split(\u0027\\n\u0027))"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        info \u003d {"},{"line_number":205,"context_line":"            \u0027account\u0027: \u0027acct\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"e8b1ab47_1e200d04","line":202,"updated":"2023-06-29 09:00:24.000000000","message":"I think that if you put the sorting back then the test will pass - it\u0027s not ideal (the test asserts that each line exists, but not the order they are printed in!) but it\u0027s how it\u0027s always been","commit_id":"73f364a0a1bf275485a5499f44399edc6bd1a0c2"},{"author":{"_account_id":34892,"name":"ASHWIN A NAIR","display_name":"indianwhocodes","email":"nairashwin952013@gmail.com","username":"indianwhocodes","status":"Nvidia"},"change_message_id":"9368195f020685a1a45a436047db1d13c9104434","unresolved":false,"context_lines":[{"line_number":199,"context_line":"  State: unsharded\u0027\u0027\u0027 % POLICIES[0].name"},{"line_number":200,"context_line":"        self.maxDiff \u003d None"},{"line_number":201,"context_line":"        self.assertEqual(out.getvalue().strip().split(\u0027\\n\u0027),"},{"line_number":202,"context_line":"                         exp_out.split(\u0027\\n\u0027))"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        info \u003d {"},{"line_number":205,"context_line":"            \u0027account\u0027: \u0027acct\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"5dddccdc_d4230746","line":202,"in_reply_to":"e8b1ab47_1e200d04","updated":"2023-08-17 16:14:40.000000000","message":"Ack","commit_id":"73f364a0a1bf275485a5499f44399edc6bd1a0c2"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"2dfd6b9705e6163ebf426e9544357110168c198e","unresolved":true,"context_lines":[{"line_number":239,"context_line":"    x-account-meta-mydata: swift\u0027\u0027\u0027"},{"line_number":240,"context_line":"        self.maxDiff \u003d None"},{"line_number":241,"context_line":"        self.assertEqual(out.getvalue().strip().split(\u0027\\n\u0027),"},{"line_number":242,"context_line":"                         exp_out.split(\u0027\\n\u0027))"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"    def test_print_db_info_metadata_with_shard_ranges(self):"},{"line_number":245,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"0a312334_62a1bbe5","line":242,"updated":"2023-06-29 09:00:24.000000000","message":"ditto","commit_id":"73f364a0a1bf275485a5499f44399edc6bd1a0c2"},{"author":{"_account_id":34892,"name":"ASHWIN A NAIR","display_name":"indianwhocodes","email":"nairashwin952013@gmail.com","username":"indianwhocodes","status":"Nvidia"},"change_message_id":"9368195f020685a1a45a436047db1d13c9104434","unresolved":false,"context_lines":[{"line_number":239,"context_line":"    x-account-meta-mydata: swift\u0027\u0027\u0027"},{"line_number":240,"context_line":"        self.maxDiff \u003d None"},{"line_number":241,"context_line":"        self.assertEqual(out.getvalue().strip().split(\u0027\\n\u0027),"},{"line_number":242,"context_line":"                         exp_out.split(\u0027\\n\u0027))"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"    def test_print_db_info_metadata_with_shard_ranges(self):"},{"line_number":245,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"03bb2527_6dc6f745","line":242,"in_reply_to":"0a312334_62a1bbe5","updated":"2023-08-17 16:14:40.000000000","message":"Ack","commit_id":"73f364a0a1bf275485a5499f44399edc6bd1a0c2"}]}
