)]}'
{"dragonflow/controller/df_local_controller.py":[{"author":{"_account_id":20287,"name":"hujie","email":"mike.hu@huawei.com","username":"hujie"},"change_message_id":"6e607bdefe0c55506e1ba87e838c9d3af9b9c52c","unresolved":false,"context_lines":[{"line_number":411,"context_line":"                                               tunnel_type\u003dself.tunnel_types)"},{"line_number":412,"context_line":""},{"line_number":413,"context_line":"        # Get all chassis from nb db to db store."},{"line_number":414,"context_line":"        for c in self.nb_api.get_all_chassis():"},{"line_number":415,"context_line":"            self.db_store.update_chassis(c)"},{"line_number":416,"context_line":""},{"line_number":417,"context_line":"    def create_tunnels(self):"},{"line_number":418,"context_line":"        if cfg.CONF.df.enable_virtual_tunnel_port:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a71b18c_6616aca8","line":415,"range":{"start_line":414,"start_character":8,"end_line":415,"end_character":43},"updated":"2016-12-03 13:41:59.000000000","message":"if you have invoke this, you can delete line 395 to avoid duplicate df db read.","commit_id":"a643ae26e3dd5a49f87bd317069c1899560b6b4e"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"8659ae4545d38198f1ff120a0565befecb293f93","unresolved":false,"context_lines":[{"line_number":411,"context_line":"                                               tunnel_type\u003dself.tunnel_types)"},{"line_number":412,"context_line":""},{"line_number":413,"context_line":"        # Get all chassis from nb db to db store."},{"line_number":414,"context_line":"        for c in self.nb_api.get_all_chassis():"},{"line_number":415,"context_line":"            self.db_store.update_chassis(c)"},{"line_number":416,"context_line":""},{"line_number":417,"context_line":"    def create_tunnels(self):"},{"line_number":418,"context_line":"        if cfg.CONF.df.enable_virtual_tunnel_port:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a71b18c_1900f6a9","line":415,"range":{"start_line":414,"start_character":8,"end_line":415,"end_character":43},"in_reply_to":"3a71b18c_6616aca8","updated":"2016-12-03 21:34:05.000000000","message":"You are correct, will do","commit_id":"a643ae26e3dd5a49f87bd317069c1899560b6b4e"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"0b156495cf9719e8d8899e07075f7b4c2b1c0395","unresolved":false,"context_lines":[{"line_number":394,"context_line":"    def register_chassis(self):"},{"line_number":395,"context_line":"        # Get all chassis from nb db to db store."},{"line_number":396,"context_line":"        for c in self.nb_api.get_all_chassis():"},{"line_number":397,"context_line":"            self.db_store.update_chassis(c)"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"        chassis \u003d self.db_store.get_chassis(self.chassis_name)"},{"line_number":400,"context_line":"        # TODO(gsagie) Support tunnel type change here ?"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a71b18c_4dd46846","line":397,"updated":"2016-12-04 11:28:52.000000000","message":"Why not put this in sync_local_cache_from_nb_db?","commit_id":"b345888770f79510d4c67f2e19c9e3430a16864a"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"b2a654272153d948a3a90818f31b5d32d9d5a69b","unresolved":false,"context_lines":[{"line_number":394,"context_line":"    def register_chassis(self):"},{"line_number":395,"context_line":"        # Get all chassis from nb db to db store."},{"line_number":396,"context_line":"        for c in self.nb_api.get_all_chassis():"},{"line_number":397,"context_line":"            self.db_store.update_chassis(c)"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"        chassis \u003d self.db_store.get_chassis(self.chassis_name)"},{"line_number":400,"context_line":"        # TODO(gsagie) Support tunnel type change here ?"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a71b18c_cd915854","line":397,"in_reply_to":"3a71b18c_4dd46846","updated":"2016-12-04 11:42:31.000000000","message":"chassis is not a tenant/topic based object. I haven\u0027t figure out how to place it in the df_db_objects_refresh. Maybe we can improve this part when the relationship has been figured out.","commit_id":"b345888770f79510d4c67f2e19c9e3430a16864a"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"910b959962efc5295ff3a7e0006c0f315eac3c54","unresolved":false,"context_lines":[{"line_number":394,"context_line":"    def register_chassis(self):"},{"line_number":395,"context_line":"        # Get all chassis from nb db to db store."},{"line_number":396,"context_line":"        for c in self.nb_api.get_all_chassis():"},{"line_number":397,"context_line":"            self.db_store.update_chassis(c)"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"        chassis \u003d self.db_store.get_chassis(self.chassis_name)"},{"line_number":400,"context_line":"        # TODO(gsagie) Support tunnel type change here ?"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a71b18c_c89f864e","line":397,"in_reply_to":"3a71b18c_cd915854","updated":"2016-12-04 14:14:52.000000000","message":"Sure.","commit_id":"b345888770f79510d4c67f2e19c9e3430a16864a"}],"dragonflow/db/db_store.py":[{"author":{"_account_id":20287,"name":"hujie","email":"mike.hu@huawei.com","username":"hujie"},"change_message_id":"6e607bdefe0c55506e1ba87e838c9d3af9b9c52c","unresolved":false,"context_lines":[{"line_number":316,"context_line":"        return self.chassises.get(chassis_id)"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"    def delete_chassis(self, chassis_id):"},{"line_number":319,"context_line":"        if chassis_id in self.chassises:"},{"line_number":320,"context_line":"            del self.chassises[chassis_id]"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a71b18c_2674b4fb","line":320,"range":{"start_line":319,"start_character":8,"end_line":320,"end_character":42},"updated":"2016-12-03 13:41:59.000000000","message":"you can use pop directly","commit_id":"a643ae26e3dd5a49f87bd317069c1899560b6b4e"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"8659ae4545d38198f1ff120a0565befecb293f93","unresolved":false,"context_lines":[{"line_number":316,"context_line":"        return self.chassises.get(chassis_id)"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"    def delete_chassis(self, chassis_id):"},{"line_number":319,"context_line":"        if chassis_id in self.chassises:"},{"line_number":320,"context_line":"            del self.chassises[chassis_id]"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a71b18c_392db246","line":320,"range":{"start_line":319,"start_character":8,"end_line":320,"end_character":42},"in_reply_to":"3a71b18c_2674b4fb","updated":"2016-12-03 21:34:05.000000000","message":"Will try to use it.","commit_id":"a643ae26e3dd5a49f87bd317069c1899560b6b4e"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"0b156495cf9719e8d8899e07075f7b4c2b1c0395","unresolved":false,"context_lines":[{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    def __init__(self):"},{"line_number":78,"context_line":"        self.tenant_dbs \u003d collections.defaultdict(TenantDbStore)"},{"line_number":79,"context_line":"        self.chassises \u003d {}"},{"line_number":80,"context_line":"        self.remote_chassis_lport_map \u003d {}"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def get(self, table_name, key, topic):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a71b18c_cd1cf815","line":79,"range":{"start_line":79,"start_character":13,"end_line":79,"end_character":22},"updated":"2016-12-04 11:28:52.000000000","message":"The plural of chassis is chassis ( https://www.merriam-webster.com/dictionary/chassis ).","commit_id":"b345888770f79510d4c67f2e19c9e3430a16864a"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"b2a654272153d948a3a90818f31b5d32d9d5a69b","unresolved":false,"context_lines":[{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    def __init__(self):"},{"line_number":78,"context_line":"        self.tenant_dbs \u003d collections.defaultdict(TenantDbStore)"},{"line_number":79,"context_line":"        self.chassises \u003d {}"},{"line_number":80,"context_line":"        self.remote_chassis_lport_map \u003d {}"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def get(self, table_name, key, topic):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a71b18c_eda0d4a1","line":79,"range":{"start_line":79,"start_character":13,"end_line":79,"end_character":22},"in_reply_to":"3a71b18c_cd1cf815","updated":"2016-12-04 11:42:31.000000000","message":"Done","commit_id":"b345888770f79510d4c67f2e19c9e3430a16864a"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"0b156495cf9719e8d8899e07075f7b4c2b1c0395","unresolved":false,"context_lines":[{"line_number":309,"context_line":"    def delete_publisher(self, uuid, topic\u003dNone):"},{"line_number":310,"context_line":"        self.delete(models.Publisher.table_name, uuid, topic)"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"    def update_chassis(self, chassis):"},{"line_number":313,"context_line":"        self.chassises[chassis.get_id()] \u003d chassis"},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"    def get_chassis(self, chassis_id):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a71b18c_4dd70823","line":312,"updated":"2016-12-04 11:28:52.000000000","message":"All other API request both the updated object, and its ID. Why change that here?","commit_id":"b345888770f79510d4c67f2e19c9e3430a16864a"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"b2a654272153d948a3a90818f31b5d32d9d5a69b","unresolved":false,"context_lines":[{"line_number":309,"context_line":"    def delete_publisher(self, uuid, topic\u003dNone):"},{"line_number":310,"context_line":"        self.delete(models.Publisher.table_name, uuid, topic)"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"    def update_chassis(self, chassis):"},{"line_number":313,"context_line":"        self.chassises[chassis.get_id()] \u003d chassis"},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"    def get_chassis(self, chassis_id):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a71b18c_6d83e404","line":312,"in_reply_to":"3a71b18c_4dd70823","updated":"2016-12-04 11:42:31.000000000","message":"My intention is to save the parameters, but it is reasonable to keep an uniform interface.","commit_id":"b345888770f79510d4c67f2e19c9e3430a16864a"}],"dragonflow/tests/unit/test_db_store.py":[{"author":{"_account_id":9044,"name":"Will","email":"wangjian.ika@bytedance.com","username":"Will"},"change_message_id":"59d0429fcd4b5149628e42111ea0faabacb65ab5","unresolved":false,"context_lines":[{"line_number":199,"context_line":"        self.db_store.update_chassis(chassis2)"},{"line_number":200,"context_line":"        self.assertEqual(chassis1, self.db_store.get_chassis(\u0027chassis1\u0027))"},{"line_number":201,"context_line":"        self.assertEqual(chassis2, self.db_store.get_chassis(\u0027chassis2\u0027))"},{"line_number":202,"context_line":"        self.assertIsNone(self.db_store.get_chassis(\u0027chassis3\u0027))"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        self.db_store.delete_chassis(\u0027chassis2\u0027)"},{"line_number":205,"context_line":"        self.assertIsNone(self.db_store.get_chassis(\u0027chassis2\u0027))"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a71b18c_c60dc03f","line":202,"range":{"start_line":202,"start_character":7,"end_line":202,"end_character":64},"updated":"2016-12-03 14:49:06.000000000","message":"Not down voting, but I think it is meanless","commit_id":"a643ae26e3dd5a49f87bd317069c1899560b6b4e"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"8659ae4545d38198f1ff120a0565befecb293f93","unresolved":false,"context_lines":[{"line_number":199,"context_line":"        self.db_store.update_chassis(chassis2)"},{"line_number":200,"context_line":"        self.assertEqual(chassis1, self.db_store.get_chassis(\u0027chassis1\u0027))"},{"line_number":201,"context_line":"        self.assertEqual(chassis2, self.db_store.get_chassis(\u0027chassis2\u0027))"},{"line_number":202,"context_line":"        self.assertIsNone(self.db_store.get_chassis(\u0027chassis3\u0027))"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        self.db_store.delete_chassis(\u0027chassis2\u0027)"},{"line_number":205,"context_line":"        self.assertIsNone(self.db_store.get_chassis(\u0027chassis2\u0027))"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a71b18c_79272a64","line":202,"range":{"start_line":202,"start_character":7,"end_line":202,"end_character":64},"in_reply_to":"3a71b18c_c60dc03f","updated":"2016-12-03 21:34:05.000000000","message":"This is to make sure we can\u0027t get the chassis that doen\u0027t exist.","commit_id":"a643ae26e3dd5a49f87bd317069c1899560b6b4e"}]}
