)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":12912,"name":"John Belamaric","email":"jbelamaric@infoblox.com","username":"johnbelamaric"},"change_message_id":"b6aedb703bf386515e56d472d85fc6805465559e","unresolved":false,"context_lines":[{"line_number":27,"context_line":"So now this check verifies if there are any user allocated ips instead"},{"line_number":28,"context_line":"of checking all allocations."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"Partials-Bug: #1564335"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Change-Id: I08d66da8cb57ed88e11ec2b18c8345edfce37d37"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9a061dce_3bca8d1b","line":30,"updated":"2016-04-07 14:26:03.000000000","message":"s/Partials/Partial/","commit_id":"aa51f780bf875c24a35d6bbd5bd1a23e52e91a44"},{"author":{"_account_id":13768,"name":"Pavel Bondar","email":"pbondar@infoblox.com","username":"pavel_bondar"},"change_message_id":"3e1ab3f5368e59ef4bd69a4dbfe3e1ad1d50ab73","unresolved":false,"context_lines":[{"line_number":27,"context_line":"So now this check verifies if there are any user allocated ips instead"},{"line_number":28,"context_line":"of checking all allocations."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"Partials-Bug: #1564335"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Change-Id: I08d66da8cb57ed88e11ec2b18c8345edfce37d37"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1a122d0e_a602cbb2","line":30,"in_reply_to":"9a061dce_3bca8d1b","updated":"2016-04-21 15:36:06.000000000","message":"Done","commit_id":"aa51f780bf875c24a35d6bbd5bd1a23e52e91a44"}],"neutron/plugins/ml2/plugin.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"bc15d036155b080822eaf151cfaeaa5eeac3ba0b","unresolved":false,"context_lines":[{"line_number":967,"context_line":"                # the isolation level is set to READ COMMITTED allocations made"},{"line_number":968,"context_line":"                # concurrently will be returned by this query"},{"line_number":969,"context_line":"                if not is_auto_addr_subnet:"},{"line_number":970,"context_line":"                    alloc \u003d self._subnet_check_ip_allocations(context, id)"},{"line_number":971,"context_line":"                    if alloc:"},{"line_number":972,"context_line":"                        user_alloc \u003d self._subnet_get_user_allocation("},{"line_number":973,"context_line":"                            context, id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a122d0e_4947eca2","side":"PARENT","line":970,"updated":"2016-05-05 15:38:54.000000000","message":"It looks like this was being mocked in test_delete_subnet_race_with_dhcp_port_creation() in neutron/tests/unit/plugins/ml2/test_plugin.py but now you\u0027ve changed it.\n\nI\u0027m not sure what needs to change, but it looked suspicious to me.","commit_id":"97074e5543ae15827511f6a413451d8cbad66fca"},{"author":{"_account_id":13768,"name":"Pavel Bondar","email":"pbondar@infoblox.com","username":"pavel_bondar"},"change_message_id":"f7aa97df1820f3c4e1fee55e81c5ad32b5f54f55","unresolved":false,"context_lines":[{"line_number":967,"context_line":"                # the isolation level is set to READ COMMITTED allocations made"},{"line_number":968,"context_line":"                # concurrently will be returned by this query"},{"line_number":969,"context_line":"                if not is_auto_addr_subnet:"},{"line_number":970,"context_line":"                    alloc \u003d self._subnet_check_ip_allocations(context, id)"},{"line_number":971,"context_line":"                    if alloc:"},{"line_number":972,"context_line":"                        user_alloc \u003d self._subnet_get_user_allocation("},{"line_number":973,"context_line":"                            context, id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"dab17558_4c3c97bf","side":"PARENT","line":970,"in_reply_to":"1a122d0e_4947eca2","updated":"2016-05-13 08:16:34.000000000","message":"Thanks Brian, good catch. I need to update workflow in test_delete_subnet_race_with_dhcp_port_creation to make sure it  continues to test race condition.","commit_id":"97074e5543ae15827511f6a413451d8cbad66fca"},{"author":{"_account_id":13768,"name":"Pavel Bondar","email":"pbondar@infoblox.com","username":"pavel_bondar"},"change_message_id":"6c8a2b214e1ffdf90f75d595dcec0907a3149a15","unresolved":false,"context_lines":[{"line_number":967,"context_line":"                # the isolation level is set to READ COMMITTED allocations made"},{"line_number":968,"context_line":"                # concurrently will be returned by this query"},{"line_number":969,"context_line":"                if not is_auto_addr_subnet:"},{"line_number":970,"context_line":"                    alloc \u003d self._subnet_check_ip_allocations(context, id)"},{"line_number":971,"context_line":"                    if alloc:"},{"line_number":972,"context_line":"                        user_alloc \u003d self._subnet_get_user_allocation("},{"line_number":973,"context_line":"                            context, id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bab6814e_8113c10c","side":"PARENT","line":970,"in_reply_to":"dab17558_4c3c97bf","updated":"2016-05-19 15:35:04.000000000","message":"Reworked this part in PS5 to use _subnet_check_ip_allocations and transaction retry.","commit_id":"97074e5543ae15827511f6a413451d8cbad66fca"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"cc4bca898d39ccfaeefb971d763b62de1c665280","unresolved":false,"context_lines":[{"line_number":936,"context_line":""},{"line_number":937,"context_line":"        LOG.debug(\"Deleting subnet %s\", id)"},{"line_number":938,"context_line":"        session \u003d context.session"},{"line_number":939,"context_line":"        deallocated \u003d []"},{"line_number":940,"context_line":"        while True:"},{"line_number":941,"context_line":"            with session.begin(subtransactions\u003dTrue):"},{"line_number":942,"context_line":"                record \u003d self._get_subnet(context, id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a122d0e_419f6150","line":939,"range":{"start_line":939,"start_character":22,"end_line":939,"end_character":24},"updated":"2016-05-03 19:43:04.000000000","message":"I would suggest trying a set here.  You seem to use it like a set.","commit_id":"51b0caee9244354ade8efd01cdc83f3f04eb6698"},{"author":{"_account_id":13768,"name":"Pavel Bondar","email":"pbondar@infoblox.com","username":"pavel_bondar"},"change_message_id":"ba189b8ea64eea4c0059cfddecbe063f175492a3","unresolved":false,"context_lines":[{"line_number":936,"context_line":""},{"line_number":937,"context_line":"        LOG.debug(\"Deleting subnet %s\", id)"},{"line_number":938,"context_line":"        session \u003d context.session"},{"line_number":939,"context_line":"        deallocated \u003d []"},{"line_number":940,"context_line":"        while True:"},{"line_number":941,"context_line":"            with session.begin(subtransactions\u003dTrue):"},{"line_number":942,"context_line":"                record \u003d self._get_subnet(context, id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a122d0e_800bce23","line":939,"range":{"start_line":939,"start_character":22,"end_line":939,"end_character":24},"in_reply_to":"1a122d0e_419f6150","updated":"2016-05-04 15:39:36.000000000","message":"I\u0027ll try set approach here if I have to respin this patch","commit_id":"51b0caee9244354ade8efd01cdc83f3f04eb6698"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"58996f5c29252a60bf8c2026934457ef70e70fe7","unresolved":false,"context_lines":[{"line_number":971,"context_line":"                # via SLAAC"},{"line_number":972,"context_line":"                if is_auto_addr_subnet:"},{"line_number":973,"context_line":"                    self._subnet_check_ip_allocations_internal_router_ports("},{"line_number":974,"context_line":"                            context, id)"},{"line_number":975,"context_line":"                else:"},{"line_number":976,"context_line":"                    qry_allocated \u003d ("},{"line_number":977,"context_line":"                        qry_allocated.filter(models_v2.Port.device_owner."}],"source_content_type":"text/x-python","patch_set":5,"id":"bab6814e_9ad5e6ba","side":"PARENT","line":974,"range":{"start_line":974,"start_character":24,"end_line":974,"end_character":28},"updated":"2016-05-19 16:39:46.000000000","message":"Try really hard to not change whitespace or anything gratuitously.  Even if it was \"wrong\" in the first place.","commit_id":"79c1d7efc1a964836a98339e1e820ab6ebc5570e"},{"author":{"_account_id":13768,"name":"Pavel Bondar","email":"pbondar@infoblox.com","username":"pavel_bondar"},"change_message_id":"8aa227163547ae57bf1bcfa90237911445089803","unresolved":false,"context_lines":[{"line_number":971,"context_line":"                # via SLAAC"},{"line_number":972,"context_line":"                if is_auto_addr_subnet:"},{"line_number":973,"context_line":"                    self._subnet_check_ip_allocations_internal_router_ports("},{"line_number":974,"context_line":"                            context, id)"},{"line_number":975,"context_line":"                else:"},{"line_number":976,"context_line":"                    qry_allocated \u003d ("},{"line_number":977,"context_line":"                        qry_allocated.filter(models_v2.Port.device_owner."}],"source_content_type":"text/x-python","patch_set":5,"id":"9abb7d3a_a9afd592","side":"PARENT","line":974,"range":{"start_line":974,"start_character":24,"end_line":974,"end_character":28},"in_reply_to":"bab6814e_9ad5e6ba","updated":"2016-05-30 15:42:41.000000000","message":"Done","commit_id":"79c1d7efc1a964836a98339e1e820ab6ebc5570e"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"58996f5c29252a60bf8c2026934457ef70e70fe7","unresolved":false,"context_lines":[{"line_number":977,"context_line":"                        qry_allocated.filter(models_v2.Port.device_owner."},{"line_number":978,"context_line":"                        in_(db_base_plugin_v2.AUTO_DELETE_PORT_OWNERS)))"},{"line_number":979,"context_line":"                allocated \u003d qry_allocated.all()"},{"line_number":980,"context_line":"                # Delete all the IPAllocation that can be auto-deleted"},{"line_number":981,"context_line":"                if allocated:"},{"line_number":982,"context_line":"                    for x in allocated:"},{"line_number":983,"context_line":"                        session.delete(x)"}],"source_content_type":"text/x-python","patch_set":5,"id":"bab6814e_3557abcf","side":"PARENT","line":980,"range":{"start_line":980,"start_character":18,"end_line":980,"end_character":70},"updated":"2016-05-19 16:39:46.000000000","message":"Maybe keep this but instead of deleting directly from the DB, call IPAM.","commit_id":"79c1d7efc1a964836a98339e1e820ab6ebc5570e"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"a7ea589eb1ed6237c52e063b023a50da4761a6ae","unresolved":false,"context_lines":[{"line_number":977,"context_line":"                        qry_allocated.filter(models_v2.Port.device_owner."},{"line_number":978,"context_line":"                        in_(db_base_plugin_v2.AUTO_DELETE_PORT_OWNERS)))"},{"line_number":979,"context_line":"                allocated \u003d qry_allocated.all()"},{"line_number":980,"context_line":"                # Delete all the IPAllocation that can be auto-deleted"},{"line_number":981,"context_line":"                if allocated:"},{"line_number":982,"context_line":"                    for x in allocated:"},{"line_number":983,"context_line":"                        session.delete(x)"}],"source_content_type":"text/x-python","patch_set":5,"id":"bab6814e_b021e9a1","side":"PARENT","line":980,"range":{"start_line":980,"start_character":18,"end_line":980,"end_character":70},"in_reply_to":"bab6814e_3557abcf","updated":"2016-05-19 16:52:23.000000000","message":"I don\u0027t think we should call IPAM from here.  The thing is, port update should know that the IP addresses are going away.  I\u0027m not sure yet how to make that happen for auto-address subnets.","commit_id":"79c1d7efc1a964836a98339e1e820ab6ebc5570e"},{"author":{"_account_id":13768,"name":"Pavel Bondar","email":"pbondar@infoblox.com","username":"pavel_bondar"},"change_message_id":"8aa227163547ae57bf1bcfa90237911445089803","unresolved":false,"context_lines":[{"line_number":977,"context_line":"                        qry_allocated.filter(models_v2.Port.device_owner."},{"line_number":978,"context_line":"                        in_(db_base_plugin_v2.AUTO_DELETE_PORT_OWNERS)))"},{"line_number":979,"context_line":"                allocated \u003d qry_allocated.all()"},{"line_number":980,"context_line":"                # Delete all the IPAllocation that can be auto-deleted"},{"line_number":981,"context_line":"                if allocated:"},{"line_number":982,"context_line":"                    for x in allocated:"},{"line_number":983,"context_line":"                        session.delete(x)"}],"source_content_type":"text/x-python","patch_set":5,"id":"9abb7d3a_a9b4f5d0","side":"PARENT","line":980,"range":{"start_line":980,"start_character":18,"end_line":980,"end_character":70},"in_reply_to":"bab6814e_b021e9a1","updated":"2016-05-30 15:42:41.000000000","message":"I plan to tweak \u0027fixed_ips\u0027 in dependent patch to allow deallocation from auto-addressed subnets.","commit_id":"79c1d7efc1a964836a98339e1e820ab6ebc5570e"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"58996f5c29252a60bf8c2026934457ef70e70fe7","unresolved":false,"context_lines":[{"line_number":1006,"context_line":"                # This way SLAAC allocation is deleted by FK on subnet deletion"},{"line_number":1007,"context_line":"                # TODO(pbondar): rework update_port workflow to allow deletion"},{"line_number":1008,"context_line":"                # of SLAAC allocation via update_port."},{"line_number":1009,"context_line":"                to_deallocate \u003d [alloc for alloc in allocated"},{"line_number":1010,"context_line":"                                 if alloc not in deallocated]"},{"line_number":1011,"context_line":""},{"line_number":1012,"context_line":"                # If to_deallocate is None, then all the IPAllocation"}],"source_content_type":"text/x-python","patch_set":5,"id":"bab6814e_3a831a9a","line":1009,"range":{"start_line":1009,"start_character":16,"end_line":1009,"end_character":29},"updated":"2016-05-19 16:39:46.000000000","message":"If deallocated and allocated were both sets, then this would be\n\n  to_deallocate - allocated - deallocated","commit_id":"ba292a309fae20f88e1b8cb16346043aae63f93b"},{"author":{"_account_id":13768,"name":"Pavel Bondar","email":"pbondar@infoblox.com","username":"pavel_bondar"},"change_message_id":"8aa227163547ae57bf1bcfa90237911445089803","unresolved":false,"context_lines":[{"line_number":1006,"context_line":"                # This way SLAAC allocation is deleted by FK on subnet deletion"},{"line_number":1007,"context_line":"                # TODO(pbondar): rework update_port workflow to allow deletion"},{"line_number":1008,"context_line":"                # of SLAAC allocation via update_port."},{"line_number":1009,"context_line":"                to_deallocate \u003d [alloc for alloc in allocated"},{"line_number":1010,"context_line":"                                 if alloc not in deallocated]"},{"line_number":1011,"context_line":""},{"line_number":1012,"context_line":"                # If to_deallocate is None, then all the IPAllocation"}],"source_content_type":"text/x-python","patch_set":5,"id":"9abb7d3a_69304d9f","line":1009,"range":{"start_line":1009,"start_character":16,"end_line":1009,"end_character":29},"in_reply_to":"bab6814e_3a831a9a","updated":"2016-05-30 15:42:41.000000000","message":"Done in PS 6","commit_id":"ba292a309fae20f88e1b8cb16346043aae63f93b"},{"author":{"_account_id":13768,"name":"Pavel Bondar","email":"pbondar@infoblox.com","username":"pavel_bondar"},"change_message_id":"e0d0bd18dd343e72c050c9329b7abebb2f98e352","unresolved":false,"context_lines":[{"line_number":985,"context_line":"                # Check if there are more IP allocations, unless"},{"line_number":986,"context_line":"                # is_auto_address_subnet is True. In that case the check is"},{"line_number":987,"context_line":"                # unnecessary. This additional check not only would be wasteful"},{"line_number":988,"context_line":"                # for this class of subnet, but is also error-prone since when"},{"line_number":989,"context_line":"                # the isolation level is set to READ COMMITTED allocations made"},{"line_number":990,"context_line":"                # concurrently will be returned by this query"},{"line_number":991,"context_line":"                if not is_auto_addr_subnet:"},{"line_number":992,"context_line":"                    alloc \u003d self._subnet_check_ip_allocations(context, id)"},{"line_number":993,"context_line":"                    if alloc:"}],"source_content_type":"text/x-python","patch_set":7,"id":"9abb7d3a_00039d0e","side":"PARENT","line":990,"range":{"start_line":988,"start_character":44,"end_line":990,"end_character":61},"updated":"2016-06-02 14:51:02.000000000","message":"I am not fully agree with this comment. With READ COMMITTED isolation level this query returns concurent allocations, but it is good for us because all the allocations should be removed from subnet via ipam prior to deleting it. For REPEATABLE READ isolation it could be more complex, because executing the same query twice will not show concurrent allocations committed by another transaction. But it works for our case because this query is called only once in transaction. If any concurrent allocations are found by this query, transaction gets restarted.\nI have updated this comment in PS8 and moved it close to _subnet_check_ip_allocations.","commit_id":"79c1d7efc1a964836a98339e1e820ab6ebc5570e"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"607ea3f3de8e59f664d024fc0e1c65009d2b93af","unresolved":false,"context_lines":[{"line_number":999,"context_line":""},{"line_number":1000,"context_line":"                db_base_plugin_v2._check_subnet_not_used(context, id)"},{"line_number":1001,"context_line":""},{"line_number":1002,"context_line":"                # SLAAC allocations are currently can not be removed using"},{"line_number":1003,"context_line":"                # update_port workflow, and will persist in \u0027allocated\u0027."},{"line_number":1004,"context_line":"                # So for now just make sure update_port is called once for"},{"line_number":1005,"context_line":"                # them so MechanismDrivers is aware of the change."}],"source_content_type":"text/x-python","patch_set":7,"id":"9abb7d3a_a8190124","line":1002,"range":{"start_line":1002,"start_character":36,"end_line":1002,"end_character":39},"updated":"2016-06-01 23:01:17.000000000","message":"nit:  remove \"are\" if you get a chance.","commit_id":"32277c628379b84e58133ed9545e7bf52a606a7d"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"607ea3f3de8e59f664d024fc0e1c65009d2b93af","unresolved":false,"context_lines":[{"line_number":1008,"context_line":"                # of SLAAC allocation via update_port."},{"line_number":1009,"context_line":"                to_deallocate \u003d allocated - deallocated"},{"line_number":1010,"context_line":""},{"line_number":1011,"context_line":"                # If to_deallocate is None, then all the IPAllocation"},{"line_number":1012,"context_line":"                # (except SLAAC allocations) were correctly deleted during"},{"line_number":1013,"context_line":"                # the previous pass."},{"line_number":1014,"context_line":"                if not to_deallocate:"}],"source_content_type":"text/x-python","patch_set":7,"id":"9abb7d3a_8814fde8","line":1011,"range":{"start_line":1011,"start_character":35,"end_line":1011,"end_character":42},"updated":"2016-06-01 23:01:17.000000000","message":"technically, it will be an empty set, not None.","commit_id":"32277c628379b84e58133ed9545e7bf52a606a7d"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"607ea3f3de8e59f664d024fc0e1c65009d2b93af","unresolved":false,"context_lines":[{"line_number":1013,"context_line":"                # the previous pass."},{"line_number":1014,"context_line":"                if not to_deallocate:"},{"line_number":1015,"context_line":"                    if not is_auto_addr_subnet:"},{"line_number":1016,"context_line":"                        if self._subnet_check_ip_allocations(context, id):"},{"line_number":1017,"context_line":"                            # allocation found and it was DHCP port"},{"line_number":1018,"context_line":"                            # that appeared after autodelete ports were"},{"line_number":1019,"context_line":"                            # removed - need to restart whole operation"}],"source_content_type":"text/x-python","patch_set":7,"id":"9abb7d3a_28dcf144","line":1016,"range":{"start_line":1016,"start_character":40,"end_line":1016,"end_character":60},"updated":"2016-06-01 23:01:17.000000000","message":"check_ip_allocations for what?  I guess this comment isn\u0027t really relevant to this patch since you just moved an existing call.","commit_id":"32277c628379b84e58133ed9545e7bf52a606a7d"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"607ea3f3de8e59f664d024fc0e1c65009d2b93af","unresolved":false,"context_lines":[{"line_number":1011,"context_line":"                # If to_deallocate is None, then all the IPAllocation"},{"line_number":1012,"context_line":"                # (except SLAAC allocations) were correctly deleted during"},{"line_number":1013,"context_line":"                # the previous pass."},{"line_number":1014,"context_line":"                if not to_deallocate:"},{"line_number":1015,"context_line":"                    if not is_auto_addr_subnet:"},{"line_number":1016,"context_line":"                        if self._subnet_check_ip_allocations(context, id):"},{"line_number":1017,"context_line":"                            # allocation found and it was DHCP port"},{"line_number":1018,"context_line":"                            # that appeared after autodelete ports were"},{"line_number":1019,"context_line":"                            # removed - need to restart whole operation"}],"source_content_type":"text/x-python","patch_set":7,"id":"9abb7d3a_e8d5c91b","line":1016,"range":{"start_line":1014,"start_character":16,"end_line":1016,"end_character":26},"updated":"2016-06-01 23:01:17.000000000","message":"nit:  Use \"and\" and a single if.","commit_id":"32277c628379b84e58133ed9545e7bf52a606a7d"},{"author":{"_account_id":13768,"name":"Pavel Bondar","email":"pbondar@infoblox.com","username":"pavel_bondar"},"change_message_id":"cf0b44af4b91a87c64cccaf2d6cd9f03259c9dd3","unresolved":false,"context_lines":[{"line_number":1013,"context_line":"                # the previous pass."},{"line_number":1014,"context_line":"                if not to_deallocate:"},{"line_number":1015,"context_line":"                    if not is_auto_addr_subnet:"},{"line_number":1016,"context_line":"                        if self._subnet_check_ip_allocations(context, id):"},{"line_number":1017,"context_line":"                            # allocation found and it was DHCP port"},{"line_number":1018,"context_line":"                            # that appeared after autodelete ports were"},{"line_number":1019,"context_line":"                            # removed - need to restart whole operation"}],"source_content_type":"text/x-python","patch_set":7,"id":"9abb7d3a_90e36033","line":1016,"range":{"start_line":1016,"start_character":40,"end_line":1016,"end_character":60},"in_reply_to":"9abb7d3a_28dcf144","updated":"2016-06-02 13:49:47.000000000","message":"check_ip_allocations looks for concurrently allocated dhcp ports. I\u0027ll update comment to reflect it.","commit_id":"32277c628379b84e58133ed9545e7bf52a606a7d"},{"author":{"_account_id":13768,"name":"Pavel Bondar","email":"pbondar@infoblox.com","username":"pavel_bondar"},"change_message_id":"cf0b44af4b91a87c64cccaf2d6cd9f03259c9dd3","unresolved":false,"context_lines":[{"line_number":1011,"context_line":"                # If to_deallocate is None, then all the IPAllocation"},{"line_number":1012,"context_line":"                # (except SLAAC allocations) were correctly deleted during"},{"line_number":1013,"context_line":"                # the previous pass."},{"line_number":1014,"context_line":"                if not to_deallocate:"},{"line_number":1015,"context_line":"                    if not is_auto_addr_subnet:"},{"line_number":1016,"context_line":"                        if self._subnet_check_ip_allocations(context, id):"},{"line_number":1017,"context_line":"                            # allocation found and it was DHCP port"},{"line_number":1018,"context_line":"                            # that appeared after autodelete ports were"},{"line_number":1019,"context_line":"                            # removed - need to restart whole operation"}],"source_content_type":"text/x-python","patch_set":7,"id":"9abb7d3a_10ce50b4","line":1016,"range":{"start_line":1014,"start_character":16,"end_line":1016,"end_character":26},"in_reply_to":"9abb7d3a_e8d5c91b","updated":"2016-06-02 13:49:47.000000000","message":"ok","commit_id":"32277c628379b84e58133ed9545e7bf52a606a7d"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"1dee139a74f95b51e993b7b1e59c9846a83096b0","unresolved":false,"context_lines":[{"line_number":1007,"context_line":"                # during the previous pass."},{"line_number":1008,"context_line":"                # Check if there are more IP allocations, unless"},{"line_number":1009,"context_line":"                # is_auto_address_subnet is True. If transaction isolation"},{"line_number":1010,"context_line":"                # level is set to is set to READ COMMITTED allocations made"},{"line_number":1011,"context_line":"                # concurrently will be returned by this query and transaction"},{"line_number":1012,"context_line":"                # will be restarted. It works for REPEATABLE READ isolation"},{"line_number":1013,"context_line":"                # level too because this query is executed only once during"}],"source_content_type":"text/x-python","patch_set":8,"id":"9abb7d3a_fa02790a","line":1010,"range":{"start_line":1010,"start_character":34,"end_line":1010,"end_character":43},"updated":"2016-06-02 17:49:45.000000000","message":"duplicate \"is set to\"","commit_id":"59c3fc7f0e78d428f1e8652186faca4df05df387"}],"neutron/tests/unit/plugins/ml2/test_plugin.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"d9a23375178733869824f3b1e877e6e6c6bd41fe","unresolved":false,"context_lines":[{"line_number":447,"context_line":"                            filter_by(subnet_id\u003dsubnet_id)."},{"line_number":448,"context_line":"                            join(models_v2.Port).first())"},{"line_number":449,"context_line":""},{"line_number":450,"context_line":"                  plugin \u003d manager.NeutronManager.get_plugin()"},{"line_number":451,"context_line":"                # we mock _subnet_check_ip_allocations with method"},{"line_number":452,"context_line":"                # that creates DHCP port \u0027in the middle\u0027 of subnet_delete"},{"line_number":453,"context_line":"                # causing retry this way subnet is deleted on the"}],"source_content_type":"text/x-python","patch_set":8,"id":"9abb7d3a_4795773e","line":450,"range":{"start_line":450,"start_character":16,"end_line":450,"end_character":18},"updated":"2016-06-03 14:34:39.000000000","message":"Looks wrong indent level. It is the cause of the unit test failure.","commit_id":"59c3fc7f0e78d428f1e8652186faca4df05df387"}]}
