)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"c318f82ea8f1563109113ab1736960eef87db517","unresolved":false,"context_lines":[{"line_number":7,"context_line":"do not raise exception on ip address recycle operation"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currenty a exception will raise on ip address recycle operation if the ip"},{"line_number":10,"context_line":"address don\u0027t belong to any allocation pool which will make user unable"},{"line_number":11,"context_line":"to update port, even worse it will make user unable to create new port."},{"line_number":12,"context_line":"So do not raise exception if the ip address to be recycled don\u0027t belong"},{"line_number":13,"context_line":"to any allocation, just delete it from the ip allocation table."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAAQn%2F%2F%2Fso%3D","line":10,"updated":"2013-07-17 21:21:05.000000000","message":"grammar nit: doesn\u0027t","commit_id":"23516d314307aead619f7f4df420a789424042c4"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"c318f82ea8f1563109113ab1736960eef87db517","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Currenty a exception will raise on ip address recycle operation if the ip"},{"line_number":10,"context_line":"address don\u0027t belong to any allocation pool which will make user unable"},{"line_number":11,"context_line":"to update port, even worse it will make user unable to create new port."},{"line_number":12,"context_line":"So do not raise exception if the ip address to be recycled don\u0027t belong"},{"line_number":13,"context_line":"to any allocation, just delete it from the ip allocation table."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"fixes bug 1201692"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAAQn%2F%2F%2Fsk%3D","line":12,"updated":"2013-07-17 21:21:05.000000000","message":"grammar nit: doesn\u0027t","commit_id":"23516d314307aead619f7f4df420a789424042c4"}],"neutron/db/db_base_plugin_v2.py":[{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"c318f82ea8f1563109113ab1736960eef87db517","unresolved":false,"context_lines":[{"line_number":364,"context_line":"        if not pool_id:"},{"line_number":365,"context_line":"            error_message \u003d _(\"No allocation pool found for \""},{"line_number":366,"context_line":"                              \"ip address:%s\") % ip_address"},{"line_number":367,"context_line":"            LOG.warning(error_message)"},{"line_number":368,"context_line":"            NeutronDbPluginV2._delete_ip_allocation(context,"},{"line_number":369,"context_line":"                                                    network_id,"},{"line_number":370,"context_line":"                                                    subnet_id,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAQn%2F%2F%2Ffk%3D","line":367,"updated":"2013-07-17 21:21:05.000000000","message":"I think that logging this message is no longer necessary.","commit_id":"23516d314307aead619f7f4df420a789424042c4"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"53b2373cf8d373c95e2d2541107d206c945c3ad7","unresolved":false,"context_lines":[{"line_number":365,"context_line":"            NeutronDbPluginV2._delete_ip_allocation(context,"},{"line_number":366,"context_line":"                                                    network_id,"},{"line_number":367,"context_line":"                                                    subnet_id,"},{"line_number":368,"context_line":"                                                    ip_address)"},{"line_number":369,"context_line":"            return"},{"line_number":370,"context_line":"        # Two requests will be done on the database. The first will be to"},{"line_number":371,"context_line":"        # search if an entry starts with ip_address + 1 (r1). The second"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAQn%2F%2Fx3c%3D","line":368,"updated":"2013-07-23 13:01:32.000000000","message":"boring pedant note: avoid right justification by moving parameters to newline:\n\nNeutronDbPluginV2._delete_ip_allocation(\n    context, network_id, subnet_id, ip_address)","commit_id":"1eff0af5964f1bcf90ae4f124b68859db62b803a"}],"neutron/tests/unit/test_db_plugin.py":[{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"6b9634ac1187e4d0e222e8bb070f49bc0a6c959d","unresolved":false,"context_lines":[{"line_number":1707,"context_line":""},{"line_number":1708,"context_line":"                self.assertEqual(q.count(), 1)"},{"line_number":1709,"context_line":""},{"line_number":1710,"context_line":"    def test_recycle_ip_address_without_allocation_pool(self):"},{"line_number":1711,"context_line":"        plugin \u003d NeutronManager.get_plugin()"},{"line_number":1712,"context_line":"        allocation_pools \u003d [{\"start\": \u002710.0.0.10\u0027,"},{"line_number":1713,"context_line":"                             \"end\": \u002710.0.0.50\u0027}]"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAQn%2F%2F5qo%3D","line":1710,"updated":"2013-07-19 15:09:49.000000000","message":"I think we should add a case according to the bug description:\ncreate a subnet with  a pool,\ncreate a port with an IP beyond the pool,\nupdate the port\u0027s IP\nand ...\nat last it passes.","commit_id":"1eff0af5964f1bcf90ae4f124b68859db62b803a"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"53b2373cf8d373c95e2d2541107d206c945c3ad7","unresolved":false,"context_lines":[{"line_number":1707,"context_line":""},{"line_number":1708,"context_line":"                self.assertEqual(q.count(), 1)"},{"line_number":1709,"context_line":""},{"line_number":1710,"context_line":"    def test_recycle_ip_address_without_allocation_pool(self):"},{"line_number":1711,"context_line":"        plugin \u003d NeutronManager.get_plugin()"},{"line_number":1712,"context_line":"        allocation_pools \u003d [{\"start\": \u002710.0.0.10\u0027,"},{"line_number":1713,"context_line":"                             \"end\": \u002710.0.0.50\u0027}]"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAQn%2F%2Fxzk%3D","line":1710,"in_reply_to":"AAAAQn%2F%2F5qo%3D","updated":"2013-07-23 13:01:32.000000000","message":"I don\u0027t think we need to add another case, but perhaps either follow this workflow in this test, or just separately test that recycle ip delete IPs allocation outside of the pool (ie: without using API at all)","commit_id":"1eff0af5964f1bcf90ae4f124b68859db62b803a"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"53b2373cf8d373c95e2d2541107d206c945c3ad7","unresolved":false,"context_lines":[{"line_number":1721,"context_line":"                update_context \u003d context.Context(\u0027\u0027, port[\u0027port\u0027][\u0027tenant_id\u0027])"},{"line_number":1722,"context_line":"                ip_address \u003d port[\u0027port\u0027][\u0027fixed_ips\u0027][0][\u0027ip_address\u0027]"},{"line_number":1723,"context_line":"                with mock.patch.object(db_base_plugin_v2.NeutronDbPluginV2,"},{"line_number":1724,"context_line":"                                       \u0027_delete_ip_allocation\u0027) as rc:"},{"line_number":1725,"context_line":"                    plugin._recycle_ip(update_context,"},{"line_number":1726,"context_line":"                                       network_id,"},{"line_number":1727,"context_line":"                                       subnet_id,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAQn%2F%2FxzI%3D","line":1724,"updated":"2013-07-23 13:01:32.000000000","message":"maybe if we follow gongysh advice this mocking (whose reason appera to be avoiding a failure in delete_port) can be avoided.\nExample here:http://codepad.org/dtoFB0pb","commit_id":"1eff0af5964f1bcf90ae4f124b68859db62b803a"},{"author":{"_account_id":2967,"name":"ljjjustin","email":"iamljj@gmail.com","username":"ljjjustin"},"change_message_id":"bedd0e31565d69908b9bed4c7e23d062e162035e","unresolved":false,"context_lines":[{"line_number":1721,"context_line":"                update_context \u003d context.Context(\u0027\u0027, port[\u0027port\u0027][\u0027tenant_id\u0027])"},{"line_number":1722,"context_line":"                ip_address \u003d port[\u0027port\u0027][\u0027fixed_ips\u0027][0][\u0027ip_address\u0027]"},{"line_number":1723,"context_line":"                with mock.patch.object(db_base_plugin_v2.NeutronDbPluginV2,"},{"line_number":1724,"context_line":"                                       \u0027_delete_ip_allocation\u0027) as rc:"},{"line_number":1725,"context_line":"                    plugin._recycle_ip(update_context,"},{"line_number":1726,"context_line":"                                       network_id,"},{"line_number":1727,"context_line":"                                       subnet_id,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAQn%2F%2Fr%2BI%3D","line":1724,"in_reply_to":"AAAAQn%2F%2FxzI%3D","updated":"2013-07-25 01:34:48.000000000","message":"OK, thank you for your comments.","commit_id":"1eff0af5964f1bcf90ae4f124b68859db62b803a"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"53b2373cf8d373c95e2d2541107d206c945c3ad7","unresolved":false,"context_lines":[{"line_number":1730,"context_line":""},{"line_number":1731,"context_line":"                    q \u003d update_context.session.query(models_v2.IPAllocation)"},{"line_number":1732,"context_line":"                    q \u003d q.filter_by(subnet_id\u003dsubnet_id)"},{"line_number":1733,"context_line":"                    self.assertEqual(q.count(), 1)"},{"line_number":1734,"context_line":""},{"line_number":1735,"context_line":"    def test_recycle_held_ip_address(self):"},{"line_number":1736,"context_line":"        plugin \u003d NeutronManager.get_plugin()"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAQn%2F%2Fx3o%3D","line":1733,"updated":"2013-07-23 13:01:32.000000000","message":"I don\u0027t understand why are you veryfying that you still have the IPAllocation entry. As you\u0027ve mocked delete_ip_allocation you\u0027re going to have it for sure.","commit_id":"1eff0af5964f1bcf90ae4f124b68859db62b803a"}]}
