)]}'
{"dragonflow/controller/apps/tunneling.py":[{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"6af2ab8077ec6e7c344ca58cdee815c95e63e461","unresolved":false,"context_lines":[{"line_number":163,"context_line":"                                     self.ofproto.OFPFC_MODIFY)"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    def _add_egress_dispatch_flow(self, lport, segmentation_id):"},{"line_number":166,"context_line":"        binding \u003d port_locator.get_port_binding(lport)"},{"line_number":167,"context_line":"        remote_ip \u003d binding.ip"},{"line_number":168,"context_line":"        ofport \u003d self._get_lport_tunnel_ofport(lport)"},{"line_number":169,"context_line":"        LOG.debug(\"set egress dispatch flow %(seg)s peer %(remote_ip)s\","}],"source_content_type":"text/x-python","patch_set":2,"id":"9f436f4f_771cb6c0","line":166,"updated":"2017-08-13 08:18:58.000000000","message":"Isn\u0027t set port binding should be added before using the  get ?","commit_id":"3b41391e1a4a9feecefaddea9cae4677ebd99f6d"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"8598c0861715b459e33a48f3367f4aabeee780f1","unresolved":false,"context_lines":[{"line_number":163,"context_line":"                                     self.ofproto.OFPFC_MODIFY)"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    def _add_egress_dispatch_flow(self, lport, segmentation_id):"},{"line_number":166,"context_line":"        binding \u003d port_locator.get_port_binding(lport)"},{"line_number":167,"context_line":"        remote_ip \u003d binding.ip"},{"line_number":168,"context_line":"        ofport \u003d self._get_lport_tunnel_ofport(lport)"},{"line_number":169,"context_line":"        LOG.debug(\"set egress dispatch flow %(seg)s peer %(remote_ip)s\","}],"source_content_type":"text/x-python","patch_set":2,"id":"9f436f4f_974ddac5","line":166,"in_reply_to":"9f436f4f_771cb6c0","updated":"2017-08-13 08:35:00.000000000","message":"no, it return either the one passed to set_port_binding or the one present on the port.","commit_id":"3b41391e1a4a9feecefaddea9cae4677ebd99f6d"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"c609e4dd0b363d6cca532b5df7fb908f6815de2e","unresolved":false,"context_lines":[{"line_number":163,"context_line":"                                     self.ofproto.OFPFC_MODIFY)"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    def _add_egress_dispatch_flow(self, lport, segmentation_id):"},{"line_number":166,"context_line":"        binding \u003d port_locator.get_port_binding(lport)"},{"line_number":167,"context_line":"        remote_ip \u003d binding.ip"},{"line_number":168,"context_line":"        ofport \u003d self._get_lport_tunnel_ofport(lport)"},{"line_number":169,"context_line":"        LOG.debug(\"set egress dispatch flow %(seg)s peer %(remote_ip)s\","}],"source_content_type":"text/x-python","patch_set":2,"id":"9f436f4f_da3dc7c4","line":166,"in_reply_to":"9f436f4f_974ddac5","updated":"2017-08-13 10:27:27.000000000","message":"Still didn\u0027t got it  - if the binding located on the lport itself - why you need  the port locator ?","commit_id":"3b41391e1a4a9feecefaddea9cae4677ebd99f6d"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"5b2f2d5fbf553e60a7504eac635a1e0b67a67d0c","unresolved":false,"context_lines":[{"line_number":163,"context_line":"                                     self.ofproto.OFPFC_MODIFY)"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    def _add_egress_dispatch_flow(self, lport, segmentation_id):"},{"line_number":166,"context_line":"        binding \u003d port_locator.get_port_binding(lport)"},{"line_number":167,"context_line":"        remote_ip \u003d binding.ip"},{"line_number":168,"context_line":"        ofport \u003d self._get_lport_tunnel_ofport(lport)"},{"line_number":169,"context_line":"        LOG.debug(\"set egress dispatch flow %(seg)s peer %(remote_ip)s\","}],"source_content_type":"text/x-python","patch_set":2,"id":"9f436f4f_3a3e138c","line":166,"in_reply_to":"9f436f4f_da3dc7c4","updated":"2017-08-13 11:42:19.000000000","message":"Because some times, an app would like to override the binding on the object (migrating ports, trunk subports, floating IP ports)","commit_id":"3b41391e1a4a9feecefaddea9cae4677ebd99f6d"}],"dragonflow/controller/port_locator.py":[{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"d3cd90bedf727f713d1e8af85c406229d64f92c8","unresolved":false,"context_lines":[{"line_number":10,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"#    under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"_locations \u003d {}"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"def reset():"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f436f4f_ba49e331","line":13,"updated":"2017-08-13 12:36:38.000000000","message":"Missing docstring in this document","commit_id":"3b41391e1a4a9feecefaddea9cae4677ebd99f6d"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"5d4fe2dbe1ad1179d2e3dab1b00ac047ea7425b5","unresolved":false,"context_lines":[{"line_number":10,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"#    under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"_locations \u003d {}"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"def reset():"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f436f4f_5ad5571b","line":13,"in_reply_to":"9f436f4f_ba49e331","updated":"2017-08-13 12:42:02.000000000","message":"Will add docstrings","commit_id":"3b41391e1a4a9feecefaddea9cae4677ebd99f6d"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"d3cd90bedf727f713d1e8af85c406229d64f92c8","unresolved":false,"context_lines":[{"line_number":17,"context_line":"    _locations.clear()"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"def set_port_binding(lport, binding):"},{"line_number":21,"context_line":"    _locations[lport.id] \u003d binding"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9f436f4f_9a529fdd","line":20,"range":{"start_line":20,"start_character":28,"end_line":20,"end_character":35},"updated":"2017-08-13 12:36:38.000000000","message":"Can this be None? If so, why?","commit_id":"3b41391e1a4a9feecefaddea9cae4677ebd99f6d"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"e2e8edfa77179ad3345d2e4dead4d56dde345863","unresolved":false,"context_lines":[{"line_number":17,"context_line":"    _locations.clear()"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"def set_port_binding(lport, binding):"},{"line_number":21,"context_line":"    _locations[lport.id] \u003d binding"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9f436f4f_7ac49b5f","line":20,"range":{"start_line":20,"start_character":28,"end_line":20,"end_character":35},"in_reply_to":"9f436f4f_3ada934b","updated":"2017-08-13 15:04:40.000000000","message":"It\u0027s relevant for what comes later. And you don\u0027t verify it isn\u0027t None, so I wanted to make sure.","commit_id":"3b41391e1a4a9feecefaddea9cae4677ebd99f6d"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"5d4fe2dbe1ad1179d2e3dab1b00ac047ea7425b5","unresolved":false,"context_lines":[{"line_number":17,"context_line":"    _locations.clear()"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"def set_port_binding(lport, binding):"},{"line_number":21,"context_line":"    _locations[lport.id] \u003d binding"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9f436f4f_3ada934b","line":20,"range":{"start_line":20,"start_character":28,"end_line":20,"end_character":35},"in_reply_to":"9f436f4f_9a529fdd","updated":"2017-08-13 12:42:02.000000000","message":"I\u0027m not sure I understand. I this can be None though I don\u0027t see a use-case for this at the moment.","commit_id":"3b41391e1a4a9feecefaddea9cae4677ebd99f6d"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"d3cd90bedf727f713d1e8af85c406229d64f92c8","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"def clear_port_binding(lport):"},{"line_number":25,"context_line":"    _locations.pop(lport.id)"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"def get_port_binding(lport):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f436f4f_5a62f7af","line":25,"updated":"2017-08-13 12:36:38.000000000","message":"What should happen if lport.id isn\u0027t in _locations?\n1. If an exception, why not use del?\n2. If not an exception, why not use pop(id, None)?","commit_id":"3b41391e1a4a9feecefaddea9cae4677ebd99f6d"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"5d4fe2dbe1ad1179d2e3dab1b00ac047ea7425b5","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"def clear_port_binding(lport):"},{"line_number":25,"context_line":"    _locations.pop(lport.id)"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"def get_port_binding(lport):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f436f4f_fadf6b37","line":25,"in_reply_to":"9f436f4f_5a62f7af","updated":"2017-08-13 12:42:02.000000000","message":"It is equivalent to 1, I don\u0027t mind using del. I prefer to have an here.","commit_id":"3b41391e1a4a9feecefaddea9cae4677ebd99f6d"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"e2e8edfa77179ad3345d2e4dead4d56dde345863","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"def clear_port_binding(lport):"},{"line_number":25,"context_line":"    _locations.pop(lport.id)"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"def get_port_binding(lport):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f436f4f_7aa6db55","line":25,"in_reply_to":"9f436f4f_fadf6b37","updated":"2017-08-13 15:04:40.000000000","message":"I think del makes more sense if you\u0027re not using the return value.","commit_id":"3b41391e1a4a9feecefaddea9cae4677ebd99f6d"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"d3cd90bedf727f713d1e8af85c406229d64f92c8","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"def get_port_binding(lport):"},{"line_number":29,"context_line":"    return _locations.get(lport.id) or lport.binding"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"def is_port_local(lport):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f436f4f_3a6733c0","line":29,"range":{"start_line":29,"start_character":11,"end_line":29,"end_character":35},"updated":"2017-08-13 12:36:38.000000000","message":"get(id, None) ? In case the lport hasn\u0027t registered its location?","commit_id":"3b41391e1a4a9feecefaddea9cae4677ebd99f6d"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"5d4fe2dbe1ad1179d2e3dab1b00ac047ea7425b5","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"def get_port_binding(lport):"},{"line_number":29,"context_line":"    return _locations.get(lport.id) or lport.binding"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"def is_port_local(lport):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f436f4f_7a16dbf3","line":29,"range":{"start_line":29,"start_character":11,"end_line":29,"end_character":35},"in_reply_to":"9f436f4f_3a6733c0","updated":"2017-08-13 12:42:02.000000000","message":"get(elem) returns None if elem is missing in the dictionary","commit_id":"3b41391e1a4a9feecefaddea9cae4677ebd99f6d"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"e2e8edfa77179ad3345d2e4dead4d56dde345863","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"def get_port_binding(lport):"},{"line_number":29,"context_line":"    return _locations.get(lport.id) or lport.binding"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"def is_port_local(lport):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f436f4f_5a65571d","line":29,"range":{"start_line":29,"start_character":11,"end_line":29,"end_character":35},"in_reply_to":"9f436f4f_7a16dbf3","updated":"2017-08-13 15:04:40.000000000","message":"Yes. Sorry. Forgot.","commit_id":"3b41391e1a4a9feecefaddea9cae4677ebd99f6d"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"d3cd90bedf727f713d1e8af85c406229d64f92c8","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    binding \u003d get_port_binding(lport)"},{"line_number":41,"context_line":"    if binding is not None:"},{"line_number":42,"context_line":"        return not binding.is_local"},{"line_number":43,"context_line":"    return False"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f436f4f_fa2acb29","line":43,"updated":"2017-08-13 12:36:38.000000000","message":"What about is_port_distributed?","commit_id":"3b41391e1a4a9feecefaddea9cae4677ebd99f6d"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"e2e8edfa77179ad3345d2e4dead4d56dde345863","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    binding \u003d get_port_binding(lport)"},{"line_number":41,"context_line":"    if binding is not None:"},{"line_number":42,"context_line":"        return not binding.is_local"},{"line_number":43,"context_line":"    return False"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f436f4f_3a6a93ed","line":43,"in_reply_to":"9f436f4f_9a197f23","updated":"2017-08-13 15:04:40.000000000","message":"Sure.","commit_id":"3b41391e1a4a9feecefaddea9cae4677ebd99f6d"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"5d4fe2dbe1ad1179d2e3dab1b00ac047ea7425b5","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    binding \u003d get_port_binding(lport)"},{"line_number":41,"context_line":"    if binding is not None:"},{"line_number":42,"context_line":"        return not binding.is_local"},{"line_number":43,"context_line":"    return False"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f436f4f_9a197f23","line":43,"in_reply_to":"9f436f4f_fa2acb29","updated":"2017-08-13 12:42:02.000000000","message":"Will be introduced along with distributed ports","commit_id":"3b41391e1a4a9feecefaddea9cae4677ebd99f6d"},{"author":{"_account_id":23235,"name":"Lihi Wishnitzer","email":"lihiwish@gmail.com","username":"lihiwish"},"change_message_id":"ea82cd8913ee7c9cc1843c98cd8943630443eab7","unresolved":false,"context_lines":[{"line_number":24,"context_line":"_locations \u003d {}"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"def reset():"},{"line_number":28,"context_line":"    _locations.clear()"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9f436f4f_eaf77458","line":27,"range":{"start_line":27,"start_character":4,"end_line":27,"end_character":9},"updated":"2017-08-15 08:44:09.000000000","message":"Nit: Why not clear?","commit_id":"98e99ffdde7c748900e9c95a09476351139cb72d"}]}
