)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"7bdaf192a31414c61b3e2b13652b3fc37d29f8c7","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"If a IP address is None, the method netaddr.IPAddress will raise a"},{"line_number":10,"context_line":"error as \u0027failed to detect a valid IP address from None\u0027."},{"line_number":11,"context_line":"When it update subnet, if gateway_ip is None, it should not call the"},{"line_number":12,"context_line":"method validate_gw_out_of_pools."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: Ibb007fe7e6402c174129074288b8af891182cd68"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"da85f559_f4f680f8","line":11,"updated":"2015-11-13 07:14:49.000000000","message":"nit : update -\u003eupdates","commit_id":"f5d61d4010d7a6260b373aba6e60e43c46b1d657"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"f14baeda218645b37a298f292412219f103252a2","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"If a IP address is None, the method netaddr.IPAddress will raise a"},{"line_number":10,"context_line":"error as \u0027failed to detect a valid IP address from None\u0027."},{"line_number":11,"context_line":"When it update subnet, if gateway_ip is None, it should not call the"},{"line_number":12,"context_line":"method validate_gw_out_of_pools."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: Ibb007fe7e6402c174129074288b8af891182cd68"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"da85f559_f4739bb2","line":11,"in_reply_to":"da85f559_f4f680f8","updated":"2015-11-16 01:03:33.000000000","message":"Done","commit_id":"f5d61d4010d7a6260b373aba6e60e43c46b1d657"}],"neutron/db/db_base_plugin_v2.py":[{"author":{"_account_id":13667,"name":"ZongKai LI","email":"onionpiece@163.com","username":"lzklibj"},"change_message_id":"92e32684fc3e0101385b3456f44bd301a122b73d","unresolved":false,"context_lines":[{"line_number":732,"context_line":"        if gateway_ip_changed or s.get(\u0027allocation_pools\u0027) is not None:"},{"line_number":733,"context_line":"            gateway_ip \u003d new_gateway_ip or db_subnet.gateway_ip"},{"line_number":734,"context_line":"            pools \u003d range_pools if range_pools is not None else db_pools"},{"line_number":735,"context_line":"            if gateway_ip:"},{"line_number":736,"context_line":"                self.ipam.validate_gw_out_of_pools(gateway_ip, pools)"},{"line_number":737,"context_line":""},{"line_number":738,"context_line":"        if gateway_ip_changed:"}],"source_content_type":"text/x-python","patch_set":4,"id":"da85f559_c1ae492d","line":735,"updated":"2015-11-12 13:46:13.000000000","message":"Why not add new_gateway_ip is not None checking in L732, variable gateway_ip and pools are only used this is if block, if new_gateway_ip is None, we even don\u0027t need the two variables.\n\nAnother point to prove we should add checking for new_gateway_ip is, subnet can be updated from having a gateway ip to no gateway. And in that case, gateway_ip getting from L733 will be incorrect in logic.","commit_id":"58fb54243b94c5a6b2f960332d5f56699b91c17f"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"6d05e222bbc055a8e47f3e11137832c70228fd12","unresolved":false,"context_lines":[{"line_number":732,"context_line":"        if gateway_ip_changed or s.get(\u0027allocation_pools\u0027) is not None:"},{"line_number":733,"context_line":"            gateway_ip \u003d new_gateway_ip or db_subnet.gateway_ip"},{"line_number":734,"context_line":"            pools \u003d range_pools if range_pools is not None else db_pools"},{"line_number":735,"context_line":"            if gateway_ip:"},{"line_number":736,"context_line":"                self.ipam.validate_gw_out_of_pools(gateway_ip, pools)"},{"line_number":737,"context_line":""},{"line_number":738,"context_line":"        if gateway_ip_changed:"}],"source_content_type":"text/x-python","patch_set":4,"id":"da85f559_59c78564","line":735,"in_reply_to":"da85f559_5f7d2eb0","updated":"2015-11-13 06:39:25.000000000","message":"I think you are right, we should consider this conditon","commit_id":"58fb54243b94c5a6b2f960332d5f56699b91c17f"},{"author":{"_account_id":13667,"name":"ZongKai LI","email":"onionpiece@163.com","username":"lzklibj"},"change_message_id":"6cebe7cfeb92307cd30378e44dcbcca9b9b05f70","unresolved":false,"context_lines":[{"line_number":732,"context_line":"        if gateway_ip_changed or s.get(\u0027allocation_pools\u0027) is not None:"},{"line_number":733,"context_line":"            gateway_ip \u003d new_gateway_ip or db_subnet.gateway_ip"},{"line_number":734,"context_line":"            pools \u003d range_pools if range_pools is not None else db_pools"},{"line_number":735,"context_line":"            if gateway_ip:"},{"line_number":736,"context_line":"                self.ipam.validate_gw_out_of_pools(gateway_ip, pools)"},{"line_number":737,"context_line":""},{"line_number":738,"context_line":"        if gateway_ip_changed:"}],"source_content_type":"text/x-python","patch_set":4,"id":"da85f559_5f7d2eb0","line":735,"in_reply_to":"da85f559_69bac00c","updated":"2015-11-13 03:21:49.000000000","message":"So you think it makes sense that, even we have no gateway, we still need to validate allocation pools with stale gateway?\n\nWill the following changing makes sense to you, from:\n    gateway_ip: 10.10.10.100\n    pools:\n        start: 10.10.10.101\n        end: 10.10.10.110\nto:\n    gateway_ip: no gateway\n    pools:\n        start: 10.10.10.90\n        end: 10.10.10.110\n\nGatewayConflictWithAllocationPools will raise, but it\u0027s not exactly what we want.","commit_id":"58fb54243b94c5a6b2f960332d5f56699b91c17f"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"deae43e09cd9376a152b06ca31806aba6351a333","unresolved":false,"context_lines":[{"line_number":732,"context_line":"        if gateway_ip_changed or s.get(\u0027allocation_pools\u0027) is not None:"},{"line_number":733,"context_line":"            gateway_ip \u003d new_gateway_ip or db_subnet.gateway_ip"},{"line_number":734,"context_line":"            pools \u003d range_pools if range_pools is not None else db_pools"},{"line_number":735,"context_line":"            if gateway_ip:"},{"line_number":736,"context_line":"                self.ipam.validate_gw_out_of_pools(gateway_ip, pools)"},{"line_number":737,"context_line":""},{"line_number":738,"context_line":"        if gateway_ip_changed:"}],"source_content_type":"text/x-python","patch_set":4,"id":"da85f559_69bac00c","line":735,"in_reply_to":"da85f559_c1ae492d","updated":"2015-11-13 00:54:50.000000000","message":"even if new_gateway_ip is None, subnet may have old gateway IP in DB, so there add a new variable gateway_ip_changed to check if the gateway IP change, if new_gateway_ip is None, the allocation_pools maybe not None. I don\u0027t understand why you think I should add a new test which updated from having a gateway ip to no gateway","commit_id":"58fb54243b94c5a6b2f960332d5f56699b91c17f"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"4404cca0fa180817a10b383b75bee3b7aec1d5ee","unresolved":false,"context_lines":[{"line_number":726,"context_line":"            s[\u0027allocation_pools\u0027] \u003d range_pools"},{"line_number":727,"context_line":""},{"line_number":728,"context_line":"        # If either gateway_ip or allocation_pools were specified"},{"line_number":729,"context_line":"        gateway_ip_changed \u003d False"},{"line_number":730,"context_line":"        if \u0027gateway_ip\u0027 in s:"},{"line_number":731,"context_line":"            new_gateway_ip \u003d s.get(\u0027gateway_ip\u0027)"},{"line_number":732,"context_line":"            gateway_ip_changed \u003d new_gateway_ip !\u003d db_subnet.gateway_ip"}],"source_content_type":"text/x-python","patch_set":5,"id":"da85f559_dc19157b","line":729,"updated":"2015-11-13 12:42:02.000000000","message":"For L729-734, could do...\n     new_gateway_ip \u003d s.get(\u0027gateway_ip\u0027, db_subnet.gateway_ip)\n     gateway_ip_changed \u003d new_gateway_ip !\u003d db_subnet.gateway_ip","commit_id":"f5d61d4010d7a6260b373aba6e60e43c46b1d657"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"f14baeda218645b37a298f292412219f103252a2","unresolved":false,"context_lines":[{"line_number":726,"context_line":"            s[\u0027allocation_pools\u0027] \u003d range_pools"},{"line_number":727,"context_line":""},{"line_number":728,"context_line":"        # If either gateway_ip or allocation_pools were specified"},{"line_number":729,"context_line":"        gateway_ip_changed \u003d False"},{"line_number":730,"context_line":"        if \u0027gateway_ip\u0027 in s:"},{"line_number":731,"context_line":"            new_gateway_ip \u003d s.get(\u0027gateway_ip\u0027)"},{"line_number":732,"context_line":"            gateway_ip_changed \u003d new_gateway_ip !\u003d db_subnet.gateway_ip"}],"source_content_type":"text/x-python","patch_set":5,"id":"da85f559_54462750","line":729,"in_reply_to":"da85f559_dc19157b","updated":"2015-11-16 01:03:33.000000000","message":"agree","commit_id":"f5d61d4010d7a6260b373aba6e60e43c46b1d657"},{"author":{"_account_id":13667,"name":"ZongKai LI","email":"onionpiece@163.com","username":"lzklibj"},"change_message_id":"28536ea32db7d57959a937a670d2736e6c44082d","unresolved":false,"context_lines":[{"line_number":732,"context_line":"            gateway_ip_changed \u003d new_gateway_ip !\u003d db_subnet.gateway_ip"},{"line_number":733,"context_line":"        else:"},{"line_number":734,"context_line":"            new_gateway_ip \u003d db_subnet.gateway_ip"},{"line_number":735,"context_line":"        if gateway_ip_changed or s.get(\u0027allocation_pools\u0027) is not None:"},{"line_number":736,"context_line":"            gateway_ip \u003d new_gateway_ip"},{"line_number":737,"context_line":"            pools \u003d range_pools if range_pools is not None else db_pools"},{"line_number":738,"context_line":"            if gateway_ip:"}],"source_content_type":"text/x-python","patch_set":5,"id":"da85f559_de2fbff4","line":735,"updated":"2015-11-13 16:16:00.000000000","message":"Thanks, code seems more robust now.\n\nBut, I think since it\u0027s time to modify name for gateway_ip_changed. To case gateway ip changed from certain one to None, it will still be False, this is not telling the truth.","commit_id":"f5d61d4010d7a6260b373aba6e60e43c46b1d657"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"f14baeda218645b37a298f292412219f103252a2","unresolved":false,"context_lines":[{"line_number":732,"context_line":"            gateway_ip_changed \u003d new_gateway_ip !\u003d db_subnet.gateway_ip"},{"line_number":733,"context_line":"        else:"},{"line_number":734,"context_line":"            new_gateway_ip \u003d db_subnet.gateway_ip"},{"line_number":735,"context_line":"        if gateway_ip_changed or s.get(\u0027allocation_pools\u0027) is not None:"},{"line_number":736,"context_line":"            gateway_ip \u003d new_gateway_ip"},{"line_number":737,"context_line":"            pools \u003d range_pools if range_pools is not None else db_pools"},{"line_number":738,"context_line":"            if gateway_ip:"}],"source_content_type":"text/x-python","patch_set":5,"id":"da85f559_344b635b","line":735,"in_reply_to":"da85f559_de2fbff4","updated":"2015-11-16 01:03:33.000000000","message":"Done","commit_id":"f5d61d4010d7a6260b373aba6e60e43c46b1d657"},{"author":{"_account_id":13667,"name":"ZongKai LI","email":"onionpiece@163.com","username":"lzklibj"},"change_message_id":"5b115f660718b586385111d0183d538362c20f0c","unresolved":false,"context_lines":[{"line_number":734,"context_line":"            s[\u0027allocation_pools\u0027] \u003d range_pools"},{"line_number":735,"context_line":""},{"line_number":736,"context_line":"        # If either gateway_ip or allocation_pools were specified"},{"line_number":737,"context_line":"        new_gateway_ip \u003d s.get(\u0027gateway_ip\u0027, db_subnet.gateway_ip)"},{"line_number":738,"context_line":"        gateway_ip_changed \u003d new_gateway_ip !\u003d db_subnet.gateway_ip"},{"line_number":739,"context_line":"        if gateway_ip_changed or s.get(\u0027allocation_pools\u0027) is not None:"},{"line_number":740,"context_line":"            pools \u003d range_pools if range_pools is not None else db_pools"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba8a016a_a4874c0e","line":737,"updated":"2015-11-17 02:47:38.000000000","message":"new_gateway_ip should just be:\n    s.get(\u0027gateway_ip\u0027)\nno need to give db_subnet.gateway_ip as default.\n\nAnd interesting, this code behavior here just rollback to the similar behavior in PS4.","commit_id":"62276dcd0e9297bc5f896f9330293f14387e7713"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"ac2395f630ee2a1ff3ce01c65dea353e1d455d07","unresolved":false,"context_lines":[{"line_number":734,"context_line":"            s[\u0027allocation_pools\u0027] \u003d range_pools"},{"line_number":735,"context_line":""},{"line_number":736,"context_line":"        # If either gateway_ip or allocation_pools were specified"},{"line_number":737,"context_line":"        new_gateway_ip \u003d s.get(\u0027gateway_ip\u0027, db_subnet.gateway_ip)"},{"line_number":738,"context_line":"        gateway_ip_changed \u003d new_gateway_ip !\u003d db_subnet.gateway_ip"},{"line_number":739,"context_line":"        if gateway_ip_changed or s.get(\u0027allocation_pools\u0027) is not None:"},{"line_number":740,"context_line":"            pools \u003d range_pools if range_pools is not None else db_pools"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba8a016a_c79b72c8","line":737,"in_reply_to":"ba8a016a_a4874c0e","updated":"2015-11-17 02:58:26.000000000","message":"if \u0027gateway_ip\u0027 not in s, we still need to check if the old \u0027gateway_ip\u0027 is valid with new \u0027allocation_pools\u0027, I don\u0027t know your meaning that \" rollback to the similar behavior in PS4\", you can check the unit tests, what use case does it not cover?","commit_id":"62276dcd0e9297bc5f896f9330293f14387e7713"},{"author":{"_account_id":13667,"name":"ZongKai LI","email":"onionpiece@163.com","username":"lzklibj"},"change_message_id":"db29c94b752b6a217a3534555b948c39eac3b5d4","unresolved":false,"context_lines":[{"line_number":734,"context_line":"            s[\u0027allocation_pools\u0027] \u003d range_pools"},{"line_number":735,"context_line":""},{"line_number":736,"context_line":"        # If either gateway_ip or allocation_pools were specified"},{"line_number":737,"context_line":"        new_gateway_ip \u003d s.get(\u0027gateway_ip\u0027, db_subnet.gateway_ip)"},{"line_number":738,"context_line":"        gateway_ip_changed \u003d new_gateway_ip !\u003d db_subnet.gateway_ip"},{"line_number":739,"context_line":"        if gateway_ip_changed or s.get(\u0027allocation_pools\u0027) is not None:"},{"line_number":740,"context_line":"            pools \u003d range_pools if range_pools is not None else db_pools"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba8a016a_aae83511","line":737,"in_reply_to":"ba8a016a_c79b72c8","updated":"2015-11-18 03:45:47.000000000","message":"Oops, I forget to consider that point, thanks for your explanation.","commit_id":"62276dcd0e9297bc5f896f9330293f14387e7713"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"274985dca2fb83e72b1f4e630f1ff5bf23426826","unresolved":false,"context_lines":[{"line_number":734,"context_line":"            s[\u0027allocation_pools\u0027] \u003d range_pools"},{"line_number":735,"context_line":""},{"line_number":736,"context_line":"        # If either gateway_ip or allocation_pools were specified"},{"line_number":737,"context_line":"        new_gateway_ip \u003d s.get(\u0027gateway_ip\u0027, db_subnet.gateway_ip)"},{"line_number":738,"context_line":"        gateway_ip_changed \u003d new_gateway_ip !\u003d db_subnet.gateway_ip"},{"line_number":739,"context_line":"        if gateway_ip_changed or s.get(\u0027allocation_pools\u0027) is not None:"},{"line_number":740,"context_line":"            pools \u003d range_pools if range_pools is not None else db_pools"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba8a016a_dcbe1c64","line":737,"updated":"2015-11-20 09:25:03.000000000","message":"\u0027new_\u0027 now is confusing as var may actually store \u0027old\u0027 gateway ip. Consider rename to just gateway_ip","commit_id":"251b235fb8178941f0c5758a48a4bb1a034fbb90"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"da179980ee767b4fa95389487c4e81708fb87847","unresolved":false,"context_lines":[{"line_number":734,"context_line":"            s[\u0027allocation_pools\u0027] \u003d range_pools"},{"line_number":735,"context_line":""},{"line_number":736,"context_line":"        # If either gateway_ip or allocation_pools were specified"},{"line_number":737,"context_line":"        new_gateway_ip \u003d s.get(\u0027gateway_ip\u0027, db_subnet.gateway_ip)"},{"line_number":738,"context_line":"        gateway_ip_changed \u003d new_gateway_ip !\u003d db_subnet.gateway_ip"},{"line_number":739,"context_line":"        if gateway_ip_changed or s.get(\u0027allocation_pools\u0027) is not None:"},{"line_number":740,"context_line":"            pools \u003d range_pools if range_pools is not None else db_pools"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba8a016a_10c7a465","line":737,"in_reply_to":"ba8a016a_dcbe1c64","updated":"2015-11-20 10:15:49.000000000","message":"agree","commit_id":"251b235fb8178941f0c5758a48a4bb1a034fbb90"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"2550b13876016c5c9b0fad2ac9eeb109ab7c982c","unresolved":false,"context_lines":[{"line_number":734,"context_line":"            s[\u0027allocation_pools\u0027] \u003d range_pools"},{"line_number":735,"context_line":""},{"line_number":736,"context_line":"        # If either gateway_ip or allocation_pools were specified"},{"line_number":737,"context_line":"        gateway_ip \u003d s.get(\u0027gateway_ip\u0027, db_subnet.gateway_ip)"},{"line_number":738,"context_line":"        gateway_ip_changed \u003d gateway_ip !\u003d db_subnet.gateway_ip"},{"line_number":739,"context_line":"        if gateway_ip_changed or s.get(\u0027allocation_pools\u0027) is not None:"},{"line_number":740,"context_line":"            pools \u003d range_pools if range_pools is not None else db_pools"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba8a016a_947a2487","line":737,"updated":"2015-11-24 09:12:53.000000000","message":"I believe this makes the gateway_ip confusing, what if somebody uses gateway_ip later on this function expecting to be the right gateway.\n\nYou just used db_subnet.gateway_ip but it\u0027s not the gateway_ip of the request.\n\nI\u0027d rewrite the logic here to avoid that.","commit_id":"935348ce929ccdedc76e2e5742f312af9bbb12b6"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"8a3731ffa560c2d170fccdc51937f5cd12f4606b","unresolved":false,"context_lines":[{"line_number":734,"context_line":"            s[\u0027allocation_pools\u0027] \u003d range_pools"},{"line_number":735,"context_line":""},{"line_number":736,"context_line":"        # If either gateway_ip or allocation_pools were specified"},{"line_number":737,"context_line":"        gateway_ip \u003d s.get(\u0027gateway_ip\u0027, db_subnet.gateway_ip)"},{"line_number":738,"context_line":"        gateway_ip_changed \u003d gateway_ip !\u003d db_subnet.gateway_ip"},{"line_number":739,"context_line":"        if gateway_ip_changed or s.get(\u0027allocation_pools\u0027) is not None:"},{"line_number":740,"context_line":"            pools \u003d range_pools if range_pools is not None else db_pools"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba8a016a_74054078","line":737,"in_reply_to":"ba8a016a_54ad9c99","updated":"2015-11-24 09:24:07.000000000","message":"Sorry ShiHanZhang, it seems I didn\u0027t take enough coffee this morning yet, and this area is still blurry to me, of course, it\u0027s more blurry with no coffee :)\n\nCheers, sorry for the noise.","commit_id":"935348ce929ccdedc76e2e5742f312af9bbb12b6"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"8ec832355ee3f1d24fd23283f462e75cc670933a","unresolved":false,"context_lines":[{"line_number":734,"context_line":"            s[\u0027allocation_pools\u0027] \u003d range_pools"},{"line_number":735,"context_line":""},{"line_number":736,"context_line":"        # If either gateway_ip or allocation_pools were specified"},{"line_number":737,"context_line":"        gateway_ip \u003d s.get(\u0027gateway_ip\u0027, db_subnet.gateway_ip)"},{"line_number":738,"context_line":"        gateway_ip_changed \u003d gateway_ip !\u003d db_subnet.gateway_ip"},{"line_number":739,"context_line":"        if gateway_ip_changed or s.get(\u0027allocation_pools\u0027) is not None:"},{"line_number":740,"context_line":"            pools \u003d range_pools if range_pools is not None else db_pools"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba8a016a_54ad9c99","line":737,"in_reply_to":"ba8a016a_947a2487","updated":"2015-11-24 09:20:47.000000000","message":"ajo, I don\u0027t fully understand your meaning, for below case:\nwe create a subnet with gateway_ip:192.168.1.1 and alloction_pools: 192.168.1.2 to 192.168.1.254, then we update the alloction_pools to 192.168.1.100 to 192.168.1.254 without gateway_ip in request, but the 192.168.1.1 in db also the real gateway_ip, do you think this will make confusing","commit_id":"935348ce929ccdedc76e2e5742f312af9bbb12b6"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"7f5106577c25f4bcdf70ccf1e6ad041d19269d6b","unresolved":false,"context_lines":[{"line_number":736,"context_line":"        # If either gateway_ip or allocation_pools were specified"},{"line_number":737,"context_line":"        gateway_ip \u003d s.get(\u0027gateway_ip\u0027, db_subnet.gateway_ip)"},{"line_number":738,"context_line":"        gateway_ip_changed \u003d gateway_ip !\u003d db_subnet.gateway_ip"},{"line_number":739,"context_line":"        if gateway_ip_changed or s.get(\u0027allocation_pools\u0027) is not None:"},{"line_number":740,"context_line":"            pools \u003d range_pools if range_pools is not None else db_pools"},{"line_number":741,"context_line":"            if gateway_ip:"},{"line_number":742,"context_line":"                self.ipam.validate_gw_out_of_pools(gateway_ip, pools)"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba8a016a_5e3b9938","line":739,"updated":"2015-11-23 18:13:45.000000000","message":"Your commit message didn\u0027t mention refactoring.  As far as I can tell, all of the change to L737 - L741 (original lines) don\u0027t actually change the logic.","commit_id":"935348ce929ccdedc76e2e5742f312af9bbb12b6"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"2654b34afda44e6727ad099c878d31a6ed08f214","unresolved":false,"context_lines":[{"line_number":736,"context_line":"        # If either gateway_ip or allocation_pools were specified"},{"line_number":737,"context_line":"        gateway_ip \u003d s.get(\u0027gateway_ip\u0027, db_subnet.gateway_ip)"},{"line_number":738,"context_line":"        gateway_ip_changed \u003d gateway_ip !\u003d db_subnet.gateway_ip"},{"line_number":739,"context_line":"        if gateway_ip_changed or s.get(\u0027allocation_pools\u0027) is not None:"},{"line_number":740,"context_line":"            pools \u003d range_pools if range_pools is not None else db_pools"},{"line_number":741,"context_line":"            if gateway_ip:"},{"line_number":742,"context_line":"                self.ipam.validate_gw_out_of_pools(gateway_ip, pools)"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba8a016a_c6dfa6d4","line":739,"in_reply_to":"ba8a016a_5e3b9938","updated":"2015-11-24 08:50:21.000000000","message":"Carl,\n\nit isn\u0027t a no-op refactoring.\nit would make a difference for test_update_subnet_from_gw_to_no_gw.","commit_id":"935348ce929ccdedc76e2e5742f312af9bbb12b6"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"1bfc0276b380620956baad089efacd10d490953c","unresolved":false,"context_lines":[{"line_number":736,"context_line":"        # If either gateway_ip or allocation_pools were specified"},{"line_number":737,"context_line":"        gateway_ip \u003d s.get(\u0027gateway_ip\u0027, db_subnet.gateway_ip)"},{"line_number":738,"context_line":"        gateway_ip_changed \u003d gateway_ip !\u003d db_subnet.gateway_ip"},{"line_number":739,"context_line":"        if gateway_ip_changed or s.get(\u0027allocation_pools\u0027) is not None:"},{"line_number":740,"context_line":"            pools \u003d range_pools if range_pools is not None else db_pools"},{"line_number":741,"context_line":"            if gateway_ip:"},{"line_number":742,"context_line":"                self.ipam.validate_gw_out_of_pools(gateway_ip, pools)"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba8a016a_c5bfaaa8","line":739,"in_reply_to":"ba8a016a_5e3b9938","updated":"2015-11-24 00:54:12.000000000","message":"hi Carl Baldwin, for the original logic, it does\u0027t check if the gateway_is None(original line#743), then the function will validate_gw_out_of_pools exception. I don\u0027t understand your mean \"Your commit message didn\u0027t mention refactoring\", could you explain it?","commit_id":"935348ce929ccdedc76e2e5742f312af9bbb12b6"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"34d89e2deeee04a7f2a215a15b5f1be682936296","unresolved":false,"context_lines":[{"line_number":736,"context_line":"        # If either gateway_ip or allocation_pools were specified"},{"line_number":737,"context_line":"        gateway_ip \u003d s.get(\u0027gateway_ip\u0027, db_subnet.gateway_ip)"},{"line_number":738,"context_line":"        gateway_ip_changed \u003d gateway_ip !\u003d db_subnet.gateway_ip"},{"line_number":739,"context_line":"        if gateway_ip_changed or s.get(\u0027allocation_pools\u0027) is not None:"},{"line_number":740,"context_line":"            pools \u003d range_pools if range_pools is not None else db_pools"},{"line_number":741,"context_line":"            if gateway_ip:"},{"line_number":742,"context_line":"                self.ipam.validate_gw_out_of_pools(gateway_ip, pools)"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a8ffd7b_bbe4650d","line":739,"in_reply_to":"ba8a016a_c6dfa6d4","updated":"2015-11-24 16:35:32.000000000","message":"You\u0027re right.  I missed a subtlety in the change on L737.","commit_id":"935348ce929ccdedc76e2e5742f312af9bbb12b6"}],"neutron/tests/unit/db/test_db_base_plugin_v2.py":[{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"9d8988a225f86af535ee145c1c408e2e10548aeb","unresolved":false,"context_lines":[{"line_number":4718,"context_line":"                req \u003d self.new_update_request(\u0027subnets\u0027, data,"},{"line_number":4719,"context_line":"                                              subnet[\u0027subnet\u0027][\u0027id\u0027])"},{"line_number":4720,"context_line":"                res \u003d req.get_response(self.api)"},{"line_number":4721,"context_line":"                self.assertEqual(res.status_code, 200)"},{"line_number":4722,"context_line":"                self._verify_updated_subnet_allocation_pools("},{"line_number":4723,"context_line":"                    res, with_gateway_ip\u003dFalse)"},{"line_number":4724,"context_line":"                req \u003d self.new_show_request(\u0027subnets\u0027, subnet[\u0027subnet\u0027][\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"da85f559_216bfef2","line":4721,"updated":"2015-11-10 18:03:23.000000000","message":"Nit: assert args should be (expected, actual)","commit_id":"4f6f2cfa7af0140e3770e8fb33b853d74def5480"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"ffc6e06825e26c4d09b2f202be867cb5952e21be","unresolved":false,"context_lines":[{"line_number":4718,"context_line":"                req \u003d self.new_update_request(\u0027subnets\u0027, data,"},{"line_number":4719,"context_line":"                                              subnet[\u0027subnet\u0027][\u0027id\u0027])"},{"line_number":4720,"context_line":"                res \u003d req.get_response(self.api)"},{"line_number":4721,"context_line":"                self.assertEqual(res.status_code, 200)"},{"line_number":4722,"context_line":"                self._verify_updated_subnet_allocation_pools("},{"line_number":4723,"context_line":"                    res, with_gateway_ip\u003dFalse)"},{"line_number":4724,"context_line":"                req \u003d self.new_show_request(\u0027subnets\u0027, subnet[\u0027subnet\u0027][\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"da85f559_8f9764eb","line":4721,"in_reply_to":"da85f559_216bfef2","updated":"2015-11-11 00:56:37.000000000","message":"thx, I got it","commit_id":"4f6f2cfa7af0140e3770e8fb33b853d74def5480"},{"author":{"_account_id":13667,"name":"ZongKai LI","email":"onionpiece@163.com","username":"lzklibj"},"change_message_id":"92e32684fc3e0101385b3456f44bd301a122b73d","unresolved":false,"context_lines":[{"line_number":4710,"context_line":"        allocation_pools \u003d [{\u0027start\u0027: \u0027192.168.0.2\u0027, \u0027end\u0027: \u0027192.168.0.254\u0027}]"},{"line_number":4711,"context_line":"        with self.network() as network:"},{"line_number":4712,"context_line":"            with self.subnet(network\u003dnetwork,"},{"line_number":4713,"context_line":"                             gateway_ip\u003dNone,"},{"line_number":4714,"context_line":"                             allocation_pools\u003dallocation_pools,"},{"line_number":4715,"context_line":"                             cidr\u003d\u0027192.168.0.0/24\u0027) as subnet:"},{"line_number":4716,"context_line":"                data \u003d {\u0027subnet\u0027: {\u0027allocation_pools\u0027: ["}],"source_content_type":"text/x-python","patch_set":4,"id":"da85f559_340af58a","line":4713,"updated":"2015-11-12 13:46:13.000000000","message":"This patch is great to locate details in some subnet updating details, thanks for that.\n\nBut beyond this test case here, I prefer we have another test case for update subnet from having a gateway_ip to no gateway.","commit_id":"58fb54243b94c5a6b2f960332d5f56699b91c17f"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"34cece997b93a90c567f37290758e1b846f30471","unresolved":false,"context_lines":[{"line_number":4710,"context_line":"        allocation_pools \u003d [{\u0027start\u0027: \u0027192.168.0.2\u0027, \u0027end\u0027: \u0027192.168.0.254\u0027}]"},{"line_number":4711,"context_line":"        with self.network() as network:"},{"line_number":4712,"context_line":"            with self.subnet(network\u003dnetwork,"},{"line_number":4713,"context_line":"                             gateway_ip\u003dNone,"},{"line_number":4714,"context_line":"                             allocation_pools\u003dallocation_pools,"},{"line_number":4715,"context_line":"                             cidr\u003d\u0027192.168.0.0/24\u0027) as subnet:"},{"line_number":4716,"context_line":"                data \u003d {\u0027subnet\u0027: {\u0027allocation_pools\u0027: ["}],"source_content_type":"text/x-python","patch_set":4,"id":"da85f559_89f844c6","line":4713,"in_reply_to":"da85f559_340af58a","updated":"2015-11-13 00:57:31.000000000","message":"if a subnet already has gateway_ip, the method validate_gw_out_of_pools will check correctly, so I don\u0027t think we should add your tests!","commit_id":"58fb54243b94c5a6b2f960332d5f56699b91c17f"},{"author":{"_account_id":13667,"name":"ZongKai LI","email":"onionpiece@163.com","username":"lzklibj"},"change_message_id":"28536ea32db7d57959a937a670d2736e6c44082d","unresolved":false,"context_lines":[{"line_number":4739,"context_line":"                    \u0027allocation_pools\u0027: ["},{"line_number":4740,"context_line":"                        {\u0027start\u0027: \u0027192.168.0.10\u0027, \u0027end\u0027: \u0027192.168.0.20\u0027},"},{"line_number":4741,"context_line":"                        {\u0027start\u0027: \u0027192.168.0.30\u0027, \u0027end\u0027: \u0027192.168.0.40\u0027}],"},{"line_number":4742,"context_line":"                    \u0027gateway_ip\u0027: None}}"},{"line_number":4743,"context_line":"                req \u003d self.new_update_request(\u0027subnets\u0027, data,"},{"line_number":4744,"context_line":"                                              subnet[\u0027subnet\u0027][\u0027id\u0027])"},{"line_number":4745,"context_line":"                res \u003d req.get_response(self.api)"}],"source_content_type":"text/x-python","patch_set":5,"id":"da85f559_f4b3e0e7","line":4742,"updated":"2015-11-13 16:16:00.000000000","message":"nit: ugly indentation","commit_id":"f5d61d4010d7a6260b373aba6e60e43c46b1d657"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"f14baeda218645b37a298f292412219f103252a2","unresolved":false,"context_lines":[{"line_number":4739,"context_line":"                    \u0027allocation_pools\u0027: ["},{"line_number":4740,"context_line":"                        {\u0027start\u0027: \u0027192.168.0.10\u0027, \u0027end\u0027: \u0027192.168.0.20\u0027},"},{"line_number":4741,"context_line":"                        {\u0027start\u0027: \u0027192.168.0.30\u0027, \u0027end\u0027: \u0027192.168.0.40\u0027}],"},{"line_number":4742,"context_line":"                    \u0027gateway_ip\u0027: None}}"},{"line_number":4743,"context_line":"                req \u003d self.new_update_request(\u0027subnets\u0027, data,"},{"line_number":4744,"context_line":"                                              subnet[\u0027subnet\u0027][\u0027id\u0027])"},{"line_number":4745,"context_line":"                res \u003d req.get_response(self.api)"}],"source_content_type":"text/x-python","patch_set":5,"id":"da85f559_94632fdd","line":4742,"in_reply_to":"da85f559_f4b3e0e7","updated":"2015-11-16 01:03:33.000000000","message":"Done","commit_id":"f5d61d4010d7a6260b373aba6e60e43c46b1d657"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"84d38101691e89ad7c96c3e80143175d0823685a","unresolved":false,"context_lines":[{"line_number":4776,"context_line":"                self._verify_updated_subnet_allocation_pools("},{"line_number":4777,"context_line":"                    res, with_gateway_ip\u003dFalse)"},{"line_number":4778,"context_line":""},{"line_number":4779,"context_line":"    def test_update_subnet_from_gw_to_no_gw(self):"},{"line_number":4780,"context_line":"        allocation_pools \u003d [{\u0027start\u0027: \u0027192.168.0.16\u0027, \u0027end\u0027: \u0027192.168.0.254\u0027}]"},{"line_number":4781,"context_line":"        with self.network() as network:"},{"line_number":4782,"context_line":"            with self.subnet(network\u003dnetwork,"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba8a016a_5031a1eb","line":4779,"updated":"2015-11-16 12:53:56.000000000","message":"Could take this test and turn it into a helper method, and call it with a with_gateway_ip arg and then two tests can pass in value to reduce duplication here.\n\nCould consider having helper work for all three tests, passing in gateway_ip and allocation pools.\n\n    def _test_update_subnet(self, allocation_pool, with_gateway_ip, gateway_ip):\n        # L4759-4777 with parameters provided in place of hardcoded values.\n\n    def test_update_no_gw_subnet(self):\n        allocation_pools \u003d [{\u0027start\u0027: \u0027192.168.0.2\u0027, \u0027end\u0027: \u0027192.168.0.254\u0027}]\n        self._test_update_subnet(allocation_pool, with_gateway_ip\u003dFalse, gateway_ip\u003dNone)","commit_id":"d08d8fb59e956c3dc449518764bb61d9fc6c0d86"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"57989d1f1cf343c8c19bf029358f84796ea2191e","unresolved":false,"context_lines":[{"line_number":4776,"context_line":"                self._verify_updated_subnet_allocation_pools("},{"line_number":4777,"context_line":"                    res, with_gateway_ip\u003dFalse)"},{"line_number":4778,"context_line":""},{"line_number":4779,"context_line":"    def test_update_subnet_from_gw_to_no_gw(self):"},{"line_number":4780,"context_line":"        allocation_pools \u003d [{\u0027start\u0027: \u0027192.168.0.16\u0027, \u0027end\u0027: \u0027192.168.0.254\u0027}]"},{"line_number":4781,"context_line":"        with self.network() as network:"},{"line_number":4782,"context_line":"            with self.subnet(network\u003dnetwork,"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba8a016a_387382b3","line":4779,"in_reply_to":"ba8a016a_5031a1eb","updated":"2015-11-17 00:56:41.000000000","message":"good suggestion!","commit_id":"d08d8fb59e956c3dc449518764bb61d9fc6c0d86"},{"author":{"_account_id":13667,"name":"ZongKai LI","email":"onionpiece@163.com","username":"lzklibj"},"change_message_id":"5b115f660718b586385111d0183d538362c20f0c","unresolved":false,"context_lines":[{"line_number":4774,"context_line":"                self.assertEqual(200, res.status_code)"},{"line_number":4775,"context_line":"                self._verify_updated_subnet_allocation_pools("},{"line_number":4776,"context_line":"                    res, with_gateway_ip\u003dcheck_gateway)"},{"line_number":4777,"context_line":"                req \u003d self.new_show_request(\u0027subnets\u0027, subnet[\u0027subnet\u0027][\u0027id\u0027],"},{"line_number":4778,"context_line":"                                            self.fmt)"},{"line_number":4779,"context_line":"                res \u003d req.get_response(self.api)"},{"line_number":4780,"context_line":"                self._verify_updated_subnet_allocation_pools("}],"source_content_type":"text/x-python","patch_set":8,"id":"ba8a016a_44c5408c","line":4777,"updated":"2015-11-17 02:47:38.000000000","message":"A question: will results from update_request and show_request are different ? If not, it seems no necessary to do a repeat verify.","commit_id":"62276dcd0e9297bc5f896f9330293f14387e7713"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"ac2395f630ee2a1ff3ce01c65dea353e1d455d07","unresolved":false,"context_lines":[{"line_number":4774,"context_line":"                self.assertEqual(200, res.status_code)"},{"line_number":4775,"context_line":"                self._verify_updated_subnet_allocation_pools("},{"line_number":4776,"context_line":"                    res, with_gateway_ip\u003dcheck_gateway)"},{"line_number":4777,"context_line":"                req \u003d self.new_show_request(\u0027subnets\u0027, subnet[\u0027subnet\u0027][\u0027id\u0027],"},{"line_number":4778,"context_line":"                                            self.fmt)"},{"line_number":4779,"context_line":"                res \u003d req.get_response(self.api)"},{"line_number":4780,"context_line":"                self._verify_updated_subnet_allocation_pools("}],"source_content_type":"text/x-python","patch_set":8,"id":"ba8a016a_47730281","line":4777,"in_reply_to":"ba8a016a_44c5408c","updated":"2015-11-17 02:58:26.000000000","message":"I think results from update_request and show_request are same, so you are right, it is not necessary to do a repeat verify","commit_id":"62276dcd0e9297bc5f896f9330293f14387e7713"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a0827d7a9e4b92a41bbb25ab9fdbbe0c6b91a8ce","unresolved":false,"context_lines":[{"line_number":4779,"context_line":"        self._test_update_subnet()"},{"line_number":4780,"context_line":""},{"line_number":4781,"context_line":"    def test_update_subnet_from_gw_to_no_gw(self):"},{"line_number":4782,"context_line":"        self._test_update_subnet(\u0027192.168.0.15\u0027)"},{"line_number":4783,"context_line":""},{"line_number":4784,"context_line":"    def test_update_subnet_from_gw_to_new_gw(self):"},{"line_number":4785,"context_line":"        self._test_update_subnet(\u0027192.168.0.15\u0027, \u0027192.168.0.9\u0027, True)"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba8a016a_4a9f7e03","line":4782,"updated":"2015-11-17 09:50:06.000000000","message":"if you respin then please do\nself._test_update_subnet(old_gw\u003d\u0027192.168.0.15\u0027)","commit_id":"73b9166941515467a04cd20ade83ebbc1c033c7b"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"2d80986320653d2ea84999daee7c9b75a132ffee","unresolved":false,"context_lines":[{"line_number":4779,"context_line":"        self._test_update_subnet()"},{"line_number":4780,"context_line":""},{"line_number":4781,"context_line":"    def test_update_subnet_from_gw_to_no_gw(self):"},{"line_number":4782,"context_line":"        self._test_update_subnet(\u0027192.168.0.15\u0027)"},{"line_number":4783,"context_line":""},{"line_number":4784,"context_line":"    def test_update_subnet_from_gw_to_new_gw(self):"},{"line_number":4785,"context_line":"        self._test_update_subnet(\u0027192.168.0.15\u0027, \u0027192.168.0.9\u0027, True)"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba8a016a_26a0159f","line":4782,"in_reply_to":"ba8a016a_4a9f7e03","updated":"2015-11-17 18:56:42.000000000","message":"+1","commit_id":"73b9166941515467a04cd20ade83ebbc1c033c7b"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"c976ca253044ce0cea57c832d45e3ffae3dc3713","unresolved":false,"context_lines":[{"line_number":4779,"context_line":"        self._test_update_subnet()"},{"line_number":4780,"context_line":""},{"line_number":4781,"context_line":"    def test_update_subnet_from_gw_to_no_gw(self):"},{"line_number":4782,"context_line":"        self._test_update_subnet(\u0027192.168.0.15\u0027)"},{"line_number":4783,"context_line":""},{"line_number":4784,"context_line":"    def test_update_subnet_from_gw_to_new_gw(self):"},{"line_number":4785,"context_line":"        self._test_update_subnet(\u0027192.168.0.15\u0027, \u0027192.168.0.9\u0027, True)"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba8a016a_9532370f","line":4782,"in_reply_to":"ba8a016a_4a9f7e03","updated":"2015-11-18 00:45:36.000000000","message":"agree","commit_id":"73b9166941515467a04cd20ade83ebbc1c033c7b"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a0827d7a9e4b92a41bbb25ab9fdbbe0c6b91a8ce","unresolved":false,"context_lines":[{"line_number":4782,"context_line":"        self._test_update_subnet(\u0027192.168.0.15\u0027)"},{"line_number":4783,"context_line":""},{"line_number":4784,"context_line":"    def test_update_subnet_from_gw_to_new_gw(self):"},{"line_number":4785,"context_line":"        self._test_update_subnet(\u0027192.168.0.15\u0027, \u0027192.168.0.9\u0027, True)"},{"line_number":4786,"context_line":""},{"line_number":4787,"context_line":"    def test_update_subnet_route_with_too_many_entries(self):"},{"line_number":4788,"context_line":"        with self.subnet() as subnet:"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba8a016a_2a879ab6","line":4785,"updated":"2015-11-17 09:50:06.000000000","message":"same here as it would make the parameters more clear and easier to understand","commit_id":"73b9166941515467a04cd20ade83ebbc1c033c7b"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"2d80986320653d2ea84999daee7c9b75a132ffee","unresolved":false,"context_lines":[{"line_number":4782,"context_line":"        self._test_update_subnet(\u0027192.168.0.15\u0027)"},{"line_number":4783,"context_line":""},{"line_number":4784,"context_line":"    def test_update_subnet_from_gw_to_new_gw(self):"},{"line_number":4785,"context_line":"        self._test_update_subnet(\u0027192.168.0.15\u0027, \u0027192.168.0.9\u0027, True)"},{"line_number":4786,"context_line":""},{"line_number":4787,"context_line":"    def test_update_subnet_route_with_too_many_entries(self):"},{"line_number":4788,"context_line":"        with self.subnet() as subnet:"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba8a016a_2677b53b","line":4785,"in_reply_to":"ba8a016a_2a879ab6","updated":"2015-11-17 18:56:42.000000000","message":"+1","commit_id":"73b9166941515467a04cd20ade83ebbc1c033c7b"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"c976ca253044ce0cea57c832d45e3ffae3dc3713","unresolved":false,"context_lines":[{"line_number":4782,"context_line":"        self._test_update_subnet(\u0027192.168.0.15\u0027)"},{"line_number":4783,"context_line":""},{"line_number":4784,"context_line":"    def test_update_subnet_from_gw_to_new_gw(self):"},{"line_number":4785,"context_line":"        self._test_update_subnet(\u0027192.168.0.15\u0027, \u0027192.168.0.9\u0027, True)"},{"line_number":4786,"context_line":""},{"line_number":4787,"context_line":"    def test_update_subnet_route_with_too_many_entries(self):"},{"line_number":4788,"context_line":"        with self.subnet() as subnet:"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba8a016a_b535fbf7","line":4785,"in_reply_to":"ba8a016a_2a879ab6","updated":"2015-11-18 00:45:36.000000000","message":"Done","commit_id":"73b9166941515467a04cd20ade83ebbc1c033c7b"}],"neutron/tests/unit/db/test_ipam_backend_mixin.py":[{"author":{"_account_id":4656,"name":"Sean M. Collins","email":"sean@coreitpro.com","username":"scollins"},"change_message_id":"52fca4f41b7cd853f62073b64cc2a7e26e82510b","unresolved":false,"context_lines":[{"line_number":157,"context_line":"        self.assertFalse(result)"},{"line_number":158,"context_line":"        self.assertTrue(self.mixin._get_subnet.called)"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    def test_validate_gw_out_of_pools_gw_none(self):"},{"line_number":161,"context_line":"        self.mixin.validate_gw_out_of_pools("},{"line_number":162,"context_line":"            None, netaddr.IPRange(\u0027192.168.10.1\u0027, \u0027192.168.10.254\u0027))"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa80f949_5502fe3f","line":160,"updated":"2015-11-03 10:22:55.000000000","message":"This method name is not descriptive.","commit_id":"c106ad6dd1e419c238f9d1fb1c7e6fb0800eac3f"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"1d879921df64bee642a4184570fe82aee56bad00","unresolved":false,"context_lines":[{"line_number":157,"context_line":"        self.assertFalse(result)"},{"line_number":158,"context_line":"        self.assertTrue(self.mixin._get_subnet.called)"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    def test_validate_gw_out_of_pools_gw_none(self):"},{"line_number":161,"context_line":"        self.mixin.validate_gw_out_of_pools("},{"line_number":162,"context_line":"            None, netaddr.IPRange(\u0027192.168.10.1\u0027, \u0027192.168.10.254\u0027))"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa80f949_436ea0ca","line":160,"in_reply_to":"fa80f949_5502fe3f","updated":"2015-11-04 02:22:24.000000000","message":"agree","commit_id":"c106ad6dd1e419c238f9d1fb1c7e6fb0800eac3f"},{"author":{"_account_id":4656,"name":"Sean M. Collins","email":"sean@coreitpro.com","username":"scollins"},"change_message_id":"52fca4f41b7cd853f62073b64cc2a7e26e82510b","unresolved":false,"context_lines":[{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    def test_validate_gw_out_of_pools_gw_none(self):"},{"line_number":161,"context_line":"        self.mixin.validate_gw_out_of_pools("},{"line_number":162,"context_line":"            None, netaddr.IPRange(\u0027192.168.10.1\u0027, \u0027192.168.10.254\u0027))"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa80f949_95e706ac","line":162,"updated":"2015-11-03 10:22:55.000000000","message":"Please add an assert to ensure that this is functioning correctly.","commit_id":"c106ad6dd1e419c238f9d1fb1c7e6fb0800eac3f"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"1d879921df64bee642a4184570fe82aee56bad00","unresolved":false,"context_lines":[{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    def test_validate_gw_out_of_pools_gw_none(self):"},{"line_number":161,"context_line":"        self.mixin.validate_gw_out_of_pools("},{"line_number":162,"context_line":"            None, netaddr.IPRange(\u0027192.168.10.1\u0027, \u0027192.168.10.254\u0027))"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa80f949_c3905098","line":162,"in_reply_to":"fa80f949_95e706ac","updated":"2015-11-04 02:22:24.000000000","message":"I think it does need assert, if validate_gw_out_of_pools fail, it will raise Exception, this test will fail, what do you think?","commit_id":"c106ad6dd1e419c238f9d1fb1c7e6fb0800eac3f"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"17843f17acfc68e364cba999b83ac92da52b636f","unresolved":false,"context_lines":[{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    def test_validate_gw_out_of_pools_gw_none(self):"},{"line_number":161,"context_line":"        self.mixin.validate_gw_out_of_pools("},{"line_number":162,"context_line":"            None, netaddr.IPRange(\u0027192.168.10.1\u0027, \u0027192.168.10.254\u0027))"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa80f949_0b82ee00","line":162,"in_reply_to":"fa80f949_c3905098","updated":"2015-11-04 05:22:04.000000000","message":"If you expect an exception to be raised, please use assertRaises() to test the scenario in which the specific exception you expect should be raised.  It is better to explicitly assert both failure and success cases.  There are at least 2 tests that can be written here: 1 to assert success with parameters expected to be valid and 1 to assert an exception is raised when invalid parameters are passed.","commit_id":"c106ad6dd1e419c238f9d1fb1c7e6fb0800eac3f"}]}
