)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"057e7aa0b4b311b387c3fee1f87ccb2d24213bef","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Make ovs evpn driver an os-ken app"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Use legacy implementation that uses ovs-vctl tool to setup flows on"},{"line_number":10,"context_line":"the br-tun, as with native implementation same bridge can\u0027t be managed"},{"line_number":11,"context_line":"by two controllers."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"6025e708_f861c2d4","line":9,"range":{"start_line":9,"start_character":36,"end_line":9,"end_character":49},"updated":"2021-03-01 07:39:30.000000000","message":"nit: it works with ovsdb actually as I see, but if it works I am fine with it","commit_id":"0146eda9d915e53dffb2107dd12c2ffa15e90e7c"}],"networking_bagpipe/bagpipe_bgp/vpn/evpn/ovs.py":[{"author":{"_account_id":12021,"name":"Thomas Morin","email":"tmmorin.orange@gmail.com","username":"tmorin"},"change_message_id":"6bd8e6e48ccd674b9532f32fdb086400a7e61b93","unresolved":false,"context_lines":[{"line_number":276,"context_line":"            \u0027br_tun\u0027: _make_br_cls(br_tun.OVSTunnelBridge)"},{"line_number":277,"context_line":"        }"},{"line_number":278,"context_line":"        self.bridge \u003d dataplane_utils.OVSBridgeWithGroups("},{"line_number":279,"context_line":"            bridge_classes[\u0027br_tun\u0027]"},{"line_number":280,"context_line":"        )"},{"line_number":281,"context_line":"        self.tunnel_mgr \u003d TunnelManager(self.bridge,"},{"line_number":282,"context_line":"                                        self.get_local_address())"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_e8176d53","line":279,"updated":"2020-10-08 08:39:14.000000000","message":"I\u0027m surprised: OVSBridgeWithGroups expects a bridge object as init parameter, and here what it is given is a bridge class.","commit_id":"4018e4b038f9d524bc89021024cc8c6b95049b11"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"07427f2de8054eb3a00e7fc1a089447be1e528d2","unresolved":false,"context_lines":[{"line_number":276,"context_line":"            \u0027br_tun\u0027: _make_br_cls(br_tun.OVSTunnelBridge)"},{"line_number":277,"context_line":"        }"},{"line_number":278,"context_line":"        self.bridge \u003d dataplane_utils.OVSBridgeWithGroups("},{"line_number":279,"context_line":"            bridge_classes[\u0027br_tun\u0027]"},{"line_number":280,"context_line":"        )"},{"line_number":281,"context_line":"        self.tunnel_mgr \u003d TunnelManager(self.bridge,"},{"line_number":282,"context_line":"                                        self.get_local_address())"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_5b4285ad","line":279,"in_reply_to":"9f560f44_e8176d53","updated":"2020-10-09 18:30:30.000000000","message":"you are right, I hope with this I can make this driver work as os-ken app without refactoring everything around it.","commit_id":"4018e4b038f9d524bc89021024cc8c6b95049b11"},{"author":{"_account_id":12021,"name":"Thomas Morin","email":"tmmorin.orange@gmail.com","username":"tmorin"},"change_message_id":"6bd8e6e48ccd674b9532f32fdb086400a7e61b93","unresolved":false,"context_lines":[{"line_number":278,"context_line":"        self.bridge \u003d dataplane_utils.OVSBridgeWithGroups("},{"line_number":279,"context_line":"            bridge_classes[\u0027br_tun\u0027]"},{"line_number":280,"context_line":"        )"},{"line_number":281,"context_line":"        self.tunnel_mgr \u003d TunnelManager(self.bridge,"},{"line_number":282,"context_line":"                                        self.get_local_address())"},{"line_number":283,"context_line":"        return hub.spawn(bgp_daemon_wrapper, raise_error\u003dTrue)"},{"line_number":284,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_680b5d2a","line":281,"updated":"2020-10-08 08:39:14.000000000","message":"(same here)","commit_id":"4018e4b038f9d524bc89021024cc8c6b95049b11"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"057e7aa0b4b311b387c3fee1f87ccb2d24213bef","unresolved":true,"context_lines":[{"line_number":264,"context_line":"        config.set_default_root_helper()"},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"        self.bridge \u003d dataplane_utils.OVSBridgeWithGroups("},{"line_number":267,"context_line":"            ovs_bridge.OVSTunnelBridge(self.config.ovs_bridge)"},{"line_number":268,"context_line":"        )"},{"line_number":269,"context_line":"        self.tunnel_mgr \u003d TunnelManager(self.bridge,"},{"line_number":270,"context_line":"                                        self.get_local_address())"}],"source_content_type":"text/x-python","patch_set":7,"id":"62bddba8_e979645b","line":267,"range":{"start_line":267,"start_character":51,"end_line":267,"end_character":61},"updated":"2021-03-01 07:39:30.000000000","message":"nit: Yeah this config has terrible name, it points as default to br_mpls,\nso I would say the modul name and the class should represent this: mpls_ovs_bridge.OVSMplsBridge","commit_id":"0146eda9d915e53dffb2107dd12c2ffa15e90e7c"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"ca5cbf6ecd66a90d682185bb36e5cf86335fd279","unresolved":true,"context_lines":[{"line_number":264,"context_line":"        config.set_default_root_helper()"},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"        self.bridge \u003d dataplane_utils.OVSBridgeWithGroups("},{"line_number":267,"context_line":"            ovs_bridge.OVSTunnelBridge(self.config.ovs_bridge)"},{"line_number":268,"context_line":"        )"},{"line_number":269,"context_line":"        self.tunnel_mgr \u003d TunnelManager(self.bridge,"},{"line_number":270,"context_line":"                                        self.get_local_address())"}],"source_content_type":"text/x-python","patch_set":7,"id":"63d5402f_e728c0a2","line":267,"range":{"start_line":267,"start_character":51,"end_line":267,"end_character":61},"in_reply_to":"3de72aff_860c4c8e","updated":"2021-03-03 12:59:05.000000000","message":"you are right, my bad","commit_id":"0146eda9d915e53dffb2107dd12c2ffa15e90e7c"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"5bbd70f1b0dc956080423ce7b690846806543b2e","unresolved":true,"context_lines":[{"line_number":264,"context_line":"        config.set_default_root_helper()"},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"        self.bridge \u003d dataplane_utils.OVSBridgeWithGroups("},{"line_number":267,"context_line":"            ovs_bridge.OVSTunnelBridge(self.config.ovs_bridge)"},{"line_number":268,"context_line":"        )"},{"line_number":269,"context_line":"        self.tunnel_mgr \u003d TunnelManager(self.bridge,"},{"line_number":270,"context_line":"                                        self.get_local_address())"}],"source_content_type":"text/x-python","patch_set":7,"id":"3de72aff_860c4c8e","line":267,"range":{"start_line":267,"start_character":51,"end_line":267,"end_character":61},"in_reply_to":"62bddba8_e979645b","updated":"2021-03-02 22:21:00.000000000","message":"It is br-tun not MPLS, please see L254. The MPLS bridge is not used in EVPN.","commit_id":"0146eda9d915e53dffb2107dd12c2ffa15e90e7c"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"7e8f35aaeb6894cf060ec9a7d0b537d51838d1fd","unresolved":true,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"from neutron.plugins.ml2.drivers.openvswitch.agent.common import \\"},{"line_number":30,"context_line":"    constants as ovs_const"},{"line_number":31,"context_line":"from neutron.plugins.ml2.drivers.openvswitch.agent.openflow.native import \\"},{"line_number":32,"context_line":"    br_tun"},{"line_number":33,"context_line":"from neutron.plugins.ml2.drivers.openvswitch.agent import ovs_neutron_agent"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"from neutron_lib import constants as n_consts"}],"source_content_type":"text/x-python","patch_set":9,"id":"19131747_dd4e212a","side":"PARENT","line":32,"range":{"start_line":31,"start_character":0,"end_line":32,"end_character":10},"updated":"2021-03-12 04:58:14.000000000","message":"Why replace this native bridge interfaces with a \"ofctl\" style?","commit_id":"a7e479f043d31cbfe57f5b0039757fa8e3546547"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"60754730dc8cdbf85c17d11dde25c54e07ed4c87","unresolved":true,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"from neutron.plugins.ml2.drivers.openvswitch.agent.common import \\"},{"line_number":30,"context_line":"    constants as ovs_const"},{"line_number":31,"context_line":"from neutron.plugins.ml2.drivers.openvswitch.agent.openflow.native import \\"},{"line_number":32,"context_line":"    br_tun"},{"line_number":33,"context_line":"from neutron.plugins.ml2.drivers.openvswitch.agent import ovs_neutron_agent"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"from neutron_lib import constants as n_consts"}],"source_content_type":"text/x-python","patch_set":9,"id":"e99006be_436f0afc","side":"PARENT","line":32,"range":{"start_line":31,"start_character":0,"end_line":32,"end_character":10},"in_reply_to":"19131747_dd4e212a","updated":"2021-03-15 16:28:08.000000000","message":"It looks that managing the same bridge by two agents that uses native implementation is not possible, as both of them will have to setup controller on the bridge and all tries to do so on our side failed with stuck agent (it was waiting for some callback from the switch) but might be I\u0027m missing something.","commit_id":"a7e479f043d31cbfe57f5b0039757fa8e3546547"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"e2f2af8104e2b74eb89b50b9ab457ebbffebffd9","unresolved":true,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"from neutron.plugins.ml2.drivers.openvswitch.agent.common import \\"},{"line_number":30,"context_line":"    constants as ovs_const"},{"line_number":31,"context_line":"from neutron.plugins.ml2.drivers.openvswitch.agent.openflow.native import \\"},{"line_number":32,"context_line":"    br_tun"},{"line_number":33,"context_line":"from neutron.plugins.ml2.drivers.openvswitch.agent import ovs_neutron_agent"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"from neutron_lib import constants as n_consts"}],"source_content_type":"text/x-python","patch_set":9,"id":"9619932d_4e5cb2c1","side":"PARENT","line":32,"range":{"start_line":31,"start_character":0,"end_line":32,"end_character":10},"in_reply_to":"e99006be_436f0afc","updated":"2021-03-16 09:43:26.000000000","message":"OK, I got your point.\nSeems this change https://review.opendev.org/c/openstack/networking-bagpipe/+/662305 was not tested properly. It broke this driver since 2019...","commit_id":"a7e479f043d31cbfe57f5b0039757fa8e3546547"}],"networking_bagpipe/bagpipe_bgp/vpn/evpn/ovs_bridge.py":[{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"057e7aa0b4b311b387c3fee1f87ccb2d24213bef","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":7,"id":"6bc464cc_c307983b","updated":"2021-03-01 07:39:30.000000000","message":"nit: the file name should be ovs_tunnel_bridge to be clear or mpls_ovs_bridge","commit_id":"0146eda9d915e53dffb2107dd12c2ffa15e90e7c"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"5bbd70f1b0dc956080423ce7b690846806543b2e","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":7,"id":"d4a9214e_f9989591","in_reply_to":"6bc464cc_c307983b","updated":"2021-03-02 22:21:00.000000000","message":"renamed to ovs_tunnel_bridge","commit_id":"0146eda9d915e53dffb2107dd12c2ffa15e90e7c"}],"networking_bagpipe/bagpipe_bgp/vpn/evpn/ovs_tunnel_bridge.py":[{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"34c861521a5cb92aaa917d1eb226cbde083dcd24","unresolved":true,"context_lines":[{"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":""},{"line_number":13,"context_line":"import netaddr"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from neutron.agent.common import ovs_lib"},{"line_number":16,"context_line":"from neutron.plugins.ml2.drivers.openvswitch.agent.common \\"}],"source_content_type":"text/x-python","patch_set":9,"id":"4e0297a9_c1ffd526","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":14},"updated":"2021-03-16 11:53:51.000000000","message":"Sorry, unexpected removal...","commit_id":"4fb14bf629de2acd20e982816167ab12e2c47ee4"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"e2f2af8104e2b74eb89b50b9ab457ebbffebffd9","unresolved":true,"context_lines":[{"line_number":17,"context_line":"    import constants"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class OVSTunnelBridge(ovs_lib.OVSBridge):"},{"line_number":21,"context_line":"    \"\"\"Tunnel bridge specific logic.\"\"\""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    def setup_tunnel_port(self, network_type, port, deferred_br\u003dNone):"}],"source_content_type":"text/x-python","patch_set":9,"id":"7e389742_bf042316","line":20,"range":{"start_line":20,"start_character":22,"end_line":20,"end_character":40},"updated":"2021-03-16 09:43:26.000000000","message":"I have an idea is to implement the tunnel bridge with \"ovs-ofctl\" command execution only.\nWe can move the original neutron code back to here to prevent some unexpected aggression on this project someday.","commit_id":"4fb14bf629de2acd20e982816167ab12e2c47ee4"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"7e8f35aaeb6894cf060ec9a7d0b537d51838d1fd","unresolved":true,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    def setup_tunnel_port(self, network_type, port, deferred_br\u003dNone):"},{"line_number":24,"context_line":"        br \u003d deferred_br if deferred_br else self"},{"line_number":25,"context_line":"        br.add_flow(priority\u003d1,"},{"line_number":26,"context_line":"                    in_port\u003dport,"},{"line_number":27,"context_line":"                    actions\u003d\"resubmit(,%s)\" %"},{"line_number":28,"context_line":"                    constants.TUN_TABLE[network_type])"}],"source_content_type":"text/x-python","patch_set":9,"id":"a2422ef8_23842b32","line":25,"range":{"start_line":25,"start_character":11,"end_line":25,"end_character":19},"updated":"2021-03-12 04:58:14.000000000","message":"Why not use native method for flow install?","commit_id":"4fb14bf629de2acd20e982816167ab12e2c47ee4"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"97dd09b435f7bf173e971ede58cf30453b48925e","unresolved":true,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    def __init__(self, br_name):"},{"line_number":26,"context_line":"        super(OVSTunnelBridge, self).__init__(br_name)"},{"line_number":27,"context_line":"        self.ovsdb \u003d ovsdb_api.from_config(self, iface_name\u003d\"vsctl\")"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def setup_tunnel_port(self, network_type, port):"},{"line_number":30,"context_line":"        self.add_flow(priority\u003d1,"}],"source_content_type":"text/x-python","patch_set":12,"id":"7a4ef457_f5f98539","line":27,"range":{"start_line":27,"start_character":8,"end_line":27,"end_character":68},"updated":"2021-03-17 01:36:40.000000000","message":"Ooops...Current solution works fine in my local test env which still have the ovsdb DB API. Back to my idea here [1], we can directly run ovs-vsctl and ovs-ofctl in this bridge implementation. Otherwise, seems we need to move that ovsdb API implementation [2] back...\n\n[1] https://review.opendev.org/c/openstack/networking-bagpipe/+/735934/9/networking_bagpipe/bagpipe_bgp/vpn/evpn/ovs_tunnel_bridge.py#20\n[2] https://review.opendev.org/c/openstack/neutron/+/570259/20/neutron/agent/ovsdb/impl_vsctl.py","commit_id":"d34436133344de530e60669c5cd750010aa5d254"}]}
