)]}'
{"dragonflow/controller/topology.py":[{"author":{"_account_id":21007,"name":"yuan wei","email":"wei.yuan@huawei.com","username":"yuanwei"},"change_message_id":"e68d35dcbb3ec95dc0abce2c7dd3c1dfcfc7ed01","unresolved":false,"context_lines":[{"line_number":154,"context_line":"        self.ovs_to_lport_mapping[ovs_port_id] \u003d {\u0027lport_id\u0027: lport_id,"},{"line_number":155,"context_line":"                                                  \u0027topic\u0027: topic}"},{"line_number":156,"context_line":"        # In the case when df controller is running and the topic topology has"},{"line_number":157,"context_line":"        # been pulled, a new vm port online will not have record in db_store."},{"line_number":158,"context_line":"        if not self.db_store.get_port(lport_id):"},{"line_number":159,"context_line":"            LOG.info(_LI(\"A local logical port(%s) is online\"), lport)"},{"line_number":160,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba5da102_4b58c98a","line":157,"updated":"2016-11-01 12:22:56.000000000","message":"looks good, this patch will be especially useful if local controller restarted;) But maybe we could use another method to implement it, because we only need to pull remote ports from DF DB here, we could pass a param when calling _pull_tenant_topology_from_db to determine it. Just a suggestion.","commit_id":"fe2648ff7625d98811fd71a1f9db442f74117115"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"09186b5a60058f4f03783ee72a6d613c88edcccd","unresolved":false,"context_lines":[{"line_number":154,"context_line":"        self.ovs_to_lport_mapping[ovs_port_id] \u003d {\u0027lport_id\u0027: lport_id,"},{"line_number":155,"context_line":"                                                  \u0027topic\u0027: topic}"},{"line_number":156,"context_line":"        # In the case when df controller is running and the topic topology has"},{"line_number":157,"context_line":"        # been pulled, a new vm port online will not have record in db_store."},{"line_number":158,"context_line":"        if not self.db_store.get_port(lport_id):"},{"line_number":159,"context_line":"            LOG.info(_LI(\"A local logical port(%s) is online\"), lport)"},{"line_number":160,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba5da102_c432eaa6","line":157,"in_reply_to":"ba5da102_4b58c98a","updated":"2016-11-02 06:51:38.000000000","message":"It is a feasible solution to avoid duplicate download flow. However, I would keep the current solution, as I want to use it in patch [1] to unify the method to sync nb db.\n\n[1] https://review.openstack.org/#/c/385350/","commit_id":"fe2648ff7625d98811fd71a1f9db442f74117115"},{"author":{"_account_id":20287,"name":"hujie","email":"mike.hu@huawei.com","username":"hujie"},"change_message_id":"9d17985f3e9cd21f191d6bea267e21585db9ba4d","unresolved":false,"context_lines":[{"line_number":155,"context_line":"                                                  \u0027topic\u0027: topic}"},{"line_number":156,"context_line":"        # In the case when df controller is running and the topic topology has"},{"line_number":157,"context_line":"        # been pulled, a new vm port online will not have record in db_store."},{"line_number":158,"context_line":"        if not self.db_store.get_port(lport_id):"},{"line_number":159,"context_line":"            LOG.info(_LI(\"A local logical port(%s) is online\"), lport)"},{"line_number":160,"context_line":"            try:"},{"line_number":161,"context_line":"                self.controller.logical_port_created(lport)"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a629dbe_ee49f98c","line":158,"range":{"start_line":158,"start_character":8,"end_line":158,"end_character":48},"updated":"2016-11-08 08:58:15.000000000","message":"after patch [1] was merged, the lport which has no ofport will still be stored in cache, so you could not judge like this.\n\n[1] https://review.openstack.org/#/c/384054/","commit_id":"fe2648ff7625d98811fd71a1f9db442f74117115"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"5e506f961c63e8d816c2459a8795fc76cb49554e","unresolved":false,"context_lines":[{"line_number":155,"context_line":"                                                  \u0027topic\u0027: topic}"},{"line_number":156,"context_line":"        # In the case when df controller is running and the topic topology has"},{"line_number":157,"context_line":"        # been pulled, a new vm port online will not have record in db_store."},{"line_number":158,"context_line":"        if not self.db_store.get_port(lport_id):"},{"line_number":159,"context_line":"            LOG.info(_LI(\"A local logical port(%s) is online\"), lport)"},{"line_number":160,"context_line":"            try:"},{"line_number":161,"context_line":"                self.controller.logical_port_created(lport)"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a629dbe_455c76ed","line":158,"range":{"start_line":158,"start_character":8,"end_line":158,"end_character":48},"in_reply_to":"9a629dbe_ee49f98c","updated":"2016-11-08 13:15:59.000000000","message":"Thanks for pointing out, there might be bigger issue here that I missed out previously. let me think about it more...","commit_id":"fe2648ff7625d98811fd71a1f9db442f74117115"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"a7a7bd8dda658f2e6f5d97c21535a5e8d11e4e2c","unresolved":false,"context_lines":[{"line_number":185,"context_line":"            # controller here again."},{"line_number":186,"context_line":"            LOG.info(_LI(\"A local logical port(%s) is online\"), lport)"},{"line_number":187,"context_line":"            try:"},{"line_number":188,"context_line":"                self.controller.logical_port_created(lport)"},{"line_number":189,"context_line":"            except Exception:"},{"line_number":190,"context_line":"                LOG.exception(_LE(\u0027Failed to process logical port online \u0027"},{"line_number":191,"context_line":"                                  \u0027event: %s\u0027), lport)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a77a97e_9892759e","line":188,"range":{"start_line":188,"start_character":32,"end_line":188,"end_character":52},"updated":"2016-11-16 02:20:20.000000000","message":"does it relate with this bug?","commit_id":"37edb2e5a0d687048e1bb3cfbf6283ef4fe87e54"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"18d03cc1f0d29f88649b1fe16c5f637301a00f56","unresolved":false,"context_lines":[{"line_number":185,"context_line":"            # controller here again."},{"line_number":186,"context_line":"            LOG.info(_LI(\"A local logical port(%s) is online\"), lport)"},{"line_number":187,"context_line":"            try:"},{"line_number":188,"context_line":"                self.controller.logical_port_created(lport)"},{"line_number":189,"context_line":"            except Exception:"},{"line_number":190,"context_line":"                LOG.exception(_LE(\u0027Failed to process logical port online \u0027"},{"line_number":191,"context_line":"                                  \u0027event: %s\u0027), lport)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a77a97e_5392bba0","line":188,"range":{"start_line":188,"start_character":32,"end_line":188,"end_character":52},"in_reply_to":"7a77a97e_9892759e","updated":"2016-11-21 11:18:07.000000000","message":"No, it is not related, will change it.","commit_id":"37edb2e5a0d687048e1bb3cfbf6283ef4fe87e54"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"ea496aea758fd4500632acd28e87b5cde3dd20d8","unresolved":false,"context_lines":[{"line_number":189,"context_line":"            # update it in dragonflow controller."},{"line_number":190,"context_line":"            LOG.info(_LI(\"A local logical port(%s) is online\"), lport)"},{"line_number":191,"context_line":"            try:"},{"line_number":192,"context_line":"                self.controller.logical_port_updated(lport)"},{"line_number":193,"context_line":"            except Exception:"},{"line_number":194,"context_line":"                LOG.exception(_LE(\u0027Failed to process logical port online \u0027"},{"line_number":195,"context_line":"                                  \u0027event: %s\u0027), lport)"}],"source_content_type":"text/x-python","patch_set":14,"id":"3a71b18c_2fab0b8b","line":192,"updated":"2016-12-01 14:00:13.000000000","message":"Note that this means that if applications want to be notified of southbound changes (i.e. changes in OVSDB), they have to register to implement ovs_port_updated, and not get it via local_port_updated.","commit_id":"2dc06c477f4ce811b916441c2d9002256a2a7d39"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"1d03668d22b93f0a8a4b0f349ab922ac9d9011c0","unresolved":false,"context_lines":[{"line_number":189,"context_line":"            # update it in dragonflow controller."},{"line_number":190,"context_line":"            LOG.info(_LI(\"A local logical port(%s) is online\"), lport)"},{"line_number":191,"context_line":"            try:"},{"line_number":192,"context_line":"                self.controller.logical_port_updated(lport)"},{"line_number":193,"context_line":"            except Exception:"},{"line_number":194,"context_line":"                LOG.exception(_LE(\u0027Failed to process logical port online \u0027"},{"line_number":195,"context_line":"                                  \u0027event: %s\u0027), lport)"}],"source_content_type":"text/x-python","patch_set":14,"id":"3a71b18c_ed72dfe4","line":192,"in_reply_to":"3a71b18c_2fab0b8b","updated":"2016-12-01 23:34:24.000000000","message":"You mean we should not use logical_port_updated here, because it is a southbound change here, right? And we should only do topology update here, and let the ovs_port_updated to tell apps to do their updates.\n\nI kind of agree with that. Changes like that can also fix the problem here, but I think it is bigger than bug fix. Maybe we can do it latter.","commit_id":"2dc06c477f4ce811b916441c2d9002256a2a7d39"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"f8f5e251d3ad81f8cc479e7aa8ac804b4bcfb2eb","unresolved":false,"context_lines":[{"line_number":189,"context_line":"            # update it in dragonflow controller."},{"line_number":190,"context_line":"            LOG.info(_LI(\"A local logical port(%s) is online\"), lport)"},{"line_number":191,"context_line":"            try:"},{"line_number":192,"context_line":"                self.controller.logical_port_updated(lport)"},{"line_number":193,"context_line":"            except Exception:"},{"line_number":194,"context_line":"                LOG.exception(_LE(\u0027Failed to process logical port online \u0027"},{"line_number":195,"context_line":"                                  \u0027event: %s\u0027), lport)"}],"source_content_type":"text/x-python","patch_set":14,"id":"3a71b18c_60ffa901","line":192,"in_reply_to":"3a71b18c_ed72dfe4","updated":"2016-12-02 05:19:23.000000000","message":"logcical_port_updated should be called when a southbound port is attached to a northbound port (like here). After that, changes to the southbound should be only notified via ovs_port_updated.\n\nI think this behaviour is correct. This change makes that happen. I just wanted to point it out.","commit_id":"2dc06c477f4ce811b916441c2d9002256a2a7d39"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"ea496aea758fd4500632acd28e87b5cde3dd20d8","unresolved":false,"context_lines":[{"line_number":270,"context_line":""},{"line_number":271,"context_line":"        ports \u003d self.nb_api.get_all_logical_ports(tenant_id)"},{"line_number":272,"context_line":"        for port in ports:"},{"line_number":273,"context_line":"            self.controller.logical_port_updated(port)"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"        routers \u003d self.nb_api.get_routers(tenant_id)"},{"line_number":276,"context_line":"        for router in routers:"}],"source_content_type":"text/x-python","patch_set":14,"id":"3a71b18c_fa646f4a","line":273,"updated":"2016-12-01 14:00:13.000000000","message":"I think I am missing something - How do you verify logical_port_updated isn\u0027t called n^2 times, where n is the number of ports in the new topic?","commit_id":"2dc06c477f4ce811b916441c2d9002256a2a7d39"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"f8f5e251d3ad81f8cc479e7aa8ac804b4bcfb2eb","unresolved":false,"context_lines":[{"line_number":270,"context_line":""},{"line_number":271,"context_line":"        ports \u003d self.nb_api.get_all_logical_ports(tenant_id)"},{"line_number":272,"context_line":"        for port in ports:"},{"line_number":273,"context_line":"            self.controller.logical_port_updated(port)"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"        routers \u003d self.nb_api.get_routers(tenant_id)"},{"line_number":276,"context_line":"        for router in routers:"}],"source_content_type":"text/x-python","patch_set":14,"id":"3a71b18c_60d08954","line":273,"in_reply_to":"3a71b18c_ad362701","updated":"2016-12-02 05:19:23.000000000","message":"Got it. Thanks.","commit_id":"2dc06c477f4ce811b916441c2d9002256a2a7d39"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"1d03668d22b93f0a8a4b0f349ab922ac9d9011c0","unresolved":false,"context_lines":[{"line_number":270,"context_line":""},{"line_number":271,"context_line":"        ports \u003d self.nb_api.get_all_logical_ports(tenant_id)"},{"line_number":272,"context_line":"        for port in ports:"},{"line_number":273,"context_line":"            self.controller.logical_port_updated(port)"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"        routers \u003d self.nb_api.get_routers(tenant_id)"},{"line_number":276,"context_line":"        for router in routers:"}],"source_content_type":"text/x-python","patch_set":14,"id":"3a71b18c_ad362701","line":273,"in_reply_to":"3a71b18c_fa646f4a","updated":"2016-12-01 23:34:24.000000000","message":"Because line 241(_add_to_topic_subscribed) will make sure the _pull_tenant_topology_from_db will only be called when the topic is first found.","commit_id":"2dc06c477f4ce811b916441c2d9002256a2a7d39"}]}
