)]}'
{"neutron/plugins/ml2/drivers/l2pop/mech_driver.py":[{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"3a5467c8b688bb56fa0df5e08eaa0415f8fe469e","unresolved":false,"context_lines":[{"line_number":180,"context_line":"        fdb_network_ports \u003d ("},{"line_number":181,"context_line":"            l2pop_db.get_nondistributed_active_network_ports(session,"},{"line_number":182,"context_line":"                                                             network_id))"},{"line_number":183,"context_line":"        timestamp \u003d timeutils.utcnow() "},{"line_number":184,"context_line":"        ports \u003d agent_fdb_entries[network_id][\u0027ports\u0027]"},{"line_number":185,"context_line":"        ports.update(self._get_tunnels("},{"line_number":186,"context_line":"            fdb_network_ports + tunnel_network_ports,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad45d7e_e5a88c22","line":183,"range":{"start_line":183,"start_character":38,"end_line":183,"end_character":39},"updated":"2016-08-11 03:25:26.000000000","message":"nit: extra  space\n\nShould here use the timestamp which comes from portcontext?","commit_id":"8b052a045a1c67551b378fbc941275b514dcf51b"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"7641e85f6f4a9e59051ad04f3258729b5dc565c6","unresolved":false,"context_lines":[{"line_number":180,"context_line":"        fdb_network_ports \u003d ("},{"line_number":181,"context_line":"            l2pop_db.get_nondistributed_active_network_ports(session,"},{"line_number":182,"context_line":"                                                             network_id))"},{"line_number":183,"context_line":"        timestamp \u003d timeutils.utcnow() "},{"line_number":184,"context_line":"        ports \u003d agent_fdb_entries[network_id][\u0027ports\u0027]"},{"line_number":185,"context_line":"        ports.update(self._get_tunnels("},{"line_number":186,"context_line":"            fdb_network_ports + tunnel_network_ports,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad45d7e_397f6967","line":183,"range":{"start_line":183,"start_character":38,"end_line":183,"end_character":39},"in_reply_to":"9ad45d7e_e5a88c22","updated":"2016-08-11 06:15:22.000000000","message":"I will check","commit_id":"8b052a045a1c67551b378fbc941275b514dcf51b"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"3a5467c8b688bb56fa0df5e08eaa0415f8fe469e","unresolved":false,"context_lines":[{"line_number":210,"context_line":""},{"line_number":211,"context_line":"        return agents"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"    def _update_port_up(self, context):"},{"line_number":214,"context_line":"        port \u003d context.current"},{"line_number":215,"context_line":"        agent_host \u003d context.host"},{"line_number":216,"context_line":"        session \u003d db_api.get_session()"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad45d7e_a5605402","line":213,"range":{"start_line":213,"start_character":0,"end_line":213,"end_character":39},"updated":"2016-08-11 03:25:26.000000000","message":"I think you should add timestamp as param here.","commit_id":"8b052a045a1c67551b378fbc941275b514dcf51b"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"7641e85f6f4a9e59051ad04f3258729b5dc565c6","unresolved":false,"context_lines":[{"line_number":210,"context_line":""},{"line_number":211,"context_line":"        return agents"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"    def _update_port_up(self, context):"},{"line_number":214,"context_line":"        port \u003d context.current"},{"line_number":215,"context_line":"        agent_host \u003d context.host"},{"line_number":216,"context_line":"        session \u003d db_api.get_session()"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad45d7e_b98b5967","line":213,"range":{"start_line":213,"start_character":0,"end_line":213,"end_character":39},"in_reply_to":"9ad45d7e_a5605402","updated":"2016-08-11 06:15:22.000000000","message":"sure","commit_id":"8b052a045a1c67551b378fbc941275b514dcf51b"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"3a5467c8b688bb56fa0df5e08eaa0415f8fe469e","unresolved":false,"context_lines":[{"line_number":237,"context_line":"                                       cfg.CONF.l2pop.agent_boot_time):"},{"line_number":238,"context_line":"            # First port activated on current agent in this network,"},{"line_number":239,"context_line":"            # we have to provide it with the whole list of fdb entries"},{"line_number":240,"context_line":"            agent_fdb_entries \u003d self._create_agent_fdb(session,"},{"line_number":241,"context_line":"                                                       agent,"},{"line_number":242,"context_line":"                                                       segment,"},{"line_number":243,"context_line":"                                                       network_id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad45d7e_c553c837","line":240,"updated":"2016-08-11 03:25:26.000000000","message":"And use timestamp here.","commit_id":"8b052a045a1c67551b378fbc941275b514dcf51b"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"7641e85f6f4a9e59051ad04f3258729b5dc565c6","unresolved":false,"context_lines":[{"line_number":237,"context_line":"                                       cfg.CONF.l2pop.agent_boot_time):"},{"line_number":238,"context_line":"            # First port activated on current agent in this network,"},{"line_number":239,"context_line":"            # we have to provide it with the whole list of fdb entries"},{"line_number":240,"context_line":"            agent_fdb_entries \u003d self._create_agent_fdb(session,"},{"line_number":241,"context_line":"                                                       agent,"},{"line_number":242,"context_line":"                                                       segment,"},{"line_number":243,"context_line":"                                                       network_id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad45d7e_19eb8514","line":240,"in_reply_to":"9ad45d7e_c553c837","updated":"2016-08-11 06:15:22.000000000","message":"sure","commit_id":"8b052a045a1c67551b378fbc941275b514dcf51b"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"3a5467c8b688bb56fa0df5e08eaa0415f8fe469e","unresolved":false,"context_lines":[{"line_number":252,"context_line":"        # Notify other agents to add fdb rule for current port"},{"line_number":253,"context_line":"        if port[\u0027device_owner\u0027] !\u003d const.DEVICE_OWNER_DVR_INTERFACE:"},{"line_number":254,"context_line":"            other_fdb_ports[agent_ip] +\u003d self._get_port_fdb_entries("},{"line_number":255,"context_line":"                port, timestamp)"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"        self.L2populationAgentNotify.add_fdb_entries(self.rpc_ctx,"},{"line_number":258,"context_line":"                                                     other_fdb_entries)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad45d7e_e54c0cca","line":255,"range":{"start_line":255,"start_character":22,"end_line":255,"end_character":31},"updated":"2016-08-11 03:25:26.000000000","message":"And use timestamp here.","commit_id":"8b052a045a1c67551b378fbc941275b514dcf51b"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"7641e85f6f4a9e59051ad04f3258729b5dc565c6","unresolved":false,"context_lines":[{"line_number":252,"context_line":"        # Notify other agents to add fdb rule for current port"},{"line_number":253,"context_line":"        if port[\u0027device_owner\u0027] !\u003d const.DEVICE_OWNER_DVR_INTERFACE:"},{"line_number":254,"context_line":"            other_fdb_ports[agent_ip] +\u003d self._get_port_fdb_entries("},{"line_number":255,"context_line":"                port, timestamp)"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"        self.L2populationAgentNotify.add_fdb_entries(self.rpc_ctx,"},{"line_number":258,"context_line":"                                                     other_fdb_entries)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad45d7e_f9ef911b","line":255,"range":{"start_line":255,"start_character":22,"end_line":255,"end_character":31},"in_reply_to":"9ad45d7e_e54c0cca","updated":"2016-08-11 06:15:22.000000000","message":"sure","commit_id":"8b052a045a1c67551b378fbc941275b514dcf51b"}],"neutron/plugins/ml2/drivers/l2pop/rpc_manager/l2population_rpc.py":[{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"3a5467c8b688bb56fa0df5e08eaa0415f8fe469e","unresolved":false,"context_lines":[{"line_number":241,"context_line":"            yield (lvm, agent_ports)"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"    @log_helpers.log_method_call"},{"line_number":244,"context_line":"    def fdb_add_tun(self, context, br, lvm, agent_ports, lookup_port):"},{"line_number":245,"context_line":"        for remote_ip, ports in agent_ports.items():"},{"line_number":246,"context_line":"            # Ensure we have a tunnel port with this remote agent"},{"line_number":247,"context_line":"            ofport \u003d lookup_port(lvm.network_type, remote_ip)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad45d7e_083e958b","line":244,"range":{"start_line":244,"start_character":0,"end_line":244,"end_character":70},"updated":"2016-08-11 03:25:26.000000000","message":"The self.fdb_ports will become larger when the service running, can you consider clean self.fdb_ports when the port is removed from agent?","commit_id":"8b052a045a1c67551b378fbc941275b514dcf51b"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"7641e85f6f4a9e59051ad04f3258729b5dc565c6","unresolved":false,"context_lines":[{"line_number":241,"context_line":"            yield (lvm, agent_ports)"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"    @log_helpers.log_method_call"},{"line_number":244,"context_line":"    def fdb_add_tun(self, context, br, lvm, agent_ports, lookup_port):"},{"line_number":245,"context_line":"        for remote_ip, ports in agent_ports.items():"},{"line_number":246,"context_line":"            # Ensure we have a tunnel port with this remote agent"},{"line_number":247,"context_line":"            ofport \u003d lookup_port(lvm.network_type, remote_ip)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad45d7e_39f649f9","line":244,"range":{"start_line":244,"start_character":0,"end_line":244,"end_character":70},"in_reply_to":"9ad45d7e_083e958b","updated":"2016-08-11 06:15:22.000000000","message":"yes. fdb_remove_tun should take care of it.","commit_id":"8b052a045a1c67551b378fbc941275b514dcf51b"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"3a5467c8b688bb56fa0df5e08eaa0415f8fe469e","unresolved":false,"context_lines":[{"line_number":251,"context_line":"                if ofport \u003d\u003d 0:"},{"line_number":252,"context_line":"                    continue"},{"line_number":253,"context_line":"            for port in ports:"},{"line_number":254,"context_line":"                if port_id in port._fields:"},{"line_number":255,"context_line":"                    with lockutils.lock(port_id, lock_file_prefix\u003d\u0027neutron-add-fdb\u0027, external\u003dTrue):"},{"line_number":256,"context_line":"                        fdb_port \u003d self.fdb_ports.get(port_id)"},{"line_number":257,"context_line":"                        if fdb_port and fdb_port.timestamp \u003e port.timestamp:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad45d7e_c85d9d16","line":254,"range":{"start_line":254,"start_character":16,"end_line":254,"end_character":43},"updated":"2016-08-11 03:25:26.000000000","message":"You mean (if \u0027port_id\u0027 in port._fields:)  here, right?","commit_id":"8b052a045a1c67551b378fbc941275b514dcf51b"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"7641e85f6f4a9e59051ad04f3258729b5dc565c6","unresolved":false,"context_lines":[{"line_number":251,"context_line":"                if ofport \u003d\u003d 0:"},{"line_number":252,"context_line":"                    continue"},{"line_number":253,"context_line":"            for port in ports:"},{"line_number":254,"context_line":"                if port_id in port._fields:"},{"line_number":255,"context_line":"                    with lockutils.lock(port_id, lock_file_prefix\u003d\u0027neutron-add-fdb\u0027, external\u003dTrue):"},{"line_number":256,"context_line":"                        fdb_port \u003d self.fdb_ports.get(port_id)"},{"line_number":257,"context_line":"                        if fdb_port and fdb_port.timestamp \u003e port.timestamp:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad45d7e_d9e56d38","line":254,"range":{"start_line":254,"start_character":16,"end_line":254,"end_character":43},"in_reply_to":"9ad45d7e_c85d9d16","updated":"2016-08-11 06:15:22.000000000","message":"yes","commit_id":"8b052a045a1c67551b378fbc941275b514dcf51b"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"3a5467c8b688bb56fa0df5e08eaa0415f8fe469e","unresolved":false,"context_lines":[{"line_number":253,"context_line":"            for port in ports:"},{"line_number":254,"context_line":"                if port_id in port._fields:"},{"line_number":255,"context_line":"                    with lockutils.lock(port_id, lock_file_prefix\u003d\u0027neutron-add-fdb\u0027, external\u003dTrue):"},{"line_number":256,"context_line":"                        fdb_port \u003d self.fdb_ports.get(port_id)"},{"line_number":257,"context_line":"                        if fdb_port and fdb_port.timestamp \u003e port.timestamp:"},{"line_number":258,"context_line":"                            return"},{"line_number":259,"context_line":"                        self.fdb_ports[port_id] \u003d port"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad45d7e_48124d0a","line":256,"range":{"start_line":256,"start_character":35,"end_line":256,"end_character":49},"updated":"2016-08-11 03:25:26.000000000","message":"This is a bit tight-coupling with sub-class. What if the l2-agent doesn\u0027t define the fdb_ports?","commit_id":"8b052a045a1c67551b378fbc941275b514dcf51b"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"7641e85f6f4a9e59051ad04f3258729b5dc565c6","unresolved":false,"context_lines":[{"line_number":253,"context_line":"            for port in ports:"},{"line_number":254,"context_line":"                if port_id in port._fields:"},{"line_number":255,"context_line":"                    with lockutils.lock(port_id, lock_file_prefix\u003d\u0027neutron-add-fdb\u0027, external\u003dTrue):"},{"line_number":256,"context_line":"                        fdb_port \u003d self.fdb_ports.get(port_id)"},{"line_number":257,"context_line":"                        if fdb_port and fdb_port.timestamp \u003e port.timestamp:"},{"line_number":258,"context_line":"                            return"},{"line_number":259,"context_line":"                        self.fdb_ports[port_id] \u003d port"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad45d7e_39ae4998","line":256,"range":{"start_line":256,"start_character":35,"end_line":256,"end_character":49},"in_reply_to":"9ad45d7e_48124d0a","updated":"2016-08-11 06:15:22.000000000","message":"We will define self.fdb_ports before setting up rpc i.e before setup_rpc()\nhttps://github.com/openstack/neutron/blob/master/neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py#L191","commit_id":"8b052a045a1c67551b378fbc941275b514dcf51b"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"3a5467c8b688bb56fa0df5e08eaa0415f8fe469e","unresolved":false,"context_lines":[{"line_number":256,"context_line":"                        fdb_port \u003d self.fdb_ports.get(port_id)"},{"line_number":257,"context_line":"                        if fdb_port and fdb_port.timestamp \u003e port.timestamp:"},{"line_number":258,"context_line":"                            return"},{"line_number":259,"context_line":"                        self.fdb_ports[port_id] \u003d port"},{"line_number":260,"context_line":"                        self.add_fdb_flow(br, port, remote_ip, lvm, ofport)"},{"line_number":261,"context_line":"                else:"},{"line_number":262,"context_line":"                    self.add_fdb_flow(br, port, remote_ip, lvm, ofport)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad45d7e_88dc4574","line":259,"range":{"start_line":259,"start_character":24,"end_line":259,"end_character":54},"updated":"2016-08-11 03:25:26.000000000","message":"I think only record timestamp should sufficient.","commit_id":"8b052a045a1c67551b378fbc941275b514dcf51b"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"7641e85f6f4a9e59051ad04f3258729b5dc565c6","unresolved":false,"context_lines":[{"line_number":256,"context_line":"                        fdb_port \u003d self.fdb_ports.get(port_id)"},{"line_number":257,"context_line":"                        if fdb_port and fdb_port.timestamp \u003e port.timestamp:"},{"line_number":258,"context_line":"                            return"},{"line_number":259,"context_line":"                        self.fdb_ports[port_id] \u003d port"},{"line_number":260,"context_line":"                        self.add_fdb_flow(br, port, remote_ip, lvm, ofport)"},{"line_number":261,"context_line":"                else:"},{"line_number":262,"context_line":"                    self.add_fdb_flow(br, port, remote_ip, lvm, ofport)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad45d7e_2ec9e126","line":259,"range":{"start_line":259,"start_character":24,"end_line":259,"end_character":54},"in_reply_to":"9ad45d7e_88dc4574","updated":"2016-08-11 06:15:22.000000000","message":"u mean self.fdb_ports[port_id] \u003d port.timestamp ? This is a good idea","commit_id":"8b052a045a1c67551b378fbc941275b514dcf51b"}],"neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py":[{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"3a5467c8b688bb56fa0df5e08eaa0415f8fe469e","unresolved":false,"context_lines":[{"line_number":235,"context_line":"        if self.enable_tunneling:"},{"line_number":236,"context_line":"            self.setup_tunnel_br_flows()"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"        self.dvr_agent.setup_dvr_flows()"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"        # Collect additional bridges to monitor"},{"line_number":241,"context_line":"        self.ancillary_brs \u003d self.setup_ancillary_bridges("}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad45d7e_08897575","line":238,"updated":"2016-08-11 03:25:26.000000000","message":"Why removing this?","commit_id":"8b052a045a1c67551b378fbc941275b514dcf51b"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"7641e85f6f4a9e59051ad04f3258729b5dc565c6","unresolved":false,"context_lines":[{"line_number":235,"context_line":"        if self.enable_tunneling:"},{"line_number":236,"context_line":"            self.setup_tunnel_br_flows()"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"        self.dvr_agent.setup_dvr_flows()"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"        # Collect additional bridges to monitor"},{"line_number":241,"context_line":"        self.ancillary_brs \u003d self.setup_ancillary_bridges("}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad45d7e_59e5fdd9","line":238,"in_reply_to":"9ad45d7e_08897575","updated":"2016-08-11 06:15:22.000000000","message":"mistake","commit_id":"8b052a045a1c67551b378fbc941275b514dcf51b"}]}
