)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":14611,"name":"dasm","display_name":"dasm","email":"dsmigiel@redhat.com","username":"dasm"},"change_message_id":"2aacf81b77205400ae1d00de32f9523586ecf8ac","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Manjeet Singh Bhatia \u003cmanjeet.s.bhatia@intel.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-09-27 18:28:44 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Integrate SubnetRoute OVO,"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch will replace the direct use of SubnetRoute model"},{"line_number":10,"context_line":"with Route ovo from objects/subnet.py"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"fa6399be_0e149bf3","line":7,"range":{"start_line":7,"start_character":25,"end_line":7,"end_character":26},"updated":"2016-10-10 20:53:48.000000000","message":"nit: remove comma","commit_id":"5436860a2c7a530a7dce785f71763e13e8777ccd"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"3acef8fdc64f53fc2bb9c55f9525561d1735c7e6","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Manjeet Singh Bhatia \u003cmanjeet.s.bhatia@intel.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-09-27 18:28:44 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Integrate SubnetRoute OVO,"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch will replace the direct use of SubnetRoute model"},{"line_number":10,"context_line":"with Route ovo from objects/subnet.py"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"fa6399be_09b9f5e9","line":7,"range":{"start_line":7,"start_character":25,"end_line":7,"end_character":26},"in_reply_to":"fa6399be_0e149bf3","updated":"2016-10-10 21:24:37.000000000","message":"Done","commit_id":"5436860a2c7a530a7dce785f71763e13e8777ccd"}],"neutron/db/ipam_backend_mixin.py":[{"author":{"_account_id":15518,"name":"Artur Korzeniewski","email":"artur.korzen@wp.pl","username":"akorzeni"},"change_message_id":"c4c41397bd4d14d753c1bdbc06c44f0ef6761818","unresolved":false,"context_lines":[{"line_number":130,"context_line":"                    context.session.delete(route)"},{"line_number":131,"context_line":"        for route_str in new_route_set - old_route_set:"},{"line_number":132,"context_line":"            route \u003d subnet_obj.Route(context,"},{"line_number":133,"context_line":"                destination\u003droute_str.partition(\"_\")[0],"},{"line_number":134,"context_line":"                nexthop\u003droute_str.partition(\"_\")[2],"},{"line_number":135,"context_line":"                subnet_id\u003did)"},{"line_number":136,"context_line":"            route.create()"},{"line_number":137,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5a8bc5a2_c1938759","line":134,"range":{"start_line":133,"start_character":16,"end_line":134,"end_character":52},"updated":"2016-09-27 09:09:34.000000000","message":"You need to convert the destination to utils.AuthenticIPNetwork and nexthop to netaddr.IPAddress, before you pass it to Route constructor.","commit_id":"d5c6638aebb00110e2199bdfe0b467bde4aaeaad"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"a09531f34948d65c072bbf2b93ca6e2e129e4d08","unresolved":false,"context_lines":[{"line_number":130,"context_line":"                    context.session.delete(route)"},{"line_number":131,"context_line":"        for route_str in new_route_set - old_route_set:"},{"line_number":132,"context_line":"            route \u003d subnet_obj.Route(context,"},{"line_number":133,"context_line":"                destination\u003droute_str.partition(\"_\")[0],"},{"line_number":134,"context_line":"                nexthop\u003droute_str.partition(\"_\")[2],"},{"line_number":135,"context_line":"                subnet_id\u003did)"},{"line_number":136,"context_line":"            route.create()"},{"line_number":137,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5a8bc5a2_c629b88b","line":134,"range":{"start_line":133,"start_character":16,"end_line":134,"end_character":52},"in_reply_to":"5a8bc5a2_c1938759","updated":"2016-09-27 18:34:14.000000000","message":"yea + also need conversion back to str when in api destination and nexthop are concatenated, done both","commit_id":"d5c6638aebb00110e2199bdfe0b467bde4aaeaad"},{"author":{"_account_id":15518,"name":"Artur Korzeniewski","email":"artur.korzen@wp.pl","username":"akorzeni"},"change_message_id":"c4c41397bd4d14d753c1bdbc06c44f0ef6761818","unresolved":false,"context_lines":[{"line_number":543,"context_line":"                route \u003d subnet_obj.Route("},{"line_number":544,"context_line":"                    context,"},{"line_number":545,"context_line":"                    subnet_id\u003dsubnet.id,"},{"line_number":546,"context_line":"                    destination\u003drt[\u0027destination\u0027],"},{"line_number":547,"context_line":"                    nexthop\u003drt[\u0027nexthop\u0027])"},{"line_number":548,"context_line":"                route.create()"},{"line_number":549,"context_line":""},{"line_number":550,"context_line":"        if validators.is_attr_set(service_types):"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a8bc5a2_6181d3fa","line":547,"range":{"start_line":546,"start_character":20,"end_line":547,"end_character":42},"updated":"2016-09-27 09:09:34.000000000","message":"ditto line 133-134.","commit_id":"d5c6638aebb00110e2199bdfe0b467bde4aaeaad"},{"author":{"_account_id":14611,"name":"dasm","display_name":"dasm","email":"dsmigiel@redhat.com","username":"dasm"},"change_message_id":"2aacf81b77205400ae1d00de32f9523586ecf8ac","unresolved":false,"context_lines":[{"line_number":114,"context_line":"    def _update_subnet_host_routes(self, context, id, s):"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        def _combine(ht):"},{"line_number":117,"context_line":"            return str(ht[\u0027destination\u0027]) + \"_\" + str(ht[\u0027nexthop\u0027])"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        old_route_list \u003d self._get_route_by_subnet(context, id)"},{"line_number":120,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"fa6399be_2ee79f13","line":117,"range":{"start_line":117,"start_character":19,"end_line":117,"end_character":68},"updated":"2016-10-10 20:53:48.000000000","message":"Instead of this, you can do\n\n return \"{}_{}\".format(ht[\u0027destination\u0027], ht[\u0027nexthop\u0027])\n\nYou won\u0027t need to cast it at string.","commit_id":"5436860a2c7a530a7dce785f71763e13e8777ccd"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"30119199a12e0d37cf2a743862edea354cf796fa","unresolved":false,"context_lines":[{"line_number":114,"context_line":"    def _update_subnet_host_routes(self, context, id, s):"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        def _combine(ht):"},{"line_number":117,"context_line":"            return str(ht[\u0027destination\u0027]) + \"_\" + str(ht[\u0027nexthop\u0027])"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        old_route_list \u003d self._get_route_by_subnet(context, id)"},{"line_number":120,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1a95cdbc_0e946089","line":117,"updated":"2016-10-05 15:12:11.000000000","message":"This seems unrelated, but I suspect its bc this needs to handle the possibility of destination and nexthop being AuthenticIPNetwork (or IPNetworkField) and netaddr.IPAddress.","commit_id":"5436860a2c7a530a7dce785f71763e13e8777ccd"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"d4e234602faccdb54541efa54bba866f6f776b78","unresolved":false,"context_lines":[{"line_number":114,"context_line":"    def _update_subnet_host_routes(self, context, id, s):"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        def _combine(ht):"},{"line_number":117,"context_line":"            return str(ht[\u0027destination\u0027]) + \"_\" + str(ht[\u0027nexthop\u0027])"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        old_route_list \u003d self._get_route_by_subnet(context, id)"},{"line_number":120,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1a95cdbc_f67c66ed","line":117,"in_reply_to":"1a95cdbc_0e946089","updated":"2016-10-05 16:07:03.000000000","message":"the concatenation b/w different types can not be done and somewhere in api it was expecting string but in object it is using type AuthenticIPNetwork and IPNetworkField. \n\nthe \"_\" is string,","commit_id":"5436860a2c7a530a7dce785f71763e13e8777ccd"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"3acef8fdc64f53fc2bb9c55f9525561d1735c7e6","unresolved":false,"context_lines":[{"line_number":114,"context_line":"    def _update_subnet_host_routes(self, context, id, s):"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        def _combine(ht):"},{"line_number":117,"context_line":"            return str(ht[\u0027destination\u0027]) + \"_\" + str(ht[\u0027nexthop\u0027])"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        old_route_list \u003d self._get_route_by_subnet(context, id)"},{"line_number":120,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"fa6399be_a9b9e9ee","line":117,"range":{"start_line":117,"start_character":19,"end_line":117,"end_character":68},"in_reply_to":"fa6399be_2ee79f13","updated":"2016-10-10 21:24:37.000000000","message":"I consider doing it for readability but wouldn\u0027t it still be string all together ? not much a difference from what it is now","commit_id":"5436860a2c7a530a7dce785f71763e13e8777ccd"},{"author":{"_account_id":22774,"name":"Shashank Kumar Shankar","email":"shashank.kumar.shankar@intel.com","username":"skshankar"},"change_message_id":"db0c114da4acf923cba2f8e758f22e3852ce01d9","unresolved":false,"context_lines":[{"line_number":132,"context_line":"            route \u003d subnet_obj.Route(context,"},{"line_number":133,"context_line":"                destination\u003dcommon_utils.AuthenticIPNetwork("},{"line_number":134,"context_line":"                    route_str.partition(\"_\")[0]),"},{"line_number":135,"context_line":"                nexthop\u003dnetaddr.IPAddress(route_str.partition(\"_\")[2]),"},{"line_number":136,"context_line":"                subnet_id\u003did)"},{"line_number":137,"context_line":"            route.create()"},{"line_number":138,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5a8bc5a2_7fc78264","line":135,"updated":"2016-09-27 21:40:58.000000000","message":"Any reason why common_utils.AuthenticIPNetwork() for destination and netaddr.IPAddress() for nexthop is used? In model, both are obtained in a similar way.","commit_id":"5436860a2c7a530a7dce785f71763e13e8777ccd"},{"author":{"_account_id":15518,"name":"Artur Korzeniewski","email":"artur.korzen@wp.pl","username":"akorzeni"},"change_message_id":"042437fcc6c2c5dcd905b16d4141bb54fbcfc57f","unresolved":false,"context_lines":[{"line_number":132,"context_line":"            route \u003d subnet_obj.Route(context,"},{"line_number":133,"context_line":"                destination\u003dcommon_utils.AuthenticIPNetwork("},{"line_number":134,"context_line":"                    route_str.partition(\"_\")[0]),"},{"line_number":135,"context_line":"                nexthop\u003dnetaddr.IPAddress(route_str.partition(\"_\")[2]),"},{"line_number":136,"context_line":"                subnet_id\u003did)"},{"line_number":137,"context_line":"            route.create()"},{"line_number":138,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5a8bc5a2_28085091","line":135,"in_reply_to":"5a8bc5a2_7fc78264","updated":"2016-09-28 08:23:24.000000000","message":"common_utils.AuthenticIPNetwork() was added by Ihar, because netaddr.IPNetwork does not hold the original string with CIDR passed by API user. Which was failing UT since the tests were expecting the same CIDR string they passed into object under test.","commit_id":"5436860a2c7a530a7dce785f71763e13e8777ccd"}]}
