)]}'
{"etc/nova/policy.json":[{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"e910d32e8f776186da9fc9d61ae5a32d65533707","unresolved":false,"context_lines":[{"line_number":151,"context_line":"    \"compute_extension:floating_ip_dns\": \"\","},{"line_number":152,"context_line":"    \"compute_extension:floating_ip_pools\": \"\","},{"line_number":153,"context_line":"    \"compute_extension:floating_ips\": \"\","},{"line_number":154,"context_line":"    \"compute_extension:v3:os-floating-ips\": \"\","},{"line_number":155,"context_line":"    \"compute_extension:floating_ips_bulk\": \"rule:admin_api\","},{"line_number":156,"context_line":"    \"compute_extension:fping\": \"\","},{"line_number":157,"context_line":"    \"compute_extension:fping:all_tenants\": \"rule:admin_api\","}],"source_content_type":"application/json","patch_set":3,"id":"da9df570_103bebd1","line":154,"updated":"2014-09-25 04:27:14.000000000","message":"Need to add discoverable policy","commit_id":"e545af5b2f5fa67570c83ca9b4acfc9370fb2db1"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"f4bd7984c7c64a54d403a80c2637037677ea7ec5","unresolved":false,"context_lines":[{"line_number":151,"context_line":"    \"compute_extension:floating_ip_dns\": \"\","},{"line_number":152,"context_line":"    \"compute_extension:floating_ip_pools\": \"\","},{"line_number":153,"context_line":"    \"compute_extension:floating_ips\": \"\","},{"line_number":154,"context_line":"    \"compute_extension:v3:os-floating-ips\": \"\","},{"line_number":155,"context_line":"    \"compute_extension:floating_ips_bulk\": \"rule:admin_api\","},{"line_number":156,"context_line":"    \"compute_extension:fping\": \"\","},{"line_number":157,"context_line":"    \"compute_extension:fping:all_tenants\": \"rule:admin_api\","}],"source_content_type":"application/json","patch_set":3,"id":"da9df570_cb0a9220","line":154,"in_reply_to":"da9df570_103bebd1","updated":"2014-09-25 05:55:37.000000000","message":"Done","commit_id":"e545af5b2f5fa67570c83ca9b4acfc9370fb2db1"}],"nova/api/openstack/compute/contrib/floating_ips.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"e69f852444dcd7a39387624fd1fe2c2b50d4544f","unresolved":false,"context_lines":[{"line_number":87,"context_line":"    instance_id \u003d snagiibfa(context, address)"},{"line_number":88,"context_line":"    if instance_id:"},{"line_number":89,"context_line":"        return common.get_instance(self.compute_api, context, instance_id,"},{"line_number":90,"context_line":"                                   want_objects\u003dTrue)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"def disassociate_floating_ip(self, context, instance, address):"}],"source_content_type":"text/x-python","patch_set":19,"id":"5a890539_cad839f3","line":90,"updated":"2014-11-27 08:09:53.000000000","message":"I cannot understand why we need to change here by this patch.\nThis change should be out of the scope.","commit_id":"f3453391d3ca5ecd8987d84d32f1408c527ea94a"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"c27355404d3f9d532aef7508d3cde18ff62f89be","unresolved":false,"context_lines":[{"line_number":87,"context_line":"    instance_id \u003d snagiibfa(context, address)"},{"line_number":88,"context_line":"    if instance_id:"},{"line_number":89,"context_line":"        return common.get_instance(self.compute_api, context, instance_id,"},{"line_number":90,"context_line":"                                   want_objects\u003dTrue)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"def disassociate_floating_ip(self, context, instance, address):"}],"source_content_type":"text/x-python","patch_set":19,"id":"5a890539_757c8aec","line":90,"in_reply_to":"5a890539_cad839f3","updated":"2014-11-27 08:44:57.000000000","message":"me neither, stupid mistake.\nthanks for kindly reviewing. will rebase to last master.","commit_id":"f3453391d3ca5ecd8987d84d32f1408c527ea94a"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"e69f852444dcd7a39387624fd1fe2c2b50d4544f","unresolved":false,"context_lines":[{"line_number":208,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"        instance \u003d common.get_instance(self.compute_api, context, id,"},{"line_number":211,"context_line":"                                       want_objects\u003dTrue)"},{"line_number":212,"context_line":"        cached_nwinfo \u003d compute_utils.get_nw_info_for_instance(instance)"},{"line_number":213,"context_line":"        if not cached_nwinfo:"},{"line_number":214,"context_line":"            msg \u003d _(\u0027No nw_info cache associated with instance\u0027)"}],"source_content_type":"text/x-python","patch_set":19,"id":"5a890539_0ae321a5","line":211,"updated":"2014-11-27 08:09:53.000000000","message":"ditto","commit_id":"f3453391d3ca5ecd8987d84d32f1408c527ea94a"}],"nova/api/openstack/compute/plugins/v3/floating_ips.py":[{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"e910d32e8f776186da9fc9d61ae5a32d65533707","unresolved":false,"context_lines":[{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        return _translate_floating_ip_view(floating_ip)"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    def index(self, req):"},{"line_number":100,"context_line":"        \"\"\"Return a list of floating ips allocated to a project.\"\"\""},{"line_number":101,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":102,"context_line":"        authorize(context)"}],"source_content_type":"text/x-python","patch_set":3,"id":"da9df570_b0785f90","line":99,"updated":"2014-09-25 04:27:14.000000000","message":"need expected_errors decorator","commit_id":"e545af5b2f5fa67570c83ca9b4acfc9370fb2db1"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"f4bd7984c7c64a54d403a80c2637037677ea7ec5","unresolved":false,"context_lines":[{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        return _translate_floating_ip_view(floating_ip)"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    def index(self, req):"},{"line_number":100,"context_line":"        \"\"\"Return a list of floating ips allocated to a project.\"\"\""},{"line_number":101,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":102,"context_line":"        authorize(context)"}],"source_content_type":"text/x-python","patch_set":3,"id":"da9df570_cb21b2a0","line":99,"in_reply_to":"da9df570_b0785f90","updated":"2014-09-25 05:55:37.000000000","message":"Done","commit_id":"e545af5b2f5fa67570c83ca9b4acfc9370fb2db1"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"e910d32e8f776186da9fc9d61ae5a32d65533707","unresolved":false,"context_lines":[{"line_number":133,"context_line":""},{"line_number":134,"context_line":"        return _translate_floating_ip_view(ip)"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"    @extensions.expected_errors(404)"},{"line_number":137,"context_line":"    def delete(self, req, id):"},{"line_number":138,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":139,"context_line":"        authorize(context)"}],"source_content_type":"text/x-python","patch_set":3,"id":"da9df570_10692bbe","line":136,"updated":"2014-09-25 04:27:14.000000000","message":"missing 403","commit_id":"e545af5b2f5fa67570c83ca9b4acfc9370fb2db1"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"f4bd7984c7c64a54d403a80c2637037677ea7ec5","unresolved":false,"context_lines":[{"line_number":133,"context_line":""},{"line_number":134,"context_line":"        return _translate_floating_ip_view(ip)"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"    @extensions.expected_errors(404)"},{"line_number":137,"context_line":"    def delete(self, req, id):"},{"line_number":138,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":139,"context_line":"        authorize(context)"}],"source_content_type":"text/x-python","patch_set":3,"id":"da9df570_eb24b6b0","line":136,"in_reply_to":"da9df570_10692bbe","updated":"2014-09-25 05:55:37.000000000","message":"Done","commit_id":"e545af5b2f5fa67570c83ca9b4acfc9370fb2db1"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"e910d32e8f776186da9fc9d61ae5a32d65533707","unresolved":false,"context_lines":[{"line_number":231,"context_line":"        return webob.Response(status_int\u003d202)"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"    @wsgi.action(\u0027removeFloatingIp\u0027)"},{"line_number":234,"context_line":"    def _remove_floating_ip(self, req, id, body):"},{"line_number":235,"context_line":"        \"\"\"Dissociate floating_ip from an instance.\"\"\""},{"line_number":236,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":237,"context_line":"        authorize(context)"}],"source_content_type":"text/x-python","patch_set":3,"id":"da9df570_f0a907e0","line":234,"updated":"2014-09-25 04:27:14.000000000","message":"need expected_errors","commit_id":"e545af5b2f5fa67570c83ca9b4acfc9370fb2db1"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"f4bd7984c7c64a54d403a80c2637037677ea7ec5","unresolved":false,"context_lines":[{"line_number":231,"context_line":"        return webob.Response(status_int\u003d202)"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"    @wsgi.action(\u0027removeFloatingIp\u0027)"},{"line_number":234,"context_line":"    def _remove_floating_ip(self, req, id, body):"},{"line_number":235,"context_line":"        \"\"\"Dissociate floating_ip from an instance.\"\"\""},{"line_number":236,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":237,"context_line":"        authorize(context)"}],"source_content_type":"text/x-python","patch_set":3,"id":"da9df570_4b35c2d8","line":234,"in_reply_to":"da9df570_f0a907e0","updated":"2014-09-25 05:55:37.000000000","message":"Done","commit_id":"e545af5b2f5fa67570c83ca9b4acfc9370fb2db1"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"1c7cf6e80b77a490982ae720810f5e6e28126ad7","unresolved":false,"context_lines":[{"line_number":151,"context_line":"        instance \u003d get_instance_by_floating_ip_addr(self, context, address)"},{"line_number":152,"context_line":"        try:"},{"line_number":153,"context_line":"            self.network_api.disassociate_and_release_floating_ip("},{"line_number":154,"context_line":"                context, instance, floating_ip)"},{"line_number":155,"context_line":"        except exception.Forbidden:"},{"line_number":156,"context_line":"            raise webob.exc.HTTPForbidden()"},{"line_number":157,"context_line":"        except exception.CannotDisassociateAutoAssignedFloatingIP:"}],"source_content_type":"text/x-python","patch_set":5,"id":"baa201ad_c682e251","line":154,"updated":"2014-09-30 09:06:40.000000000","message":"there my raise FloatingIpAssociated exception, we should catch it","commit_id":"48083ea428c70cfd17c2d32a24d4db0021ea4298"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"1c7cf6e80b77a490982ae720810f5e6e28126ad7","unresolved":false,"context_lines":[{"line_number":157,"context_line":"        except exception.CannotDisassociateAutoAssignedFloatingIP:"},{"line_number":158,"context_line":"            msg \u003d _(\u0027Cannot disassociate auto assigned floating ip\u0027)"},{"line_number":159,"context_line":"            raise webob.exc.HTTPForbidden(explanation\u003dmsg)"},{"line_number":160,"context_line":"        return webob.Response(status_int\u003d202)"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"class FloatingIPActionController(wsgi.Controller):"}],"source_content_type":"text/x-python","patch_set":5,"id":"baa201ad_26748e98","line":160,"updated":"2014-09-30 09:06:40.000000000","message":"better to use wsgi.response","commit_id":"48083ea428c70cfd17c2d32a24d4db0021ea4298"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"aaef9e7fba02771f6c2aca3a16a059e9e495d977","unresolved":false,"context_lines":[{"line_number":157,"context_line":"        except exception.CannotDisassociateAutoAssignedFloatingIP:"},{"line_number":158,"context_line":"            msg \u003d _(\u0027Cannot disassociate auto assigned floating ip\u0027)"},{"line_number":159,"context_line":"            raise webob.exc.HTTPForbidden(explanation\u003dmsg)"},{"line_number":160,"context_line":"        return webob.Response(status_int\u003d202)"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"class FloatingIPActionController(wsgi.Controller):"}],"source_content_type":"text/x-python","patch_set":5,"id":"baa201ad_39f7a1d4","line":160,"in_reply_to":"baa201ad_26748e98","updated":"2014-10-09 01:48:43.000000000","message":"Done","commit_id":"48083ea428c70cfd17c2d32a24d4db0021ea4298"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"12b6c2f3912528b391e15a0ed97434af981f5d1e","unresolved":false,"context_lines":[{"line_number":215,"context_line":"                                  fixed_address\u003dfixed_address)"},{"line_number":216,"context_line":"        except exception.FloatingIpAssociated:"},{"line_number":217,"context_line":"            msg \u003d _(\u0027floating ip is already associated\u0027)"},{"line_number":218,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":219,"context_line":"        except exception.NoFloatingIpInterface:"},{"line_number":220,"context_line":"            msg \u003d _(\u0027l3driver call to add floating ip failed\u0027)"},{"line_number":221,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":5,"id":"baa201ad_af4bdcae","line":218,"updated":"2014-10-01 05:46:00.000000000","message":"This except block seems unnecessary because FloatingIpAssociated happens on the following cases only:\n\n* nova/network/neutronv2/api.py: disassociate_floating_ip\n* nova/network/floating_ips.py: deallocate_floating_ip\n\nThis code is ported from original v2.0 and this unnecessary code should be removed with the other patch.\nI posted it on https://review.openstack.org/#/c/125267/","commit_id":"48083ea428c70cfd17c2d32a24d4db0021ea4298"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"aaef9e7fba02771f6c2aca3a16a059e9e495d977","unresolved":false,"context_lines":[{"line_number":215,"context_line":"                                  fixed_address\u003dfixed_address)"},{"line_number":216,"context_line":"        except exception.FloatingIpAssociated:"},{"line_number":217,"context_line":"            msg \u003d _(\u0027floating ip is already associated\u0027)"},{"line_number":218,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":219,"context_line":"        except exception.NoFloatingIpInterface:"},{"line_number":220,"context_line":"            msg \u003d _(\u0027l3driver call to add floating ip failed\u0027)"},{"line_number":221,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":5,"id":"baa201ad_1923bd56","line":218,"in_reply_to":"baa201ad_af4bdcae","updated":"2014-10-09 01:48:43.000000000","message":"I\u0027v remove the exception on my PS, thx Ken\u0027ichi","commit_id":"48083ea428c70cfd17c2d32a24d4db0021ea4298"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"0f60a4a698d24b5df0ff467122ca30a42fa8c2c9","unresolved":false,"context_lines":[{"line_number":273,"context_line":"        else:"},{"line_number":274,"context_line":"            msg \u003d _(\"Floating ip %(address)s is not associated with instance \""},{"line_number":275,"context_line":"                    \"%(id)s.\") % {\u0027address\u0027: address, \u0027id\u0027: id}"},{"line_number":276,"context_line":"            raise webob.exc.HTTPUnprocessableEntity(explanation\u003dmsg)"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"class FloatingIps(extensions.V3APIExtensionBase):"}],"source_content_type":"text/x-python","patch_set":5,"id":"baa201ad_4cda9b79","line":276,"updated":"2014-09-30 01:55:49.000000000","message":"We can fix this up later and do a fix for both v2 and v2.1","commit_id":"48083ea428c70cfd17c2d32a24d4db0021ea4298"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"aaef9e7fba02771f6c2aca3a16a059e9e495d977","unresolved":false,"context_lines":[{"line_number":273,"context_line":"        else:"},{"line_number":274,"context_line":"            msg \u003d _(\"Floating ip %(address)s is not associated with instance \""},{"line_number":275,"context_line":"                    \"%(id)s.\") % {\u0027address\u0027: address, \u0027id\u0027: id}"},{"line_number":276,"context_line":"            raise webob.exc.HTTPUnprocessableEntity(explanation\u003dmsg)"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"class FloatingIps(extensions.V3APIExtensionBase):"}],"source_content_type":"text/x-python","patch_set":5,"id":"baa201ad_99a40dbb","line":276,"in_reply_to":"baa201ad_4cda9b79","updated":"2014-10-09 01:48:43.000000000","message":"sure, that would be great, thx.","commit_id":"48083ea428c70cfd17c2d32a24d4db0021ea4298"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"a7b941fa8657ab16dd7e2a441924845ae3c5be63","unresolved":false,"context_lines":[{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        try:"},{"line_number":92,"context_line":"            floating_ip \u003d self.network_api.get_floating_ip(context, id)"},{"line_number":93,"context_line":"        except (exception.NotFound, exception.InvalidID):"},{"line_number":94,"context_line":"            msg \u003d _(\"Floating ip not found for id %s\") % id"},{"line_number":95,"context_line":"            raise webob.exc.HTTPNotFound(explanation\u003dmsg)"},{"line_number":96,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"baa201ad_adfb2cbf","line":93,"updated":"2014-10-09 03:30:37.000000000","message":"400 for InvalidID, And the NotFound is too generic","commit_id":"c17a4a8455d74d2061b179cb22c60af7e30f5b7c"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"5848453e8f778ec8a94d76ee0a75adbda5c355b3","unresolved":false,"context_lines":[{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        try:"},{"line_number":92,"context_line":"            floating_ip \u003d self.network_api.get_floating_ip(context, id)"},{"line_number":93,"context_line":"        except (exception.NotFound, exception.InvalidID):"},{"line_number":94,"context_line":"            msg \u003d _(\"Floating ip not found for id %s\") % id"},{"line_number":95,"context_line":"            raise webob.exc.HTTPNotFound(explanation\u003dmsg)"},{"line_number":96,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"baa201ad_a6cc296b","line":93,"in_reply_to":"baa201ad_adfb2cbf","updated":"2014-10-13 02:24:19.000000000","message":"hi Alex, this is just ported from v2 api, first we need to make v2.1 api work .\n\nI \u0027d like to fix this in another patch.\n\nI will update this patch to fix pep8 error?what do you think?\n\nEli.","commit_id":"c17a4a8455d74d2061b179cb22c60af7e30f5b7c"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"a7b941fa8657ab16dd7e2a441924845ae3c5be63","unresolved":false,"context_lines":[{"line_number":143,"context_line":"        # get the floating ip object"},{"line_number":144,"context_line":"        try:"},{"line_number":145,"context_line":"            floating_ip \u003d self.network_api.get_floating_ip(context, id)"},{"line_number":146,"context_line":"        except (exception.NotFound, exception.InvalidID):"},{"line_number":147,"context_line":"            msg \u003d _(\"Floating ip not found for id %s\") % id"},{"line_number":148,"context_line":"            raise webob.exc.HTTPNotFound(explanation\u003dmsg)"},{"line_number":149,"context_line":"        address \u003d floating_ip[\u0027address\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"baa201ad_8d110806","line":146,"updated":"2014-10-09 03:30:37.000000000","message":"400 for InvalidID, And the NotFound is too generic","commit_id":"c17a4a8455d74d2061b179cb22c60af7e30f5b7c"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"5848453e8f778ec8a94d76ee0a75adbda5c355b3","unresolved":false,"context_lines":[{"line_number":143,"context_line":"        # get the floating ip object"},{"line_number":144,"context_line":"        try:"},{"line_number":145,"context_line":"            floating_ip \u003d self.network_api.get_floating_ip(context, id)"},{"line_number":146,"context_line":"        except (exception.NotFound, exception.InvalidID):"},{"line_number":147,"context_line":"            msg \u003d _(\"Floating ip not found for id %s\") % id"},{"line_number":148,"context_line":"            raise webob.exc.HTTPNotFound(explanation\u003dmsg)"},{"line_number":149,"context_line":"        address \u003d floating_ip[\u0027address\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"baa201ad_91b476f3","line":146,"in_reply_to":"baa201ad_8d110806","updated":"2014-10-13 02:24:19.000000000","message":"ditto","commit_id":"c17a4a8455d74d2061b179cb22c60af7e30f5b7c"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"a7b941fa8657ab16dd7e2a441924845ae3c5be63","unresolved":false,"context_lines":[{"line_number":149,"context_line":"        address \u003d floating_ip[\u0027address\u0027]"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"        # get the associated instance object (if any)"},{"line_number":152,"context_line":"        instance \u003d get_instance_by_floating_ip_addr(self, context, address)"},{"line_number":153,"context_line":"        try:"},{"line_number":154,"context_line":"            self.network_api.disassociate_and_release_floating_ip("},{"line_number":155,"context_line":"                context, instance, floating_ip)"}],"source_content_type":"text/x-python","patch_set":6,"id":"baa201ad_add08c1f","line":152,"updated":"2014-10-09 03:30:37.000000000","message":"I think we should catch InstanceNotFound at here.","commit_id":"c17a4a8455d74d2061b179cb22c60af7e30f5b7c"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"5848453e8f778ec8a94d76ee0a75adbda5c355b3","unresolved":false,"context_lines":[{"line_number":149,"context_line":"        address \u003d floating_ip[\u0027address\u0027]"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"        # get the associated instance object (if any)"},{"line_number":152,"context_line":"        instance \u003d get_instance_by_floating_ip_addr(self, context, address)"},{"line_number":153,"context_line":"        try:"},{"line_number":154,"context_line":"            self.network_api.disassociate_and_release_floating_ip("},{"line_number":155,"context_line":"                context, instance, floating_ip)"}],"source_content_type":"text/x-python","patch_set":6,"id":"baa201ad_b1b7baf4","line":152,"in_reply_to":"baa201ad_add08c1f","updated":"2014-10-13 02:24:19.000000000","message":"ditto","commit_id":"c17a4a8455d74d2061b179cb22c60af7e30f5b7c"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"7c770ca7dcca0bfc52cc4acb3f5060ece5742dfe","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        raise webob.exc.HTTPForbidden()"},{"line_number":72,"context_line":"    except exception.CannotDisassociateAutoAssignedFloatingIP:"},{"line_number":73,"context_line":"        msg \u003d _(\u0027Cannot disassociate auto assigned floating ip\u0027)"},{"line_number":74,"context_line":"        raise webob.exc.HTTPForbidden(explanation\u003dmsg)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"class FloatingIPController(object):"}],"source_content_type":"text/x-python","patch_set":8,"id":"baa201ad_11f166cd","line":74,"updated":"2014-10-13 02:23:01.000000000","message":"feel this like bad request","commit_id":"11df15ebe608e558dabecf88f63e4db818c4165e"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"2706a547876e3da762b7618d4e2ef4a2359c40f0","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        raise webob.exc.HTTPForbidden()"},{"line_number":72,"context_line":"    except exception.CannotDisassociateAutoAssignedFloatingIP:"},{"line_number":73,"context_line":"        msg \u003d _(\u0027Cannot disassociate auto assigned floating ip\u0027)"},{"line_number":74,"context_line":"        raise webob.exc.HTTPForbidden(explanation\u003dmsg)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"class FloatingIPController(object):"}],"source_content_type":"text/x-python","patch_set":8,"id":"baa201ad_11c88673","line":74,"in_reply_to":"baa201ad_11f166cd","updated":"2014-10-13 02:25:59.000000000","message":"hi Alex, this is just ported from v2 api, first we need to make v2.1 api work .\nI \u0027d like to fix this in another patch.\nis that okay for you ?\nEli.","commit_id":"11df15ebe608e558dabecf88f63e4db818c4165e"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"2706a547876e3da762b7618d4e2ef4a2359c40f0","unresolved":false,"context_lines":[{"line_number":285,"context_line":"    def get_resources(self):"},{"line_number":286,"context_line":"        resource \u003d [extensions.ResourceExtension(ALIAS,"},{"line_number":287,"context_line":"                                FloatingIPController(),"},{"line_number":288,"context_line":"                                member_actions\u003d{})]"},{"line_number":289,"context_line":"        return resource"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":"    def get_controller_extensions(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"baa201ad_31c3ca58","line":288,"updated":"2014-10-13 02:25:59.000000000","message":"I will remove this next PS","commit_id":"11df15ebe608e558dabecf88f63e4db818c4165e"},{"author":{"_account_id":8412,"name":"Mike Durnosvistov","email":"glacierr.dev@gmail.com","username":"mdurnosvistov"},"change_message_id":"85821839502d8ef67ab411f84d904ffd36c23ad3","unresolved":false,"context_lines":[{"line_number":208,"context_line":"        if not fixed_address:"},{"line_number":209,"context_line":"            fixed_address \u003d fixed_ips[0][\u0027address\u0027]"},{"line_number":210,"context_line":"            if len(fixed_ips) \u003e 1:"},{"line_number":211,"context_line":"                LOG.warn(_LW(\u0027multiple fixed_ips exist, using the first: \u0027"},{"line_number":212,"context_line":"                             \u0027%s\u0027), fixed_address)"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":15,"id":"5a890539_253fb088","line":211,"updated":"2014-11-23 08:11:00.000000000","message":"N331  Use LOG.warning due to compatibility with py3","commit_id":"b0483cfb1e3099f2cbb94a4c0daabd07c6a2a458"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"e3cee71889a60a1cac0be589ee64e8b6f38ddb0b","unresolved":false,"context_lines":[{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        return _translate_floating_ip_view(floating_ip)"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    @extensions.expected_errors((403, 404))"},{"line_number":100,"context_line":"    def index(self, req):"},{"line_number":101,"context_line":"        \"\"\"Return a list of floating ips allocated to a project.\"\"\""},{"line_number":102,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"}],"source_content_type":"text/x-python","patch_set":16,"id":"5a890539_76767da5","line":99,"updated":"2014-11-26 04:23:57.000000000","message":"I cannot find the reason of 403 and 404 because there is not any http exceptions related to them.","commit_id":"007a92e5abe87af6a2c92d0652870c6dea14a926"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"e3cee71889a60a1cac0be589ee64e8b6f38ddb0b","unresolved":false,"context_lines":[{"line_number":134,"context_line":""},{"line_number":135,"context_line":"        return _translate_floating_ip_view(ip)"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    @extensions.expected_errors((403, 404))"},{"line_number":138,"context_line":"    @wsgi.response(202)"},{"line_number":139,"context_line":"    def delete(self, req, id):"},{"line_number":140,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"}],"source_content_type":"text/x-python","patch_set":16,"id":"5a890539_769d9dbb","line":137,"updated":"2014-11-26 04:23:57.000000000","message":"this expected_errors should contain 400 because of line 159.","commit_id":"007a92e5abe87af6a2c92d0652870c6dea14a926"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"dcffd741cd743b6787793ba7e33f0bf199742ff0","unresolved":false,"context_lines":[{"line_number":209,"context_line":"            fixed_address \u003d fixed_ips[0][\u0027address\u0027]"},{"line_number":210,"context_line":"            if len(fixed_ips) \u003e 1:"},{"line_number":211,"context_line":"                LOG.warning(_LW(\u0027multiple fixed_ips exist, using the first: \u0027"},{"line_number":212,"context_line":"                             \u0027%s\u0027), fixed_address)"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"        try:"},{"line_number":215,"context_line":"            self.network_api.associate_floating_ip(context, instance,"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_e4f60ed8","line":212,"updated":"2014-11-27 05:58:27.000000000","message":"3 spaces are necessary for consistent indent.","commit_id":"3c8dc1ce3c3998c539a2e6479306db11993abed8"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"dcffd741cd743b6787793ba7e33f0bf199742ff0","unresolved":false,"context_lines":[{"line_number":223,"context_line":"            raise webob.exc.HTTPNotFound(explanation\u003dmsg)"},{"line_number":224,"context_line":"        except exception.Forbidden as e:"},{"line_number":225,"context_line":"            raise webob.exc.HTTPForbidden(explanation\u003de.format_message())"},{"line_number":226,"context_line":"        except Exception:"},{"line_number":227,"context_line":"            msg \u003d _(\u0027Unable to associate floating ip %(address)s to \u0027"},{"line_number":228,"context_line":"                    \u0027fixed ip %(fixed_address)s for instance %(id)s. \u0027"},{"line_number":229,"context_line":"                    \u0027Error: %(error)s\u0027) % ("}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_4467e2b7","line":226,"updated":"2014-11-27 05:58:27.000000000","message":"\"as e\" is necessary because of line231.","commit_id":"3c8dc1ce3c3998c539a2e6479306db11993abed8"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"c0c016c4d578523f2561cfc47cceadd0ccdebcc4","unresolved":false,"context_lines":[{"line_number":216,"context_line":"        try:"},{"line_number":217,"context_line":"            self.network_api.associate_floating_ip(context, instance,"},{"line_number":218,"context_line":"                                  floating_address\u003daddress,"},{"line_number":219,"context_line":"                                  fixed_address\u003dfixed_address)"},{"line_number":220,"context_line":"        except exception.NoFloatingIpInterface:"},{"line_number":221,"context_line":"            msg \u003d _(\u0027l3driver call to add floating ip failed\u0027)"},{"line_number":222,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":20,"id":"5a890539_d750d80c","line":219,"updated":"2014-11-27 14:33:44.000000000","message":"by checking the difference between v2 and this v2.1 code, this patch does not contain the following except block:\n\n        except exception.FloatingIpAssociated:\n            msg \u003d _(\u0027floating ip is already associated\u0027)\n            raise webob.exc.HTTPBadRequest(explanation\u003dmsg)\n\nIs that intentional?","commit_id":"2eac111d9688b8c4a0003ebeef7c98eb050ea9f0"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"4cdeecc261125be3c4befcf3f30f2d126af6d1b9","unresolved":false,"context_lines":[{"line_number":216,"context_line":"        try:"},{"line_number":217,"context_line":"            self.network_api.associate_floating_ip(context, instance,"},{"line_number":218,"context_line":"                                  floating_address\u003daddress,"},{"line_number":219,"context_line":"                                  fixed_address\u003dfixed_address)"},{"line_number":220,"context_line":"        except exception.NoFloatingIpInterface:"},{"line_number":221,"context_line":"            msg \u003d _(\u0027l3driver call to add floating ip failed\u0027)"},{"line_number":222,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":20,"id":"5a890539_f3479f75","line":219,"in_reply_to":"5a890539_d750d80c","updated":"2014-11-28 01:53:05.000000000","message":"no, missing that.\nwill update it. too many history changes.....\nthe patch is started porting for a long time, things changes a lot....","commit_id":"2eac111d9688b8c4a0003ebeef7c98eb050ea9f0"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"7a0e76c213631cf5af193c146d13e64c4e3d2346","unresolved":false,"context_lines":[{"line_number":216,"context_line":"        try:"},{"line_number":217,"context_line":"            self.network_api.associate_floating_ip(context, instance,"},{"line_number":218,"context_line":"                                  floating_address\u003daddress,"},{"line_number":219,"context_line":"                                  fixed_address\u003dfixed_address)"},{"line_number":220,"context_line":"        except exception.NoFloatingIpInterface:"},{"line_number":221,"context_line":"            msg \u003d _(\u0027l3driver call to add floating ip failed\u0027)"},{"line_number":222,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":20,"id":"5a890539_ce29168b","line":219,"in_reply_to":"5a890539_f3479f75","updated":"2014-11-28 01:56:33.000000000","message":"yeah, I know.\nThis patch is very big, and I can understand this kind of problem happen sometimes.\n\nThis patch is very important for us, because most Tempest tests against v2.1 API are failing due to the lack of this API on the gate().\nSo I\u0027d like to support this as possible.","commit_id":"2eac111d9688b8c4a0003ebeef7c98eb050ea9f0"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"c0c016c4d578523f2561cfc47cceadd0ccdebcc4","unresolved":false,"context_lines":[{"line_number":225,"context_line":"            raise webob.exc.HTTPNotFound(explanation\u003dmsg)"},{"line_number":226,"context_line":"        except exception.Forbidden as e:"},{"line_number":227,"context_line":"            raise webob.exc.HTTPForbidden(explanation\u003de.format_message())"},{"line_number":228,"context_line":"        except Exception:"},{"line_number":229,"context_line":"            msg \u003d _(\u0027Unable to associate floating ip %(address)s to \u0027"},{"line_number":230,"context_line":"                    \u0027fixed ip %(fixed_address)s for instance %(id)s. \u0027"},{"line_number":231,"context_line":"                    \u0027Error: %(error)s\u0027) % ("}],"source_content_type":"text/x-python","patch_set":20,"id":"5a890539_340afa27","line":228,"updated":"2014-11-27 14:33:44.000000000","message":"seems to revert here..\n\ns/Exception/Exception as e/ for line 233.","commit_id":"2eac111d9688b8c4a0003ebeef7c98eb050ea9f0"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"4cdeecc261125be3c4befcf3f30f2d126af6d1b9","unresolved":false,"context_lines":[{"line_number":225,"context_line":"            raise webob.exc.HTTPNotFound(explanation\u003dmsg)"},{"line_number":226,"context_line":"        except exception.Forbidden as e:"},{"line_number":227,"context_line":"            raise webob.exc.HTTPForbidden(explanation\u003de.format_message())"},{"line_number":228,"context_line":"        except Exception:"},{"line_number":229,"context_line":"            msg \u003d _(\u0027Unable to associate floating ip %(address)s to \u0027"},{"line_number":230,"context_line":"                    \u0027fixed ip %(fixed_address)s for instance %(id)s. \u0027"},{"line_number":231,"context_line":"                    \u0027Error: %(error)s\u0027) % ("}],"source_content_type":"text/x-python","patch_set":20,"id":"5a890539_93481b8c","line":228,"in_reply_to":"5a890539_340afa27","updated":"2014-11-28 01:53:05.000000000","message":"Done","commit_id":"2eac111d9688b8c4a0003ebeef7c98eb050ea9f0"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"091c3469211dfac5987f6ae13f61fd25652efade","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        return _translate_floating_ip_view(ip)"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    @extensions.expected_errors((400, 403, 404))"},{"line_number":139,"context_line":"    @wsgi.response(202)"},{"line_number":140,"context_line":"    def delete(self, req, id):"},{"line_number":141,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":142,"context_line":"        authorize(context)"}],"source_content_type":"text/x-python","patch_set":21,"id":"5a890539_eef17202","line":139,"updated":"2014-11-28 02:19:28.000000000","message":"could you change line138 and line 139 for readability?","commit_id":"8d5f67828b5e8a51e6aae80706923e3e2a506208"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"091c3469211dfac5987f6ae13f61fd25652efade","unresolved":false,"context_lines":[{"line_number":157,"context_line":"        except exception.Forbidden:"},{"line_number":158,"context_line":"            raise webob.exc.HTTPForbidden()"},{"line_number":159,"context_line":"        except exception.FloatingIpAssociated as ex:"},{"line_number":160,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dex.format_message())"},{"line_number":161,"context_line":"        except exception.CannotDisassociateAutoAssignedFloatingIP:"},{"line_number":162,"context_line":"            msg \u003d _(\u0027Cannot disassociate auto assigned floating ip\u0027)"},{"line_number":163,"context_line":"            raise webob.exc.HTTPForbidden(explanation\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":21,"id":"5a890539_ceecb62c","line":160,"updated":"2014-11-28 02:19:28.000000000","message":"This line 159-160 doesn\u0027t exist in v2 API. is it necessary?","commit_id":"8d5f67828b5e8a51e6aae80706923e3e2a506208"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"621fa815d01d5b915b71f7221cd4e08581667ee7","unresolved":false,"context_lines":[{"line_number":157,"context_line":"        except exception.Forbidden:"},{"line_number":158,"context_line":"            raise webob.exc.HTTPForbidden()"},{"line_number":159,"context_line":"        except exception.FloatingIpAssociated as ex:"},{"line_number":160,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dex.format_message())"},{"line_number":161,"context_line":"        except exception.CannotDisassociateAutoAssignedFloatingIP:"},{"line_number":162,"context_line":"            msg \u003d _(\u0027Cannot disassociate auto assigned floating ip\u0027)"},{"line_number":163,"context_line":"            raise webob.exc.HTTPForbidden(explanation\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":21,"id":"5a890539_aece8ab5","line":160,"in_reply_to":"5a890539_ceecb62c","updated":"2014-11-28 02:30:38.000000000","message":"yes, can you please check PS5.","commit_id":"8d5f67828b5e8a51e6aae80706923e3e2a506208"}],"nova/tests/api/openstack/compute/contrib/test_floating_ips.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"a9dd71fdec996e3be83de7481c7fb8d996ad5de4","unresolved":false,"context_lines":[{"line_number":809,"context_line":"        req.method \u003d \"POST\""},{"line_number":810,"context_line":"        req.body \u003d jsonutils.dumps(body)"},{"line_number":811,"context_line":"        req.headers[\"content-type\"] \u003d \"application/json\""},{"line_number":812,"context_line":"        resp \u003d self._get_fake_response(req, \u0027servers\u0027)"},{"line_number":813,"context_line":"        res_dict \u003d jsonutils.loads(resp.body)"},{"line_number":814,"context_line":"        self.assertEqual(resp.status_int, 400)"},{"line_number":815,"context_line":"        self.assertEqual(res_dict[\u0027badRequest\u0027][\u0027message\u0027],"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa98f980_91527633","line":812,"updated":"2014-09-11 06:31:40.000000000","message":"There is the reason of can\u0027t find the addFloatingIP action. The init_only only get \u0027servers\u0027 extension, it should get os-floating-ips extension.","commit_id":"e304ffacece84b2cdc2bd0cb1cf304144d9e06bb"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"e4e1e9f2c0564cd26ab7457969231af60d39860c","unresolved":false,"context_lines":[{"line_number":809,"context_line":"        req.method \u003d \"POST\""},{"line_number":810,"context_line":"        req.body \u003d jsonutils.dumps(body)"},{"line_number":811,"context_line":"        req.headers[\"content-type\"] \u003d \"application/json\""},{"line_number":812,"context_line":"        resp \u003d self._get_fake_response(req, \u0027servers\u0027)"},{"line_number":813,"context_line":"        res_dict \u003d jsonutils.loads(resp.body)"},{"line_number":814,"context_line":"        self.assertEqual(resp.status_int, 400)"},{"line_number":815,"context_line":"        self.assertEqual(res_dict[\u0027badRequest\u0027][\u0027message\u0027],"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa98f980_f323a602","line":812,"in_reply_to":"fa98f980_91527633","updated":"2014-09-12 01:45:50.000000000","message":"hi Alex, thanks for your comments.","commit_id":"e304ffacece84b2cdc2bd0cb1cf304144d9e06bb"},{"author":{"_account_id":8412,"name":"Mike Durnosvistov","email":"glacierr.dev@gmail.com","username":"mdurnosvistov"},"change_message_id":"65fb34d40e648411c4bad00ae9a4d8a38b14cc0e","unresolved":false,"context_lines":[{"line_number":827,"context_line":"        return fakes.HTTPRequest.blank(\u0027/v2/fake/servers/test_inst/action\u0027)"},{"line_number":828,"context_line":""},{"line_number":829,"context_line":"    def _get_fake_app(self):"},{"line_number":830,"context_line":"        return fakes.wsgi_app(init_only\u003d(\u0027servers\u0027,\u0027os-floating-ips\u0027))"},{"line_number":831,"context_line":""},{"line_number":832,"context_line":"    def setUp(self):"},{"line_number":833,"context_line":"        super(ExtendedFloatingIpTestV2, self).setUp()"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa98f980_04f0f4fc","line":830,"range":{"start_line":830,"start_character":50,"end_line":830,"end_character":52},"updated":"2014-09-11 15:07:27.000000000","message":"E231 missing whitespace after \u0027,\u0027","commit_id":"337b994aac834c22f133d1e5458ba7758a4f5f3c"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"411a738875c1a250b36445d78695c342cc0be62c","unresolved":false,"context_lines":[{"line_number":827,"context_line":"        return fakes.HTTPRequest.blank(\u0027/v2/fake/servers/test_inst/action\u0027)"},{"line_number":828,"context_line":""},{"line_number":829,"context_line":"    def _get_fake_app(self):"},{"line_number":830,"context_line":"        return fakes.wsgi_app(init_only\u003d(\u0027servers\u0027,\u0027os-floating-ips\u0027))"},{"line_number":831,"context_line":""},{"line_number":832,"context_line":"    def setUp(self):"},{"line_number":833,"context_line":"        super(ExtendedFloatingIpTestV2, self).setUp()"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa98f980_93097a86","line":830,"in_reply_to":"fa98f980_04f0f4fc","updated":"2014-09-12 01:45:03.000000000","message":"hi Mike, thx good catch. I forget to run pep8 check","commit_id":"337b994aac834c22f133d1e5458ba7758a4f5f3c"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"e176150e0a705f1929f0471cc375c3abefc487ef","unresolved":false,"context_lines":[{"line_number":153,"context_line":"    floating_ip \u003d \"10.10.10.10\""},{"line_number":154,"context_line":"    floating_ip_2 \u003d \"10.10.10.11\""},{"line_number":155,"context_line":"    floating_ips \u003d fips_v21"},{"line_number":156,"context_line":"    url \u003d \u0027/v3/servers/test_inst/action\u0027"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"    def _create_floating_ips(self, floating_ips\u003dNone):"},{"line_number":159,"context_line":"        \"\"\"Create a floating ip object.\"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"baa201ad_8878d62c","line":156,"updated":"2014-10-11 15:05:22.000000000","message":"if specifying wsgi_app_v21 at the following, we don\u0027t need to switch the URL.","commit_id":"7bfaa564fd91d40daa323edc6b4debf44943ab62"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"16fb136c84669725cd85fe4f8593046a7c8b52be","unresolved":false,"context_lines":[{"line_number":153,"context_line":"    floating_ip \u003d \"10.10.10.10\""},{"line_number":154,"context_line":"    floating_ip_2 \u003d \"10.10.10.11\""},{"line_number":155,"context_line":"    floating_ips \u003d fips_v21"},{"line_number":156,"context_line":"    url \u003d \u0027/v3/servers/test_inst/action\u0027"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"    def _create_floating_ips(self, floating_ips\u003dNone):"},{"line_number":159,"context_line":"        \"\"\"Create a floating ip object.\"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"baa201ad_31fe6aaf","line":156,"in_reply_to":"baa201ad_8878d62c","updated":"2014-10-13 02:12:16.000000000","message":"Done","commit_id":"7bfaa564fd91d40daa323edc6b4debf44943ab62"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"e176150e0a705f1929f0471cc375c3abefc487ef","unresolved":false,"context_lines":[{"line_number":175,"context_line":"        db.floating_ip_destroy(self.context, self.floating_ip)"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    def _get_fake_fip_request(self, act\u003d\u0027\u0027):"},{"line_number":178,"context_line":"        return fakes.HTTPRequestV3.blank(\u0027/v3/os-floating-ips/%s\u0027 % act)"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    def _get_fake_server_request(self):"},{"line_number":181,"context_line":"        return fakes.HTTPRequestV3.blank(\u0027/v3/servers/test_inst/action\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"baa201ad_4887ce0f","line":178,"updated":"2014-10-11 15:05:22.000000000","message":"if specifying wsgi_app_v21 at the following, we don\u0027t need to switch the URL. so we can keep \u0027v2/fake\u0027.","commit_id":"7bfaa564fd91d40daa323edc6b4debf44943ab62"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"16fb136c84669725cd85fe4f8593046a7c8b52be","unresolved":false,"context_lines":[{"line_number":175,"context_line":"        db.floating_ip_destroy(self.context, self.floating_ip)"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    def _get_fake_fip_request(self, act\u003d\u0027\u0027):"},{"line_number":178,"context_line":"        return fakes.HTTPRequestV3.blank(\u0027/v3/os-floating-ips/%s\u0027 % act)"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    def _get_fake_server_request(self):"},{"line_number":181,"context_line":"        return fakes.HTTPRequestV3.blank(\u0027/v3/servers/test_inst/action\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"baa201ad_5105aec0","line":178,"in_reply_to":"baa201ad_4887ce0f","updated":"2014-10-13 02:12:16.000000000","message":"Done","commit_id":"7bfaa564fd91d40daa323edc6b4debf44943ab62"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"e176150e0a705f1929f0471cc375c3abefc487ef","unresolved":false,"context_lines":[{"line_number":178,"context_line":"        return fakes.HTTPRequestV3.blank(\u0027/v3/os-floating-ips/%s\u0027 % act)"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    def _get_fake_server_request(self):"},{"line_number":181,"context_line":"        return fakes.HTTPRequestV3.blank(\u0027/v3/servers/test_inst/action\u0027)"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    def _get_fake_app(self):"},{"line_number":184,"context_line":"        return fakes.wsgi_app_v3(init_only\u003d(\u0027servers\u0027, \u0027os-floating-ips\u0027))"}],"source_content_type":"text/x-python","patch_set":7,"id":"baa201ad_687bb229","line":181,"updated":"2014-10-11 15:05:22.000000000","message":"ditto","commit_id":"7bfaa564fd91d40daa323edc6b4debf44943ab62"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"16fb136c84669725cd85fe4f8593046a7c8b52be","unresolved":false,"context_lines":[{"line_number":178,"context_line":"        return fakes.HTTPRequestV3.blank(\u0027/v3/os-floating-ips/%s\u0027 % act)"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    def _get_fake_server_request(self):"},{"line_number":181,"context_line":"        return fakes.HTTPRequestV3.blank(\u0027/v3/servers/test_inst/action\u0027)"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    def _get_fake_app(self):"},{"line_number":184,"context_line":"        return fakes.wsgi_app_v3(init_only\u003d(\u0027servers\u0027, \u0027os-floating-ips\u0027))"}],"source_content_type":"text/x-python","patch_set":7,"id":"baa201ad_7108f2d9","line":181,"in_reply_to":"baa201ad_687bb229","updated":"2014-10-13 02:12:16.000000000","message":"Done","commit_id":"7bfaa564fd91d40daa323edc6b4debf44943ab62"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"e176150e0a705f1929f0471cc375c3abefc487ef","unresolved":false,"context_lines":[{"line_number":181,"context_line":"        return fakes.HTTPRequestV3.blank(\u0027/v3/servers/test_inst/action\u0027)"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    def _get_fake_app(self):"},{"line_number":184,"context_line":"        return fakes.wsgi_app_v3(init_only\u003d(\u0027servers\u0027, \u0027os-floating-ips\u0027))"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    def setUp(self):"},{"line_number":187,"context_line":"        super(FloatingIpTestV21, self).setUp()"}],"source_content_type":"text/x-python","patch_set":7,"id":"baa201ad_28828a00","line":184,"updated":"2014-10-11 15:05:22.000000000","message":"here should be wsgi_app_v21 instead of wsgi_app_v3.","commit_id":"7bfaa564fd91d40daa323edc6b4debf44943ab62"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"16fb136c84669725cd85fe4f8593046a7c8b52be","unresolved":false,"context_lines":[{"line_number":181,"context_line":"        return fakes.HTTPRequestV3.blank(\u0027/v3/servers/test_inst/action\u0027)"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    def _get_fake_app(self):"},{"line_number":184,"context_line":"        return fakes.wsgi_app_v3(init_only\u003d(\u0027servers\u0027, \u0027os-floating-ips\u0027))"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    def setUp(self):"},{"line_number":187,"context_line":"        super(FloatingIpTestV21, self).setUp()"}],"source_content_type":"text/x-python","patch_set":7,"id":"baa201ad_910f16e1","line":184,"in_reply_to":"baa201ad_28828a00","updated":"2014-10-13 02:12:16.000000000","message":"Done","commit_id":"7bfaa564fd91d40daa323edc6b4debf44943ab62"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"7acc39377e8383185126d6af1014192a9fc2afc0","unresolved":false,"context_lines":[{"line_number":748,"context_line":"        db.floating_ip_destroy(self.context, self.floating_ip)"},{"line_number":749,"context_line":""},{"line_number":750,"context_line":"    def _get_fake_request(self):"},{"line_number":751,"context_line":"        return fakes.HTTPRequest.blank(\u0027/v3/servers/test_inst/action\u0027)"},{"line_number":752,"context_line":""},{"line_number":753,"context_line":"    def _get_fake_app(self):"},{"line_number":754,"context_line":"        return fakes.wsgi_app_v3(init_only\u003d(\u0027servers\u0027, \u0027os-floating-ips\u0027))"}],"source_content_type":"text/x-python","patch_set":10,"id":"baa201ad_c501d56b","line":751,"updated":"2014-10-13 10:50:21.000000000","message":"Here should be:\n\n return fakes.HTTPRequest.blank(\u0027/v2/fake/servers/test_inst/action\u0027)","commit_id":"48f9066037f7ba415b4a462f4e509c56fc11fae4"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"4ddb6666c6b2f5b08bdfbd5306c78d73babfbef1","unresolved":false,"context_lines":[{"line_number":748,"context_line":"        db.floating_ip_destroy(self.context, self.floating_ip)"},{"line_number":749,"context_line":""},{"line_number":750,"context_line":"    def _get_fake_request(self):"},{"line_number":751,"context_line":"        return fakes.HTTPRequest.blank(\u0027/v3/servers/test_inst/action\u0027)"},{"line_number":752,"context_line":""},{"line_number":753,"context_line":"    def _get_fake_app(self):"},{"line_number":754,"context_line":"        return fakes.wsgi_app_v3(init_only\u003d(\u0027servers\u0027, \u0027os-floating-ips\u0027))"}],"source_content_type":"text/x-python","patch_set":10,"id":"baa201ad_78f995c7","line":751,"in_reply_to":"baa201ad_c501d56b","updated":"2014-10-14 02:51:16.000000000","message":"Done","commit_id":"48f9066037f7ba415b4a462f4e509c56fc11fae4"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"7acc39377e8383185126d6af1014192a9fc2afc0","unresolved":false,"context_lines":[{"line_number":751,"context_line":"        return fakes.HTTPRequest.blank(\u0027/v3/servers/test_inst/action\u0027)"},{"line_number":752,"context_line":""},{"line_number":753,"context_line":"    def _get_fake_app(self):"},{"line_number":754,"context_line":"        return fakes.wsgi_app_v3(init_only\u003d(\u0027servers\u0027, \u0027os-floating-ips\u0027))"},{"line_number":755,"context_line":""},{"line_number":756,"context_line":"    def setUp(self):"},{"line_number":757,"context_line":"        super(ExtendedFloatingIpTestV21, self).setUp()"}],"source_content_type":"text/x-python","patch_set":10,"id":"baa201ad_05f3dd9f","line":754,"updated":"2014-10-13 10:50:21.000000000","message":"s/wsgi_app_v3/wsgi_app_v21/","commit_id":"48f9066037f7ba415b4a462f4e509c56fc11fae4"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"4ddb6666c6b2f5b08bdfbd5306c78d73babfbef1","unresolved":false,"context_lines":[{"line_number":751,"context_line":"        return fakes.HTTPRequest.blank(\u0027/v3/servers/test_inst/action\u0027)"},{"line_number":752,"context_line":""},{"line_number":753,"context_line":"    def _get_fake_app(self):"},{"line_number":754,"context_line":"        return fakes.wsgi_app_v3(init_only\u003d(\u0027servers\u0027, \u0027os-floating-ips\u0027))"},{"line_number":755,"context_line":""},{"line_number":756,"context_line":"    def setUp(self):"},{"line_number":757,"context_line":"        super(ExtendedFloatingIpTestV21, self).setUp()"}],"source_content_type":"text/x-python","patch_set":10,"id":"baa201ad_98f479d0","line":754,"in_reply_to":"baa201ad_05f3dd9f","updated":"2014-10-14 02:51:16.000000000","message":"Done","commit_id":"48f9066037f7ba415b4a462f4e509c56fc11fae4"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"7acc39377e8383185126d6af1014192a9fc2afc0","unresolved":false,"context_lines":[{"line_number":831,"context_line":"    floating_ips \u003d fips_v2"},{"line_number":832,"context_line":""},{"line_number":833,"context_line":"    def _get_fake_request(self):"},{"line_number":834,"context_line":"        return fakes.HTTPRequest.blank(\u0027/v2/fake/servers/test_inst/action\u0027)"},{"line_number":835,"context_line":""},{"line_number":836,"context_line":"    def _get_fake_app(self):"},{"line_number":837,"context_line":"        return fakes.wsgi_app(init_only\u003d(\u0027servers\u0027, \u0027os-floating-ips\u0027))"}],"source_content_type":"text/x-python","patch_set":10,"id":"baa201ad_a50cd195","line":834,"updated":"2014-10-13 10:50:21.000000000","message":"This method will be unnecessary if the above comments are applied.","commit_id":"48f9066037f7ba415b4a462f4e509c56fc11fae4"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"4ddb6666c6b2f5b08bdfbd5306c78d73babfbef1","unresolved":false,"context_lines":[{"line_number":831,"context_line":"    floating_ips \u003d fips_v2"},{"line_number":832,"context_line":""},{"line_number":833,"context_line":"    def _get_fake_request(self):"},{"line_number":834,"context_line":"        return fakes.HTTPRequest.blank(\u0027/v2/fake/servers/test_inst/action\u0027)"},{"line_number":835,"context_line":""},{"line_number":836,"context_line":"    def _get_fake_app(self):"},{"line_number":837,"context_line":"        return fakes.wsgi_app(init_only\u003d(\u0027servers\u0027, \u0027os-floating-ips\u0027))"}],"source_content_type":"text/x-python","patch_set":10,"id":"baa201ad_b803fdb6","line":834,"in_reply_to":"baa201ad_a50cd195","updated":"2014-10-14 02:51:16.000000000","message":"Done","commit_id":"48f9066037f7ba415b4a462f4e509c56fc11fae4"}],"nova/tests/fake_policy.py":[{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"e910d32e8f776186da9fc9d61ae5a32d65533707","unresolved":false,"context_lines":[{"line_number":213,"context_line":"    \"compute_extension:floating_ip_pools\": \"\","},{"line_number":214,"context_line":"    \"compute_extension:floating_ips\": \"\","},{"line_number":215,"context_line":"    \"compute_extension:v3:os-floating-ips\": \"\","},{"line_number":216,"context_line":"    \"compute_extension:v3:os-floating-ips:discoverable\": \"\","},{"line_number":217,"context_line":"    \"compute_extension:floating_ips_bulk\": \"\","},{"line_number":218,"context_line":"    \"compute_extension:fping\": \"\","},{"line_number":219,"context_line":"    \"compute_extension:fping:all_tenants\": \"is_admin:True\","}],"source_content_type":"text/x-python","patch_set":3,"id":"da9df570_b0869f63","line":216,"updated":"2014-09-25 04:27:14.000000000","message":"don\u0027t need discoverable in fake policy","commit_id":"e545af5b2f5fa67570c83ca9b4acfc9370fb2db1"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"f4bd7984c7c64a54d403a80c2637037677ea7ec5","unresolved":false,"context_lines":[{"line_number":213,"context_line":"    \"compute_extension:floating_ip_pools\": \"\","},{"line_number":214,"context_line":"    \"compute_extension:floating_ips\": \"\","},{"line_number":215,"context_line":"    \"compute_extension:v3:os-floating-ips\": \"\","},{"line_number":216,"context_line":"    \"compute_extension:v3:os-floating-ips:discoverable\": \"\","},{"line_number":217,"context_line":"    \"compute_extension:floating_ips_bulk\": \"\","},{"line_number":218,"context_line":"    \"compute_extension:fping\": \"\","},{"line_number":219,"context_line":"    \"compute_extension:fping:all_tenants\": \"is_admin:True\","}],"source_content_type":"text/x-python","patch_set":3,"id":"da9df570_ab51ce0f","line":216,"in_reply_to":"da9df570_b0869f63","updated":"2014-09-25 05:55:37.000000000","message":"Done","commit_id":"e545af5b2f5fa67570c83ca9b4acfc9370fb2db1"}],"nova/tests/integrated/v3/test_floating_ips.py":[{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"e910d32e8f776186da9fc9d61ae5a32d65533707","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    def setUp(self):"},{"line_number":28,"context_line":"        super(FloatingIpsTest, self).setUp()"},{"line_number":29,"context_line":"        pool \u003d CONF.default_floating_pool"},{"line_number":30,"context_line":"        interface \u003d CONF.public_interface"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"        self.ip_pool \u003d ["}],"source_content_type":"text/x-python","patch_set":3,"id":"da9df570_708c3780","line":29,"updated":"2014-09-25 04:27:14.000000000","message":"Need to do import of CONF settings","commit_id":"e545af5b2f5fa67570c83ca9b4acfc9370fb2db1"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"f4bd7984c7c64a54d403a80c2637037677ea7ec5","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    def setUp(self):"},{"line_number":28,"context_line":"        super(FloatingIpsTest, self).setUp()"},{"line_number":29,"context_line":"        pool \u003d CONF.default_floating_pool"},{"line_number":30,"context_line":"        interface \u003d CONF.public_interface"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"        self.ip_pool \u003d ["}],"source_content_type":"text/x-python","patch_set":3,"id":"da9df570_2b3ddebb","line":29,"in_reply_to":"da9df570_708c3780","updated":"2014-09-25 05:55:37.000000000","message":"Done","commit_id":"e545af5b2f5fa67570c83ca9b4acfc9370fb2db1"}]}
