)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":38842,"name":"Silvia Wachira","display_name":"Silvia Wachira","email":"wachirasilvia8@gmail.com","username":"Silvia-Wachira"},"change_message_id":"9a869e5dc8566475224985f74bdb86cda07e0252","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"a1aabeca_fbf21d2e","updated":"2026-03-27 12:13:03.000000000","message":"Thank you for the review! I have addressed the other comments. Regarding the same bug in share_snapshots.py, share.py, share_replicas.py, and share_network_subnets.py,would you prefer I fix all of them in this patch or should I scope this patch to share networks only and track the rest as follow-up bugs?","commit_id":"1e44416a973e4d3a3cbe6d35c11ac25cc8d21bb4"},{"author":{"_account_id":38842,"name":"Silvia Wachira","display_name":"Silvia Wachira","email":"wachirasilvia8@gmail.com","username":"Silvia-Wachira"},"change_message_id":"ab0ea185cf7cb6c75909ebf9aa455b4728b9194e","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"1e04d43a_038b676d","in_reply_to":"17c79de8_1b44e77e","updated":"2026-04-02 20:02:38.000000000","message":"Done! The fix has been applied to share.py, share_snapshots.py, share_replicas.py, and share_network_subnets.py in this patch. All tests pass.","commit_id":"1e44416a973e4d3a3cbe6d35c11ac25cc8d21bb4"},{"author":{"_account_id":38842,"name":"Silvia Wachira","display_name":"Silvia Wachira","email":"wachirasilvia8@gmail.com","username":"Silvia-Wachira"},"change_message_id":"06bd5bc1c6bcf67c155ab9646235eb2385bf9dd0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"4fce639a_c4fed07f","in_reply_to":"1e04d43a_038b676d","updated":"2026-04-02 20:02:55.000000000","message":"Done","commit_id":"1e44416a973e4d3a3cbe6d35c11ac25cc8d21bb4"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"86ce1fffeed7b282aaf30045ec769904a3f92766","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"e3b91496_b5ea1b3f","in_reply_to":"a1aabeca_fbf21d2e","updated":"2026-04-02 07:09:27.000000000","message":"Makes sense to address them in one patch, so that its easy to backport it all to older stable releases","commit_id":"1e44416a973e4d3a3cbe6d35c11ac25cc8d21bb4"},{"author":{"_account_id":38842,"name":"Silvia Wachira","display_name":"Silvia Wachira","email":"wachirasilvia8@gmail.com","username":"Silvia-Wachira"},"change_message_id":"96f15c434ec46dea981fc000c90cdd53e14efd09","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"17c79de8_1b44e77e","in_reply_to":"e3b91496_b5ea1b3f","updated":"2026-04-02 07:36:41.000000000","message":"Noted.I have started working on it.","commit_id":"1e44416a973e4d3a3cbe6d35c11ac25cc8d21bb4"},{"author":{"_account_id":38842,"name":"Silvia Wachira","display_name":"Silvia Wachira","email":"wachirasilvia8@gmail.com","username":"Silvia-Wachira"},"change_message_id":"b9ce611d56abcddba3f0803d5e51a0b9bf8f331e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"7dd65eb1_88c8ff3b","updated":"2026-03-31 09:17:00.000000000","message":"Hi Goutham, I’ve addressed the comments on this patch. Could you please take a look and share your feedback?","commit_id":"8b6c54e6954142235129fed604485c32454e5712"},{"author":{"_account_id":38842,"name":"Silvia Wachira","display_name":"Silvia Wachira","email":"wachirasilvia8@gmail.com","username":"Silvia-Wachira"},"change_message_id":"b5dc44398f8528e38b28ccde07777a3ff2ab1bde","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"dafb9a68_a10eca87","updated":"2026-04-13 12:06:39.000000000","message":"Hi Carlos, I would appreciate your review when you have a moment. Thank you!","commit_id":"5f779520fc09aa38f6765c1d9ba3bc96c30ff687"},{"author":{"_account_id":38842,"name":"Silvia Wachira","display_name":"Silvia Wachira","email":"wachirasilvia8@gmail.com","username":"Silvia-Wachira"},"change_message_id":"e1657cfc4851ca4f5a248c3eeab6a20bff798843","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"f0e45204_b2f63e59","updated":"2026-04-07 17:44:52.000000000","message":"Recheck","commit_id":"5f779520fc09aa38f6765c1d9ba3bc96c30ff687"},{"author":{"_account_id":38842,"name":"Silvia Wachira","display_name":"Silvia Wachira","email":"wachirasilvia8@gmail.com","username":"Silvia-Wachira"},"change_message_id":"699749705502c2487f78bb63d58c168d655c7b97","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"52721a48_b3d5df8b","updated":"2026-04-07 15:43:46.000000000","message":"recheck","commit_id":"5f779520fc09aa38f6765c1d9ba3bc96c30ff687"}],"manilaclient/osc/v2/share_networks.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"b8f5130cf04d0235fc65c08bb735a3b82987c269","unresolved":true,"context_lines":[{"line_number":251,"context_line":"                    \u0027properties\u0027: format_columns.DictColumn("},{"line_number":252,"context_line":"                        ss.pop(\u0027metadata\u0027, {})"},{"line_number":253,"context_line":"                    )"},{"line_number":254,"context_line":"                    if parsed_args.formatter \u003d\u003d \u0027table\u0027"},{"line_number":255,"context_line":"                    else ss.pop(\u0027metadata\u0027, {}),"},{"line_number":256,"context_line":"                }"},{"line_number":257,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":6,"id":"62ec207f_1999f3e4","line":254,"updated":"2026-03-26 21:43:48.000000000","message":"A reno release note is missing for this bug fix. Please add one\nunder the `fixes` section describing the JSON serialization issue\n(e.g., `reno new fix-dictcolumn-json-serialization`).","commit_id":"1e44416a973e4d3a3cbe6d35c11ac25cc8d21bb4"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"c02b9a27a23443c36d587dd5dd0eff47b47902dc","unresolved":false,"context_lines":[{"line_number":251,"context_line":"                    \u0027properties\u0027: format_columns.DictColumn("},{"line_number":252,"context_line":"                        ss.pop(\u0027metadata\u0027, {})"},{"line_number":253,"context_line":"                    )"},{"line_number":254,"context_line":"                    if parsed_args.formatter \u003d\u003d \u0027table\u0027"},{"line_number":255,"context_line":"                    else ss.pop(\u0027metadata\u0027, {}),"},{"line_number":256,"context_line":"                }"},{"line_number":257,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":6,"id":"e453e9ab_44bae621","line":254,"updated":"2026-03-26 21:42:24.000000000","message":"A reno release note is missing for this bug fix. Please add one\nunder the `fixes` section describing the JSON serialization issue\n(e.g., `reno new fix-dictcolumn-json-serialization`).","commit_id":"1e44416a973e4d3a3cbe6d35c11ac25cc8d21bb4"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"b8f5130cf04d0235fc65c08bb735a3b82987c269","unresolved":true,"context_lines":[{"line_number":251,"context_line":"                    \u0027properties\u0027: format_columns.DictColumn("},{"line_number":252,"context_line":"                        ss.pop(\u0027metadata\u0027, {})"},{"line_number":253,"context_line":"                    )"},{"line_number":254,"context_line":"                    if parsed_args.formatter \u003d\u003d \u0027table\u0027"},{"line_number":255,"context_line":"                    else ss.pop(\u0027metadata\u0027, {}),"},{"line_number":256,"context_line":"                }"},{"line_number":257,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":6,"id":"3750c659_e9c3ea75","line":254,"updated":"2026-03-26 21:43:48.000000000","message":"The identical unconditional `DictColumn` wrapping exists in some\nother show commands:\n- `share_snapshots.py:221` (ShowShareSnapshot)\n- `share.py:809` (ShowShare)\n- `share_replicas.py:352` (ShowShareReplica)\n- `share_network_subnets.py:291` (ShowShareNetworkSubnet)\n\nIf the purpose is \"fix DictColumn JSON serialization,\" all instances\ncould be fixed together, or the commit message should explicitly\nscope this to share networks and track the rest as follow-up.","commit_id":"1e44416a973e4d3a3cbe6d35c11ac25cc8d21bb4"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"c02b9a27a23443c36d587dd5dd0eff47b47902dc","unresolved":false,"context_lines":[{"line_number":251,"context_line":"                    \u0027properties\u0027: format_columns.DictColumn("},{"line_number":252,"context_line":"                        ss.pop(\u0027metadata\u0027, {})"},{"line_number":253,"context_line":"                    )"},{"line_number":254,"context_line":"                    if parsed_args.formatter \u003d\u003d \u0027table\u0027"},{"line_number":255,"context_line":"                    else ss.pop(\u0027metadata\u0027, {}),"},{"line_number":256,"context_line":"                }"},{"line_number":257,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":6,"id":"7e8fb977_14130475","line":254,"updated":"2026-03-26 21:42:24.000000000","message":"The identical unconditional `DictColumn` wrapping exists in some\nother show commands:\n- `share_snapshots.py:221` (ShowShareSnapshot)\n- `share.py:809` (ShowShare)\n- `share_replicas.py:352` (ShowShareReplica)\n- `share_network_subnets.py:291` (ShowShareNetworkSubnet)\n\nIf the purpose is \"fix DictColumn JSON serialization,\" all instances\ncould be fixed together, or the commit message should explicitly\nscope this to share networks and track the rest as follow-up.","commit_id":"1e44416a973e4d3a3cbe6d35c11ac25cc8d21bb4"},{"author":{"_account_id":38842,"name":"Silvia Wachira","display_name":"Silvia Wachira","email":"wachirasilvia8@gmail.com","username":"Silvia-Wachira"},"change_message_id":"1d93bd0608eb103000a183d7242450b20f88fea7","unresolved":false,"context_lines":[{"line_number":251,"context_line":"                    \u0027properties\u0027: format_columns.DictColumn("},{"line_number":252,"context_line":"                        ss.pop(\u0027metadata\u0027, {})"},{"line_number":253,"context_line":"                    )"},{"line_number":254,"context_line":"                    if parsed_args.formatter \u003d\u003d \u0027table\u0027"},{"line_number":255,"context_line":"                    else ss.pop(\u0027metadata\u0027, {}),"},{"line_number":256,"context_line":"                }"},{"line_number":257,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":6,"id":"6f7db5e9_fa427474","line":254,"in_reply_to":"3750c659_e9c3ea75","updated":"2026-04-02 20:03:26.000000000","message":"Done","commit_id":"1e44416a973e4d3a3cbe6d35c11ac25cc8d21bb4"},{"author":{"_account_id":38842,"name":"Silvia Wachira","display_name":"Silvia Wachira","email":"wachirasilvia8@gmail.com","username":"Silvia-Wachira"},"change_message_id":"1d93bd0608eb103000a183d7242450b20f88fea7","unresolved":false,"context_lines":[{"line_number":251,"context_line":"                    \u0027properties\u0027: format_columns.DictColumn("},{"line_number":252,"context_line":"                        ss.pop(\u0027metadata\u0027, {})"},{"line_number":253,"context_line":"                    )"},{"line_number":254,"context_line":"                    if parsed_args.formatter \u003d\u003d \u0027table\u0027"},{"line_number":255,"context_line":"                    else ss.pop(\u0027metadata\u0027, {}),"},{"line_number":256,"context_line":"                }"},{"line_number":257,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":6,"id":"6398cba9_971a6cd9","line":254,"in_reply_to":"62ec207f_1999f3e4","updated":"2026-04-02 20:03:26.000000000","message":"Done","commit_id":"1e44416a973e4d3a3cbe6d35c11ac25cc8d21bb4"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"60ecd611bfb9256c2eebbc65b936313055a82650","unresolved":true,"context_lines":[{"line_number":248,"context_line":"        for ss in data[\u0027share_network_subnets\u0027]:"},{"line_number":249,"context_line":"            ss.update("},{"line_number":250,"context_line":"                {"},{"line_number":251,"context_line":"                    \u0027properties\u0027: format_columns.DictColumn("},{"line_number":252,"context_line":"                        ss.pop(\u0027metadata\u0027, {})"},{"line_number":253,"context_line":"                    )"},{"line_number":254,"context_line":"                    if parsed_args.formatter \u003d\u003d \u0027table\u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"eecd3cc4_9b12bf13","line":251,"updated":"2026-04-02 22:44:09.000000000","message":"extracting to a variable would be consistent with the pattern\nused in the other files and slightly more readable.","commit_id":"617476fdd4367984f0ffe65b234d46e6e14f4f4b"},{"author":{"_account_id":38842,"name":"Silvia Wachira","display_name":"Silvia Wachira","email":"wachirasilvia8@gmail.com","username":"Silvia-Wachira"},"change_message_id":"4e262774209a63ad58242873cb95d9ba5706fe62","unresolved":false,"context_lines":[{"line_number":248,"context_line":"        for ss in data[\u0027share_network_subnets\u0027]:"},{"line_number":249,"context_line":"            ss.update("},{"line_number":250,"context_line":"                {"},{"line_number":251,"context_line":"                    \u0027properties\u0027: format_columns.DictColumn("},{"line_number":252,"context_line":"                        ss.pop(\u0027metadata\u0027, {})"},{"line_number":253,"context_line":"                    )"},{"line_number":254,"context_line":"                    if parsed_args.formatter \u003d\u003d \u0027table\u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"517e2ddc_5dbee3fe","line":251,"in_reply_to":"c962b58a_26239dff","updated":"2026-04-07 13:13:55.000000000","message":"Done","commit_id":"617476fdd4367984f0ffe65b234d46e6e14f4f4b"},{"author":{"_account_id":38842,"name":"Silvia Wachira","display_name":"Silvia Wachira","email":"wachirasilvia8@gmail.com","username":"Silvia-Wachira"},"change_message_id":"845e2727655cab02481dd374ae433e27ddcd8b64","unresolved":true,"context_lines":[{"line_number":248,"context_line":"        for ss in data[\u0027share_network_subnets\u0027]:"},{"line_number":249,"context_line":"            ss.update("},{"line_number":250,"context_line":"                {"},{"line_number":251,"context_line":"                    \u0027properties\u0027: format_columns.DictColumn("},{"line_number":252,"context_line":"                        ss.pop(\u0027metadata\u0027, {})"},{"line_number":253,"context_line":"                    )"},{"line_number":254,"context_line":"                    if parsed_args.formatter \u003d\u003d \u0027table\u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"c962b58a_26239dff","line":251,"in_reply_to":"eecd3cc4_9b12bf13","updated":"2026-04-07 13:13:32.000000000","message":"Done! Extracted metadata to a variable, consistent with the pattern in the other files.","commit_id":"617476fdd4367984f0ffe65b234d46e6e14f4f4b"}],"manilaclient/tests/unit/osc/v2/test_share_networks.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"b8f5130cf04d0235fc65c08bb735a3b82987c269","unresolved":true,"context_lines":[{"line_number":381,"context_line":"                self.share_networks_mock, network_to_show"},{"line_number":382,"context_line":"            )"},{"line_number":383,"context_line":"        self.assertCountEqual(self.columns, columns)"},{"line_number":384,"context_line":"        self.assertCountEqual(self.data, data)"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"    def test_share_network_show_json_format(self):"},{"line_number":387,"context_line":"        network_to_show \u003d getattr(self.share_network, \u0027id\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"657f1e84_051643ca","line":384,"updated":"2026-03-26 21:43:48.000000000","message":"Add an assertion for the DictColumn data type here","commit_id":"1e44416a973e4d3a3cbe6d35c11ac25cc8d21bb4"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"c02b9a27a23443c36d587dd5dd0eff47b47902dc","unresolved":false,"context_lines":[{"line_number":381,"context_line":"                self.share_networks_mock, network_to_show"},{"line_number":382,"context_line":"            )"},{"line_number":383,"context_line":"        self.assertCountEqual(self.columns, columns)"},{"line_number":384,"context_line":"        self.assertCountEqual(self.data, data)"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"    def test_share_network_show_json_format(self):"},{"line_number":387,"context_line":"        network_to_show \u003d getattr(self.share_network, \u0027id\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"87ec12ab_6fa57340","line":384,"updated":"2026-03-26 21:42:24.000000000","message":"Add an assertion for the DictColumn data type here","commit_id":"1e44416a973e4d3a3cbe6d35c11ac25cc8d21bb4"},{"author":{"_account_id":38842,"name":"Silvia Wachira","display_name":"Silvia Wachira","email":"wachirasilvia8@gmail.com","username":"Silvia-Wachira"},"change_message_id":"1d93bd0608eb103000a183d7242450b20f88fea7","unresolved":false,"context_lines":[{"line_number":381,"context_line":"                self.share_networks_mock, network_to_show"},{"line_number":382,"context_line":"            )"},{"line_number":383,"context_line":"        self.assertCountEqual(self.columns, columns)"},{"line_number":384,"context_line":"        self.assertCountEqual(self.data, data)"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"    def test_share_network_show_json_format(self):"},{"line_number":387,"context_line":"        network_to_show \u003d getattr(self.share_network, \u0027id\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"8a83d8d2_b1c93c3e","line":384,"in_reply_to":"657f1e84_051643ca","updated":"2026-04-02 20:03:26.000000000","message":"Done","commit_id":"1e44416a973e4d3a3cbe6d35c11ac25cc8d21bb4"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"c02b9a27a23443c36d587dd5dd0eff47b47902dc","unresolved":false,"context_lines":[{"line_number":383,"context_line":"        self.assertCountEqual(self.columns, columns)"},{"line_number":384,"context_line":"        self.assertCountEqual(self.data, data)"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"    def test_share_network_show_json_format(self):"},{"line_number":387,"context_line":"        network_to_show \u003d getattr(self.share_network, \u0027id\u0027)"},{"line_number":388,"context_line":"        fake_security_service \u003d mock.Mock()"},{"line_number":389,"context_line":"        fake_security_service.id \u003d str(uuid.uuid4())"}],"source_content_type":"text/x-python","patch_set":6,"id":"ca45e4fe_5964d34e","line":386,"updated":"2026-03-26 21:42:24.000000000","message":"The `FakeShareNetwork` fixture doesn\u0027t include a `metadata` key in\n`share_network_subnets`, so `ss.pop(\u0027metadata\u0027, {})` always returns\n`{}`. The test verifies the *type* is correct but doesn\u0027t verify\nactual metadata content flows through.\n\nConsider adding metadata to the fake data (e.g.,\n`\u0027metadata\u0027: {\u0027key\u0027: \u0027value\u0027}`) and asserting the value, not just\nthe type.","commit_id":"1e44416a973e4d3a3cbe6d35c11ac25cc8d21bb4"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"b8f5130cf04d0235fc65c08bb735a3b82987c269","unresolved":true,"context_lines":[{"line_number":383,"context_line":"        self.assertCountEqual(self.columns, columns)"},{"line_number":384,"context_line":"        self.assertCountEqual(self.data, data)"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"    def test_share_network_show_json_format(self):"},{"line_number":387,"context_line":"        network_to_show \u003d getattr(self.share_network, \u0027id\u0027)"},{"line_number":388,"context_line":"        fake_security_service \u003d mock.Mock()"},{"line_number":389,"context_line":"        fake_security_service.id \u003d str(uuid.uuid4())"}],"source_content_type":"text/x-python","patch_set":6,"id":"e80ad82c_a9f2b9cf","line":386,"updated":"2026-03-26 21:43:48.000000000","message":"The `FakeShareNetwork` fixture doesn\u0027t include a `metadata` key in\n`share_network_subnets`, so `ss.pop(\u0027metadata\u0027, {})` always returns\n`{}`. The test verifies the *type* is correct but doesn\u0027t verify\nactual metadata content flows through.\n\nConsider adding metadata to the fake data (e.g.,\n`\u0027metadata\u0027: {\u0027key\u0027: \u0027value\u0027}`) and asserting the value, not just\nthe type.","commit_id":"1e44416a973e4d3a3cbe6d35c11ac25cc8d21bb4"},{"author":{"_account_id":38842,"name":"Silvia Wachira","display_name":"Silvia Wachira","email":"wachirasilvia8@gmail.com","username":"Silvia-Wachira"},"change_message_id":"1d93bd0608eb103000a183d7242450b20f88fea7","unresolved":false,"context_lines":[{"line_number":383,"context_line":"        self.assertCountEqual(self.columns, columns)"},{"line_number":384,"context_line":"        self.assertCountEqual(self.data, data)"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"    def test_share_network_show_json_format(self):"},{"line_number":387,"context_line":"        network_to_show \u003d getattr(self.share_network, \u0027id\u0027)"},{"line_number":388,"context_line":"        fake_security_service \u003d mock.Mock()"},{"line_number":389,"context_line":"        fake_security_service.id \u003d str(uuid.uuid4())"}],"source_content_type":"text/x-python","patch_set":6,"id":"52b8eaa0_8c6ccaef","line":386,"in_reply_to":"e80ad82c_a9f2b9cf","updated":"2026-04-02 20:03:26.000000000","message":"Done","commit_id":"1e44416a973e4d3a3cbe6d35c11ac25cc8d21bb4"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"c02b9a27a23443c36d587dd5dd0eff47b47902dc","unresolved":false,"context_lines":[{"line_number":384,"context_line":"        self.assertCountEqual(self.data, data)"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"    def test_share_network_show_json_format(self):"},{"line_number":387,"context_line":"        network_to_show \u003d getattr(self.share_network, \u0027id\u0027)"},{"line_number":388,"context_line":"        fake_security_service \u003d mock.Mock()"},{"line_number":389,"context_line":"        fake_security_service.id \u003d str(uuid.uuid4())"},{"line_number":390,"context_line":"        fake_security_service.name \u003d f\u0027security-service-{uuid.uuid4().hex}\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"6b53bb36_0db44856","line":387,"updated":"2026-03-26 21:42:24.000000000","message":"`getattr(self.share_network, \u0027id\u0027)` is equivalent to\n`self.share_network.id`. The existing test uses `getattr` because\nthe attribute is parameterized via `@ddt.data`; here it\u0027s just a literal\nstring.","commit_id":"1e44416a973e4d3a3cbe6d35c11ac25cc8d21bb4"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"b8f5130cf04d0235fc65c08bb735a3b82987c269","unresolved":true,"context_lines":[{"line_number":384,"context_line":"        self.assertCountEqual(self.data, data)"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"    def test_share_network_show_json_format(self):"},{"line_number":387,"context_line":"        network_to_show \u003d getattr(self.share_network, \u0027id\u0027)"},{"line_number":388,"context_line":"        fake_security_service \u003d mock.Mock()"},{"line_number":389,"context_line":"        fake_security_service.id \u003d str(uuid.uuid4())"},{"line_number":390,"context_line":"        fake_security_service.name \u003d f\u0027security-service-{uuid.uuid4().hex}\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"76b13bc1_7d84dcd5","line":387,"updated":"2026-03-26 21:43:48.000000000","message":"`getattr(self.share_network, \u0027id\u0027)` is equivalent to\n`self.share_network.id`. The existing test uses `getattr` because\nthe attribute is parameterized via `@ddt.data`; here it\u0027s just a literal\nstring.","commit_id":"1e44416a973e4d3a3cbe6d35c11ac25cc8d21bb4"},{"author":{"_account_id":38842,"name":"Silvia Wachira","display_name":"Silvia Wachira","email":"wachirasilvia8@gmail.com","username":"Silvia-Wachira"},"change_message_id":"1d93bd0608eb103000a183d7242450b20f88fea7","unresolved":false,"context_lines":[{"line_number":384,"context_line":"        self.assertCountEqual(self.data, data)"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"    def test_share_network_show_json_format(self):"},{"line_number":387,"context_line":"        network_to_show \u003d getattr(self.share_network, \u0027id\u0027)"},{"line_number":388,"context_line":"        fake_security_service \u003d mock.Mock()"},{"line_number":389,"context_line":"        fake_security_service.id \u003d str(uuid.uuid4())"},{"line_number":390,"context_line":"        fake_security_service.name \u003d f\u0027security-service-{uuid.uuid4().hex}\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"85a9c80a_3ffed5ab","line":387,"in_reply_to":"76b13bc1_7d84dcd5","updated":"2026-04-02 20:03:26.000000000","message":"Done","commit_id":"1e44416a973e4d3a3cbe6d35c11ac25cc8d21bb4"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"b8f5130cf04d0235fc65c08bb735a3b82987c269","unresolved":true,"context_lines":[{"line_number":412,"context_line":"            find_resource.assert_called_once_with("},{"line_number":413,"context_line":"                self.share_networks_mock, network_to_show"},{"line_number":414,"context_line":"            )"},{"line_number":415,"context_line":"        properties \u003d self.share_network._info[\u0027share_network_subnets\u0027][0]["},{"line_number":416,"context_line":"            \u0027properties\u0027"},{"line_number":417,"context_line":"        ]"},{"line_number":418,"context_line":"        self.assertIsInstance(properties, dict)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1401314d_e1ad5b81","line":415,"updated":"2026-03-26 21:43:48.000000000","message":"The test checks `self.share_network._info[...][\u0027properties\u0027]` (the\nmutated source object) rather than the `data` returned by\n`take_action`. Asserting on the return value would be more direct","commit_id":"1e44416a973e4d3a3cbe6d35c11ac25cc8d21bb4"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"c02b9a27a23443c36d587dd5dd0eff47b47902dc","unresolved":false,"context_lines":[{"line_number":412,"context_line":"            find_resource.assert_called_once_with("},{"line_number":413,"context_line":"                self.share_networks_mock, network_to_show"},{"line_number":414,"context_line":"            )"},{"line_number":415,"context_line":"        properties \u003d self.share_network._info[\u0027share_network_subnets\u0027][0]["},{"line_number":416,"context_line":"            \u0027properties\u0027"},{"line_number":417,"context_line":"        ]"},{"line_number":418,"context_line":"        self.assertIsInstance(properties, dict)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5c030600_6b2f827a","line":415,"updated":"2026-03-26 21:42:24.000000000","message":"The test checks `self.share_network._info[...][\u0027properties\u0027]` (the\nmutated source object) rather than the `data` returned by\n`take_action`. Asserting on the return value would be more direct","commit_id":"1e44416a973e4d3a3cbe6d35c11ac25cc8d21bb4"},{"author":{"_account_id":38842,"name":"Silvia Wachira","display_name":"Silvia Wachira","email":"wachirasilvia8@gmail.com","username":"Silvia-Wachira"},"change_message_id":"1d93bd0608eb103000a183d7242450b20f88fea7","unresolved":false,"context_lines":[{"line_number":412,"context_line":"            find_resource.assert_called_once_with("},{"line_number":413,"context_line":"                self.share_networks_mock, network_to_show"},{"line_number":414,"context_line":"            )"},{"line_number":415,"context_line":"        properties \u003d self.share_network._info[\u0027share_network_subnets\u0027][0]["},{"line_number":416,"context_line":"            \u0027properties\u0027"},{"line_number":417,"context_line":"        ]"},{"line_number":418,"context_line":"        self.assertIsInstance(properties, dict)"}],"source_content_type":"text/x-python","patch_set":6,"id":"4dcd285e_9c184c32","line":415,"in_reply_to":"1401314d_e1ad5b81","updated":"2026-04-02 20:03:26.000000000","message":"Done","commit_id":"1e44416a973e4d3a3cbe6d35c11ac25cc8d21bb4"}],"releasenotes/notes/fix-dictcolumn-json-serialization-d51ea8bbf8e01078.yaml":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"60ecd611bfb9256c2eebbc65b936313055a82650","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Fixed a bug where the ``properties`` field in share network subnets"},{"line_number":5,"context_line":"    was unconditionally wrapped in ``DictColumn``, causing a JSON"},{"line_number":6,"context_line":"    serialization error when using the ``-f json`` formatter."}],"source_content_type":"text/x-yaml","patch_set":12,"id":"92ccd6ad_a45dae6c","line":4,"updated":"2026-04-02 22:44:09.000000000","message":"The release note only mentions \"share network subnets\", but\nthe fix also applies to `share show`, `share export location show`,\n`share snapshot show`, `share replica show`, and\n`share network subnet show`. Consider making the note more general,\ne.g.: \"Fixed a bug where the ``properties`` field in several show\ncommands was unconditionally wrapped...\"","commit_id":"617476fdd4367984f0ffe65b234d46e6e14f4f4b"},{"author":{"_account_id":38842,"name":"Silvia Wachira","display_name":"Silvia Wachira","email":"wachirasilvia8@gmail.com","username":"Silvia-Wachira"},"change_message_id":"4e262774209a63ad58242873cb95d9ba5706fe62","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Fixed a bug where the ``properties`` field in share network subnets"},{"line_number":5,"context_line":"    was unconditionally wrapped in ``DictColumn``, causing a JSON"},{"line_number":6,"context_line":"    serialization error when using the ``-f json`` formatter."}],"source_content_type":"text/x-yaml","patch_set":12,"id":"a9b6cdb7_ce51a913","line":4,"in_reply_to":"78449d91_0efda8b3","updated":"2026-04-07 13:13:55.000000000","message":"Done","commit_id":"617476fdd4367984f0ffe65b234d46e6e14f4f4b"},{"author":{"_account_id":38842,"name":"Silvia Wachira","display_name":"Silvia Wachira","email":"wachirasilvia8@gmail.com","username":"Silvia-Wachira"},"change_message_id":"845e2727655cab02481dd374ae433e27ddcd8b64","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Fixed a bug where the ``properties`` field in share network subnets"},{"line_number":5,"context_line":"    was unconditionally wrapped in ``DictColumn``, causing a JSON"},{"line_number":6,"context_line":"    serialization error when using the ``-f json`` formatter."}],"source_content_type":"text/x-yaml","patch_set":12,"id":"78449d91_0efda8b3","line":4,"in_reply_to":"92ccd6ad_a45dae6c","updated":"2026-04-07 13:13:32.000000000","message":"I have also updated the release note to mention all affected commands.","commit_id":"617476fdd4367984f0ffe65b234d46e6e14f4f4b"}]}
