)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":34380,"name":"Maximilian Stinsky","email":"maximilian@stinsky.com","username":"mstinsky"},"change_message_id":"f6fabd54e26e787733c44ba562780d3e8b72f762","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"942d7fbd_7fcb119b","updated":"2025-12-04 14:22:10.000000000","message":"@skaplons@redhat.com This is still relevant and ovn vpnaas is broken in master.\nI am waiting for feedback on https://review.opendev.org/c/openstack/neutron-vpnaas/+/963487 because that should fix the issue in the pipeline here.","commit_id":"5fbd2cad737cc7a6976937d308f209fd4b2a87bc"},{"author":{"_account_id":34380,"name":"Maximilian Stinsky","email":"maximilian@stinsky.com","username":"mstinsky"},"change_message_id":"58e4eafa09521a268ac417d0d1c9294e48e83124","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"6a72613a_e8b62f30","updated":"2025-10-09 10:15:45.000000000","message":"It seems that fixing the config update triggered the pipeline to run into another bug we already reported: https://bugs.launchpad.net/neutron/+bug/2127157","commit_id":"5fbd2cad737cc7a6976937d308f209fd4b2a87bc"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"0fd7f4f28bbf940f00ea15f4392f93d082040938","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"ad16c3f0_a7af861a","updated":"2025-10-13 07:09:27.000000000","message":"thanks, please check my comment and as I see the functional test failure is related also;\nhttps://cd98fa4224e2731036cb-60fa9bbec8248937c3af4b3a8047f40b.ssl.cf5.rackcdn.com/openstack/6e1ac4aaf12142c89f68a23368f11688/testr_results.html","commit_id":"5fbd2cad737cc7a6976937d308f209fd4b2a87bc"},{"author":{"_account_id":34380,"name":"Maximilian Stinsky","email":"maximilian@stinsky.com","username":"mstinsky"},"change_message_id":"031f0c96205860da11accbb6a4704ad2957c6da4","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"588f8a5c_9b84524f","in_reply_to":"6a72613a_e8b62f30","updated":"2025-10-09 10:24:55.000000000","message":"Pipeline also seem to run into a second bug: https://bugs.launchpad.net/neutron/+bug/2127169","commit_id":"5fbd2cad737cc7a6976937d308f209fd4b2a87bc"}],"neutron_vpnaas/services/vpn/device_drivers/ipsec.py":[{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"0fd7f4f28bbf940f00ea15f4392f93d082040938","unresolved":true,"context_lines":[{"line_number":1137,"context_line":"            if isinstance(ri, RouterInfo):"},{"line_number":1138,"context_line":"                router_id \u003d ri.router_id if ri.router_id else None"},{"line_number":1139,"context_line":"            elif isinstance(ri, dict):"},{"line_number":1140,"context_line":"                router_id \u003d ri.get(\"id\")"},{"line_number":1141,"context_line":"            else:"},{"line_number":1142,"context_line":"                router_id \u003d None"},{"line_number":1143,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"afdb86bb_bdc8d94b","line":1140,"updated":"2025-10-13 07:09:27.000000000","message":"Are you sure? in router_info the property is router_id as I see:\nhttps://opendev.org/openstack/neutron/src/branch/master/neutron/agent/l3/router_info.py#L57","commit_id":"5fbd2cad737cc7a6976937d308f209fd4b2a87bc"},{"author":{"_account_id":34380,"name":"Maximilian Stinsky","email":"maximilian@stinsky.com","username":"mstinsky"},"change_message_id":"0c9fa7cf20ec71e6c9bca2fa6dded211b0d97441","unresolved":true,"context_lines":[{"line_number":1137,"context_line":"            if isinstance(ri, RouterInfo):"},{"line_number":1138,"context_line":"                router_id \u003d ri.router_id if ri.router_id else None"},{"line_number":1139,"context_line":"            elif isinstance(ri, dict):"},{"line_number":1140,"context_line":"                router_id \u003d ri.get(\"id\")"},{"line_number":1141,"context_line":"            else:"},{"line_number":1142,"context_line":"                router_id \u003d None"},{"line_number":1143,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7577f6d5_08af099d","line":1140,"in_reply_to":"019d3ae2_d491c985","updated":"2025-10-15 16:11:49.000000000","message":"I dont think that the functional tests are failing because of this patch, but we were never getting to the exceptions in the failing tests because of the config update bug.\n\nWe already have 2 other patches open that seem to be exactly what the pipeline is failing on after we fix the config update bug:\n- https://review.opendev.org/c/openstack/neutron-vpnaas/+/963487\n- https://review.opendev.org/c/openstack/neutron-vpnaas/+/963493","commit_id":"5fbd2cad737cc7a6976937d308f209fd4b2a87bc"},{"author":{"_account_id":34380,"name":"Maximilian Stinsky","email":"maximilian@stinsky.com","username":"mstinsky"},"change_message_id":"acd86e4c3c84aad266486fb279e4d96f78ef17bc","unresolved":true,"context_lines":[{"line_number":1137,"context_line":"            if isinstance(ri, RouterInfo):"},{"line_number":1138,"context_line":"                router_id \u003d ri.router_id if ri.router_id else None"},{"line_number":1139,"context_line":"            elif isinstance(ri, dict):"},{"line_number":1140,"context_line":"                router_id \u003d ri.get(\"id\")"},{"line_number":1141,"context_line":"            else:"},{"line_number":1142,"context_line":"                router_id \u003d None"},{"line_number":1143,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"f4fcf611_d02a17ae","line":1140,"in_reply_to":"4d8a2359_f79970ee","updated":"2025-10-13 10:08:43.000000000","message":"Sure, this is how ri looks like in our ovn setup:\n`{\u0027id\u0027: \u0027286de0df-7127-4a89-b2f5-737e27760060\u0027}`","commit_id":"5fbd2cad737cc7a6976937d308f209fd4b2a87bc"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"9b5e4f9bbcae8cf6ec2b1f959116434234b65cc5","unresolved":true,"context_lines":[{"line_number":1137,"context_line":"            if isinstance(ri, RouterInfo):"},{"line_number":1138,"context_line":"                router_id \u003d ri.router_id if ri.router_id else None"},{"line_number":1139,"context_line":"            elif isinstance(ri, dict):"},{"line_number":1140,"context_line":"                router_id \u003d ri.get(\"id\")"},{"line_number":1141,"context_line":"            else:"},{"line_number":1142,"context_line":"                router_id \u003d None"},{"line_number":1143,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ffde1aa1_7b01e9e6","line":1140,"in_reply_to":"7577f6d5_08af099d","updated":"2025-10-22 10:07:04.000000000","message":"ok, so the 3 patches should be in a line, thanks","commit_id":"5fbd2cad737cc7a6976937d308f209fd4b2a87bc"},{"author":{"_account_id":34380,"name":"Maximilian Stinsky","email":"maximilian@stinsky.com","username":"mstinsky"},"change_message_id":"8bc90da73c2918cb44bef2620cf3d5b5d6f8d63e","unresolved":true,"context_lines":[{"line_number":1137,"context_line":"            if isinstance(ri, RouterInfo):"},{"line_number":1138,"context_line":"                router_id \u003d ri.router_id if ri.router_id else None"},{"line_number":1139,"context_line":"            elif isinstance(ri, dict):"},{"line_number":1140,"context_line":"                router_id \u003d ri.get(\"id\")"},{"line_number":1141,"context_line":"            else:"},{"line_number":1142,"context_line":"                router_id \u003d None"},{"line_number":1143,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9eaedc5a_82647289","line":1140,"in_reply_to":"afdb86bb_bdc8d94b","updated":"2025-10-13 07:58:48.000000000","message":"See [1], at least here we call the sync function where routers contains a dict where the router_id is in `id`.\n\nI assume this was introduced by mistake by [2]. The new router_information is using router_id, so I think the ri.get on the dict to router_id was added by mistake because router_id was used all the time. But in this case we need to check for id. \n\n[1] https://github.com/openstack/neutron-vpnaas/blob/stable/2025.1/neutron_vpnaas/services/vpn/device_drivers/ovn_ipsec.py#L347-L349\n[2] https://github.com/openstack/neutron-vpnaas/commit/7c2018b6fb8d859792fd10d5251abb33d1dfbbde","commit_id":"5fbd2cad737cc7a6976937d308f209fd4b2a87bc"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"9e571ec292a1734f7b0e5df395e084377e91bd04","unresolved":true,"context_lines":[{"line_number":1137,"context_line":"            if isinstance(ri, RouterInfo):"},{"line_number":1138,"context_line":"                router_id \u003d ri.router_id if ri.router_id else None"},{"line_number":1139,"context_line":"            elif isinstance(ri, dict):"},{"line_number":1140,"context_line":"                router_id \u003d ri.get(\"id\")"},{"line_number":1141,"context_line":"            else:"},{"line_number":1142,"context_line":"                router_id \u003d None"},{"line_number":1143,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"4d8a2359_f79970ee","line":1140,"in_reply_to":"afdb86bb_bdc8d94b","updated":"2025-10-13 08:33:18.000000000","message":"Where is `ri` coming? Because it seems there are two possible sources and formats: dict or `RouterInfo`.\nIn the error you are receiving in your deployment, can you print `ri` before the error?","commit_id":"5fbd2cad737cc7a6976937d308f209fd4b2a87bc"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"af407d536b4a4e056df203de7c2b17f3593c42f0","unresolved":true,"context_lines":[{"line_number":1137,"context_line":"            if isinstance(ri, RouterInfo):"},{"line_number":1138,"context_line":"                router_id \u003d ri.router_id if ri.router_id else None"},{"line_number":1139,"context_line":"            elif isinstance(ri, dict):"},{"line_number":1140,"context_line":"                router_id \u003d ri.get(\"id\")"},{"line_number":1141,"context_line":"            else:"},{"line_number":1142,"context_line":"                router_id \u003d None"},{"line_number":1143,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"019d3ae2_d491c985","line":1140,"in_reply_to":"f4fcf611_d02a17ae","updated":"2025-10-15 12:10:04.000000000","message":"ahh, ok ,so it is not RouterInfo object.\nPlease check the failing functional test, because it seems that the test\u0027s assumtion is bad in this case","commit_id":"5fbd2cad737cc7a6976937d308f209fd4b2a87bc"}]}
