)]}'
{"dragonflow/tests/common/utils.py":[{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"35debb4e79d9006cb51ed9ceb909713d0c0caef1","unresolved":false,"context_lines":[{"line_number":21,"context_line":"DEFAULT_CMD_TIMEOUT \u003d 2"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"def wait_until_true(predicate, timeout\u003d5, sleep\u003d1, exception\u003dNone):"},{"line_number":25,"context_line":"    return linuxutils.wait_until_true(predicate, timeout, sleep, exception)"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba0121b8_1c39a7a4","line":24,"updated":"2016-03-31 12:50:56.000000000","message":"Why do we need this method? Why not call the neutron code directly?","commit_id":"2ed20f83383885c6413c4b85747f97985ba87e0a"},{"author":{"_account_id":18903,"name":"Yuli","email":"stremovsky@gmail.com","username":"yuli"},"change_message_id":"f79650885806920ebbbd147c21f969423277880c","unresolved":false,"context_lines":[{"line_number":21,"context_line":"DEFAULT_CMD_TIMEOUT \u003d 2"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"def wait_until_true(predicate, timeout\u003d5, sleep\u003d1, exception\u003dNone):"},{"line_number":25,"context_line":"    return linuxutils.wait_until_true(predicate, timeout, sleep, exception)"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9a061dce_c353c315","line":24,"in_reply_to":"9a061dce_647bea28","updated":"2016-04-07 08:43:41.000000000","message":"By default neutron.agent.linux.utils.wait_until_true() has a timeout 30 seconds.\nI want it to be 5 seconds.","commit_id":"2ed20f83383885c6413c4b85747f97985ba87e0a"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"80548d7f40b27e99cc612380750ea1423d5c9a20","unresolved":false,"context_lines":[{"line_number":21,"context_line":"DEFAULT_CMD_TIMEOUT \u003d 2"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"def wait_until_true(predicate, timeout\u003d5, sleep\u003d1, exception\u003dNone):"},{"line_number":25,"context_line":"    return linuxutils.wait_until_true(predicate, timeout, sleep, exception)"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9a061dce_647bea28","line":24,"in_reply_to":"9a061dce_c61d35bf","updated":"2016-04-07 04:22:57.000000000","message":"It just encapsulates the same function provided by linuxutils. It seems redundant.","commit_id":"2ed20f83383885c6413c4b85747f97985ba87e0a"},{"author":{"_account_id":13070,"name":"Eran Gampel","email":"eran@gampel.net","username":"Gampel"},"change_message_id":"11dda6414cb84062ae034d4dcba0005eba5b6bea","unresolved":false,"context_lines":[{"line_number":21,"context_line":"DEFAULT_CMD_TIMEOUT \u003d 2"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"def wait_until_true(predicate, timeout\u003d5, sleep\u003d1, exception\u003dNone):"},{"line_number":25,"context_line":"    return linuxutils.wait_until_true(predicate, timeout, sleep, exception)"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9a061dce_c61d35bf","line":24,"in_reply_to":"ba0121b8_1a9a32b9","updated":"2016-04-04 15:59:24.000000000","message":"I don\u0027t understand either why do we need this function","commit_id":"2ed20f83383885c6413c4b85747f97985ba87e0a"},{"author":{"_account_id":18903,"name":"Yuli","email":"stremovsky@gmail.com","username":"yuli"},"change_message_id":"ba7de84ed06fdc7038b12430db23b90560762d58","unresolved":false,"context_lines":[{"line_number":21,"context_line":"DEFAULT_CMD_TIMEOUT \u003d 2"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"def wait_until_true(predicate, timeout\u003d5, sleep\u003d1, exception\u003dNone):"},{"line_number":25,"context_line":"    return linuxutils.wait_until_true(predicate, timeout, sleep, exception)"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba0121b8_ea7fc5dd","line":24,"in_reply_to":"ba0121b8_1c39a7a4","updated":"2016-03-31 13:25:20.000000000","message":"1. to minimize number of include libs\n2. to make the code more maintanable","commit_id":"2ed20f83383885c6413c4b85747f97985ba87e0a"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"c7258208269a988162a26eee4c9359f1f48da5ef","unresolved":false,"context_lines":[{"line_number":21,"context_line":"DEFAULT_CMD_TIMEOUT \u003d 2"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"def wait_until_true(predicate, timeout\u003d5, sleep\u003d1, exception\u003dNone):"},{"line_number":25,"context_line":"    return linuxutils.wait_until_true(predicate, timeout, sleep, exception)"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba0121b8_1a9a32b9","line":24,"in_reply_to":"ba0121b8_ea7fc5dd","updated":"2016-03-31 18:51:08.000000000","message":"1. But we have to include Neutron anyway. DF relies on it.\n2. I don\u0027t think I understand how.","commit_id":"2ed20f83383885c6413c4b85747f97985ba87e0a"}],"dragonflow/tests/fullstack/test_dhcp_flows.py":[{"author":{"_account_id":13070,"name":"Eran Gampel","email":"eran@gampel.net","username":"Gampel"},"change_message_id":"8d644b617f4c7bb9ac4ac840e94ed5ef44f854a9","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        network \u003d self.store(objects.NetworkTestObj(self.neutron, self.nb_api))"},{"line_number":59,"context_line":"        network_id \u003d network.create()"},{"line_number":60,"context_line":"        subnet \u003d {\u0027network_id\u0027: network_id,"},{"line_number":61,"context_line":"            \u0027cidr\u0027: \u002710.10.0.0/24\u0027,"},{"line_number":62,"context_line":"            \u0027gateway_ip\u0027: \u002710.10.0.1\u0027,"},{"line_number":63,"context_line":"            \u0027ip_version\u0027: 4,"},{"line_number":64,"context_line":"            \u0027name\u0027: \u0027subnet-test\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"da0c15f0_7dff54aa","line":61,"range":{"start_line":61,"start_character":22,"end_line":61,"end_character":31},"updated":"2016-03-28 07:42:46.000000000","message":"why did you change  it back to same subnet as all the other test \n\nThis was introduced as temporary fix to avoid parallel testing problem","commit_id":"0b31b62ed6e171c5f8d8420c71bbd3c32906945f"},{"author":{"_account_id":18903,"name":"Yuli","email":"stremovsky@gmail.com","username":"yuli"},"change_message_id":"dd0fb804a6ff77133716c9e8b1dd423270572352","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        network \u003d self.store(objects.NetworkTestObj(self.neutron, self.nb_api))"},{"line_number":59,"context_line":"        network_id \u003d network.create()"},{"line_number":60,"context_line":"        subnet \u003d {\u0027network_id\u0027: network_id,"},{"line_number":61,"context_line":"            \u0027cidr\u0027: \u002710.10.0.0/24\u0027,"},{"line_number":62,"context_line":"            \u0027gateway_ip\u0027: \u002710.10.0.1\u0027,"},{"line_number":63,"context_line":"            \u0027ip_version\u0027: 4,"},{"line_number":64,"context_line":"            \u0027name\u0027: \u0027subnet-test\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"da0c15f0_bd0d6b39","line":61,"range":{"start_line":61,"start_character":22,"end_line":61,"end_character":31},"in_reply_to":"da0c15f0_7dff54aa","updated":"2016-03-28 08:05:48.000000000","message":"I used an old unmerged version. Fixing this.","commit_id":"0b31b62ed6e171c5f8d8420c71bbd3c32906945f"},{"author":{"_account_id":13070,"name":"Eran Gampel","email":"eran@gampel.net","username":"Gampel"},"change_message_id":"8d644b617f4c7bb9ac4ac840e94ed5ef44f854a9","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        network_id \u003d network.create()"},{"line_number":60,"context_line":"        subnet \u003d {\u0027network_id\u0027: network_id,"},{"line_number":61,"context_line":"            \u0027cidr\u0027: \u002710.10.0.0/24\u0027,"},{"line_number":62,"context_line":"            \u0027gateway_ip\u0027: \u002710.10.0.1\u0027,"},{"line_number":63,"context_line":"            \u0027ip_version\u0027: 4,"},{"line_number":64,"context_line":"            \u0027name\u0027: \u0027subnet-test\u0027,"},{"line_number":65,"context_line":"            \u0027enable_dhcp\u0027: True}"}],"source_content_type":"text/x-python","patch_set":1,"id":"da0c15f0_bd2f2c3d","line":62,"range":{"start_line":62,"start_character":33,"end_line":62,"end_character":34},"updated":"2016-03-28 07:42:46.000000000","message":"ditto","commit_id":"0b31b62ed6e171c5f8d8420c71bbd3c32906945f"},{"author":{"_account_id":18903,"name":"Yuli","email":"stremovsky@gmail.com","username":"yuli"},"change_message_id":"dd0fb804a6ff77133716c9e8b1dd423270572352","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        network_id \u003d network.create()"},{"line_number":60,"context_line":"        subnet \u003d {\u0027network_id\u0027: network_id,"},{"line_number":61,"context_line":"            \u0027cidr\u0027: \u002710.10.0.0/24\u0027,"},{"line_number":62,"context_line":"            \u0027gateway_ip\u0027: \u002710.10.0.1\u0027,"},{"line_number":63,"context_line":"            \u0027ip_version\u0027: 4,"},{"line_number":64,"context_line":"            \u0027name\u0027: \u0027subnet-test\u0027,"},{"line_number":65,"context_line":"            \u0027enable_dhcp\u0027: True}"}],"source_content_type":"text/x-python","patch_set":1,"id":"da0c15f0_5d1fef5e","line":62,"range":{"start_line":62,"start_character":33,"end_line":62,"end_character":34},"in_reply_to":"da0c15f0_bd2f2c3d","updated":"2016-03-28 08:05:48.000000000","message":"Fixing it","commit_id":"0b31b62ed6e171c5f8d8420c71bbd3c32906945f"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"4c0019fffb1ab1c33409ff7aa8a6f2d946edad28","unresolved":false,"context_lines":[{"line_number":70,"context_line":"            exception\u003dException(\u0027DHCP IP was not generated\u0027)"},{"line_number":71,"context_line":"        )"},{"line_number":72,"context_line":"        self.assertFalse(self.check_dhcp_rule(flows_before_change, dhcp_ip))"},{"line_number":73,"context_line":"        utils.wait_until_is_and_return("},{"line_number":74,"context_line":"            lambda: self.check_dhcp_rule(ovs.dump(), dhcp_ip),"},{"line_number":75,"context_line":"            exception\u003dException(\u0027DHCP ip was not found in OpenFlow rules\u0027)"},{"line_number":76,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":2,"id":"da0c15f0_5a6408e3","line":73,"updated":"2016-03-28 13:24:13.000000000","message":"I think this should be wait_until_true (Since you\u0027re not using the returned value).","commit_id":"fa199fde02886d75eb146b6e0dc2ebdd8d8354de"},{"author":{"_account_id":13070,"name":"Eran Gampel","email":"eran@gampel.net","username":"Gampel"},"change_message_id":"1ce8245e2180c697e671e6a8b1bdddd840fa7830","unresolved":false,"context_lines":[{"line_number":70,"context_line":"            exception\u003dException(\u0027DHCP IP was not generated\u0027)"},{"line_number":71,"context_line":"        )"},{"line_number":72,"context_line":"        self.assertFalse(self.check_dhcp_rule(flows_before_change, dhcp_ip))"},{"line_number":73,"context_line":"        utils.wait_until_is_and_return("},{"line_number":74,"context_line":"            lambda: self.check_dhcp_rule(ovs.dump(), dhcp_ip),"},{"line_number":75,"context_line":"            exception\u003dException(\u0027DHCP ip was not found in OpenFlow rules\u0027)"},{"line_number":76,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba0121b8_c8653be2","line":73,"in_reply_to":"ba0121b8_510e0135","updated":"2016-03-29 09:06:42.000000000","message":"Please fix it in another patch set","commit_id":"fa199fde02886d75eb146b6e0dc2ebdd8d8354de"},{"author":{"_account_id":13070,"name":"Eran Gampel","email":"eran@gampel.net","username":"Gampel"},"change_message_id":"f5c57eaee98517a8f8478b60cb91dd875c8932bc","unresolved":false,"context_lines":[{"line_number":70,"context_line":"            exception\u003dException(\u0027DHCP IP was not generated\u0027)"},{"line_number":71,"context_line":"        )"},{"line_number":72,"context_line":"        self.assertFalse(self.check_dhcp_rule(flows_before_change, dhcp_ip))"},{"line_number":73,"context_line":"        utils.wait_until_is_and_return("},{"line_number":74,"context_line":"            lambda: self.check_dhcp_rule(ovs.dump(), dhcp_ip),"},{"line_number":75,"context_line":"            exception\u003dException(\u0027DHCP ip was not found in OpenFlow rules\u0027)"},{"line_number":76,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba0121b8_dfbab609","line":73,"in_reply_to":"ba0121b8_c8653be2","updated":"2016-03-30 14:36:11.000000000","message":"I meant fix it in this patch sorry","commit_id":"fa199fde02886d75eb146b6e0dc2ebdd8d8354de"},{"author":{"_account_id":18903,"name":"Yuli","email":"stremovsky@gmail.com","username":"yuli"},"change_message_id":"c6ac4ac1706183099bd3ba369014da3ef1b755ab","unresolved":false,"context_lines":[{"line_number":70,"context_line":"            exception\u003dException(\u0027DHCP IP was not generated\u0027)"},{"line_number":71,"context_line":"        )"},{"line_number":72,"context_line":"        self.assertFalse(self.check_dhcp_rule(flows_before_change, dhcp_ip))"},{"line_number":73,"context_line":"        utils.wait_until_is_and_return("},{"line_number":74,"context_line":"            lambda: self.check_dhcp_rule(ovs.dump(), dhcp_ip),"},{"line_number":75,"context_line":"            exception\u003dException(\u0027DHCP ip was not found in OpenFlow rules\u0027)"},{"line_number":76,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":2,"id":"da0c15f0_d0275962","line":73,"in_reply_to":"da0c15f0_5a6408e3","updated":"2016-03-28 14:03:33.000000000","message":"I will do this in other patch","commit_id":"fa199fde02886d75eb146b6e0dc2ebdd8d8354de"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"9cca3ee77a1797e70781ae62fd12f2f04b8339e3","unresolved":false,"context_lines":[{"line_number":70,"context_line":"            exception\u003dException(\u0027DHCP IP was not generated\u0027)"},{"line_number":71,"context_line":"        )"},{"line_number":72,"context_line":"        self.assertFalse(self.check_dhcp_rule(flows_before_change, dhcp_ip))"},{"line_number":73,"context_line":"        utils.wait_until_is_and_return("},{"line_number":74,"context_line":"            lambda: self.check_dhcp_rule(ovs.dump(), dhcp_ip),"},{"line_number":75,"context_line":"            exception\u003dException(\u0027DHCP ip was not found in OpenFlow rules\u0027)"},{"line_number":76,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba0121b8_510e0135","line":73,"in_reply_to":"da0c15f0_d0275962","updated":"2016-03-29 02:33:24.000000000","message":"does another patch make sense? it is easy to fix by updating a new patchset.","commit_id":"fa199fde02886d75eb146b6e0dc2ebdd8d8354de"}]}
