)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"7608ac31d725b6e68d60e3b227c9fee6469fb943","unresolved":false,"context_lines":[{"line_number":10,"context_line":"its methods. Doing this as label \"rpc\" for locally called methods is"},{"line_number":11,"context_line":"quite misleading."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"More importantly later we want to enable tracing triggered by a vif"},{"line_number":14,"context_line":"plug. For that profiler.init() must be called sometime in"},{"line_number":15,"context_line":"OVSNeutronAgent.process_ports_events(). If process_ports_events() is"},{"line_number":16,"context_line":"decorated for tracing and we call profiler.init() inside then we\u0027ll have"},{"line_number":17,"context_line":"the end of the method call traced, but not its beginning. The unmatching"},{"line_number":18,"context_line":"end-trace-event makes osprofiler raise."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: I06b8643c75a30b5a5f6f78d75af9937180da645b"},{"line_number":21,"context_line":"Partial-Bug: #1833674"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"7faddb67_142fb2f6","line":18,"range":{"start_line":13,"start_character":0,"end_line":18,"end_character":39},"updated":"2019-07-11 09:43:18.000000000","message":"I have some concerns with this description.\n\nThe VIF plugged event is sent from Neutron to Nova, but I think you are talking about a new port created in the system (e.g.: os-vif creates and plugs a new OVS port). How are you going to profile this function? The method \"process_ports_events\" runs in the main thread, that means if you initialize the profile, the RPC calls running in other threads will have the same profile info.\n\nMaybe I\u0027ll wait for the followup patch to understand it.","commit_id":"ece9b37b5a8f2e6de52ee957ddddc00ba1c27cb3"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"758cd7f607af1d99b54dad6aa28675742591ff8d","unresolved":false,"context_lines":[{"line_number":10,"context_line":"its methods. Doing this as label \"rpc\" for locally called methods is"},{"line_number":11,"context_line":"quite misleading."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"More importantly later we want to enable tracing triggered by a vif"},{"line_number":14,"context_line":"plug. For that profiler.init() must be called sometime in"},{"line_number":15,"context_line":"OVSNeutronAgent.process_ports_events(). If process_ports_events() is"},{"line_number":16,"context_line":"decorated for tracing and we call profiler.init() inside then we\u0027ll have"},{"line_number":17,"context_line":"the end of the method call traced, but not its beginning. The unmatching"},{"line_number":18,"context_line":"end-trace-event makes osprofiler raise."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: I06b8643c75a30b5a5f6f78d75af9937180da645b"},{"line_number":21,"context_line":"Partial-Bug: #1833674"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"7faddb67_6f25efc1","line":18,"range":{"start_line":13,"start_character":0,"end_line":18,"end_character":39},"in_reply_to":"7faddb67_142fb2f6","updated":"2019-07-11 11:36:30.000000000","message":"Good question. I have multiple ideas and I\u0027m not 100% sure which way to go yet.\n\nFirst about terminology: \"os-vif creates and plugs a new OVS port\" - I call this \"vif plug\". \"vif plugged\" is when we can tell nova that vif plug (with all configuration entailed) is completed.\n\nThe easiest is probably not to initialize the profiler in ovs-agent, but collect the trace info incoming in ovsdb external_ids (per vif) and then send it on back to neutron-server (and by that in turn back to nova) in the relevant update_device rpc. That way we could trace the vif plug end to end. We\u0027d have trace points before and after (but not from) ovs-agent. Currently I think this could be a good first step to trace the vif plug.\n\nSince the main thread of ovs-agent processes multiple requests and ovs events in an overlapping way osprofiler is not the best fit to profile it. Later if it turns out we need to have trace points from ovs-agent we must initialize the profiler (or maybe even change osprofiler so we can have multiple profilers concurrently) in ovs-agent. I don\u0027t think other RPC calls would have the same profile info, since the profiler is kept in thread local storage and it is only propagated into other threads if we do that explicitly. Also I don\u0027t want to profile process_ports_events. Instead I\u0027m thinking initializing the profiler in process_ports_events (like in one of the WIP patches on top of this). Then we also would need to clean the profiler when the relevant update_device rpc is sent. But this is so complex I only want to go this way if the first step proves we spend too much time in ovs-agent. If we spend the time elsewhere this is not needed.\n\nLet me know please if you see simpler ways please.","commit_id":"ece9b37b5a8f2e6de52ee957ddddc00ba1c27cb3"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"955e4e9c48893ffef922609680b8989913e800cd","unresolved":false,"context_lines":[{"line_number":10,"context_line":"its methods. Doing this as label \"rpc\" for locally called methods is"},{"line_number":11,"context_line":"quite misleading."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"More importantly later we want to enable tracing triggered by a vif"},{"line_number":14,"context_line":"plug. For that profiler.init() must be called sometime in"},{"line_number":15,"context_line":"OVSNeutronAgent.process_ports_events(). If process_ports_events() is"},{"line_number":16,"context_line":"decorated for tracing and we call profiler.init() inside then we\u0027ll have"},{"line_number":17,"context_line":"the end of the method call traced, but not its beginning. The unmatching"},{"line_number":18,"context_line":"end-trace-event makes osprofiler raise."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: I06b8643c75a30b5a5f6f78d75af9937180da645b"},{"line_number":21,"context_line":"Partial-Bug: #1833674"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"7faddb67_e00b1b21","line":18,"range":{"start_line":13,"start_character":0,"end_line":18,"end_character":39},"in_reply_to":"7faddb67_6f25efc1","updated":"2019-07-12 10:29:27.000000000","message":"Just a suggestion: maybe you can use https://review.opendev.org/#/c/669111/ for, for example, the  OVS main loop processing port functions:\n- process_deleted_ports\n- process_deactivated_bindings\n- process_activated_bindings\n- update_stale_ofport_rules\n- process_network_ports\n- process_ancillary_network_ports\n- update_retries_map_and_remove_devs_not_to_retry","commit_id":"ece9b37b5a8f2e6de52ee957ddddc00ba1c27cb3"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"18955a91c3565625a7db1680c820ca4934b95107","unresolved":false,"context_lines":[{"line_number":10,"context_line":"its methods. Doing this as label \"rpc\" for locally called methods is"},{"line_number":11,"context_line":"quite misleading."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"More importantly later we want to enable tracing triggered by a vif"},{"line_number":14,"context_line":"plug. For that profiler.init() must be called sometime in"},{"line_number":15,"context_line":"OVSNeutronAgent.process_ports_events(). If process_ports_events() is"},{"line_number":16,"context_line":"decorated for tracing and we call profiler.init() inside then we\u0027ll have"},{"line_number":17,"context_line":"the end of the method call traced, but not its beginning. The unmatching"},{"line_number":18,"context_line":"end-trace-event makes osprofiler raise."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: I06b8643c75a30b5a5f6f78d75af9937180da645b"},{"line_number":21,"context_line":"Partial-Bug: #1833674"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"7faddb67_7a2ca501","line":18,"range":{"start_line":13,"start_character":0,"end_line":18,"end_character":39},"in_reply_to":"7faddb67_e00b1b21","updated":"2019-07-15 09:16:28.000000000","message":"I\u0027ll happily add these when 669111 is merged, but if you don\u0027t mind I\u0027d avoid making it a dependency for this change.","commit_id":"ece9b37b5a8f2e6de52ee957ddddc00ba1c27cb3"}],"neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py":[{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"d560a04fe3d29de9d39d79249e13149d8503cafa","unresolved":false,"context_lines":[{"line_number":705,"context_line":"        return self.tun_br_ofports[network_type].get(remote_ip)"},{"line_number":706,"context_line":""},{"line_number":707,"context_line":"    @profiler.trace(\"rpc\")"},{"line_number":708,"context_line":"    def fdb_add(self, context, fdb_entries):"},{"line_number":709,"context_line":"        LOG.debug(\"fdb_add received\")"},{"line_number":710,"context_line":"        for lvm, agent_ports in self.get_agent_ports(fdb_entries):"},{"line_number":711,"context_line":"            agent_ports.pop(self.local_ip, None)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_8f3f1624","line":708,"range":{"start_line":708,"start_character":8,"end_line":708,"end_character":15},"updated":"2019-07-10 19:33:34.000000000","message":"I couldn\u0027t find where this method is called via RPC. Is this a RPC method?","commit_id":"206522bf1f707c16f17370c642c27634a80e317c"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"2e5ae207f96ed727adc93e5ccf55c81dcc3c9afd","unresolved":false,"context_lines":[{"line_number":705,"context_line":"        return self.tun_br_ofports[network_type].get(remote_ip)"},{"line_number":706,"context_line":""},{"line_number":707,"context_line":"    @profiler.trace(\"rpc\")"},{"line_number":708,"context_line":"    def fdb_add(self, context, fdb_entries):"},{"line_number":709,"context_line":"        LOG.debug(\"fdb_add received\")"},{"line_number":710,"context_line":"        for lvm, agent_ports in self.get_agent_ports(fdb_entries):"},{"line_number":711,"context_line":"            agent_ports.pop(self.local_ip, None)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_26508432","line":708,"range":{"start_line":708,"start_character":8,"end_line":708,"end_character":15},"in_reply_to":"7faddb67_8f3f1624","updated":"2019-07-11 08:23:28.000000000","message":"You\u0027re right. The classes with RPC in their names in neutron/plugins/ml2/drivers/l2pop/rpc_manager/l2population_rpc.py tricked me. Looking at it better most of those methods are not remote:\n\nhttps://opendev.org/openstack/neutron/src/branch/master/neutron/plugins/ml2/drivers/l2pop/rpc_manager/l2population_rpc.py#L32-L35\n\nhttps://opendev.org/openstack/neutron/src/branch/master/neutron/plugins/ml2/drivers/l2pop/rpc_manager/l2population_rpc.py#L112","commit_id":"206522bf1f707c16f17370c642c27634a80e317c"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"d560a04fe3d29de9d39d79249e13149d8503cafa","unresolved":false,"context_lines":[{"line_number":719,"context_line":"                                     agent_ports, self._tunnel_port_lookup)"},{"line_number":720,"context_line":""},{"line_number":721,"context_line":"    @profiler.trace(\"rpc\")"},{"line_number":722,"context_line":"    def fdb_remove(self, context, fdb_entries):"},{"line_number":723,"context_line":"        LOG.debug(\"fdb_remove received\")"},{"line_number":724,"context_line":"        for lvm, agent_ports in self.get_agent_ports(fdb_entries):"},{"line_number":725,"context_line":"            agent_ports.pop(self.local_ip, None)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_6f441ab8","line":722,"range":{"start_line":722,"start_character":8,"end_line":722,"end_character":18},"updated":"2019-07-10 19:33:34.000000000","message":"Ditto. This method doesn\u0027t seem to be a RPC method.","commit_id":"206522bf1f707c16f17370c642c27634a80e317c"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"2e5ae207f96ed727adc93e5ccf55c81dcc3c9afd","unresolved":false,"context_lines":[{"line_number":719,"context_line":"                                     agent_ports, self._tunnel_port_lookup)"},{"line_number":720,"context_line":""},{"line_number":721,"context_line":"    @profiler.trace(\"rpc\")"},{"line_number":722,"context_line":"    def fdb_remove(self, context, fdb_entries):"},{"line_number":723,"context_line":"        LOG.debug(\"fdb_remove received\")"},{"line_number":724,"context_line":"        for lvm, agent_ports in self.get_agent_ports(fdb_entries):"},{"line_number":725,"context_line":"            agent_ports.pop(self.local_ip, None)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_2951370f","line":722,"range":{"start_line":722,"start_character":8,"end_line":722,"end_character":18},"in_reply_to":"7faddb67_6f441ab8","updated":"2019-07-11 08:23:28.000000000","message":"Done","commit_id":"206522bf1f707c16f17370c642c27634a80e317c"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"d560a04fe3d29de9d39d79249e13149d8503cafa","unresolved":false,"context_lines":[{"line_number":734,"context_line":"                                        agent_ports, self._tunnel_port_lookup)"},{"line_number":735,"context_line":""},{"line_number":736,"context_line":"    @profiler.trace(\"rpc\")"},{"line_number":737,"context_line":"    def add_fdb_flow(self, br, port_info, remote_ip, lvm, ofport):"},{"line_number":738,"context_line":"        if port_info \u003d\u003d n_const.FLOODING_ENTRY:"},{"line_number":739,"context_line":"            lvm.tun_ofports.add(ofport)"},{"line_number":740,"context_line":"            br.install_flood_to_tun(lvm.vlan, lvm.segmentation_id,"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_0ff1e66b","line":737,"range":{"start_line":737,"start_character":8,"end_line":737,"end_character":20},"updated":"2019-07-10 19:33:34.000000000","message":"Ditto","commit_id":"206522bf1f707c16f17370c642c27634a80e317c"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"2e5ae207f96ed727adc93e5ccf55c81dcc3c9afd","unresolved":false,"context_lines":[{"line_number":734,"context_line":"                                        agent_ports, self._tunnel_port_lookup)"},{"line_number":735,"context_line":""},{"line_number":736,"context_line":"    @profiler.trace(\"rpc\")"},{"line_number":737,"context_line":"    def add_fdb_flow(self, br, port_info, remote_ip, lvm, ofport):"},{"line_number":738,"context_line":"        if port_info \u003d\u003d n_const.FLOODING_ENTRY:"},{"line_number":739,"context_line":"            lvm.tun_ofports.add(ofport)"},{"line_number":740,"context_line":"            br.install_flood_to_tun(lvm.vlan, lvm.segmentation_id,"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_695f2f0e","line":737,"range":{"start_line":737,"start_character":8,"end_line":737,"end_character":20},"in_reply_to":"7faddb67_0ff1e66b","updated":"2019-07-11 08:23:28.000000000","message":"Done","commit_id":"206522bf1f707c16f17370c642c27634a80e317c"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"d560a04fe3d29de9d39d79249e13149d8503cafa","unresolved":false,"context_lines":[{"line_number":749,"context_line":"                                      port_info.mac_address)"},{"line_number":750,"context_line":""},{"line_number":751,"context_line":"    @profiler.trace(\"rpc\")"},{"line_number":752,"context_line":"    def del_fdb_flow(self, br, port_info, remote_ip, lvm, ofport):"},{"line_number":753,"context_line":"        if port_info \u003d\u003d n_const.FLOODING_ENTRY:"},{"line_number":754,"context_line":"            if ofport not in lvm.tun_ofports:"},{"line_number":755,"context_line":"                LOG.debug(\"attempt to remove a non-existent port %s\", ofport)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_efed6a8b","line":752,"range":{"start_line":752,"start_character":8,"end_line":752,"end_character":20},"updated":"2019-07-10 19:33:34.000000000","message":"Ditto.","commit_id":"206522bf1f707c16f17370c642c27634a80e317c"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"2e5ae207f96ed727adc93e5ccf55c81dcc3c9afd","unresolved":false,"context_lines":[{"line_number":749,"context_line":"                                      port_info.mac_address)"},{"line_number":750,"context_line":""},{"line_number":751,"context_line":"    @profiler.trace(\"rpc\")"},{"line_number":752,"context_line":"    def del_fdb_flow(self, br, port_info, remote_ip, lvm, ofport):"},{"line_number":753,"context_line":"        if port_info \u003d\u003d n_const.FLOODING_ENTRY:"},{"line_number":754,"context_line":"            if ofport not in lvm.tun_ofports:"},{"line_number":755,"context_line":"                LOG.debug(\"attempt to remove a non-existent port %s\", ofport)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_c9a50306","line":752,"range":{"start_line":752,"start_character":8,"end_line":752,"end_character":20},"in_reply_to":"7faddb67_efed6a8b","updated":"2019-07-11 08:23:28.000000000","message":"Done","commit_id":"206522bf1f707c16f17370c642c27634a80e317c"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"d560a04fe3d29de9d39d79249e13149d8503cafa","unresolved":false,"context_lines":[{"line_number":774,"context_line":"                                self.local_ip)"},{"line_number":775,"context_line":""},{"line_number":776,"context_line":"    @profiler.trace(\"rpc\")"},{"line_number":777,"context_line":"    def setup_entry_for_arp_reply(self, br, action, local_vid, mac_address,"},{"line_number":778,"context_line":"                                  ip_address):"},{"line_number":779,"context_line":"        \u0027\u0027\u0027Set the ARP respond entry."},{"line_number":780,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_0f96c6f1","line":777,"range":{"start_line":777,"start_character":8,"end_line":777,"end_character":33},"updated":"2019-07-10 19:33:34.000000000","message":"Ditto","commit_id":"206522bf1f707c16f17370c642c27634a80e317c"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"2e5ae207f96ed727adc93e5ccf55c81dcc3c9afd","unresolved":false,"context_lines":[{"line_number":774,"context_line":"                                self.local_ip)"},{"line_number":775,"context_line":""},{"line_number":776,"context_line":"    @profiler.trace(\"rpc\")"},{"line_number":777,"context_line":"    def setup_entry_for_arp_reply(self, br, action, local_vid, mac_address,"},{"line_number":778,"context_line":"                                  ip_address):"},{"line_number":779,"context_line":"        \u0027\u0027\u0027Set the ARP respond entry."},{"line_number":780,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_e9a8ffdb","line":777,"range":{"start_line":777,"start_character":8,"end_line":777,"end_character":33},"in_reply_to":"7faddb67_0f96c6f1","updated":"2019-07-11 08:23:28.000000000","message":"Done","commit_id":"206522bf1f707c16f17370c642c27634a80e317c"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"d560a04fe3d29de9d39d79249e13149d8503cafa","unresolved":false,"context_lines":[{"line_number":1755,"context_line":"                                            ofports)"},{"line_number":1756,"context_line":""},{"line_number":1757,"context_line":"    @profiler.trace(\"rpc\")"},{"line_number":1758,"context_line":"    def setup_tunnel_port(self, br, remote_ip, network_type):"},{"line_number":1759,"context_line":"        port_name \u003d self.get_tunnel_name("},{"line_number":1760,"context_line":"            network_type, self.local_ip, remote_ip)"},{"line_number":1761,"context_line":"        if port_name is None:"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_4f935efb","line":1758,"range":{"start_line":1758,"start_character":8,"end_line":1758,"end_character":25},"updated":"2019-07-10 19:33:34.000000000","message":"Ditto","commit_id":"206522bf1f707c16f17370c642c27634a80e317c"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"2e5ae207f96ed727adc93e5ccf55c81dcc3c9afd","unresolved":false,"context_lines":[{"line_number":1755,"context_line":"                                            ofports)"},{"line_number":1756,"context_line":""},{"line_number":1757,"context_line":"    @profiler.trace(\"rpc\")"},{"line_number":1758,"context_line":"    def setup_tunnel_port(self, br, remote_ip, network_type):"},{"line_number":1759,"context_line":"        port_name \u003d self.get_tunnel_name("},{"line_number":1760,"context_line":"            network_type, self.local_ip, remote_ip)"},{"line_number":1761,"context_line":"        if port_name is None:"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_09855b5a","line":1758,"range":{"start_line":1758,"start_character":8,"end_line":1758,"end_character":25},"in_reply_to":"7faddb67_4f935efb","updated":"2019-07-11 08:23:28.000000000","message":"Done","commit_id":"206522bf1f707c16f17370c642c27634a80e317c"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"d560a04fe3d29de9d39d79249e13149d8503cafa","unresolved":false,"context_lines":[{"line_number":1768,"context_line":"        return ofport"},{"line_number":1769,"context_line":""},{"line_number":1770,"context_line":"    @profiler.trace(\"rpc\")"},{"line_number":1771,"context_line":"    def cleanup_tunnel_port(self, br, tun_ofport, tunnel_type):"},{"line_number":1772,"context_line":"        # Check if this tunnel port is still used"},{"line_number":1773,"context_line":"        for lvm in self.vlan_manager:"},{"line_number":1774,"context_line":"            if tun_ofport in lvm.tun_ofports:"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_2fc2a2ea","line":1771,"range":{"start_line":1771,"start_character":8,"end_line":1771,"end_character":27},"updated":"2019-07-10 19:33:34.000000000","message":"Ditto","commit_id":"206522bf1f707c16f17370c642c27634a80e317c"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"2e5ae207f96ed727adc93e5ccf55c81dcc3c9afd","unresolved":false,"context_lines":[{"line_number":1768,"context_line":"        return ofport"},{"line_number":1769,"context_line":""},{"line_number":1770,"context_line":"    @profiler.trace(\"rpc\")"},{"line_number":1771,"context_line":"    def cleanup_tunnel_port(self, br, tun_ofport, tunnel_type):"},{"line_number":1772,"context_line":"        # Check if this tunnel port is still used"},{"line_number":1773,"context_line":"        for lvm in self.vlan_manager:"},{"line_number":1774,"context_line":"            if tun_ofport in lvm.tun_ofports:"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_e981df4b","line":1771,"range":{"start_line":1771,"start_character":8,"end_line":1771,"end_character":27},"in_reply_to":"7faddb67_2fc2a2ea","updated":"2019-07-11 08:23:28.000000000","message":"Done","commit_id":"206522bf1f707c16f17370c642c27634a80e317c"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"7608ac31d725b6e68d60e3b227c9fee6469fb943","unresolved":false,"context_lines":[{"line_number":2035,"context_line":"            LOG.warning(\"Invalid remote IP: %s\", ip_address)"},{"line_number":2036,"context_line":"            return"},{"line_number":2037,"context_line":""},{"line_number":2038,"context_line":"    @profiler.trace(\"rpc\")"},{"line_number":2039,"context_line":"    def tunnel_sync(self):"},{"line_number":2040,"context_line":"        LOG.debug(\"Configuring tunnel endpoints to other OVS agents\")"},{"line_number":2041,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_f4b8d6c8","line":2038,"updated":"2019-07-11 09:43:18.000000000","message":"Why this function? This is an internal method if I\u0027m not wrong.","commit_id":"ece9b37b5a8f2e6de52ee957ddddc00ba1c27cb3"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"758cd7f607af1d99b54dad6aa28675742591ff8d","unresolved":false,"context_lines":[{"line_number":2035,"context_line":"            LOG.warning(\"Invalid remote IP: %s\", ip_address)"},{"line_number":2036,"context_line":"            return"},{"line_number":2037,"context_line":""},{"line_number":2038,"context_line":"    @profiler.trace(\"rpc\")"},{"line_number":2039,"context_line":"    def tunnel_sync(self):"},{"line_number":2040,"context_line":"        LOG.debug(\"Configuring tunnel endpoints to other OVS agents\")"},{"line_number":2041,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_af00c768","line":2038,"in_reply_to":"7faddb67_f4b8d6c8","updated":"2019-07-11 11:36:30.000000000","message":"Oops, tunnel_sync rpc works in the other direction.","commit_id":"ece9b37b5a8f2e6de52ee957ddddc00ba1c27cb3"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"98e6eb70d4329523b14e6c383d58dd972cc0746e","unresolved":false,"context_lines":[{"line_number":712,"context_line":"    def _tunnel_port_lookup(self, network_type, remote_ip):"},{"line_number":713,"context_line":"        return self.tun_br_ofports[network_type].get(remote_ip)"},{"line_number":714,"context_line":""},{"line_number":715,"context_line":"    def fdb_add(self, context, fdb_entries):"},{"line_number":716,"context_line":"        LOG.debug(\"fdb_add received\")"},{"line_number":717,"context_line":"        for lvm, agent_ports in self.get_agent_ports(fdb_entries):"},{"line_number":718,"context_line":"            agent_ports.pop(self.local_ip, None)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_107313b3","line":715,"updated":"2019-07-15 07:45:05.000000000","message":"shouldn\u0027t be this also decorated?","commit_id":"0299746c72b1a5f3d0c2ca1921f8febb1fb977b3"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"18955a91c3565625a7db1680c820ca4934b95107","unresolved":false,"context_lines":[{"line_number":712,"context_line":"    def _tunnel_port_lookup(self, network_type, remote_ip):"},{"line_number":713,"context_line":"        return self.tun_br_ofports[network_type].get(remote_ip)"},{"line_number":714,"context_line":""},{"line_number":715,"context_line":"    def fdb_add(self, context, fdb_entries):"},{"line_number":716,"context_line":"        LOG.debug(\"fdb_add received\")"},{"line_number":717,"context_line":"        for lvm, agent_ports in self.get_agent_ports(fdb_entries):"},{"line_number":718,"context_line":"            agent_ports.pop(self.local_ip, None)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_7a07c583","line":715,"in_reply_to":"7faddb67_107313b3","updated":"2019-07-15 09:16:28.000000000","message":"Originally I believed it should be, but as Hongbin pointed out it\u0027s not called remotely:\n\nhttps://opendev.org/openstack/neutron/src/branch/master/neutron/plugins/ml2/drivers/l2pop/rpc_manager/l2population_rpc.py#L32-L35","commit_id":"0299746c72b1a5f3d0c2ca1921f8febb1fb977b3"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"bedffeb962b024d2757cc9d721bfbd955ee288b1","unresolved":false,"context_lines":[{"line_number":712,"context_line":"    def _tunnel_port_lookup(self, network_type, remote_ip):"},{"line_number":713,"context_line":"        return self.tun_br_ofports[network_type].get(remote_ip)"},{"line_number":714,"context_line":""},{"line_number":715,"context_line":"    def fdb_add(self, context, fdb_entries):"},{"line_number":716,"context_line":"        LOG.debug(\"fdb_add received\")"},{"line_number":717,"context_line":"        for lvm, agent_ports in self.get_agent_ports(fdb_entries):"},{"line_number":718,"context_line":"            agent_ports.pop(self.local_ip, None)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_3ace2d2d","line":715,"in_reply_to":"7faddb67_7a07c583","updated":"2019-07-15 09:21:17.000000000","message":"ahh, right. It\u0027s called from add_fdb_entries and add_fbd_entries is called remotely :)","commit_id":"0299746c72b1a5f3d0c2ca1921f8febb1fb977b3"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"98e6eb70d4329523b14e6c383d58dd972cc0746e","unresolved":false,"context_lines":[{"line_number":725,"context_line":"                    self.fdb_add_tun(context, self.tun_br, lvm,"},{"line_number":726,"context_line":"                                     agent_ports, self._tunnel_port_lookup)"},{"line_number":727,"context_line":""},{"line_number":728,"context_line":"    def fdb_remove(self, context, fdb_entries):"},{"line_number":729,"context_line":"        LOG.debug(\"fdb_remove received\")"},{"line_number":730,"context_line":"        for lvm, agent_ports in self.get_agent_ports(fdb_entries):"},{"line_number":731,"context_line":"            agent_ports.pop(self.local_ip, None)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_b06b1fb5","line":728,"updated":"2019-07-15 07:45:05.000000000","message":"and this","commit_id":"0299746c72b1a5f3d0c2ca1921f8febb1fb977b3"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"18955a91c3565625a7db1680c820ca4934b95107","unresolved":false,"context_lines":[{"line_number":725,"context_line":"                    self.fdb_add_tun(context, self.tun_br, lvm,"},{"line_number":726,"context_line":"                                     agent_ports, self._tunnel_port_lookup)"},{"line_number":727,"context_line":""},{"line_number":728,"context_line":"    def fdb_remove(self, context, fdb_entries):"},{"line_number":729,"context_line":"        LOG.debug(\"fdb_remove received\")"},{"line_number":730,"context_line":"        for lvm, agent_ports in self.get_agent_ports(fdb_entries):"},{"line_number":731,"context_line":"            agent_ports.pop(self.local_ip, None)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_3afdcd6d","line":728,"in_reply_to":"7faddb67_b06b1fb5","updated":"2019-07-15 09:16:28.000000000","message":"... the same here.","commit_id":"0299746c72b1a5f3d0c2ca1921f8febb1fb977b3"}]}
