)]}'
{"dragonflow/controller/df_local_controller.py":[{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"c80b94a37aed0650924ac9cf0e046ccd0edefbaa","unresolved":false,"context_lines":[{"line_number":377,"context_line":"            lport.emit_bind_remote()"},{"line_number":378,"context_line":""},{"line_number":379,"context_line":"    def _port_updated(self, lport, orig_lport):"},{"line_number":380,"context_line":"        if lport.id in self._local_ports:"},{"line_number":381,"context_line":"            lport.emit_local_updated(orig_lport)"},{"line_number":382,"context_line":"        elif lport.id in self._remote_ports:"},{"line_number":383,"context_line":"            lport.emit_remote_updated(orig_lport)"}],"source_content_type":"text/x-python","patch_set":1,"id":"df3967d1_7c13965d","line":380,"updated":"2017-08-02 14:13:39.000000000","message":"I think that lport.is_local should be checked also here  , as maybe the port not bound in the create event (as you described in: https://review.openstack.org/#/c/489000/)","commit_id":"8eade82dfac93517d94dbe4a154d9fe69cd800fb"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"c26bab60565c2dcfeda78a5491663f82d78eac4b","unresolved":false,"context_lines":[{"line_number":377,"context_line":"            lport.emit_bind_remote()"},{"line_number":378,"context_line":""},{"line_number":379,"context_line":"    def _port_updated(self, lport, orig_lport):"},{"line_number":380,"context_line":"        if lport.id in self._local_ports:"},{"line_number":381,"context_line":"            lport.emit_local_updated(orig_lport)"},{"line_number":382,"context_line":"        elif lport.id in self._remote_ports:"},{"line_number":383,"context_line":"            lport.emit_remote_updated(orig_lport)"}],"source_content_type":"text/x-python","patch_set":1,"id":"df3967d1_c1b5f27f","line":380,"in_reply_to":"df3967d1_7c13965d","updated":"2017-08-02 18:21:36.000000000","message":"This is done here: https://review.openstack.org/#/c/486411","commit_id":"8eade82dfac93517d94dbe4a154d9fe69cd800fb"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"b91de484dccc5dac3268dfad015c3dee069195e0","unresolved":false,"context_lines":[{"line_number":377,"context_line":"            lport.emit_bind_remote()"},{"line_number":378,"context_line":""},{"line_number":379,"context_line":"    def _port_updated(self, lport, orig_lport):"},{"line_number":380,"context_line":"        if lport.id in self._local_ports:"},{"line_number":381,"context_line":"            lport.emit_local_updated(orig_lport)"},{"line_number":382,"context_line":"        elif lport.id in self._remote_ports:"},{"line_number":383,"context_line":"            lport.emit_remote_updated(orig_lport)"}],"source_content_type":"text/x-python","patch_set":1,"id":"df3967d1_a0d3e85f","line":380,"in_reply_to":"df3967d1_b5f8da7a","updated":"2017-08-03 14:20:41.000000000","message":"This patch preserves the existing behavior, because non-bound ports are discarded by update_lport.","commit_id":"8eade82dfac93517d94dbe4a154d9fe69cd800fb"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"68164ce428c6fcea80a2b5e3e617aed0163cdc00","unresolved":false,"context_lines":[{"line_number":377,"context_line":"            lport.emit_bind_remote()"},{"line_number":378,"context_line":""},{"line_number":379,"context_line":"    def _port_updated(self, lport, orig_lport):"},{"line_number":380,"context_line":"        if lport.id in self._local_ports:"},{"line_number":381,"context_line":"            lport.emit_local_updated(orig_lport)"},{"line_number":382,"context_line":"        elif lport.id in self._remote_ports:"},{"line_number":383,"context_line":"            lport.emit_remote_updated(orig_lport)"}],"source_content_type":"text/x-python","patch_set":1,"id":"df3967d1_b5f8da7a","line":380,"in_reply_to":"df3967d1_c1b5f27f","updated":"2017-08-03 06:40:58.000000000","message":"ah OK - (isn\u0027t it\u0027s better to insert this part of code in the this commit ? )","commit_id":"8eade82dfac93517d94dbe4a154d9fe69cd800fb"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"2dd7a5847e9fd6a581e30766fcbf84223e3f43fa","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        self.sync_rate_limiter \u003d df_utils.RateLimiter("},{"line_number":87,"context_line":"                max_rate\u003d1, time_unit\u003ddb_common.DB_SYNC_MINIMUM_INTERVAL)"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        l2.LogicalPort.register_created(self._port_created)"},{"line_number":90,"context_line":"        l2.LogicalPort.register_updated(self._port_updated)"},{"line_number":91,"context_line":"        l2.LogicalPort.register_deleted(self._port_deleted)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"        self._local_ports \u003d set()"},{"line_number":94,"context_line":"        l2.LogicalPort.register_bind_local(self._port_bound_local)"},{"line_number":95,"context_line":"        l2.LogicalPort.register_unbind_local(self._port_unbound_local)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        self._remote_ports \u003d set()"},{"line_number":98,"context_line":"        l2.LogicalPort.register_bind_remote(self._port_bound_remote)"},{"line_number":99,"context_line":"        l2.LogicalPort.register_unbind_remote(self._port_unbound_remote)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    def run(self):"},{"line_number":102,"context_line":"        self.vswitch_api.initialize(self.nb_api)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f436f4f_3ad9737e","line":99,"range":{"start_line":89,"start_character":1,"end_line":99,"end_character":72},"updated":"2017-08-13 11:36:15.000000000","message":"I understand you plan to move this to an app. I\u0027d ask:\n1. Either move it to an app to begin with.\n2. Until then, keep this code in update_lport. I feel we have too many callback mechanisms running around, and it\u0027s getting difficult to understand what goes where and when.","commit_id":"6a7085fe642d512045777690b35c91cffffbe596"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"a4be5fa639024bd810feb0aeb7ff049f95964627","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        self.sync_rate_limiter \u003d df_utils.RateLimiter("},{"line_number":87,"context_line":"                max_rate\u003d1, time_unit\u003ddb_common.DB_SYNC_MINIMUM_INTERVAL)"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        l2.LogicalPort.register_created(self._port_created)"},{"line_number":90,"context_line":"        l2.LogicalPort.register_updated(self._port_updated)"},{"line_number":91,"context_line":"        l2.LogicalPort.register_deleted(self._port_deleted)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"        self._local_ports \u003d set()"},{"line_number":94,"context_line":"        l2.LogicalPort.register_bind_local(self._port_bound_local)"},{"line_number":95,"context_line":"        l2.LogicalPort.register_unbind_local(self._port_unbound_local)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        self._remote_ports \u003d set()"},{"line_number":98,"context_line":"        l2.LogicalPort.register_bind_remote(self._port_bound_remote)"},{"line_number":99,"context_line":"        l2.LogicalPort.register_unbind_remote(self._port_unbound_remote)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    def run(self):"},{"line_number":102,"context_line":"        self.vswitch_api.initialize(self.nb_api)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f436f4f_7aba5b0a","line":99,"range":{"start_line":89,"start_character":1,"end_line":99,"end_character":72},"in_reply_to":"9f436f4f_3ad9737e","updated":"2017-08-13 11:41:13.000000000","message":"1. I am not sure it should be an app, it is not quite optional.\n2. I plan on removing update_lport, plus, update_lport should not be called by apps (that can publish bind/unbind events).","commit_id":"6a7085fe642d512045777690b35c91cffffbe596"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"2dd7a5847e9fd6a581e30766fcbf84223e3f43fa","unresolved":false,"context_lines":[{"line_number":375,"context_line":"            lport.emit_bind_remote()"},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"    def _port_updated(self, lport, orig_lport):"},{"line_number":378,"context_line":"        if lport.id in self._local_ports:"},{"line_number":379,"context_line":"            lport.emit_local_updated(orig_lport)"},{"line_number":380,"context_line":"        elif lport.id in self._remote_ports:"},{"line_number":381,"context_line":"            lport.emit_remote_updated(orig_lport)"},{"line_number":382,"context_line":""},{"line_number":383,"context_line":"    def _port_deleted(self, lport):"},{"line_number":384,"context_line":"        if lport.id in self._local_ports:"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f436f4f_1aca2fa0","line":381,"range":{"start_line":378,"start_character":1,"end_line":381,"end_character":49},"updated":"2017-08-13 11:36:15.000000000","message":"What about a rebind? e.g. lport.id is in _local_ports, but now lport.is_local is false? (or lport.is_remote is true)","commit_id":"6a7085fe642d512045777690b35c91cffffbe596"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"a4be5fa639024bd810feb0aeb7ff049f95964627","unresolved":false,"context_lines":[{"line_number":375,"context_line":"            lport.emit_bind_remote()"},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"    def _port_updated(self, lport, orig_lport):"},{"line_number":378,"context_line":"        if lport.id in self._local_ports:"},{"line_number":379,"context_line":"            lport.emit_local_updated(orig_lport)"},{"line_number":380,"context_line":"        elif lport.id in self._remote_ports:"},{"line_number":381,"context_line":"            lport.emit_remote_updated(orig_lport)"},{"line_number":382,"context_line":""},{"line_number":383,"context_line":"    def _port_deleted(self, lport):"},{"line_number":384,"context_line":"        if lport.id in self._local_ports:"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f436f4f_9abdff03","line":381,"range":{"start_line":378,"start_character":1,"end_line":381,"end_character":49},"in_reply_to":"9f436f4f_1aca2fa0","updated":"2017-08-13 11:41:13.000000000","message":"See subsequent patch","commit_id":"6a7085fe642d512045777690b35c91cffffbe596"}]}
