)]}'
{"dragonflow/controller/l3_proactive_app.py":[{"author":{"_account_id":18347,"name":"Itamar Ofek","email":"itamofek@netscape.net","username":"itamaro"},"change_message_id":"9bfce772aa4002ace0e25440535bc1e21b5e220c","unresolved":false,"context_lines":[{"line_number":256,"context_line":"                if port_ip !\u003d route[1]:"},{"line_number":257,"context_line":"                    continue"},{"line_number":258,"context_line":"                route_dict \u003d dict(zip([\u0027destination\u0027, \u0027nexthop\u0027], route))"},{"line_number":259,"context_line":"                self._delete_router_route(router, route_dict)"},{"line_number":260,"context_line":"                self._del_from_route_cache(ROUTE_ADDED, router_id, route_dict)"},{"line_number":261,"context_line":"                self._add_to_route_cache(ROUTE_TO_ADD, router_id, route_dict)"},{"line_number":262,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a461143_a595a933","line":259,"range":{"start_line":259,"start_character":21,"end_line":259,"end_character":41},"updated":"2017-01-31 11:33:22.000000000","message":"Both error discovered by looking at DF-controler run log.","commit_id":"914512e620d834ae86203b4bd4a798d9e0d4faed"},{"author":{"_account_id":21007,"name":"yuan wei","email":"wei.yuan@huawei.com","username":"yuanwei"},"change_message_id":"33a18bfb018b2d719ef55ba771a95a85899b3481","unresolved":false,"context_lines":[{"line_number":282,"context_line":"                if port_ip !\u003d route[1]:"},{"line_number":283,"context_line":"                    continue"},{"line_number":284,"context_line":"                route_dict \u003d dict(zip([\u0027destination\u0027, \u0027nexthop\u0027], route))"},{"line_number":285,"context_line":"                added \u003d self._add_router_route(router, route_dict)"},{"line_number":286,"context_line":"                if added:"},{"line_number":287,"context_line":"                    self._add_to_route_cache(ROUTE_ADDED, router_id,"},{"line_number":288,"context_line":"                                             route_dict)"}],"source_content_type":"text/x-python","patch_set":15,"id":"da36d5c6_b594cbe8","line":285,"updated":"2017-02-18 07:45:12.000000000","message":"Maybe to call _add_route_process instead of _add_router_route is a more suitable fix, since _add_router_route has no return and it will handle the route cache that is not needed there.","commit_id":"5b1f4d638a1b1219e9a9af2a7385c2fdb68049cb"},{"author":{"_account_id":21007,"name":"yuan wei","email":"wei.yuan@huawei.com","username":"yuanwei"},"change_message_id":"75c078077adee305861f28969605ecda3f881d8d","unresolved":false,"context_lines":[{"line_number":282,"context_line":"                if port_ip !\u003d route[1]:"},{"line_number":283,"context_line":"                    continue"},{"line_number":284,"context_line":"                route_dict \u003d dict(zip([\u0027destination\u0027, \u0027nexthop\u0027], route))"},{"line_number":285,"context_line":"                added \u003d self._add_router_route(router, route_dict)"},{"line_number":286,"context_line":"                if added:"},{"line_number":287,"context_line":"                    self._add_to_route_cache(ROUTE_ADDED, router_id,"},{"line_number":288,"context_line":"                                             route_dict)"}],"source_content_type":"text/x-python","patch_set":15,"id":"da36d5c6_b1f93250","line":285,"in_reply_to":"da36d5c6_77adf230","updated":"2017-02-20 02:42:08.000000000","message":"OK, that seems sensible","commit_id":"5b1f4d638a1b1219e9a9af2a7385c2fdb68049cb"},{"author":{"_account_id":18347,"name":"Itamar Ofek","email":"itamofek@netscape.net","username":"itamaro"},"change_message_id":"f00f12a22264762c5ecbb7e3c0f2dd7df7326f58","unresolved":false,"context_lines":[{"line_number":282,"context_line":"                if port_ip !\u003d route[1]:"},{"line_number":283,"context_line":"                    continue"},{"line_number":284,"context_line":"                route_dict \u003d dict(zip([\u0027destination\u0027, \u0027nexthop\u0027], route))"},{"line_number":285,"context_line":"                added \u003d self._add_router_route(router, route_dict)"},{"line_number":286,"context_line":"                if added:"},{"line_number":287,"context_line":"                    self._add_to_route_cache(ROUTE_ADDED, router_id,"},{"line_number":288,"context_line":"                                             route_dict)"}],"source_content_type":"text/x-python","patch_set":15,"id":"da36d5c6_77adf230","line":285,"in_reply_to":"da36d5c6_b594cbe8","updated":"2017-02-19 08:41:39.000000000","message":"This patch only fixes typos, to enable orignal code to work.\nI think your should be provided and tested in a new patch.","commit_id":"5b1f4d638a1b1219e9a9af2a7385c2fdb68049cb"},{"author":{"_account_id":21007,"name":"yuan wei","email":"wei.yuan@huawei.com","username":"yuanwei"},"change_message_id":"33a18bfb018b2d719ef55ba771a95a85899b3481","unresolved":false,"context_lines":[{"line_number":301,"context_line":"                if port_ip !\u003d route[1]:"},{"line_number":302,"context_line":"                    continue"},{"line_number":303,"context_line":"                route_dict \u003d dict(zip([\u0027destination\u0027, \u0027nexthop\u0027], route))"},{"line_number":304,"context_line":"                self._delete_router_route(router, route_dict)"},{"line_number":305,"context_line":"                self._del_from_route_cache(ROUTE_ADDED, router_id, route_dict)"},{"line_number":306,"context_line":"                self._add_to_route_cache(ROUTE_TO_ADD, router_id, route_dict)"},{"line_number":307,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"da36d5c6_d5993f21","line":304,"updated":"2017-02-18 07:45:12.000000000","message":"I think to call _delete_route_process is more suitable.","commit_id":"5b1f4d638a1b1219e9a9af2a7385c2fdb68049cb"},{"author":{"_account_id":21007,"name":"yuan wei","email":"wei.yuan@huawei.com","username":"yuanwei"},"change_message_id":"75c078077adee305861f28969605ecda3f881d8d","unresolved":false,"context_lines":[{"line_number":301,"context_line":"                if port_ip !\u003d route[1]:"},{"line_number":302,"context_line":"                    continue"},{"line_number":303,"context_line":"                route_dict \u003d dict(zip([\u0027destination\u0027, \u0027nexthop\u0027], route))"},{"line_number":304,"context_line":"                self._delete_router_route(router, route_dict)"},{"line_number":305,"context_line":"                self._del_from_route_cache(ROUTE_ADDED, router_id, route_dict)"},{"line_number":306,"context_line":"                self._add_to_route_cache(ROUTE_TO_ADD, router_id, route_dict)"},{"line_number":307,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"da36d5c6_f199ea20","line":304,"in_reply_to":"da36d5c6_97aa6618","updated":"2017-02-20 02:42:08.000000000","message":"OK","commit_id":"5b1f4d638a1b1219e9a9af2a7385c2fdb68049cb"},{"author":{"_account_id":18347,"name":"Itamar Ofek","email":"itamofek@netscape.net","username":"itamaro"},"change_message_id":"f00f12a22264762c5ecbb7e3c0f2dd7df7326f58","unresolved":false,"context_lines":[{"line_number":301,"context_line":"                if port_ip !\u003d route[1]:"},{"line_number":302,"context_line":"                    continue"},{"line_number":303,"context_line":"                route_dict \u003d dict(zip([\u0027destination\u0027, \u0027nexthop\u0027], route))"},{"line_number":304,"context_line":"                self._delete_router_route(router, route_dict)"},{"line_number":305,"context_line":"                self._del_from_route_cache(ROUTE_ADDED, router_id, route_dict)"},{"line_number":306,"context_line":"                self._add_to_route_cache(ROUTE_TO_ADD, router_id, route_dict)"},{"line_number":307,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"da36d5c6_97aa6618","line":304,"in_reply_to":"da36d5c6_d5993f21","updated":"2017-02-19 08:41:39.000000000","message":"se my comment above","commit_id":"5b1f4d638a1b1219e9a9af2a7385c2fdb68049cb"}],"dragonflow/tests/unit/test_l3_proactive_app.py":[{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"da2e87069432bbabf7dd5935195e03f93ba21087","unresolved":false,"context_lines":[{"line_number":34,"context_line":"            self.app,"},{"line_number":35,"context_line":"            \u0027_add_subnet_send_to_snat\u0027"},{"line_number":36,"context_line":"        )"},{"line_number":37,"context_line":"        routes \u003d [{\"destination\": \"10.100.0.0/16\","},{"line_number":38,"context_line":"                 \"nexthop\": \"10.0.0.6\"}]"},{"line_number":39,"context_line":"        self.router.inner_obj[\u0027routes\u0027] \u003d routes"},{"line_number":40,"context_line":"        self.addCleanup(_add_subnet_send_to_snat.stop)"},{"line_number":41,"context_line":"        _add_subnet_send_to_snat.start()"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa31d9ce_8f5d757b","line":38,"range":{"start_line":37,"start_character":0,"end_line":38,"end_character":40},"updated":"2017-02-13 23:45:56.000000000","message":"pls align the visual indent here, or it will conflict with the E128 check that we are introducing in pep8.\n\nhttps://review.openstack.org/#/c/432900/","commit_id":"a63dba420990f20437920bb194a93c4bf7c61c63"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"da2e87069432bbabf7dd5935195e03f93ba21087","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        self.mock_mod_flow.reset_mock()"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        # add route"},{"line_number":67,"context_line":"        routes \u003d [{\"destination\": \"10.100.0.0/16\","},{"line_number":68,"context_line":"                 \"nexthop\": \"10.0.0.6\"},"},{"line_number":69,"context_line":"                 {\"destination\": \"10.101.0.0/16\","},{"line_number":70,"context_line":"                  \"nexthop\": \"10.0.0.6\"}]"},{"line_number":71,"context_line":"        router_with_route \u003d copy.deepcopy(self.router)"},{"line_number":72,"context_line":"        router_with_route.inner_obj[\u0027routes\u0027] \u003d routes"},{"line_number":73,"context_line":"        router_with_route.inner_obj[\u0027version\u0027] +\u003d 1"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa31d9ce_8fd495bd","line":70,"range":{"start_line":67,"start_character":0,"end_line":70,"end_character":41},"updated":"2017-02-13 23:45:56.000000000","message":"ditto","commit_id":"a63dba420990f20437920bb194a93c4bf7c61c63"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"da2e87069432bbabf7dd5935195e03f93ba21087","unresolved":false,"context_lines":[{"line_number":91,"context_line":""},{"line_number":92,"context_line":"        # delete route"},{"line_number":93,"context_line":"        self.mock_mod_flow.reset_mock()"},{"line_number":94,"context_line":"        self.router.inner_obj[\u0027routes\u0027] \u003d [{\"destination\": \"10.100.0.0/16\","},{"line_number":95,"context_line":"                 \"nexthop\": \"10.0.0.8\"}]"},{"line_number":96,"context_line":"        self.router.inner_obj[\u0027version\u0027] +\u003d 2"},{"line_number":97,"context_line":"        self.controller.delete_lport("},{"line_number":98,"context_line":"                test_app_base.fake_remote_port1.get_id())"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa31d9ce_afddd9e1","line":95,"range":{"start_line":94,"start_character":0,"end_line":95,"end_character":40},"updated":"2017-02-13 23:45:56.000000000","message":"ditto","commit_id":"a63dba420990f20437920bb194a93c4bf7c61c63"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"2b92d664177929b787645edfeedc0dd4122f2c33","unresolved":false,"context_lines":[{"line_number":91,"context_line":""},{"line_number":92,"context_line":"        # delete route"},{"line_number":93,"context_line":"        self.mock_mod_flow.reset_mock()"},{"line_number":94,"context_line":"        self.router.inner_obj[\u0027routes\u0027] \u003d [{\"destination\": \"10.100.0.0/16\","},{"line_number":95,"context_line":"                 \"nexthop\": \"10.0.0.8\"}]"},{"line_number":96,"context_line":"        self.router.inner_obj[\u0027version\u0027] +\u003d 2"},{"line_number":97,"context_line":"        self.controller.delete_lport("},{"line_number":98,"context_line":"                test_app_base.fake_remote_port1.get_id())"}],"source_content_type":"text/x-python","patch_set":14,"id":"fa31d9ce_6eb839c9","line":95,"range":{"start_line":94,"start_character":0,"end_line":95,"end_character":40},"updated":"2017-02-14 06:55:49.000000000","message":"nit: Fix indentation. Keeping as a nit since that patch isn\u0027t in yet either, but it would be great if you could rebase one on the other (Which one comes first is not really important).","commit_id":"8aa55ce6f5363a6ee92d28c450bc27c256c1750d"}]}
