)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"1156880d111287baec63087569ea9176a75c1a97","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"61f79092_7a11b62a","updated":"2026-06-04 10:34:18.000000000","message":"FYI, you can (and likely should) disable the strict checks for this module while you\u0027re importing it. We can add hints later then. Simply extend the `[[tool.mypy.overrides]]` section in `pyproject.toml` to add this new module.","commit_id":"8f9cebef62e1caa2ecf8583d85f7fb6071427724"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"049c414464110c68b202506fe20656753eca9d27","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"fe78edba_3aa093be","in_reply_to":"61f79092_7a11b62a","updated":"2026-06-04 10:36:12.000000000","message":"Done","commit_id":"8f9cebef62e1caa2ecf8583d85f7fb6071427724"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c8c217afc2d2c57f2bd917a484b90e063e19b20a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"12c91b64_fad26816","updated":"2026-06-04 10:58:49.000000000","message":"Couple of early comments","commit_id":"3dd8f1061516339141fdabef9352672d4b4b3fb5"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"78079f58ed5d09c01b5292055ed21308e4965786","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"effd3fe4_63e194a7","updated":"2026-06-04 10:41:33.000000000","message":"I have yet to review this in depth, but you need to ignore the old modules to ensure we don\u0027t randomly load them. You want to extend `API_EXTENSIONS` in `openstackclient/network/client.py` and `IGNORED_MODULES` in `openstackclient/shell.py`","commit_id":"3dd8f1061516339141fdabef9352672d4b4b3fb5"}],"openstackclient/network/v2/vpnaas/endpoint_group.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c8c217afc2d2c57f2bd917a484b90e063e19b20a","unresolved":true,"context_lines":[{"line_number":43,"context_line":"    \u0027project_id\u0027: \u0027Project\u0027,"},{"line_number":44,"context_line":"}"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"def _get_common_parser(parser):"},{"line_number":48,"context_line":"    parser.add_argument("},{"line_number":49,"context_line":"        \u0027--description\u0027,"},{"line_number":50,"context_line":"        metavar\u003d\u0027\u003cdescription\u003e\u0027,"},{"line_number":51,"context_line":"        help\u003d_(\u0027Description for the endpoint group\u0027),"},{"line_number":52,"context_line":"    )"},{"line_number":53,"context_line":"    return parser"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"def _get_common_attrs(client_manager, parsed_args, is_create\u003dTrue):"},{"line_number":57,"context_line":"    attrs \u003d {}"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fed59fe_2bc4e3db","line":54,"range":{"start_line":46,"start_character":1,"end_line":54,"end_character":1},"updated":"2026-06-04 10:58:49.000000000","message":"Can we just inline this?","commit_id":"3dd8f1061516339141fdabef9352672d4b4b3fb5"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"00649f4dcf22325ef71d08418c48af1762624b01","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    \u0027project_id\u0027: \u0027Project\u0027,"},{"line_number":44,"context_line":"}"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"def _get_common_parser(parser):"},{"line_number":48,"context_line":"    parser.add_argument("},{"line_number":49,"context_line":"        \u0027--description\u0027,"},{"line_number":50,"context_line":"        metavar\u003d\u0027\u003cdescription\u003e\u0027,"},{"line_number":51,"context_line":"        help\u003d_(\u0027Description for the endpoint group\u0027),"},{"line_number":52,"context_line":"    )"},{"line_number":53,"context_line":"    return parser"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"def _get_common_attrs(client_manager, parsed_args, is_create\u003dTrue):"},{"line_number":57,"context_line":"    attrs \u003d {}"}],"source_content_type":"text/x-python","patch_set":3,"id":"ddb18f40_0db794e5","line":54,"range":{"start_line":46,"start_character":1,"end_line":54,"end_character":1},"in_reply_to":"1fed59fe_2bc4e3db","updated":"2026-06-09 12:22:28.000000000","message":"I inlined all","commit_id":"3dd8f1061516339141fdabef9352672d4b4b3fb5"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c8c217afc2d2c57f2bd917a484b90e063e19b20a","unresolved":true,"context_lines":[{"line_number":57,"context_line":"    attrs \u003d {}"},{"line_number":58,"context_line":"    if is_create:"},{"line_number":59,"context_line":"        if parsed_args.project is not None:"},{"line_number":60,"context_line":"            attrs[\u0027tenant_id\u0027] \u003d identity_common.find_project("},{"line_number":61,"context_line":"                client_manager.identity,"},{"line_number":62,"context_line":"                parsed_args.project,"},{"line_number":63,"context_line":"                parsed_args.project_domain,"}],"source_content_type":"text/x-python","patch_set":3,"id":"9ebb2569_074d1e7c","line":60,"updated":"2026-06-04 10:58:49.000000000","message":"Should this be `project_id` now?","commit_id":"3dd8f1061516339141fdabef9352672d4b4b3fb5"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"a9caadfe2eb22d88f1dcb9aa07426a7a19993198","unresolved":true,"context_lines":[{"line_number":57,"context_line":"    attrs \u003d {}"},{"line_number":58,"context_line":"    if is_create:"},{"line_number":59,"context_line":"        if parsed_args.project is not None:"},{"line_number":60,"context_line":"            attrs[\u0027tenant_id\u0027] \u003d identity_common.find_project("},{"line_number":61,"context_line":"                client_manager.identity,"},{"line_number":62,"context_line":"                parsed_args.project,"},{"line_number":63,"context_line":"                parsed_args.project_domain,"}],"source_content_type":"text/x-python","patch_set":3,"id":"05a472d3_1937e9f4","line":60,"in_reply_to":"9ebb2569_074d1e7c","updated":"2026-06-09 12:41:42.000000000","message":"I changed all relevant tenant_id to project_id","commit_id":"3dd8f1061516339141fdabef9352672d4b4b3fb5"}],"openstackclient/tests/unit/network/v2/vpnaas/fakes.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c8c217afc2d2c57f2bd917a484b90e063e19b20a","unresolved":true,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"from openstackclient.tests.unit.network.v2 import fakes as test_fakes"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class TestNeutronVpnaasOSCV2(test_fakes.TestNetworkV2):"},{"line_number":32,"context_line":"    def setUp(self):"},{"line_number":33,"context_line":"        super().setUp()"},{"line_number":34,"context_line":"        self.namespace \u003d argparse.Namespace()"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"class FakeVPNaaS:"},{"line_number":38,"context_line":"    def create(self, attrs\u003d{}):"}],"source_content_type":"text/x-python","patch_set":3,"id":"8f452b73_ac8795d4","line":35,"range":{"start_line":30,"start_character":1,"end_line":35,"end_character":1},"updated":"2026-06-04 10:58:49.000000000","message":"You don\u0027t need `self.namespace`, so this class can go away","commit_id":"3dd8f1061516339141fdabef9352672d4b4b3fb5"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"00649f4dcf22325ef71d08418c48af1762624b01","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"from openstackclient.tests.unit.network.v2 import fakes as test_fakes"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class TestNeutronVpnaasOSCV2(test_fakes.TestNetworkV2):"},{"line_number":32,"context_line":"    def setUp(self):"},{"line_number":33,"context_line":"        super().setUp()"},{"line_number":34,"context_line":"        self.namespace \u003d argparse.Namespace()"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"class FakeVPNaaS:"},{"line_number":38,"context_line":"    def create(self, attrs\u003d{}):"}],"source_content_type":"text/x-python","patch_set":3,"id":"e318b442_b2fd835c","line":35,"range":{"start_line":30,"start_character":1,"end_line":35,"end_character":1},"in_reply_to":"8f452b73_ac8795d4","updated":"2026-06-09 12:22:28.000000000","message":"Done","commit_id":"3dd8f1061516339141fdabef9352672d4b4b3fb5"}],"openstackclient/tests/unit/network/v2/vpnaas/test_endpoint_group.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c8c217afc2d2c57f2bd917a484b90e063e19b20a","unresolved":true,"context_lines":[{"line_number":120,"context_line":"            _endpoint_group"},{"line_number":121,"context_line":"        )"},{"line_number":122,"context_line":"        self.mocked \u003d self.network_client.create_vpn_endpoint_group"},{"line_number":123,"context_line":"        self.cmd \u003d endpoint_group.CreateEndpointGroup(self.app, self.namespace)"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    def _update_expect_response(self, request, response):"},{"line_number":126,"context_line":"        \"\"\"Set expected request and response"}],"source_content_type":"text/x-python","patch_set":3,"id":"555e3f74_67ac2622","line":123,"updated":"2026-06-04 10:58:49.000000000","message":"```suggestion\n        self.cmd \u003d endpoint_group.CreateEndpointGroup(self.app, None)\n```\n\nSee I135c24d0f6450d5af4e1860218bf3a65c09e36cc for more info.","commit_id":"3dd8f1061516339141fdabef9352672d4b4b3fb5"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"00649f4dcf22325ef71d08418c48af1762624b01","unresolved":false,"context_lines":[{"line_number":120,"context_line":"            _endpoint_group"},{"line_number":121,"context_line":"        )"},{"line_number":122,"context_line":"        self.mocked \u003d self.network_client.create_vpn_endpoint_group"},{"line_number":123,"context_line":"        self.cmd \u003d endpoint_group.CreateEndpointGroup(self.app, self.namespace)"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    def _update_expect_response(self, request, response):"},{"line_number":126,"context_line":"        \"\"\"Set expected request and response"}],"source_content_type":"text/x-python","patch_set":3,"id":"1eed7264_4c438cfa","line":123,"in_reply_to":"555e3f74_67ac2622","updated":"2026-06-09 12:22:28.000000000","message":"Done","commit_id":"3dd8f1061516339141fdabef9352672d4b4b3fb5"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c8c217afc2d2c57f2bd917a484b90e063e19b20a","unresolved":true,"context_lines":[{"line_number":247,"context_line":"        parsed_args \u003d self.check_parser(self.cmd, arglist, verifylist)"},{"line_number":248,"context_line":"        resource_name \u003d self.res.replace(\u0027_\u0027, \u0027 \u0027)"},{"line_number":249,"context_line":"        msg \u003d f\"1 of 2 {resource_name}(s) failed to delete.\""},{"line_number":250,"context_line":"        with testtools.ExpectedException(exceptions.CommandError) as e:"},{"line_number":251,"context_line":"            self.cmd.take_action(parsed_args)"},{"line_number":252,"context_line":"            self.assertEqual(msg, str(e))"},{"line_number":253,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3dd36c94_7da5cd65","line":250,"updated":"2026-06-04 10:58:49.000000000","message":"Can you use self.assertRaises here instead?","commit_id":"3dd8f1061516339141fdabef9352672d4b4b3fb5"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"00649f4dcf22325ef71d08418c48af1762624b01","unresolved":false,"context_lines":[{"line_number":247,"context_line":"        parsed_args \u003d self.check_parser(self.cmd, arglist, verifylist)"},{"line_number":248,"context_line":"        resource_name \u003d self.res.replace(\u0027_\u0027, \u0027 \u0027)"},{"line_number":249,"context_line":"        msg \u003d f\"1 of 2 {resource_name}(s) failed to delete.\""},{"line_number":250,"context_line":"        with testtools.ExpectedException(exceptions.CommandError) as e:"},{"line_number":251,"context_line":"            self.cmd.take_action(parsed_args)"},{"line_number":252,"context_line":"            self.assertEqual(msg, str(e))"},{"line_number":253,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"e4428f47_06a81f33","line":250,"in_reply_to":"3dd36c94_7da5cd65","updated":"2026-06-09 12:22:28.000000000","message":"Done","commit_id":"3dd8f1061516339141fdabef9352672d4b4b3fb5"}],"openstackclient/tests/unit/network/v2/vpnaas/test_ikepolicy.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c8c217afc2d2c57f2bd917a484b90e063e19b20a","unresolved":true,"context_lines":[{"line_number":279,"context_line":"        parsed_args \u003d self.check_parser(self.cmd, arglist, verifylist)"},{"line_number":280,"context_line":"        resource_name \u003d self.res.replace(\u0027_\u0027, \u0027 \u0027)"},{"line_number":281,"context_line":"        msg \u003d f\"1 of 2 {resource_name}(s) failed to delete.\""},{"line_number":282,"context_line":"        with testtools.ExpectedException(exceptions.CommandError) as e:"},{"line_number":283,"context_line":"            self.cmd.take_action(parsed_args)"},{"line_number":284,"context_line":"            self.assertEqual(msg, str(e))"},{"line_number":285,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"f6b7da0a_e48f621e","line":282,"updated":"2026-06-04 10:58:49.000000000","message":"Can you use `self.assertRaises` here instead?","commit_id":"3dd8f1061516339141fdabef9352672d4b4b3fb5"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"00649f4dcf22325ef71d08418c48af1762624b01","unresolved":false,"context_lines":[{"line_number":279,"context_line":"        parsed_args \u003d self.check_parser(self.cmd, arglist, verifylist)"},{"line_number":280,"context_line":"        resource_name \u003d self.res.replace(\u0027_\u0027, \u0027 \u0027)"},{"line_number":281,"context_line":"        msg \u003d f\"1 of 2 {resource_name}(s) failed to delete.\""},{"line_number":282,"context_line":"        with testtools.ExpectedException(exceptions.CommandError) as e:"},{"line_number":283,"context_line":"            self.cmd.take_action(parsed_args)"},{"line_number":284,"context_line":"            self.assertEqual(msg, str(e))"},{"line_number":285,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"c1d8d84a_04a4ca06","line":282,"in_reply_to":"f6b7da0a_e48f621e","updated":"2026-06-09 12:22:28.000000000","message":"Done","commit_id":"3dd8f1061516339141fdabef9352672d4b4b3fb5"}],"openstackclient/tests/unit/network/v2/vpnaas/test_ipsec_site_connection.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c8c217afc2d2c57f2bd917a484b90e063e19b20a","unresolved":true,"context_lines":[{"line_number":372,"context_line":"        ]"},{"line_number":373,"context_line":"        parsed_args \u003d self.check_parser(self.cmd, arglist, verifylist)"},{"line_number":374,"context_line":"        self.res.replace(\u0027_\u0027, \u0027 \u0027)"},{"line_number":375,"context_line":"        with testtools.ExpectedException(exceptions.CommandError):"},{"line_number":376,"context_line":"            self.cmd.take_action(parsed_args)"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"00ea6e00_22fd0d93","line":375,"updated":"2026-06-04 10:58:49.000000000","message":"Can you use `self.assertRaises` here instead?","commit_id":"3dd8f1061516339141fdabef9352672d4b4b3fb5"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"00649f4dcf22325ef71d08418c48af1762624b01","unresolved":false,"context_lines":[{"line_number":372,"context_line":"        ]"},{"line_number":373,"context_line":"        parsed_args \u003d self.check_parser(self.cmd, arglist, verifylist)"},{"line_number":374,"context_line":"        self.res.replace(\u0027_\u0027, \u0027 \u0027)"},{"line_number":375,"context_line":"        with testtools.ExpectedException(exceptions.CommandError):"},{"line_number":376,"context_line":"            self.cmd.take_action(parsed_args)"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"a4a5ed08_9b84657a","line":375,"in_reply_to":"00ea6e00_22fd0d93","updated":"2026-06-09 12:22:28.000000000","message":"Done","commit_id":"3dd8f1061516339141fdabef9352672d4b4b3fb5"}],"pyproject.toml":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"78079f58ed5d09c01b5292055ed21308e4965786","unresolved":true,"context_lines":[{"line_number":585,"context_line":"firewall_group_rule_show \u003d \"openstackclient.network.v2.fwaas.rule:ShowFirewallRule\""},{"line_number":586,"context_line":"firewall_group_rule_unset \u003d \"openstackclient.network.v2.fwaas.rule:UnsetFirewallRule\""},{"line_number":587,"context_line":""},{"line_number":588,"context_line":"[project.entry-points.\"openstack.network.v2.vpnaas\"]"},{"line_number":589,"context_line":"vpn_endpoint_group_create \u003d \"openstackclient.network.v2.vpnaas.endpoint_group:CreateEndpointGroup\""},{"line_number":590,"context_line":"vpn_endpoint_group_delete \u003d \"openstackclient.network.v2.vpnaas.endpoint_group:DeleteEndpointGroup\""},{"line_number":591,"context_line":"vpn_endpoint_group_list \u003d \"openstackclient.network.v2.vpnaas.endpoint_group:ListEndpointGroup\""}],"source_content_type":"text/x-toml","patch_set":3,"id":"c76fd212_5a8585a7","line":588,"updated":"2026-06-04 10:41:33.000000000","message":"nit: can you place this after `openstack.network.v2.taas` (alphabetical ordering)","commit_id":"3dd8f1061516339141fdabef9352672d4b4b3fb5"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"00649f4dcf22325ef71d08418c48af1762624b01","unresolved":false,"context_lines":[{"line_number":585,"context_line":"firewall_group_rule_show \u003d \"openstackclient.network.v2.fwaas.rule:ShowFirewallRule\""},{"line_number":586,"context_line":"firewall_group_rule_unset \u003d \"openstackclient.network.v2.fwaas.rule:UnsetFirewallRule\""},{"line_number":587,"context_line":""},{"line_number":588,"context_line":"[project.entry-points.\"openstack.network.v2.vpnaas\"]"},{"line_number":589,"context_line":"vpn_endpoint_group_create \u003d \"openstackclient.network.v2.vpnaas.endpoint_group:CreateEndpointGroup\""},{"line_number":590,"context_line":"vpn_endpoint_group_delete \u003d \"openstackclient.network.v2.vpnaas.endpoint_group:DeleteEndpointGroup\""},{"line_number":591,"context_line":"vpn_endpoint_group_list \u003d \"openstackclient.network.v2.vpnaas.endpoint_group:ListEndpointGroup\""}],"source_content_type":"text/x-toml","patch_set":3,"id":"47a3e37a_37aeeb07","line":588,"in_reply_to":"c76fd212_5a8585a7","updated":"2026-06-09 12:22:28.000000000","message":"Done","commit_id":"3dd8f1061516339141fdabef9352672d4b4b3fb5"}]}
