)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"4fa4e48bb62f773f44863888ab1e21495cd833b1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"ec8f794b_1ff87a41","updated":"2026-05-19 20:40:45.000000000","message":"lgtm","commit_id":"5ec2556188cea930dc4e1f293bb5a15f9a756a33"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"bb4c85da35a7d55aced1e4687de10070d250347a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"be235b13_dd306c09","updated":"2026-05-19 17:24:53.000000000","message":"recheck - new neutron-lib version has been bumped https://review.opendev.org/c/openstack/requirements/+/989088","commit_id":"5ec2556188cea930dc4e1f293bb5a15f9a756a33"},{"author":{"_account_id":13861,"name":"yatin","email":"ykarel@redhat.com","username":"yatinkarel"},"change_message_id":"7f745664afde3fbb5d2da7ee7e7ca413654c9db5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"1e72e977_6ffe9943","updated":"2026-05-20 06:19:46.000000000","message":"recheck functional and pep8 jobs fixed","commit_id":"5ec2556188cea930dc4e1f293bb5a15f9a756a33"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"64d24ec44abb9327bd806c0a6b98029204995eb4","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"dffd6abc_4015d55d","updated":"2026-06-22 07:47:55.000000000","message":"This patch looks really like very private-cloud oriented solution. And it was merged *really* fast :)\n\nIt basically restricts any router creation with connection to the external network as \"admin-only\" operation, which is quite incompatible with public cloud and self-service assumed by users.\n\nAre there any plans on having some similar API extension for /networks so that it was possible to set a VNI id to the external network, which is admin operation, and once a router is connected to an external network, it\u0027s VNI is defined by the network?","commit_id":"b7a5e077ed0abbe678159ad1e2ba4d5ed2e67bbc"},{"author":{"_account_id":38298,"name":"Helen Chen","display_name":"Helen Chen","email":"ichen@redhat.com","username":"ingwherchen"},"change_message_id":"2b4ba4e641ed61396aacb8f873bdd7a84b09d9e3","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"0624b726_f240cc85","in_reply_to":"dffd6abc_4015d55d","updated":"2026-06-22 13:38:59.000000000","message":"Actually, the review for the specification was open for over a month.  https://review.opendev.org/c/openstack/neutron-specs/+/982256\n\nThe earlier revisions in the spec allowed for non-admin users to create a VNI, but changed due to this comment.  https://review.opendev.org/c/openstack/neutron-specs/+/982256/comment/d0bc1513_8d5adb89/\n\nWhen the second API, where Neutron assigns the VNI, is implemented, that API can certainly be made available for non-admin users if there\u0027s a use case.","commit_id":"b7a5e077ed0abbe678159ad1e2ba4d5ed2e67bbc"}],"neutron/conf/policies/evpn.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"0b5666c0e894de3f0bbf2c5d465532f9d8d2aba9","unresolved":true,"context_lines":[{"line_number":15,"context_line":"from neutron.conf.policies import base"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"COLLECTION_PATH \u003d \u0027/routers\u0027"},{"line_number":19,"context_line":"RESOURCE_PATH \u003d \u0027/routers/{id}\u0027"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"ACTION_POST: list[policy.Operation] \u003d ["}],"source_content_type":"text/x-python","patch_set":6,"id":"581a08ae_68cf7e04","line":18,"range":{"start_line":18,"start_character":0,"end_line":18,"end_character":2},"updated":"2026-05-21 07:21:34.000000000","message":"These policies should be in the `routers` policies file.","commit_id":"b7a5e077ed0abbe678159ad1e2ba4d5ed2e67bbc"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"71e98235ccf8540d22470d48662ff903436c161f","unresolved":true,"context_lines":[{"line_number":15,"context_line":"from neutron.conf.policies import base"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"COLLECTION_PATH \u003d \u0027/routers\u0027"},{"line_number":19,"context_line":"RESOURCE_PATH \u003d \u0027/routers/{id}\u0027"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"ACTION_POST: list[policy.Operation] \u003d ["}],"source_content_type":"text/x-python","patch_set":6,"id":"e3866396_511c88d6","line":18,"range":{"start_line":18,"start_character":0,"end_line":18,"end_character":2},"in_reply_to":"581a08ae_68cf7e04","updated":"2026-05-21 19:24:21.000000000","message":"Is there a functional impact if it\u0027s separate or is it just so the code is \"clean\"? I can move it there if needed.","commit_id":"b7a5e077ed0abbe678159ad1e2ba4d5ed2e67bbc"}],"neutron/services/evpn/plugin.py":[{"author":{"_account_id":13861,"name":"yatin","email":"ykarel@redhat.com","username":"yatinkarel"},"change_message_id":"5fc47d9ee7b1f75e2555f3d2143c629bc3fb11ab","unresolved":true,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    __native_pagination_support \u003d True"},{"line_number":46,"context_line":"    __native_sorting_support \u003d True"},{"line_number":47,"context_line":"    __filter_validation_support \u003d True"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def __init__(self):"},{"line_number":50,"context_line":"        super().__init__()"}],"source_content_type":"text/x-python","patch_set":4,"id":"f247f3a8_09776ee1","line":47,"updated":"2026-05-19 11:35:46.000000000","message":"This shouldn\u0027t be needed here since https://review.opendev.org/c/openstack/neutron/+/978463","commit_id":"7f5d4284a1a53bf7a0c81dfd0f876fd466cbed0b"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"e7dc41db4b76551432ae83e9db9f9adf30a300b4","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    __native_pagination_support \u003d True"},{"line_number":46,"context_line":"    __native_sorting_support \u003d True"},{"line_number":47,"context_line":"    __filter_validation_support \u003d True"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def __init__(self):"},{"line_number":50,"context_line":"        super().__init__()"}],"source_content_type":"text/x-python","patch_set":4,"id":"4c572e59_7c87ca71","line":47,"in_reply_to":"f247f3a8_09776ee1","updated":"2026-05-19 13:57:18.000000000","message":"Done","commit_id":"7f5d4284a1a53bf7a0c81dfd0f876fd466cbed0b"},{"author":{"_account_id":13861,"name":"yatin","email":"ykarel@redhat.com","username":"yatinkarel"},"change_message_id":"5fc47d9ee7b1f75e2555f3d2143c629bc3fb11ab","unresolved":true,"context_lines":[{"line_number":96,"context_line":"        router_id \u003d payload.resource_id"},{"line_number":97,"context_line":"        interface_info \u003d payload.metadata.get(\u0027interface_info\u0027, {})"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        LOG.info(\"EVPN interface create interface_info: %s\", interface_info)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        if not interface_info.get(evpn_apidef.ADVERTISE_HOST):"},{"line_number":102,"context_line":"            LOG.info(\"EVPN interface create no advertise_host requested: %s\","}],"source_content_type":"text/x-python","patch_set":4,"id":"5c0ac9be_1ab6c7ee","line":99,"updated":"2026-05-19 11:35:46.000000000","message":"do we need all these info LOGs here and other places or were just added for local debug/testing? as these will add some unnecessary noice when advertise_host not involved","commit_id":"7f5d4284a1a53bf7a0c81dfd0f876fd466cbed0b"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"e7dc41db4b76551432ae83e9db9f9adf30a300b4","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        router_id \u003d payload.resource_id"},{"line_number":97,"context_line":"        interface_info \u003d payload.metadata.get(\u0027interface_info\u0027, {})"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        LOG.info(\"EVPN interface create interface_info: %s\", interface_info)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        if not interface_info.get(evpn_apidef.ADVERTISE_HOST):"},{"line_number":102,"context_line":"            LOG.info(\"EVPN interface create no advertise_host requested: %s\","}],"source_content_type":"text/x-python","patch_set":4,"id":"15de75fe_0dfb3c8a","line":99,"in_reply_to":"5c0ac9be_1ab6c7ee","updated":"2026-05-19 13:57:18.000000000","message":"Good point, I\u0027ll move it to debug level","commit_id":"7f5d4284a1a53bf7a0c81dfd0f876fd466cbed0b"}],"neutron/services/evpn/policies.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"17563b7cc538e61bc9b8216939a668905099a2f2","unresolved":true,"context_lines":[{"line_number":1,"context_line":"#  Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":2,"context_line":"#  not use this file except in compliance with the License. You may obtain"},{"line_number":3,"context_line":"#  a copy of the License at"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":4,"id":"8a0e7aa9_23bb0e2c","line":1,"updated":"2026-05-19 07:40:16.000000000","message":"please move this to neutron/conf/policies/evpn.py - that way it will be consistent with all other policies which we have defined.\n\nAlso, please add unit tests for those new policies.","commit_id":"7f5d4284a1a53bf7a0c81dfd0f876fd466cbed0b"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"e7dc41db4b76551432ae83e9db9f9adf30a300b4","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#  Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":2,"context_line":"#  not use this file except in compliance with the License. You may obtain"},{"line_number":3,"context_line":"#  a copy of the License at"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":4,"id":"6af02d51_c94f41d8","line":1,"in_reply_to":"8a0e7aa9_23bb0e2c","updated":"2026-05-19 13:57:18.000000000","message":"Done","commit_id":"7f5d4284a1a53bf7a0c81dfd0f876fd466cbed0b"}],"pyproject.toml":[{"author":{"_account_id":13861,"name":"yatin","email":"ykarel@redhat.com","username":"yatinkarel"},"change_message_id":"5fc47d9ee7b1f75e2555f3d2143c629bc3fb11ab","unresolved":true,"context_lines":[{"line_number":101,"context_line":"local_ip \u003d \"neutron.services.local_ip.local_ip_plugin:LocalIPPlugin\""},{"line_number":102,"context_line":"ndp_proxy \u003d \"neutron.services.ndp_proxy.plugin:NDPProxyPlugin\""},{"line_number":103,"context_line":"ovn-bgp \u003d \"neutron.services.bgp.plugin:BGPServicePlugin\""},{"line_number":104,"context_line":"evpn \u003d \"neutron.services.evpn.plugin:EVPNPlugin\""},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"[project.entry-points.\"neutron.ml2.type_drivers\"]"},{"line_number":107,"context_line":"flat \u003d \"neutron.plugins.ml2.drivers.type_flat:FlatTypeDriver\""}],"source_content_type":"text/x-toml","patch_set":4,"id":"8620f393_108c5306","line":104,"updated":"2026-05-19 11:35:46.000000000","message":"so this new service will be used with non ml2/ovn as well? i.e any reason to name it similar to ovn-bgp above? asking as the spec itself only mentioned OVN implementation.","commit_id":"7f5d4284a1a53bf7a0c81dfd0f876fd466cbed0b"},{"author":{"_account_id":13861,"name":"yatin","email":"ykarel@redhat.com","username":"yatinkarel"},"change_message_id":"7f745664afde3fbb5d2da7ee7e7ca413654c9db5","unresolved":false,"context_lines":[{"line_number":101,"context_line":"local_ip \u003d \"neutron.services.local_ip.local_ip_plugin:LocalIPPlugin\""},{"line_number":102,"context_line":"ndp_proxy \u003d \"neutron.services.ndp_proxy.plugin:NDPProxyPlugin\""},{"line_number":103,"context_line":"ovn-bgp \u003d \"neutron.services.bgp.plugin:BGPServicePlugin\""},{"line_number":104,"context_line":"evpn \u003d \"neutron.services.evpn.plugin:EVPNPlugin\""},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"[project.entry-points.\"neutron.ml2.type_drivers\"]"},{"line_number":107,"context_line":"flat \u003d \"neutron.plugins.ml2.drivers.type_flat:FlatTypeDriver\""}],"source_content_type":"text/x-toml","patch_set":4,"id":"8a9bdae5_a50a8f46","line":104,"in_reply_to":"4163d7a0_8f97e116","updated":"2026-05-20 06:19:46.000000000","message":"OK","commit_id":"7f5d4284a1a53bf7a0c81dfd0f876fd466cbed0b"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"e7dc41db4b76551432ae83e9db9f9adf30a300b4","unresolved":true,"context_lines":[{"line_number":101,"context_line":"local_ip \u003d \"neutron.services.local_ip.local_ip_plugin:LocalIPPlugin\""},{"line_number":102,"context_line":"ndp_proxy \u003d \"neutron.services.ndp_proxy.plugin:NDPProxyPlugin\""},{"line_number":103,"context_line":"ovn-bgp \u003d \"neutron.services.bgp.plugin:BGPServicePlugin\""},{"line_number":104,"context_line":"evpn \u003d \"neutron.services.evpn.plugin:EVPNPlugin\""},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"[project.entry-points.\"neutron.ml2.type_drivers\"]"},{"line_number":107,"context_line":"flat \u003d \"neutron.plugins.ml2.drivers.type_flat:FlatTypeDriver\""}],"source_content_type":"text/x-toml","patch_set":4,"id":"4163d7a0_8f97e116","line":104,"in_reply_to":"8620f393_108c5306","updated":"2026-05-19 13:57:18.000000000","message":"It was discussed that the EVPN should be a generic plugin - that allocates VNI per router and offers advertisement for connected networks. The specific implementation will be OVN as per the spec but should be extensible for other non-OVN implementations too. The OVN name was not included on purpose.","commit_id":"7f5d4284a1a53bf7a0c81dfd0f876fd466cbed0b"}]}
