)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"313ab2ada07bac0353d47a9a67c3c70dec0cb462","unresolved":false,"context_lines":[{"line_number":9,"context_line":"If a port update specifies only a subnet_id for a fixed_ip then we"},{"line_number":10,"context_line":"want to look at existing fixed_ips to see if that subnet_id is already"},{"line_number":11,"context_line":"there. This avoids allocating a new IP address on the subnet and"},{"line_number":12,"context_line":"doallocating the old one."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I887cd23cf65a1df9bd1d59ab897a1ecd005a588c"},{"line_number":15,"context_line":"Closes-Bug: #1622616"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9a89bdaa_6a8e58d1","line":12,"range":{"start_line":12,"start_character":0,"end_line":12,"end_character":12},"updated":"2016-09-12 22:32:58.000000000","message":"Nit: \u0027de-allocating\u0027 in case you need to roll another patchset","commit_id":"d3f6a7563f071254d4bf6a78e771f4400be35f5c"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"8de795b2912dd761160cb47f265447be032d07d7","unresolved":false,"context_lines":[{"line_number":12,"context_line":"doallocating the old one."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I887cd23cf65a1df9bd1d59ab897a1ecd005a588c"},{"line_number":15,"context_line":"Closes-Bug: #1622616"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9a89bdaa_960ca8ed","line":15,"updated":"2016-09-12 21:46:55.000000000","message":"While I\u0027m positive that this patch would\u0027ve prevented the failure that was reported in the bug, I wonder if there is more to that bug. It does seem like there is still a window open for race conditions. It might take a little more thought. So, should this be closes-bug?","commit_id":"d3f6a7563f071254d4bf6a78e771f4400be35f5c"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"d89329288ae111589d4c58256f862ec4fec8d5f1","unresolved":false,"context_lines":[{"line_number":12,"context_line":"doallocating the old one."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I887cd23cf65a1df9bd1d59ab897a1ecd005a588c"},{"line_number":15,"context_line":"Closes-Bug: #1622616"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9a89bdaa_b60e0c8a","line":15,"in_reply_to":"9a89bdaa_960ca8ed","updated":"2016-09-12 21:57:21.000000000","message":"I think closes-bug makes sense for now until we see some other failure. :)","commit_id":"d3f6a7563f071254d4bf6a78e771f4400be35f5c"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"5fb92ef6369efcc0c2737ea51e2491b6c98dc1c9","unresolved":false,"context_lines":[{"line_number":9,"context_line":"If a port update specifies only a subnet_id for a fixed_ip then we"},{"line_number":10,"context_line":"want to look at existing fixed_ips to see if that subnet_id is already"},{"line_number":11,"context_line":"there. This avoids allocating a new IP address on the subnet and"},{"line_number":12,"context_line":"doallocating the old one."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Without some special care, this breaks the code path for prefix"},{"line_number":15,"context_line":"delegation. One could argue that PD needs reworking. However, as a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9a89bdaa_1c5409c8","line":12,"updated":"2016-09-13 15:30:00.000000000","message":"nit: deallocating","commit_id":"1692e0963eee84e00bac0bf927ba5eb76fa3148b"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"20fbb612da3a684135e049e6130ce63525e663ac","unresolved":false,"context_lines":[{"line_number":9,"context_line":"If a port update specifies only a subnet_id for a fixed_ip then we"},{"line_number":10,"context_line":"want to look at existing fixed_ips to see if that subnet_id is already"},{"line_number":11,"context_line":"there. This avoids allocating a new IP address on the subnet and"},{"line_number":12,"context_line":"doallocating the old one."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Without some special care, this breaks the code path for prefix"},{"line_number":15,"context_line":"delegation. One could argue that PD needs reworking. However, as a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"7a8ec9b2_b3730ab4","line":12,"in_reply_to":"9a89bdaa_1c5409c8","updated":"2016-09-13 19:43:18.000000000","message":"Done","commit_id":"1692e0963eee84e00bac0bf927ba5eb76fa3148b"}],"neutron/db/ipam_backend_mixin.py":[{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"7d88935ff82c643274d5438f54f82f2c5486d34a","unresolved":false,"context_lines":[{"line_number":441,"context_line":"                    new.add(ip[\u0027ip_address\u0027])"},{"line_number":442,"context_line":"                else:"},{"line_number":443,"context_line":"                    # A subnet_id is specified without an address"},{"line_number":444,"context_line":"                    original_ip \u003d original_subnets.get(ip[\u0027subnet_id\u0027])"},{"line_number":445,"context_line":"                    if original_ip:"},{"line_number":446,"context_line":"                        # Use the original address on this subnet"},{"line_number":447,"context_line":"                        new.add(original_ip)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a89bdaa_c3382ff1","line":444,"range":{"start_line":444,"start_character":51,"end_line":444,"end_character":54},"updated":"2016-09-13 00:20:02.000000000","message":"I need to pop here because it is possible to add a second IP address to a port. So, pop will avoid matching it against more than one fixed_ip. But, then, we\u0027ve got another problem. We could end up matching an original IP with a request for a new IP but they could also pass in the existing IP address explicitly in another fixed_ip:\n\n  fixed_ips: [{\u0027subnet_id\u0027: \u0027a\u0027, \u0027ip_address\u0027: \"4.3.2.1\"}, {\u0027subnet_id\u0027: \u0027a\u0027}]\n\nWe\u0027ve got to handle that one correctly too. I\u0027ll write a test for it.","commit_id":"d3f6a7563f071254d4bf6a78e771f4400be35f5c"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"7d88935ff82c643274d5438f54f82f2c5486d34a","unresolved":false,"context_lines":[{"line_number":444,"context_line":"                    original_ip \u003d original_subnets.get(ip[\u0027subnet_id\u0027])"},{"line_number":445,"context_line":"                    if original_ip:"},{"line_number":446,"context_line":"                        # Use the original address on this subnet"},{"line_number":447,"context_line":"                        new.add(original_ip)"},{"line_number":448,"context_line":"                    else:"},{"line_number":449,"context_line":"                        # Add it straight to add_ips. Since there is no IP,"},{"line_number":450,"context_line":"                        # we can\u0027t include it in the set operations below."}],"source_content_type":"text/x-python","patch_set":1,"id":"9a89bdaa_e314534e","line":447,"updated":"2016-09-13 00:20:02.000000000","message":"So, this is a problem with the way prefix delegation was written. On subnet_update -- which updates the prefix -- PD passes the subnet_id down to get IPAM to reallocate an address in the new prefix.\n\nGiven that PD shouldn\u0027t be running update_port, I think this is due for a rework anyway. I\u0027m not sure what the right thing to do is yet.","commit_id":"d3f6a7563f071254d4bf6a78e771f4400be35f5c"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"506f2427729937d054d4ddadfdbfb6f7313b8664","unresolved":false,"context_lines":[{"line_number":444,"context_line":"                    original_ip \u003d original_subnets.get(ip[\u0027subnet_id\u0027])"},{"line_number":445,"context_line":"                    if original_ip:"},{"line_number":446,"context_line":"                        # Use the original address on this subnet"},{"line_number":447,"context_line":"                        new.add(original_ip)"},{"line_number":448,"context_line":"                    else:"},{"line_number":449,"context_line":"                        # Add it straight to add_ips. Since there is no IP,"},{"line_number":450,"context_line":"                        # we can\u0027t include it in the set operations below."}],"source_content_type":"text/x-python","patch_set":1,"id":"9a89bdaa_e629aa9c","line":447,"in_reply_to":"9a89bdaa_0f6cf633","updated":"2016-09-13 10:49:12.000000000","message":"Ack, that will work for now.","commit_id":"d3f6a7563f071254d4bf6a78e771f4400be35f5c"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"8cf54111b1dbd07c879587b2f18f4616d0fd255c","unresolved":false,"context_lines":[{"line_number":444,"context_line":"                    original_ip \u003d original_subnets.get(ip[\u0027subnet_id\u0027])"},{"line_number":445,"context_line":"                    if original_ip:"},{"line_number":446,"context_line":"                        # Use the original address on this subnet"},{"line_number":447,"context_line":"                        new.add(original_ip)"},{"line_number":448,"context_line":"                    else:"},{"line_number":449,"context_line":"                        # Add it straight to add_ips. Since there is no IP,"},{"line_number":450,"context_line":"                        # we can\u0027t include it in the set operations below."}],"source_content_type":"text/x-python","patch_set":1,"id":"9a89bdaa_0f6cf633","line":447,"in_reply_to":"9a89bdaa_e314534e","updated":"2016-09-13 02:43:00.000000000","message":"I\u0027m thinking that an easy to fix this might be to skip this for eui64 addresses. That would allow PD to continue to work and non-PD eui64 addresses shouldn\u0027t really be affected because they won\u0027t change. Thoughts?","commit_id":"d3f6a7563f071254d4bf6a78e771f4400be35f5c"}],"neutron/tests/unit/db/test_ipam_backend_mixin.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"5fb92ef6369efcc0c2737ea51e2491b6c98dc1c9","unresolved":false,"context_lines":[{"line_number":167,"context_line":"        self._mock_slaac_subnet_on()"},{"line_number":168,"context_line":"        self._test_get_changed_ips_for_port_no_ip_address()"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"    def test_get_changed_ips_for_port_subnet_id_no_ip(self):"},{"line_number":171,"context_line":"        # If a subnet is specified without an IP address only allocate a new"},{"line_number":172,"context_line":"        # address if one doesn\u0027t exist"},{"line_number":173,"context_line":"        self._mock_slaac_subnet_off()"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a89bdaa_dc60e103","line":170,"updated":"2016-09-13 15:30:00.000000000","message":"nit: test__get...","commit_id":"1692e0963eee84e00bac0bf927ba5eb76fa3148b"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"20fbb612da3a684135e049e6130ce63525e663ac","unresolved":false,"context_lines":[{"line_number":167,"context_line":"        self._mock_slaac_subnet_on()"},{"line_number":168,"context_line":"        self._test_get_changed_ips_for_port_no_ip_address()"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"    def test_get_changed_ips_for_port_subnet_id_no_ip(self):"},{"line_number":171,"context_line":"        # If a subnet is specified without an IP address only allocate a new"},{"line_number":172,"context_line":"        # address if one doesn\u0027t exist"},{"line_number":173,"context_line":"        self._mock_slaac_subnet_off()"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a8ec9b2_533e46b9","line":170,"in_reply_to":"9a89bdaa_dc60e103","updated":"2016-09-13 19:43:18.000000000","message":"Done","commit_id":"1692e0963eee84e00bac0bf927ba5eb76fa3148b"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"5fb92ef6369efcc0c2737ea51e2491b6c98dc1c9","unresolved":false,"context_lines":[{"line_number":172,"context_line":"        # address if one doesn\u0027t exist"},{"line_number":173,"context_line":"        self._mock_slaac_subnet_off()"},{"line_number":174,"context_line":"        new_ips \u003d [{\u0027subnet_id\u0027: \u0027id-3\u0027}]"},{"line_number":175,"context_line":"        original_ips \u003d [{\u0027subnet_id\u0027: \u0027id-3\u0027, \u0027ip_address\u0027: \u00274.3.2.1\u0027}]"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"        expected_change \u003d self.mixin.Changes("},{"line_number":178,"context_line":"            add\u003d[],"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a89bdaa_d3de0f3d","line":175,"updated":"2016-09-13 15:30:00.000000000","message":"Seems there should be an IPv6 address here too?","commit_id":"1692e0963eee84e00bac0bf927ba5eb76fa3148b"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"dd0131d7c7270cc760525ebf4f739f29900b5249","unresolved":false,"context_lines":[{"line_number":172,"context_line":"        # address if one doesn\u0027t exist"},{"line_number":173,"context_line":"        self._mock_slaac_subnet_off()"},{"line_number":174,"context_line":"        new_ips \u003d [{\u0027subnet_id\u0027: \u0027id-3\u0027}]"},{"line_number":175,"context_line":"        original_ips \u003d [{\u0027subnet_id\u0027: \u0027id-3\u0027, \u0027ip_address\u0027: \u00274.3.2.1\u0027}]"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"        expected_change \u003d self.mixin.Changes("},{"line_number":178,"context_line":"            add\u003d[],"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a89bdaa_b5816bc5","line":175,"in_reply_to":"9a89bdaa_d3de0f3d","updated":"2016-09-13 17:03:10.000000000","message":"You\u0027re right. I did say that I would add another test case. It slipped my mind. I\u0027ll get to it today and update this patch set.","commit_id":"1692e0963eee84e00bac0bf927ba5eb76fa3148b"}]}
