)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"3e96ab8c762a3e57924ff76293ccdf4bc93e7971","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"It turned out we can\u0027t rely on get_server_public_ip to get an"},{"line_number":10,"context_line":"externally reachable IP of servers because not always floating IPs"},{"line_number":11,"context_line":"are used and not always are what the caller is looking for."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"get_server_external_ipv4() tries hard to provide an IP address of the"},{"line_number":14,"context_line":"given server that can be reached from networks that are external to"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"fa32b979_e6feab37","line":11,"updated":"2015-06-16 01:35:31.000000000","message":"If we do another iteration, perhaps \"because floating IPs are not always used and are not always what the caller is looking for.\" ?","commit_id":"07f72e19f585138994eed2a446aec53ab3b90705"},{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"3e96ab8c762a3e57924ff76293ccdf4bc93e7971","unresolved":false,"context_lines":[{"line_number":17,"context_line":"servers with multiple interfaces) it could not be possible to"},{"line_number":18,"context_line":"reliably determine those IP addresses."},{"line_number":19,"context_line":"Those clouds are corner cases that are not supported by"},{"line_number":20,"context_line":"get_server_external_ipv4()"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Co-Authored-By: Monty Taylor \u003cmordred@inaugust.com\u003e"},{"line_number":23,"context_line":"Change-Id: I099193437d0f45cfda78923349e500e9b2e0e053"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"fa32b979_86fd5f3c","line":20,"updated":"2015-06-16 01:35:31.000000000","message":"I wonder if we can put that in the docstring of the method.","commit_id":"07f72e19f585138994eed2a446aec53ab3b90705"}],"shade/meta.py":[{"author":{"_account_id":6550,"name":"Davide Guerri","email":"davide.guerri@gmail.com","username":"davide-guerri"},"change_message_id":"6e7b71dbf8064c4e74f82ab59700f420c17635e8","unresolved":false,"context_lines":[{"line_number":78,"context_line":"    ip \u003d get_server_ip(server, ext_tag\u003d\u0027floating\u0027)"},{"line_number":79,"context_line":"    if ip is not None:"},{"line_number":80,"context_line":"        return ip"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    return get_server_ip(server, ext_tag\u003d\u0027fixed\u0027)"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3afb71cf_6c6dd397","line":81,"updated":"2015-06-07 07:30:43.000000000","message":"If this cloud supports floating IPs, and we are here in the code, we should return None as a floating IP has not yet been attached.\n\nIf this cloud doesn\u0027t support floating IPs, then we can return a fixed. This is Rax!","commit_id":"5d88f4d66c60c590f84caba235eb92f5f14dbfe0"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"ca08332041bc6bff9c6065b6f871787d2502fbd8","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from neutronclient.common.exceptions import NeutronClientException"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from shade import exc"},{"line_number":23,"context_line":"from shade._utils import _is_ipv4"},{"line_number":24,"context_line":"from shade._utils import _is_globally_routable_ipv4"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3afb71cf_05bbac0f","line":23,"updated":"2015-06-08 17:25:50.000000000","message":"just import _utils - it makes it clearer below which module _is_ipv4 and _is_globally_routable_ipv4 come from","commit_id":"93ad021cea9fbf725a83f768c36c769dec36960e"},{"author":{"_account_id":6550,"name":"Davide Guerri","email":"davide.guerri@gmail.com","username":"davide-guerri"},"change_message_id":"c574f13b0471840125bdf9b8f1fb89ea863060e4","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from neutronclient.common.exceptions import NeutronClientException"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from shade import exc"},{"line_number":23,"context_line":"from shade._utils import _is_ipv4"},{"line_number":24,"context_line":"from shade._utils import _is_globally_routable_ipv4"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3afb71cf_0b4dfa6b","line":23,"in_reply_to":"3afb71cf_05bbac0f","updated":"2015-06-08 19:20:58.000000000","message":"Done","commit_id":"93ad021cea9fbf725a83f768c36c769dec36960e"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"ca08332041bc6bff9c6065b6f871787d2502fbd8","unresolved":false,"context_lines":[{"line_number":27,"context_line":"NON_CALLABLES \u003d (six.string_types, bool, dict, int, list, type(None))"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"mata_log \u003d logging.getLogger(\u0027shade\u0027)"},{"line_number":31,"context_line":"mata_log.setLevel(logging.INFO)"},{"line_number":32,"context_line":"mata_log.addHandler(logging.StreamHandler())"},{"line_number":33,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3afb71cf_a5cbb8a4","line":30,"updated":"2015-06-08 17:25:50.000000000","message":"I think you mean meta_log :)","commit_id":"93ad021cea9fbf725a83f768c36c769dec36960e"},{"author":{"_account_id":6550,"name":"Davide Guerri","email":"davide.guerri@gmail.com","username":"davide-guerri"},"change_message_id":"c574f13b0471840125bdf9b8f1fb89ea863060e4","unresolved":false,"context_lines":[{"line_number":27,"context_line":"NON_CALLABLES \u003d (six.string_types, bool, dict, int, list, type(None))"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"mata_log \u003d logging.getLogger(\u0027shade\u0027)"},{"line_number":31,"context_line":"mata_log.setLevel(logging.INFO)"},{"line_number":32,"context_line":"mata_log.addHandler(logging.StreamHandler())"},{"line_number":33,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3afb71cf_eb473e49","line":30,"in_reply_to":"3afb71cf_a5cbb8a4","updated":"2015-06-08 19:20:58.000000000","message":"errr, yes?","commit_id":"93ad021cea9fbf725a83f768c36c769dec36960e"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"ca08332041bc6bff9c6065b6f871787d2502fbd8","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"mata_log \u003d logging.getLogger(\u0027shade\u0027)"},{"line_number":31,"context_line":"mata_log.setLevel(logging.INFO)"},{"line_number":32,"context_line":"mata_log.addHandler(logging.StreamHandler())"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"def find_nova_addresses(addresses, ext_tag\u003dNone, key_name\u003dNone, version\u003d4):"}],"source_content_type":"text/x-python","patch_set":8,"id":"3afb71cf_c5ed9426","line":32,"updated":"2015-06-08 17:25:50.000000000","message":"We\u0027re transitioning to not setting levels or handlers in the library code.","commit_id":"93ad021cea9fbf725a83f768c36c769dec36960e"},{"author":{"_account_id":6550,"name":"Davide Guerri","email":"davide.guerri@gmail.com","username":"davide-guerri"},"change_message_id":"c574f13b0471840125bdf9b8f1fb89ea863060e4","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"mata_log \u003d logging.getLogger(\u0027shade\u0027)"},{"line_number":31,"context_line":"mata_log.setLevel(logging.INFO)"},{"line_number":32,"context_line":"mata_log.addHandler(logging.StreamHandler())"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"def find_nova_addresses(addresses, ext_tag\u003dNone, key_name\u003dNone, version\u003d4):"}],"source_content_type":"text/x-python","patch_set":8,"id":"3afb71cf_8b6faac4","line":32,"in_reply_to":"3afb71cf_c5ed9426","updated":"2015-06-08 19:20:58.000000000","message":"good one!","commit_id":"93ad021cea9fbf725a83f768c36c769dec36960e"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"ca08332041bc6bff9c6065b6f871787d2502fbd8","unresolved":false,"context_lines":[{"line_number":72,"context_line":"                filters\u003d{\u0027device_id\u0027: server[\u0027id\u0027]})"},{"line_number":73,"context_line":"            ext_nets \u003d cloud.search_networks(filters\u003d{\u0027router:external\u0027: True})"},{"line_number":74,"context_line":"        except NeutronClientException as e:"},{"line_number":75,"context_line":"            mata_log.error("},{"line_number":76,"context_line":"                \"Something went wrong talking to neutron API: \""},{"line_number":77,"context_line":"                \"\u0027{meg}\u0027. Trying with Nova.\".format(msg\u003dstr(e)))"},{"line_number":78,"context_line":"            # Fall-through, trying with Nova"}],"source_content_type":"text/x-python","patch_set":8,"id":"3afb71cf_85131c0d","line":75,"updated":"2015-06-08 17:25:50.000000000","message":"I don\u0027t think we want to log this as an error. If we fall through and get an IP, the user will see an error log message but it will be something they really can\u0027t do something about I\u0027d just do log.debug here so that they can see it if they\u0027re debugging.","commit_id":"93ad021cea9fbf725a83f768c36c769dec36960e"},{"author":{"_account_id":6550,"name":"Davide Guerri","email":"davide.guerri@gmail.com","username":"davide-guerri"},"change_message_id":"c574f13b0471840125bdf9b8f1fb89ea863060e4","unresolved":false,"context_lines":[{"line_number":72,"context_line":"                filters\u003d{\u0027device_id\u0027: server[\u0027id\u0027]})"},{"line_number":73,"context_line":"            ext_nets \u003d cloud.search_networks(filters\u003d{\u0027router:external\u0027: True})"},{"line_number":74,"context_line":"        except NeutronClientException as e:"},{"line_number":75,"context_line":"            mata_log.error("},{"line_number":76,"context_line":"                \"Something went wrong talking to neutron API: \""},{"line_number":77,"context_line":"                \"\u0027{meg}\u0027. Trying with Nova.\".format(msg\u003dstr(e)))"},{"line_number":78,"context_line":"            # Fall-through, trying with Nova"}],"source_content_type":"text/x-python","patch_set":8,"id":"3afb71cf_0b785a29","line":75,"in_reply_to":"3afb71cf_85131c0d","updated":"2015-06-08 19:20:58.000000000","message":"I partially disagree with this (but fro the moment I will use debug).\n\nWhen the problem with rackspace will go away, an error or a warning here would be fair as it would mean that something nasty is going on.","commit_id":"93ad021cea9fbf725a83f768c36c769dec36960e"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"91c26ccb79ffcbc89baa44c7693cc5701cddea6c","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"NON_CALLABLES \u003d (six.string_types, bool, dict, int, list, type(None))"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"mata_log \u003d logging.getLogger(\u0027meta_log\u0027)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def find_nova_addresses(addresses, ext_tag\u003dNone, key_name\u003dNone, version\u003d4):"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa32b979_5f9f595f","line":28,"updated":"2015-06-14 12:21:14.000000000","message":"Two things:\n\nI\u0027d just call this \"log\" but if we want to call it something else, meta_log rather than mata_log ... mata_log seems like a typo of the word meta.\n\nlogging.getLogger(__name__) - so that it is \"shade.meta\" and allows folks to do the right thing with their python logging configs.","commit_id":"971e1f98dc17e4ad264ff9f0d42b0869715f8425"},{"author":{"_account_id":6550,"name":"Davide Guerri","email":"davide.guerri@gmail.com","username":"davide-guerri"},"change_message_id":"0cf1130e6a2b757b73aca4df9e851cd1bd662330","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"NON_CALLABLES \u003d (six.string_types, bool, dict, int, list, type(None))"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"mata_log \u003d logging.getLogger(\u0027meta_log\u0027)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def find_nova_addresses(addresses, ext_tag\u003dNone, key_name\u003dNone, version\u003d4):"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa32b979_2aba51e2","line":28,"in_reply_to":"fa32b979_5f9f595f","updated":"2015-06-14 18:38:14.000000000","message":"mata like in Hakuna matata.\n\nYep, it\u0027s  typo :)","commit_id":"971e1f98dc17e4ad264ff9f0d42b0869715f8425"}]}
