)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"5af1b685b66be94d10f50c09a61d048065422ded","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"f7ecac8d_ce4488c6","updated":"2021-10-26 05:37:03.000000000","message":"Early bird review 😊","commit_id":"ce782361abb134629a71fb9646ed95646e5fe973"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"60dfe7cd7074cf7f4e7fede264887a181f97b944","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"e3f3d1d6_7a959921","updated":"2021-10-22 09:43:30.000000000","message":"To be covered with tests","commit_id":"ce782361abb134629a71fb9646ed95646e5fe973"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"e3dfee43ebfc1c0cddb481bbe1a7c1ce62781521","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"24dfc013_0499acd0","updated":"2021-10-28 13:06:36.000000000","message":"UT to be added","commit_id":"46e7dd4d0c889c2350dd202ff67d51cf7836529f"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"831e1621faba80df737d43867bf785cdedffa760","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"79d0731e_74e124dc","updated":"2021-11-02 09:42:05.000000000","message":"recheck","commit_id":"c1e198e9b138951aab9d4e6b11b4c2927bbe93a8"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"ff7ce75703046e200a49a1f1de3ffdc64c6c2860","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"8bac5a31_d568064d","updated":"2021-11-02 12:01:35.000000000","message":"recheck","commit_id":"c1e198e9b138951aab9d4e6b11b4c2927bbe93a8"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"5b0bf6419667185e72dcfdc736acbead4fcacf3d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"90a74f73_719164ab","updated":"2021-11-08 11:21:13.000000000","message":"I would like to see also some doc describing those new flows, e.g. in https://docs.openstack.org/neutron/latest/contributor/internals/ but that can be done in follow up patch at the end of the series.","commit_id":"88441faa85eabb8d4a7d2f14ed939ef2dd75a93a"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"e9045c11ba36c83d4d205f9379d954834108e4d4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"dca1a4dd_e6198730","in_reply_to":"90a74f73_719164ab","updated":"2021-12-01 14:44:53.000000000","message":"Added docs, please check: https://review.opendev.org/c/openstack/neutron/+/820031","commit_id":"88441faa85eabb8d4a7d2f14ed939ef2dd75a93a"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"a2117f25be343136a579a9792c005d949529e138","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"8bd5b0c3_6fec730e","updated":"2021-11-11 07:30:33.000000000","message":"recheck","commit_id":"a4136fe2f7b670a005088ae3cb79dc7660c8aac8"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"221e180c3ee08d306672e7c2471a145e6b897dcc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"130c174f_0db34be4","updated":"2021-11-12 12:44:18.000000000","message":"recheck","commit_id":"945c8d90756770f7dafd741680334e771bbad955"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"1871c94460a0ec05141c1bf667261f887378d4a5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"62cffe3f_27e12e57","updated":"2021-12-08 15:47:05.000000000","message":"Just one question. -1 for visibility. If that is ok as it is now, I\u0027ll be happy to change my vote to +2 😊","commit_id":"b51d6958f3c93e72a720fcef77ff55e0d5d10277"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"811a2343a578a4ac20bf8ac1c2d6898eb3d9bd6c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"a696cc77_9e33b2e9","updated":"2021-12-15 08:59:08.000000000","message":"Let\u0027s wait for other reviewers to come back","commit_id":"b51d6958f3c93e72a720fcef77ff55e0d5d10277"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"a5b1dcab1c13cf32416f8c84a51de9c650ad6038","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"48e963b3_d2088f81","updated":"2021-11-27 08:22:14.000000000","message":"recheck","commit_id":"b51d6958f3c93e72a720fcef77ff55e0d5d10277"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"b53de71d411975e7a6d219f3f49a81d45cabe187","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"708ac7f9_2c39f7b7","updated":"2021-11-29 10:26:47.000000000","message":"recheck","commit_id":"b51d6958f3c93e72a720fcef77ff55e0d5d10277"},{"author":{"_account_id":32667,"name":"Mamatisa Nurmatov","email":"nurmatov.mamatisa@huawei.com","username":"isabek"},"change_message_id":"9876d30a73847834cc1918841fdf874b49172749","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"83724e5a_4b5a13af","updated":"2021-12-30 18:34:46.000000000","message":"recheck","commit_id":"b51d6958f3c93e72a720fcef77ff55e0d5d10277"},{"author":{"_account_id":32667,"name":"Mamatisa Nurmatov","email":"nurmatov.mamatisa@huawei.com","username":"isabek"},"change_message_id":"44acefb5680f7c7736288412b3d30b0d36ef795c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"ab5a9774_cb6ac522","updated":"2021-12-28 12:15:02.000000000","message":"recheck","commit_id":"b51d6958f3c93e72a720fcef77ff55e0d5d10277"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"06025193846b34ccc5022e3525ce5bb2d459cbcb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"d707e938_e21f4bed","updated":"2021-11-29 07:23:30.000000000","message":"recheck","commit_id":"b51d6958f3c93e72a720fcef77ff55e0d5d10277"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"09848d596e09509bcc90b9b1c87c05992d1dda0f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"8002a0e4_5072f64f","updated":"2021-12-30 11:56:36.000000000","message":"recheck (seems CI\u0027s back to healthy)","commit_id":"b51d6958f3c93e72a720fcef77ff55e0d5d10277"}],"neutron/agent/l2/extensions/local_ip.py":[{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"1ef7681bcbb75b19e593a523a1cfa19e2d84c77b","unresolved":true,"context_lines":[{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import collections"},{"line_number":17,"context_line":"import sys"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import netaddr"},{"line_number":20,"context_line":"from neutron_lib.agent import l2_extension"}],"source_content_type":"text/x-python","patch_set":11,"id":"ceab48ad_e5ca9342","line":17,"updated":"2021-11-05 02:58:00.000000000","message":"You can swap the order of \"Add Local IP L2 extension flows\" and \"Add Local IP L2 extension\". Then all these changes will be added to the \"L2 extension\" patch. So this commit will contain simple flow installation/removal helper functions.","commit_id":"88441faa85eabb8d4a7d2f14ed939ef2dd75a93a"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"a4232cae162a6b6e4376c57bb5f91895fccb57e0","unresolved":true,"context_lines":[{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import collections"},{"line_number":17,"context_line":"import sys"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import netaddr"},{"line_number":20,"context_line":"from neutron_lib.agent import l2_extension"}],"source_content_type":"text/x-python","patch_set":11,"id":"843f575e_d9748ae5","line":17,"in_reply_to":"0f0c9908_1d772ba2","updated":"2021-11-09 09:18:21.000000000","message":"I prefer to add code and it\u0027s usage in same patch, so it\u0027s clear for reviewers how this code is working. Do you think \"TBD\" in a new feature in a new agent extension (disabled by default) is a blocking issue?","commit_id":"88441faa85eabb8d4a7d2f14ed939ef2dd75a93a"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"6a51d0e19845135881a68f7bf069d8a42605c80a","unresolved":true,"context_lines":[{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import collections"},{"line_number":17,"context_line":"import sys"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import netaddr"},{"line_number":20,"context_line":"from neutron_lib.agent import l2_extension"}],"source_content_type":"text/x-python","patch_set":11,"id":"0f0c9908_1d772ba2","line":17,"in_reply_to":"5de03d14_faa4e542","updated":"2021-11-09 08:36:09.000000000","message":"I mean do not add those \"# TBD\" [1] in a real commit. Just swap this patch sequence of \"Add Local IP L2 extension flows\" and \"Add Local IP L2 extension\". The entire implementation order should be:\n1. neutron-server side (API/DB/plugin) works with some resource notification changes\n2. \"Add Local IP L2 extension flows\" which only added helper functions on br-int\n3. \"Add Local IP L2 extension\" which add the whole extension, the new extension will use the flow functions on br-int\n4. policy works\n5. test works\n...\n\n\n[1] https://review.opendev.org/c/openstack/neutron/+/807116/23/neutron/agent/l2/extensions/local_ip.py#121","commit_id":"88441faa85eabb8d4a7d2f14ed939ef2dd75a93a"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"aea349011c0d83268d2c6bea15a5fa364c044610","unresolved":true,"context_lines":[{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import collections"},{"line_number":17,"context_line":"import sys"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import netaddr"},{"line_number":20,"context_line":"from neutron_lib.agent import l2_extension"}],"source_content_type":"text/x-python","patch_set":11,"id":"5de03d14_faa4e542","line":17,"in_reply_to":"ceab48ad_e5ca9342","updated":"2021-11-08 12:02:24.000000000","message":"Not sure I got what you mean. \"Add Local IP L2 extension\" just adds skeleton and basic event handling and resource caching. Current patch adds flow handling. How can I swap the order?","commit_id":"88441faa85eabb8d4a7d2f14ed939ef2dd75a93a"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"5b0bf6419667185e72dcfdc736acbead4fcacf3d","unresolved":true,"context_lines":[{"line_number":153,"context_line":"    def _pop_local_ip_updates_for_port(self, port_id):"},{"line_number":154,"context_line":"        return {"},{"line_number":155,"context_line":"            \u0027added\u0027: self.local_ip_updates[\u0027added\u0027].pop(port_id, {}),"},{"line_number":156,"context_line":"            \u0027deleted\u0027: self.local_ip_updates[\u0027deleted\u0027].pop(port_id, {})"},{"line_number":157,"context_line":"        }"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"    def add_local_ip_flows(self, port, assoc):"}],"source_content_type":"text/x-python","patch_set":11,"id":"dc0ee873_d773cf96","line":156,"updated":"2021-11-08 11:21:13.000000000","message":"can the same port be in added and deleted list?","commit_id":"88441faa85eabb8d4a7d2f14ed939ef2dd75a93a"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"aea349011c0d83268d2c6bea15a5fa364c044610","unresolved":true,"context_lines":[{"line_number":153,"context_line":"    def _pop_local_ip_updates_for_port(self, port_id):"},{"line_number":154,"context_line":"        return {"},{"line_number":155,"context_line":"            \u0027added\u0027: self.local_ip_updates[\u0027added\u0027].pop(port_id, {}),"},{"line_number":156,"context_line":"            \u0027deleted\u0027: self.local_ip_updates[\u0027deleted\u0027].pop(port_id, {})"},{"line_number":157,"context_line":"        }"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"    def add_local_ip_flows(self, port, assoc):"}],"source_content_type":"text/x-python","patch_set":11,"id":"cb723ebc_383c8a8f","line":156,"in_reply_to":"dc0ee873_d773cf96","updated":"2021-11-08 12:02:24.000000000","message":"yes, if two events happen shortly one after another, for example:\n - port \u003cport_id1\u003e was disassociated with Local IP \u003clocal_ip1\u003e\n - port \u003cport_id1\u003e was associated with another Local IP \u003clocal_ip2\u003e","commit_id":"88441faa85eabb8d4a7d2f14ed939ef2dd75a93a"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"31382517852b2305dbf8279aa40869c74cfb8493","unresolved":true,"context_lines":[{"line_number":48,"context_line":"            sys.exit(1)"},{"line_number":49,"context_line":"        if (cfg.CONF.SECURITYGROUP.enable_security_group and"},{"line_number":50,"context_line":"                cfg.CONF.SECURITYGROUP.firewall_driver \u003d\u003d \u0027openvswitch\u0027):"},{"line_number":51,"context_line":"            LOG.error(\u0027Local IP extension is not supported together with \u0027"},{"line_number":52,"context_line":"                      \u0027openvswitch firewall\u0027)"},{"line_number":53,"context_line":"            sys.exit(1)"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        self.resource_rpc \u003d resources_rpc.ResourcesPullRpcApi()"}],"source_content_type":"text/x-python","patch_set":15,"id":"fc2fb4ff_7ab2f10e","line":52,"range":{"start_line":51,"start_character":23,"end_line":52,"end_character":43},"updated":"2021-12-15 08:58:39.000000000","message":"+1","commit_id":"b51d6958f3c93e72a720fcef77ff55e0d5d10277"}],"neutron/plugins/ml2/drivers/openvswitch/agent/common/constants.py":[{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"5435ebf86fb8dadb3b9b03022e1dbabeddeccbc9","unresolved":true,"context_lines":[{"line_number":59,"context_line":""},{"line_number":60,"context_line":"LOCAL_EGRESS_TABLE \u003d 30"},{"line_number":61,"context_line":"LOCAL_IP_TABLE \u003d 31"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"# Table to decide whether further filtering is needed"},{"line_number":64,"context_line":"TRANSIENT_TABLE \u003d 60"},{"line_number":65,"context_line":"LOCAL_MAC_DIRECT \u003d 61"}],"source_content_type":"text/x-python","patch_set":11,"id":"1d51be4d_f702852c","line":62,"updated":"2021-11-05 02:47:05.000000000","message":"You should not change this file here, because thay are going to remove this. You should change the neutron-lib first, and then wait for a release of neutron-lib. 😊","commit_id":"88441faa85eabb8d4a7d2f14ed939ef2dd75a93a"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"b9ef23f7a201222e701c081498947f9d05c39ba3","unresolved":true,"context_lines":[{"line_number":59,"context_line":""},{"line_number":60,"context_line":"LOCAL_EGRESS_TABLE \u003d 30"},{"line_number":61,"context_line":"LOCAL_IP_TABLE \u003d 31"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"# Table to decide whether further filtering is needed"},{"line_number":64,"context_line":"TRANSIENT_TABLE \u003d 60"},{"line_number":65,"context_line":"LOCAL_MAC_DIRECT \u003d 61"}],"source_content_type":"text/x-python","patch_set":11,"id":"3d120e4e_579095ba","line":62,"in_reply_to":"1d51be4d_f702852c","updated":"2021-11-05 08:10:35.000000000","message":"Where are we removing this file? Do you have the patch?","commit_id":"88441faa85eabb8d4a7d2f14ed939ef2dd75a93a"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"aea349011c0d83268d2c6bea15a5fa364c044610","unresolved":false,"context_lines":[{"line_number":59,"context_line":""},{"line_number":60,"context_line":"LOCAL_EGRESS_TABLE \u003d 30"},{"line_number":61,"context_line":"LOCAL_IP_TABLE \u003d 31"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"# Table to decide whether further filtering is needed"},{"line_number":64,"context_line":"TRANSIENT_TABLE \u003d 60"},{"line_number":65,"context_line":"LOCAL_MAC_DIRECT \u003d 61"}],"source_content_type":"text/x-python","patch_set":11,"id":"9eb79b8c_e678a112","line":62,"in_reply_to":"23fdfaad_eb760657","updated":"2021-11-08 12:02:24.000000000","message":"Ok to rehome later when needed","commit_id":"88441faa85eabb8d4a7d2f14ed939ef2dd75a93a"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"9a66b1b73c7270fc36ba04fbe66b4ab7e49f5463","unresolved":true,"context_lines":[{"line_number":59,"context_line":""},{"line_number":60,"context_line":"LOCAL_EGRESS_TABLE \u003d 30"},{"line_number":61,"context_line":"LOCAL_IP_TABLE \u003d 31"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"# Table to decide whether further filtering is needed"},{"line_number":64,"context_line":"TRANSIENT_TABLE \u003d 60"},{"line_number":65,"context_line":"LOCAL_MAC_DIRECT \u003d 61"}],"source_content_type":"text/x-python","patch_set":11,"id":"dc40da8b_3e34406c","line":62,"in_reply_to":"3d120e4e_579095ba","updated":"2021-11-05 08:21:09.000000000","message":"Yes, see this patch:\nhttps://review.opendev.org/c/openstack/neutron/+/797121/10","commit_id":"88441faa85eabb8d4a7d2f14ed939ef2dd75a93a"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"5b0bf6419667185e72dcfdc736acbead4fcacf3d","unresolved":true,"context_lines":[{"line_number":59,"context_line":""},{"line_number":60,"context_line":"LOCAL_EGRESS_TABLE \u003d 30"},{"line_number":61,"context_line":"LOCAL_IP_TABLE \u003d 31"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"# Table to decide whether further filtering is needed"},{"line_number":64,"context_line":"TRANSIENT_TABLE \u003d 60"},{"line_number":65,"context_line":"LOCAL_MAC_DIRECT \u003d 61"}],"source_content_type":"text/x-python","patch_set":11,"id":"23fdfaad_eb760657","line":62,"in_reply_to":"dc40da8b_3e34406c","updated":"2021-11-08 11:21:13.000000000","message":"yes, ideally would be if You would propose it to the neutron-lib. But as it\u0027s not removed yet, we can merge it here and I will rehome it later if needed.","commit_id":"88441faa85eabb8d4a7d2f14ed939ef2dd75a93a"}],"neutron/plugins/ml2/drivers/openvswitch/agent/openflow/native/br_int.py":[{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"5af1b685b66be94d10f50c09a61d048065422ded","unresolved":true,"context_lines":[{"line_number":513,"context_line":"                          match\u003dmatch)"},{"line_number":514,"context_line":""},{"line_number":515,"context_line":"    def setup_local_ip_translation(self, vlan, local_ip, dest_ip, mac):"},{"line_number":516,"context_line":"        self.add_flow("},{"line_number":517,"context_line":"            table\u003dconstants.LOCAL_IP_TABLE,"},{"line_number":518,"context_line":"            priority\u003d10,"},{"line_number":519,"context_line":"            nw_dst\u003dlocal_ip,"}],"source_content_type":"text/x-python","patch_set":2,"id":"ddd1d91b_f96403c4","line":516,"range":{"start_line":516,"start_character":13,"end_line":516,"end_character":21},"updated":"2021-10-26 05:37:03.000000000","message":"Such add_flow method is not recommended to use.","commit_id":"ce782361abb134629a71fb9646ed95646e5fe973"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"eb74940f2037cc1b9d863be80cf64020e83b3dec","unresolved":true,"context_lines":[{"line_number":513,"context_line":"                          match\u003dmatch)"},{"line_number":514,"context_line":""},{"line_number":515,"context_line":"    def setup_local_ip_translation(self, vlan, local_ip, dest_ip, mac):"},{"line_number":516,"context_line":"        self.add_flow("},{"line_number":517,"context_line":"            table\u003dconstants.LOCAL_IP_TABLE,"},{"line_number":518,"context_line":"            priority\u003d10,"},{"line_number":519,"context_line":"            nw_dst\u003dlocal_ip,"}],"source_content_type":"text/x-python","patch_set":2,"id":"eec85da5_81732445","line":516,"range":{"start_line":516,"start_character":13,"end_line":516,"end_character":21},"in_reply_to":"ddd1d91b_f96403c4","updated":"2021-10-27 14:12:39.000000000","message":"please see below","commit_id":"ce782361abb134629a71fb9646ed95646e5fe973"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"5af1b685b66be94d10f50c09a61d048065422ded","unresolved":true,"context_lines":[{"line_number":519,"context_line":"            nw_dst\u003dlocal_ip,"},{"line_number":520,"context_line":"            reg6\u003dvlan,"},{"line_number":521,"context_line":"            dl_type\u003d\"0x{:04x}\".format(ether_types.ETH_TYPE_IP),"},{"line_number":522,"context_line":"            actions\u003d\u0027ct(commit,table\u003d{:d},zone\u003d{:d},nat(dst\u003d{:s}))\u0027.format("},{"line_number":523,"context_line":"                constants.TRANSIENT_TABLE, vlan, dest_ip)"},{"line_number":524,"context_line":"        )"},{"line_number":525,"context_line":"        # avoid NAT to self and let VM with local IP access \"true\" IP owner"}],"source_content_type":"text/x-python","patch_set":2,"id":"af149462_458b2b80","line":522,"range":{"start_line":522,"start_character":21,"end_line":522,"end_character":66},"updated":"2021-10-26 05:37:03.000000000","message":"NXActionCT and NXActionNAT can be used to these actions, ref see [1].\n\n[1] https://ryu.readthedocs.io/en/latest/nicira_ext_ref.html","commit_id":"ce782361abb134629a71fb9646ed95646e5fe973"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"dab4ff90e75a75475a5245b78021785804710c39","unresolved":true,"context_lines":[{"line_number":519,"context_line":"            nw_dst\u003dlocal_ip,"},{"line_number":520,"context_line":"            reg6\u003dvlan,"},{"line_number":521,"context_line":"            dl_type\u003d\"0x{:04x}\".format(ether_types.ETH_TYPE_IP),"},{"line_number":522,"context_line":"            actions\u003d\u0027ct(commit,table\u003d{:d},zone\u003d{:d},nat(dst\u003d{:s}))\u0027.format("},{"line_number":523,"context_line":"                constants.TRANSIENT_TABLE, vlan, dest_ip)"},{"line_number":524,"context_line":"        )"},{"line_number":525,"context_line":"        # avoid NAT to self and let VM with local IP access \"true\" IP owner"}],"source_content_type":"text/x-python","patch_set":2,"id":"25ffdba1_e57917cb","line":522,"range":{"start_line":522,"start_character":21,"end_line":522,"end_character":66},"in_reply_to":"21bab0aa_f1ae958b","updated":"2021-10-28 06:59:38.000000000","message":"Yep, if I understood you correctly","commit_id":"ce782361abb134629a71fb9646ed95646e5fe973"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"ac749c45e9ff0b1d70f7ba2b5ab02a444fafe187","unresolved":true,"context_lines":[{"line_number":519,"context_line":"            nw_dst\u003dlocal_ip,"},{"line_number":520,"context_line":"            reg6\u003dvlan,"},{"line_number":521,"context_line":"            dl_type\u003d\"0x{:04x}\".format(ether_types.ETH_TYPE_IP),"},{"line_number":522,"context_line":"            actions\u003d\u0027ct(commit,table\u003d{:d},zone\u003d{:d},nat(dst\u003d{:s}))\u0027.format("},{"line_number":523,"context_line":"                constants.TRANSIENT_TABLE, vlan, dest_ip)"},{"line_number":524,"context_line":"        )"},{"line_number":525,"context_line":"        # avoid NAT to self and let VM with local IP access \"true\" IP owner"}],"source_content_type":"text/x-python","patch_set":2,"id":"21bab0aa_f1ae958b","line":522,"range":{"start_line":522,"start_character":21,"end_line":522,"end_character":66},"in_reply_to":"37dcd694_4db05b30","updated":"2021-10-28 03:36:37.000000000","message":"So directly set_feild to do dnat, and learn the back flows?","commit_id":"ce782361abb134629a71fb9646ed95646e5fe973"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"eb74940f2037cc1b9d863be80cf64020e83b3dec","unresolved":true,"context_lines":[{"line_number":519,"context_line":"            nw_dst\u003dlocal_ip,"},{"line_number":520,"context_line":"            reg6\u003dvlan,"},{"line_number":521,"context_line":"            dl_type\u003d\"0x{:04x}\".format(ether_types.ETH_TYPE_IP),"},{"line_number":522,"context_line":"            actions\u003d\u0027ct(commit,table\u003d{:d},zone\u003d{:d},nat(dst\u003d{:s}))\u0027.format("},{"line_number":523,"context_line":"                constants.TRANSIENT_TABLE, vlan, dest_ip)"},{"line_number":524,"context_line":"        )"},{"line_number":525,"context_line":"        # avoid NAT to self and let VM with local IP access \"true\" IP owner"}],"source_content_type":"text/x-python","patch_set":2,"id":"37dcd694_4db05b30","line":522,"range":{"start_line":522,"start_character":21,"end_line":522,"end_character":66},"in_reply_to":"af149462_458b2b80","updated":"2021-10-27 14:12:39.000000000","message":"Unfortunately only snat is supported by NXActionNAT, here we need dnat","commit_id":"ce782361abb134629a71fb9646ed95646e5fe973"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"1871c94460a0ec05141c1bf667261f887378d4a5","unresolved":true,"context_lines":[{"line_number":52,"context_line":"    def setup_default_table(self, enable_openflow_dhcp\u003dFalse,"},{"line_number":53,"context_line":"                            enable_dhcpv6\u003dFalse):"},{"line_number":54,"context_line":"        self.setup_canary_table()"},{"line_number":55,"context_line":"        self.install_goto(dest_table_id\u003dconstants.TRANSIENT_TABLE)"},{"line_number":56,"context_line":"        self.install_normal(table_id\u003dconstants.TRANSIENT_TABLE, priority\u003d3)"},{"line_number":57,"context_line":"        self.init_dhcp(enable_openflow_dhcp\u003denable_openflow_dhcp,"},{"line_number":58,"context_line":"                       enable_dhcpv6\u003denable_dhcpv6)"}],"source_content_type":"text/x-python","patch_set":15,"id":"c9bee0b9_a0f23e17","line":55,"updated":"2021-12-08 15:47:05.000000000","message":"shouldn\u0027t this be changed to LOCAL_EGRESS_TABLE now?","commit_id":"b51d6958f3c93e72a720fcef77ff55e0d5d10277"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"c1cce54bca0cd32c9421c85a708bc65955076b4f","unresolved":true,"context_lines":[{"line_number":52,"context_line":"    def setup_default_table(self, enable_openflow_dhcp\u003dFalse,"},{"line_number":53,"context_line":"                            enable_dhcpv6\u003dFalse):"},{"line_number":54,"context_line":"        self.setup_canary_table()"},{"line_number":55,"context_line":"        self.install_goto(dest_table_id\u003dconstants.TRANSIENT_TABLE)"},{"line_number":56,"context_line":"        self.install_normal(table_id\u003dconstants.TRANSIENT_TABLE, priority\u003d3)"},{"line_number":57,"context_line":"        self.init_dhcp(enable_openflow_dhcp\u003denable_openflow_dhcp,"},{"line_number":58,"context_line":"                       enable_dhcpv6\u003denable_dhcpv6)"}],"source_content_type":"text/x-python","patch_set":15,"id":"6bd5662e_1b0611e9","line":55,"in_reply_to":"a2a7d288_e619bca3","updated":"2021-12-10 12:36:02.000000000","message":"right, thx","commit_id":"b51d6958f3c93e72a720fcef77ff55e0d5d10277"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"a7f8ccd16130ceb32d25b06525776fea86529722","unresolved":true,"context_lines":[{"line_number":52,"context_line":"    def setup_default_table(self, enable_openflow_dhcp\u003dFalse,"},{"line_number":53,"context_line":"                            enable_dhcpv6\u003dFalse):"},{"line_number":54,"context_line":"        self.setup_canary_table()"},{"line_number":55,"context_line":"        self.install_goto(dest_table_id\u003dconstants.TRANSIENT_TABLE)"},{"line_number":56,"context_line":"        self.install_normal(table_id\u003dconstants.TRANSIENT_TABLE, priority\u003d3)"},{"line_number":57,"context_line":"        self.init_dhcp(enable_openflow_dhcp\u003denable_openflow_dhcp,"},{"line_number":58,"context_line":"                       enable_dhcpv6\u003denable_dhcpv6)"}],"source_content_type":"text/x-python","patch_set":15,"id":"a2a7d288_e619bca3","line":55,"in_reply_to":"c9bee0b9_a0f23e17","updated":"2021-12-09 07:34:30.000000000","message":"Not really, traffic from e.g. br-tun or br-phys should not go there, as it\u0027s actually not egress. Egress is handled per port at #466 and only if local_ip extension is enabled. Thus it not affects flows if extension is disabled","commit_id":"b51d6958f3c93e72a720fcef77ff55e0d5d10277"}],"neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py":[{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"5af1b685b66be94d10f50c09a61d048065422ded","unresolved":true,"context_lines":[{"line_number":697,"context_line":""},{"line_number":698,"context_line":"    @profiler.trace(\"rpc\")"},{"line_number":699,"context_line":"    def localipassociation_update(self, context, **kwargs):"},{"line_number":700,"context_line":"        LOG.debug(\"Got Local IP Association update: %s\", kwargs)"},{"line_number":701,"context_line":"        assoc \u003d kwargs.get(\u0027local_ip_association\u0027)"},{"line_number":702,"context_line":"        if not assoc:"},{"line_number":703,"context_line":"            LOG.error(\u0027Failed to get local ip association details from: %s\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"b6958210_9c00129c","line":700,"updated":"2021-10-26 05:37:03.000000000","message":"We will have no change of ovs-agent main code if we have an agent extension.","commit_id":"ce782361abb134629a71fb9646ed95646e5fe973"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"eb74940f2037cc1b9d863be80cf64020e83b3dec","unresolved":true,"context_lines":[{"line_number":697,"context_line":""},{"line_number":698,"context_line":"    @profiler.trace(\"rpc\")"},{"line_number":699,"context_line":"    def localipassociation_update(self, context, **kwargs):"},{"line_number":700,"context_line":"        LOG.debug(\"Got Local IP Association update: %s\", kwargs)"},{"line_number":701,"context_line":"        assoc \u003d kwargs.get(\u0027local_ip_association\u0027)"},{"line_number":702,"context_line":"        if not assoc:"},{"line_number":703,"context_line":"            LOG.error(\u0027Failed to get local ip association details from: %s\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"26ae4481_6ecf64e1","line":700,"in_reply_to":"b6958210_9c00129c","updated":"2021-10-27 14:12:39.000000000","message":"will be agent extension, please see https://review.opendev.org/c/openstack/neutron/+/807116","commit_id":"ce782361abb134629a71fb9646ed95646e5fe973"}]}
