)]}'
{"dragonflow/controller/df_local_controller.py":[{"author":{"_account_id":20287,"name":"hujie","email":"mike.hu@huawei.com","username":"hujie"},"change_message_id":"7015d91d2f6250e5491b92636e166b7c1fc0a225","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        self.db_store \u003d db_store.DbStore()"},{"line_number":60,"context_line":"        self.chassis_name \u003d chassis_name"},{"line_number":61,"context_line":"        self.ip \u003d cfg.CONF.df.local_ip"},{"line_number":62,"context_line":"        if cfg.CONF.df.enable_virtual_tunnel_port:"},{"line_number":63,"context_line":"            # Virtual tunnel port support multiple tunnel types together"},{"line_number":64,"context_line":"            self.tunnel_type \u003d cfg.CONF.df.tunnel_types"},{"line_number":65,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"da6895a0_569513e2","line":62,"range":{"start_line":62,"start_character":11,"end_line":62,"end_character":49},"updated":"2016-10-23 14:07:06.000000000","message":"this config item appears multi times, you can set it to self.enable_virtual_tunnel_port","commit_id":"5737fee5c45afbc86ad912847a04eaf9c925b003"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"1dbc124083fad9e53a7da247ff6236761d973221","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        self.db_store \u003d db_store.DbStore()"},{"line_number":60,"context_line":"        self.chassis_name \u003d chassis_name"},{"line_number":61,"context_line":"        self.ip \u003d cfg.CONF.df.local_ip"},{"line_number":62,"context_line":"        if cfg.CONF.df.enable_virtual_tunnel_port:"},{"line_number":63,"context_line":"            # Virtual tunnel port support multiple tunnel types together"},{"line_number":64,"context_line":"            self.tunnel_type \u003d cfg.CONF.df.tunnel_types"},{"line_number":65,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"da6895a0_aa30bb02","line":62,"range":{"start_line":62,"start_character":11,"end_line":62,"end_character":49},"in_reply_to":"da6895a0_2a84abd2","updated":"2016-10-24 03:46:35.000000000","message":"I think it is a cache in memory","commit_id":"5737fee5c45afbc86ad912847a04eaf9c925b003"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"0ff633ad5e4fbf4fde4a3239f3220f434bafc696","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        self.db_store \u003d db_store.DbStore()"},{"line_number":60,"context_line":"        self.chassis_name \u003d chassis_name"},{"line_number":61,"context_line":"        self.ip \u003d cfg.CONF.df.local_ip"},{"line_number":62,"context_line":"        if cfg.CONF.df.enable_virtual_tunnel_port:"},{"line_number":63,"context_line":"            # Virtual tunnel port support multiple tunnel types together"},{"line_number":64,"context_line":"            self.tunnel_type \u003d cfg.CONF.df.tunnel_types"},{"line_number":65,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"da6895a0_b6174f50","line":62,"range":{"start_line":62,"start_character":11,"end_line":62,"end_character":49},"in_reply_to":"da6895a0_569513e2","updated":"2016-10-23 14:44:55.000000000","message":"I can do that, but I don\u0027t see any benifit of it. Reference it from df-controller object or from global cfg object don\u0027t have much difference. \n\nPlus, I would like to remove this option eventually, so I want to add as less change on it as possible.\n\nhttps://review.openstack.org/#/c/379883/6/doc/source/specs/virtual_tunnel_port.rst@168","commit_id":"5737fee5c45afbc86ad912847a04eaf9c925b003"},{"author":{"_account_id":20287,"name":"hujie","email":"mike.hu@huawei.com","username":"hujie"},"change_message_id":"d641956d18c49c0d154a584be1d5c7cdc1cabead","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        self.db_store \u003d db_store.DbStore()"},{"line_number":60,"context_line":"        self.chassis_name \u003d chassis_name"},{"line_number":61,"context_line":"        self.ip \u003d cfg.CONF.df.local_ip"},{"line_number":62,"context_line":"        if cfg.CONF.df.enable_virtual_tunnel_port:"},{"line_number":63,"context_line":"            # Virtual tunnel port support multiple tunnel types together"},{"line_number":64,"context_line":"            self.tunnel_type \u003d cfg.CONF.df.tunnel_types"},{"line_number":65,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"da6895a0_2a84abd2","line":62,"range":{"start_line":62,"start_character":11,"end_line":62,"end_character":49},"in_reply_to":"da6895a0_b6174f50","updated":"2016-10-24 03:33:49.000000000","message":"I\u0027m not sure whether it is reading from the config file or from the cache, if from the cache it\u0027s ok.","commit_id":"5737fee5c45afbc86ad912847a04eaf9c925b003"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"2172a5f3b0b5fe7a52b687d2b1881a44c79b64d8","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        self.ip \u003d cfg.CONF.df.local_ip"},{"line_number":62,"context_line":"        if cfg.CONF.df.enable_virtual_tunnel_port:"},{"line_number":63,"context_line":"            # Virtual tunnel port support multiple tunnel types together"},{"line_number":64,"context_line":"            self.tunnel_type \u003d cfg.CONF.df.tunnel_types"},{"line_number":65,"context_line":"        else:"},{"line_number":66,"context_line":"            self.tunnel_type \u003d cfg.CONF.df.tunnel_type"},{"line_number":67,"context_line":"        self.sync_finished \u003d False"}],"source_content_type":"text/x-python","patch_set":1,"id":"da6895a0_6a5cdeed","line":64,"range":{"start_line":64,"start_character":17,"end_line":64,"end_character":28},"updated":"2016-10-24 08:37:05.000000000","message":"tunnel_types?","commit_id":"5737fee5c45afbc86ad912847a04eaf9c925b003"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"2d64db3bf4369cd29058450ec50f2337b92f9b86","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        self.ip \u003d cfg.CONF.df.local_ip"},{"line_number":62,"context_line":"        if cfg.CONF.df.enable_virtual_tunnel_port:"},{"line_number":63,"context_line":"            # Virtual tunnel port support multiple tunnel types together"},{"line_number":64,"context_line":"            self.tunnel_type \u003d cfg.CONF.df.tunnel_types"},{"line_number":65,"context_line":"        else:"},{"line_number":66,"context_line":"            self.tunnel_type \u003d cfg.CONF.df.tunnel_type"},{"line_number":67,"context_line":"        self.sync_finished \u003d False"}],"source_content_type":"text/x-python","patch_set":1,"id":"da6895a0_6fba2870","line":64,"range":{"start_line":64,"start_character":17,"end_line":64,"end_character":28},"in_reply_to":"da6895a0_6a5cdeed","updated":"2016-10-24 13:16:43.000000000","message":"It should be tunnel_types, but if I change it to tunnel_types here, I have to add some judgement  to line 322 and line 429. So, I think it might be good to just keep it to be tunnel_type, and rename it when the config option tunnel_type is deprecated. What do you think?","commit_id":"5737fee5c45afbc86ad912847a04eaf9c925b003"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"a1e00aa8ffee784256fb3248f6fc73c829e9db8c","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        self.ip \u003d cfg.CONF.df.local_ip"},{"line_number":62,"context_line":"        if cfg.CONF.df.enable_virtual_tunnel_port:"},{"line_number":63,"context_line":"            # Virtual tunnel port support multiple tunnel types together"},{"line_number":64,"context_line":"            self.tunnel_type \u003d cfg.CONF.df.tunnel_types"},{"line_number":65,"context_line":"        else:"},{"line_number":66,"context_line":"            self.tunnel_type \u003d cfg.CONF.df.tunnel_type"},{"line_number":67,"context_line":"        self.sync_finished \u003d False"}],"source_content_type":"text/x-python","patch_set":1,"id":"da6895a0_7fa0f543","line":64,"range":{"start_line":64,"start_character":17,"end_line":64,"end_character":28},"in_reply_to":"da6895a0_6fba2870","updated":"2016-10-27 07:09:35.000000000","message":"I just misunderstood it at the first glance. This tunnel_type is not the same to the old one but has the same name, which makes me confused.\n\nI suggest to change it to tunnel_types or virtual_tunnel_types, something like that.\n\nAnd I think this implementation is better than the old one. We can remove everything old later.","commit_id":"5737fee5c45afbc86ad912847a04eaf9c925b003"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"83c6a1e0ecf57f805c5f663c51582944eee1c3b4","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        self.ip \u003d cfg.CONF.df.local_ip"},{"line_number":62,"context_line":"        if cfg.CONF.df.enable_virtual_tunnel_port:"},{"line_number":63,"context_line":"            # Virtual tunnel port support multiple tunnel types together"},{"line_number":64,"context_line":"            self.tunnel_type \u003d cfg.CONF.df.tunnel_types"},{"line_number":65,"context_line":"        else:"},{"line_number":66,"context_line":"            self.tunnel_type \u003d cfg.CONF.df.tunnel_type"},{"line_number":67,"context_line":"        self.sync_finished \u003d False"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba5da102_89440575","line":64,"range":{"start_line":64,"start_character":17,"end_line":64,"end_character":28},"in_reply_to":"da6895a0_7fa0f543","updated":"2016-10-27 13:58:04.000000000","message":"OK, will change it to tunnel_types(I don\u0027t like the virtual prefix, as it is the tunnel types that this df controller support.)","commit_id":"5737fee5c45afbc86ad912847a04eaf9c925b003"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"2172a5f3b0b5fe7a52b687d2b1881a44c79b64d8","unresolved":false,"context_lines":[{"line_number":422,"context_line":""},{"line_number":423,"context_line":"    def register_chassis(self):"},{"line_number":424,"context_line":"        chassis \u003d self.nb_api.get_chassis(self.chassis_name)"},{"line_number":425,"context_line":"        # TODO(gsagie) Support tunnel type change here ?"},{"line_number":426,"context_line":"        if chassis is None:"},{"line_number":427,"context_line":"            self.nb_api.add_chassis(self.chassis_name,"},{"line_number":428,"context_line":"                                    self.ip,"}],"source_content_type":"text/x-python","patch_set":1,"id":"da6895a0_36b5f6ed","line":425,"range":{"start_line":425,"start_character":8,"end_line":425,"end_character":56},"updated":"2016-10-24 08:37:05.000000000","message":"could we remove this \u0027TODO\u0027 in this patch?","commit_id":"5737fee5c45afbc86ad912847a04eaf9c925b003"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"2d64db3bf4369cd29058450ec50f2337b92f9b86","unresolved":false,"context_lines":[{"line_number":422,"context_line":""},{"line_number":423,"context_line":"    def register_chassis(self):"},{"line_number":424,"context_line":"        chassis \u003d self.nb_api.get_chassis(self.chassis_name)"},{"line_number":425,"context_line":"        # TODO(gsagie) Support tunnel type change here ?"},{"line_number":426,"context_line":"        if chassis is None:"},{"line_number":427,"context_line":"            self.nb_api.add_chassis(self.chassis_name,"},{"line_number":428,"context_line":"                                    self.ip,"}],"source_content_type":"text/x-python","patch_set":1,"id":"da6895a0_4fc0037d","line":425,"range":{"start_line":425,"start_character":8,"end_line":425,"end_character":56},"in_reply_to":"da6895a0_36b5f6ed","updated":"2016-10-24 13:16:43.000000000","message":"This patch only support update tunnel type when enable_virtual_tunnel_port. For legacy mode, it will be supported in  [1] https://review.openstack.org/#/c/365077/\n\nUnless the virtual tunnel port is fully supported, I would keep this comment and let [1] to remove it.","commit_id":"5737fee5c45afbc86ad912847a04eaf9c925b003"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"a1e00aa8ffee784256fb3248f6fc73c829e9db8c","unresolved":false,"context_lines":[{"line_number":422,"context_line":""},{"line_number":423,"context_line":"    def register_chassis(self):"},{"line_number":424,"context_line":"        chassis \u003d self.nb_api.get_chassis(self.chassis_name)"},{"line_number":425,"context_line":"        # TODO(gsagie) Support tunnel type change here ?"},{"line_number":426,"context_line":"        if chassis is None:"},{"line_number":427,"context_line":"            self.nb_api.add_chassis(self.chassis_name,"},{"line_number":428,"context_line":"                                    self.ip,"}],"source_content_type":"text/x-python","patch_set":1,"id":"da6895a0_7fb71586","line":425,"range":{"start_line":425,"start_character":8,"end_line":425,"end_character":56},"in_reply_to":"da6895a0_4fc0037d","updated":"2016-10-27 07:09:35.000000000","message":"ok.","commit_id":"5737fee5c45afbc86ad912847a04eaf9c925b003"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"2172a5f3b0b5fe7a52b687d2b1881a44c79b64d8","unresolved":false,"context_lines":[{"line_number":429,"context_line":"                                    self.tunnel_type)"},{"line_number":430,"context_line":"        else:"},{"line_number":431,"context_line":"            if cfg.CONF.df.enable_virtual_tunnel_port:"},{"line_number":432,"context_line":"                if self.tunnel_type !\u003d chassis.get_encap_type():"},{"line_number":433,"context_line":"                    # There are 2 cases that needs update tunnel type in"},{"line_number":434,"context_line":"                    # chassis. 1) User changes tunnel types in conf file"},{"line_number":435,"context_line":"                    # 2) An old controller support only one type tunnel switch"}],"source_content_type":"text/x-python","patch_set":1,"id":"da6895a0_0a0602ce","line":432,"range":{"start_line":432,"start_character":47,"end_line":432,"end_character":61},"updated":"2016-10-24 08:37:05.000000000","message":"get_tunnel_types? We can add another similar method in chassis and finally (after one release cycle?) remove the old one.","commit_id":"5737fee5c45afbc86ad912847a04eaf9c925b003"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"2d64db3bf4369cd29058450ec50f2337b92f9b86","unresolved":false,"context_lines":[{"line_number":429,"context_line":"                                    self.tunnel_type)"},{"line_number":430,"context_line":"        else:"},{"line_number":431,"context_line":"            if cfg.CONF.df.enable_virtual_tunnel_port:"},{"line_number":432,"context_line":"                if self.tunnel_type !\u003d chassis.get_encap_type():"},{"line_number":433,"context_line":"                    # There are 2 cases that needs update tunnel type in"},{"line_number":434,"context_line":"                    # chassis. 1) User changes tunnel types in conf file"},{"line_number":435,"context_line":"                    # 2) An old controller support only one type tunnel switch"}],"source_content_type":"text/x-python","patch_set":1,"id":"da6895a0_8fedbbf1","line":432,"range":{"start_line":432,"start_character":47,"end_line":432,"end_character":61},"in_reply_to":"da6895a0_0a0602ce","updated":"2016-10-24 13:16:43.000000000","message":"Since it is an inner method that user won\u0027t see, I think maybe we can just rename the method. But I would change it in separate patch.  I think it is good to just keep this patch one purpose: create/delete virtual tunnel port(when enable_virtual_tunnel_port). \n\nWhat\u0027s your opinion?","commit_id":"5737fee5c45afbc86ad912847a04eaf9c925b003"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"a1e00aa8ffee784256fb3248f6fc73c829e9db8c","unresolved":false,"context_lines":[{"line_number":429,"context_line":"                                    self.tunnel_type)"},{"line_number":430,"context_line":"        else:"},{"line_number":431,"context_line":"            if cfg.CONF.df.enable_virtual_tunnel_port:"},{"line_number":432,"context_line":"                if self.tunnel_type !\u003d chassis.get_encap_type():"},{"line_number":433,"context_line":"                    # There are 2 cases that needs update tunnel type in"},{"line_number":434,"context_line":"                    # chassis. 1) User changes tunnel types in conf file"},{"line_number":435,"context_line":"                    # 2) An old controller support only one type tunnel switch"}],"source_content_type":"text/x-python","patch_set":1,"id":"da6895a0_dfaca137","line":432,"range":{"start_line":432,"start_character":47,"end_line":432,"end_character":61},"in_reply_to":"da6895a0_8fedbbf1","updated":"2016-10-27 07:09:35.000000000","message":"ok","commit_id":"5737fee5c45afbc86ad912847a04eaf9c925b003"},{"author":{"_account_id":20287,"name":"hujie","email":"mike.hu@huawei.com","username":"hujie"},"change_message_id":"7015d91d2f6250e5491b92636e166b7c1fc0a225","unresolved":false,"context_lines":[{"line_number":444,"context_line":"                if tunnel_port.get_tunnel_type() not in self.tunnel_type:"},{"line_number":445,"context_line":"                    self.vswitch_api.delete_port(tunnel_port)"},{"line_number":446,"context_line":""},{"line_number":447,"context_line":"            for t in self.tunnel_type:"},{"line_number":448,"context_line":"                # The customized ovs idl will ingore the command if the port"},{"line_number":449,"context_line":"                # already exists."},{"line_number":450,"context_line":"                self.vswitch_api.add_virtual_tunnel_port(t)"},{"line_number":451,"context_line":""},{"line_number":452,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":1,"id":"da6895a0_966deb06","line":449,"range":{"start_line":447,"start_character":12,"end_line":449,"end_character":33},"updated":"2016-10-23 14:07:06.000000000","message":"why not filter the unwanted tunnel port here instead of in vswitch_api?","commit_id":"5737fee5c45afbc86ad912847a04eaf9c925b003"},{"author":{"_account_id":20287,"name":"hujie","email":"mike.hu@huawei.com","username":"hujie"},"change_message_id":"d641956d18c49c0d154a584be1d5c7cdc1cabead","unresolved":false,"context_lines":[{"line_number":444,"context_line":"                if tunnel_port.get_tunnel_type() not in self.tunnel_type:"},{"line_number":445,"context_line":"                    self.vswitch_api.delete_port(tunnel_port)"},{"line_number":446,"context_line":""},{"line_number":447,"context_line":"            for t in self.tunnel_type:"},{"line_number":448,"context_line":"                # The customized ovs idl will ingore the command if the port"},{"line_number":449,"context_line":"                # already exists."},{"line_number":450,"context_line":"                self.vswitch_api.add_virtual_tunnel_port(t)"},{"line_number":451,"context_line":""},{"line_number":452,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":1,"id":"da6895a0_caf88f4c","line":449,"range":{"start_line":447,"start_character":12,"end_line":449,"end_character":33},"in_reply_to":"da6895a0_111e4563","updated":"2016-10-24 03:33:49.000000000","message":"I just saw this code in your patch:\nport \u003d idlutils.row_by_value(self.api.idl, \u0027Port\u0027, \u0027name\u0027,\n                                     self.port, None)\nif port:\n   return\nyou add a additional search to verify the port exist, indeed, this is a nit issue, I just want to hear your thought:)","commit_id":"5737fee5c45afbc86ad912847a04eaf9c925b003"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"0ff633ad5e4fbf4fde4a3239f3220f434bafc696","unresolved":false,"context_lines":[{"line_number":444,"context_line":"                if tunnel_port.get_tunnel_type() not in self.tunnel_type:"},{"line_number":445,"context_line":"                    self.vswitch_api.delete_port(tunnel_port)"},{"line_number":446,"context_line":""},{"line_number":447,"context_line":"            for t in self.tunnel_type:"},{"line_number":448,"context_line":"                # The customized ovs idl will ingore the command if the port"},{"line_number":449,"context_line":"                # already exists."},{"line_number":450,"context_line":"                self.vswitch_api.add_virtual_tunnel_port(t)"},{"line_number":451,"context_line":""},{"line_number":452,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":1,"id":"da6895a0_111e4563","line":449,"range":{"start_line":447,"start_character":12,"end_line":449,"end_character":33},"in_reply_to":"da6895a0_966deb06","updated":"2016-10-23 14:44:55.000000000","message":"The benefit of this way is\n1) less code, I don\u0027t have to check which tunnel type already has virtual tunnel port created.\n2) make the controller code stateless(simple to read). In any case, df controller just needs to delete the stale tunnel port, and add the tunnel port in conf file.\n3) Make code more robust. I would like to see add method will not report exception just because the port has already been added. Or, delete method will not report exception just because the port has already been deleted. It should just gracefully return. Since the add method has this capability, I can just use it this way.\n\nSo, unless you have a strong reason to filter port here in df-controller, I will keep the code as it is.","commit_id":"5737fee5c45afbc86ad912847a04eaf9c925b003"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"1dbc124083fad9e53a7da247ff6236761d973221","unresolved":false,"context_lines":[{"line_number":444,"context_line":"                if tunnel_port.get_tunnel_type() not in self.tunnel_type:"},{"line_number":445,"context_line":"                    self.vswitch_api.delete_port(tunnel_port)"},{"line_number":446,"context_line":""},{"line_number":447,"context_line":"            for t in self.tunnel_type:"},{"line_number":448,"context_line":"                # The customized ovs idl will ingore the command if the port"},{"line_number":449,"context_line":"                # already exists."},{"line_number":450,"context_line":"                self.vswitch_api.add_virtual_tunnel_port(t)"},{"line_number":451,"context_line":""},{"line_number":452,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":1,"id":"da6895a0_552424ae","line":449,"range":{"start_line":447,"start_character":12,"end_line":449,"end_character":33},"in_reply_to":"da6895a0_caf88f4c","updated":"2016-10-24 03:46:35.000000000","message":"Yeah, I added that check. It is a common check with may_exist in the command. I prefer this way, which I think make the logic simple.","commit_id":"5737fee5c45afbc86ad912847a04eaf9c925b003"},{"author":{"_account_id":20287,"name":"hujie","email":"mike.hu@huawei.com","username":"hujie"},"change_message_id":"e952e2c3b860fc5f5dd6dcd7bc86e4b6f893d30e","unresolved":false,"context_lines":[{"line_number":431,"context_line":"                                    self.tunnel_types)"},{"line_number":432,"context_line":"        else:"},{"line_number":433,"context_line":"            if cfg.CONF.df.enable_virtual_tunnel_port:"},{"line_number":434,"context_line":"                if self.tunnel_type !\u003d chassis.get_encap_type():"},{"line_number":435,"context_line":"                    # There are 2 cases that needs update tunnel type in"},{"line_number":436,"context_line":"                    # chassis. 1) User changes tunnel types in conf file"},{"line_number":437,"context_line":"                    # 2) An old controller support only one type tunnel switch"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba5da102_ac50d05f","line":434,"range":{"start_line":434,"start_character":24,"end_line":434,"end_character":35},"updated":"2016-10-29 02:33:43.000000000","message":"miss \"s\"","commit_id":"cae97c53a78f23ddcbbe9c4f6f96f9dd13bc0f95"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"f64b4fba1a2bae7c8a35b7758b1a12d160e247aa","unresolved":false,"context_lines":[{"line_number":431,"context_line":"                                    self.tunnel_types)"},{"line_number":432,"context_line":"        else:"},{"line_number":433,"context_line":"            if cfg.CONF.df.enable_virtual_tunnel_port:"},{"line_number":434,"context_line":"                if self.tunnel_type !\u003d chassis.get_encap_type():"},{"line_number":435,"context_line":"                    # There are 2 cases that needs update tunnel type in"},{"line_number":436,"context_line":"                    # chassis. 1) User changes tunnel types in conf file"},{"line_number":437,"context_line":"                    # 2) An old controller support only one type tunnel switch"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba5da102_acac5036","line":434,"range":{"start_line":434,"start_character":24,"end_line":434,"end_character":35},"in_reply_to":"ba5da102_ac50d05f","updated":"2016-10-29 03:15:47.000000000","message":"Done","commit_id":"cae97c53a78f23ddcbbe9c4f6f96f9dd13bc0f95"},{"author":{"_account_id":22060,"name":"jingting","email":"kangjingting@huawei.com","username":"jingting"},"change_message_id":"56133c044890f3f36f0a504c52dcbed6d7817d75","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        self.db_store \u003d db_store.DbStore()"},{"line_number":60,"context_line":"        self.chassis_name \u003d chassis_name"},{"line_number":61,"context_line":"        self.ip \u003d cfg.CONF.df.local_ip"},{"line_number":62,"context_line":"        if cfg.CONF.df.enable_virtual_tunnel_port:"},{"line_number":63,"context_line":"            # Virtual tunnel port support multiple tunnel types together"},{"line_number":64,"context_line":"            self.tunnel_types \u003d cfg.CONF.df.tunnel_types"},{"line_number":65,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a629dbe_b716a8a5","line":62,"range":{"start_line":62,"start_character":11,"end_line":62,"end_character":49},"updated":"2016-11-07 09:04:50.000000000","message":"would you consider add this config in config file, so as to we can choose either, or it will be default in the future?","commit_id":"7325384576d7d7d18cf6cd89e2938448e3490ce4"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"53372174181c984b969d31515ac1242d411a8ece","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        self.db_store \u003d db_store.DbStore()"},{"line_number":60,"context_line":"        self.chassis_name \u003d chassis_name"},{"line_number":61,"context_line":"        self.ip \u003d cfg.CONF.df.local_ip"},{"line_number":62,"context_line":"        if cfg.CONF.df.enable_virtual_tunnel_port:"},{"line_number":63,"context_line":"            # Virtual tunnel port support multiple tunnel types together"},{"line_number":64,"context_line":"            self.tunnel_types \u003d cfg.CONF.df.tunnel_types"},{"line_number":65,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a629dbe_55b43bf1","line":62,"range":{"start_line":62,"start_character":11,"end_line":62,"end_character":49},"in_reply_to":"9a629dbe_b716a8a5","updated":"2016-11-08 03:31:58.000000000","message":"Since we are using oslo config generator, it will be in config file by default. However, I would remove this config in further work and just use enable_virtual_tunnel_port\u003dTrue case.","commit_id":"7325384576d7d7d18cf6cd89e2938448e3490ce4"},{"author":{"_account_id":9044,"name":"Will","email":"wangjian.ika@bytedance.com","username":"Will"},"change_message_id":"e64169b2fe468ba64ae45e1710cb2febabd1aef7","unresolved":false,"context_lines":[{"line_number":443,"context_line":""},{"line_number":444,"context_line":"    def register_chassis(self):"},{"line_number":445,"context_line":"        chassis \u003d self.nb_api.get_chassis(self.chassis_name)"},{"line_number":446,"context_line":"        # TODO(gsagie) Support tunnel type change here ?"},{"line_number":447,"context_line":"        if chassis is None:"},{"line_number":448,"context_line":"            self.nb_api.add_chassis(self.chassis_name,"},{"line_number":449,"context_line":"                                    self.ip,"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a629dbe_f488d624","line":446,"range":{"start_line":446,"start_character":7,"end_line":446,"end_character":56},"updated":"2016-11-08 15:15:24.000000000","message":"need to remove it ?","commit_id":"7325384576d7d7d18cf6cd89e2938448e3490ce4"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"12eb83cf13042f6d858db07aacd118d6c098c17d","unresolved":false,"context_lines":[{"line_number":443,"context_line":""},{"line_number":444,"context_line":"    def register_chassis(self):"},{"line_number":445,"context_line":"        chassis \u003d self.nb_api.get_chassis(self.chassis_name)"},{"line_number":446,"context_line":"        # TODO(gsagie) Support tunnel type change here ?"},{"line_number":447,"context_line":"        if chassis is None:"},{"line_number":448,"context_line":"            self.nb_api.add_chassis(self.chassis_name,"},{"line_number":449,"context_line":"                                    self.ip,"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a629dbe_b59d1268","line":446,"range":{"start_line":446,"start_character":7,"end_line":446,"end_character":56},"in_reply_to":"9a629dbe_64eebced","updated":"2016-11-10 13:42:59.000000000","message":"I will let @WangJian to remove it at https://review.openstack.org/#/c/365077/\n\nAs, this patch can\u0027t say it can remove this comment confidently. When enable_virtual_tunnel_port is False, the chassis still can\u0027t be updated.","commit_id":"7325384576d7d7d18cf6cd89e2938448e3490ce4"},{"author":{"_account_id":9044,"name":"Will","email":"wangjian.ika@bytedance.com","username":"Will"},"change_message_id":"f902aded2ec50ec0ecd60cedc6480c436f7f7630","unresolved":false,"context_lines":[{"line_number":443,"context_line":""},{"line_number":444,"context_line":"    def register_chassis(self):"},{"line_number":445,"context_line":"        chassis \u003d self.nb_api.get_chassis(self.chassis_name)"},{"line_number":446,"context_line":"        # TODO(gsagie) Support tunnel type change here ?"},{"line_number":447,"context_line":"        if chassis is None:"},{"line_number":448,"context_line":"            self.nb_api.add_chassis(self.chassis_name,"},{"line_number":449,"context_line":"                                    self.ip,"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a629dbe_2cf8c2c2","line":446,"range":{"start_line":446,"start_character":7,"end_line":446,"end_character":56},"in_reply_to":"9a629dbe_b59d1268","updated":"2016-11-11 02:00:48.000000000","message":"it has been removed in my patch","commit_id":"7325384576d7d7d18cf6cd89e2938448e3490ce4"},{"author":{"_account_id":20287,"name":"hujie","email":"mike.hu@huawei.com","username":"hujie"},"change_message_id":"87435fe57bc5964608a3600d8fa09d2c11cba1ea","unresolved":false,"context_lines":[{"line_number":443,"context_line":""},{"line_number":444,"context_line":"    def register_chassis(self):"},{"line_number":445,"context_line":"        chassis \u003d self.nb_api.get_chassis(self.chassis_name)"},{"line_number":446,"context_line":"        # TODO(gsagie) Support tunnel type change here ?"},{"line_number":447,"context_line":"        if chassis is None:"},{"line_number":448,"context_line":"            self.nb_api.add_chassis(self.chassis_name,"},{"line_number":449,"context_line":"                                    self.ip,"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a629dbe_64eebced","line":446,"range":{"start_line":446,"start_character":7,"end_line":446,"end_character":56},"in_reply_to":"9a629dbe_f488d624","updated":"2016-11-09 02:34:36.000000000","message":"+1","commit_id":"7325384576d7d7d18cf6cd89e2938448e3490ce4"},{"author":{"_account_id":9044,"name":"Will","email":"wangjian.ika@bytedance.com","username":"Will"},"change_message_id":"e64169b2fe468ba64ae45e1710cb2febabd1aef7","unresolved":false,"context_lines":[{"line_number":455,"context_line":"                    # chassis. 1) User changes tunnel types in conf file"},{"line_number":456,"context_line":"                    # 2) An old controller support only one type tunnel switch"},{"line_number":457,"context_line":"                    # to support virtual tunnel port."},{"line_number":458,"context_line":"                    self.nb_api.update_chassis(self.chassis_name,"},{"line_number":459,"context_line":"                                               tunnel_type\u003dself.tunnel_types)"},{"line_number":460,"context_line":""},{"line_number":461,"context_line":"    def create_tunnels(self):"},{"line_number":462,"context_line":"        if cfg.CONF.df.enable_virtual_tunnel_port:"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a629dbe_94cdda5f","line":459,"range":{"start_line":458,"start_character":0,"end_line":459,"end_character":77},"updated":"2016-11-08 15:15:24.000000000","message":"what if the old one is [geneve, vxlan] and the new one is [vxlan, geneve] ? Maybe you can use set instead of list","commit_id":"7325384576d7d7d18cf6cd89e2938448e3490ce4"},{"author":{"_account_id":9044,"name":"Will","email":"wangjian.ika@bytedance.com","username":"Will"},"change_message_id":"f902aded2ec50ec0ecd60cedc6480c436f7f7630","unresolved":false,"context_lines":[{"line_number":455,"context_line":"                    # chassis. 1) User changes tunnel types in conf file"},{"line_number":456,"context_line":"                    # 2) An old controller support only one type tunnel switch"},{"line_number":457,"context_line":"                    # to support virtual tunnel port."},{"line_number":458,"context_line":"                    self.nb_api.update_chassis(self.chassis_name,"},{"line_number":459,"context_line":"                                               tunnel_type\u003dself.tunnel_types)"},{"line_number":460,"context_line":""},{"line_number":461,"context_line":"    def create_tunnels(self):"},{"line_number":462,"context_line":"        if cfg.CONF.df.enable_virtual_tunnel_port:"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a629dbe_ec116a05","line":459,"range":{"start_line":458,"start_character":0,"end_line":459,"end_character":77},"in_reply_to":"9a629dbe_1b06ed1c","updated":"2016-11-11 02:00:48.000000000","message":"why not do it like this:\n\ntype \u003d chassis.get_encap_type()\nif isinstance(\u0027123\u0027, str):\n    type \u003d [type]\nif set(self.tunnel_types) !\u003d set(type):\n    xxx","commit_id":"7325384576d7d7d18cf6cd89e2938448e3490ce4"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"12eb83cf13042f6d858db07aacd118d6c098c17d","unresolved":false,"context_lines":[{"line_number":455,"context_line":"                    # chassis. 1) User changes tunnel types in conf file"},{"line_number":456,"context_line":"                    # 2) An old controller support only one type tunnel switch"},{"line_number":457,"context_line":"                    # to support virtual tunnel port."},{"line_number":458,"context_line":"                    self.nb_api.update_chassis(self.chassis_name,"},{"line_number":459,"context_line":"                                               tunnel_type\u003dself.tunnel_types)"},{"line_number":460,"context_line":""},{"line_number":461,"context_line":"    def create_tunnels(self):"},{"line_number":462,"context_line":"        if cfg.CONF.df.enable_virtual_tunnel_port:"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a629dbe_d5d606f0","line":459,"range":{"start_line":458,"start_character":0,"end_line":459,"end_character":77},"in_reply_to":"9a629dbe_84bbd0e4","updated":"2016-11-10 13:42:59.000000000","message":"Yeah, in virtual tunnel port, it is a list(or maybe set in next patch)","commit_id":"7325384576d7d7d18cf6cd89e2938448e3490ce4"},{"author":{"_account_id":20287,"name":"hujie","email":"mike.hu@huawei.com","username":"hujie"},"change_message_id":"87435fe57bc5964608a3600d8fa09d2c11cba1ea","unresolved":false,"context_lines":[{"line_number":455,"context_line":"                    # chassis. 1) User changes tunnel types in conf file"},{"line_number":456,"context_line":"                    # 2) An old controller support only one type tunnel switch"},{"line_number":457,"context_line":"                    # to support virtual tunnel port."},{"line_number":458,"context_line":"                    self.nb_api.update_chassis(self.chassis_name,"},{"line_number":459,"context_line":"                                               tunnel_type\u003dself.tunnel_types)"},{"line_number":460,"context_line":""},{"line_number":461,"context_line":"    def create_tunnels(self):"},{"line_number":462,"context_line":"        if cfg.CONF.df.enable_virtual_tunnel_port:"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a629dbe_84bbd0e4","line":459,"range":{"start_line":458,"start_character":0,"end_line":459,"end_character":77},"in_reply_to":"9a629dbe_94cdda5f","updated":"2016-11-09 02:34:36.000000000","message":"Is tunnel_types a List, not a String?","commit_id":"7325384576d7d7d18cf6cd89e2938448e3490ce4"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"12eb83cf13042f6d858db07aacd118d6c098c17d","unresolved":false,"context_lines":[{"line_number":455,"context_line":"                    # chassis. 1) User changes tunnel types in conf file"},{"line_number":456,"context_line":"                    # 2) An old controller support only one type tunnel switch"},{"line_number":457,"context_line":"                    # to support virtual tunnel port."},{"line_number":458,"context_line":"                    self.nb_api.update_chassis(self.chassis_name,"},{"line_number":459,"context_line":"                                               tunnel_type\u003dself.tunnel_types)"},{"line_number":460,"context_line":""},{"line_number":461,"context_line":"    def create_tunnels(self):"},{"line_number":462,"context_line":"        if cfg.CONF.df.enable_virtual_tunnel_port:"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a629dbe_55eaf6ac","line":459,"range":{"start_line":458,"start_character":0,"end_line":459,"end_character":77},"in_reply_to":"9a629dbe_94cdda5f","updated":"2016-11-10 13:42:59.000000000","message":"good point!","commit_id":"7325384576d7d7d18cf6cd89e2938448e3490ce4"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"94a227058ac5e17c7c5c183700ff1a81420d7e6e","unresolved":false,"context_lines":[{"line_number":455,"context_line":"                    # chassis. 1) User changes tunnel types in conf file"},{"line_number":456,"context_line":"                    # 2) An old controller support only one type tunnel switch"},{"line_number":457,"context_line":"                    # to support virtual tunnel port."},{"line_number":458,"context_line":"                    self.nb_api.update_chassis(self.chassis_name,"},{"line_number":459,"context_line":"                                               tunnel_type\u003dself.tunnel_types)"},{"line_number":460,"context_line":""},{"line_number":461,"context_line":"    def create_tunnels(self):"},{"line_number":462,"context_line":"        if cfg.CONF.df.enable_virtual_tunnel_port:"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a629dbe_1b06ed1c","line":459,"range":{"start_line":458,"start_character":0,"end_line":459,"end_character":77},"in_reply_to":"9a629dbe_d5d606f0","updated":"2016-11-10 14:04:10.000000000","message":"The object is stored as json in nb db, as far as I know, json doesn\u0027t have set notion. So at last it will be list(array in json).","commit_id":"7325384576d7d7d18cf6cd89e2938448e3490ce4"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"e0f8ab58b94f04d1e2b9da070a36f2c3d39385a6","unresolved":false,"context_lines":[{"line_number":455,"context_line":"                    # chassis. 1) User changes tunnel types in conf file"},{"line_number":456,"context_line":"                    # 2) An old controller support only one type tunnel switch"},{"line_number":457,"context_line":"                    # to support virtual tunnel port."},{"line_number":458,"context_line":"                    self.nb_api.update_chassis(self.chassis_name,"},{"line_number":459,"context_line":"                                               tunnel_type\u003dself.tunnel_types)"},{"line_number":460,"context_line":""},{"line_number":461,"context_line":"    def create_tunnels(self):"},{"line_number":462,"context_line":"        if cfg.CONF.df.enable_virtual_tunnel_port:"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a629dbe_e60a3d78","line":459,"range":{"start_line":458,"start_character":0,"end_line":459,"end_character":77},"in_reply_to":"9a629dbe_ec116a05","updated":"2016-11-12 04:42:27.000000000","message":"I get your point about comparing list with string, (am I right?) Will address it.","commit_id":"7325384576d7d7d18cf6cd89e2938448e3490ce4"}],"dragonflow/ovsdb/commands.py":[{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"4677395f249dd311306b5d18f3336b578bcc5737","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        super(AddVirtualTunnelPort, self).__init__(api)"},{"line_number":94,"context_line":"        self.tunnel_type \u003d tunnel_type"},{"line_number":95,"context_line":"        self.integration_bridge \u003d cfg.CONF.df.integration_bridge"},{"line_number":96,"context_line":"        self.port \u003d tunnel_type + \"-tunnel-port\""},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def run_idl(self, txn):"},{"line_number":99,"context_line":"        bridge \u003d idlutils.row_by_value(self.api.idl, \u0027Bridge\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a629dbe_15021a0a","line":96,"range":{"start_line":96,"start_character":35,"end_line":96,"end_character":47},"updated":"2016-11-11 08:36:43.000000000","message":"Doesn\u0027t this make the name too long? Maybe make it shorter, e.g. \u0027-vtp\u0027?","commit_id":"a3c25758931f7474f0b3f2466d1d14ccc3f72490"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"b0ecf9a462f168c95ebaba413c9a17aaadb2ffa4","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        super(AddVirtualTunnelPort, self).__init__(api)"},{"line_number":94,"context_line":"        self.tunnel_type \u003d tunnel_type"},{"line_number":95,"context_line":"        self.integration_bridge \u003d cfg.CONF.df.integration_bridge"},{"line_number":96,"context_line":"        self.port \u003d tunnel_type + \"-tunnel-port\""},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def run_idl(self, txn):"},{"line_number":99,"context_line":"        bridge \u003d idlutils.row_by_value(self.api.idl, \u0027Bridge\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a629dbe_e67a3d76","line":96,"range":{"start_line":96,"start_character":35,"end_line":96,"end_character":47},"in_reply_to":"9a629dbe_15021a0a","updated":"2016-11-12 04:42:35.000000000","message":"Done","commit_id":"a3c25758931f7474f0b3f2466d1d14ccc3f72490"}],"dragonflow/tests/fullstack/test_ovsdb_monitor.py":[{"author":{"_account_id":20287,"name":"hujie","email":"mike.hu@huawei.com","username":"hujie"},"change_message_id":"99ba252d0b2b8e905b6590eaa2dd87275e5c0b74","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    def tearDown(self):"},{"line_number":28,"context_line":"        super(TestOvsdbMonitor, self).tearDown()"},{"line_number":29,"context_line":"        for tunnel_port in self.vswitch_api.get_virtual_tunnel_ports():"},{"line_number":30,"context_line":"            self.vswitch_api.delete_port(tunnel_port)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def _check_wanted_vm_online(self, update, mac):"},{"line_number":33,"context_line":"        if update.table !\u003d \"ovsinterface\":"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a629dbe_7a687588","line":30,"range":{"start_line":29,"start_character":8,"end_line":30,"end_character":53},"updated":"2016-11-13 07:51:58.000000000","message":"pls move this into your own test case, otherwise the other test case will be forced to run the code.","commit_id":"c29471b2120431507b2cc3ef507ebf43eeef42b1"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"923bff702a811e53fafcffff0c275bf0731f97eb","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    def tearDown(self):"},{"line_number":28,"context_line":"        super(TestOvsdbMonitor, self).tearDown()"},{"line_number":29,"context_line":"        for tunnel_port in self.vswitch_api.get_virtual_tunnel_ports():"},{"line_number":30,"context_line":"            self.vswitch_api.delete_port(tunnel_port)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def _check_wanted_vm_online(self, update, mac):"},{"line_number":33,"context_line":"        if update.table !\u003d \"ovsinterface\":"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a629dbe_aaa9d27d","line":30,"range":{"start_line":29,"start_character":8,"end_line":30,"end_character":53},"in_reply_to":"9a629dbe_7a687588","updated":"2016-11-14 08:04:03.000000000","message":"Done","commit_id":"c29471b2120431507b2cc3ef507ebf43eeef42b1"}]}
