)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"0168c121097956e3726de3cdaab5a2f0c2dbb58a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"dc8a0188_f6b305b9","updated":"2021-11-18 08:39:03.000000000","message":"Please, refer this patch to a launchpad bug with a problem description.","commit_id":"e345f5be8c6671062044a6238af51641ed755ccf"},{"author":{"_account_id":30454,"name":"Yi Yang","email":"yangyi01@inspur.com","username":"yangyi01"},"change_message_id":"348daf8809abb8260494a631b1eceefb9edb9d28","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"8889aa44_e7d4ec05","updated":"2021-11-19 01:37:42.000000000","message":"Rodolfo, thank you so much for reviewing, no document available for netns options, you can join http://www.openvswitch.org/support/ovscon2021/ by then, I\u0027ll have a talk \"Make OVS DPDK a First-class Citizen in Openstack\" for detailed information.","commit_id":"e345f5be8c6671062044a6238af51641ed755ccf"},{"author":{"_account_id":30454,"name":"Yi Yang","email":"yangyi01@inspur.com","username":"yangyi01"},"change_message_id":"348daf8809abb8260494a631b1eceefb9edb9d28","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"33e86e50_7583ec8e","in_reply_to":"dc8a0188_f6b305b9","updated":"2021-11-19 01:37:42.000000000","message":"Rodolfo, thank you so much for reviewing, https://bugs.launchpad.net/neutron/+bug/1951493 is filed for this.","commit_id":"e345f5be8c6671062044a6238af51641ed755ccf"},{"author":{"_account_id":30454,"name":"Yi Yang","email":"yangyi01@inspur.com","username":"yangyi01"},"change_message_id":"f967237dc3143e45bec194586094ea88033a608c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"1f7e7c99_ef2ac280","updated":"2021-11-25 01:21:01.000000000","message":"Thank you two so much for reviewing. please check inline replies.","commit_id":"42ef7a0f26d73f5666d2440f4dfb684720c1bc1d"}],"neutron/agent/linux/interface.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"0168c121097956e3726de3cdaab5a2f0c2dbb58a","unresolved":true,"context_lines":[{"line_number":366,"context_line":"                                   \u0027attached-mac\u0027: mac_address})]"},{"line_number":367,"context_line":"        if (self.conf.OVS.datapath_type \u003d\u003d ovs_const.OVS_DATAPATH_NETDEV and"},{"line_number":368,"context_line":"                not self.conf.ovs_use_veth):"},{"line_number":369,"context_line":"            attrs.insert(0, (\u0027type\u0027, \u0027tap\u0027))"},{"line_number":370,"context_line":"        elif internal:"},{"line_number":371,"context_line":"            attrs.insert(0, (\u0027type\u0027, \u0027internal\u0027))"},{"line_number":372,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5e24cd2f_9a277d35","line":369,"range":{"start_line":369,"start_character":12,"end_line":369,"end_character":44},"updated":"2021-11-18 08:39:03.000000000","message":"Can you provide a link to document this option?","commit_id":"e345f5be8c6671062044a6238af51641ed755ccf"},{"author":{"_account_id":30454,"name":"Yi Yang","email":"yangyi01@inspur.com","username":"yangyi01"},"change_message_id":"348daf8809abb8260494a631b1eceefb9edb9d28","unresolved":true,"context_lines":[{"line_number":366,"context_line":"                                   \u0027attached-mac\u0027: mac_address})]"},{"line_number":367,"context_line":"        if (self.conf.OVS.datapath_type \u003d\u003d ovs_const.OVS_DATAPATH_NETDEV and"},{"line_number":368,"context_line":"                not self.conf.ovs_use_veth):"},{"line_number":369,"context_line":"            attrs.insert(0, (\u0027type\u0027, \u0027tap\u0027))"},{"line_number":370,"context_line":"        elif internal:"},{"line_number":371,"context_line":"            attrs.insert(0, (\u0027type\u0027, \u0027internal\u0027))"},{"line_number":372,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"e8fe3516_dd893bf7","line":369,"range":{"start_line":369,"start_character":12,"end_line":369,"end_character":44},"in_reply_to":"5e24cd2f_9a277d35","updated":"2021-11-19 01:37:42.000000000","message":"This isn\u0027t merged into OVS master, so no document for it.","commit_id":"e345f5be8c6671062044a6238af51641ed755ccf"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"0168c121097956e3726de3cdaab5a2f0c2dbb58a","unresolved":true,"context_lines":[{"line_number":420,"context_line":"                if self.conf.OVS.datapath_type \u003d\u003d ovs_const.OVS_DATAPATH_NETDEV:"},{"line_number":421,"context_line":"                    ovs \u003d ovs_lib.OVSBridge(bridge)"},{"line_number":422,"context_line":"                    ovs.set_db_attribute(\u0027Interface\u0027, tap_name,"},{"line_number":423,"context_line":"                                         \u0027options\u0027, {\u0027netns\u0027: namespace})"},{"line_number":424,"context_line":"            except (pyroute2_exc.NetlinkError, OSError):"},{"line_number":425,"context_line":"                # To prevent the namespace failure from blasting OVS, the OVS"},{"line_number":426,"context_line":"                # port creation should be reverted. Possible exceptions:"}],"source_content_type":"text/x-python","patch_set":1,"id":"95b3f526_defef3f9","line":423,"range":{"start_line":423,"start_character":41,"end_line":423,"end_character":73},"updated":"2021-11-18 08:39:03.000000000","message":"Can you provide a link to document this option?","commit_id":"e345f5be8c6671062044a6238af51641ed755ccf"},{"author":{"_account_id":30454,"name":"Yi Yang","email":"yangyi01@inspur.com","username":"yangyi01"},"change_message_id":"348daf8809abb8260494a631b1eceefb9edb9d28","unresolved":true,"context_lines":[{"line_number":420,"context_line":"                if self.conf.OVS.datapath_type \u003d\u003d ovs_const.OVS_DATAPATH_NETDEV:"},{"line_number":421,"context_line":"                    ovs \u003d ovs_lib.OVSBridge(bridge)"},{"line_number":422,"context_line":"                    ovs.set_db_attribute(\u0027Interface\u0027, tap_name,"},{"line_number":423,"context_line":"                                         \u0027options\u0027, {\u0027netns\u0027: namespace})"},{"line_number":424,"context_line":"            except (pyroute2_exc.NetlinkError, OSError):"},{"line_number":425,"context_line":"                # To prevent the namespace failure from blasting OVS, the OVS"},{"line_number":426,"context_line":"                # port creation should be reverted. Possible exceptions:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ef3def85_ae9b03ac","line":423,"range":{"start_line":423,"start_character":41,"end_line":423,"end_character":73},"in_reply_to":"95b3f526_defef3f9","updated":"2021-11-19 01:37:42.000000000","message":"ditto","commit_id":"e345f5be8c6671062044a6238af51641ed755ccf"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1faf97f975ada75cb3b8531e022cc39f515dc919","unresolved":true,"context_lines":[{"line_number":366,"context_line":"                                   \u0027attached-mac\u0027: mac_address})]"},{"line_number":367,"context_line":"        if (self.conf.OVS.datapath_type \u003d\u003d ovs_const.OVS_DATAPATH_NETDEV and"},{"line_number":368,"context_line":"                not self.conf.ovs_use_veth):"},{"line_number":369,"context_line":"            attrs.insert(0, (\u0027type\u0027, \u0027tap\u0027))"},{"line_number":370,"context_line":"        elif internal:"},{"line_number":371,"context_line":"            attrs.insert(0, (\u0027type\u0027, \u0027internal\u0027))"},{"line_number":372,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"d0dea370_c7be5f02","line":369,"range":{"start_line":369,"start_character":11,"end_line":369,"end_character":44},"updated":"2021-11-24 14:06:40.000000000","message":"no this shoudl still be type internal\ninternal is a tap device that is created by ovs","commit_id":"42ef7a0f26d73f5666d2440f4dfb684720c1bc1d"},{"author":{"_account_id":30454,"name":"Yi Yang","email":"yangyi01@inspur.com","username":"yangyi01"},"change_message_id":"f967237dc3143e45bec194586094ea88033a608c","unresolved":true,"context_lines":[{"line_number":366,"context_line":"                                   \u0027attached-mac\u0027: mac_address})]"},{"line_number":367,"context_line":"        if (self.conf.OVS.datapath_type \u003d\u003d ovs_const.OVS_DATAPATH_NETDEV and"},{"line_number":368,"context_line":"                not self.conf.ovs_use_veth):"},{"line_number":369,"context_line":"            attrs.insert(0, (\u0027type\u0027, \u0027tap\u0027))"},{"line_number":370,"context_line":"        elif internal:"},{"line_number":371,"context_line":"            attrs.insert(0, (\u0027type\u0027, \u0027internal\u0027))"},{"line_number":372,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"a3f6b043_7b6a47b2","line":369,"range":{"start_line":369,"start_character":11,"end_line":369,"end_character":44},"in_reply_to":"d0dea370_c7be5f02","updated":"2021-11-25 01:21:01.000000000","message":"Sean, thank you so much for reviewing.\n\nHere we need something tricky because bridge itself is also internal type, if bridge port is handled by PMD thread, it will result in deadlock, so we have to set non bridge interfaces to tap to differentiate from bridge itself. For internal type, ovs-vswitchd will handle them, PMD threads won\u0027t handle them, but for tap type, PMD thread will handle them, ovs-vswitchd won\u0027t handle them.","commit_id":"42ef7a0f26d73f5666d2440f4dfb684720c1bc1d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"007ece9129c08714c4deed3983308f0494f990a4","unresolved":true,"context_lines":[{"line_number":369,"context_line":"            attrs.insert(0, (\u0027type\u0027, \u0027tap\u0027))"},{"line_number":370,"context_line":"        elif internal:"},{"line_number":371,"context_line":"            attrs.insert(0, (\u0027type\u0027, \u0027internal\u0027))"},{"line_number":372,"context_line":""},{"line_number":373,"context_line":"        ovs \u003d ovs_lib.OVSBridge(bridge)"},{"line_number":374,"context_line":"        ovs.replace_port(device_name, *attrs)"},{"line_number":375,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5ba2d33f_f08cd66f","line":372,"updated":"2021-11-24 14:08:51.000000000","message":"so here you need to do attrs.insert (0,(\u0027options\u0027, {\u0027netns\u0027: namespace})\nor similar to ensure the corerct network namespace is used","commit_id":"42ef7a0f26d73f5666d2440f4dfb684720c1bc1d"},{"author":{"_account_id":30454,"name":"Yi Yang","email":"yangyi01@inspur.com","username":"yangyi01"},"change_message_id":"f967237dc3143e45bec194586094ea88033a608c","unresolved":true,"context_lines":[{"line_number":369,"context_line":"            attrs.insert(0, (\u0027type\u0027, \u0027tap\u0027))"},{"line_number":370,"context_line":"        elif internal:"},{"line_number":371,"context_line":"            attrs.insert(0, (\u0027type\u0027, \u0027internal\u0027))"},{"line_number":372,"context_line":""},{"line_number":373,"context_line":"        ovs \u003d ovs_lib.OVSBridge(bridge)"},{"line_number":374,"context_line":"        ovs.replace_port(device_name, *attrs)"},{"line_number":375,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"8c7d8bd3_c3f284e8","line":372,"in_reply_to":"5ba2d33f_f08cd66f","updated":"2021-11-25 01:21:01.000000000","message":"Ok, we\u0027ll change it per your comment.","commit_id":"42ef7a0f26d73f5666d2440f4dfb684720c1bc1d"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"49db4bc689952be1df6e99595548ec6f7d0bf506","unresolved":true,"context_lines":[{"line_number":415,"context_line":"        # Add an interface created by ovs to the namespace."},{"line_number":416,"context_line":"        if not self.conf.ovs_use_veth and namespace:"},{"line_number":417,"context_line":"            try:"},{"line_number":418,"context_line":"                namespace_obj \u003d ip.ensure_namespace(namespace)"},{"line_number":419,"context_line":"                namespace_obj.add_device_to_namespace(ns_dev)"},{"line_number":420,"context_line":"                if self.conf.OVS.datapath_type \u003d\u003d ovs_const.OVS_DATAPATH_NETDEV:"},{"line_number":421,"context_line":"                    ovs \u003d ovs_lib.OVSBridge(bridge)"},{"line_number":422,"context_line":"                    ovs.set_db_attribute(\u0027Interface\u0027, tap_name,"}],"source_content_type":"text/x-python","patch_set":3,"id":"9954f423_8f092231","line":419,"range":{"start_line":418,"start_character":16,"end_line":419,"end_character":61},"updated":"2021-11-24 14:09:26.000000000","message":"This should be conditional to the datapath type. If netdev, we should just write the netns option in the Interface.","commit_id":"42ef7a0f26d73f5666d2440f4dfb684720c1bc1d"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"796c0332e7a804f36a3751fb85d14f464225531f","unresolved":true,"context_lines":[{"line_number":415,"context_line":"        # Add an interface created by ovs to the namespace."},{"line_number":416,"context_line":"        if not self.conf.ovs_use_veth and namespace:"},{"line_number":417,"context_line":"            try:"},{"line_number":418,"context_line":"                namespace_obj \u003d ip.ensure_namespace(namespace)"},{"line_number":419,"context_line":"                namespace_obj.add_device_to_namespace(ns_dev)"},{"line_number":420,"context_line":"                if self.conf.OVS.datapath_type \u003d\u003d ovs_const.OVS_DATAPATH_NETDEV:"},{"line_number":421,"context_line":"                    ovs \u003d ovs_lib.OVSBridge(bridge)"},{"line_number":422,"context_line":"                    ovs.set_db_attribute(\u0027Interface\u0027, tap_name,"}],"source_content_type":"text/x-python","patch_set":3,"id":"fd5387a3_5a7a4de2","line":419,"range":{"start_line":418,"start_character":16,"end_line":419,"end_character":61},"in_reply_to":"9954f423_8f092231","updated":"2021-11-24 14:15:19.000000000","message":"Actually, as commented by Sean, the \"netns\" option should be set in \"_ovs_add_port\", before executing this code.","commit_id":"42ef7a0f26d73f5666d2440f4dfb684720c1bc1d"},{"author":{"_account_id":30454,"name":"Yi Yang","email":"yangyi01@inspur.com","username":"yangyi01"},"change_message_id":"f967237dc3143e45bec194586094ea88033a608c","unresolved":true,"context_lines":[{"line_number":415,"context_line":"        # Add an interface created by ovs to the namespace."},{"line_number":416,"context_line":"        if not self.conf.ovs_use_veth and namespace:"},{"line_number":417,"context_line":"            try:"},{"line_number":418,"context_line":"                namespace_obj \u003d ip.ensure_namespace(namespace)"},{"line_number":419,"context_line":"                namespace_obj.add_device_to_namespace(ns_dev)"},{"line_number":420,"context_line":"                if self.conf.OVS.datapath_type \u003d\u003d ovs_const.OVS_DATAPATH_NETDEV:"},{"line_number":421,"context_line":"                    ovs \u003d ovs_lib.OVSBridge(bridge)"},{"line_number":422,"context_line":"                    ovs.set_db_attribute(\u0027Interface\u0027, tap_name,"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba208cbe_7d01ece6","line":419,"range":{"start_line":418,"start_character":16,"end_line":419,"end_character":61},"in_reply_to":"fd5387a3_5a7a4de2","updated":"2021-11-25 01:21:01.000000000","message":"Agree, we\u0027ll change it per your comments.","commit_id":"42ef7a0f26d73f5666d2440f4dfb684720c1bc1d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1faf97f975ada75cb3b8531e022cc39f515dc919","unresolved":true,"context_lines":[{"line_number":419,"context_line":"                namespace_obj.add_device_to_namespace(ns_dev)"},{"line_number":420,"context_line":"                if self.conf.OVS.datapath_type \u003d\u003d ovs_const.OVS_DATAPATH_NETDEV:"},{"line_number":421,"context_line":"                    ovs \u003d ovs_lib.OVSBridge(bridge)"},{"line_number":422,"context_line":"                    ovs.set_db_attribute(\u0027Interface\u0027, tap_name,"},{"line_number":423,"context_line":"                                         \u0027options\u0027, {\u0027netns\u0027: namespace})"},{"line_number":424,"context_line":"            except (pyroute2_exc.NetlinkError, OSError):"},{"line_number":425,"context_line":"                # To prevent the namespace failure from blasting OVS, the OVS"},{"line_number":426,"context_line":"                # port creation should be reverted. Possible exceptions:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a290a6a_53eaaac0","line":423,"range":{"start_line":422,"start_character":19,"end_line":423,"end_character":73},"updated":"2021-11-24 14:06:40.000000000","message":"this i think is the real fix the network namespace need to be set on the internal port.","commit_id":"42ef7a0f26d73f5666d2440f4dfb684720c1bc1d"},{"author":{"_account_id":30454,"name":"Yi Yang","email":"yangyi01@inspur.com","username":"yangyi01"},"change_message_id":"f967237dc3143e45bec194586094ea88033a608c","unresolved":true,"context_lines":[{"line_number":419,"context_line":"                namespace_obj.add_device_to_namespace(ns_dev)"},{"line_number":420,"context_line":"                if self.conf.OVS.datapath_type \u003d\u003d ovs_const.OVS_DATAPATH_NETDEV:"},{"line_number":421,"context_line":"                    ovs \u003d ovs_lib.OVSBridge(bridge)"},{"line_number":422,"context_line":"                    ovs.set_db_attribute(\u0027Interface\u0027, tap_name,"},{"line_number":423,"context_line":"                                         \u0027options\u0027, {\u0027netns\u0027: namespace})"},{"line_number":424,"context_line":"            except (pyroute2_exc.NetlinkError, OSError):"},{"line_number":425,"context_line":"                # To prevent the namespace failure from blasting OVS, the OVS"},{"line_number":426,"context_line":"                # port creation should be reverted. Possible exceptions:"}],"source_content_type":"text/x-python","patch_set":3,"id":"f20d3ace_958d7047","line":423,"range":{"start_line":422,"start_character":19,"end_line":423,"end_character":73},"in_reply_to":"9a290a6a_53eaaac0","updated":"2021-11-25 01:21:01.000000000","message":"ditto. bridge itself isn\u0027t in network namespace, so we needn\u0027t set netns.","commit_id":"42ef7a0f26d73f5666d2440f4dfb684720c1bc1d"}]}
