)]}'
{"neutron/agent/linux/interface.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"91469acdca18ec22c08b964f81426be8b7c32e44","unresolved":false,"context_lines":[{"line_number":277,"context_line":"        if pre_ovs_use_veth !\u003d self.conf.ovs_use_veth:"},{"line_number":278,"context_line":"            # Drop old port when the ovs_use_veth changes."},{"line_number":279,"context_line":"            if pre_ovs_use_veth:"},{"line_number":280,"context_line":"                # Drop old veth port when ovs_use_veth change from "},{"line_number":281,"context_line":"                # true to false."},{"line_number":282,"context_line":"                ovs.delete_port(port_name)"},{"line_number":283,"context_line":"                device \u003d ip_lib.IPDevice(device_name, namespace\u003dnamespace)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_b16679ba","line":280,"updated":"2020-09-08 11:59:02.000000000","message":"pep8: W291 trailing whitespace","commit_id":"2848cbefa006937d699a03147b5b52faa09622b7"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"0d9e21f3a94919e70c36b92f7fc60f811f094ce1","unresolved":true,"context_lines":[{"line_number":264,"context_line":""},{"line_number":265,"context_line":"    def plug(self, network_id, port_id, device_name, mac_address,"},{"line_number":266,"context_line":"             bridge\u003dNone, namespace\u003dNone, prefix\u003dNone, mtu\u003dNone, link_up\u003dTrue):"},{"line_number":267,"context_line":"        self.drop_old_port(port_id, bridge, device_name, namespace)"},{"line_number":268,"context_line":"        if not ip_lib.device_exists(device_name,"},{"line_number":269,"context_line":"                                    namespace\u003dnamespace):"},{"line_number":270,"context_line":"            self._safe_plug_new("}],"source_content_type":"text/x-python","patch_set":3,"id":"dbca19a6_33f73e6a","line":267,"range":{"start_line":267,"start_character":8,"end_line":267,"end_character":67},"updated":"2020-11-26 05:33:54.000000000","message":"this will lead to dataplane downtime. I think it needs to be documented","commit_id":"a017d07e3cec4c43f25d3b70ef46a57edaeb5fe4"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"0d9e21f3a94919e70c36b92f7fc60f811f094ce1","unresolved":true,"context_lines":[{"line_number":380,"context_line":"            return"},{"line_number":381,"context_line":"        port_name \u003d ovs_port.port_name"},{"line_number":382,"context_line":"        if port_name.startswith(constants.TAP_DEVICE_PREFIX):"},{"line_number":383,"context_line":"            pre_ovs_use_veth \u003d True"},{"line_number":384,"context_line":"        else:"},{"line_number":385,"context_line":"            pre_ovs_use_veth \u003d False"},{"line_number":386,"context_line":"        if pre_ovs_use_veth !\u003d self.conf.ovs_use_veth:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a362aff_d55e2ab8","line":383,"range":{"start_line":383,"start_character":12,"end_line":383,"end_character":35},"updated":"2020-11-26 05:33:54.000000000","message":"Please correct me if I\u0027m wrong: tap- prefix means veth not used.","commit_id":"a017d07e3cec4c43f25d3b70ef46a57edaeb5fe4"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"f0feb6dc2a3e09eafee6857552498ac803091f2b","unresolved":true,"context_lines":[{"line_number":380,"context_line":"            return"},{"line_number":381,"context_line":"        port_name \u003d ovs_port.port_name"},{"line_number":382,"context_line":"        if port_name.startswith(constants.TAP_DEVICE_PREFIX):"},{"line_number":383,"context_line":"            pre_ovs_use_veth \u003d True"},{"line_number":384,"context_line":"        else:"},{"line_number":385,"context_line":"            pre_ovs_use_veth \u003d False"},{"line_number":386,"context_line":"        if pre_ovs_use_veth !\u003d self.conf.ovs_use_veth:"}],"source_content_type":"text/x-python","patch_set":3,"id":"edbc6415_6e5670f6","line":383,"range":{"start_line":383,"start_character":12,"end_line":383,"end_character":35},"in_reply_to":"02641fa6_d58b6a22","updated":"2020-11-26 08:56:11.000000000","message":"At #348 default dev prefix is TAP, at #354 it is changed to \u0027ns-\u0027 if conf.ovs_use_veth is True.  Am I missing something?","commit_id":"a017d07e3cec4c43f25d3b70ef46a57edaeb5fe4"},{"author":{"_account_id":31769,"name":"Jacy Lee","email":"yajiemango@163.com","username":"yjmango"},"change_message_id":"6badef7e0db1e201a2ba289aecbcb9ac3ef2efb0","unresolved":true,"context_lines":[{"line_number":380,"context_line":"            return"},{"line_number":381,"context_line":"        port_name \u003d ovs_port.port_name"},{"line_number":382,"context_line":"        if port_name.startswith(constants.TAP_DEVICE_PREFIX):"},{"line_number":383,"context_line":"            pre_ovs_use_veth \u003d True"},{"line_number":384,"context_line":"        else:"},{"line_number":385,"context_line":"            pre_ovs_use_veth \u003d False"},{"line_number":386,"context_line":"        if pre_ovs_use_veth !\u003d self.conf.ovs_use_veth:"}],"source_content_type":"text/x-python","patch_set":3,"id":"02641fa6_d58b6a22","line":383,"range":{"start_line":383,"start_character":12,"end_line":383,"end_character":35},"in_reply_to":"1a362aff_d55e2ab8","updated":"2020-11-26 06:38:00.000000000","message":"Not tap prefix means the previous configuration was false and didn\u0027t use veth, if this time change the configuration from false to true, need to delete the port to rebuild in veth type. If don\u0027t delete the older port, #268 here will not enter.\nTap prefix means the previous configuration was true and use veth. If this time not use veth again, here will also need to delete the older veth type port.","commit_id":"a017d07e3cec4c43f25d3b70ef46a57edaeb5fe4"},{"author":{"_account_id":31769,"name":"Jacy Lee","email":"yajiemango@163.com","username":"yjmango"},"change_message_id":"124c438987253e55b34669e0d3babdb3fa3abf65","unresolved":true,"context_lines":[{"line_number":380,"context_line":"            return"},{"line_number":381,"context_line":"        port_name \u003d ovs_port.port_name"},{"line_number":382,"context_line":"        if port_name.startswith(constants.TAP_DEVICE_PREFIX):"},{"line_number":383,"context_line":"            pre_ovs_use_veth \u003d True"},{"line_number":384,"context_line":"        else:"},{"line_number":385,"context_line":"            pre_ovs_use_veth \u003d False"},{"line_number":386,"context_line":"        if pre_ovs_use_veth !\u003d self.conf.ovs_use_veth:"}],"source_content_type":"text/x-python","patch_set":3,"id":"a1a21757_92aecf5c","line":383,"range":{"start_line":383,"start_character":12,"end_line":383,"end_character":35},"in_reply_to":"76e4639c_07af4e8a","updated":"2020-11-26 12:30:41.000000000","message":"Ok, I will add it. Thanks for your review.","commit_id":"a017d07e3cec4c43f25d3b70ef46a57edaeb5fe4"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"121203b86f77eb9b96dd90b4be4d919292c2b316","unresolved":true,"context_lines":[{"line_number":380,"context_line":"            return"},{"line_number":381,"context_line":"        port_name \u003d ovs_port.port_name"},{"line_number":382,"context_line":"        if port_name.startswith(constants.TAP_DEVICE_PREFIX):"},{"line_number":383,"context_line":"            pre_ovs_use_veth \u003d True"},{"line_number":384,"context_line":"        else:"},{"line_number":385,"context_line":"            pre_ovs_use_veth \u003d False"},{"line_number":386,"context_line":"        if pre_ovs_use_veth !\u003d self.conf.ovs_use_veth:"}],"source_content_type":"text/x-python","patch_set":3,"id":"76e4639c_07af4e8a","line":383,"range":{"start_line":383,"start_character":12,"end_line":383,"end_character":35},"in_reply_to":"7d2a7c4e_7eaab35a","updated":"2020-11-26 12:05:15.000000000","message":"Ok, got it now, thanks for your patience. Will you add a note regarding dataplane downtime?","commit_id":"a017d07e3cec4c43f25d3b70ef46a57edaeb5fe4"},{"author":{"_account_id":31769,"name":"Jacy Lee","email":"yajiemango@163.com","username":"yjmango"},"change_message_id":"35e5c67aae77f449228ebe52d1b721c9ffaaf1f8","unresolved":true,"context_lines":[{"line_number":380,"context_line":"            return"},{"line_number":381,"context_line":"        port_name \u003d ovs_port.port_name"},{"line_number":382,"context_line":"        if port_name.startswith(constants.TAP_DEVICE_PREFIX):"},{"line_number":383,"context_line":"            pre_ovs_use_veth \u003d True"},{"line_number":384,"context_line":"        else:"},{"line_number":385,"context_line":"            pre_ovs_use_veth \u003d False"},{"line_number":386,"context_line":"        if pre_ovs_use_veth !\u003d self.conf.ovs_use_veth:"}],"source_content_type":"text/x-python","patch_set":3,"id":"7d2a7c4e_7eaab35a","line":383,"range":{"start_line":383,"start_character":12,"end_line":383,"end_character":35},"in_reply_to":"edbc6415_6e5670f6","updated":"2020-11-26 09:47:55.000000000","message":"At #408, the parameter of \u0027prefix\u0027 always is \u0027qr-\u0027,\u0027sg-\u0027,\u0027qg-\u0027 or \u0027fg-\u0027, then at #358 replace the prefix with TAP if conf.ovs_use_veth is True. Such as qr-xxx,sg-xxx,qg-xxx,fg-xxx will replace the prefix with TAP. \nBut I dont\u0027t find where \u0027ns-\u0027 is used, may I miss someting?","commit_id":"a017d07e3cec4c43f25d3b70ef46a57edaeb5fe4"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"108846110f5a0f616eb3bb673444613ff2f4ab4e","unresolved":true,"context_lines":[{"line_number":264,"context_line":""},{"line_number":265,"context_line":"    def plug(self, network_id, port_id, device_name, mac_address,"},{"line_number":266,"context_line":"             bridge\u003dNone, namespace\u003dNone, prefix\u003dNone, mtu\u003dNone, link_up\u003dTrue):"},{"line_number":267,"context_line":"        # If the parameter ovs_use_veth is changed, here will delete the old"},{"line_number":268,"context_line":"        # port to rebuild. This will lead to dataplane downtime."},{"line_number":269,"context_line":"        self.drop_old_port(port_id, bridge, device_name, namespace)"},{"line_number":270,"context_line":"        if not ip_lib.device_exists(device_name,"},{"line_number":271,"context_line":"                                    namespace\u003dnamespace):"}],"source_content_type":"text/x-python","patch_set":5,"id":"f9298fcc_1204c81b","line":268,"range":{"start_line":267,"start_character":8,"end_line":268,"end_character":64},"updated":"2020-11-27 05:14:27.000000000","message":"I actually ment docs update or release note :)","commit_id":"448542862323e12c965847867cec55d5878e921b"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"108846110f5a0f616eb3bb673444613ff2f4ab4e","unresolved":true,"context_lines":[{"line_number":266,"context_line":"             bridge\u003dNone, namespace\u003dNone, prefix\u003dNone, mtu\u003dNone, link_up\u003dTrue):"},{"line_number":267,"context_line":"        # If the parameter ovs_use_veth is changed, here will delete the old"},{"line_number":268,"context_line":"        # port to rebuild. This will lead to dataplane downtime."},{"line_number":269,"context_line":"        self.drop_old_port(port_id, bridge, device_name, namespace)"},{"line_number":270,"context_line":"        if not ip_lib.device_exists(device_name,"},{"line_number":271,"context_line":"                                    namespace\u003dnamespace):"},{"line_number":272,"context_line":"            self._safe_plug_new("}],"source_content_type":"text/x-python","patch_set":5,"id":"28c3973c_1ae93c32","line":269,"range":{"start_line":269,"start_character":8,"end_line":269,"end_character":67},"updated":"2020-11-27 05:14:27.000000000","message":"This should be incapsulated in OVSInterfaceDriver. Please override plug() there","commit_id":"448542862323e12c965847867cec55d5878e921b"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"108846110f5a0f616eb3bb673444613ff2f4ab4e","unresolved":true,"context_lines":[{"line_number":548,"context_line":"        root_dev.link.set_mtu(mtu)"},{"line_number":549,"context_line":"        ns_dev.link.set_mtu(mtu)"},{"line_number":550,"context_line":""},{"line_number":551,"context_line":"    def drop_old_port(self, port_id, bridge, device_name, namespace):"},{"line_number":552,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":5,"id":"cd2ae560_71d46275","line":552,"range":{"start_line":551,"start_character":4,"end_line":552,"end_character":12},"updated":"2020-11-27 05:14:27.000000000","message":"Not needed in BridgeInterfaceDriver","commit_id":"448542862323e12c965847867cec55d5878e921b"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"8190a0f04ec7202c364761bdc7603ed3667abc4d","unresolved":true,"context_lines":[{"line_number":374,"context_line":"        if not bridge:"},{"line_number":375,"context_line":"            bridge \u003d self.conf.ovs_integration_bridge"},{"line_number":376,"context_line":"        ovs \u003d ovs_lib.OVSBridge(bridge)"},{"line_number":377,"context_line":"        ovs_port \u003d ovs.get_vif_port_by_id(port_id)"},{"line_number":378,"context_line":"        if not ovs_port:"},{"line_number":379,"context_line":"            return"},{"line_number":380,"context_line":"        port_name \u003d ovs_port.port_name"}],"source_content_type":"text/x-python","patch_set":7,"id":"66ca3760_403fbd73","line":377,"range":{"start_line":377,"start_character":8,"end_line":377,"end_character":50},"updated":"2020-11-30 09:11:58.000000000","message":"This action is time-consuming when there are large sets of ports in ovsdb. Everytime the new device is plug to the bridge, it will scan all records in table Interface. The get_vif_port_by_id\u0027s final ovsdbapp call is DbFindCommand which just use idl to get all records and then use the conditions to filter the one you want.\n\nSo, I wonder if we can avoid call such method here. Or how about we do not touch the running code, just add a python script for user when they want to change such option. The script will clean all the remain ports, then restart the agent let the port reprocessed.","commit_id":"38041c3f352d18492a8afcc08f68979bb7647373"},{"author":{"_account_id":31769,"name":"Jacy Lee","email":"yajiemango@163.com","username":"yjmango"},"change_message_id":"2ee431255a9b31fd7454b5f63caf8d883f96578d","unresolved":true,"context_lines":[{"line_number":374,"context_line":"        if not bridge:"},{"line_number":375,"context_line":"            bridge \u003d self.conf.ovs_integration_bridge"},{"line_number":376,"context_line":"        ovs \u003d ovs_lib.OVSBridge(bridge)"},{"line_number":377,"context_line":"        ovs_port \u003d ovs.get_vif_port_by_id(port_id)"},{"line_number":378,"context_line":"        if not ovs_port:"},{"line_number":379,"context_line":"            return"},{"line_number":380,"context_line":"        port_name \u003d ovs_port.port_name"}],"source_content_type":"text/x-python","patch_set":7,"id":"86122c97_e9a7929d","line":377,"range":{"start_line":377,"start_character":8,"end_line":377,"end_character":50},"in_reply_to":"66ca3760_403fbd73","updated":"2020-12-04 02:03:53.000000000","message":"Thank you very much for your advice,we will think about it.","commit_id":"38041c3f352d18492a8afcc08f68979bb7647373"}],"releasenotes/notes/bug-1894799-ovs-use-veth-txu4t2h0au7mcpf0.yaml":[{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"8190a0f04ec7202c364761bdc7603ed3667abc4d","unresolved":true,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    [`bug 1894799 \u003chttps://bugs.launchpad.net/neutron/+bug/1894799\u003e`_]"},{"line_number":5,"context_line":"    When the ovs_use_veth parameter is changed, it may not take effect"},{"line_number":6,"context_line":"    for the existing OVS interface. This fix will delete the old port"},{"line_number":7,"context_line":"    and use the new type to rebuild. It should be noted that this will"},{"line_number":8,"context_line":"    lead to dataplane downtime."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"5fe5198f_00bf71a1","line":6,"range":{"start_line":6,"start_character":36,"end_line":6,"end_character":44},"updated":"2020-11-30 09:11:58.000000000","message":"After the fix of bug/1894799 the agent","commit_id":"38041c3f352d18492a8afcc08f68979bb7647373"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"8190a0f04ec7202c364761bdc7603ed3667abc4d","unresolved":true,"context_lines":[{"line_number":4,"context_line":"    [`bug 1894799 \u003chttps://bugs.launchpad.net/neutron/+bug/1894799\u003e`_]"},{"line_number":5,"context_line":"    When the ovs_use_veth parameter is changed, it may not take effect"},{"line_number":6,"context_line":"    for the existing OVS interface. This fix will delete the old port"},{"line_number":7,"context_line":"    and use the new type to rebuild. It should be noted that this will"},{"line_number":8,"context_line":"    lead to dataplane downtime."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"a68a1bb0_0a6a3f6c","line":8,"range":{"start_line":7,"start_character":37,"end_line":8,"end_character":31},"updated":"2020-11-30 09:11:58.000000000","message":"Because the port will be reconfigured, the dataplane will have downtime consequently.","commit_id":"38041c3f352d18492a8afcc08f68979bb7647373"}]}
