)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"700680135ce7acda54dd2a45d86cb8a657e390e6","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Validating ip addresses for ipv4 and ipv6 formats have more generic"},{"line_number":10,"context_line":"use cases outside of rings. swift-get-nodes and other utilities that"},{"line_number":11,"context_line":"need to handle ipv6 adrresses often require importing ip validation"},{"line_number":12,"context_line":"methods from swift/common/rings/utils. Also, expand_ipv6 method"},{"line_number":13,"context_line":"already exists in swift/common/utils. Hence moving validation of"},{"line_number":14,"context_line":"ips also into swift/common/utils from swift/common/ring/utils."},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"bacf61ea_7ace8c5b","line":12,"updated":"2016-07-27 23:27:43.000000000","message":"No they don\u0027t?  Are you speaking fourth-dimensionally about an upcoming change?","commit_id":"85b4b8a28054db87817c0359b34668a6cacaf1e6"},{"author":{"_account_id":18334,"name":"Nandini Tata","email":"nandini.tata@intel.com","username":"ntata"},"change_message_id":"585d6bab01dc8ed559dd9b5c1aa7ee8ba008a802","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Validating ip addresses for ipv4 and ipv6 formats have more generic"},{"line_number":10,"context_line":"use cases outside of rings. swift-get-nodes and other utilities that"},{"line_number":11,"context_line":"need to handle ipv6 adrresses often require importing ip validation"},{"line_number":12,"context_line":"methods from swift/common/rings/utils. Also, expand_ipv6 method"},{"line_number":13,"context_line":"already exists in swift/common/utils. Hence moving validation of"},{"line_number":14,"context_line":"ips also into swift/common/utils from swift/common/ring/utils."},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"bacf61ea_ccd886f2","line":12,"in_reply_to":"bacf61ea_7ace8c5b","updated":"2016-07-28 13:56:38.000000000","message":"I was referring to a scenario close to this - https://review.openstack.org/#/c/291959/ . I didn\u0027t like the idea of trying to look for ip validations from swift/common/ring/utils. Plus, the expand_ipv6 is currently existing in the swift/common/utils. They\u0027re all just spread out and confusing to find.","commit_id":"85b4b8a28054db87817c0359b34668a6cacaf1e6"}],"swift/cli/info.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"0a3de345f7a03ba867ec00c17a11b7922d6c35ec","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from swift.common.utils import hash_path, storage_directory, \\"},{"line_number":22,"context_line":"    Timestamp"},{"line_number":23,"context_line":"from swift.common.ring import Ring, utils as ring_utils"},{"line_number":24,"context_line":"from swift.common.request_helpers import is_sys_meta, is_user_meta, \\"},{"line_number":25,"context_line":"    strip_sys_meta_prefix, strip_user_meta_prefix"},{"line_number":26,"context_line":"from swift.account.backend import AccountBroker, DATADIR as ABDATADIR"}],"source_content_type":"text/x-python","patch_set":2,"id":"bacf61ea_854f6ebc","side":"PARENT","line":23,"updated":"2016-07-28 19:24:31.000000000","message":"see get\u0027s rid of import from ring_utils, win!","commit_id":"457cea864c4b49bcf79327369c0bc5ebc24668e2"}],"swift/common/ring/utils.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"700680135ce7acda54dd2a45d86cb8a657e390e6","unresolved":false,"context_lines":[{"line_number":137,"context_line":"    Otherwise raise ValueError Exception. The hostname is"},{"line_number":138,"context_line":"    normalized to all lower case. IPv6-addresses are converted to"},{"line_number":139,"context_line":"    lowercase and fully expanded."},{"line_number":140,"context_line":"    \"\"\""},{"line_number":141,"context_line":"    # first convert to lower case"},{"line_number":142,"context_line":"    new_ip \u003d ip.lower()"},{"line_number":143,"context_line":"    if is_valid_ipv4(new_ip):"}],"source_content_type":"text/x-python","patch_set":1,"id":"bacf61ea_7af5ec81","line":140,"updated":"2016-07-27 23:27:43.000000000","message":"Why does this one get to stay?","commit_id":"85b4b8a28054db87817c0359b34668a6cacaf1e6"},{"author":{"_account_id":18334,"name":"Nandini Tata","email":"nandini.tata@intel.com","username":"ntata"},"change_message_id":"585d6bab01dc8ed559dd9b5c1aa7ee8ba008a802","unresolved":false,"context_lines":[{"line_number":137,"context_line":"    Otherwise raise ValueError Exception. The hostname is"},{"line_number":138,"context_line":"    normalized to all lower case. IPv6-addresses are converted to"},{"line_number":139,"context_line":"    lowercase and fully expanded."},{"line_number":140,"context_line":"    \"\"\""},{"line_number":141,"context_line":"    # first convert to lower case"},{"line_number":142,"context_line":"    new_ip \u003d ip.lower()"},{"line_number":143,"context_line":"    if is_valid_ipv4(new_ip):"}],"source_content_type":"text/x-python","patch_set":1,"id":"bacf61ea_8c404e58","line":140,"in_reply_to":"bacf61ea_7af5ec81","updated":"2016-07-28 13:56:38.000000000","message":"Good question. I just didn\u0027t find a use case that\u0027s normalizing IPs outside of rings as much as this method just returns a valid ipv4 and an expanded ipv6. Continuing my previous comment, it will be a good idea to move this along with ip validations so all the IP related utils are together.","commit_id":"85b4b8a28054db87817c0359b34668a6cacaf1e6"},{"author":{"_account_id":18334,"name":"Nandini Tata","email":"nandini.tata@intel.com","username":"ntata"},"change_message_id":"585d6bab01dc8ed559dd9b5c1aa7ee8ba008a802","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        raise ValueError(\u0027Invalid ip %s\u0027 % ip)"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"def validate_and_normalize_address(address):"},{"line_number":152,"context_line":"    \"\"\""},{"line_number":153,"context_line":"    Return normalized address if the address is a valid ip or hostname."},{"line_number":154,"context_line":"    Otherwise raise ValueError Exception. The hostname is"}],"source_content_type":"text/x-python","patch_set":1,"id":"bacf61ea_c7485f30","line":151,"updated":"2016-07-28 13:56:38.000000000","message":"@clayg: This method checks for ip/hostname. If all the IP related stuff get to be moved, will this stay here?","commit_id":"85b4b8a28054db87817c0359b34668a6cacaf1e6"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"0a3de345f7a03ba867ec00c17a11b7922d6c35ec","unresolved":false,"context_lines":[{"line_number":18,"context_line":"import socket"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from swift.common.utils import expand_ipv6, is_valid_ip, is_valid_ipv4, \\"},{"line_number":21,"context_line":"    is_valid_ipv6"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"def tiers_for_dev(dev):"}],"source_content_type":"text/x-python","patch_set":2,"id":"bacf61ea_25fe8238","line":21,"updated":"2016-07-28 19:24:31.000000000","message":"it\u0027s even backwards compat because it drops these names right in the same namespace (i grepped and no one in *our* tree seems to be using them) - win!","commit_id":"5c9732ac8e797e9235ccd6df56253a802e517ab6"}],"swift/common/utils.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"0a3de345f7a03ba867ec00c17a11b7922d6c35ec","unresolved":false,"context_lines":[{"line_number":2918,"context_line":""},{"line_number":2919,"context_line":"    :returns: a string ip address"},{"line_number":2920,"context_line":"    \"\"\""},{"line_number":2921,"context_line":"    return \u0027[%s]\u0027 % ip if is_valid_ipv6(ip) else ip"},{"line_number":2922,"context_line":""},{"line_number":2923,"context_line":""},{"line_number":2924,"context_line":"def rsync_module_interpolation(template, device):"}],"source_content_type":"text/x-python","patch_set":2,"id":"bacf61ea_25d7a2c0","line":2921,"updated":"2016-07-28 19:24:31.000000000","message":"omg look at the DRY - win!","commit_id":"5c9732ac8e797e9235ccd6df56253a802e517ab6"}]}
