)]}'
{"/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":"243dbb1cedf55b0e40b7986ef9d3709dc29f4881","unresolved":false,"context_lines":[{"line_number":9,"context_line":"The need for this change stems from following issues:"},{"line_number":10,"context_line":"1) When ovs_use_veth \u003d False with ovs-dpdk issue with ovs"},{"line_number":11,"context_line":"was observed - after vswitch restart interface is not comming up."},{"line_number":12,"context_line":"Meaning ovs-dpdk uses ovs internal ports andit is not able to bring"},{"line_number":13,"context_line":"them up on restart."},{"line_number":14,"context_line":"2) When ovs_use_veth \u003d True and ovs-dpkd is used, packets sent with"},{"line_number":15,"context_line":"incorrect checksum due to the fact that ovs-dpdk does not do checksum"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"1fa4df85_94271765","line":12,"range":{"start_line":12,"start_character":41,"end_line":12,"end_character":46},"updated":"2020-03-19 08:46:22.000000000","message":"nit: and it","commit_id":"04d7a455ce897c2214d0c69a144aad80b84cc17f"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"243dbb1cedf55b0e40b7986ef9d3709dc29f4881","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"This commit allows to use second option and resolve checksum issue by"},{"line_number":19,"context_line":"disabling checksum offload."},{"line_number":20,"context_line":"This approach was chosen after investigating"},{"line_number":21,"context_line":"https://bugs.launchpad.net/neutron/+bug/1832021"},{"line_number":22,"context_line":"and related bugs where using iptables rules for tcp checksum was"},{"line_number":23,"context_line":"rendered as incorrect."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Change-Id: Iecce8d2c6c2c46718cc1020c6e8f914cd4560e4b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"1fa4df85_54219f4c","line":23,"range":{"start_line":20,"start_character":0,"end_line":23,"end_character":22},"updated":"2020-03-19 08:46:22.000000000","message":"Could you list all bugs as Close-Bug: .... or Related-Bug:....","commit_id":"04d7a455ce897c2214d0c69a144aad80b84cc17f"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"0cfa3467d6d33cc948b78236b83665237f9240d2","unresolved":false,"context_lines":[{"line_number":18,"context_line":"This commit allows to use second option and resolve checksum issue by"},{"line_number":19,"context_line":"disabling checksum offload."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Close-Bug: https://bugs.launchpad.net/neutron/+bug/1832021"},{"line_number":22,"context_line":"Related-Bug: https://bugs.launchpad.net/charm-neutron-openvswitch/+bug/1831935"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Change-Id: Iecce8d2c6c2c46718cc1020c6e8f914cd4560e4b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"df33271e_f27cadec","line":21,"range":{"start_line":21,"start_character":0,"end_line":21,"end_character":9},"updated":"2020-03-27 12:48:13.000000000","message":"\"Closes-Bug: #1832021\" (Currently LP does not have a link to this patch)","commit_id":"11800ba1008d6a4912d8157227c5aaa9aef852ac"},{"author":{"_account_id":14029,"name":"Alexander Vlasov","email":"vlasov.alexandr89@gmail.com","username":"avlasov"},"change_message_id":"a4f1faf09c5b0b9dd20d1f2165cd38d7c7cca47a","unresolved":false,"context_lines":[{"line_number":18,"context_line":"This commit allows to use second option and resolve checksum issue by"},{"line_number":19,"context_line":"disabling checksum offload."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Close-Bug: https://bugs.launchpad.net/neutron/+bug/1832021"},{"line_number":22,"context_line":"Related-Bug: https://bugs.launchpad.net/charm-neutron-openvswitch/+bug/1831935"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Change-Id: Iecce8d2c6c2c46718cc1020c6e8f914cd4560e4b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"df33271e_463af633","line":21,"range":{"start_line":21,"start_character":0,"end_line":21,"end_character":9},"in_reply_to":"df33271e_f27cadec","updated":"2020-03-27 16:15:24.000000000","message":"Done","commit_id":"11800ba1008d6a4912d8157227c5aaa9aef852ac"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"9e49ddb5f0066172843ab489d448b9804055fc45","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Workaround for TCP checksum issue with ovs-dpdk and  veth pair"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The need for this change stems from following issues:"},{"line_number":10,"context_line":"1) When ovs_use_veth \u003d False with ovs-dpdk issue with ovs"},{"line_number":11,"context_line":"was observed - after vswitch restart interface is not comming up."},{"line_number":12,"context_line":"Meaning ovs-dpdk uses ovs internal ports and it is not able to bring"},{"line_number":13,"context_line":"them up on restart."},{"line_number":14,"context_line":"2) When ovs_use_veth \u003d True and ovs-dpkd is used, packets sent with"},{"line_number":15,"context_line":"incorrect checksum due to the fact that ovs-dpdk does not do checksum"},{"line_number":16,"context_line":"calculations for veth interface."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"df33271e_6843606d","line":13,"range":{"start_line":10,"start_character":0,"end_line":13,"end_character":19},"updated":"2020-04-09 18:15:09.000000000","message":"Do we fix this issue in this patch?","commit_id":"72f94481eca6590ab90114f698f5962955c636c2"},{"author":{"_account_id":14029,"name":"Alexander Vlasov","email":"vlasov.alexandr89@gmail.com","username":"avlasov"},"change_message_id":"c90a90e4388025adb6411947a7a79316a9d885a3","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Workaround for TCP checksum issue with ovs-dpdk and  veth pair"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The need for this change stems from following issues:"},{"line_number":10,"context_line":"1) When ovs_use_veth \u003d False with ovs-dpdk issue with ovs"},{"line_number":11,"context_line":"was observed - after vswitch restart interface is not comming up."},{"line_number":12,"context_line":"Meaning ovs-dpdk uses ovs internal ports and it is not able to bring"},{"line_number":13,"context_line":"them up on restart."},{"line_number":14,"context_line":"2) When ovs_use_veth \u003d True and ovs-dpkd is used, packets sent with"},{"line_number":15,"context_line":"incorrect checksum due to the fact that ovs-dpdk does not do checksum"},{"line_number":16,"context_line":"calculations for veth interface."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"df33271e_36a1adaa","line":13,"range":{"start_line":10,"start_character":0,"end_line":13,"end_character":19},"in_reply_to":"df33271e_6843606d","updated":"2020-04-10 16:23:27.000000000","message":"this seems to be ovs-dpdk issue. so we are not fixing it here. Rather we fix issue with checksum when we go alternative way and use veth pair instead of ovs internal port","commit_id":"72f94481eca6590ab90114f698f5962955c636c2"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"dc2ff010dfe46f5796cc5aceb4ef39f7bc6414a9","unresolved":false,"context_lines":[{"line_number":11,"context_line":"was observed - after vswitch restart interface is not comming up."},{"line_number":12,"context_line":"Meaning ovs-dpdk uses ovs internal ports and it is not able to bring"},{"line_number":13,"context_line":"them up on restart."},{"line_number":14,"context_line":"2) When ovs_use_veth \u003d True and ovs-dpkd is used, packets sent with"},{"line_number":15,"context_line":"incorrect checksum due to the fact that ovs-dpdk does not do checksum"},{"line_number":16,"context_line":"calculations for veth interface."},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"3f4c43b2_518837c5","line":14,"range":{"start_line":14,"start_character":36,"end_line":14,"end_character":40},"updated":"2020-04-14 16:21:28.000000000","message":"s/dpdk","commit_id":"72f94481eca6590ab90114f698f5962955c636c2"}],"etc/neutron/rootwrap.d/dhcp.filters":[{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"dc2ff010dfe46f5796cc5aceb4ef39f7bc6414a9","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"[Filters]"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"# dhcp-agent"},{"line_number":12,"context_line":"dnsmasq: CommandFilter, dnsmasq, root"},{"line_number":13,"context_line":"ethtool: CommandFilter, ethtool, root"},{"line_number":14,"context_line":"# dhcp-agent uses kill as well, that\u0027s handled by the generic KillFilter"}],"source_content_type":"application/octet-stream","patch_set":12,"id":"3f4c43b2_f17183e2","line":11,"range":{"start_line":11,"start_character":2,"end_line":11,"end_character":12},"updated":"2020-04-14 16:21:28.000000000","message":"L3 agent also uses that \"interface plug_new\" function. So it should also needs this new filter, because the code will should be hit by L3 agent.","commit_id":"72f94481eca6590ab90114f698f5962955c636c2"}],"neutron/agent/linux/ethtool.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"c2c466255011191480046b7df142067ef1ce0eb3","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from neutron.agent.linux import ip_lib"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"class Ethtool(object):"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"    COMMAND \u003d \u0027ethtool\u0027"},{"line_number":21,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"1f493fa4_20302de8","line":18,"updated":"2020-04-29 00:09:04.000000000","message":"pep8: E302 expected 2 blank lines, found 1","commit_id":"efe2e6e509b515e155272c134a0aad4069417609"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"2951dbfb4fa8366f9994a9c791ca86ccf47bf504","unresolved":false,"context_lines":[{"line_number":26,"context_line":"        return ip_wrapper.netns.execute(cmd, run_as_root\u003dTrue, **kwargs)"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    @classmethod"},{"line_number":29,"context_line":"    def offload(cls, device, rx\u003dFalse, tx\u003dFalse, namespace\u003dNone):"},{"line_number":30,"context_line":"        rx \u003d \u0027on\u0027 if rx else \u0027off\u0027"},{"line_number":31,"context_line":"        tx \u003d \u0027on\u0027 if tx else \u0027off\u0027"},{"line_number":32,"context_line":"        cmd \u003d [\u0027--offload\u0027, device, \u0027rx\u0027, rx, \u0027tx\u0027, tx]"}],"source_content_type":"text/x-python","patch_set":14,"id":"1f493fa4_afb54680","line":29,"range":{"start_line":29,"start_character":29,"end_line":29,"end_character":47},"updated":"2020-04-29 07:21:34.000000000","message":"I\u0027d remove default values to force callers set this explicitly, please see my comment in next file","commit_id":"e8c27d37a37c08d7e238151c085ca6bdc318e886"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"4f9e0ffa3a452e8b4a6b22c4d32a70f636f77357","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from neutron.agent.linux import ip_lib"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class Ethtool(object):"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"    COMMAND \u003d \u0027ethtool\u0027"}],"source_content_type":"text/x-python","patch_set":16,"id":"ff570b3c_aa2c06ac","line":18,"updated":"2020-06-04 13:17:42.000000000","message":"nit: perhaps a TODO can be added here to move this to privileged folder as part of changing from rootwrap to oslo_privsep","commit_id":"11838a2bc50caa40e776bce211f5f2d1d16a14af"}],"neutron/agent/linux/interface.py":[{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"243dbb1cedf55b0e40b7986ef9d3709dc29f4881","unresolved":false,"context_lines":[{"line_number":415,"context_line":"            if self.conf.OVS.datapath_type \u003d\u003d ovs_const.OVS_DATAPATH_NETDEV:"},{"line_number":416,"context_line":"                cmd \u003d [\u0027ethtool\u0027, \u0027--offload\u0027, ns_dev.name,"},{"line_number":417,"context_line":"                       \u0027tx\u0027, \u0027off\u0027, \u0027rx\u0027, \u0027off\u0027]"},{"line_number":418,"context_line":"                ip_wrapper \u003d ip_lib.IPWrapper(namespace\u003dnamespace)"},{"line_number":419,"context_line":"                ip_wrapper.netns.execute(cmd)"},{"line_number":420,"context_line":""},{"line_number":421,"context_line":"    def unplug(self, device_name, bridge\u003dNone, namespace\u003dNone, prefix\u003dNone):"},{"line_number":422,"context_line":"        \"\"\"Unplug the interface.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"1fa4df85_f491ab47","line":419,"range":{"start_line":418,"start_character":16,"end_line":419,"end_character":45},"updated":"2020-03-19 08:46:22.000000000","message":"try:\n....\nexcept runTimeError:\n....\n\nto catch errors?","commit_id":"04d7a455ce897c2214d0c69a144aad80b84cc17f"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"ea21a8325dd4c9cda2b634af47cb0d00c6a57d26","unresolved":false,"context_lines":[{"line_number":415,"context_line":"            if self.conf.OVS.datapath_type \u003d\u003d ovs_const.OVS_DATAPATH_NETDEV:"},{"line_number":416,"context_line":"                cmd \u003d [\u0027ethtool\u0027, \u0027--offload\u0027, ns_dev.name,"},{"line_number":417,"context_line":"                       \u0027tx\u0027, \u0027off\u0027, \u0027rx\u0027, \u0027off\u0027]"},{"line_number":418,"context_line":"                ip_wrapper \u003d ip_lib.IPWrapper(namespace\u003dnamespace)"},{"line_number":419,"context_line":"                ip_wrapper.netns.execute(cmd)"},{"line_number":420,"context_line":""},{"line_number":421,"context_line":"    def unplug(self, device_name, bridge\u003dNone, namespace\u003dNone, prefix\u003dNone):"},{"line_number":422,"context_line":"        \"\"\"Unplug the interface.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"3f4c43b2_a874a236","line":419,"range":{"start_line":418,"start_character":16,"end_line":419,"end_character":45},"in_reply_to":"1fa4df85_7067f9b8","updated":"2020-06-04 13:07:50.000000000","message":"Sorry, I missed this reply.\nyeah, I am ok with catching the error in execute","commit_id":"04d7a455ce897c2214d0c69a144aad80b84cc17f"},{"author":{"_account_id":14029,"name":"Alexander Vlasov","email":"vlasov.alexandr89@gmail.com","username":"avlasov"},"change_message_id":"a65639ed0fd3cf85b349fbbfcee390fff541b22e","unresolved":false,"context_lines":[{"line_number":415,"context_line":"            if self.conf.OVS.datapath_type \u003d\u003d ovs_const.OVS_DATAPATH_NETDEV:"},{"line_number":416,"context_line":"                cmd \u003d [\u0027ethtool\u0027, \u0027--offload\u0027, ns_dev.name,"},{"line_number":417,"context_line":"                       \u0027tx\u0027, \u0027off\u0027, \u0027rx\u0027, \u0027off\u0027]"},{"line_number":418,"context_line":"                ip_wrapper \u003d ip_lib.IPWrapper(namespace\u003dnamespace)"},{"line_number":419,"context_line":"                ip_wrapper.netns.execute(cmd)"},{"line_number":420,"context_line":""},{"line_number":421,"context_line":"    def unplug(self, device_name, bridge\u003dNone, namespace\u003dNone, prefix\u003dNone):"},{"line_number":422,"context_line":"        \"\"\"Unplug the interface.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"1fa4df85_7067f9b8","line":419,"range":{"start_line":418,"start_character":16,"end_line":419,"end_character":45},"in_reply_to":"1fa4df85_f491ab47","updated":"2020-03-19 18:42:06.000000000","message":"I can add that, but are you suggesting any additional handling for that error? Cause \u0027execute\u0027 already checks exit code and logs output as error if it is not 0.","commit_id":"04d7a455ce897c2214d0c69a144aad80b84cc17f"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"0cfa3467d6d33cc948b78236b83665237f9240d2","unresolved":false,"context_lines":[{"line_number":408,"context_line":"        if self.conf.ovs_use_veth:"},{"line_number":409,"context_line":"            root_dev.link.set_up()"},{"line_number":410,"context_line":"            # Worakaround for https://bugs.launchpad.net/neutron/+bug/1832021"},{"line_number":411,"context_line":"            # When ovs_use_veth \u003d True and ovs-dpkd is used, packets sent with"},{"line_number":412,"context_line":"            # incorrect checksum."},{"line_number":413,"context_line":"            # When ovs_use_veth \u003d False with ovs-dpdk issue with ovs"},{"line_number":414,"context_line":"            # was observed - after vswitch restart interface is not comming up."},{"line_number":415,"context_line":"            if self.conf.OVS.datapath_type \u003d\u003d ovs_const.OVS_DATAPATH_NETDEV:"},{"line_number":416,"context_line":"                cmd \u003d [\u0027ethtool\u0027, \u0027--offload\u0027, ns_dev.name,"},{"line_number":417,"context_line":"                       \u0027tx\u0027, \u0027off\u0027, \u0027rx\u0027, \u0027off\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"df33271e_b2f9854e","line":414,"range":{"start_line":411,"start_character":12,"end_line":414,"end_character":79},"updated":"2020-03-27 12:48:13.000000000","message":"imho just #410 should be enough, no need to describe bug here additionally","commit_id":"11800ba1008d6a4912d8157227c5aaa9aef852ac"},{"author":{"_account_id":14029,"name":"Alexander Vlasov","email":"vlasov.alexandr89@gmail.com","username":"avlasov"},"change_message_id":"a4f1faf09c5b0b9dd20d1f2165cd38d7c7cca47a","unresolved":false,"context_lines":[{"line_number":408,"context_line":"        if self.conf.ovs_use_veth:"},{"line_number":409,"context_line":"            root_dev.link.set_up()"},{"line_number":410,"context_line":"            # Worakaround for https://bugs.launchpad.net/neutron/+bug/1832021"},{"line_number":411,"context_line":"            # When ovs_use_veth \u003d True and ovs-dpkd is used, packets sent with"},{"line_number":412,"context_line":"            # incorrect checksum."},{"line_number":413,"context_line":"            # When ovs_use_veth \u003d False with ovs-dpdk issue with ovs"},{"line_number":414,"context_line":"            # was observed - after vswitch restart interface is not comming up."},{"line_number":415,"context_line":"            if self.conf.OVS.datapath_type \u003d\u003d ovs_const.OVS_DATAPATH_NETDEV:"},{"line_number":416,"context_line":"                cmd \u003d [\u0027ethtool\u0027, \u0027--offload\u0027, ns_dev.name,"},{"line_number":417,"context_line":"                       \u0027tx\u0027, \u0027off\u0027, \u0027rx\u0027, \u0027off\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"df33271e_e614eaa2","line":414,"range":{"start_line":411,"start_character":12,"end_line":414,"end_character":79},"in_reply_to":"df33271e_b2f9854e","updated":"2020-03-27 16:15:24.000000000","message":"Done","commit_id":"11800ba1008d6a4912d8157227c5aaa9aef852ac"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"c0fdae15c14a8a18a747843473b9494ab557324a","unresolved":false,"context_lines":[{"line_number":416,"context_line":"                cmd \u003d [\u0027ethtool\u0027, \u0027--offload\u0027, ns_dev.name,"},{"line_number":417,"context_line":"                       \u0027tx\u0027, \u0027off\u0027, \u0027rx\u0027, \u0027off\u0027]"},{"line_number":418,"context_line":"                ip_wrapper \u003d ip_lib.IPWrapper(namespace\u003dnamespace)"},{"line_number":419,"context_line":"                ip_wrapper.netns.execute(cmd)"},{"line_number":420,"context_line":""},{"line_number":421,"context_line":"    def unplug(self, device_name, bridge\u003dNone, namespace\u003dNone, prefix\u003dNone):"},{"line_number":422,"context_line":"        \"\"\"Unplug the interface.\"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"df33271e_a654f0cb","line":419,"updated":"2020-03-23 23:23:59.000000000","message":"I think it\u0027s possible to use the pyroute2 library for ethtool-type operations, which we\u0027re trying to move to so this is a privsep call and doesn\u0027t need rootwrap.  The ip_lib code actually uses this pretty extensively.","commit_id":"11800ba1008d6a4912d8157227c5aaa9aef852ac"},{"author":{"_account_id":14029,"name":"Alexander Vlasov","email":"vlasov.alexandr89@gmail.com","username":"avlasov"},"change_message_id":"d6822302aa0df604a7e2a2fd7fad8bb9fa721b37","unresolved":false,"context_lines":[{"line_number":416,"context_line":"                cmd \u003d [\u0027ethtool\u0027, \u0027--offload\u0027, ns_dev.name,"},{"line_number":417,"context_line":"                       \u0027tx\u0027, \u0027off\u0027, \u0027rx\u0027, \u0027off\u0027]"},{"line_number":418,"context_line":"                ip_wrapper \u003d ip_lib.IPWrapper(namespace\u003dnamespace)"},{"line_number":419,"context_line":"                ip_wrapper.netns.execute(cmd)"},{"line_number":420,"context_line":""},{"line_number":421,"context_line":"    def unplug(self, device_name, bridge\u003dNone, namespace\u003dNone, prefix\u003dNone):"},{"line_number":422,"context_line":"        \"\"\"Unplug the interface.\"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"df33271e_8d62893d","line":419,"in_reply_to":"df33271e_0de79914","updated":"2020-03-25 17:31:04.000000000","message":"Right now we\u0027re on stein so yes I was going to backport this. And I\u0027m fine with using pyroute2 for master and execute() for other stable branches. I just need a little bit of time to take close look at pyroute. More opinions are welcome. Thanks","commit_id":"11800ba1008d6a4912d8157227c5aaa9aef852ac"},{"author":{"_account_id":14029,"name":"Alexander Vlasov","email":"vlasov.alexandr89@gmail.com","username":"avlasov"},"change_message_id":"06a288bd9d2db15fb918ab0d39e5675657fbd23b","unresolved":false,"context_lines":[{"line_number":416,"context_line":"                cmd \u003d [\u0027ethtool\u0027, \u0027--offload\u0027, ns_dev.name,"},{"line_number":417,"context_line":"                       \u0027tx\u0027, \u0027off\u0027, \u0027rx\u0027, \u0027off\u0027]"},{"line_number":418,"context_line":"                ip_wrapper \u003d ip_lib.IPWrapper(namespace\u003dnamespace)"},{"line_number":419,"context_line":"                ip_wrapper.netns.execute(cmd)"},{"line_number":420,"context_line":""},{"line_number":421,"context_line":"    def unplug(self, device_name, bridge\u003dNone, namespace\u003dNone, prefix\u003dNone):"},{"line_number":422,"context_line":"        \"\"\"Unplug the interface.\"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"df33271e_b06d1306","line":419,"in_reply_to":"df33271e_8d62893d","updated":"2020-03-26 13:59:29.000000000","message":"So I\u0027ve tried it got some errors. Looks like fixes for some of the pyrouete2 ethtool issues  were merged yesterday and there may be more to come. So I don\u0027t think it would be appropriate do switch to this approach right now.","commit_id":"11800ba1008d6a4912d8157227c5aaa9aef852ac"},{"author":{"_account_id":14029,"name":"Alexander Vlasov","email":"vlasov.alexandr89@gmail.com","username":"avlasov"},"change_message_id":"746b520218c9606c95d9fbb1e9e081d47c6a806a","unresolved":false,"context_lines":[{"line_number":416,"context_line":"                cmd \u003d [\u0027ethtool\u0027, \u0027--offload\u0027, ns_dev.name,"},{"line_number":417,"context_line":"                       \u0027tx\u0027, \u0027off\u0027, \u0027rx\u0027, \u0027off\u0027]"},{"line_number":418,"context_line":"                ip_wrapper \u003d ip_lib.IPWrapper(namespace\u003dnamespace)"},{"line_number":419,"context_line":"                ip_wrapper.netns.execute(cmd)"},{"line_number":420,"context_line":""},{"line_number":421,"context_line":"    def unplug(self, device_name, bridge\u003dNone, namespace\u003dNone, prefix\u003dNone):"},{"line_number":422,"context_line":"        \"\"\"Unplug the interface.\"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"df33271e_ed451517","line":419,"in_reply_to":"df33271e_a654f0cb","updated":"2020-03-25 14:39:29.000000000","message":"Thanks Brian, I will take a look into possibility of using pyroute2. I just wonder if I would also need to update requirements anywhere and maybe keep current approach for other branches, since ethtool feature was merged only this Feb?","commit_id":"11800ba1008d6a4912d8157227c5aaa9aef852ac"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"bc97756072f91619a3622eb53c4d2b2a9802c2ac","unresolved":false,"context_lines":[{"line_number":416,"context_line":"                cmd \u003d [\u0027ethtool\u0027, \u0027--offload\u0027, ns_dev.name,"},{"line_number":417,"context_line":"                       \u0027tx\u0027, \u0027off\u0027, \u0027rx\u0027, \u0027off\u0027]"},{"line_number":418,"context_line":"                ip_wrapper \u003d ip_lib.IPWrapper(namespace\u003dnamespace)"},{"line_number":419,"context_line":"                ip_wrapper.netns.execute(cmd)"},{"line_number":420,"context_line":""},{"line_number":421,"context_line":"    def unplug(self, device_name, bridge\u003dNone, namespace\u003dNone, prefix\u003dNone):"},{"line_number":422,"context_line":"        \"\"\"Unplug the interface.\"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"df33271e_0de79914","line":419,"in_reply_to":"df33271e_ed451517","updated":"2020-03-25 14:44:21.000000000","message":"That\u0027s a good question, I didn\u0027t know it had merged so recently.  Is this going to be backported as well?  If not then we can just bump the requirements, but if it is then using execute() might be the best option, with an update to pyroute2 for master?\n\nI had added Rodolfo since he\u0027s been working on the privsep code so he might have an opinion here as well.","commit_id":"11800ba1008d6a4912d8157227c5aaa9aef852ac"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"795f292c4e9d79a93e0bf2722a2132579710e01c","unresolved":false,"context_lines":[{"line_number":411,"context_line":"            if self.conf.OVS.datapath_type \u003d\u003d ovs_const.OVS_DATAPATH_NETDEV:"},{"line_number":412,"context_line":"                cmd \u003d [\u0027ethtool\u0027, \u0027--offload\u0027, ns_dev.name,"},{"line_number":413,"context_line":"                       \u0027tx\u0027, \u0027off\u0027, \u0027rx\u0027, \u0027off\u0027]"},{"line_number":414,"context_line":"                ip_wrapper \u003d ip_lib.IPWrapper(namespace\u003dnamespace)"},{"line_number":415,"context_line":"                ip_wrapper.netns.execute(cmd)"},{"line_number":416,"context_line":""},{"line_number":417,"context_line":"    def unplug(self, device_name, bridge\u003dNone, namespace\u003dNone, prefix\u003dNone):"}],"source_content_type":"text/x-python","patch_set":6,"id":"df33271e_875cc6ed","line":414,"range":{"start_line":414,"start_character":16,"end_line":414,"end_character":66},"updated":"2020-03-31 09:36:32.000000000","message":"there is ipwrapper initialized on line #352","commit_id":"e96ecd6fad5dfe24dfc359336376e8c57342ccd2"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"b240621e134fb772bddea69b115390e322337420","unresolved":false,"context_lines":[{"line_number":411,"context_line":"            if self.conf.OVS.datapath_type \u003d\u003d ovs_const.OVS_DATAPATH_NETDEV:"},{"line_number":412,"context_line":"                cmd \u003d [\u0027ethtool\u0027, \u0027--offload\u0027, ns_dev.name,"},{"line_number":413,"context_line":"                       \u0027tx\u0027, \u0027off\u0027, \u0027rx\u0027, \u0027off\u0027]"},{"line_number":414,"context_line":"                ip_wrapper \u003d ip_lib.IPWrapper(namespace\u003dnamespace)"},{"line_number":415,"context_line":"                ip_wrapper.netns.execute(cmd)"},{"line_number":416,"context_line":""},{"line_number":417,"context_line":"    def unplug(self, device_name, bridge\u003dNone, namespace\u003dNone, prefix\u003dNone):"}],"source_content_type":"text/x-python","patch_set":6,"id":"df33271e_e9dbcee9","line":414,"range":{"start_line":414,"start_character":16,"end_line":414,"end_character":66},"in_reply_to":"df33271e_2aa771a9","updated":"2020-04-01 06:03:17.000000000","message":"Ah, right. missed that, sorry","commit_id":"e96ecd6fad5dfe24dfc359336376e8c57342ccd2"},{"author":{"_account_id":14029,"name":"Alexander Vlasov","email":"vlasov.alexandr89@gmail.com","username":"avlasov"},"change_message_id":"32d8f0b4c0ddd7bf708ec38050ebd52f3801bde5","unresolved":false,"context_lines":[{"line_number":411,"context_line":"            if self.conf.OVS.datapath_type \u003d\u003d ovs_const.OVS_DATAPATH_NETDEV:"},{"line_number":412,"context_line":"                cmd \u003d [\u0027ethtool\u0027, \u0027--offload\u0027, ns_dev.name,"},{"line_number":413,"context_line":"                       \u0027tx\u0027, \u0027off\u0027, \u0027rx\u0027, \u0027off\u0027]"},{"line_number":414,"context_line":"                ip_wrapper \u003d ip_lib.IPWrapper(namespace\u003dnamespace)"},{"line_number":415,"context_line":"                ip_wrapper.netns.execute(cmd)"},{"line_number":416,"context_line":""},{"line_number":417,"context_line":"    def unplug(self, device_name, bridge\u003dNone, namespace\u003dNone, prefix\u003dNone):"}],"source_content_type":"text/x-python","patch_set":6,"id":"df33271e_2aa771a9","line":414,"range":{"start_line":414,"start_character":16,"end_line":414,"end_character":66},"in_reply_to":"df33271e_875cc6ed","updated":"2020-03-31 18:52:27.000000000","message":"But it was initialized without namespace argument, meaning that command would be executed in root network namespace, right? From my manual tests I had to run it specifically inside namespace.","commit_id":"e96ecd6fad5dfe24dfc359336376e8c57342ccd2"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"ea3c7eb734ded15df7611d817f14dbc7b506cf21","unresolved":false,"context_lines":[{"line_number":407,"context_line":"        ns_dev.link.set_up()"},{"line_number":408,"context_line":"        if self.conf.ovs_use_veth:"},{"line_number":409,"context_line":"            root_dev.link.set_up()"},{"line_number":410,"context_line":"            # Worakaround for https://bugs.launchpad.net/neutron/+bug/1832021"},{"line_number":411,"context_line":"            if self.conf.OVS.datapath_type \u003d\u003d ovs_const.OVS_DATAPATH_NETDEV:"},{"line_number":412,"context_line":"                cmd \u003d [\u0027ethtool\u0027, \u0027--offload\u0027, ns_dev.name,"},{"line_number":413,"context_line":"                       \u0027tx\u0027, \u0027off\u0027, \u0027rx\u0027, \u0027off\u0027]"}],"source_content_type":"text/x-python","patch_set":11,"id":"df33271e_701519e5","line":410,"range":{"start_line":410,"start_character":26,"end_line":410,"end_character":77},"updated":"2020-04-09 06:59:50.000000000","message":"nit: better to explain shortly in place, to not force code reader go and inspect the whole history of the bug. Like \"ovs-dpdk does not do checksum\ncalculations for veth interface (bug 1832021)\"","commit_id":"18bdf443157bd3481287831db0529597c0c7996b"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"ea3c7eb734ded15df7611d817f14dbc7b506cf21","unresolved":false,"context_lines":[{"line_number":407,"context_line":"        ns_dev.link.set_up()"},{"line_number":408,"context_line":"        if self.conf.ovs_use_veth:"},{"line_number":409,"context_line":"            root_dev.link.set_up()"},{"line_number":410,"context_line":"            # Worakaround for https://bugs.launchpad.net/neutron/+bug/1832021"},{"line_number":411,"context_line":"            if self.conf.OVS.datapath_type \u003d\u003d ovs_const.OVS_DATAPATH_NETDEV:"},{"line_number":412,"context_line":"                cmd \u003d [\u0027ethtool\u0027, \u0027--offload\u0027, ns_dev.name,"},{"line_number":413,"context_line":"                       \u0027tx\u0027, \u0027off\u0027, \u0027rx\u0027, \u0027off\u0027]"}],"source_content_type":"text/x-python","patch_set":11,"id":"df33271e_50f9f5c5","line":410,"range":{"start_line":410,"start_character":14,"end_line":410,"end_character":25},"updated":"2020-04-09 06:59:50.000000000","message":"typo in Workaround","commit_id":"18bdf443157bd3481287831db0529597c0c7996b"},{"author":{"_account_id":14029,"name":"Alexander Vlasov","email":"vlasov.alexandr89@gmail.com","username":"avlasov"},"change_message_id":"c90a90e4388025adb6411947a7a79316a9d885a3","unresolved":false,"context_lines":[{"line_number":407,"context_line":"        ns_dev.link.set_up()"},{"line_number":408,"context_line":"        if self.conf.ovs_use_veth:"},{"line_number":409,"context_line":"            root_dev.link.set_up()"},{"line_number":410,"context_line":"            # Worakaround for https://bugs.launchpad.net/neutron/+bug/1832021"},{"line_number":411,"context_line":"            if self.conf.OVS.datapath_type \u003d\u003d ovs_const.OVS_DATAPATH_NETDEV:"},{"line_number":412,"context_line":"                cmd \u003d [\u0027ethtool\u0027, \u0027--offload\u0027, ns_dev.name,"},{"line_number":413,"context_line":"                       \u0027tx\u0027, \u0027off\u0027, \u0027rx\u0027, \u0027off\u0027]"}],"source_content_type":"text/x-python","patch_set":11,"id":"df33271e_e89bf06f","line":410,"range":{"start_line":410,"start_character":26,"end_line":410,"end_character":77},"in_reply_to":"df33271e_701519e5","updated":"2020-04-10 16:23:27.000000000","message":"Done","commit_id":"18bdf443157bd3481287831db0529597c0c7996b"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"dc2ff010dfe46f5796cc5aceb4ef39f7bc6414a9","unresolved":false,"context_lines":[{"line_number":320,"context_line":""},{"line_number":321,"context_line":"    def __init__(self, conf, **kwargs):"},{"line_number":322,"context_line":"        super(OVSInterfaceDriver, self).__init__(conf, **kwargs)"},{"line_number":323,"context_line":"        ovs_conf.register_ovs_agent_opts(self.conf)"},{"line_number":324,"context_line":"        if self.conf.ovs_use_veth:"},{"line_number":325,"context_line":"            self.DEV_NAME_PREFIX \u003d \u0027ns-\u0027"},{"line_number":326,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3f4c43b2_8c3588dd","line":323,"range":{"start_line":323,"start_character":8,"end_line":323,"end_character":51},"updated":"2020-04-14 16:21:28.000000000","message":"I don\u0027t think this makes sense, the interface driver was widely used in DHCP agent, L3 agent and anothers. This line means for every agent which hit this line will register another agent\u0027s config options. So how about move the \u0027datapath_type\u0027 option to the common place of the agents, for instance [DEFAULT] section of the neutron.conf?","commit_id":"72f94481eca6590ab90114f698f5962955c636c2"},{"author":{"_account_id":14029,"name":"Alexander Vlasov","email":"vlasov.alexandr89@gmail.com","username":"avlasov"},"change_message_id":"2c989e47d1ec8c3b7b67fc4a9b1964cea2283aea","unresolved":false,"context_lines":[{"line_number":320,"context_line":""},{"line_number":321,"context_line":"    def __init__(self, conf, **kwargs):"},{"line_number":322,"context_line":"        super(OVSInterfaceDriver, self).__init__(conf, **kwargs)"},{"line_number":323,"context_line":"        ovs_conf.register_ovs_agent_opts(self.conf)"},{"line_number":324,"context_line":"        if self.conf.ovs_use_veth:"},{"line_number":325,"context_line":"            self.DEV_NAME_PREFIX \u003d \u0027ns-\u0027"},{"line_number":326,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"1f493fa4_80355dfa","line":323,"range":{"start_line":323,"start_character":8,"end_line":323,"end_character":51},"in_reply_to":"3f4c43b2_8c3588dd","updated":"2020-04-21 21:11:25.000000000","message":"I guess this would mean that whatever config system users use they would need to update part related to neutron, right? So I wonder what else I should update to so that would be obvious to users which config changes they are supposed to make?","commit_id":"72f94481eca6590ab90114f698f5962955c636c2"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"9e49ddb5f0066172843ab489d448b9804055fc45","unresolved":false,"context_lines":[{"line_number":409,"context_line":"            root_dev.link.set_up()"},{"line_number":410,"context_line":"            # ovs-dpdk does not do checksum calculations for veth interface"},{"line_number":411,"context_line":"            # (bug 1832021)"},{"line_number":412,"context_line":"            if self.conf.OVS.datapath_type \u003d\u003d ovs_const.OVS_DATAPATH_NETDEV:"},{"line_number":413,"context_line":"                cmd \u003d [\u0027ethtool\u0027, \u0027--offload\u0027, ns_dev.name,"},{"line_number":414,"context_line":"                       \u0027tx\u0027, \u0027off\u0027, \u0027rx\u0027, \u0027off\u0027]"},{"line_number":415,"context_line":"                ip_wrapper \u003d ip_lib.IPWrapper(namespace\u003dnamespace)"}],"source_content_type":"text/x-python","patch_set":12,"id":"df33271e_28bf9861","line":412,"updated":"2020-04-09 18:15:09.000000000","message":"This operation should be done before setting up the device (L409)","commit_id":"72f94481eca6590ab90114f698f5962955c636c2"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"9e49ddb5f0066172843ab489d448b9804055fc45","unresolved":false,"context_lines":[{"line_number":410,"context_line":"            # ovs-dpdk does not do checksum calculations for veth interface"},{"line_number":411,"context_line":"            # (bug 1832021)"},{"line_number":412,"context_line":"            if self.conf.OVS.datapath_type \u003d\u003d ovs_const.OVS_DATAPATH_NETDEV:"},{"line_number":413,"context_line":"                cmd \u003d [\u0027ethtool\u0027, \u0027--offload\u0027, ns_dev.name,"},{"line_number":414,"context_line":"                       \u0027tx\u0027, \u0027off\u0027, \u0027rx\u0027, \u0027off\u0027]"},{"line_number":415,"context_line":"                ip_wrapper \u003d ip_lib.IPWrapper(namespace\u003dnamespace)"},{"line_number":416,"context_line":"                ip_wrapper.netns.execute(cmd)"},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"    def unplug(self, device_name, bridge\u003dNone, namespace\u003dNone, prefix\u003dNone):"},{"line_number":419,"context_line":"        \"\"\"Unplug the interface.\"\"\""}],"source_content_type":"text/x-python","patch_set":12,"id":"df33271e_68b5207e","line":416,"range":{"start_line":413,"start_character":16,"end_line":416,"end_character":45},"updated":"2020-04-09 18:15:09.000000000","message":"Although we don\u0027t have an specific ethtool library, this should go to \"neutron.agent.linux\", probably to \"utils\"","commit_id":"72f94481eca6590ab90114f698f5962955c636c2"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"110382817da5923bbf850f4b1c12c370edb24dc5","unresolved":false,"context_lines":[{"line_number":410,"context_line":"            # ovs-dpdk does not do checksum calculations for veth interface"},{"line_number":411,"context_line":"            # (bug 1832021)"},{"line_number":412,"context_line":"            if self.conf.OVS.datapath_type \u003d\u003d ovs_const.OVS_DATAPATH_NETDEV:"},{"line_number":413,"context_line":"                cmd \u003d [\u0027ethtool\u0027, \u0027--offload\u0027, ns_dev.name,"},{"line_number":414,"context_line":"                       \u0027tx\u0027, \u0027off\u0027, \u0027rx\u0027, \u0027off\u0027]"},{"line_number":415,"context_line":"                ip_wrapper \u003d ip_lib.IPWrapper(namespace\u003dnamespace)"},{"line_number":416,"context_line":"                ip_wrapper.netns.execute(cmd)"},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"    def unplug(self, device_name, bridge\u003dNone, namespace\u003dNone, prefix\u003dNone):"},{"line_number":419,"context_line":"        \"\"\"Unplug the interface.\"\"\""}],"source_content_type":"text/x-python","patch_set":12,"id":"3f4c43b2_2ccd545d","line":416,"range":{"start_line":413,"start_character":16,"end_line":416,"end_character":45},"in_reply_to":"9f3d2ff0_3ffe4705","updated":"2020-04-14 16:46:16.000000000","message":"Ok, you can create a new file there, neutron.agent.linux.ethtool.\n\nIn this file you can create a class to handle ethtool commands. Something like FdbInterface or BridgeDevice.\n\nYou can add a single method in this class, \"offload\", with three parameters, \"device\", \"rx\" and \"tx\".\n\nclass Ethtool(object):\n\n    COMMAND \u003d \u0027ethtool\u0027\n\n    @staticmethod\n    def _cmd(cmd, namespace, **kwargs):\n        ip_wrapper \u003d ip_lib.IPWrapper(namespace)\n        cmd \u003d [cls.COMMAND] + cmd\n        return ip_wrapper.netns.execute(cmd, run_as_root\u003dTrue, **kwargs)\n\n    @staticmethod\n    def offload(cls, device, rx\u003dFalse, tx\u003dFalse, namespace\u003dNone):\n        rx \u003d \u0027on\u0027 if rx else \u0027off\u0027\n        tx \u003d \u0027on\u0027 if tx else \u0027off\u0027\n        cmd \u003d [\u0027--offload\u0027, device, \u0027rx\u0027, rx, \u0027tx\u0027. tx]\n        cls._cmd(cmd, namespace)","commit_id":"72f94481eca6590ab90114f698f5962955c636c2"},{"author":{"_account_id":14029,"name":"Alexander Vlasov","email":"vlasov.alexandr89@gmail.com","username":"avlasov"},"change_message_id":"c90a90e4388025adb6411947a7a79316a9d885a3","unresolved":false,"context_lines":[{"line_number":410,"context_line":"            # ovs-dpdk does not do checksum calculations for veth interface"},{"line_number":411,"context_line":"            # (bug 1832021)"},{"line_number":412,"context_line":"            if self.conf.OVS.datapath_type \u003d\u003d ovs_const.OVS_DATAPATH_NETDEV:"},{"line_number":413,"context_line":"                cmd \u003d [\u0027ethtool\u0027, \u0027--offload\u0027, ns_dev.name,"},{"line_number":414,"context_line":"                       \u0027tx\u0027, \u0027off\u0027, \u0027rx\u0027, \u0027off\u0027]"},{"line_number":415,"context_line":"                ip_wrapper \u003d ip_lib.IPWrapper(namespace\u003dnamespace)"},{"line_number":416,"context_line":"                ip_wrapper.netns.execute(cmd)"},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"    def unplug(self, device_name, bridge\u003dNone, namespace\u003dNone, prefix\u003dNone):"},{"line_number":419,"context_line":"        \"\"\"Unplug the interface.\"\"\""}],"source_content_type":"text/x-python","patch_set":12,"id":"9f3d2ff0_3ffe4705","line":416,"range":{"start_line":413,"start_character":16,"end_line":416,"end_character":45},"in_reply_to":"df33271e_68b5207e","updated":"2020-04-10 16:23:27.000000000","message":"Everything in utils looks like more low level. Maybe another place? If you\u0027re still sure that is the most appropriate place, could you please shore more details on how you think it should look like?","commit_id":"72f94481eca6590ab90114f698f5962955c636c2"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"2951dbfb4fa8366f9994a9c791ca86ccf47bf504","unresolved":false,"context_lines":[{"line_number":410,"context_line":"            # ovs-dpdk does not do checksum calculations for veth interface"},{"line_number":411,"context_line":"            # (bug 1832021)"},{"line_number":412,"context_line":"            if self.conf.OVS.datapath_type \u003d\u003d ovs_const.OVS_DATAPATH_NETDEV:"},{"line_number":413,"context_line":"                ethtool.Ethtool.offload(ns_dev.name, namespace\u003dnamespace)"},{"line_number":414,"context_line":"            root_dev.link.set_up()"},{"line_number":415,"context_line":""},{"line_number":416,"context_line":"    def unplug(self, device_name, bridge\u003dNone, namespace\u003dNone, prefix\u003dNone):"}],"source_content_type":"text/x-python","patch_set":14,"id":"1f493fa4_cf86d2b9","line":413,"range":{"start_line":413,"start_character":32,"end_line":413,"end_character":73},"updated":"2020-04-29 07:21:34.000000000","message":"Better not provide default values for rx/tx (in func definition) as currently from this line it\u0027s not clear whether offloads are being turned on or off.","commit_id":"e8c27d37a37c08d7e238151c085ca6bdc318e886"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9a1c36f04a94f56163dcc6c41c4fbdf45632eea1","unresolved":false,"context_lines":[{"line_number":410,"context_line":"            # ovs-dpdk does not do checksum calculations for veth interface"},{"line_number":411,"context_line":"            # (bug 1832021)"},{"line_number":412,"context_line":"            if self.conf.OVS.datapath_type \u003d\u003d ovs_const.OVS_DATAPATH_NETDEV:"},{"line_number":413,"context_line":"                ethtool.Ethtool.offload(ns_dev.name, False, False, namespace\u003dnamespace)"},{"line_number":414,"context_line":"            root_dev.link.set_up()"},{"line_number":415,"context_line":""},{"line_number":416,"context_line":"    def unplug(self, device_name, bridge\u003dNone, namespace\u003dNone, prefix\u003dNone):"}],"source_content_type":"text/x-python","patch_set":15,"id":"1f493fa4_6378d12a","line":413,"updated":"2020-05-07 22:11:37.000000000","message":"pep8: E501 line too long (87 \u003e 79 characters)","commit_id":"d3b695c2cf3c8bfc46d4f7fea16535938173d9ab"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"a39f922a4bd8d856006b24fa8523681a2e7b5b89","unresolved":false,"context_lines":[{"line_number":410,"context_line":"            # ovs-dpdk does not do checksum calculations for veth interface"},{"line_number":411,"context_line":"            # (bug 1832021)"},{"line_number":412,"context_line":"            if self.conf.OVS.datapath_type \u003d\u003d ovs_const.OVS_DATAPATH_NETDEV:"},{"line_number":413,"context_line":"                ethtool.Ethtool.offload(ns_dev.name, False, False, namespace\u003dnamespace)"},{"line_number":414,"context_line":"            root_dev.link.set_up()"},{"line_number":415,"context_line":""},{"line_number":416,"context_line":"    def unplug(self, device_name, bridge\u003dNone, namespace\u003dNone, prefix\u003dNone):"}],"source_content_type":"text/x-python","patch_set":15,"id":"1f493fa4_3449dd8a","line":413,"range":{"start_line":413,"start_character":53,"end_line":413,"end_character":65},"updated":"2020-05-08 05:57:24.000000000","message":"please set explicitly for readability: rx\u003dFalse, tx\u003dFalse","commit_id":"d3b695c2cf3c8bfc46d4f7fea16535938173d9ab"}],"neutron/tests/unit/agent/linux/test_interface.py":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"795f292c4e9d79a93e0bf2722a2132579710e01c","unresolved":false,"context_lines":[{"line_number":572,"context_line":"            ns_dev.assert_has_calls([mock.call.link.set_mtu(9000)])"},{"line_number":573,"context_line":"            root_dev.assert_has_calls([mock.call.link.set_mtu(9000)])"},{"line_number":574,"context_line":""},{"line_number":575,"context_line":"            self.ip.assert_has_calls(expected)"},{"line_number":576,"context_line":"            root_dev.assert_has_calls([mock.call.link.set_up()])"},{"line_number":577,"context_line":"            ns_dev.assert_has_calls([mock.call.link.set_up()])"},{"line_number":578,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"df33271e_87e966b8","line":575,"range":{"start_line":575,"start_character":12,"end_line":575,"end_character":46},"updated":"2020-03-31 09:36:32.000000000","message":"The test should ensure ethtool call is made during plug (self.ip.netns.arrert_...)","commit_id":"e96ecd6fad5dfe24dfc359336376e8c57342ccd2"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"920df146f15e2cff232db6a3d9a1ce3d771c562f","unresolved":false,"context_lines":[{"line_number":554,"context_line":"                            [\u0027ethtool\u0027, \u0027--offload\u0027, devname,"},{"line_number":555,"context_line":"                             \u0027tx\u0027, \u0027off\u0027, \u0027rx\u0027, \u0027off\u0027]"},{"line_number":556,"context_line":"                        )"},{"line_number":557,"context_line":"            ]"},{"line_number":558,"context_line":""},{"line_number":559,"context_line":"            with mock.patch.object(ovs_lib.OVSBridge,"},{"line_number":560,"context_line":"                                   \u0027replace_port\u0027) as replace:"}],"source_content_type":"text/x-python","patch_set":7,"id":"df33271e_9886d212","line":557,"updated":"2020-04-01 00:57:18.000000000","message":"E124 closing bracket does not match visual indentation","commit_id":"171b7605ced69bc07a8f2433de5c523e5ea5f4c3"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"0c5b76b032fdb9260e4f4c010e7496415535145e","unresolved":false,"context_lines":[{"line_number":554,"context_line":"                            [\u0027ethtool\u0027, \u0027--offload\u0027, devname,"},{"line_number":555,"context_line":"                             \u0027tx\u0027, \u0027off\u0027, \u0027rx\u0027, \u0027off\u0027]"},{"line_number":556,"context_line":"                        )"},{"line_number":557,"context_line":"            ]"},{"line_number":558,"context_line":""},{"line_number":559,"context_line":"            with mock.patch.object(ovs_lib.OVSBridge,"},{"line_number":560,"context_line":"                                   \u0027replace_port\u0027) as replace:"}],"source_content_type":"text/x-python","patch_set":9,"id":"df33271e_f9a07294","line":557,"updated":"2020-04-03 22:17:46.000000000","message":"pep8: E124 closing bracket does not match visual indentation","commit_id":"57feb6fcbb1e7df3481b7c508f8a796205daec06"}]}
