)]}'
{"neutron/agent/linux/ip_lib.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"69f5d23cc93a088d61ea3f859def21242c597f84","unresolved":false,"context_lines":[{"line_number":535,"context_line":"            parts \u003d default_route_line.split()"},{"line_number":536,"context_line":"            if \u0027via\u0027 in parts:"},{"line_number":537,"context_line":"                gateway_index \u003d parts.index(\u0027via\u0027) + 1"},{"line_number":538,"context_line":"                retval.update(gateway\u003dparts[gateway_index])"},{"line_number":539,"context_line":"            if \u0027metric\u0027 in parts:"},{"line_number":540,"context_line":"                metric_index \u003d parts.index(\u0027metric\u0027) + 1"},{"line_number":541,"context_line":"                retval.update(metric\u003dint(parts[metric_index]))"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa32b979_96a2604a","line":538,"updated":"2015-06-22 20:59:05.000000000","message":"Callers will get a KeyError when they try and reference retval[\u0027gateway\u0027] so they will need some cleanup.  Might only be in dhcp.py","commit_id":"eb648c0c278f8394946b47f516ee64ff3609a158"},{"author":{"_account_id":10257,"name":"Sridhar Gaddam","email":"sgaddam@redhat.com","username":"sridhargaddam"},"change_message_id":"7e0f3b4039479ef614ebbb19ffbfa30628482ec7","unresolved":false,"context_lines":[{"line_number":535,"context_line":"            parts \u003d default_route_line.split()"},{"line_number":536,"context_line":"            if \u0027via\u0027 in parts:"},{"line_number":537,"context_line":"                gateway_index \u003d parts.index(\u0027via\u0027) + 1"},{"line_number":538,"context_line":"                retval.update(gateway\u003dparts[gateway_index])"},{"line_number":539,"context_line":"            if \u0027metric\u0027 in parts:"},{"line_number":540,"context_line":"                metric_index \u003d parts.index(\u0027metric\u0027) + 1"},{"line_number":541,"context_line":"                retval.update(metric\u003dint(parts[metric_index]))"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa32b979_baec0cf4","line":538,"in_reply_to":"fa32b979_96a2604a","updated":"2015-06-23 11:32:28.000000000","message":"Thanks @Brian for reviewing the patch.","commit_id":"eb648c0c278f8394946b47f516ee64ff3609a158"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"c28551a537c921ea32d5d4a68127aeede62405d1","unresolved":false,"context_lines":[{"line_number":533,"context_line":"        if default_route_line:"},{"line_number":534,"context_line":"            retval \u003d dict()"},{"line_number":535,"context_line":"            parts \u003d default_route_line.split()"},{"line_number":536,"context_line":"            if \u0027via\u0027 in parts:"},{"line_number":537,"context_line":"                gateway_index \u003d parts.index(\u0027via\u0027) + 1"},{"line_number":538,"context_line":"                retval.update(gateway\u003dparts[gateway_index])"},{"line_number":539,"context_line":"            if \u0027metric\u0027 in parts:"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa32b979_f0a11ef8","line":536,"updated":"2015-06-24 11:53:39.000000000","message":"Can you get the gateway with regular expression instead?","commit_id":"d06ab3421eb0e88d6afcd5be1562c20c1f9eea99"},{"author":{"_account_id":10257,"name":"Sridhar Gaddam","email":"sgaddam@redhat.com","username":"sridhargaddam"},"change_message_id":"ff93e273918d3377dcb5a26ef6ba38db6fac8d8c","unresolved":false,"context_lines":[{"line_number":533,"context_line":"        if default_route_line:"},{"line_number":534,"context_line":"            retval \u003d dict()"},{"line_number":535,"context_line":"            parts \u003d default_route_line.split()"},{"line_number":536,"context_line":"            if \u0027via\u0027 in parts:"},{"line_number":537,"context_line":"                gateway_index \u003d parts.index(\u0027via\u0027) + 1"},{"line_number":538,"context_line":"                retval.update(gateway\u003dparts[gateway_index])"},{"line_number":539,"context_line":"            if \u0027metric\u0027 in parts:"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa32b979_e80a8a1f","line":536,"in_reply_to":"fa32b979_1c64d81f","updated":"2015-06-24 14:49:07.000000000","message":"Done","commit_id":"d06ab3421eb0e88d6afcd5be1562c20c1f9eea99"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"945d77b73a5bc7a6c9610ee00af5bf4b82229b27","unresolved":false,"context_lines":[{"line_number":533,"context_line":"        if default_route_line:"},{"line_number":534,"context_line":"            retval \u003d dict()"},{"line_number":535,"context_line":"            parts \u003d default_route_line.split()"},{"line_number":536,"context_line":"            if \u0027via\u0027 in parts:"},{"line_number":537,"context_line":"                gateway_index \u003d parts.index(\u0027via\u0027) + 1"},{"line_number":538,"context_line":"                retval.update(gateway\u003dparts[gateway_index])"},{"line_number":539,"context_line":"            if \u0027metric\u0027 in parts:"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa32b979_1c64d81f","line":536,"in_reply_to":"fa32b979_3090e642","updated":"2015-06-24 14:03:37.000000000","message":"No issue but this is harder to understand and regular expressions are created exactly for this purpose. The fact that metrics already use it wrong way is not a good argument :) Maybe we should should fix it there as well.","commit_id":"d06ab3421eb0e88d6afcd5be1562c20c1f9eea99"},{"author":{"_account_id":10257,"name":"Sridhar Gaddam","email":"sgaddam@redhat.com","username":"sridhargaddam"},"change_message_id":"ba149805c8f13f640d0f31286a3832c9dd629ff9","unresolved":false,"context_lines":[{"line_number":533,"context_line":"        if default_route_line:"},{"line_number":534,"context_line":"            retval \u003d dict()"},{"line_number":535,"context_line":"            parts \u003d default_route_line.split()"},{"line_number":536,"context_line":"            if \u0027via\u0027 in parts:"},{"line_number":537,"context_line":"                gateway_index \u003d parts.index(\u0027via\u0027) + 1"},{"line_number":538,"context_line":"                retval.update(gateway\u003dparts[gateway_index])"},{"line_number":539,"context_line":"            if \u0027metric\u0027 in parts:"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa32b979_3090e642","line":536,"in_reply_to":"fa32b979_f0a11ef8","updated":"2015-06-24 11:59:59.000000000","message":"IMO this simpler instead of regular expression and we are using it already for metric. Do you see any issue in this Jakub?","commit_id":"d06ab3421eb0e88d6afcd5be1562c20c1f9eea99"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"07851a9ebbe8e60232b3061298351f12b2224813","unresolved":false,"context_lines":[{"line_number":533,"context_line":"                                   x.strip().startswith(\u0027default\u0027)), None)"},{"line_number":534,"context_line":"        if default_route_line:"},{"line_number":535,"context_line":"            retval \u003d dict()"},{"line_number":536,"context_line":"            gateway \u003d re.search(r\"via (\\S+)\", default_route_line)"},{"line_number":537,"context_line":"            if gateway:"},{"line_number":538,"context_line":"                retval.update(gateway\u003dgateway.group(1))"},{"line_number":539,"context_line":"            metric \u003d re.search(r\"metric (\\S+)\", default_route_line)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa32b979_1ec0e97b","line":536,"updated":"2015-06-26 11:18:26.000000000","message":"can we compile those re expressions statically in the module and then use the compiled version?\n\nOtherwise RE\u0027s take a lot of CPU time to compile each time.","commit_id":"5817bae553f819d3b41ae0ec6d97ca093695a337"},{"author":{"_account_id":10257,"name":"Sridhar Gaddam","email":"sgaddam@redhat.com","username":"sridhargaddam"},"change_message_id":"11cdcc8f498c782e3d4ba149a06ed4cb264fae4a","unresolved":false,"context_lines":[{"line_number":533,"context_line":"                                   x.strip().startswith(\u0027default\u0027)), None)"},{"line_number":534,"context_line":"        if default_route_line:"},{"line_number":535,"context_line":"            retval \u003d dict()"},{"line_number":536,"context_line":"            gateway \u003d re.search(r\"via (\\S+)\", default_route_line)"},{"line_number":537,"context_line":"            if gateway:"},{"line_number":538,"context_line":"                retval.update(gateway\u003dgateway.group(1))"},{"line_number":539,"context_line":"            metric \u003d re.search(r\"metric (\\S+)\", default_route_line)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa32b979_a708ccda","line":536,"in_reply_to":"fa32b979_1ec0e97b","updated":"2015-06-26 12:25:17.000000000","message":"Done","commit_id":"5817bae553f819d3b41ae0ec6d97ca093695a337"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"07851a9ebbe8e60232b3061298351f12b2224813","unresolved":false,"context_lines":[{"line_number":536,"context_line":"            gateway \u003d re.search(r\"via (\\S+)\", default_route_line)"},{"line_number":537,"context_line":"            if gateway:"},{"line_number":538,"context_line":"                retval.update(gateway\u003dgateway.group(1))"},{"line_number":539,"context_line":"            metric \u003d re.search(r\"metric (\\S+)\", default_route_line)"},{"line_number":540,"context_line":"            if metric:"},{"line_number":541,"context_line":"                retval.update(metric\u003dint(metric.group(1)))"},{"line_number":542,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa32b979_deb92117","line":539,"updated":"2015-06-26 11:18:26.000000000","message":"ditto.","commit_id":"5817bae553f819d3b41ae0ec6d97ca093695a337"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"240a1972857c7a9258555bb30a219a0ba8dd98f3","unresolved":false,"context_lines":[{"line_number":533,"context_line":"                                   x.strip().startswith(\u0027default\u0027)), None)"},{"line_number":534,"context_line":"        if default_route_line:"},{"line_number":535,"context_line":"            retval \u003d dict()"},{"line_number":536,"context_line":"            pattern \u003d re.compile(r\"via (\\S+)\")"},{"line_number":537,"context_line":"            gateway \u003d pattern.search(default_route_line)"},{"line_number":538,"context_line":"            if gateway:"},{"line_number":539,"context_line":"                retval.update(gateway\u003dgateway.group(1))"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa32b979_47e540da","line":536,"updated":"2015-06-26 12:30:50.000000000","message":"The pattern should be on module level, somewhere around L39. The reason to have pre-compiled pattern is that pattern doesn\u0027t change, it\u0027s a constant. So you don\u0027t need to compile every time you do the search.\n\nso you would have two patterns\n\n DEFAULT_GW_PATTERN \u003d re.compile(r\"via (\\S+)\")\n METRIC_PATTERN \u003d re.compile(r\"metric (\\S+)\")\n\non L39 and then here this code will just use the patterns:\n\n gateway \u003d DEFAULT_GW_PATTERN.search(default_route_line)","commit_id":"7c4922b346acba7c618c5e1e8613100d8d78e0e2"},{"author":{"_account_id":10257,"name":"Sridhar Gaddam","email":"sgaddam@redhat.com","username":"sridhargaddam"},"change_message_id":"2ad651759e79f36aaec010df01b266dbf8fb87c9","unresolved":false,"context_lines":[{"line_number":533,"context_line":"                                   x.strip().startswith(\u0027default\u0027)), None)"},{"line_number":534,"context_line":"        if default_route_line:"},{"line_number":535,"context_line":"            retval \u003d dict()"},{"line_number":536,"context_line":"            pattern \u003d re.compile(r\"via (\\S+)\")"},{"line_number":537,"context_line":"            gateway \u003d pattern.search(default_route_line)"},{"line_number":538,"context_line":"            if gateway:"},{"line_number":539,"context_line":"                retval.update(gateway\u003dgateway.group(1))"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa32b979_e7a57447","line":536,"in_reply_to":"fa32b979_47e540da","updated":"2015-06-26 12:38:04.000000000","message":"Thanks Jakub. I\u0027ll update the patch accordingly.","commit_id":"7c4922b346acba7c618c5e1e8613100d8d78e0e2"}]}
