)]}'
{"dragonflow/controller/df_local_controller.py":[{"author":{"_account_id":21007,"name":"yuan wei","email":"wei.yuan@huawei.com","username":"yuanwei"},"change_message_id":"cfa79a6edd11c5ef84b3ac18f1e859e7bd38d9de","unresolved":false,"context_lines":[{"line_number":258,"context_line":"        chassis \u003d lport.get_chassis()"},{"line_number":259,"context_line":"        lswitch \u003d self.db_store.get_lswitch(lport.get_lswitch_id())"},{"line_number":260,"context_line":"        if lswitch is not None:"},{"line_number":261,"context_line":"            lport.set_external_value(\u0027local_network_id\u0027,"},{"line_number":262,"context_line":"                                     lswitch.get_unique_key())"},{"line_number":263,"context_line":"            network_type \u003d lswitch.get_network_type()"},{"line_number":264,"context_line":"            segment_id \u003d lswitch.get_segment_id()"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a629dbe_40dae479","line":261,"updated":"2016-11-07 10:06:22.000000000","message":"if we allocate this id globally, we may need to change this name \u0027local_network_id\u0027","commit_id":"45befc02fe484633d657ad1d18497976f1600e82"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"c4a53ce18516a2994d0276ea05e52010d7645e9e","unresolved":false,"context_lines":[{"line_number":258,"context_line":"        chassis \u003d lport.get_chassis()"},{"line_number":259,"context_line":"        lswitch \u003d self.db_store.get_lswitch(lport.get_lswitch_id())"},{"line_number":260,"context_line":"        if lswitch is not None:"},{"line_number":261,"context_line":"            lport.set_external_value(\u0027local_network_id\u0027,"},{"line_number":262,"context_line":"                                     lswitch.get_unique_key())"},{"line_number":263,"context_line":"            network_type \u003d lswitch.get_network_type()"},{"line_number":264,"context_line":"            segment_id \u003d lswitch.get_segment_id()"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a629dbe_f111085f","line":261,"in_reply_to":"9a629dbe_40dae479","updated":"2016-11-07 12:14:55.000000000","message":"Good point, I did a rough search, there are nearly 100 places that use local_network_id. Maybe we should rename it in follow on patch to make this patch clear.","commit_id":"45befc02fe484633d657ad1d18497976f1600e82"}],"dragonflow/controller/l3_app.py":[{"author":{"_account_id":21007,"name":"yuan wei","email":"wei.yuan@huawei.com","username":"yuanwei"},"change_message_id":"cfa79a6edd11c5ef84b3ac18f1e859e7bd38d9de","unresolved":false,"context_lines":[{"line_number":169,"context_line":"    def _add_new_router_port(self, router, router_port):"},{"line_number":170,"context_line":"        LOG.info(_LI(\"Adding new logical router interface \u003d %s\"),"},{"line_number":171,"context_line":"                 router_port)"},{"line_number":172,"context_line":"        lswitch \u003d self.db_store.get_lswitch(router_port.get_lswitch_id())"},{"line_number":173,"context_line":"        local_network_id \u003d lswitch.get_unique_key()"},{"line_number":174,"context_line":"        datapath \u003d self.get_datapath()"},{"line_number":175,"context_line":"        if datapath is None:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a629dbe_a08e6025","line":172,"updated":"2016-11-07 10:06:22.000000000","message":"I think maybe we could store the network unique key in local router port, or we could add a method named \u0027get_lswitch_key\u0027 in db_store which implements the logicality here.","commit_id":"45befc02fe484633d657ad1d18497976f1600e82"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"c4a53ce18516a2994d0276ea05e52010d7645e9e","unresolved":false,"context_lines":[{"line_number":169,"context_line":"    def _add_new_router_port(self, router, router_port):"},{"line_number":170,"context_line":"        LOG.info(_LI(\"Adding new logical router interface \u003d %s\"),"},{"line_number":171,"context_line":"                 router_port)"},{"line_number":172,"context_line":"        lswitch \u003d self.db_store.get_lswitch(router_port.get_lswitch_id())"},{"line_number":173,"context_line":"        local_network_id \u003d lswitch.get_unique_key()"},{"line_number":174,"context_line":"        datapath \u003d self.get_datapath()"},{"line_number":175,"context_line":"        if datapath is None:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a629dbe_16466d23","line":172,"in_reply_to":"9a629dbe_a08e6025","updated":"2016-11-07 12:14:55.000000000","message":"Done","commit_id":"45befc02fe484633d657ad1d18497976f1600e82"}],"dragonflow/controller/l3_proactive_app.py":[{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"2427f1e66eca227eaa6b9a193bd1baf4742d55ea","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        LOG.info(_LI(\"Adding new logical router interface \u003d %s\"),"},{"line_number":90,"context_line":"                 router_port)"},{"line_number":91,"context_line":"        local_network_id \u003d self.db_store.get_unique_key_by_id("},{"line_number":92,"context_line":"            \u0027lswitchs\u0027, router_port.get_lswitch_id())"},{"line_number":93,"context_line":"        datapath \u003d self.get_datapath()"},{"line_number":94,"context_line":"        parser \u003d datapath.ofproto_parser"},{"line_number":95,"context_line":"        ofproto \u003d datapath.ofproto"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a629dbe_cbfb5e46","line":92,"range":{"start_line":92,"start_character":11,"end_line":92,"end_character":23},"updated":"2016-11-14 12:59:18.000000000","message":"Maybe we can wrap this in some DbStore method a la DbStore.get_lswitch_unique_key(lswitch_uuid)\n\nIt is confusing to type table name with a typo, so maybe we can have less of it in the code :)","commit_id":"c355a5a557a403388d5bdd1129e7822fb8080d0f"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"46372cf00247daa08326bc044bc407f14f77c301","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        LOG.info(_LI(\"Adding new logical router interface \u003d %s\"),"},{"line_number":90,"context_line":"                 router_port)"},{"line_number":91,"context_line":"        local_network_id \u003d self.db_store.get_unique_key_by_id("},{"line_number":92,"context_line":"            \u0027lswitchs\u0027, router_port.get_lswitch_id())"},{"line_number":93,"context_line":"        datapath \u003d self.get_datapath()"},{"line_number":94,"context_line":"        parser \u003d datapath.ofproto_parser"},{"line_number":95,"context_line":"        ofproto \u003d datapath.ofproto"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a629dbe_164bb6b1","line":92,"range":{"start_line":92,"start_character":11,"end_line":92,"end_character":23},"in_reply_to":"9a629dbe_417baf7b","updated":"2016-11-14 14:46:36.000000000","message":"Const value sounds reasonable","commit_id":"c355a5a557a403388d5bdd1129e7822fb8080d0f"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"b173fe496c3dd707ea601bbffebd00a13aa8f7bb","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        LOG.info(_LI(\"Adding new logical router interface \u003d %s\"),"},{"line_number":90,"context_line":"                 router_port)"},{"line_number":91,"context_line":"        local_network_id \u003d self.db_store.get_unique_key_by_id("},{"line_number":92,"context_line":"            \u0027lswitchs\u0027, router_port.get_lswitch_id())"},{"line_number":93,"context_line":"        datapath \u003d self.get_datapath()"},{"line_number":94,"context_line":"        parser \u003d datapath.ofproto_parser"},{"line_number":95,"context_line":"        ofproto \u003d datapath.ofproto"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a629dbe_417baf7b","line":92,"range":{"start_line":92,"start_character":11,"end_line":92,"end_character":23},"in_reply_to":"9a629dbe_cbfb5e46","updated":"2016-11-14 13:27:00.000000000","message":"I plan to use get_unique_key_by_id for other resources. And I think it would be better to add less method to db_store. For the potential typo, I think maybe we can mitigate it by adding const value(I always want to do that...).","commit_id":"c355a5a557a403388d5bdd1129e7822fb8080d0f"}],"dragonflow/db/api_nb.py":[{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"d8d52a836a84720cd46b624efa21c21e0823707b","unresolved":false,"context_lines":[{"line_number":464,"context_line":"        lswitch \u003d {}"},{"line_number":465,"context_line":"        lswitch[\u0027id\u0027] \u003d id"},{"line_number":466,"context_line":"        lswitch[\u0027topic\u0027] \u003d topic"},{"line_number":467,"context_line":"        lswitch[db_models.UNIQUE_KEY] \u003d self.driver.allocate_unique_key("},{"line_number":468,"context_line":"            \u0027lswitch\u0027)"},{"line_number":469,"context_line":"        for col, val in columns.items():"},{"line_number":470,"context_line":"            lswitch[col] \u003d val"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a629dbe_f9572ac8","line":467,"updated":"2016-11-07 12:41:27.000000000","message":"since DF nb DB is invoked by neutron, why neutron network uuid is not used as a unique key?","commit_id":"d28b1cc07feb24b3b5d61a1a8ed7680ca63363b8"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"5210e8a02505941079d37ea2322d11f2cd385faa","unresolved":false,"context_lines":[{"line_number":464,"context_line":"        lswitch \u003d {}"},{"line_number":465,"context_line":"        lswitch[\u0027id\u0027] \u003d id"},{"line_number":466,"context_line":"        lswitch[\u0027topic\u0027] \u003d topic"},{"line_number":467,"context_line":"        lswitch[db_models.UNIQUE_KEY] \u003d self.driver.allocate_unique_key("},{"line_number":468,"context_line":"            \u0027lswitch\u0027)"},{"line_number":469,"context_line":"        for col, val in columns.items():"},{"line_number":470,"context_line":"            lswitch[col] \u003d val"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a629dbe_4ee82511","line":467,"in_reply_to":"9a629dbe_94f27599","updated":"2016-11-08 08:41:08.000000000","message":"Correct! It doesn\u0027t have to be unique per df cluster. Only unique per df controller should be sufficient. However, it turns out that make it unique per df cluster will be much simple and clear(since we store it in nb db). So I make this change. I think there will be noting break because of it, what do you think?","commit_id":"d28b1cc07feb24b3b5d61a1a8ed7680ca63363b8"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"23cbc50f0801e7a525dba6fc449a134491a061fc","unresolved":false,"context_lines":[{"line_number":464,"context_line":"        lswitch \u003d {}"},{"line_number":465,"context_line":"        lswitch[\u0027id\u0027] \u003d id"},{"line_number":466,"context_line":"        lswitch[\u0027topic\u0027] \u003d topic"},{"line_number":467,"context_line":"        lswitch[db_models.UNIQUE_KEY] \u003d self.driver.allocate_unique_key("},{"line_number":468,"context_line":"            \u0027lswitch\u0027)"},{"line_number":469,"context_line":"        for col, val in columns.items():"},{"line_number":470,"context_line":"            lswitch[col] \u003d val"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a629dbe_94f27599","line":467,"in_reply_to":"9a629dbe_b9bbf274","updated":"2016-11-07 13:14:36.000000000","message":"So now its going to be unique per DF cluster not per (Local) Controller, correct?","commit_id":"d28b1cc07feb24b3b5d61a1a8ed7680ca63363b8"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"2cd49b00668ab04b68c7f2d91e686f8893f98171","unresolved":false,"context_lines":[{"line_number":464,"context_line":"        lswitch \u003d {}"},{"line_number":465,"context_line":"        lswitch[\u0027id\u0027] \u003d id"},{"line_number":466,"context_line":"        lswitch[\u0027topic\u0027] \u003d topic"},{"line_number":467,"context_line":"        lswitch[db_models.UNIQUE_KEY] \u003d self.driver.allocate_unique_key("},{"line_number":468,"context_line":"            \u0027lswitch\u0027)"},{"line_number":469,"context_line":"        for col, val in columns.items():"},{"line_number":470,"context_line":"            lswitch[col] \u003d val"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a629dbe_b9bbf274","line":467,"in_reply_to":"9a629dbe_f9572ac8","updated":"2016-11-07 12:55:46.000000000","message":"The unique key here will be used as the identifier of network in OpenFlow. So it should be an integer.","commit_id":"d28b1cc07feb24b3b5d61a1a8ed7680ca63363b8"}],"dragonflow/db/db_store.py":[{"author":{"_account_id":20287,"name":"hujie","email":"mike.hu@huawei.com","username":"hujie"},"change_message_id":"5bfbb45a5c0ead3981774de3008087a4262ab823","unresolved":false,"context_lines":[{"line_number":113,"context_line":"                if tenant_db.pop(table_name, key):"},{"line_number":114,"context_line":"                    break"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def get_unique_key_by_id(self, table_name, key, topic\u003dNone):"},{"line_number":117,"context_line":"        lswitch \u003d self.get(\u0027lswitchs\u0027, key, topic)"},{"line_number":118,"context_line":"        if lswitch:"},{"line_number":119,"context_line":"            return lswitch.get_unique_key()"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a629dbe_c2eebcb3","line":116,"range":{"start_line":116,"start_character":35,"end_line":116,"end_character":45},"updated":"2016-11-08 13:04:59.000000000","message":"this arg is not used, you want to define a common method to fetch unique key by obj id, right?","commit_id":"a6c20124874bc800fcd8c67fe3af257dc98fb5a1"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"4a1e9d96270379ffd9d55d08e49cac280c04f493","unresolved":false,"context_lines":[{"line_number":113,"context_line":"                if tenant_db.pop(table_name, key):"},{"line_number":114,"context_line":"                    break"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def get_unique_key_by_id(self, table_name, key, topic\u003dNone):"},{"line_number":117,"context_line":"        lswitch \u003d self.get(\u0027lswitchs\u0027, key, topic)"},{"line_number":118,"context_line":"        if lswitch:"},{"line_number":119,"context_line":"            return lswitch.get_unique_key()"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a629dbe_85920e9e","line":116,"range":{"start_line":116,"start_character":35,"end_line":116,"end_character":45},"in_reply_to":"9a629dbe_c2eebcb3","updated":"2016-11-08 13:14:15.000000000","message":"yeah, I want to define a common method here, good catch!","commit_id":"a6c20124874bc800fcd8c67fe3af257dc98fb5a1"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"bad64e9b406e465f3b79dd38e7e368739ab9c71a","unresolved":false,"context_lines":[{"line_number":114,"context_line":"                    break"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def get_unique_key_by_id(self, table_name, key, topic\u003dNone):"},{"line_number":117,"context_line":"        lswitch \u003d self.get(table_name, key, topic)"},{"line_number":118,"context_line":"        if lswitch:"},{"line_number":119,"context_line":"            return lswitch.get_unique_key()"},{"line_number":120,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9a629dbe_b575eecb","line":117,"range":{"start_line":117,"start_character":8,"end_line":117,"end_character":15},"updated":"2016-11-11 08:54:37.000000000","message":"Not necessarily an \u0027lswitch\u0027. Maybe \u0027item\u0027, \u0027object\u0027, or \u0027instance\u0027?","commit_id":"b674a1fc695fa6084905cfe4651912b702131f0b"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"3889971eeb99717b271e095dbaa126239a6c563e","unresolved":false,"context_lines":[{"line_number":114,"context_line":"                    break"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def get_unique_key_by_id(self, table_name, key, topic\u003dNone):"},{"line_number":117,"context_line":"        lswitch \u003d self.get(table_name, key, topic)"},{"line_number":118,"context_line":"        if lswitch:"},{"line_number":119,"context_line":"            return lswitch.get_unique_key()"},{"line_number":120,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9a629dbe_7716d0f2","line":117,"range":{"start_line":117,"start_character":8,"end_line":117,"end_character":15},"in_reply_to":"9a629dbe_b0c89c56","updated":"2016-11-13 04:17:36.000000000","message":"yeah, my mistake, will fix it","commit_id":"b674a1fc695fa6084905cfe4651912b702131f0b"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"f4868932d1eab02a910dda959a83c0f9cbe2876d","unresolved":false,"context_lines":[{"line_number":114,"context_line":"                    break"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def get_unique_key_by_id(self, table_name, key, topic\u003dNone):"},{"line_number":117,"context_line":"        lswitch \u003d self.get(table_name, key, topic)"},{"line_number":118,"context_line":"        if lswitch:"},{"line_number":119,"context_line":"            return lswitch.get_unique_key()"},{"line_number":120,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9a629dbe_b0c89c56","line":117,"range":{"start_line":117,"start_character":8,"end_line":117,"end_character":15},"in_reply_to":"9a629dbe_b575eecb","updated":"2016-11-11 09:05:26.000000000","message":"+1， need to fix to prevent from misunderstanding.","commit_id":"b674a1fc695fa6084905cfe4651912b702131f0b"}]}
