)]}'
{"nova/api/openstack/compute/floating_ips.py":[{"author":{"_account_id":11803,"name":"Ryan Rossiter","email":"rlrossit@us.ibm.com","username":"rlrossiter"},"change_message_id":"7ac5c076c1d61ebfdb078a5ddbf437f0ac71889a","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        \u0027pool\u0027: floating_ip[\u0027pool\u0027],"},{"line_number":46,"context_line":"    }"},{"line_number":47,"context_line":"    try:"},{"line_number":48,"context_line":"        result[\u0027fixed_ip\u0027] \u003d floating_ip[\u0027fixed_ip\u0027].address"},{"line_number":49,"context_line":"    except (TypeError, KeyError, AttributeError):"},{"line_number":50,"context_line":"        result[\u0027fixed_ip\u0027] \u003d None"},{"line_number":51,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"da6ed579_8708cb92","line":48,"updated":"2016-01-13 18:46:56.000000000","message":"I should really get some unit tests around this because I wasn\u0027t getting caught by this until Tempest (and it was ridiculously hard to debug)","commit_id":"88c54b19859b65cd971d4ff7e33004c8f71f51f8"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"1c8b0409edfe3d0876c1fc0036b42749230e8323","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    # stuff, so we\u0027ll just short-circuit"},{"line_number":50,"context_line":"    if \u0027fixed_ip\u0027 not in floating_ip:"},{"line_number":51,"context_line":"        LOG.error(\u0027Fixed IP was not set on the floating_ip object\u0027)"},{"line_number":52,"context_line":"        LOG.error(str(floating_ip))"},{"line_number":53,"context_line":"        result[\u0027fixed_ip\u0027] \u003d None"},{"line_number":54,"context_line":"        result[\u0027instance_id\u0027] \u003d None"},{"line_number":55,"context_line":"        return {\u0027floating_ip\u0027: result}"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba0121b8_2febfdb1","line":52,"updated":"2016-03-29 18:31:01.000000000","message":"Just confirming: this isn\u0027t left-over debugging code, but an actual addition that is needed?  I\u0027m not convinced we want to stringify the floating_ip object…","commit_id":"7de38ad0b13c4b22941c72aa262110ab67fa663a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e3bfd7d680c64a4e879aa4192066cc25d6d88aec","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    except (TypeError, KeyError, AttributeError):"},{"line_number":66,"context_line":"        result[\u0027fixed_ip\u0027] \u003d None"},{"line_number":67,"context_line":"    try:"},{"line_number":68,"context_line":"        if \u0027instance_uuid\u0027 in floating_ip[\u0027fixed_ip\u0027]:"},{"line_number":69,"context_line":"            result[\u0027instance_id\u0027] \u003d floating_ip[\u0027fixed_ip\u0027].instance_uuid"},{"line_number":70,"context_line":"        else:"},{"line_number":71,"context_line":"            result[\u0027instance_id\u0027] \u003d None"}],"source_content_type":"text/x-python","patch_set":13,"id":"7a1b2928_cbb9abeb","line":68,"updated":"2016-04-11 18:06:34.000000000","message":"To get rid of the workaround in:\n\nhttps://review.openstack.org/#/c/115749/12/nova/network/neutronv2/api.py@1433\n\nI think this becomes:\n\n  if floating_ip.instance is not None:\n    result[\u0027instance_id\u0027] \u003d floating.instance.uuid","commit_id":"51fd7ef03464f3958f61ef9f922d594bd05ba11d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"69dd15af942267dd5308d789634d676537384216","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    except (TypeError, KeyError, AttributeError):"},{"line_number":66,"context_line":"        result[\u0027fixed_ip\u0027] \u003d None"},{"line_number":67,"context_line":"    try:"},{"line_number":68,"context_line":"        if \u0027instance_uuid\u0027 in floating_ip[\u0027fixed_ip\u0027]:"},{"line_number":69,"context_line":"            result[\u0027instance_id\u0027] \u003d floating_ip[\u0027fixed_ip\u0027].instance_uuid"},{"line_number":70,"context_line":"        else:"},{"line_number":71,"context_line":"            result[\u0027instance_id\u0027] \u003d None"}],"source_content_type":"text/x-python","patch_set":13,"id":"7a1b2928_8b17b3a2","line":68,"in_reply_to":"7a1b2928_cbb9abeb","updated":"2016-04-11 18:11:06.000000000","message":"Actually that probably doesn\u0027t work for nova-network which gets the floating IP directly from the DB model:\n\nhttps://github.com/openstack/nova/blob/master/nova/objects/floating_ip.py#L60-L63","commit_id":"51fd7ef03464f3958f61ef9f922d594bd05ba11d"}],"nova/tests/unit/api/openstack/compute/test_floating_ips.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"2957597c26ea56394e5188dc96ecefcda27c6946","unresolved":false,"context_lines":[{"line_number":43,"context_line":"FAKE_FIP \u003d {\u0027address\u0027: \u002710.0.0.1\u0027,"},{"line_number":44,"context_line":"            \u0027instance_uuid\u0027: FAKE_UUID,"},{"line_number":45,"context_line":"            \u0027instance\u0027: objects.Instance(uuid\u003dFAKE_UUID)}"},{"line_number":46,"context_line":"FAKE_FIP \u003d objects.FixedIP(**FAKE_FIP)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"def network_api_get_floating_ip(self, context, id):"}],"source_content_type":"text/x-python","patch_set":4,"id":"da6ed579_aaec6b2a","line":46,"updated":"2016-01-14 20:32:45.000000000","message":"Combine these two lines like so:\n\n    FAKE_FIP \u003d objects.FixedIP(\n        address\u003d\u002710.0.0.1\u0027,\n        instance_uuid\u003dFAKE_UUID,\n        instance\u003dobjects.Instance(uuid\u003dFAKE_UUID),\n    )","commit_id":"982206bd5ef687b6aed9114bd10d57a857605375"},{"author":{"_account_id":11803,"name":"Ryan Rossiter","email":"rlrossit@us.ibm.com","username":"rlrossiter"},"change_message_id":"a36f22953946d23a8a10ba22b616717bd2184410","unresolved":false,"context_lines":[{"line_number":43,"context_line":"FAKE_FIP \u003d {\u0027address\u0027: \u002710.0.0.1\u0027,"},{"line_number":44,"context_line":"            \u0027instance_uuid\u0027: FAKE_UUID,"},{"line_number":45,"context_line":"            \u0027instance\u0027: objects.Instance(uuid\u003dFAKE_UUID)}"},{"line_number":46,"context_line":"FAKE_FIP \u003d objects.FixedIP(**FAKE_FIP)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"def network_api_get_floating_ip(self, context, id):"}],"source_content_type":"text/x-python","patch_set":4,"id":"da6ed579_cef86ec7","line":46,"in_reply_to":"da6ed579_aaec6b2a","updated":"2016-01-17 20:06:24.000000000","message":"Done","commit_id":"982206bd5ef687b6aed9114bd10d57a857605375"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"2957597c26ea56394e5188dc96ecefcda27c6946","unresolved":false,"context_lines":[{"line_number":434,"context_line":"        inst \u003d objects.Instance(uuid\u003dFAKE_UUID)"},{"line_number":435,"context_line":"        fip \u003d {\u0027address\u0027: \u002710.0.0.1\u0027, \u0027instance_uuid\u0027: FAKE_UUID,"},{"line_number":436,"context_line":"               \u0027instance\u0027: inst}"},{"line_number":437,"context_line":"        fip \u003d objects.FixedIP(**fip)"},{"line_number":438,"context_line":""},{"line_number":439,"context_line":"        def get_floating_ip(self, context, id):"},{"line_number":440,"context_line":"            vals \u003d {\u0027id\u0027: 1, \u0027address\u0027: \u002710.10.10.10\u0027, \u0027pool\u0027: \u0027nova\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"da6ed579_eae6e342","line":437,"updated":"2016-01-14 20:32:45.000000000","message":"This is another case where you should combine the two lines.","commit_id":"982206bd5ef687b6aed9114bd10d57a857605375"},{"author":{"_account_id":11803,"name":"Ryan Rossiter","email":"rlrossit@us.ibm.com","username":"rlrossiter"},"change_message_id":"a36f22953946d23a8a10ba22b616717bd2184410","unresolved":false,"context_lines":[{"line_number":434,"context_line":"        inst \u003d objects.Instance(uuid\u003dFAKE_UUID)"},{"line_number":435,"context_line":"        fip \u003d {\u0027address\u0027: \u002710.0.0.1\u0027, \u0027instance_uuid\u0027: FAKE_UUID,"},{"line_number":436,"context_line":"               \u0027instance\u0027: inst}"},{"line_number":437,"context_line":"        fip \u003d objects.FixedIP(**fip)"},{"line_number":438,"context_line":""},{"line_number":439,"context_line":"        def get_floating_ip(self, context, id):"},{"line_number":440,"context_line":"            vals \u003d {\u0027id\u0027: 1, \u0027address\u0027: \u002710.10.10.10\u0027, \u0027pool\u0027: \u0027nova\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"da6ed579_2e134a0f","line":437,"in_reply_to":"da6ed579_eae6e342","updated":"2016-01-17 20:06:24.000000000","message":"Done","commit_id":"982206bd5ef687b6aed9114bd10d57a857605375"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"a57e4ed2f773b34936e9b71a1400b92fbd8948ec","unresolved":false,"context_lines":[{"line_number":38,"context_line":"FAKE_UUID \u003d \u0027aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa\u0027"},{"line_number":39,"context_line":"TEST_INST \u003d 1"},{"line_number":40,"context_line":"WRONG_INST \u003d 9999"},{"line_number":41,"context_line":"FAKE_FIP \u003d objects.FixedIP(address\u003d\u002710.0.0.1\u0027, instance_uuid\u003dFAKE_UUID,"},{"line_number":42,"context_line":"                           instance\u003dobjects.Instance(uuid\u003dFAKE_UUID))"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"def network_api_get_floating_ip(self, context, id):"}],"source_content_type":"text/x-python","patch_set":16,"id":"9abb7d3a_5dc53f3a","line":42,"range":{"start_line":41,"start_character":0,"end_line":42,"end_character":69},"updated":"2016-06-03 16:11:29.000000000","message":"Don\u0027t know why this needs to be global, tbh. Why not just make the IP address global, if anything?","commit_id":"1c6c4ec45dae97cdd4f2c5424024c07f7b2365de"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"5ff1e4fc1e02246f83e2e9636c22cf69aa52dd8d","unresolved":false,"context_lines":[{"line_number":438,"context_line":"        self.assertIn(\"Floating IP not found for ID 9876\", ex.explanation)"},{"line_number":439,"context_line":""},{"line_number":440,"context_line":"    def test_show_associated_floating_ip(self):"},{"line_number":441,"context_line":"        fip \u003d objects.FixedIP(address\u003d\u002710.0.0.1\u0027, instance_uuid\u003dFAKE_UUID,"},{"line_number":442,"context_line":"                              instance\u003dobjects.Instance(uuid\u003dFAKE_UUID))"},{"line_number":443,"context_line":""},{"line_number":444,"context_line":"        def get_floating_ip(self, context, id):"}],"source_content_type":"text/x-python","patch_set":16,"id":"7aa08908_b17c7d73","line":441,"updated":"2016-06-06 15:49:12.000000000","message":"So why not use FAKE_FIP here?  I can\u0027t see any differences, and this doesn\u0027t appear to alter the object in any way.","commit_id":"1c6c4ec45dae97cdd4f2c5424024c07f7b2365de"},{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"e89c486800487a8d425f2838f905740e06b36e6c","unresolved":false,"context_lines":[{"line_number":438,"context_line":"        self.assertIn(\"Floating IP not found for ID 9876\", ex.explanation)"},{"line_number":439,"context_line":""},{"line_number":440,"context_line":"    def test_show_associated_floating_ip(self):"},{"line_number":441,"context_line":"        fip \u003d objects.FixedIP(address\u003d\u002710.0.0.1\u0027, instance_uuid\u003dFAKE_UUID,"},{"line_number":442,"context_line":"                              instance\u003dobjects.Instance(uuid\u003dFAKE_UUID))"},{"line_number":443,"context_line":""},{"line_number":444,"context_line":"        def get_floating_ip(self, context, id):"}],"source_content_type":"text/x-python","patch_set":16,"id":"7aa08908_d1514964","line":441,"in_reply_to":"7aa08908_b17c7d73","updated":"2016-06-06 15:55:58.000000000","message":"Agreed","commit_id":"1c6c4ec45dae97cdd4f2c5424024c07f7b2365de"}]}
