)]}'
{".zuul.yaml":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"acf5ba2cd3e46403387b6029fd920a313285f756","unresolved":true,"context_lines":[{"line_number":52,"context_line":"      tox_envlist: dsvm-functional-sswan"},{"line_number":53,"context_line":"      tox_install_siblings: true"},{"line_number":54,"context_line":"    required-projects:"},{"line_number":55,"context_line":"      - openstack/neutron"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"- job:"},{"line_number":58,"context_line":"    name: neutron-vpnaas-rally"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"5a2baff6_ebab56a6","line":55,"updated":"2021-07-14 07:43:39.000000000","message":"These are no longer needed. We dropped tox_install_siblings\u003dfalse from neutron-functional job in commit dbfa1b5d9298dc146ff5eb6e560fea42600cf64f in the neutron repo.\n\nopenstack/neutron is specified in the neutron-functional job definition, so we don\u0027t need it here.","commit_id":"9ab94eab562a6bae42a7a52c846d53d77327d8dc"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"60ca007b30cd3529908f8bc2906390800a0ae8f7","unresolved":false,"context_lines":[{"line_number":52,"context_line":"      tox_envlist: dsvm-functional-sswan"},{"line_number":53,"context_line":"      tox_install_siblings: true"},{"line_number":54,"context_line":"    required-projects:"},{"line_number":55,"context_line":"      - openstack/neutron"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"- job:"},{"line_number":58,"context_line":"    name: neutron-vpnaas-rally"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"5fd85499_16de788a","line":55,"in_reply_to":"5a2baff6_ebab56a6","updated":"2021-07-28 09:43:08.000000000","message":"removed it","commit_id":"9ab94eab562a6bae42a7a52c846d53d77327d8dc"}],"/COMMIT_MSG":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"acf5ba2cd3e46403387b6029fd920a313285f756","unresolved":true,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2021-06-25 14:42:57 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"VPNaaS support for OVN"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Adds VPNaaS support for OVN."},{"line_number":10,"context_line":"Add a new stand-alone VPN agent to support OVN+VPN. Add OVN-specific"},{"line_number":11,"context_line":"service and device drivers that support this new VPN agent. This will"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"9ab00587_0ed08c41","line":8,"updated":"2021-07-14 07:43:39.000000000","message":"The detail description is covered by the spec, so I think the commit message can be brief.","commit_id":"9ab94eab562a6bae42a7a52c846d53d77327d8dc"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"60ca007b30cd3529908f8bc2906390800a0ae8f7","unresolved":true,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2021-06-25 14:42:57 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"VPNaaS support for OVN"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Adds VPNaaS support for OVN."},{"line_number":10,"context_line":"Add a new stand-alone VPN agent to support OVN+VPN. Add OVN-specific"},{"line_number":11,"context_line":"service and device drivers that support this new VPN agent. This will"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"e46e4a85_f01aac18","line":8,"in_reply_to":"9ab00587_0ed08c41","updated":"2021-07-28 09:43:08.000000000","message":"I shortened it","commit_id":"9ab94eab562a6bae42a7a52c846d53d77327d8dc"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"3feaf020939f1b0b3dae58ed12a96fd193143100","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2021-06-25 14:42:57 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"VPNaaS support for OVN"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Adds VPNaaS support for OVN."},{"line_number":10,"context_line":"Add a new stand-alone VPN agent to support OVN+VPN. Add OVN-specific"},{"line_number":11,"context_line":"service and device drivers that support this new VPN agent. This will"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"31f1665c_5835f5e2","line":8,"in_reply_to":"e46e4a85_f01aac18","updated":"2022-01-25 14:18:41.000000000","message":"(shortened the message in July, setting resolved now)","commit_id":"9ab94eab562a6bae42a7a52c846d53d77327d8dc"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":29268,"name":"Matthew Heler","email":"matthew.heler@hotmail.com","username":"mheler"},"change_message_id":"2da4d60c134e742c0005cf1b753519f020d07910","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"1e372f9a_434f9b62","updated":"2021-12-10 01:01:49.000000000","message":"Deployed on Xena, and it works flawlessly.. can we get this merged in soon?","commit_id":"4add66353ff7884d918eac2da784b6d4dc845722"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"c1d9c19bf37f55caf96ab337267361d2de62da14","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"c1c51391_5d272781","updated":"2021-12-28 12:30:33.000000000","message":"I hope I answered all questions. From my point of view the patch could get its final review.","commit_id":"4add66353ff7884d918eac2da784b6d4dc845722"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"fc8731f62211b65c477b2351ab0221328dce8f2a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"6665a05f_3315cd16","updated":"2021-10-12 15:47:12.000000000","message":"I\u0027d really love to see that got landed one day....","commit_id":"4add66353ff7884d918eac2da784b6d4dc845722"},{"author":{"_account_id":32755,"name":"Christian Rohmann","email":"christian.rohmann@inovex.de","username":"frittentheke"},"change_message_id":"8921ca31a1aa3f00597d819c43272ae229032643","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"abe1dee5_7094e042","updated":"2022-01-11 10:07:09.000000000","message":"This is great - thank you!\n\nMaybe bringing this to a broader attention at one of the Neutron meetings (https://wiki.openstack.org/wiki/Network/Meetings) makes sense? Would be sad to miss the deadline for Yoga.","commit_id":"4add66353ff7884d918eac2da784b6d4dc845722"},{"author":{"_account_id":34405,"name":"Boris Lukashev","email":"rageltman@sempervictus.com","username":"sempervictus"},"change_message_id":"8adf62ae4170106f119797e802259906f679798e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"9b345cee_ba33115d","updated":"2021-12-26 04:18:39.000000000","message":"This looks good on further review, could we please get this merged please? it\u0027s been here since before Xena and is sorely missing functionality from older OpenStack releases.","commit_id":"4add66353ff7884d918eac2da784b6d4dc845722"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"0a4410d6f63a8cd1927292a3aa31e143d1e1ac8d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"8cd271fe_30eba5de","updated":"2021-10-14 15:26:55.000000000","message":"recheck","commit_id":"4add66353ff7884d918eac2da784b6d4dc845722"},{"author":{"_account_id":29268,"name":"Matthew Heler","email":"matthew.heler@hotmail.com","username":"mheler"},"change_message_id":"bf761b52f1e65e15389877f6f8330e56fc0af45d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"392e0d9c_2c9c1ff4","updated":"2022-04-26 15:07:17.000000000","message":"recheck","commit_id":"462a7b8ccfe455029b36e0ae3bc0f66bfcc0c1f5"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"4f520f4feffe7e6f4d8428085ef2bae42eba2b73","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"492d27f3_8c562146","updated":"2022-04-29 13:48:27.000000000","message":"This patch is HUGE 😊\nI went through it briefly as I\u0027m not vpnaas expert. TBH I think that it would be much easier if You would split it into some smaller patches.\nAlso, IMO it deserves for release note so please add one.\n\nAnd last question: what about testing it? Do You have any scenario job which can show us that this actually works?","commit_id":"ee21d963bbad6f437a6034d83c7785e9898a7fab"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"500904fb723059363f23c07dcfe9faae6e840295","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":18,"id":"d3405e90_117f2bf4","in_reply_to":"492d27f3_8c562146","updated":"2022-04-29 15:21:29.000000000","message":"I don\u0027t think it\u0027s easy to split the patch into parts. Most parts are needed in combination.\nI fixed the style problems for now and will get back to the remaining issues (scenario job and release note entry) soon, after my vacation next week.","commit_id":"ee21d963bbad6f437a6034d83c7785e9898a7fab"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"ce989ff432d05ad719a3ac1383265b69d929041e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"81d24cb5_4ca45f95","in_reply_to":"d3405e90_117f2bf4","updated":"2022-06-21 14:28:07.000000000","message":"Added a release note entry and added a scenario job called neutron-tempest-plugin-vpnaas-ovn as well as an example devstack local.conf","commit_id":"ee21d963bbad6f437a6034d83c7785e9898a7fab"},{"author":{"_account_id":1004,"name":"Mohammed Naser","email":"mnaser@vexxhost.com","username":"mnaser"},"change_message_id":"abdc93e9bbf7ac9355b488ae232de63c088b1b00","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"201a0012_c50de364","updated":"2022-05-03 15:26:02.000000000","message":"This is awesome to have, but I have a hard time landing this without any sort of testing.\n\nWould it be possible to introduce any form of basic testing to this to make sure that it works?","commit_id":"9b2c0e232ffb118386354013727c957d4c77cc08"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"6ae7f3643093b76f5cf62bbd28bb3674a7593725","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":19,"id":"b731d327_176f3672","in_reply_to":"201a0012_c50de364","updated":"2022-06-03 16:32:11.000000000","message":"I am on it. I will add some code to the devstack plugin so that it will be possible to spawn a devstack with the new plugin variant. Then there will be a job like neutron-tempest-plugin-vpnaas with variables set differently (for ovn). I will continue on that after the OpenInfra summit.","commit_id":"9b2c0e232ffb118386354013727c957d4c77cc08"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"ce989ff432d05ad719a3ac1383265b69d929041e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"ec05562a_f6dfcccf","in_reply_to":"b731d327_176f3672","updated":"2022-06-21 14:28:07.000000000","message":"Added the scenario job for the ovn variant","commit_id":"9b2c0e232ffb118386354013727c957d4c77cc08"},{"author":{"_account_id":12860,"name":"Dongcan Ye","email":"yedongcan@yeah.net","username":"yedongcan"},"change_message_id":"1a6c4e274f2fd9f906e935145a8334185da72bba","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"90164474_2dae3445","updated":"2023-01-31 07:06:46.000000000","message":"Thanks for the commit, can you rebase to master branch, we would like to see this can be merged in this release.","commit_id":"b1c5095050d2baace99e576825ab32e3d1d5fbdc"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"f8c4346c781bdfd830ebeb94487bcf42bc8840c1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"50695c11_a8d92287","updated":"2023-02-27 16:58:19.000000000","message":"With the current environment (after the rebase) the state_path config for the vpn agent is empty, so the agent is broken and cannot write the ipsec.conf. That\u0027s why the scenario tests fail at the moment. I will try to fix that.","commit_id":"c6f58a315d27c0c0c747ccae54c8da6873a9e8de"},{"author":{"_account_id":1004,"name":"Mohammed Naser","email":"mnaser@vexxhost.com","username":"mnaser"},"change_message_id":"cd09f302d9162138ab6f3f345f614aef8bd18533","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"e21dc861_3de8aa92","updated":"2023-02-27 05:42:20.000000000","message":"it looks like all the scenario tests are being skipped?\n\nhttps://storage.bhs.cloud.ovh.net/v1/AUTH_dcaab5e32b234d56b626f72581e3644c/zuul_opendev_logs_e08/765353/23/check/neutron-tempest-plugin-vpnaas-ovn/e0812d3/testr_results.html","commit_id":"c6f58a315d27c0c0c747ccae54c8da6873a9e8de"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"101438130e033969da838fa67e53dbf9167dece1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"093e9484_b9ae0403","in_reply_to":"a4539ba6_2743fe9a","updated":"2023-02-28 14:43:53.000000000","message":"Fixed the devstack setup and now the scenario tests are successful.","commit_id":"c6f58a315d27c0c0c747ccae54c8da6873a9e8de"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"772487054668cde6fb214528a67cd55f786e1f76","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"a4539ba6_2743fe9a","in_reply_to":"e21dc861_3de8aa92","updated":"2023-02-27 14:25:58.000000000","message":"VPNaaSTestJSON was run successfully, Vpnaas6in4 and Vpnaas6in6 are skipped, but Vpnaas4in4 and Vpnaas4in6 were run, but failed. The VpnaasXinX tests were marked unstable (see bug https://launchpad.net/neutron/+bug/1882220) for the pre-existing non-ovn variant already. The ovn variant uses the same test code and if the test fails it appears as skipped. I will check if the failure is in the ovn variant or not.","commit_id":"c6f58a315d27c0c0c747ccae54c8da6873a9e8de"},{"author":{"_account_id":32755,"name":"Christian Rohmann","email":"christian.rohmann@inovex.de","username":"frittentheke"},"change_message_id":"eb4f8d2dcbcb38438583b1250ddc5d3866adeb07","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":26,"id":"a72fdde6_e6644ed4","updated":"2023-03-30 12:33:59.000000000","message":"Bodo thank you for working on this for so long. \nIs there a targeted OS release for this feature or is there still work to do?\nI believe at some point code needs to be used (in production) in order to iron out the remaining issues (if there are any). So may I kindly ask what your thoughts are?","commit_id":"e3295152da13ea3786b15ead609f5a58fe288eb4"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"805b9327256f3d08d3685e62baef3a353522496a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":26,"id":"23d49f07_b89674a1","updated":"2023-06-15 13:56:32.000000000","message":"Thanks for this, this will help operators a lot if they migrate to use OVN.\nPlease read the older comments from Slaweq also","commit_id":"e3295152da13ea3786b15ead609f5a58fe288eb4"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"f0509f87533169f7d04265a59c374359a36f97c1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":26,"id":"f72ae71c_7f469da4","in_reply_to":"a72fdde6_e6644ed4","updated":"2023-04-05 14:22:26.000000000","message":"At SysEleven we already use this in production on neutron yoga (without the most recent changes related to database sessions that came after yoga).","commit_id":"e3295152da13ea3786b15ead609f5a58fe288eb4"},{"author":{"_account_id":32755,"name":"Christian Rohmann","email":"christian.rohmann@inovex.de","username":"frittentheke"},"change_message_id":"49a0dd7ead522d7cc6fac37e17a472cb96eb2ccc","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":26,"id":"53ee1304_4bf3ab4c","in_reply_to":"f72ae71c_7f469da4","updated":"2023-04-24 09:46:58.000000000","message":"What is keeping this from getting merged then?","commit_id":"e3295152da13ea3786b15ead609f5a58fe288eb4"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"22ac3f587ae5ca44c83c8d292a4de9c1852b628b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":30,"id":"d84b56ab_cba143fb","updated":"2023-07-24 15:43:35.000000000","message":"I will look into the other remarks in the next few days","commit_id":"015ae54186839ca42b187e5e9e3936eda19e5506"},{"author":{"_account_id":36250,"name":"Przemysław Kuczyński","display_name":"przemekk","email":"przemyslaw.kuczynski@ochk.pl","username":"przemekk"},"change_message_id":"5b8d775feebc7043eef8c84fbbc5d8c6bbf5c0f5","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":32,"id":"50904aef_b16966cb","updated":"2023-08-02 11:46:06.000000000","message":"Hello,\nWhen VPNaaS support for OVN will be ready to use ? \nHow we could implement this using kolla-ansible or manually ?","commit_id":"1116f27cc96fd6df71675ac4a286fbf97401ffd8"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"c1920c8592cf0ff13d63c4f7d2c34cdd960b56ab","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":32,"id":"dc857234_a18bdfa3","in_reply_to":"50904aef_b16966cb","updated":"2023-09-11 08:33:01.000000000","message":"+1\nI would ask a patch on top of this with documentation, cfg recomendations and things which are necessary for ealry testers at least (perhaps some glimpse on what to check to see if it works, like ovn-nb cli or such if necessary)","commit_id":"1116f27cc96fd6df71675ac4a286fbf97401ffd8"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"2c5fe6560efe7eadcea72d19e03d5b7b4bb2b2c4","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":32,"id":"ce93f80a_9f14b1fb","in_reply_to":"dc857234_a18bdfa3","updated":"2023-09-11 16:16:12.000000000","message":"I will add some commit to describe the installation, how you can set it up manually. For devstack the necessary pieces are there to allow testing. But not for kolla-ansible, because we don\u0027t use it in our deployment.","commit_id":"1116f27cc96fd6df71675ac4a286fbf97401ffd8"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"fbdb67da1cc9d58edb832c4458db3825afd4372d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":33,"id":"52f95418_28deaee4","updated":"2023-09-18 12:28:19.000000000","message":"Added a separate commit with basic documentation","commit_id":"02d6ab958e0a8cd7e30745909f2985d533dee519"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"084459fbfd0ffb6934fb0b7e2ece801983640cf4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":34,"id":"67e4e460_a9c0c6fb","updated":"2023-11-09 13:53:27.000000000","message":"I can\u0027t start it in devstack, and it fails on db migration:\nsqlalchemy.exc.ProgrammingError: (pymysql.err.ProgrammingError) (1146, \"Table \u0027neutron.cisco_csr_identifier_map\u0027 doesn\u0027t exist\")\n\nI suppose it is related to https://review.opendev.org/c/openstack/neutron/+/897472","commit_id":"8815e6e3917e45fdfdc6077aed740da2e1c8d1f5"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"402784c9147c3109c9adcfe935d46169006fa5bb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":34,"id":"ca1569a6_8d28c710","updated":"2023-11-09 13:55:29.000000000","message":"I rebased https://review.opendev.org/c/openstack/neutron-tempest-plugin/+/889294 to have fresh result in upstream CI also","commit_id":"8815e6e3917e45fdfdc6077aed740da2e1c8d1f5"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"bb5b8aa702da0dbc0975ba893010f162692fdc37","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":34,"id":"23d52b7c_f5b44fe3","updated":"2023-11-08 10:50:50.000000000","message":"I\u0027m not VPNaaS expert but looking just at the python code it looks good for me. It also passed the gate and was already reviewed (and tested in production even AFAIK) by some operators so LGTM for me.","commit_id":"8815e6e3917e45fdfdc6077aed740da2e1c8d1f5"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"40b8465921c52c70dd1163e0fd5bcafb5ac065e5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":34,"id":"9a08f32c_0d026e30","updated":"2023-11-09 14:53:32.000000000","message":"The job passes, so perhaps this is an issue in my env (I tried it without vpnaas with just Neutron, and it worked)","commit_id":"8815e6e3917e45fdfdc6077aed740da2e1c8d1f5"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"0b3c0aba5133cf9c3ec03a0fdba7ec97d976bdf3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":34,"id":"2e7200e4_60b47e22","updated":"2023-10-27 06:47:13.000000000","message":"This looks quite fair to me and it\u0027s confirmed to work by multiple operators. This also passes tempest test, so might worth having a shot and do a follow-up work whenever needed.","commit_id":"8815e6e3917e45fdfdc6077aed740da2e1c8d1f5"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"4a31e13c6e59f4e1c51211d8b96a1e3b57e4f66d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":34,"id":"6fe70f91_51787bf3","in_reply_to":"67e4e460_a9c0c6fb","updated":"2023-11-09 16:05:37.000000000","message":"I rebased to incorporate the fix \"Make cisco_csr_identifier migration conditional\"","commit_id":"8815e6e3917e45fdfdc6077aed740da2e1c8d1f5"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"e4a4a30d97de69e6cdfeb4f38f56eb98f7a92ac9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":35,"id":"0e63baa4_38f3e517","updated":"2023-11-15 22:45:19.000000000","message":"Like Slawek I am not a VPN expert, but code looks good just had a few comments (and nits)","commit_id":"4f998326d28bb128df56fa5b874d5b336445f06f"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"db0a4a4caacbafe371e04bd2b8150354f4c7810e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":36,"id":"e2318f87_2e39ab95","updated":"2023-11-16 20:54:06.000000000","message":"Thanks for pushing an update so quick Bodo!","commit_id":"256464aea691f8b4957ba668a117963353f34e4c"}],"devstack/plugin.sh":[{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"f9779462933d3b91427b5ab9cc7d3446e8e2f3f9","unresolved":true,"context_lines":[{"line_number":10,"context_line":"NEUTRON_L3_CONF\u003d${NEUTRON_L3_CONF:-$Q_L3_CONF_FILE}"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"function is_ovn_enabled {"},{"line_number":13,"context_line":"    [[ $Q_AGENT \u003d\u003d \"ovn\" ]] \u0026\u0026 return 0"},{"line_number":14,"context_line":"    return 1"},{"line_number":15,"context_line":"}"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-sh","patch_set":36,"id":"90930e5d_a43991b8","line":13,"range":{"start_line":13,"start_character":38,"end_line":13,"end_character":39},"updated":"2023-12-01 15:14:58.000000000","message":"nit: return True/False is more pythonic :-)","commit_id":"256464aea691f8b4957ba668a117963353f34e4c"}],"devstack/settings":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"e4a4a30d97de69e6cdfeb4f38f56eb98f7a92ac9","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# Settings for the VPNaaS devstack plugin"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Plugin"},{"line_number":4,"context_line":"if is_service_enabled ovn-controller; then"},{"line_number":5,"context_line":"    VPN_PLUGIN\u003d${VPN_PLUGIN:-\"ovn-vpnaas\"}"},{"line_number":6,"context_line":"else"},{"line_number":7,"context_line":"    VPN_PLUGIN\u003d${VPN_PLUGIN:-\"vpnaas\"}"}],"source_content_type":"application/octet-stream","patch_set":35,"id":"e6755569_75c459eb","line":4,"updated":"2023-11-15 22:45:19.000000000","message":"Should this trigger on q-ovn-vpn-agent? Same below","commit_id":"4f998326d28bb128df56fa5b874d5b336445f06f"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"ec16583152a4e21120b965097c155cc85bef4c25","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Settings for the VPNaaS devstack plugin"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Plugin"},{"line_number":4,"context_line":"if is_service_enabled ovn-controller; then"},{"line_number":5,"context_line":"    VPN_PLUGIN\u003d${VPN_PLUGIN:-\"ovn-vpnaas\"}"},{"line_number":6,"context_line":"else"},{"line_number":7,"context_line":"    VPN_PLUGIN\u003d${VPN_PLUGIN:-\"vpnaas\"}"}],"source_content_type":"application/octet-stream","patch_set":35,"id":"440acca7_18e90c75","line":4,"in_reply_to":"e6755569_75c459eb","updated":"2023-11-16 20:16:37.000000000","message":"changed it to check for Q_AGENT\u003dovn","commit_id":"4f998326d28bb128df56fa5b874d5b336445f06f"}],"etc/neutron/rootwrap.d/vpnaas.filters":[{"author":{"_account_id":34405,"name":"Boris Lukashev","email":"rageltman@sempervictus.com","username":"sempervictus"},"change_message_id":"b8dad9b8b380f4f7d78a1c0d6233acd9a3dd7d23","unresolved":true,"context_lines":[{"line_number":12,"context_line":"ip: IpFilter, ip, root"},{"line_number":13,"context_line":"ip_exec: IpNetnsExecFilter, ip, root"},{"line_number":14,"context_line":"ipsec: CommandFilter, ipsec, root"},{"line_number":15,"context_line":"sysctl: CommandFilter, sysctl, root"},{"line_number":16,"context_line":"rm: RegExpFilter, rm, root, rm, -rf, (.*/strongswan.d|.*/ipsec/[0-9a-z-]+)"},{"line_number":17,"context_line":"rm_file: RegExpFilter, rm, root, rm, -f, .*/ipsec.secrets"},{"line_number":18,"context_line":"strongswan: CommandFilter, strongswan, root"}],"source_content_type":"application/octet-stream","patch_set":16,"id":"0004c76a_20f26e9f","line":15,"updated":"2022-02-03 02:27:11.000000000","message":"Does this filter permit changing all sysctls?","commit_id":"2fc0d9f0ba9cde7b6c1f1b3f497a41f98a033069"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"f71a497023bd348dc78af89f5f4d643a43828ed3","unresolved":false,"context_lines":[{"line_number":12,"context_line":"ip: IpFilter, ip, root"},{"line_number":13,"context_line":"ip_exec: IpNetnsExecFilter, ip, root"},{"line_number":14,"context_line":"ipsec: CommandFilter, ipsec, root"},{"line_number":15,"context_line":"sysctl: CommandFilter, sysctl, root"},{"line_number":16,"context_line":"rm: RegExpFilter, rm, root, rm, -rf, (.*/strongswan.d|.*/ipsec/[0-9a-z-]+)"},{"line_number":17,"context_line":"rm_file: RegExpFilter, rm, root, rm, -f, .*/ipsec.secrets"},{"line_number":18,"context_line":"strongswan: CommandFilter, strongswan, root"}],"source_content_type":"application/octet-stream","patch_set":16,"id":"296555f2_459f56d0","line":15,"in_reply_to":"0004c76a_20f26e9f","updated":"2022-02-03 14:19:40.000000000","message":"It does (did). I changed it to specific rules allowing only the 2 sysctls actually executed.","commit_id":"2fc0d9f0ba9cde7b6c1f1b3f497a41f98a033069"}],"neutron_vpnaas/agent/ovn/vpn/agent.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"acf5ba2cd3e46403387b6029fd920a313285f756","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# Copyright 2017 Red Hat, Inc."},{"line_number":2,"context_line":"# Copyright 2021 SysEleven GmbH"},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"}],"source_content_type":"text/x-python","patch_set":11,"id":"f5e7a84f_7c69c2ef","line":1,"range":{"start_line":1,"start_character":2,"end_line":1,"end_character":30},"updated":"2021-07-14 07:43:39.000000000","message":"Do we need this? It is a new file so I wonder why copyright in 2017 is required here.","commit_id":"9ab94eab562a6bae42a7a52c846d53d77327d8dc"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"c1d9c19bf37f55caf96ab337267361d2de62da14","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2017 Red Hat, Inc."},{"line_number":2,"context_line":"# Copyright 2021 SysEleven GmbH"},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"}],"source_content_type":"text/x-python","patch_set":11,"id":"d1244447_b7710441","line":1,"range":{"start_line":1,"start_character":2,"end_line":1,"end_character":30},"in_reply_to":"f5e7a84f_7c69c2ef","updated":"2021-12-28 12:30:33.000000000","message":"It\u0027s based on another file from neutron metadata agent, which has the 2017 Red Hat Copyright notice","commit_id":"9ab94eab562a6bae42a7a52c846d53d77327d8dc"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"acf5ba2cd3e46403387b6029fd920a313285f756","unresolved":true,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from ovsdbapp.backend.ovs_idl import event as row_event"},{"line_number":25,"context_line":"from ovsdbapp.backend.ovs_idl import vlog"},{"line_number":26,"context_line":"import tenacity"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"from neutron_vpnaas.agent.ovn.vpn import ovsdb"},{"line_number":29,"context_line":"from neutron_vpnaas.services.vpn.common import constants"}],"source_content_type":"text/x-python","patch_set":11,"id":"593fd35b_7ca8bd39","line":26,"updated":"2021-07-14 07:43:39.000000000","message":"nit: In our usual convention, we don\u0027t put blank lines inside an import group (L.18-26 in this case). Blank lines at L.20 and L.23 are unnecessary.","commit_id":"9ab94eab562a6bae42a7a52c846d53d77327d8dc"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"60ca007b30cd3529908f8bc2906390800a0ae8f7","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from ovsdbapp.backend.ovs_idl import event as row_event"},{"line_number":25,"context_line":"from ovsdbapp.backend.ovs_idl import vlog"},{"line_number":26,"context_line":"import tenacity"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"from neutron_vpnaas.agent.ovn.vpn import ovsdb"},{"line_number":29,"context_line":"from neutron_vpnaas.services.vpn.common import constants"}],"source_content_type":"text/x-python","patch_set":11,"id":"d3d20f44_1d1f4d88","line":26,"in_reply_to":"593fd35b_7ca8bd39","updated":"2021-07-28 09:43:08.000000000","message":"fixed it","commit_id":"9ab94eab562a6bae42a7a52c846d53d77327d8dc"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"acf5ba2cd3e46403387b6029fd920a313285f756","unresolved":true,"context_lines":[{"line_number":46,"context_line":"        self.agent \u003d vpn_agent"},{"line_number":47,"context_line":"        self.first_time \u003d True"},{"line_number":48,"context_line":"        events \u003d (self.ROW_CREATE,)"},{"line_number":49,"context_line":"        super(ChassisCreateEventBase, self).__init__("},{"line_number":50,"context_line":"            events, self.table, ((\u0027name\u0027, \u0027\u003d\u0027, self.agent.chassis),))"},{"line_number":51,"context_line":"        self.event_name \u003d self.__class__.__name__"},{"line_number":52,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"65756eb0_6babe858","line":49,"range":{"start_line":49,"start_character":8,"end_line":49,"end_character":43},"updated":"2021-07-14 07:43:39.000000000","message":"In python3 we don\u0027t need to specify the class name here.\nConsider:\n\n  super().__init__(....)\n\nThis comment applies to all appearances of super() including other files.","commit_id":"9ab94eab562a6bae42a7a52c846d53d77327d8dc"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"60ca007b30cd3529908f8bc2906390800a0ae8f7","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        self.agent \u003d vpn_agent"},{"line_number":47,"context_line":"        self.first_time \u003d True"},{"line_number":48,"context_line":"        events \u003d (self.ROW_CREATE,)"},{"line_number":49,"context_line":"        super(ChassisCreateEventBase, self).__init__("},{"line_number":50,"context_line":"            events, self.table, ((\u0027name\u0027, \u0027\u003d\u0027, self.agent.chassis),))"},{"line_number":51,"context_line":"        self.event_name \u003d self.__class__.__name__"},{"line_number":52,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"487adc7a_658bf259","line":49,"range":{"start_line":49,"start_character":8,"end_line":49,"end_character":43},"in_reply_to":"65756eb0_6babe858","updated":"2021-07-28 09:43:08.000000000","message":"fixed it","commit_id":"9ab94eab562a6bae42a7a52c846d53d77327d8dc"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"acf5ba2cd3e46403387b6029fd920a313285f756","unresolved":true,"context_lines":[{"line_number":77,"context_line":"        self.agent \u003d vpn_agent"},{"line_number":78,"context_line":"        table \u003d \u0027SB_Global\u0027"},{"line_number":79,"context_line":"        events \u003d (self.ROW_UPDATE,)"},{"line_number":80,"context_line":"        super(SbGlobalUpdateEvent, self).__init__(events, table, None)"},{"line_number":81,"context_line":"        self.event_name \u003d self.__class__.__name__"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    def run(self, event, row, old):"}],"source_content_type":"text/x-python","patch_set":11,"id":"7ede464f_2f6ec401","line":80,"range":{"start_line":80,"start_character":8,"end_line":80,"end_character":40},"updated":"2021-07-14 07:43:39.000000000","message":"ditto\n\n super()","commit_id":"9ab94eab562a6bae42a7a52c846d53d77327d8dc"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"60ca007b30cd3529908f8bc2906390800a0ae8f7","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        self.agent \u003d vpn_agent"},{"line_number":78,"context_line":"        table \u003d \u0027SB_Global\u0027"},{"line_number":79,"context_line":"        events \u003d (self.ROW_UPDATE,)"},{"line_number":80,"context_line":"        super(SbGlobalUpdateEvent, self).__init__(events, table, None)"},{"line_number":81,"context_line":"        self.event_name \u003d self.__class__.__name__"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    def run(self, event, row, old):"}],"source_content_type":"text/x-python","patch_set":11,"id":"c1fbd038_3cb4c53b","line":80,"range":{"start_line":80,"start_character":8,"end_line":80,"end_character":40},"in_reply_to":"7ede464f_2f6ec401","updated":"2021-07-28 09:43:08.000000000","message":"fixed it","commit_id":"9ab94eab562a6bae42a7a52c846d53d77327d8dc"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"acf5ba2cd3e46403387b6029fd920a313285f756","unresolved":true,"context_lines":[{"line_number":84,"context_line":"        table \u003d (\u0027Chassis_Private\u0027 if self.agent.has_chassis_private"},{"line_number":85,"context_line":"                 else \u0027Chassis\u0027)"},{"line_number":86,"context_line":"        self.agent.sb_idl.db_set("},{"line_number":87,"context_line":"            table, self.agent.chassis, (\u0027external_ids\u0027, {"},{"line_number":88,"context_line":"                constants.OVN_AGENT_VPN_SB_CFG_KEY:"},{"line_number":89,"context_line":"                    str(row.nb_cfg)})).execute()"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"class OvnVpnAgent(service.Service):"}],"source_content_type":"text/x-python","patch_set":11,"id":"119ba16f_a6ff38b9","line":89,"range":{"start_line":87,"start_character":39,"end_line":89,"end_character":37},"updated":"2021-07-14 07:43:39.000000000","message":"nit: From the POV of readability, it looks better to assign it to a variable as you do for \u0027table\u0027 (and L.152).","commit_id":"9ab94eab562a6bae42a7a52c846d53d77327d8dc"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"60ca007b30cd3529908f8bc2906390800a0ae8f7","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        table \u003d (\u0027Chassis_Private\u0027 if self.agent.has_chassis_private"},{"line_number":85,"context_line":"                 else \u0027Chassis\u0027)"},{"line_number":86,"context_line":"        self.agent.sb_idl.db_set("},{"line_number":87,"context_line":"            table, self.agent.chassis, (\u0027external_ids\u0027, {"},{"line_number":88,"context_line":"                constants.OVN_AGENT_VPN_SB_CFG_KEY:"},{"line_number":89,"context_line":"                    str(row.nb_cfg)})).execute()"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"class OvnVpnAgent(service.Service):"}],"source_content_type":"text/x-python","patch_set":11,"id":"05e6932c_857406ef","line":89,"range":{"start_line":87,"start_character":39,"end_line":89,"end_character":37},"in_reply_to":"119ba16f_a6ff38b9","updated":"2021-07-28 09:43:08.000000000","message":"changed it","commit_id":"9ab94eab562a6bae42a7a52c846d53d77327d8dc"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"acf5ba2cd3e46403387b6029fd920a313285f756","unresolved":true,"context_lines":[{"line_number":123,"context_line":"                chassis\u003dself.chassis, tables\u003dtables + (\u0027Chassis_Private\u0027, ),"},{"line_number":124,"context_line":"                events\u003devents + (ChassisPrivateCreateEvent(self), )).start()"},{"line_number":125,"context_line":"            self.has_chassis_private \u003d True"},{"line_number":126,"context_line":"        except AssertionError:"},{"line_number":127,"context_line":"            self.sb_idl \u003d ovsdb.VPNAgentOvnSbIdl("},{"line_number":128,"context_line":"                chassis\u003dself.chassis, tables\u003dtables,"},{"line_number":129,"context_line":"                events\u003devents + (ChassisCreateEvent(self), )).start()"}],"source_content_type":"text/x-python","patch_set":11,"id":"fd3f80cc_1f8b5df4","line":126,"range":{"start_line":126,"start_character":15,"end_line":126,"end_character":29},"updated":"2021-07-14 07:43:39.000000000","message":"question: According to the comment at L.116-119, this except clause is a fallback to the normal chassis table. On the other hand, AssertionError sounds broader exception. Is it the right exception to catch?","commit_id":"9ab94eab562a6bae42a7a52c846d53d77327d8dc"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"b1952b6f7184dc35ff4e4aac3e32b76d619e7f5f","unresolved":false,"context_lines":[{"line_number":123,"context_line":"                chassis\u003dself.chassis, tables\u003dtables + (\u0027Chassis_Private\u0027, ),"},{"line_number":124,"context_line":"                events\u003devents + (ChassisPrivateCreateEvent(self), )).start()"},{"line_number":125,"context_line":"            self.has_chassis_private \u003d True"},{"line_number":126,"context_line":"        except AssertionError:"},{"line_number":127,"context_line":"            self.sb_idl \u003d ovsdb.VPNAgentOvnSbIdl("},{"line_number":128,"context_line":"                chassis\u003dself.chassis, tables\u003dtables,"},{"line_number":129,"context_line":"                events\u003devents + (ChassisCreateEvent(self), )).start()"}],"source_content_type":"text/x-python","patch_set":11,"id":"95604c30_10c64e59","line":126,"range":{"start_line":126,"start_character":15,"end_line":126,"end_character":29},"in_reply_to":"bfc7a676_4de348dc","updated":"2021-08-17 15:37:56.000000000","message":"(marked resolved)","commit_id":"9ab94eab562a6bae42a7a52c846d53d77327d8dc"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"df10905a4c34e48523c17c27f63f0da64fc48bc4","unresolved":true,"context_lines":[{"line_number":123,"context_line":"                chassis\u003dself.chassis, tables\u003dtables + (\u0027Chassis_Private\u0027, ),"},{"line_number":124,"context_line":"                events\u003devents + (ChassisPrivateCreateEvent(self), )).start()"},{"line_number":125,"context_line":"            self.has_chassis_private \u003d True"},{"line_number":126,"context_line":"        except AssertionError:"},{"line_number":127,"context_line":"            self.sb_idl \u003d ovsdb.VPNAgentOvnSbIdl("},{"line_number":128,"context_line":"                chassis\u003dself.chassis, tables\u003dtables,"},{"line_number":129,"context_line":"                events\u003devents + (ChassisCreateEvent(self), )).start()"}],"source_content_type":"text/x-python","patch_set":11,"id":"bfc7a676_4de348dc","line":126,"range":{"start_line":126,"start_character":15,"end_line":126,"end_character":29},"in_reply_to":"fd3f80cc_1f8b5df4","updated":"2021-07-14 15:17:17.000000000","message":"If the table doesn\u0027t exist an \"assert table_name in schema.tables\" will fail in ovs.db.idl.SchemaHelper, so AssertionError should be right.","commit_id":"9ab94eab562a6bae42a7a52c846d53d77327d8dc"},{"author":{"_account_id":34799,"name":"Justin Lamp","email":"justin.lamp96@gmail.com","username":"justinlamp","status":"Netways GmbH"},"change_message_id":"15c863a03a4bdcaa5617e3556c4ec5726f0bcfaf","unresolved":true,"context_lines":[{"line_number":144,"context_line":"        # NOTE(lucasagomes): db_add() will not overwrite the UUID if"},{"line_number":145,"context_line":"        # it\u0027s already set."},{"line_number":146,"context_line":"        table \u003d (\u0027Chassis_Private\u0027 if self.has_chassis_private else \u0027Chassis\u0027)"},{"line_number":147,"context_line":"        chassis_id \u003d uuid.UUID(self._get_own_chassis_name())"},{"line_number":148,"context_line":"        # Generate unique, but consistent vpn agent id for chassis name"},{"line_number":149,"context_line":"        agent_id \u003d uuid.uuid5(chassis_id, \u0027vpn_agent\u0027)"},{"line_number":150,"context_line":"        ext_ids \u003d {constants.OVN_AGENT_VPN_ID_KEY: str(agent_id)}"}],"source_content_type":"text/x-python","patch_set":17,"id":"c3aa51dc_af7ead5d","line":147,"updated":"2022-04-29 06:00:40.000000000","message":"In our case the chassis_name is the hostname of our nodes, which in turn won\u0027t be able to generate a UUID from it. Wouldn\u0027t it be better to generate the UUID like this:\n\nchassis_id \u003d uuid.uuid5(uuid.NAMESPACE_DNS,self._get_own_chassis_name())","commit_id":"462a7b8ccfe455029b36e0ae3bc0f66bfcc0c1f5"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"a21ead82c7f6e9b144e3fd07d11a5f21ab0734b0","unresolved":false,"context_lines":[{"line_number":144,"context_line":"        # NOTE(lucasagomes): db_add() will not overwrite the UUID if"},{"line_number":145,"context_line":"        # it\u0027s already set."},{"line_number":146,"context_line":"        table \u003d (\u0027Chassis_Private\u0027 if self.has_chassis_private else \u0027Chassis\u0027)"},{"line_number":147,"context_line":"        chassis_id \u003d uuid.UUID(self._get_own_chassis_name())"},{"line_number":148,"context_line":"        # Generate unique, but consistent vpn agent id for chassis name"},{"line_number":149,"context_line":"        agent_id \u003d uuid.uuid5(chassis_id, \u0027vpn_agent\u0027)"},{"line_number":150,"context_line":"        ext_ids \u003d {constants.OVN_AGENT_VPN_ID_KEY: str(agent_id)}"}],"source_content_type":"text/x-python","patch_set":17,"id":"2ac844af_23783fff","line":147,"in_reply_to":"c3aa51dc_af7ead5d","updated":"2022-04-29 14:14:29.000000000","message":"I adapted the code in a similar way as Rodolfo did for the metadata agent","commit_id":"462a7b8ccfe455029b36e0ae3bc0f66bfcc0c1f5"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"d61eaeef343eb017477bae1e4ab8f5d1524bd276","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":26,"id":"046f96c5_ac334728","updated":"2023-06-15 13:54:49.000000000","message":"I miss here the __init__.py files","commit_id":"e3295152da13ea3786b15ead609f5a58fe288eb4"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"7cf60ee8aa2b8112fde39d2f53684135b2c50f34","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":26,"id":"a5e3b155_05ac9b1b","in_reply_to":"046f96c5_ac334728","updated":"2023-07-24 11:09:41.000000000","message":"+1. It\u0027s missing in whole tree starting from neutron_vpnaas/agent/ directory","commit_id":"e3295152da13ea3786b15ead609f5a58fe288eb4"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"22ac3f587ae5ca44c83c8d292a4de9c1852b628b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":26,"id":"5e5428b4_7d5beae6","in_reply_to":"a5e3b155_05ac9b1b","updated":"2023-07-24 15:43:35.000000000","message":"added them","commit_id":"e3295152da13ea3786b15ead609f5a58fe288eb4"}],"neutron_vpnaas/agent/ovn/vpn/ovsdb.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"4f520f4feffe7e6f4d8428085ef2bae42eba2b73","unresolved":true,"context_lines":[{"line_number":21,"context_line":"from ovsdbapp.backend.ovs_idl import connection"},{"line_number":22,"context_line":"from ovsdbapp.backend.ovs_idl import idlutils"},{"line_number":23,"context_line":"from ovsdbapp.schema.open_vswitch import impl_idl as idl_ovs"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"import tenacity"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":17,"id":"52c33e10_c096659a","line":24,"updated":"2022-04-29 13:48:27.000000000","message":"nit: this empty line isn\u0027t needed","commit_id":"462a7b8ccfe455029b36e0ae3bc0f66bfcc0c1f5"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"500904fb723059363f23c07dcfe9faae6e840295","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from ovsdbapp.backend.ovs_idl import connection"},{"line_number":22,"context_line":"from ovsdbapp.backend.ovs_idl import idlutils"},{"line_number":23,"context_line":"from ovsdbapp.schema.open_vswitch import impl_idl as idl_ovs"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"import tenacity"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":17,"id":"adb1a20c_dd734cf3","line":24,"in_reply_to":"52c33e10_c096659a","updated":"2022-04-29 15:21:29.000000000","message":"fixed","commit_id":"462a7b8ccfe455029b36e0ae3bc0f66bfcc0c1f5"}],"neutron_vpnaas/cmd/eventlet/standalone_agent.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"acf5ba2cd3e46403387b6029fd920a313285f756","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":11,"id":"eb3ec312_3bc85a02","updated":"2021-07-14 07:43:39.000000000","message":"This file looks unnecessary.\nI don\u0027t see the corresponding entry in setup.cfg.\nThere is no file named as neutron_vpnaas/services/vpn/standalone_agent.py.","commit_id":"9ab94eab562a6bae42a7a52c846d53d77327d8dc"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"60ca007b30cd3529908f8bc2906390800a0ae8f7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"96eb4d68_9e90b650","in_reply_to":"188b2bfe_9b17cd90","updated":"2021-07-28 09:43:08.000000000","message":"deleted it","commit_id":"9ab94eab562a6bae42a7a52c846d53d77327d8dc"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"df10905a4c34e48523c17c27f63f0da64fc48bc4","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":11,"id":"188b2bfe_9b17cd90","in_reply_to":"eb3ec312_3bc85a02","updated":"2021-07-14 15:17:17.000000000","message":"Right, that file is a left-over. I will delete it.","commit_id":"9ab94eab562a6bae42a7a52c846d53d77327d8dc"}],"neutron_vpnaas/db/migration/alembic_migrations/versions/xena/expand/22e0145ac80b_add_vpn_gateway_port.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"acf5ba2cd3e46403387b6029fd920a313285f756","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# Copyright 2016 MingShuang Xian/IBM"},{"line_number":2,"context_line":"# Copyright 2020 SysEleven GmbH"},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":11,"id":"2cc9cb48_25cb0baa","line":1,"range":{"start_line":1,"start_character":2,"end_line":1,"end_character":36},"updated":"2021-07-14 07:43:39.000000000","message":"Same question as for neutron_vpnaas/agent/ovn/vpn/agent.py","commit_id":"9ab94eab562a6bae42a7a52c846d53d77327d8dc"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"c1d9c19bf37f55caf96ab337267361d2de62da14","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2016 MingShuang Xian/IBM"},{"line_number":2,"context_line":"# Copyright 2020 SysEleven GmbH"},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":11,"id":"d96be606_ece5be23","line":1,"range":{"start_line":1,"start_character":2,"end_line":1,"end_character":36},"in_reply_to":"2cc9cb48_25cb0baa","updated":"2021-12-28 12:30:33.000000000","message":"It\u0027s based on an abandoned patch of MingShuang Xian/IBM from 2016, so I kept its Copyright line","commit_id":"9ab94eab562a6bae42a7a52c846d53d77327d8dc"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"acf5ba2cd3e46403387b6029fd920a313285f756","unresolved":true,"context_lines":[{"line_number":45,"context_line":"        sa.Column(\u0027transit_network_id\u0027, sa.String(length\u003d36)),"},{"line_number":46,"context_line":"        sa.Column(\u0027transit_subnet_id\u0027, sa.String(length\u003d36)),"},{"line_number":47,"context_line":"        sa.PrimaryKeyConstraint(\u0027id\u0027),"},{"line_number":48,"context_line":"        sa.ForeignKeyConstraint([\u0027router_id\u0027], [\u0027routers.id\u0027], ),"},{"line_number":49,"context_line":"        sa.ForeignKeyConstraint([\u0027gw_port_id\u0027], [\u0027ports.id\u0027],"},{"line_number":50,"context_line":"                                ondelete\u003d\u0027SET NULL\u0027),"},{"line_number":51,"context_line":"        sa.ForeignKeyConstraint([\u0027transit_port_id\u0027], [\u0027ports.id\u0027],"}],"source_content_type":"text/x-python","patch_set":11,"id":"aa10332f_6d0f989f","line":48,"range":{"start_line":48,"start_character":61,"end_line":48,"end_character":63},"updated":"2021-07-14 07:43:39.000000000","message":"This comma looks unnecessary.","commit_id":"9ab94eab562a6bae42a7a52c846d53d77327d8dc"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"60ca007b30cd3529908f8bc2906390800a0ae8f7","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        sa.Column(\u0027transit_network_id\u0027, sa.String(length\u003d36)),"},{"line_number":46,"context_line":"        sa.Column(\u0027transit_subnet_id\u0027, sa.String(length\u003d36)),"},{"line_number":47,"context_line":"        sa.PrimaryKeyConstraint(\u0027id\u0027),"},{"line_number":48,"context_line":"        sa.ForeignKeyConstraint([\u0027router_id\u0027], [\u0027routers.id\u0027], ),"},{"line_number":49,"context_line":"        sa.ForeignKeyConstraint([\u0027gw_port_id\u0027], [\u0027ports.id\u0027],"},{"line_number":50,"context_line":"                                ondelete\u003d\u0027SET NULL\u0027),"},{"line_number":51,"context_line":"        sa.ForeignKeyConstraint([\u0027transit_port_id\u0027], [\u0027ports.id\u0027],"}],"source_content_type":"text/x-python","patch_set":11,"id":"09f55920_e2e9386c","line":48,"range":{"start_line":48,"start_character":61,"end_line":48,"end_character":63},"in_reply_to":"aa10332f_6d0f989f","updated":"2021-07-28 09:43:08.000000000","message":"fixed it","commit_id":"9ab94eab562a6bae42a7a52c846d53d77327d8dc"}],"neutron_vpnaas/db/migration/alembic_migrations/versions/xena/expand/3b739d6906cf_vpn_scheduler.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"acf5ba2cd3e46403387b6029fd920a313285f756","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# Copyright 2016 MingShuang Xian/IBM"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":11,"id":"c83a0647_5a106b82","line":1,"updated":"2021-07-14 07:43:39.000000000","message":"Is it correct?","commit_id":"9ab94eab562a6bae42a7a52c846d53d77327d8dc"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"b1952b6f7184dc35ff4e4aac3e32b76d619e7f5f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2016 MingShuang Xian/IBM"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":11,"id":"4b7579ad_43386452","line":1,"in_reply_to":"c83a0647_5a106b82","updated":"2021-08-17 15:37:56.000000000","message":"yes, this file was taken from the 2016 code of MighShuang Xian","commit_id":"9ab94eab562a6bae42a7a52c846d53d77327d8dc"}],"neutron_vpnaas/db/migration/alembic_migrations/versions/yoga/expand/22e0145ac80b_add_vpn_gateway_port.py":[{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"d61eaeef343eb017477bae1e4ab8f5d1524bd276","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":26,"id":"5d68f2de_8de680e8","updated":"2023-06-15 13:54:49.000000000","message":"why yoga?","commit_id":"e3295152da13ea3786b15ead609f5a58fe288eb4"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"ffe3d1ce603a266f57aa3f04bd41a958ea6f7b86","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":26,"id":"7ffbbb38_35d30c48","in_reply_to":"0c23ac7e_5b5113ef","updated":"2023-07-24 17:10:43.000000000","message":"moved it to 2023.2","commit_id":"e3295152da13ea3786b15ead609f5a58fe288eb4"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"7cf60ee8aa2b8112fde39d2f53684135b2c50f34","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":26,"id":"0c23ac7e_5b5113ef","in_reply_to":"5d68f2de_8de680e8","updated":"2023-07-24 11:09:41.000000000","message":"+1, please move it to Bobcat folder now","commit_id":"e3295152da13ea3786b15ead609f5a58fe288eb4"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"d61eaeef343eb017477bae1e4ab8f5d1524bd276","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# Copyright 2016 MingShuang Xian/IBM"},{"line_number":2,"context_line":"# Copyright 2020 SysEleven GmbH"},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":26,"id":"c92cc8e7_63707c80","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":36},"updated":"2023-06-15 13:54:49.000000000","message":"nit: this copyright is outdated at least :-)","commit_id":"e3295152da13ea3786b15ead609f5a58fe288eb4"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"d64656f6182a159d5c22d48144a9720c862d3087","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2016 MingShuang Xian/IBM"},{"line_number":2,"context_line":"# Copyright 2020 SysEleven GmbH"},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":26,"id":"02ec24bd_ad59ab41","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":36},"in_reply_to":"c92cc8e7_63707c80","updated":"2023-07-25 09:43:59.000000000","message":"the 2016 line is there because the code is based on work of MingShuang Xian back in 2016. I changed our line to 2023.","commit_id":"e3295152da13ea3786b15ead609f5a58fe288eb4"}],"neutron_vpnaas/db/migration/alembic_migrations/versions/yoga/expand/3b739d6906cf_vpn_scheduler.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"4f520f4feffe7e6f4d8428085ef2bae42eba2b73","unresolved":true,"context_lines":[{"line_number":34,"context_line":"        \u0027routervpnagentbindings\u0027,"},{"line_number":35,"context_line":"        sa.Column(\u0027router_id\u0027, sa.String(length\u003d36),"},{"line_number":36,"context_line":"                  unique\u003dTrue, nullable\u003dTrue),"},{"line_number":37,"context_line":"        sa.Column(\u0027vpn_agent_id\u0027, sa.String(length\u003d36), nullable\u003dTrue),"},{"line_number":38,"context_line":"        sa.ForeignKeyConstraint([\u0027router_id\u0027], [\u0027routers.id\u0027],"},{"line_number":39,"context_line":"                                ondelete\u003d\u0027CASCADE\u0027),"},{"line_number":40,"context_line":"        sa.PrimaryKeyConstraint(\u0027router_id\u0027, \u0027vpn_agent_id\u0027),"}],"source_content_type":"text/x-python","patch_set":17,"id":"baea30c8_424bec9c","line":37,"updated":"2022-04-29 13:48:27.000000000","message":"why those 2 columns can be nullable? Is that ok?","commit_id":"462a7b8ccfe455029b36e0ae3bc0f66bfcc0c1f5"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"d64656f6182a159d5c22d48144a9720c862d3087","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        \u0027routervpnagentbindings\u0027,"},{"line_number":35,"context_line":"        sa.Column(\u0027router_id\u0027, sa.String(length\u003d36),"},{"line_number":36,"context_line":"                  unique\u003dTrue, nullable\u003dTrue),"},{"line_number":37,"context_line":"        sa.Column(\u0027vpn_agent_id\u0027, sa.String(length\u003d36), nullable\u003dTrue),"},{"line_number":38,"context_line":"        sa.ForeignKeyConstraint([\u0027router_id\u0027], [\u0027routers.id\u0027],"},{"line_number":39,"context_line":"                                ondelete\u003d\u0027CASCADE\u0027),"},{"line_number":40,"context_line":"        sa.PrimaryKeyConstraint(\u0027router_id\u0027, \u0027vpn_agent_id\u0027),"}],"source_content_type":"text/x-python","patch_set":17,"id":"db9726e1_4e1ddad5","line":37,"in_reply_to":"4abc855a_716ee143","updated":"2023-07-25 09:43:59.000000000","message":"the columns are always filled, so I changed it to nullable\u003dFalse","commit_id":"462a7b8ccfe455029b36e0ae3bc0f66bfcc0c1f5"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"7cf60ee8aa2b8112fde39d2f53684135b2c50f34","unresolved":true,"context_lines":[{"line_number":34,"context_line":"        \u0027routervpnagentbindings\u0027,"},{"line_number":35,"context_line":"        sa.Column(\u0027router_id\u0027, sa.String(length\u003d36),"},{"line_number":36,"context_line":"                  unique\u003dTrue, nullable\u003dTrue),"},{"line_number":37,"context_line":"        sa.Column(\u0027vpn_agent_id\u0027, sa.String(length\u003d36), nullable\u003dTrue),"},{"line_number":38,"context_line":"        sa.ForeignKeyConstraint([\u0027router_id\u0027], [\u0027routers.id\u0027],"},{"line_number":39,"context_line":"                                ondelete\u003d\u0027CASCADE\u0027),"},{"line_number":40,"context_line":"        sa.PrimaryKeyConstraint(\u0027router_id\u0027, \u0027vpn_agent_id\u0027),"}],"source_content_type":"text/x-python","patch_set":17,"id":"4abc855a_716ee143","line":37,"in_reply_to":"baea30c8_424bec9c","updated":"2023-07-24 11:09:41.000000000","message":"Can You reply to my last question here?","commit_id":"462a7b8ccfe455029b36e0ae3bc0f66bfcc0c1f5"}],"neutron_vpnaas/db/vpn/vpn_agentschedulers_db.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"4f520f4feffe7e6f4d8428085ef2bae42eba2b73","unresolved":true,"context_lines":[{"line_number":43,"context_line":"               default\u003d\u0027neutron_vpnaas.scheduler.vpn_agent_scheduler\u0027"},{"line_number":44,"context_line":"                       \u0027.LeastRoutersScheduler\u0027,"},{"line_number":45,"context_line":"               help\u003d_(\u0027Driver to use for scheduling \u0027"},{"line_number":46,"context_line":"                      \u0027router to a default VPN agent\u0027)),"},{"line_number":47,"context_line":"    cfg.BoolOpt(\u0027vpn_auto_schedule\u0027, default\u003dTrue,"},{"line_number":48,"context_line":"                help\u003d_(\u0027Allow auto scheduling of routers to VPN agent.\u0027)),"},{"line_number":49,"context_line":"    cfg.BoolOpt(\u0027allow_automatic_vpnagent_failover\u0027, default\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":17,"id":"92bc1885_58dc0c98","line":46,"range":{"start_line":46,"start_character":35,"end_line":46,"end_character":42},"updated":"2022-04-29 13:48:27.000000000","message":"default agent? What does it mean exactly?","commit_id":"462a7b8ccfe455029b36e0ae3bc0f66bfcc0c1f5"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"500904fb723059363f23c07dcfe9faae6e840295","unresolved":false,"context_lines":[{"line_number":43,"context_line":"               default\u003d\u0027neutron_vpnaas.scheduler.vpn_agent_scheduler\u0027"},{"line_number":44,"context_line":"                       \u0027.LeastRoutersScheduler\u0027,"},{"line_number":45,"context_line":"               help\u003d_(\u0027Driver to use for scheduling \u0027"},{"line_number":46,"context_line":"                      \u0027router to a default VPN agent\u0027)),"},{"line_number":47,"context_line":"    cfg.BoolOpt(\u0027vpn_auto_schedule\u0027, default\u003dTrue,"},{"line_number":48,"context_line":"                help\u003d_(\u0027Allow auto scheduling of routers to VPN agent.\u0027)),"},{"line_number":49,"context_line":"    cfg.BoolOpt(\u0027allow_automatic_vpnagent_failover\u0027, default\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":17,"id":"8a136b98_4ede10fc","line":46,"range":{"start_line":46,"start_character":35,"end_line":46,"end_character":42},"in_reply_to":"92bc1885_58dc0c98","updated":"2022-04-29 15:21:29.000000000","message":"the word \"default\" shouldn\u0027t be there - I removed it","commit_id":"462a7b8ccfe455029b36e0ae3bc0f66bfcc0c1f5"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"7cf60ee8aa2b8112fde39d2f53684135b2c50f34","unresolved":true,"context_lines":[{"line_number":51,"context_line":"                       \u0027agents to online VPN agents.\u0027)),"},{"line_number":52,"context_line":"]"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"cfg.CONF.register_opts(VPN_AGENTS_SCHEDULER_OPTS)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"class RouterVPNAgentBinding(model_base.BASEV2):"}],"source_content_type":"text/x-python","patch_set":29,"id":"fd173e9d_70950ed1","line":54,"updated":"2023-07-24 11:09:41.000000000","message":"I\u0027m not really expert in the neutron-vpnaas project but in Neutron at least we are trying to avoid doing things like registering options during module import. Maybe You should change it here too?","commit_id":"b784c22021750c816e9db7473a63784d25f07502"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"2326631a207d74553583e14193a0f0529174b0c3","unresolved":false,"context_lines":[{"line_number":51,"context_line":"                       \u0027agents to online VPN agents.\u0027)),"},{"line_number":52,"context_line":"]"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"cfg.CONF.register_opts(VPN_AGENTS_SCHEDULER_OPTS)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"class RouterVPNAgentBinding(model_base.BASEV2):"}],"source_content_type":"text/x-python","patch_set":29,"id":"192c4fe1_664dcad6","line":54,"in_reply_to":"fd173e9d_70950ed1","updated":"2023-07-25 15:05:24.000000000","message":"Most modules in neutron/db/ register their options during module import, so I did it here too. Also I didn\u0027t know where to put the registering if not here, for the options needed by the plugin.\nThe options needed for the VPN agent are registered in main() though. There it was easier to avoid the registering on import.","commit_id":"b784c22021750c816e9db7473a63784d25f07502"}],"neutron_vpnaas/db/vpn/vpn_ext_gw_db.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"acf5ba2cd3e46403387b6029fd920a313285f756","unresolved":true,"context_lines":[{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    @property"},{"line_number":102,"context_line":"    def _vpn_plugin(self):"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        return directory.get_plugin(plugin_const.VPN)"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":11,"id":"3db64a00_90583b31","line":103,"updated":"2021-07-14 07:43:39.000000000","message":"unnecessary blank line","commit_id":"9ab94eab562a6bae42a7a52c846d53d77327d8dc"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"b1952b6f7184dc35ff4e4aac3e32b76d619e7f5f","unresolved":false,"context_lines":[{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    @property"},{"line_number":102,"context_line":"    def _vpn_plugin(self):"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        return directory.get_plugin(plugin_const.VPN)"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":11,"id":"5a34b30f_d3626cb3","line":103,"in_reply_to":"3db64a00_90583b31","updated":"2021-08-17 15:37:56.000000000","message":"fixed it","commit_id":"9ab94eab562a6bae42a7a52c846d53d77327d8dc"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"acf5ba2cd3e46403387b6029fd920a313285f756","unresolved":true,"context_lines":[{"line_number":112,"context_line":"            vpn_plugin.prevent_vpn_port_deletion(payload.context,"},{"line_number":113,"context_line":"                                                 payload.resource_id)"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    def _id_used(self, context, id_column, resource_id):"},{"line_number":116,"context_line":"        return context.session.query(VPNExtGW).filter("},{"line_number":117,"context_line":"            sa.and_("},{"line_number":118,"context_line":"                id_column \u003d\u003d resource_id,"}],"source_content_type":"text/x-python","patch_set":11,"id":"0f0e4422_7d573761","line":115,"updated":"2021-07-14 07:43:39.000000000","message":"This method returns the count but the method name looks like a boolean method. It is better that the method name matches the type of the return value.","commit_id":"9ab94eab562a6bae42a7a52c846d53d77327d8dc"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"60ca007b30cd3529908f8bc2906390800a0ae8f7","unresolved":false,"context_lines":[{"line_number":112,"context_line":"            vpn_plugin.prevent_vpn_port_deletion(payload.context,"},{"line_number":113,"context_line":"                                                 payload.resource_id)"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    def _id_used(self, context, id_column, resource_id):"},{"line_number":116,"context_line":"        return context.session.query(VPNExtGW).filter("},{"line_number":117,"context_line":"            sa.and_("},{"line_number":118,"context_line":"                id_column \u003d\u003d resource_id,"}],"source_content_type":"text/x-python","patch_set":11,"id":"2765222e_cd6f48c2","line":115,"in_reply_to":"0f0e4422_7d573761","updated":"2021-07-28 09:43:08.000000000","message":"changed the return value to \"count() \u003e 0\" because the function is actually only used to test for \"is the Id used?\", i.e. as a boolean.","commit_id":"9ab94eab562a6bae42a7a52c846d53d77327d8dc"}],"neutron_vpnaas/extensions/vpn_agentschedulers.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"e4a4a30d97de69e6cdfeb4f38f56eb98f7a92ac9","unresolved":true,"context_lines":[{"line_number":84,"context_line":"        plugin \u003d directory.get_plugin(plugin_const.VPN)"},{"line_number":85,"context_line":"        if not plugin:"},{"line_number":86,"context_line":"            LOG.error(\u0027No plugin for VPN routing registered to handle \u0027"},{"line_number":87,"context_line":"                      \u0027router scheduling\u0027)"},{"line_number":88,"context_line":"            msg \u003d \u0027The resource could not be found.\u0027"},{"line_number":89,"context_line":"            raise webob.exc.HTTPNotFound(msg)"},{"line_number":90,"context_line":"        return plugin"}],"source_content_type":"text/x-python","patch_set":35,"id":"169b8799_3dbe4362","line":87,"range":{"start_line":87,"start_character":23,"end_line":87,"end_character":29},"updated":"2023-11-15 22:45:19.000000000","message":"s/agent ?","commit_id":"4f998326d28bb128df56fa5b874d5b336445f06f"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"ec16583152a4e21120b965097c155cc85bef4c25","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        plugin \u003d directory.get_plugin(plugin_const.VPN)"},{"line_number":85,"context_line":"        if not plugin:"},{"line_number":86,"context_line":"            LOG.error(\u0027No plugin for VPN routing registered to handle \u0027"},{"line_number":87,"context_line":"                      \u0027router scheduling\u0027)"},{"line_number":88,"context_line":"            msg \u003d \u0027The resource could not be found.\u0027"},{"line_number":89,"context_line":"            raise webob.exc.HTTPNotFound(msg)"},{"line_number":90,"context_line":"        return plugin"}],"source_content_type":"text/x-python","patch_set":35,"id":"ec7dbb27_42e0220b","line":87,"range":{"start_line":87,"start_character":23,"end_line":87,"end_character":29},"in_reply_to":"169b8799_3dbe4362","updated":"2023-11-16 20:16:37.000000000","message":"fixed the error message","commit_id":"4f998326d28bb128df56fa5b874d5b336445f06f"}],"neutron_vpnaas/extensions/vpnaas.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"4f520f4feffe7e6f4d8428085ef2bae42eba2b73","unresolved":true,"context_lines":[{"line_number":187,"context_line":""},{"line_number":188,"context_line":"class VPNGatewayInError(nexception.Conflict):"},{"line_number":189,"context_line":"    message \u003d _(\"VPN gateway is in ERROR state.\""},{"line_number":190,"context_line":"                \" Please remove all errored VPN services and try again.\")"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"class NoVPNAgentAvailable(nexception.ServiceUnavailable):"}],"source_content_type":"text/x-python","patch_set":17,"id":"57a1b267_aeb3c917","line":190,"range":{"start_line":190,"start_character":17,"end_line":190,"end_character":18},"updated":"2022-04-29 13:48:27.000000000","message":"nitty nit: general convention is to left such space as last char in the above line","commit_id":"462a7b8ccfe455029b36e0ae3bc0f66bfcc0c1f5"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"500904fb723059363f23c07dcfe9faae6e840295","unresolved":false,"context_lines":[{"line_number":187,"context_line":""},{"line_number":188,"context_line":"class VPNGatewayInError(nexception.Conflict):"},{"line_number":189,"context_line":"    message \u003d _(\"VPN gateway is in ERROR state.\""},{"line_number":190,"context_line":"                \" Please remove all errored VPN services and try again.\")"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"class NoVPNAgentAvailable(nexception.ServiceUnavailable):"}],"source_content_type":"text/x-python","patch_set":17,"id":"67db8312_77fd35b1","line":190,"range":{"start_line":190,"start_character":17,"end_line":190,"end_character":18},"in_reply_to":"57a1b267_aeb3c917","updated":"2022-04-29 15:21:29.000000000","message":"fixed","commit_id":"462a7b8ccfe455029b36e0ae3bc0f66bfcc0c1f5"}],"neutron_vpnaas/scheduler/vpn_agent_scheduler.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"4f520f4feffe7e6f4d8428085ef2bae42eba2b73","unresolved":true,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"@six.add_metaclass(abc.ABCMeta)"},{"line_number":31,"context_line":"class VPNScheduler(object):"},{"line_number":32,"context_line":"    @property"},{"line_number":33,"context_line":"    def l3_plugin(self):"},{"line_number":34,"context_line":"        return directory.get_plugin(plugin_constants.L3)"}],"source_content_type":"text/x-python","patch_set":17,"id":"31a03b9b_c741473f","line":31,"updated":"2022-04-29 13:48:27.000000000","message":"we don\u0027t use six anymore as we don\u0027t support python 2 at all. Please do it like:\n\n    class VPNScheduler(object, metaclass\u003dabc.ABCMeta):","commit_id":"462a7b8ccfe455029b36e0ae3bc0f66bfcc0c1f5"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"500904fb723059363f23c07dcfe9faae6e840295","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"@six.add_metaclass(abc.ABCMeta)"},{"line_number":31,"context_line":"class VPNScheduler(object):"},{"line_number":32,"context_line":"    @property"},{"line_number":33,"context_line":"    def l3_plugin(self):"},{"line_number":34,"context_line":"        return directory.get_plugin(plugin_constants.L3)"}],"source_content_type":"text/x-python","patch_set":17,"id":"eb8a9f8d_6c2c9e9a","line":31,"in_reply_to":"31a03b9b_c741473f","updated":"2022-04-29 15:21:29.000000000","message":"fixed","commit_id":"462a7b8ccfe455029b36e0ae3bc0f66bfcc0c1f5"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"4f520f4feffe7e6f4d8428085ef2bae42eba2b73","unresolved":true,"context_lines":[{"line_number":78,"context_line":"            context, plugin, unscheduled_routers, vpn_agent)"},{"line_number":79,"context_line":"        if not target_routers:"},{"line_number":80,"context_line":"            LOG.warning(\u0027No unscheduled routers compatible with VPN agent \u0027"},{"line_number":81,"context_line":"                        \u0027configuration on host %s\u0027, vpn_agent[\u0027host\u0027])"},{"line_number":82,"context_line":"            return []"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        self._bind_routers(context, plugin, target_routers, vpn_agent)"}],"source_content_type":"text/x-python","patch_set":17,"id":"2fda975b_13bcec1b","line":81,"updated":"2022-04-29 13:48:27.000000000","message":"is this really warning?","commit_id":"462a7b8ccfe455029b36e0ae3bc0f66bfcc0c1f5"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"500904fb723059363f23c07dcfe9faae6e840295","unresolved":false,"context_lines":[{"line_number":78,"context_line":"            context, plugin, unscheduled_routers, vpn_agent)"},{"line_number":79,"context_line":"        if not target_routers:"},{"line_number":80,"context_line":"            LOG.warning(\u0027No unscheduled routers compatible with VPN agent \u0027"},{"line_number":81,"context_line":"                        \u0027configuration on host %s\u0027, vpn_agent[\u0027host\u0027])"},{"line_number":82,"context_line":"            return []"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        self._bind_routers(context, plugin, target_routers, vpn_agent)"}],"source_content_type":"text/x-python","patch_set":17,"id":"d34e7372_d2ae58c6","line":81,"in_reply_to":"2fda975b_13bcec1b","updated":"2022-04-29 15:21:29.000000000","message":"Most times it\u0027s not. Only if there are actually unscheduled routers. I added an \"if\".","commit_id":"462a7b8ccfe455029b36e0ae3bc0f66bfcc0c1f5"}],"neutron_vpnaas/services/vpn/common/constants.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"acf5ba2cd3e46403387b6029fd920a313285f756","unresolved":true,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from neutron_lib import constants as l3_constants"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"# Endpoint group types"},{"line_number":19,"context_line":"SUBNET_ENDPOINT \u003d \u0027subnet\u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"dc3bc4a2_00caa8c1","line":16,"range":{"start_line":16,"start_character":37,"end_line":16,"end_character":49},"updated":"2021-07-14 07:43:39.000000000","message":"Why do you call it as \"l3_constants\"? I don\u0027t see a good reason that we cannot call it as \"constants\". It is just used to refer DEVICE_OWNER_NETWORK_PREFIX so it is not specific to L3 features.","commit_id":"9ab94eab562a6bae42a7a52c846d53d77327d8dc"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"60ca007b30cd3529908f8bc2906390800a0ae8f7","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from neutron_lib import constants as l3_constants"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"# Endpoint group types"},{"line_number":19,"context_line":"SUBNET_ENDPOINT \u003d \u0027subnet\u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"b60cf412_ccc23030","line":16,"range":{"start_line":16,"start_character":37,"end_line":16,"end_character":49},"in_reply_to":"dc3bc4a2_00caa8c1","updated":"2021-07-28 09:43:08.000000000","message":"fixed it","commit_id":"9ab94eab562a6bae42a7a52c846d53d77327d8dc"}],"neutron_vpnaas/services/vpn/device_drivers/ovn_ipsec.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"4f520f4feffe7e6f4d8428085ef2bae42eba2b73","unresolved":true,"context_lines":[{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    def list_routes(self, namespace, via\u003dNone):"},{"line_number":89,"context_line":"        device \u003d ip_lib.IPDevice(None, namespace\u003dnamespace)"},{"line_number":90,"context_line":"        return device.route.list_routes(4, proto\u003d\u0027static\u0027, via\u003dvia)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def del_static_routes(self, namespace):"},{"line_number":93,"context_line":"        device \u003d ip_lib.IPDevice(None, namespace\u003dnamespace)"}],"source_content_type":"text/x-python","patch_set":17,"id":"492c8e4e_a02152b6","line":90,"range":{"start_line":90,"start_character":40,"end_line":90,"end_character":41},"updated":"2022-04-29 13:48:27.000000000","message":"we have constant for that in neutron_lib. Please use it here","commit_id":"462a7b8ccfe455029b36e0ae3bc0f66bfcc0c1f5"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"500904fb723059363f23c07dcfe9faae6e840295","unresolved":false,"context_lines":[{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    def list_routes(self, namespace, via\u003dNone):"},{"line_number":89,"context_line":"        device \u003d ip_lib.IPDevice(None, namespace\u003dnamespace)"},{"line_number":90,"context_line":"        return device.route.list_routes(4, proto\u003d\u0027static\u0027, via\u003dvia)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def del_static_routes(self, namespace):"},{"line_number":93,"context_line":"        device \u003d ip_lib.IPDevice(None, namespace\u003dnamespace)"}],"source_content_type":"text/x-python","patch_set":17,"id":"d02b2cc8_93848a01","line":90,"range":{"start_line":90,"start_character":40,"end_line":90,"end_character":41},"in_reply_to":"492c8e4e_a02152b6","updated":"2022-04-29 15:21:29.000000000","message":"fixed","commit_id":"462a7b8ccfe455029b36e0ae3bc0f66bfcc0c1f5"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"4f520f4feffe7e6f4d8428085ef2bae42eba2b73","unresolved":true,"context_lines":[{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def del_static_routes(self, namespace):"},{"line_number":93,"context_line":"        device \u003d ip_lib.IPDevice(None, namespace\u003dnamespace)"},{"line_number":94,"context_line":"        routes \u003d device.route.list_routes(4, proto\u003d\u0027static\u0027)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"        for r in routes:"},{"line_number":97,"context_line":"            device.route.delete_route(r[\u0027cidr\u0027], via\u003dr[\u0027via\u0027])"}],"source_content_type":"text/x-python","patch_set":17,"id":"55a298b0_76fb2886","line":94,"updated":"2022-04-29 13:48:27.000000000","message":"same here","commit_id":"462a7b8ccfe455029b36e0ae3bc0f66bfcc0c1f5"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"500904fb723059363f23c07dcfe9faae6e840295","unresolved":false,"context_lines":[{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def del_static_routes(self, namespace):"},{"line_number":93,"context_line":"        device \u003d ip_lib.IPDevice(None, namespace\u003dnamespace)"},{"line_number":94,"context_line":"        routes \u003d device.route.list_routes(4, proto\u003d\u0027static\u0027)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"        for r in routes:"},{"line_number":97,"context_line":"            device.route.delete_route(r[\u0027cidr\u0027], via\u003dr[\u0027via\u0027])"}],"source_content_type":"text/x-python","patch_set":17,"id":"ceaa0aa2_3452def3","line":94,"in_reply_to":"55a298b0_76fb2886","updated":"2022-04-29 15:21:29.000000000","message":"fixed","commit_id":"462a7b8ccfe455029b36e0ae3bc0f66bfcc0c1f5"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"4f520f4feffe7e6f4d8428085ef2bae42eba2b73","unresolved":true,"context_lines":[{"line_number":120,"context_line":"        interface_name \u003d self.get_interface_name(vpn_port, \u0027external\u0027)"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        if not ip_lib.ensure_device_is_ready(interface_name,"},{"line_number":123,"context_line":"                                         namespace\u003dns_name):"},{"line_number":124,"context_line":"            try:"},{"line_number":125,"context_line":"                self.driver.plug(network[\u0027id\u0027],"},{"line_number":126,"context_line":"                                 vpn_port[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":17,"id":"09e1f200_457d45b8","line":123,"updated":"2022-04-29 13:48:27.000000000","message":"nit: strange alignment :)","commit_id":"462a7b8ccfe455029b36e0ae3bc0f66bfcc0c1f5"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"500904fb723059363f23c07dcfe9faae6e840295","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        interface_name \u003d self.get_interface_name(vpn_port, \u0027external\u0027)"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        if not ip_lib.ensure_device_is_ready(interface_name,"},{"line_number":123,"context_line":"                                         namespace\u003dns_name):"},{"line_number":124,"context_line":"            try:"},{"line_number":125,"context_line":"                self.driver.plug(network[\u0027id\u0027],"},{"line_number":126,"context_line":"                                 vpn_port[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":17,"id":"b1dcea97_3f692b61","line":123,"in_reply_to":"09e1f200_457d45b8","updated":"2022-04-29 15:21:29.000000000","message":"fixed","commit_id":"462a7b8ccfe455029b36e0ae3bc0f66bfcc0c1f5"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"e4a4a30d97de69e6cdfeb4f38f56eb98f7a92ac9","unresolved":true,"context_lines":[{"line_number":44,"context_line":"    side is attached to ovs."},{"line_number":45,"context_line":"    \"\"\""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    OVN_NS_PREFIX \u003d \"qvpn-\""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def __init__(self, conf, host, plugin, context):"},{"line_number":50,"context_line":"        self.conf \u003d conf"}],"source_content_type":"text/x-python","patch_set":35,"id":"1d8fb754_17c42085","line":47,"updated":"2023-11-15 22:45:19.000000000","message":"nit: Just curious if this is used elsewhere and should be in constants file, don\u0027t know the answer.","commit_id":"4f998326d28bb128df56fa5b874d5b336445f06f"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"ec16583152a4e21120b965097c155cc85bef4c25","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    side is attached to ovs."},{"line_number":45,"context_line":"    \"\"\""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    OVN_NS_PREFIX \u003d \"qvpn-\""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def __init__(self, conf, host, plugin, context):"},{"line_number":50,"context_line":"        self.conf \u003d conf"}],"source_content_type":"text/x-python","patch_set":35,"id":"4a889fe0_68254f4c","line":47,"in_reply_to":"1d8fb754_17c42085","updated":"2023-11-16 20:16:37.000000000","message":"I\u0027d keep it here. It\u0027s not used elsewhere","commit_id":"4f998326d28bb128df56fa5b874d5b336445f06f"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"e4a4a30d97de69e6cdfeb4f38f56eb98f7a92ac9","unresolved":true,"context_lines":[{"line_number":339,"context_line":"            if router_id not in vpn_router_ids:"},{"line_number":340,"context_line":"                self.destroy_process(router_id)"},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"    @lockutils.synchronized(\u0027vpn-agent\u0027, \u0027neutron-\u0027)"},{"line_number":343,"context_line":"    def vpnservice_removed_from_agent(self, context, router_id):"},{"line_number":344,"context_line":"        # must run under the same lock as sync()"},{"line_number":345,"context_line":"        self.destroy_process(router_id)"}],"source_content_type":"text/x-python","patch_set":35,"id":"475bac40_cee53da8","line":342,"range":{"start_line":342,"start_character":29,"end_line":342,"end_character":38},"updated":"2023-11-15 22:45:19.000000000","message":"nit: could be ovn-vpn-agent ?","commit_id":"4f998326d28bb128df56fa5b874d5b336445f06f"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"ec16583152a4e21120b965097c155cc85bef4c25","unresolved":false,"context_lines":[{"line_number":339,"context_line":"            if router_id not in vpn_router_ids:"},{"line_number":340,"context_line":"                self.destroy_process(router_id)"},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"    @lockutils.synchronized(\u0027vpn-agent\u0027, \u0027neutron-\u0027)"},{"line_number":343,"context_line":"    def vpnservice_removed_from_agent(self, context, router_id):"},{"line_number":344,"context_line":"        # must run under the same lock as sync()"},{"line_number":345,"context_line":"        self.destroy_process(router_id)"}],"source_content_type":"text/x-python","patch_set":35,"id":"7ea7b766_67b4b6a1","line":342,"range":{"start_line":342,"start_character":29,"end_line":342,"end_character":38},"in_reply_to":"475bac40_cee53da8","updated":"2023-11-16 20:16:37.000000000","message":"This needs to be the same lock as for sync(), which is in the base class and not on-specific","commit_id":"4f998326d28bb128df56fa5b874d5b336445f06f"}],"neutron_vpnaas/services/vpn/ovn/agent_monitor.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"e4a4a30d97de69e6cdfeb4f38f56eb98f7a92ac9","unresolved":true,"context_lines":[{"line_number":27,"context_line":"    @property"},{"line_number":28,"context_line":"    def nb_cfg(self):"},{"line_number":29,"context_line":"        return int(self.chassis_private.external_ids.get("},{"line_number":30,"context_line":"            constants.OVN_AGENT_VPN_SB_CFG_KEY, 0))"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    @staticmethod"},{"line_number":33,"context_line":"    def id_from_chassis_private(chassis_private):"}],"source_content_type":"text/x-python","patch_set":35,"id":"5f1ca913_b6df2b23","line":30,"range":{"start_line":30,"start_character":36,"end_line":30,"end_character":38},"updated":"2023-11-15 22:45:19.000000000","message":"Is this correct? constant has SB but this is a NB property","commit_id":"4f998326d28bb128df56fa5b874d5b336445f06f"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"ec16583152a4e21120b965097c155cc85bef4c25","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    @property"},{"line_number":28,"context_line":"    def nb_cfg(self):"},{"line_number":29,"context_line":"        return int(self.chassis_private.external_ids.get("},{"line_number":30,"context_line":"            constants.OVN_AGENT_VPN_SB_CFG_KEY, 0))"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    @staticmethod"},{"line_number":33,"context_line":"    def id_from_chassis_private(chassis_private):"}],"source_content_type":"text/x-python","patch_set":35,"id":"b14e45da_a6756066","line":30,"range":{"start_line":30,"start_character":36,"end_line":30,"end_character":38},"in_reply_to":"5f1ca913_b6df2b23","updated":"2023-11-16 20:16:37.000000000","message":"This naming follows the same idea as in neutron for the metadata agent (neutron/plugins/ml2/drivers/ovn/agent/neutron_agent.py)","commit_id":"4f998326d28bb128df56fa5b874d5b336445f06f"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"e4a4a30d97de69e6cdfeb4f38f56eb98f7a92ac9","unresolved":true,"context_lines":[{"line_number":51,"context_line":"    @staticmethod"},{"line_number":52,"context_line":"    def _vpnagent_nb_cfg(row):"},{"line_number":53,"context_line":"        return int("},{"line_number":54,"context_line":"            row.external_ids.get(constants.OVN_AGENT_VPN_SB_CFG_KEY, -1))"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    @staticmethod"},{"line_number":57,"context_line":"    def agent_id(row):"}],"source_content_type":"text/x-python","patch_set":35,"id":"9163b668_29d00c82","line":54,"range":{"start_line":54,"start_character":57,"end_line":54,"end_character":59},"updated":"2023-11-15 22:45:19.000000000","message":"Same here","commit_id":"4f998326d28bb128df56fa5b874d5b336445f06f"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"ec16583152a4e21120b965097c155cc85bef4c25","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    @staticmethod"},{"line_number":52,"context_line":"    def _vpnagent_nb_cfg(row):"},{"line_number":53,"context_line":"        return int("},{"line_number":54,"context_line":"            row.external_ids.get(constants.OVN_AGENT_VPN_SB_CFG_KEY, -1))"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    @staticmethod"},{"line_number":57,"context_line":"    def agent_id(row):"}],"source_content_type":"text/x-python","patch_set":35,"id":"6cd23c1f_8555da9e","line":54,"range":{"start_line":54,"start_character":57,"end_line":54,"end_character":59},"in_reply_to":"9163b668_29d00c82","updated":"2023-11-16 20:16:37.000000000","message":"This naming follows the same idea as in neutron for the metadata agent (neutron/plugins/ml2/drivers/ovn/agent/neutron_agent.py)","commit_id":"4f998326d28bb128df56fa5b874d5b336445f06f"}],"neutron_vpnaas/services/vpn/ovn_agent.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"e4a4a30d97de69e6cdfeb4f38f56eb98f7a92ac9","unresolved":true,"context_lines":[{"line_number":35,"context_line":"                 \u0027ovn_ipsec.OvnStrongSwanDriver\u0027],"},{"line_number":36,"context_line":"        sample_default\u003d[\u0027neutron_vpnaas.services.vpn.device_drivers.\u0027"},{"line_number":37,"context_line":"                        \u0027ovn_ipsec.OvnStrongSwanDriver\u0027],"},{"line_number":38,"context_line":"        help\u003d_(\"The vpn device drivers Neutron will use\")),"},{"line_number":39,"context_line":"]"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"OVS_OPTS \u003d ["}],"source_content_type":"text/x-python","patch_set":35,"id":"cc33af83_ebd5f98b","line":38,"updated":"2023-11-15 22:45:19.000000000","message":"nit: don\u0027t know if the name or help message should mention OVN ?","commit_id":"4f998326d28bb128df56fa5b874d5b336445f06f"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"ec16583152a4e21120b965097c155cc85bef4c25","unresolved":false,"context_lines":[{"line_number":35,"context_line":"                 \u0027ovn_ipsec.OvnStrongSwanDriver\u0027],"},{"line_number":36,"context_line":"        sample_default\u003d[\u0027neutron_vpnaas.services.vpn.device_drivers.\u0027"},{"line_number":37,"context_line":"                        \u0027ovn_ipsec.OvnStrongSwanDriver\u0027],"},{"line_number":38,"context_line":"        help\u003d_(\"The vpn device drivers Neutron will use\")),"},{"line_number":39,"context_line":"]"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"OVS_OPTS \u003d ["}],"source_content_type":"text/x-python","patch_set":35,"id":"dd3b76ce_ea5a141d","line":38,"in_reply_to":"cc33af83_ebd5f98b","updated":"2023-11-16 20:16:37.000000000","message":"fixed","commit_id":"4f998326d28bb128df56fa5b874d5b336445f06f"}],"neutron_vpnaas/services/vpn/ovn_plugin.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"acf5ba2cd3e46403387b6029fd920a313285f756","unresolved":true,"context_lines":[{"line_number":36,"context_line":"from neutron_vpnaas.services.vpn.plugin import VPNDriverPlugin"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"class OVNVPNAgent(neutron_agent.NeutronAgent):"},{"line_number":40,"context_line":"    agent_type \u003d constants.AGENT_TYPE_VPN"},{"line_number":41,"context_line":"    binary \u003d \"neutron-ovn-vpn-agent\""},{"line_number":42,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"12ad4d44_5759f200","line":39,"updated":"2021-07-14 07:43:39.000000000","message":"The file is about vpnaas plugin as neutron APi server, so it looks tricky to include the agent side code here. Could you consider moving the class to a file related to the agent side? (I might be misunderstanding it though)","commit_id":"9ab94eab562a6bae42a7a52c846d53d77327d8dc"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"60ca007b30cd3529908f8bc2906390800a0ae8f7","unresolved":false,"context_lines":[{"line_number":36,"context_line":"from neutron_vpnaas.services.vpn.plugin import VPNDriverPlugin"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"class OVNVPNAgent(neutron_agent.NeutronAgent):"},{"line_number":40,"context_line":"    agent_type \u003d constants.AGENT_TYPE_VPN"},{"line_number":41,"context_line":"    binary \u003d \"neutron-ovn-vpn-agent\""},{"line_number":42,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"c6958865_23fc27c4","line":39,"in_reply_to":"12ad4d44_5759f200","updated":"2021-07-28 09:43:08.000000000","message":"Moved the classes related to agent monitoring into a seperate file.","commit_id":"9ab94eab562a6bae42a7a52c846d53d77327d8dc"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"4f520f4feffe7e6f4d8428085ef2bae42eba2b73","unresolved":true,"context_lines":[{"line_number":63,"context_line":"                                   \"vpn-endpoint-groups\","},{"line_number":64,"context_line":"                                   \"service-type\","},{"line_number":65,"context_line":"                                   \"vpn-agent-scheduler\"]"},{"line_number":66,"context_line":"    path_prefix \u003d \"/vpn\""},{"line_number":67,"context_line":""},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"class VPNOVNDriverPlugin(VPNOVNPlugin, VPNDriverPlugin):"}],"source_content_type":"text/x-python","patch_set":17,"id":"d5543eef_b5c9358a","line":66,"updated":"2022-04-29 13:48:27.000000000","message":"why do we need completely new service plugin for that? Can\u0027t we use existing one?","commit_id":"462a7b8ccfe455029b36e0ae3bc0f66bfcc0c1f5"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"7cf60ee8aa2b8112fde39d2f53684135b2c50f34","unresolved":false,"context_lines":[{"line_number":63,"context_line":"                                   \"vpn-endpoint-groups\","},{"line_number":64,"context_line":"                                   \"service-type\","},{"line_number":65,"context_line":"                                   \"vpn-agent-scheduler\"]"},{"line_number":66,"context_line":"    path_prefix \u003d \"/vpn\""},{"line_number":67,"context_line":""},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"class VPNOVNDriverPlugin(VPNOVNPlugin, VPNDriverPlugin):"}],"source_content_type":"text/x-python","patch_set":17,"id":"5aab5019_b9e4b0c1","line":66,"in_reply_to":"bb591b74_ec2895b7","updated":"2023-07-24 11:09:41.000000000","message":"ok","commit_id":"462a7b8ccfe455029b36e0ae3bc0f66bfcc0c1f5"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"500904fb723059363f23c07dcfe9faae6e840295","unresolved":true,"context_lines":[{"line_number":63,"context_line":"                                   \"vpn-endpoint-groups\","},{"line_number":64,"context_line":"                                   \"service-type\","},{"line_number":65,"context_line":"                                   \"vpn-agent-scheduler\"]"},{"line_number":66,"context_line":"    path_prefix \u003d \"/vpn\""},{"line_number":67,"context_line":""},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"class VPNOVNDriverPlugin(VPNOVNPlugin, VPNDriverPlugin):"}],"source_content_type":"text/x-python","patch_set":17,"id":"bb591b74_ec2895b7","line":66,"in_reply_to":"d5543eef_b5c9358a","updated":"2022-04-29 15:21:29.000000000","message":"A reason for the new plugin was that the VPNOVNPlugin uses some additional mixins.","commit_id":"462a7b8ccfe455029b36e0ae3bc0f66bfcc0c1f5"}],"neutron_vpnaas/services/vpn/service_drivers/ovn_ipsec.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"acf5ba2cd3e46403387b6029fd920a313285f756","unresolved":true,"context_lines":[{"line_number":53,"context_line":"VPN_TRANSIT_CIDR \u003d \u0027169.254.0.0/28\u0027"},{"line_number":54,"context_line":"HIDDEN_TENANT_ID \u003d \u0027\u0027"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"class RouteInUseByVPN(n_exc.InUse):"},{"line_number":58,"context_line":"    \"\"\"Operational error indicating a route is used for VPN."},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"f94e1f03_6ad79105","line":56,"updated":"2021-07-14 07:43:39.000000000","message":"Are exceptions defined here visible via the API?\nIf so, please define them in the API extension.\nIf they are for internal use only, it is okay.","commit_id":"9ab94eab562a6bae42a7a52c846d53d77327d8dc"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"60ca007b30cd3529908f8bc2906390800a0ae8f7","unresolved":false,"context_lines":[{"line_number":53,"context_line":"VPN_TRANSIT_CIDR \u003d \u0027169.254.0.0/28\u0027"},{"line_number":54,"context_line":"HIDDEN_TENANT_ID \u003d \u0027\u0027"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"class RouteInUseByVPN(n_exc.InUse):"},{"line_number":58,"context_line":"    \"\"\"Operational error indicating a route is used for VPN."},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"5ab9e976_9c7f8f7b","line":56,"in_reply_to":"f94e1f03_6ad79105","updated":"2021-07-28 09:43:08.000000000","message":"Moved the exceptions","commit_id":"9ab94eab562a6bae42a7a52c846d53d77327d8dc"},{"author":{"_account_id":34705,"name":"zhuyawei","email":"1024854177@qq.com","username":"will-1024"},"change_message_id":"c824154adb08579934d54ea2f2b44fabbf9a0cc9","unresolved":true,"context_lines":[{"line_number":387,"context_line":"        network_id \u003d vpnservice.router.gw_port.network_id"},{"line_number":388,"context_line":"        gateway_update \u003d {}  # keeps track of already-created IDs"},{"line_number":389,"context_line":"        try:"},{"line_number":390,"context_line":"            self.make_gw_port(router_id, network_id, agent_host,"},{"line_number":391,"context_line":"                              gateway_update)"},{"line_number":392,"context_line":"            self.make_transit_network(router_id,"},{"line_number":393,"context_line":"                                      vpnservice_dict[\u0027tenant_id\u0027],"},{"line_number":394,"context_line":"                                      agent_host,"},{"line_number":395,"context_line":"                                      gateway_update)"},{"line_number":396,"context_line":"        except Exception:"},{"line_number":397,"context_line":"            self._update_gateway(context, gateway[\u0027id\u0027],"},{"line_number":398,"context_line":"                status\u003dlib_constants.ERROR,"}],"source_content_type":"text/x-python","patch_set":22,"id":"8aa39892_bd3bf27d","line":395,"range":{"start_line":390,"start_character":4,"end_line":395,"end_character":53},"updated":"2022-11-22 08:46:08.000000000","message":"Create the VPN router gateway in the \"make_gw_port\" method. Create the network, subnet, router interface, and interface in the \"make_transit_network\" method. I was worried that creating so many resources at once would be time consuming.","commit_id":"b1c5095050d2baace99e576825ab32e3d1d5fbdc"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"7cf60ee8aa2b8112fde39d2f53684135b2c50f34","unresolved":true,"context_lines":[{"line_number":53,"context_line":"VPN_TRANSIT_LIP \u003d \u0027169.254.0.1\u0027"},{"line_number":54,"context_line":"VPN_TRANSIT_RIP \u003d \u0027169.254.0.2\u0027"},{"line_number":55,"context_line":"VPN_TRANSIT_CIDR \u003d \u0027169.254.0.0/28\u0027"},{"line_number":56,"context_line":"HIDDEN_TENANT_ID \u003d \u0027\u0027"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"class IPsecVpnOvnDriverCallBack(base_ipsec.IPsecVpnDriverCallBack):"}],"source_content_type":"text/x-python","patch_set":29,"id":"9296183f_6079b4ab","line":56,"updated":"2023-07-24 11:09:41.000000000","message":"nitty nit: maybe You can rename it to \"project_id\"?","commit_id":"b784c22021750c816e9db7473a63784d25f07502"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"d64656f6182a159d5c22d48144a9720c862d3087","unresolved":false,"context_lines":[{"line_number":53,"context_line":"VPN_TRANSIT_LIP \u003d \u0027169.254.0.1\u0027"},{"line_number":54,"context_line":"VPN_TRANSIT_RIP \u003d \u0027169.254.0.2\u0027"},{"line_number":55,"context_line":"VPN_TRANSIT_CIDR \u003d \u0027169.254.0.0/28\u0027"},{"line_number":56,"context_line":"HIDDEN_TENANT_ID \u003d \u0027\u0027"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"class IPsecVpnOvnDriverCallBack(base_ipsec.IPsecVpnDriverCallBack):"}],"source_content_type":"text/x-python","patch_set":29,"id":"018fc1e3_d4b32742","line":56,"in_reply_to":"9296183f_6079b4ab","updated":"2023-07-25 09:43:59.000000000","message":"changed it","commit_id":"b784c22021750c816e9db7473a63784d25f07502"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"e4a4a30d97de69e6cdfeb4f38f56eb98f7a92ac9","unresolved":true,"context_lines":[{"line_number":336,"context_line":"        for fixed_ip in gateway[\u0027external_fixed_ips\u0027]:"},{"line_number":337,"context_line":"            addr \u003d fixed_ip[\u0027ip_address\u0027]"},{"line_number":338,"context_line":"            vers \u003d netaddr.IPAddress(addr).version"},{"line_number":339,"context_line":"            if vers \u003d\u003d 4:"},{"line_number":340,"context_line":"                if v4_ip is None:"},{"line_number":341,"context_line":"                    v4_ip \u003d addr"},{"line_number":342,"context_line":"            elif v6_ip is None:"}],"source_content_type":"text/x-python","patch_set":35,"id":"e14a5037_22f4a894","line":339,"range":{"start_line":339,"start_character":23,"end_line":339,"end_character":24},"updated":"2023-11-15 22:45:19.000000000","message":"nit: could use constant","commit_id":"4f998326d28bb128df56fa5b874d5b336445f06f"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"ec16583152a4e21120b965097c155cc85bef4c25","unresolved":false,"context_lines":[{"line_number":336,"context_line":"        for fixed_ip in gateway[\u0027external_fixed_ips\u0027]:"},{"line_number":337,"context_line":"            addr \u003d fixed_ip[\u0027ip_address\u0027]"},{"line_number":338,"context_line":"            vers \u003d netaddr.IPAddress(addr).version"},{"line_number":339,"context_line":"            if vers \u003d\u003d 4:"},{"line_number":340,"context_line":"                if v4_ip is None:"},{"line_number":341,"context_line":"                    v4_ip \u003d addr"},{"line_number":342,"context_line":"            elif v6_ip is None:"}],"source_content_type":"text/x-python","patch_set":35,"id":"fa19dd1c_df7102da","line":339,"range":{"start_line":339,"start_character":23,"end_line":339,"end_character":24},"in_reply_to":"e14a5037_22f4a894","updated":"2023-11-16 20:16:37.000000000","message":"fixed","commit_id":"4f998326d28bb128df56fa5b874d5b336445f06f"}],"neutron_vpnaas/tests/functional/openswan/test_ovn_openswan.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"7cf60ee8aa2b8112fde39d2f53684135b2c50f34","unresolved":true,"context_lines":[{"line_number":1,"context_line":"from neutron_vpnaas.tests.functional.common import test_ovn"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"class TestOvnOpenSwan(test_ovn.TestOvnVPNAgentBase):"}],"source_content_type":"text/x-python","patch_set":29,"id":"27368e6b_2851517a","line":1,"updated":"2023-07-24 11:09:41.000000000","message":"You missed Apache licence in this file","commit_id":"b784c22021750c816e9db7473a63784d25f07502"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"d64656f6182a159d5c22d48144a9720c862d3087","unresolved":false,"context_lines":[{"line_number":1,"context_line":"from neutron_vpnaas.tests.functional.common import test_ovn"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"class TestOvnOpenSwan(test_ovn.TestOvnVPNAgentBase):"}],"source_content_type":"text/x-python","patch_set":29,"id":"7c55807e_1f9c9617","line":1,"in_reply_to":"27368e6b_2851517a","updated":"2023-07-25 09:43:59.000000000","message":"added it","commit_id":"b784c22021750c816e9db7473a63784d25f07502"}],"neutron_vpnaas/tests/functional/strongswan/test_ovn_strongswan.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"7cf60ee8aa2b8112fde39d2f53684135b2c50f34","unresolved":true,"context_lines":[{"line_number":1,"context_line":"from neutron_vpnaas.tests.functional.common import ovn_base"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"class TestOvnStrongSwan(ovn_base.TestOvnVPNAgentBase):"}],"source_content_type":"text/x-python","patch_set":29,"id":"24b59494_83c5cd06","line":1,"updated":"2023-07-24 11:09:41.000000000","message":"ditto","commit_id":"b784c22021750c816e9db7473a63784d25f07502"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"d64656f6182a159d5c22d48144a9720c862d3087","unresolved":false,"context_lines":[{"line_number":1,"context_line":"from neutron_vpnaas.tests.functional.common import ovn_base"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"class TestOvnStrongSwan(ovn_base.TestOvnVPNAgentBase):"}],"source_content_type":"text/x-python","patch_set":29,"id":"109df4fc_91f1c876","line":1,"in_reply_to":"24b59494_83c5cd06","updated":"2023-07-25 09:43:59.000000000","message":"added the license","commit_id":"b784c22021750c816e9db7473a63784d25f07502"}],"neutron_vpnaas/tests/unit/db/vpn/test_vpn_ext_gw_db.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"7cf60ee8aa2b8112fde39d2f53684135b2c50f34","unresolved":true,"context_lines":[{"line_number":8,"context_line":"# distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT"},{"line_number":9,"context_line":"# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":10,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"# under the License."},{"line_number":12,"context_line":"from neutron.api import extensions"},{"line_number":13,"context_line":"from neutron.tests.unit.api import test_extensions"},{"line_number":14,"context_line":"from neutron.tests.unit.extensions import test_l3 as test_l3_plugin"}],"source_content_type":"text/x-python","patch_set":29,"id":"963e2488_a8b151e7","line":11,"updated":"2023-07-24 11:09:41.000000000","message":"nitty nit: I\u0027m not sure if it\u0027s required but usually have one empty line between licence and imports","commit_id":"b784c22021750c816e9db7473a63784d25f07502"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"d64656f6182a159d5c22d48144a9720c862d3087","unresolved":false,"context_lines":[{"line_number":8,"context_line":"# distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT"},{"line_number":9,"context_line":"# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":10,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"# under the License."},{"line_number":12,"context_line":"from neutron.api import extensions"},{"line_number":13,"context_line":"from neutron.tests.unit.api import test_extensions"},{"line_number":14,"context_line":"from neutron.tests.unit.extensions import test_l3 as test_l3_plugin"}],"source_content_type":"text/x-python","patch_set":29,"id":"c24b6273_c30cfe75","line":11,"in_reply_to":"963e2488_a8b151e7","updated":"2023-07-25 09:43:59.000000000","message":"fixed","commit_id":"b784c22021750c816e9db7473a63784d25f07502"}],"neutron_vpnaas/tests/unit/services/vpn/device_drivers/test_ovn_ipsec.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"7cf60ee8aa2b8112fde39d2f53684135b2c50f34","unresolved":true,"context_lines":[{"line_number":12,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":"from unittest import mock"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from neutron.agent.linux import ip_lib"},{"line_number":18,"context_line":"from neutron.conf.agent import common as agent_config"}],"source_content_type":"text/x-python","patch_set":29,"id":"34535881_fb122c02","line":15,"updated":"2023-07-24 11:09:41.000000000","message":"same nit here","commit_id":"b784c22021750c816e9db7473a63784d25f07502"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"d64656f6182a159d5c22d48144a9720c862d3087","unresolved":false,"context_lines":[{"line_number":12,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":"from unittest import mock"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from neutron.agent.linux import ip_lib"},{"line_number":18,"context_line":"from neutron.conf.agent import common as agent_config"}],"source_content_type":"text/x-python","patch_set":29,"id":"75049a85_64e33eb7","line":15,"in_reply_to":"34535881_fb122c02","updated":"2023-07-25 09:43:59.000000000","message":"fixed","commit_id":"b784c22021750c816e9db7473a63784d25f07502"}],"releasenotes/notes/vpnaas-for-ovn-a487c62b877e3201.yaml":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"7cf60ee8aa2b8112fde39d2f53684135b2c50f34","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"prelude: \u003e"},{"line_number":3,"context_line":"    VPNaaS support for OVN"},{"line_number":4,"context_line":"features:"},{"line_number":5,"context_line":"  - |"},{"line_number":6,"context_line":"    Neutron VPNaaS now supports OVN networking. There is a new stand-alone"}],"source_content_type":"text/x-yaml","patch_set":29,"id":"7412eb5c_847e0ae4","line":3,"updated":"2023-07-24 11:09:41.000000000","message":"not for OVN but for the ML2/OVN backend in Neutron to be strict 😊","commit_id":"b784c22021750c816e9db7473a63784d25f07502"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"d64656f6182a159d5c22d48144a9720c862d3087","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"prelude: \u003e"},{"line_number":3,"context_line":"    VPNaaS support for OVN"},{"line_number":4,"context_line":"features:"},{"line_number":5,"context_line":"  - |"},{"line_number":6,"context_line":"    Neutron VPNaaS now supports OVN networking. There is a new stand-alone"}],"source_content_type":"text/x-yaml","patch_set":29,"id":"a91465bf_3da88406","line":3,"in_reply_to":"7412eb5c_847e0ae4","updated":"2023-07-25 09:43:59.000000000","message":"changed it","commit_id":"b784c22021750c816e9db7473a63784d25f07502"}],"setup.cfg":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"acf5ba2cd3e46403387b6029fd920a313285f756","unresolved":true,"context_lines":[{"line_number":35,"context_line":"    vpnaas \u003d neutron_vpnaas.services.vpn.agent:L3WithVPNaaS"},{"line_number":36,"context_line":"device_drivers \u003d"},{"line_number":37,"context_line":"    neutron.services.vpn.device_drivers.ipsec.OpenSwanDriver \u003d neutron_vpnaas.services.vpn.device_drivers.ipsec:OpenSwanDriver"},{"line_number":38,"context_line":"    neutron.services.vpn.device_drivers.ovn_ipsec.OvnStrongSwanDriver \u003d neutron_vpnaas.services.vpn.device_drivers.ovn_ipsec.OvnStrongSwanDriver"},{"line_number":39,"context_line":"neutron.db.alembic_migrations \u003d"},{"line_number":40,"context_line":"    neutron-vpnaas \u003d neutron_vpnaas.db.migration:alembic_migrations"},{"line_number":41,"context_line":"neutron.service_plugins \u003d"}],"source_content_type":"text/x-ttcn-cfg","patch_set":11,"id":"c0030c70_0b40f7cb","line":38,"updated":"2021-07-14 07:43:39.000000000","message":"This is unnecessary as this was introduced to support the migration from neutron to neutron_vpnaas.","commit_id":"9ab94eab562a6bae42a7a52c846d53d77327d8dc"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"60ca007b30cd3529908f8bc2906390800a0ae8f7","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    vpnaas \u003d neutron_vpnaas.services.vpn.agent:L3WithVPNaaS"},{"line_number":36,"context_line":"device_drivers \u003d"},{"line_number":37,"context_line":"    neutron.services.vpn.device_drivers.ipsec.OpenSwanDriver \u003d neutron_vpnaas.services.vpn.device_drivers.ipsec:OpenSwanDriver"},{"line_number":38,"context_line":"    neutron.services.vpn.device_drivers.ovn_ipsec.OvnStrongSwanDriver \u003d neutron_vpnaas.services.vpn.device_drivers.ovn_ipsec.OvnStrongSwanDriver"},{"line_number":39,"context_line":"neutron.db.alembic_migrations \u003d"},{"line_number":40,"context_line":"    neutron-vpnaas \u003d neutron_vpnaas.db.migration:alembic_migrations"},{"line_number":41,"context_line":"neutron.service_plugins \u003d"}],"source_content_type":"text/x-ttcn-cfg","patch_set":11,"id":"4ef34038_e1616451","line":38,"in_reply_to":"c0030c70_0b40f7cb","updated":"2021-07-28 09:43:08.000000000","message":"removed the line","commit_id":"9ab94eab562a6bae42a7a52c846d53d77327d8dc"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"acf5ba2cd3e46403387b6029fd920a313285f756","unresolved":true,"context_lines":[{"line_number":45,"context_line":"oslo.config.opts \u003d"},{"line_number":46,"context_line":"    neutron.vpnaas \u003d neutron_vpnaas.opts:list_opts"},{"line_number":47,"context_line":"    neutron.vpnaas.agent \u003d neutron_vpnaas.opts:list_agent_opts"},{"line_number":48,"context_line":"    neutron.vpnaas.ovn_agent \u003d neutron_vpnaas.opts:list_ovn_agent_opts"},{"line_number":49,"context_line":"oslo.policy.policies \u003d"},{"line_number":50,"context_line":"    neutron-vpnaas \u003d neutron_vpnaas.policies:list_rules"},{"line_number":51,"context_line":"neutron.policies \u003d"}],"source_content_type":"text/x-ttcn-cfg","patch_set":11,"id":"df6e30d1_778dc2ec","line":48,"updated":"2021-07-14 07:43:39.000000000","message":"You need to add a corresponding config file similar to etc/oslo-config-generator/vpn_agent.ini.\n\ndoc/source/configuration/index.rst also needs to be updated to include the config reference for ovn-vpn-agent.","commit_id":"9ab94eab562a6bae42a7a52c846d53d77327d8dc"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"60ca007b30cd3529908f8bc2906390800a0ae8f7","unresolved":true,"context_lines":[{"line_number":45,"context_line":"oslo.config.opts \u003d"},{"line_number":46,"context_line":"    neutron.vpnaas \u003d neutron_vpnaas.opts:list_opts"},{"line_number":47,"context_line":"    neutron.vpnaas.agent \u003d neutron_vpnaas.opts:list_agent_opts"},{"line_number":48,"context_line":"    neutron.vpnaas.ovn_agent \u003d neutron_vpnaas.opts:list_ovn_agent_opts"},{"line_number":49,"context_line":"oslo.policy.policies \u003d"},{"line_number":50,"context_line":"    neutron-vpnaas \u003d neutron_vpnaas.policies:list_rules"},{"line_number":51,"context_line":"neutron.policies \u003d"}],"source_content_type":"text/x-ttcn-cfg","patch_set":11,"id":"e2b3083b_86f1d5b4","line":48,"in_reply_to":"df6e30d1_778dc2ec","updated":"2021-07-28 09:43:08.000000000","message":"added the config file (neutron_ovn_vpn_agent.ini)","commit_id":"9ab94eab562a6bae42a7a52c846d53d77327d8dc"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"b1952b6f7184dc35ff4e4aac3e32b76d619e7f5f","unresolved":false,"context_lines":[{"line_number":45,"context_line":"oslo.config.opts \u003d"},{"line_number":46,"context_line":"    neutron.vpnaas \u003d neutron_vpnaas.opts:list_opts"},{"line_number":47,"context_line":"    neutron.vpnaas.agent \u003d neutron_vpnaas.opts:list_agent_opts"},{"line_number":48,"context_line":"    neutron.vpnaas.ovn_agent \u003d neutron_vpnaas.opts:list_ovn_agent_opts"},{"line_number":49,"context_line":"oslo.policy.policies \u003d"},{"line_number":50,"context_line":"    neutron-vpnaas \u003d neutron_vpnaas.policies:list_rules"},{"line_number":51,"context_line":"neutron.policies \u003d"}],"source_content_type":"text/x-ttcn-cfg","patch_set":11,"id":"beb769c7_4ead944c","line":48,"in_reply_to":"e2b3083b_86f1d5b4","updated":"2021-08-17 15:37:56.000000000","message":"added neutron_ovn_vpn_agent to doc/source/configuration/index.rst","commit_id":"9ab94eab562a6bae42a7a52c846d53d77327d8dc"}],"tox.ini":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"7cf60ee8aa2b8112fde39d2f53684135b2c50f34","unresolved":true,"context_lines":[{"line_number":130,"context_line":"# E126 continuation line over-indented for hanging indent"},{"line_number":131,"context_line":"# E128 continuation line under-indented for visual indent"},{"line_number":132,"context_line":"# E129 visually indented line with same indent as next logical line"},{"line_number":133,"context_line":"# E265 block comment should start with \u0027# \u0027"},{"line_number":134,"context_line":"# W504 line break after binary operator"},{"line_number":135,"context_line":"# I202 Additional newline in a group of imports"},{"line_number":136,"context_line":"# H404 multi line docstring should start with a summary"}],"source_content_type":"text/x-properties","patch_set":29,"id":"ccc5be45_378d891e","line":133,"updated":"2023-07-24 11:09:41.000000000","message":"why this change?","commit_id":"b784c22021750c816e9db7473a63784d25f07502"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"22ac3f587ae5ca44c83c8d292a4de9c1852b628b","unresolved":false,"context_lines":[{"line_number":130,"context_line":"# E126 continuation line over-indented for hanging indent"},{"line_number":131,"context_line":"# E128 continuation line under-indented for visual indent"},{"line_number":132,"context_line":"# E129 visually indented line with same indent as next logical line"},{"line_number":133,"context_line":"# E265 block comment should start with \u0027# \u0027"},{"line_number":134,"context_line":"# W504 line break after binary operator"},{"line_number":135,"context_line":"# I202 Additional newline in a group of imports"},{"line_number":136,"context_line":"# H404 multi line docstring should start with a summary"}],"source_content_type":"text/x-properties","patch_set":29,"id":"8243e514_ae6be8b9","line":133,"in_reply_to":"ccc5be45_378d891e","updated":"2023-07-24 15:43:35.000000000","message":"in the past I had some tox errors because of this line and I changed it. That change is not needed anymore and I reverted it.","commit_id":"b784c22021750c816e9db7473a63784d25f07502"}]}
