)]}'
{"bin/nova-manage":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"80509b64bb5d0cfebf285dd60c4f8392a5773ac6","unresolved":false,"context_lines":[{"line_number":655,"context_line":"    def delete(self, ip_range):"},{"line_number":656,"context_line":"        \"\"\"Deletes floating ips by range\"\"\""},{"line_number":657,"context_line":"        admin_context \u003d context.get_admin_context()"},{"line_number":658,"context_line":"        net_manager \u003d importutils.import_object(FLAGS.network_manager)"},{"line_number":659,"context_line":"        net_manager.delete_floating_pool(admin_context, ip_range)"},{"line_number":660,"context_line":""},{"line_number":661,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":1,"id":"AAAAHX%2F%2F8io%3D","line":658,"updated":"2012-05-13 16:45:04.000000000","message":"Might consider DRY\u0027ing this up and putting the net_manager object available in the module namespace.","commit_id":"5a18bbec95390690924ab9e4e957b24570c666f9"}],"nova/api/openstack/compute/contrib/floating_ip_pools.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"80509b64bb5d0cfebf285dd60c4f8392a5773ac6","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":76,"context_line":"        authorize_manage(context)"},{"line_number":77,"context_line":"        if not body:"},{"line_number":78,"context_line":"            raise exc.HTTPBadRequest(\u0027body not found\u0027)"},{"line_number":79,"context_line":"        if ((not \u0027floating_ip_pool\u0027 in body) or"},{"line_number":80,"context_line":"            (not \u0027ip_range\u0027 in body[\u0027floating_ip_pool\u0027])):"},{"line_number":81,"context_line":"            LOG.debug(\u0027floating_ip_pool or ip_range not found in the body\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAHX%2F%2F8iU%3D","line":78,"updated":"2012-05-13 16:45:04.000000000","message":"The body argument will not be None. Ever... you should be able to remove the above two lines entirely and remove the \u003dNone from the body param.","commit_id":"5a18bbec95390690924ab9e4e957b24570c666f9"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"80509b64bb5d0cfebf285dd60c4f8392a5773ac6","unresolved":false,"context_lines":[{"line_number":78,"context_line":"            raise exc.HTTPBadRequest(\u0027body not found\u0027)"},{"line_number":79,"context_line":"        if ((not \u0027floating_ip_pool\u0027 in body) or"},{"line_number":80,"context_line":"            (not \u0027ip_range\u0027 in body[\u0027floating_ip_pool\u0027])):"},{"line_number":81,"context_line":"            LOG.debug(\u0027floating_ip_pool or ip_range not found in the body\u0027)"},{"line_number":82,"context_line":"            raise exc.HTTPBadRequest()"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        self.network_api.create_floating_ip_pool(context,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAHX%2F%2F8ik%3D","line":81,"updated":"2012-05-13 16:45:04.000000000","message":"Please i18n this:\n\n msg \u003d _(\"floating_ip_pool or ip_range not found in the body\")\n LOG.debug(msg)","commit_id":"5a18bbec95390690924ab9e4e957b24570c666f9"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"80509b64bb5d0cfebf285dd60c4f8392a5773ac6","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        if ((not \u0027floating_ip_pool\u0027 in body) or"},{"line_number":80,"context_line":"            (not \u0027ip_range\u0027 in body[\u0027floating_ip_pool\u0027])):"},{"line_number":81,"context_line":"            LOG.debug(\u0027floating_ip_pool or ip_range not found in the body\u0027)"},{"line_number":82,"context_line":"            raise exc.HTTPBadRequest()"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        self.network_api.create_floating_ip_pool(context,"},{"line_number":85,"context_line":"                                                 **body[\u0027floating_ip_pool\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAHX%2F%2F8ic%3D","line":82,"updated":"2012-05-13 16:45:04.000000000","message":"Did you want to return the message instead of just a 400?","commit_id":"5a18bbec95390690924ab9e4e957b24570c666f9"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"80509b64bb5d0cfebf285dd60c4f8392a5773ac6","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        pools \u003d self.network_api.get_floating_ip_pools(context)"},{"line_number":93,"context_line":"        return _translate_floating_ip_pools_view(pools)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    def delete_ip_range(self, req, body\u003dNone):"},{"line_number":96,"context_line":"        \"\"\"Delete a floating ip pool\"\"\""},{"line_number":97,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":98,"context_line":"        authorize_manage(context)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAHX%2F%2F8iY%3D","line":95,"updated":"2012-05-13 16:45:04.000000000","message":"This should be delete(self, req, id). REST APIs in OpenStack follow the convention:\n\n DELETE {resource}/{resource_id}\n\nSo in this case, should be:\n\n DELETE /os-floating-ip-pools/\u003cFLOATING_IP_POOL_ID\u003e\n\nAnd if you leave the router alone below instead of adding the collection_actions as you do, the request will be routed automatically to a method with the signature:\n\n def delete(self, req, id)\n\nWhich also means you will automatically get the ID of the floating IP pool that you should be able to pass directly to the network API call instead of digging through the JSON yourself..","commit_id":"5a18bbec95390690924ab9e4e957b24570c666f9"}],"nova/network/api.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"80509b64bb5d0cfebf285dd60c4f8392a5773ac6","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        args \u003d {}"},{"line_number":80,"context_line":"        args[\u0027ip_range\u0027] \u003d ip_range"},{"line_number":81,"context_line":"        args[\u0027pool\u0027] \u003d kwargs.get(\u0027pool\u0027, None)"},{"line_number":82,"context_line":"        args[\u0027interface\u0027] \u003d kwargs.get(\u0027interface\u0027, None)"},{"line_number":83,"context_line":"        return rpc.call(context,"},{"line_number":84,"context_line":"                        FLAGS.network_topic,"},{"line_number":85,"context_line":"                        {\u0027method\u0027: \u0027create_floating_pool\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAHX%2F%2F8iQ%3D","line":82,"updated":"2012-05-13 16:45:04.000000000","message":"Here and the line above it, you do not need the \", None\". A Python dict\u0027s get() method automatically returns None if the key does not exist in the dict.","commit_id":"5a18bbec95390690924ab9e4e957b24570c666f9"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"80509b64bb5d0cfebf285dd60c4f8392a5773ac6","unresolved":false,"context_lines":[{"line_number":90,"context_line":"                        FLAGS.network_topic,"},{"line_number":91,"context_line":"                        {\u0027method\u0027: \u0027get_floating_pools\u0027})"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    def delete_floating_ip_pool(self, context, ip_range):"},{"line_number":94,"context_line":"        return rpc.call(context,"},{"line_number":95,"context_line":"                        FLAGS.network_topic,"},{"line_number":96,"context_line":"                        {\u0027method\u0027: \u0027delete_floating_pool\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAHX%2F%2F8iM%3D","line":93,"updated":"2012-05-13 16:45:04.000000000","message":"I question having ip_range be the primary key for the floating IP pool. Seems like it would be easier to have a UUID identifier for the floating IP pool primary key and be able to supply that UUID to the DELETE /os-floating-ip-pools/\u003cUUID\u003e call...","commit_id":"5a18bbec95390690924ab9e4e957b24570c666f9"}]}
