)]}'
{"dragonflow/tests/unit/test_df_bgp_service.py":[{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"612ddb325ae9ec57602995862ca9001742fd2819","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        self.bgp_service \u003d df_bgp_service.BGPService()"},{"line_number":80,"context_line":"        self.bgp_service.bgp_driver \u003d mock.Mock()"},{"line_number":81,"context_line":"        self.bgp_service.bgp_pulse \u003d LoopingCallByEvent("},{"line_number":82,"context_line":"                self.bgp_service.sync_data_from_nb_db)"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        iter_models \u003d mock.patch(\u0027dragonflow.db.model_framework.iter_models\u0027,"},{"line_number":85,"context_line":"                                 return_value\u003d{bgp.BGPSpeaker, bgp.BGPPeer})"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f013ff3_f0e03c99","line":82,"updated":"2017-05-15 01:49:02.000000000","message":"self.bgp_service.bgp_pulse.start()?","commit_id":"eced4b37ec9db577033a215537a62d0c9e954a2e"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"fab9a71625f1468c0d017762b0fcc440a27a0abc","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        self.bgp_service \u003d df_bgp_service.BGPService()"},{"line_number":80,"context_line":"        self.bgp_service.bgp_driver \u003d mock.Mock()"},{"line_number":81,"context_line":"        self.bgp_service.bgp_pulse \u003d LoopingCallByEvent("},{"line_number":82,"context_line":"                self.bgp_service.sync_data_from_nb_db)"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        iter_models \u003d mock.patch(\u0027dragonflow.db.model_framework.iter_models\u0027,"},{"line_number":85,"context_line":"                                 return_value\u003d{bgp.BGPSpeaker, bgp.BGPPeer})"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f013ff3_36e33c08","line":82,"in_reply_to":"1f013ff3_f0e03c99","updated":"2017-05-15 03:56:58.000000000","message":"This is called as part of bgp_service.start()[1], in line 88.\n\nhttps://github.com/openstack/dragonflow/blob/master/dragonflow/controller/df_bgp_service.py#L62","commit_id":"eced4b37ec9db577033a215537a62d0c9e954a2e"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"1c3444ce1cbc60617cf773fa16871f442777aec2","unresolved":false,"context_lines":[{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        self.bgp_service.bgp_pulse.fire()"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"        self.assertTrue(self.bgp_service.bgp_driver.advertise_route.called)"},{"line_number":149,"context_line":"        self.bgp_service.bgp_driver.advertise_route.assert_called_once_with("},{"line_number":150,"context_line":"            1234, \"10.0.0.0/24\", \"172.24.4.66\")"},{"line_number":151,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1f013ff3_69e68ceb","line":148,"range":{"start_line":148,"start_character":0,"end_line":148,"end_character":75},"updated":"2017-05-14 23:50:55.000000000","message":"I think this can be removed, as line 149 also verifies called.","commit_id":"eced4b37ec9db577033a215537a62d0c9e954a2e"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"fab9a71625f1468c0d017762b0fcc440a27a0abc","unresolved":false,"context_lines":[{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        self.bgp_service.bgp_pulse.fire()"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"        self.assertTrue(self.bgp_service.bgp_driver.advertise_route.called)"},{"line_number":149,"context_line":"        self.bgp_service.bgp_driver.advertise_route.assert_called_once_with("},{"line_number":150,"context_line":"            1234, \"10.0.0.0/24\", \"172.24.4.66\")"},{"line_number":151,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1f013ff3_d6d2d834","line":148,"range":{"start_line":148,"start_character":0,"end_line":148,"end_character":75},"in_reply_to":"1f013ff3_69e68ceb","updated":"2017-05-15 03:56:58.000000000","message":"Will do.","commit_id":"eced4b37ec9db577033a215537a62d0c9e954a2e"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"1c3444ce1cbc60617cf773fa16871f442777aec2","unresolved":false,"context_lines":[{"line_number":151,"context_line":""},{"line_number":152,"context_line":"        self.bgp_service.nb_api.get_all.side_effect \u003d get_all_side_effect"},{"line_number":153,"context_line":"        self.bgp_service.bgp_pulse.fire()"},{"line_number":154,"context_line":"        self.assertTrue(self.bgp_service.bgp_driver.withdraw_route.called)"},{"line_number":155,"context_line":"        self.bgp_service.bgp_driver.withdraw_route.assert_called_once_with("},{"line_number":156,"context_line":"            1234, \"10.0.0.0/24\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f013ff3_49ebd0af","line":154,"range":{"start_line":154,"start_character":0,"end_line":154,"end_character":74},"updated":"2017-05-14 23:50:55.000000000","message":"Same comment here.","commit_id":"eced4b37ec9db577033a215537a62d0c9e954a2e"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"fab9a71625f1468c0d017762b0fcc440a27a0abc","unresolved":false,"context_lines":[{"line_number":151,"context_line":""},{"line_number":152,"context_line":"        self.bgp_service.nb_api.get_all.side_effect \u003d get_all_side_effect"},{"line_number":153,"context_line":"        self.bgp_service.bgp_pulse.fire()"},{"line_number":154,"context_line":"        self.assertTrue(self.bgp_service.bgp_driver.withdraw_route.called)"},{"line_number":155,"context_line":"        self.bgp_service.bgp_driver.withdraw_route.assert_called_once_with("},{"line_number":156,"context_line":"            1234, \"10.0.0.0/24\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f013ff3_b6d74c24","line":154,"range":{"start_line":154,"start_character":0,"end_line":154,"end_character":74},"in_reply_to":"1f013ff3_49ebd0af","updated":"2017-05-15 03:56:58.000000000","message":"Will do","commit_id":"eced4b37ec9db577033a215537a62d0c9e954a2e"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"a8a7617cc6e2c5e96751b5b65a49c7081615366a","unresolved":false,"context_lines":[{"line_number":11,"context_line":"#    under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"import threading"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import eventlet"},{"line_number":16,"context_line":"from eventlet import greenthread"},{"line_number":17,"context_line":"import mock"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f013ff3_3c12fb59","line":14,"updated":"2017-05-15 07:21:53.000000000","message":"Why empty line?","commit_id":"96ea5097ba60160f6b1e651bf1c7194fa5d1cb0d"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"6094befce918f3c3ea0602bee6b725b6009049bd","unresolved":false,"context_lines":[{"line_number":11,"context_line":"#    under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"import threading"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import eventlet"},{"line_number":16,"context_line":"from eventlet import greenthread"},{"line_number":17,"context_line":"import mock"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f013ff3_b96cd808","line":14,"in_reply_to":"1f013ff3_3c12fb59","updated":"2017-05-15 09:37:19.000000000","message":"Hacking guide requests that standard library imports (e.g. threading) will be in the first import block, and external libraries (e.g. eventlet, mock, neutron, oslo) will be in a second block. Internal imports (dragonflow stuff) in a third block.\n\nSee:\nhttps://docs.openstack.org/developer/hacking/#imports\nand \nhttps://docs.openstack.org/developer/hacking/#import-order-template","commit_id":"96ea5097ba60160f6b1e651bf1c7194fa5d1cb0d"}]}
