)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":35133,"name":"Jan Jasek","email":"jjasek@redhat.com","username":"janjasek"},"change_message_id":"7d206ac85f0b4a1b2de1f4ce907cebd8a9276b80","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"92a34f62_019a3fe8","updated":"2024-08-12 10:58:12.000000000","message":"LGTM, thank you!","commit_id":"d6da03e9efbaad92820b20a7bcd41ff9e3d52b0b"}],"openstack_dashboard/api/neutron.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"80883b7a73ba148c74df5902484da6779b76368c","unresolved":true,"context_lines":[{"line_number":1753,"context_line":"def subnetpool_list(request, **params):"},{"line_number":1754,"context_line":"    LOG.debug(\"subnetpool_list(): params\u003d%s\", params)"},{"line_number":1755,"context_line":"    subnetpools \u003d networkclient(request).subnet_pools(**params)"},{"line_number":1756,"context_line":"    return [SubnetPool(s.to_dict()) for s in subnetpools]"},{"line_number":1757,"context_line":""},{"line_number":1758,"context_line":""},{"line_number":1759,"context_line":"@profiler.trace"}],"source_content_type":"text/x-python","patch_set":1,"id":"8a1bd9ac_e8f5dbe0","line":1756,"updated":"2024-07-30 14:59:20.000000000","message":"This is slightly different than the one for trunks, which checks the instance type:\n\nhttps://review.opendev.org/c/openstack/horizon/+/924336/1/openstack_dashboard/api/neutron.py","commit_id":"b1f8e93d980b0fee8709697b779040d32cce2f16"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"e69d0aa16154fe0fdec8696c0e896a1ff13d1c6e","unresolved":true,"context_lines":[{"line_number":1753,"context_line":"def subnetpool_list(request, **params):"},{"line_number":1754,"context_line":"    LOG.debug(\"subnetpool_list(): params\u003d%s\", params)"},{"line_number":1755,"context_line":"    subnetpools \u003d networkclient(request).subnet_pools(**params)"},{"line_number":1756,"context_line":"    return [SubnetPool(s.to_dict()) for s in subnetpools]"},{"line_number":1757,"context_line":""},{"line_number":1758,"context_line":""},{"line_number":1759,"context_line":"@profiler.trace"}],"source_content_type":"text/x-python","patch_set":1,"id":"aa04ebe7_09e25071","line":1756,"in_reply_to":"8a1bd9ac_e8f5dbe0","updated":"2024-08-08 16:10:20.000000000","message":"Didn\u0027t see a response. Maybe subnetpools is already a list just wanted to make sure.","commit_id":"b1f8e93d980b0fee8709697b779040d32cce2f16"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"38fb29a8133e754cfffe95acdd9fa8a69d331155","unresolved":true,"context_lines":[{"line_number":1753,"context_line":"def subnetpool_list(request, **params):"},{"line_number":1754,"context_line":"    LOG.debug(\"subnetpool_list(): params\u003d%s\", params)"},{"line_number":1755,"context_line":"    subnetpools \u003d networkclient(request).subnet_pools(**params)"},{"line_number":1756,"context_line":"    return [SubnetPool(s.to_dict()) for s in subnetpools]"},{"line_number":1757,"context_line":""},{"line_number":1758,"context_line":""},{"line_number":1759,"context_line":"@profiler.trace"}],"source_content_type":"text/x-python","patch_set":1,"id":"46cb83d1_225cf5e3","line":1756,"in_reply_to":"aa04ebe7_09e25071","updated":"2024-08-12 11:18:12.000000000","message":"yeah, I saw that for trunks the response not always a list like thing, but not seen that for subnetpools. To be on the safe side let\u0027s use the same pattern for subnetpools also","commit_id":"b1f8e93d980b0fee8709697b779040d32cce2f16"},{"author":{"_account_id":35133,"name":"Jan Jasek","email":"jjasek@redhat.com","username":"janjasek"},"change_message_id":"f361429b047842e94385d17e7db27c9c78472b21","unresolved":true,"context_lines":[{"line_number":1756,"context_line":"    return [SubnetPool(s.to_dict()) for s in subnetpools]"},{"line_number":1757,"context_line":""},{"line_number":1758,"context_line":""},{"line_number":1759,"context_line":"@profiler.trace"},{"line_number":1760,"context_line":"def subnetpool_get(request, subnetpool_id, **params):"},{"line_number":1761,"context_line":"    LOG.debug(\"subnetpool_get(): subnetpoolid\u003d%(subnetpool_id)s, \""},{"line_number":1762,"context_line":"              \"params\u003d%(params)s\", {\u0027subnetpool_id\u0027: subnetpool_id,"},{"line_number":1763,"context_line":"                                    \u0027params\u0027: params})"},{"line_number":1764,"context_line":"    subnetpool \u003d \\"},{"line_number":1765,"context_line":"        networkclient(request).get_subnet_pool(subnetpool_id, **params)"},{"line_number":1766,"context_line":"    return SubnetPool(subnetpool.to_dict())"},{"line_number":1767,"context_line":""},{"line_number":1768,"context_line":""},{"line_number":1769,"context_line":"@profiler.trace"}],"source_content_type":"text/x-python","patch_set":2,"id":"c84e0e81_c5d4ac0e","line":1766,"range":{"start_line":1759,"start_character":0,"end_line":1766,"end_character":43},"updated":"2024-08-07 11:59:48.000000000","message":"Why subnetpool_get/get_subnet_pool contains two parameters \"subnetpool_id\" and \"**params\"? Based on the documentation, there is only one required parameter for get_subnet_pool and it is \"subnet_pool\" (which can be ID of a subnet pool or an instance of Class SubnetPool).\n\nIt should be like that:\n\n@profiler.trace\ndef subnetpool_get(request, subnetpool_id):\n    LOG.debug(\"subnetpool_get(): subnetpoolid\u003d%s\", subnetpool_id)\n    subnetpool \u003d \\\n        networkclient(request).get_subnet_pool(subnetpool_id)\n    return SubnetPool(subnetpool.to_dict())\n\nOr am I missing something?","commit_id":"871a364a0d53498c4d258464ee599c4864269a9c"},{"author":{"_account_id":35133,"name":"Jan Jasek","email":"jjasek@redhat.com","username":"janjasek"},"change_message_id":"7d206ac85f0b4a1b2de1f4ce907cebd8a9276b80","unresolved":false,"context_lines":[{"line_number":1756,"context_line":"    return [SubnetPool(s.to_dict()) for s in subnetpools]"},{"line_number":1757,"context_line":""},{"line_number":1758,"context_line":""},{"line_number":1759,"context_line":"@profiler.trace"},{"line_number":1760,"context_line":"def subnetpool_get(request, subnetpool_id, **params):"},{"line_number":1761,"context_line":"    LOG.debug(\"subnetpool_get(): subnetpoolid\u003d%(subnetpool_id)s, \""},{"line_number":1762,"context_line":"              \"params\u003d%(params)s\", {\u0027subnetpool_id\u0027: subnetpool_id,"},{"line_number":1763,"context_line":"                                    \u0027params\u0027: params})"},{"line_number":1764,"context_line":"    subnetpool \u003d \\"},{"line_number":1765,"context_line":"        networkclient(request).get_subnet_pool(subnetpool_id, **params)"},{"line_number":1766,"context_line":"    return SubnetPool(subnetpool.to_dict())"},{"line_number":1767,"context_line":""},{"line_number":1768,"context_line":""},{"line_number":1769,"context_line":"@profiler.trace"}],"source_content_type":"text/x-python","patch_set":2,"id":"28e8ecc1_951d0258","line":1766,"range":{"start_line":1759,"start_character":0,"end_line":1766,"end_character":43},"in_reply_to":"c19c9cf5_95b515a6","updated":"2024-08-12 10:58:12.000000000","message":"Done","commit_id":"871a364a0d53498c4d258464ee599c4864269a9c"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"fb7c5fa0b0fbd7dc6f7e5fafc02dfa4d3d7ad590","unresolved":true,"context_lines":[{"line_number":1756,"context_line":"    return [SubnetPool(s.to_dict()) for s in subnetpools]"},{"line_number":1757,"context_line":""},{"line_number":1758,"context_line":""},{"line_number":1759,"context_line":"@profiler.trace"},{"line_number":1760,"context_line":"def subnetpool_get(request, subnetpool_id, **params):"},{"line_number":1761,"context_line":"    LOG.debug(\"subnetpool_get(): subnetpoolid\u003d%(subnetpool_id)s, \""},{"line_number":1762,"context_line":"              \"params\u003d%(params)s\", {\u0027subnetpool_id\u0027: subnetpool_id,"},{"line_number":1763,"context_line":"                                    \u0027params\u0027: params})"},{"line_number":1764,"context_line":"    subnetpool \u003d \\"},{"line_number":1765,"context_line":"        networkclient(request).get_subnet_pool(subnetpool_id, **params)"},{"line_number":1766,"context_line":"    return SubnetPool(subnetpool.to_dict())"},{"line_number":1767,"context_line":""},{"line_number":1768,"context_line":""},{"line_number":1769,"context_line":"@profiler.trace"}],"source_content_type":"text/x-python","patch_set":2,"id":"c19c9cf5_95b515a6","line":1766,"range":{"start_line":1759,"start_character":0,"end_line":1766,"end_character":43},"in_reply_to":"c84e0e81_c5d4ac0e","updated":"2024-08-08 14:26:40.000000000","message":"thanks, done","commit_id":"871a364a0d53498c4d258464ee599c4864269a9c"},{"author":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"change_message_id":"7bbf0532e6f0ee2f76793ced7e75ae16c7a02137","unresolved":true,"context_lines":[{"line_number":1768,"context_line":""},{"line_number":1769,"context_line":""},{"line_number":1770,"context_line":"@profiler.trace"},{"line_number":1771,"context_line":"def subnetpool_create(request, name, prefixes, **kwargs):"},{"line_number":1772,"context_line":"    \"\"\"Create a subnetpool."},{"line_number":1773,"context_line":""},{"line_number":1774,"context_line":"    ip_version is auto-detected in back-end."}],"source_content_type":"text/x-python","patch_set":6,"id":"f11b60ae_18ccfd23","line":1771,"updated":"2025-07-21 22:13:01.000000000","message":"@katonalala@gmail.com hello, hmm, I think this problem https://bugs.launchpad.net/horizon/+bug/2116927\n\nafter this..","commit_id":"fa2b0ba7486230971fbebd155f620c2fafbd10a5"},{"author":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"change_message_id":"e311de9da634eae427b9cfbdad5f200a30dc7e09","unresolved":false,"context_lines":[{"line_number":1768,"context_line":""},{"line_number":1769,"context_line":""},{"line_number":1770,"context_line":"@profiler.trace"},{"line_number":1771,"context_line":"def subnetpool_create(request, name, prefixes, **kwargs):"},{"line_number":1772,"context_line":"    \"\"\"Create a subnetpool."},{"line_number":1773,"context_line":""},{"line_number":1774,"context_line":"    ip_version is auto-detected in back-end."}],"source_content_type":"text/x-python","patch_set":6,"id":"0427ae57_81c7169c","line":1771,"in_reply_to":"33c4669f_8621dc0d","updated":"2025-07-29 08:24:11.000000000","message":"Sorted in https://review.opendev.org/c/openstack/horizon/+/956006","commit_id":"fa2b0ba7486230971fbebd155f620c2fafbd10a5"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"df83605383f2efc71d57af1ca09b24444596d4ef","unresolved":true,"context_lines":[{"line_number":1768,"context_line":""},{"line_number":1769,"context_line":""},{"line_number":1770,"context_line":"@profiler.trace"},{"line_number":1771,"context_line":"def subnetpool_create(request, name, prefixes, **kwargs):"},{"line_number":1772,"context_line":"    \"\"\"Create a subnetpool."},{"line_number":1773,"context_line":""},{"line_number":1774,"context_line":"    ip_version is auto-detected in back-end."}],"source_content_type":"text/x-python","patch_set":6,"id":"33c4669f_8621dc0d","line":1771,"in_reply_to":"f11b60ae_18ccfd23","updated":"2025-07-22 08:59:25.000000000","message":":), I just commented on the bug pointing to this patch, I try to check it (1st have to build an env for reproduction)","commit_id":"fa2b0ba7486230971fbebd155f620c2fafbd10a5"}],"openstack_dashboard/test/unit/api/test_neutron.py":[{"author":{"_account_id":35133,"name":"Jan Jasek","email":"jjasek@redhat.com","username":"janjasek"},"change_message_id":"f361429b047842e94385d17e7db27c9c78472b21","unresolved":true,"context_lines":[{"line_number":1097,"context_line":"        neutronclient.delete_subnet.assert_called_once_with(subnet_id)"},{"line_number":1098,"context_line":""},{"line_number":1099,"context_line":"    @mock.patch.object(api.neutron, \u0027networkclient\u0027)"},{"line_number":1100,"context_line":"    def test_subnetpool_list(self, mock_neutronclient):"},{"line_number":1101,"context_line":"        subnetpools \u003d self.api_subnetpools_sdk"},{"line_number":1102,"context_line":""},{"line_number":1103,"context_line":"        neutronclient \u003d mock_neutronclient.return_value"},{"line_number":1104,"context_line":"        neutronclient.subnet_pools.return_value \u003d subnetpools"},{"line_number":1105,"context_line":""},{"line_number":1106,"context_line":"        ret_val \u003d api.neutron.subnetpool_list(self.request)"},{"line_number":1107,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"8b8059e0_1f3cca7e","line":1104,"range":{"start_line":1100,"start_character":0,"end_line":1104,"end_character":61},"updated":"2024-08-07 11:59:48.000000000","message":"Still wrong naming neutronclient instead of networkclient on a few places.","commit_id":"871a364a0d53498c4d258464ee599c4864269a9c"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"fb7c5fa0b0fbd7dc6f7e5fafc02dfa4d3d7ad590","unresolved":false,"context_lines":[{"line_number":1097,"context_line":"        neutronclient.delete_subnet.assert_called_once_with(subnet_id)"},{"line_number":1098,"context_line":""},{"line_number":1099,"context_line":"    @mock.patch.object(api.neutron, \u0027networkclient\u0027)"},{"line_number":1100,"context_line":"    def test_subnetpool_list(self, mock_neutronclient):"},{"line_number":1101,"context_line":"        subnetpools \u003d self.api_subnetpools_sdk"},{"line_number":1102,"context_line":""},{"line_number":1103,"context_line":"        neutronclient \u003d mock_neutronclient.return_value"},{"line_number":1104,"context_line":"        neutronclient.subnet_pools.return_value \u003d subnetpools"},{"line_number":1105,"context_line":""},{"line_number":1106,"context_line":"        ret_val \u003d api.neutron.subnetpool_list(self.request)"},{"line_number":1107,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"c3c81c7a_e4887fe0","line":1104,"range":{"start_line":1100,"start_character":0,"end_line":1104,"end_character":61},"in_reply_to":"8b8059e0_1f3cca7e","updated":"2024-08-08 14:26:40.000000000","message":"Done","commit_id":"871a364a0d53498c4d258464ee599c4864269a9c"},{"author":{"_account_id":35133,"name":"Jan Jasek","email":"jjasek@redhat.com","username":"janjasek"},"change_message_id":"748535b619935b2b7fb908e3d2a2aff6084e7833","unresolved":true,"context_lines":[{"line_number":1097,"context_line":"        neutronclient.delete_subnet.assert_called_once_with(subnet_id)"},{"line_number":1098,"context_line":""},{"line_number":1099,"context_line":"    @mock.patch.object(api.neutron, \u0027networkclient\u0027)"},{"line_number":1100,"context_line":"    def test_subnetpool_list(self, mock_neutronclient):"},{"line_number":1101,"context_line":"        subnetpools \u003d self.api_subnetpools_sdk"},{"line_number":1102,"context_line":""},{"line_number":1103,"context_line":"        network_client \u003d mock_neutronclient.return_value"}],"source_content_type":"text/x-python","patch_set":3,"id":"36f5fdd2_9b1ca02d","line":1100,"range":{"start_line":1100,"start_character":35,"end_line":1100,"end_character":53},"updated":"2024-08-08 15:18:16.000000000","message":"Still mock_neutronclient instead of mock_networkclient in parameters of functions and in definitions of network_client. (In all functions)","commit_id":"7d465ff74180dc26e0897427153b5b49d68badbe"},{"author":{"_account_id":35133,"name":"Jan Jasek","email":"jjasek@redhat.com","username":"janjasek"},"change_message_id":"7d206ac85f0b4a1b2de1f4ce907cebd8a9276b80","unresolved":false,"context_lines":[{"line_number":1097,"context_line":"        neutronclient.delete_subnet.assert_called_once_with(subnet_id)"},{"line_number":1098,"context_line":""},{"line_number":1099,"context_line":"    @mock.patch.object(api.neutron, \u0027networkclient\u0027)"},{"line_number":1100,"context_line":"    def test_subnetpool_list(self, mock_neutronclient):"},{"line_number":1101,"context_line":"        subnetpools \u003d self.api_subnetpools_sdk"},{"line_number":1102,"context_line":""},{"line_number":1103,"context_line":"        network_client \u003d mock_neutronclient.return_value"}],"source_content_type":"text/x-python","patch_set":3,"id":"a6abd948_99d0fc1e","line":1100,"range":{"start_line":1100,"start_character":35,"end_line":1100,"end_character":53},"in_reply_to":"36f5fdd2_9b1ca02d","updated":"2024-08-12 10:58:12.000000000","message":"Done","commit_id":"7d465ff74180dc26e0897427153b5b49d68badbe"},{"author":{"_account_id":35133,"name":"Jan Jasek","email":"jjasek@redhat.com","username":"janjasek"},"change_message_id":"748535b619935b2b7fb908e3d2a2aff6084e7833","unresolved":true,"context_lines":[{"line_number":1100,"context_line":"    def test_subnetpool_list(self, mock_neutronclient):"},{"line_number":1101,"context_line":"        subnetpools \u003d self.api_subnetpools_sdk"},{"line_number":1102,"context_line":""},{"line_number":1103,"context_line":"        network_client \u003d mock_neutronclient.return_value"},{"line_number":1104,"context_line":"        network_client.subnet_pools.return_value \u003d subnetpools"},{"line_number":1105,"context_line":""},{"line_number":1106,"context_line":"        ret_val \u003d api.neutron.subnetpool_list(self.request)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7b48a692_2ab9e569","line":1103,"range":{"start_line":1103,"start_character":25,"end_line":1103,"end_character":43},"updated":"2024-08-08 15:18:16.000000000","message":"ditto","commit_id":"7d465ff74180dc26e0897427153b5b49d68badbe"},{"author":{"_account_id":35133,"name":"Jan Jasek","email":"jjasek@redhat.com","username":"janjasek"},"change_message_id":"7d206ac85f0b4a1b2de1f4ce907cebd8a9276b80","unresolved":false,"context_lines":[{"line_number":1100,"context_line":"    def test_subnetpool_list(self, mock_neutronclient):"},{"line_number":1101,"context_line":"        subnetpools \u003d self.api_subnetpools_sdk"},{"line_number":1102,"context_line":""},{"line_number":1103,"context_line":"        network_client \u003d mock_neutronclient.return_value"},{"line_number":1104,"context_line":"        network_client.subnet_pools.return_value \u003d subnetpools"},{"line_number":1105,"context_line":""},{"line_number":1106,"context_line":"        ret_val \u003d api.neutron.subnetpool_list(self.request)"}],"source_content_type":"text/x-python","patch_set":3,"id":"dea6e225_24f31c79","line":1103,"range":{"start_line":1103,"start_character":25,"end_line":1103,"end_character":43},"in_reply_to":"7b48a692_2ab9e569","updated":"2024-08-12 10:58:12.000000000","message":"Done","commit_id":"7d465ff74180dc26e0897427153b5b49d68badbe"}]}
