)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"3dd0c4174e45a2a0608146b06948f83c6cf6cb99","unresolved":false,"context_lines":[{"line_number":7,"context_line":"add verification when narrowing allocation pool"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"1.problem"},{"line_number":10,"context_line":"Now there are no verifycations about narring allocation pool of subnet,"},{"line_number":11,"context_line":"so there are some vm which has the ips in a subnet,"},{"line_number":12,"context_line":"the ips of vm belong to the allocation pool of the subnet."},{"line_number":13,"context_line":"when we narrowed the range of allocation pool to ignore the ips of vm,"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"fa6399be_bce3db32","line":10,"range":{"start_line":10,"start_character":37,"end_line":10,"end_character":44},"updated":"2016-10-17 21:16:27.000000000","message":"narrowing","commit_id":"617ff613540ad981cdf94f4cc3a4ec8a1c8eb19d"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"3dd0c4174e45a2a0608146b06948f83c6cf6cb99","unresolved":false,"context_lines":[{"line_number":7,"context_line":"add verification when narrowing allocation pool"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"1.problem"},{"line_number":10,"context_line":"Now there are no verifycations about narring allocation pool of subnet,"},{"line_number":11,"context_line":"so there are some vm which has the ips in a subnet,"},{"line_number":12,"context_line":"the ips of vm belong to the allocation pool of the subnet."},{"line_number":13,"context_line":"when we narrowed the range of allocation pool to ignore the ips of vm,"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"fa6399be_3cf7cbf6","line":10,"range":{"start_line":10,"start_character":17,"end_line":10,"end_character":30},"updated":"2016-10-17 21:16:27.000000000","message":"verifications","commit_id":"617ff613540ad981cdf94f4cc3a4ec8a1c8eb19d"}],"neutron/db/common_db_mixin.py":[{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"9aef069aca464f6b688c2b9a8579d9c456e0181a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"da6895a0_2f51100f","updated":"2016-10-24 12:44:56.000000000","message":"Why are you including this module in you patchset? You didn\u0027t make any changes to it","commit_id":"4eca3b427861d32252812959c0ea386c6816e331"},{"author":{"_account_id":14611,"name":"dasm","display_name":"dasm","email":"dsmigiel@redhat.com","username":"dasm"},"change_message_id":"f8253cb6aa46129ffe77eafcc3f796d28fb66908","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"da6895a0_958f8ecb","in_reply_to":"da6895a0_2f51100f","updated":"2016-10-24 18:15:06.000000000","message":"This file has mode changed. Please revert to 644","commit_id":"4eca3b427861d32252812959c0ea386c6816e331"}],"neutron/db/db_base_plugin_common.py":[{"author":{"_account_id":14611,"name":"dasm","display_name":"dasm","email":"dsmigiel@redhat.com","username":"dasm"},"change_message_id":"f8253cb6aa46129ffe77eafcc3f796d28fb66908","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2015 OpenStack Foundation."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":4,"id":"da6895a0_d5bf465e","line":1,"updated":"2016-10-24 18:15:06.000000000","message":"Please revert perms to this file","commit_id":"4eca3b427861d32252812959c0ea386c6816e331"}],"neutron/db/db_base_plugin_v2.py":[{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"3dd0c4174e45a2a0608146b06948f83c6cf6cb99","unresolved":false,"context_lines":[{"line_number":788,"context_line":"                      \u0027network_id\u0027: db_subnet.network_id}"},{"line_number":789,"context_line":"            registry.notify(resources.SUBNET_GATEWAY, events.BEFORE_UPDATE,"},{"line_number":790,"context_line":"                            self, **kwargs)"},{"line_number":791,"context_line":"        "},{"line_number":792,"context_line":"        db_ipallocations \u003d self._get_ip_allocation(context, id)"},{"line_number":793,"context_line":"        allocation_ips \u003d self.get_ipaddress_from_ipallocations_without_gw("},{"line_number":794,"context_line":"            db_ipallocations, db_subnet.gateway_ip)"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa6399be_91d7e0be","line":791,"updated":"2016-10-17 21:16:27.000000000","message":"white spaces. Please remove","commit_id":"617ff613540ad981cdf94f4cc3a4ec8a1c8eb19d"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"3dd0c4174e45a2a0608146b06948f83c6cf6cb99","unresolved":false,"context_lines":[{"line_number":1358,"context_line":"        \u0027_port_filter_hook\u0027,"},{"line_number":1359,"context_line":"        None)"},{"line_number":1360,"context_line":""},{"line_number":1361,"context_line":"    def get_ipaddress_from_ipallocations_without_gw(self,"},{"line_number":1362,"context_line":"            db_ipallocations, gateway_ip):"},{"line_number":1363,"context_line":"        allocation_ips \u003d[]"},{"line_number":1364,"context_line":"        for ipallocation in db_ipallocations:"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa6399be_d1a6b852","line":1361,"range":{"start_line":1361,"start_character":8,"end_line":1361,"end_character":51},"updated":"2016-10-17 21:16:27.000000000","message":"I think this is an internal method, so its name shoud start with \u0027_\u0027","commit_id":"617ff613540ad981cdf94f4cc3a4ec8a1c8eb19d"},{"author":{"_account_id":14611,"name":"dasm","display_name":"dasm","email":"dsmigiel@redhat.com","username":"dasm"},"change_message_id":"f8253cb6aa46129ffe77eafcc3f796d28fb66908","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2012 OpenStack Foundation."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":4,"id":"da6895a0_15ba9e6e","line":1,"updated":"2016-10-24 18:15:06.000000000","message":"Please revert perms to this file","commit_id":"4eca3b427861d32252812959c0ea386c6816e331"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"9aef069aca464f6b688c2b9a8579d9c456e0181a","unresolved":false,"context_lines":[{"line_number":771,"context_line":"            # Convert allocation pools to IPRange to simplify future checks"},{"line_number":772,"context_line":"            range_pools \u003d self.ipam.pools_to_ip_range(s[\u0027allocation_pools\u0027])"},{"line_number":773,"context_line":"            self.ipam.validate_allocation_pools(range_pools, s[\u0027cidr\u0027])"},{"line_number":774,"context_line":"            if s[\u0027ip_version\u0027] \u003d\u003d 4:"},{"line_number":775,"context_line":"                self.ipam.validate_allocation_pools_consider_allocation_ips("},{"line_number":776,"context_line":"                    context, s[\u0027id\u0027], db_subnet.gateway_ip, range_pools)"},{"line_number":777,"context_line":"            s[\u0027allocation_pools\u0027] \u003d range_pools"}],"source_content_type":"text/x-python","patch_set":4,"id":"da6895a0_6f24e8ae","line":774,"updated":"2016-10-24 12:44:56.000000000","message":"Why restrict this only to ipv4? This can also happen in IPv6, right?","commit_id":"4eca3b427861d32252812959c0ea386c6816e331"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"9aef069aca464f6b688c2b9a8579d9c456e0181a","unresolved":false,"context_lines":[{"line_number":773,"context_line":"            self.ipam.validate_allocation_pools(range_pools, s[\u0027cidr\u0027])"},{"line_number":774,"context_line":"            if s[\u0027ip_version\u0027] \u003d\u003d 4:"},{"line_number":775,"context_line":"                self.ipam.validate_allocation_pools_consider_allocation_ips("},{"line_number":776,"context_line":"                    context, s[\u0027id\u0027], db_subnet.gateway_ip, range_pools)"},{"line_number":777,"context_line":"            s[\u0027allocation_pools\u0027] \u003d range_pools"},{"line_number":778,"context_line":""},{"line_number":779,"context_line":"        # If either gateway_ip or allocation_pools were specified"}],"source_content_type":"text/x-python","patch_set":4,"id":"da6895a0_4f0ac422","line":776,"range":{"start_line":776,"start_character":38,"end_line":776,"end_character":58},"updated":"2016-10-24 12:44:56.000000000","message":"What if gateway_ip is also being changed in this request? See L779-785 below","commit_id":"4eca3b427861d32252812959c0ea386c6816e331"}],"neutron/db/ipam_backend_mixin.py":[{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"3dd0c4174e45a2a0608146b06948f83c6cf6cb99","unresolved":false,"context_lines":[{"line_number":404,"context_line":"                    pool\u003dpool_range,"},{"line_number":405,"context_line":"                    ip_address\u003dgateway_ip)"},{"line_number":406,"context_line":""},{"line_number":407,"context_line":"    def valideate_allocation_ips_in_pools(self, allocation_ips, pools):"},{"line_number":408,"context_line":"        not_in_pool_ipallocation \u003d []"},{"line_number":409,"context_line":"        for pool_range in pools:"},{"line_number":410,"context_line":"            for allocation_ip in allocation_ips:"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa6399be_f1481c8d","line":407,"range":{"start_line":407,"start_character":8,"end_line":407,"end_character":17},"updated":"2016-10-17 21:16:27.000000000","message":"validate","commit_id":"617ff613540ad981cdf94f4cc3a4ec8a1c8eb19d"},{"author":{"_account_id":14611,"name":"dasm","display_name":"dasm","email":"dsmigiel@redhat.com","username":"dasm"},"change_message_id":"f8253cb6aa46129ffe77eafcc3f796d28fb66908","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2015 OpenStack Foundation."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":4,"id":"da6895a0_35b16290","line":1,"updated":"2016-10-24 18:15:06.000000000","message":"Perms are changed, please revert.","commit_id":"4eca3b427861d32252812959c0ea386c6816e331"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"9aef069aca464f6b688c2b9a8579d9c456e0181a","unresolved":false,"context_lines":[{"line_number":318,"context_line":"                        pool_2\u003dr_range,"},{"line_number":319,"context_line":"                        subnet_cidr\u003dsubnet_cidr)"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"    def validate_allocation_pools_consider_allocation_ips("},{"line_number":322,"context_line":"            self, context, subnet_id, gateway_ip, ip_pools):"},{"line_number":323,"context_line":"        db_ipallos \u003d self._get_ip_allocation_by_subnet_id(context, subnet_id)"},{"line_number":324,"context_line":"        allocation_ips \u003d []"}],"source_content_type":"text/x-python","patch_set":4,"id":"da6895a0_341c0977","line":321,"updated":"2016-10-24 12:44:56.000000000","message":"I don\u0027t think the 2 methods you added here belong in ipam_backend_mixin.py. I think they should go in db_base_plugin_v2.py","commit_id":"4eca3b427861d32252812959c0ea386c6816e331"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"9aef069aca464f6b688c2b9a8579d9c456e0181a","unresolved":false,"context_lines":[{"line_number":320,"context_line":""},{"line_number":321,"context_line":"    def validate_allocation_pools_consider_allocation_ips("},{"line_number":322,"context_line":"            self, context, subnet_id, gateway_ip, ip_pools):"},{"line_number":323,"context_line":"        db_ipallos \u003d self._get_ip_allocation_by_subnet_id(context, subnet_id)"},{"line_number":324,"context_line":"        allocation_ips \u003d []"},{"line_number":325,"context_line":"        for ipallocation in db_ipallos:"},{"line_number":326,"context_line":"            ip \u003d ipallocation[\u0027ip_address\u0027]"},{"line_number":327,"context_line":"            if ip !\u003d gateway_ip:"},{"line_number":328,"context_line":"                allocation_ips.append(ip)"},{"line_number":329,"context_line":"        if allocation_ips:"},{"line_number":330,"context_line":"            self.validate_allocation_ips_in_pools(allocation_ips, ip_pools)"},{"line_number":331,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"da6895a0_b43d79bd","line":328,"range":{"start_line":323,"start_character":8,"end_line":328,"end_character":41},"updated":"2016-10-24 12:44:56.000000000","message":"You can replace these lines with:\n\nallocation_ips \u003d context.session.query(models_v2.IPAllocation).filter_by(subnet_id\u003ds[\u0027id\u0027]).filter(models_v2.IPAllocation.ip_address !\u003d db_subnet.gateway_ip).all()","commit_id":"4eca3b427861d32252812959c0ea386c6816e331"},{"author":{"_account_id":14611,"name":"dasm","display_name":"dasm","email":"dsmigiel@redhat.com","username":"dasm"},"change_message_id":"f8253cb6aa46129ffe77eafcc3f796d28fb66908","unresolved":false,"context_lines":[{"line_number":320,"context_line":""},{"line_number":321,"context_line":"    def validate_allocation_pools_consider_allocation_ips("},{"line_number":322,"context_line":"            self, context, subnet_id, gateway_ip, ip_pools):"},{"line_number":323,"context_line":"        db_ipallos \u003d self._get_ip_allocation_by_subnet_id(context, subnet_id)"},{"line_number":324,"context_line":"        allocation_ips \u003d []"},{"line_number":325,"context_line":"        for ipallocation in db_ipallos:"},{"line_number":326,"context_line":"            ip \u003d ipallocation[\u0027ip_address\u0027]"},{"line_number":327,"context_line":"            if ip !\u003d gateway_ip:"},{"line_number":328,"context_line":"                allocation_ips.append(ip)"},{"line_number":329,"context_line":"        if allocation_ips:"},{"line_number":330,"context_line":"            self.validate_allocation_ips_in_pools(allocation_ips, ip_pools)"},{"line_number":331,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"da6895a0_b54ad281","line":328,"range":{"start_line":323,"start_character":8,"end_line":328,"end_character":41},"in_reply_to":"da6895a0_b43d79bd","updated":"2016-10-24 18:15:06.000000000","message":"+1","commit_id":"4eca3b427861d32252812959c0ea386c6816e331"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"9aef069aca464f6b688c2b9a8579d9c456e0181a","unresolved":false,"context_lines":[{"line_number":415,"context_line":"                    pool\u003dpool_range,"},{"line_number":416,"context_line":"                    ip_address\u003dgateway_ip)"},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"    def validate_allocation_ips_in_pools(self, allocation_ips, pools):"},{"line_number":419,"context_line":"        in_pool_ip_allocation \u003d []"},{"line_number":420,"context_line":"        out_pool_ip_allocation \u003d []"},{"line_number":421,"context_line":"        for allocation_ip in allocation_ips:"}],"source_content_type":"text/x-python","patch_set":4,"id":"da6895a0_b473b9e6","line":418,"updated":"2016-10-24 12:44:56.000000000","message":"I think it will be more efficient if you do the following:\n\nalloc_ips \u003d allocation_ips[:]\nfor allocation_ip in allocation_ips:\n    for pool in pools:\n        if netaddr.IPAddress(allocation_ip.ip_address) in pool_range:\n           alloc_ips.remove(allocation_ip)\n           break\n\nif alloc_ips:\n    raise n_exc.IPAllocationNotInAllocationPools(\n                        allocation_ip\u003dout_pool_ip_allocation,\n                        allocation_pool\u003dpools)\n\nAnd I would merge this method with the one above","commit_id":"4eca3b427861d32252812959c0ea386c6816e331"},{"author":{"_account_id":14611,"name":"dasm","display_name":"dasm","email":"dsmigiel@redhat.com","username":"dasm"},"change_message_id":"f8253cb6aa46129ffe77eafcc3f796d28fb66908","unresolved":false,"context_lines":[{"line_number":415,"context_line":"                    pool\u003dpool_range,"},{"line_number":416,"context_line":"                    ip_address\u003dgateway_ip)"},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"    def validate_allocation_ips_in_pools(self, allocation_ips, pools):"},{"line_number":419,"context_line":"        in_pool_ip_allocation \u003d []"},{"line_number":420,"context_line":"        out_pool_ip_allocation \u003d []"},{"line_number":421,"context_line":"        for allocation_ip in allocation_ips:"}],"source_content_type":"text/x-python","patch_set":4,"id":"da6895a0_98041ec1","line":418,"in_reply_to":"da6895a0_b473b9e6","updated":"2016-10-24 18:15:06.000000000","message":"@Miguel, nice thing, though instead of `pool_range` should be just `pool`.\n\nBut, I\u0027m wondering, if it would be possible, to even skip this step, and go directly to db query, to retrieve already filtered data.","commit_id":"4eca3b427861d32252812959c0ea386c6816e331"}],"neutron/tests/unit/db/test_db_base_plugin_v2.py":[{"author":{"_account_id":14611,"name":"dasm","display_name":"dasm","email":"dsmigiel@redhat.com","username":"dasm"},"change_message_id":"f8253cb6aa46129ffe77eafcc3f796d28fb66908","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2012 OpenStack Foundation."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":4,"id":"da6895a0_55ac1635","line":1,"updated":"2016-10-24 18:15:06.000000000","message":"Perms are changed.","commit_id":"4eca3b427861d32252812959c0ea386c6816e331"},{"author":{"_account_id":14611,"name":"dasm","display_name":"dasm","email":"dsmigiel@redhat.com","username":"dasm"},"change_message_id":"f8253cb6aa46129ffe77eafcc3f796d28fb66908","unresolved":false,"context_lines":[{"line_number":6438,"context_line":"                    res \u003d self.plugin._get_ip_allocation_by_subnet_id("},{"line_number":6439,"context_line":"                        ctx, subnet[\u0027subnet\u0027][\u0027id\u0027])"},{"line_number":6440,"context_line":"                    self.assertEqual(3, len(res))"},{"line_number":6441,"context_line":"                    self.assertEqual(\u002710.0.0.8\u0027, res[2][\u0027ip_address\u0027])"},{"line_number":6442,"context_line":""},{"line_number":6443,"context_line":"    def test__validate_network_subnetpools(self):"},{"line_number":6444,"context_line":"        network \u003d models_v2.Network()"}],"source_content_type":"text/x-python","patch_set":4,"id":"da6895a0_78910f99","line":6441,"range":{"start_line":6441,"start_character":20,"end_line":6441,"end_character":70},"updated":"2016-10-24 18:15:06.000000000","message":"To be 100% sure, that nothing is break, it\u0027s good to iterate res and verify all addresses:\n\n expected_addresses \u003d [\u002710.0.0.2\u0027, \u002710.0.0.6\u0027, \u002710.0.0.8\u0027]\n for expected, received in zip(expected_addresses, res):\n     self.assertEqual(expected, received[\u0027ip_address\u0027]","commit_id":"4eca3b427861d32252812959c0ea386c6816e331"}],"neutron/tests/unit/db/test_ipam_backend_mixin.py":[{"author":{"_account_id":14611,"name":"dasm","display_name":"dasm","email":"dsmigiel@redhat.com","username":"dasm"},"change_message_id":"f8253cb6aa46129ffe77eafcc3f796d28fb66908","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2015 Infoblox Inc."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":4,"id":"da6895a0_95a6ae51","line":1,"updated":"2016-10-24 18:15:06.000000000","message":"Perms are changed, please revert.","commit_id":"4eca3b427861d32252812959c0ea386c6816e331"},{"author":{"_account_id":14611,"name":"dasm","display_name":"dasm","email":"dsmigiel@redhat.com","username":"dasm"},"change_message_id":"f8253cb6aa46129ffe77eafcc3f796d28fb66908","unresolved":false,"context_lines":[{"line_number":302,"context_line":"                             \u0027end\u0027: \u002710.0.0.180\u0027}]"},{"line_number":303,"context_line":"        with testlib_api.ExpectedException("},{"line_number":304,"context_line":"                n_exc.IPAllocationNotInAllocationPools) as ctx_manager:"},{"line_number":305,"context_line":"            if allocation_ips_out:"},{"line_number":306,"context_line":"                self.mixin.validate_allocation_ips_in_pools("},{"line_number":307,"context_line":"                    allocation_ips_out, allocation_pools)"},{"line_number":308,"context_line":"                self.assertEqual(n_exc.IPAllocationNotInAllocationPools,"}],"source_content_type":"text/x-python","patch_set":4,"id":"da6895a0_18ce53b4","line":305,"range":{"start_line":305,"start_character":0,"end_line":305,"end_character":34},"updated":"2016-10-24 18:15:06.000000000","message":"It\u0027s not needed. It\u0027s declared @297, so it exists in this place.","commit_id":"4eca3b427861d32252812959c0ea386c6816e331"},{"author":{"_account_id":14611,"name":"dasm","display_name":"dasm","email":"dsmigiel@redhat.com","username":"dasm"},"change_message_id":"f8253cb6aa46129ffe77eafcc3f796d28fb66908","unresolved":false,"context_lines":[{"line_number":307,"context_line":"                    allocation_ips_out, allocation_pools)"},{"line_number":308,"context_line":"                self.assertEqual(n_exc.IPAllocationNotInAllocationPools,"},{"line_number":309,"context_line":"                                 ctx_manager.exception)"},{"line_number":310,"context_line":"            if allocation_ips_in:"},{"line_number":311,"context_line":"                self.mixin.validate_allocation_ips_in_pools("},{"line_number":312,"context_line":"                    allocation_ips_in, allocation_pools)"},{"line_number":313,"context_line":"                self.assertIsNone(ctx_manager.exception)"}],"source_content_type":"text/x-python","patch_set":4,"id":"da6895a0_b83727af","line":310,"updated":"2016-10-24 18:15:06.000000000","message":"The same for this `if` statement. It\u0027s declared in @298, so it\u0027ll be here. We can unindent one level.","commit_id":"4eca3b427861d32252812959c0ea386c6816e331"}]}
