)]}'
{"swift/common/ring/utils.py":[{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"c744b2ea45cd2aa291b9cf9dc0f0520989c90599","unresolved":false,"context_lines":[{"line_number":255,"context_line":"        match[\u0027port\u0027] \u003d int(search_value[1:i])"},{"line_number":256,"context_line":"        search_value \u003d search_value[i:]"},{"line_number":257,"context_line":"    # replication parameters"},{"line_number":258,"context_line":"    if search_value.startswith(\u0027|\u0027):"},{"line_number":259,"context_line":"        search_value \u003d search_value[1:]"},{"line_number":260,"context_line":"        if len(search_value)\\"},{"line_number":261,"context_line":"                and search_value[0] !\u003d \u0027[\u0027\\"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAVn%2F%2Fm4s%3D","line":258,"updated":"2014-03-05 03:37:18.000000000","message":"IMHO this is not good enough. The patch should have supported the old syntax too (of course it could not be used with hostnames, but what if they are not hostnames). I don\u0027t see a compelling reason to break compatibility here.","commit_id":"23101bd81d2a798102ea1e057116b83b67a17a8b"},{"author":{"_account_id":2649,"name":"Zhang Hua","email":"zhuadl@cn.ibm.com","username":"zhang-hare"},"change_message_id":"ecf7a85a554b35ac3e564050c24bf4d90808c6b7","unresolved":false,"context_lines":[{"line_number":189,"context_line":"        \"|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]\""},{"line_number":190,"context_line":"        \"{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.\""},{"line_number":191,"context_line":"        \"(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*$\")"},{"line_number":192,"context_line":"    return allowed.match(ip) is not None"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"def is_valid_hostname(hostname):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAVn%2F%2BzPo%3D","line":192,"updated":"2014-03-12 03:20:42.000000000","message":"for IPv4 and IPv6 address manipulation, why not use python standard library such as netaddr? this library is heavily used in Neutron project.","commit_id":"a2334e4375c7da0b6cbed71b0f436f4e554f9ad5"},{"author":{"_account_id":7736,"name":"Alex Pecoraro","email":"alex.pecoraro@emc.com","username":"alexpec"},"change_message_id":"db86da87a506af714800d2d0dbfbcfcc340d91cf","unresolved":false,"context_lines":[{"line_number":189,"context_line":"        \"|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]\""},{"line_number":190,"context_line":"        \"{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.\""},{"line_number":191,"context_line":"        \"(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*$\")"},{"line_number":192,"context_line":"    return allowed.match(ip) is not None"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"def is_valid_hostname(hostname):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAWH%2F%2F6%2Bk%3D","line":192,"in_reply_to":"AAAAVn%2F%2BzPo%3D","updated":"2014-03-12 22:43:48.000000000","message":"I wasn\u0027t aware of that library until now. Seems like it could simplify the code by handling IP address validation and IP address matching when searching. Then I could eliminate the is_valid_ip*() functions and the expand_ipv6() function in swift/common/utils.py.","commit_id":"a2334e4375c7da0b6cbed71b0f436f4e554f9ad5"}]}
