)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11343,"name":"Gal Sagie","email":"gal.sagie@gmail.com","username":"GalSagie"},"change_message_id":"3407ce41528f8bb891126a34eaf4143617248375","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Lookup router_port\u0027s network_id with lswitch\u0027s topic"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The router_port and the logical switch to which it is connected may have"},{"line_number":10,"context_line":"different topics. In this change, the DF controller is instructed to"},{"line_number":11,"context_line":"look up the lswitch\u0027s topic, and extract the network ID using it."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"ba0121b8_8d8f9ccb","line":9,"updated":"2016-03-30 07:13:27.000000000","message":"How it may have different topics? shared router?","commit_id":"d76cf409fef4896915710d99a29cc14bedc68147"},{"author":{"_account_id":11343,"name":"Gal Sagie","email":"gal.sagie@gmail.com","username":"GalSagie"},"change_message_id":"f26427a2d5943312bfd0d3668ae4ce018e892018","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Lookup router_port\u0027s network_id with lswitch\u0027s topic"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The router_port and the logical switch to which it is connected may have"},{"line_number":10,"context_line":"different topics. In this change, the DF controller is instructed to"},{"line_number":11,"context_line":"look up the lswitch\u0027s topic, and extract the network ID using it."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Otherwise, the network ID may be None, which leads to bug 1560927"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"ba0121b8_8d2b1c94","line":10,"updated":"2016-03-30 07:14:13.000000000","message":"I think this deserve an investigation why this happens","commit_id":"d76cf409fef4896915710d99a29cc14bedc68147"}],"dragonflow/controller/df_local_controller.py":[{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"779ba2c911ea46f37043588cd9522fc64c6b25f1","unresolved":false,"context_lines":[{"line_number":335,"context_line":"        router_port_topic \u003d router_port.get_topic()"},{"line_number":336,"context_line":"        lswitch \u003d self.db_store.get_lswitch(lswitch_id, router_port_topic)"},{"line_number":337,"context_line":"        if not lswitch:"},{"line_number":338,"context_line":"            # Maybe it\u0027s under a different topic?"},{"line_number":339,"context_line":"            lswitch \u003d self.db_store.get_lswitch(lswitch_id)"},{"line_number":340,"context_line":"        return self.db_store.get_network_id("},{"line_number":341,"context_line":"            lswitch_id,"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba0121b8_b1af9de2","line":338,"range":{"start_line":338,"start_character":14,"end_line":338,"end_character":49},"updated":"2016-03-29 02:42:03.000000000","message":"if you can provide why it is different here, it may be more informative.","commit_id":"578cd53af97ac4cefafcf3b7442f278d01150f68"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"ec92850fe43a67cdb06e3e5ea2fce84c8ecd9c7f","unresolved":false,"context_lines":[{"line_number":335,"context_line":"        router_port_topic \u003d router_port.get_topic()"},{"line_number":336,"context_line":"        lswitch \u003d self.db_store.get_lswitch(lswitch_id, router_port_topic)"},{"line_number":337,"context_line":"        if not lswitch:"},{"line_number":338,"context_line":"            # Maybe it\u0027s under a different topic?"},{"line_number":339,"context_line":"            lswitch \u003d self.db_store.get_lswitch(lswitch_id)"},{"line_number":340,"context_line":"        return self.db_store.get_network_id("},{"line_number":341,"context_line":"            lswitch_id,"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba0121b8_e7291a39","line":338,"range":{"start_line":338,"start_character":14,"end_line":338,"end_character":49},"in_reply_to":"ba0121b8_0731eba2","updated":"2016-03-30 03:29:07.000000000","message":"If it only happens to the test code that chooses name, the test code should be fixed to choose both name and tenant. If it is a general case and will reproduce during normal operations, I suggest you add an explanation in the comments.","commit_id":"578cd53af97ac4cefafcf3b7442f278d01150f68"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"d780d18efdffe494da74e673e2935019a6dbac62","unresolved":false,"context_lines":[{"line_number":335,"context_line":"        router_port_topic \u003d router_port.get_topic()"},{"line_number":336,"context_line":"        lswitch \u003d self.db_store.get_lswitch(lswitch_id, router_port_topic)"},{"line_number":337,"context_line":"        if not lswitch:"},{"line_number":338,"context_line":"            # Maybe it\u0027s under a different topic?"},{"line_number":339,"context_line":"            lswitch \u003d self.db_store.get_lswitch(lswitch_id)"},{"line_number":340,"context_line":"        return self.db_store.get_network_id("},{"line_number":341,"context_line":"            lswitch_id,"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba0121b8_0731eba2","line":338,"range":{"start_line":338,"start_character":14,"end_line":338,"end_character":49},"in_reply_to":"ba0121b8_b1af9de2","updated":"2016-03-29 04:16:26.000000000","message":"It looks like the network and subnet are under the tenant \u0027demo\u0027, while the router is under the tenant \u0027admin\u0027. Since the test code selects the network by name, and there\u0027s a network \u0027private\u0027 that belongs to demo, that network is sometimes returned.","commit_id":"578cd53af97ac4cefafcf3b7442f278d01150f68"},{"author":{"_account_id":11343,"name":"Gal Sagie","email":"gal.sagie@gmail.com","username":"GalSagie"},"change_message_id":"3407ce41528f8bb891126a34eaf4143617248375","unresolved":false,"context_lines":[{"line_number":366,"context_line":"    def _add_new_router_port(self, router, router_port):"},{"line_number":367,"context_line":"        LOG.info(_LI(\"Adding new logical router interface \u003d %s\") %"},{"line_number":368,"context_line":"                 router_port.__str__())"},{"line_number":369,"context_line":"        local_network_id \u003d self._get_router_port_network_id(router_port)"},{"line_number":370,"context_line":"        self.open_flow_app.notify_add_router_port("},{"line_number":371,"context_line":"                router, router_port, local_network_id)"},{"line_number":372,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba0121b8_2d3c90e1","line":369,"updated":"2016-03-30 07:13:27.000000000","message":"The problem here start that we use topics for this API, the local networks id are just a local controller structure that maps between neutron network ids (lswitch ids) and local ids, we dont really need to use topics with this API","commit_id":"d76cf409fef4896915710d99a29cc14bedc68147"},{"author":{"_account_id":18903,"name":"Yuli","email":"stremovsky@gmail.com","username":"yuli"},"change_message_id":"bb66ddc4259085a1dd59f45339aa1a8ac8aed222","unresolved":false,"context_lines":[{"line_number":178,"context_line":"        lswitch \u003d self.db_store.get_lswitch(lswitch_id)"},{"line_number":179,"context_line":"        LOG.info(_LI(\"Removing Logical Switch \u003d %s\") % lswitch.__str__())"},{"line_number":180,"context_line":"        self.open_flow_app.notify_remove_logical_switch(lswitch)"},{"line_number":181,"context_line":"        self.db_store.del_lswitch(lswitch_id)"},{"line_number":182,"context_line":"        self.db_store.del_network_id(lswitch_id)"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"    def logical_port_updated(self, lport):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba0121b8_712721ca","line":181,"updated":"2016-03-31 15:29:29.000000000","message":"This can be potentially problematic code:\n\nYou delete an lswitch record from db and continue using the lwsitch object in the next line.","commit_id":"ccd57e08136a110f0039448495559981456d3e45"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"617777578e3a209bab30744d3e48dc70339c9a1c","unresolved":false,"context_lines":[{"line_number":178,"context_line":"        lswitch \u003d self.db_store.get_lswitch(lswitch_id)"},{"line_number":179,"context_line":"        LOG.info(_LI(\"Removing Logical Switch \u003d %s\") % lswitch.__str__())"},{"line_number":180,"context_line":"        self.open_flow_app.notify_remove_logical_switch(lswitch)"},{"line_number":181,"context_line":"        self.db_store.del_lswitch(lswitch_id)"},{"line_number":182,"context_line":"        self.db_store.del_network_id(lswitch_id)"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"    def logical_port_updated(self, lport):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba0121b8_6a69e3f8","line":181,"in_reply_to":"ba0121b8_712721ca","updated":"2016-03-31 18:08:04.000000000","message":"Firstly, I delete the switch from the cache. The switch object stays live (memory managed language + reference count).\nSecondly, I only use the object\u0027s ID. Which is a string.","commit_id":"ccd57e08136a110f0039448495559981456d3e45"}]}
