)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"7364e664049b00f3b9df86ef0051340c305fac9d","unresolved":false,"context_lines":[{"line_number":9,"context_line":"When using the floating IP in Nova with Neutron, and"},{"line_number":10,"context_line":"a quota limit is exceeded in Neutron, the exception from"},{"line_number":11,"context_line":"the Neutron client results in Nova generating a 500 error."},{"line_number":12,"context_line":"This is unhelpful to to user, and not consistent with nova-networking"},{"line_number":13,"context_line":"Reutrn FloatingIPExceedLimit exception when quota exceed"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: Ieb90521cf231acae8b5a9920acf6c77f2e34ef67"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAATn%2F9AaM%3D","line":12,"updated":"2013-12-17 20:27:12.000000000","message":"s/to to/to the/","commit_id":"34f1ab0f1269509591e35ce798a58491dc3cdfd8"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"728dae8c03b7cd7c614e1f16df3170a8da240732","unresolved":false,"context_lines":[{"line_number":9,"context_line":"When using the floating IP in Nova with Neutron, and"},{"line_number":10,"context_line":"a quota limit is exceeded in Neutron, the exception from"},{"line_number":11,"context_line":"the Neutron client results in Nova generating a 500 error."},{"line_number":12,"context_line":"This is unhelpful to to user, and not consistent with nova-networking"},{"line_number":13,"context_line":"Reutrn FloatingIPExceedLimit exception when quota exceed"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: Ieb90521cf231acae8b5a9920acf6c77f2e34ef67"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAATn%2F8%2Bqk%3D","line":12,"in_reply_to":"AAAATn%2F9AaM%3D","updated":"2013-12-18 07:37:45.000000000","message":"Done","commit_id":"34f1ab0f1269509591e35ce798a58491dc3cdfd8"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"7364e664049b00f3b9df86ef0051340c305fac9d","unresolved":false,"context_lines":[{"line_number":10,"context_line":"a quota limit is exceeded in Neutron, the exception from"},{"line_number":11,"context_line":"the Neutron client results in Nova generating a 500 error."},{"line_number":12,"context_line":"This is unhelpful to to user, and not consistent with nova-networking"},{"line_number":13,"context_line":"Reutrn FloatingIPExceedLimit exception when quota exceed"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: Ieb90521cf231acae8b5a9920acf6c77f2e34ef67"},{"line_number":16,"context_line":"Closes-Bug: #1210598"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAATn%2F9Aag%3D","line":13,"updated":"2013-12-17 20:27:12.000000000","message":"typo s/Reutrn/Return/\n\ngrammar s/exceed/exceeded/","commit_id":"34f1ab0f1269509591e35ce798a58491dc3cdfd8"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"728dae8c03b7cd7c614e1f16df3170a8da240732","unresolved":false,"context_lines":[{"line_number":10,"context_line":"a quota limit is exceeded in Neutron, the exception from"},{"line_number":11,"context_line":"the Neutron client results in Nova generating a 500 error."},{"line_number":12,"context_line":"This is unhelpful to to user, and not consistent with nova-networking"},{"line_number":13,"context_line":"Reutrn FloatingIPExceedLimit exception when quota exceed"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: Ieb90521cf231acae8b5a9920acf6c77f2e34ef67"},{"line_number":16,"context_line":"Closes-Bug: #1210598"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAATn%2F8%2Be8%3D","line":13,"in_reply_to":"AAAATn%2F9Aag%3D","updated":"2013-12-18 07:37:45.000000000","message":"Done","commit_id":"34f1ab0f1269509591e35ce798a58491dc3cdfd8"},{"author":{"_account_id":1501,"name":"Phil Day","email":"philip.day@hp.com","username":"philip-day"},"change_message_id":"a617d1ca9fd57e198391c455a4fd8401f4a45e5b","unresolved":false,"context_lines":[{"line_number":13,"context_line":"Reutrn FloatingIPExceedLimit exception when quota exceed"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: Ieb90521cf231acae8b5a9920acf6c77f2e34ef67"},{"line_number":16,"context_line":"Closes-Bug: #1210598"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAATn%2F9AVE%3D","line":16,"updated":"2013-12-17 19:48:37.000000000","message":"The bug itself refers to both floating IP quotas and Security group quotas, so its not really true to say that this fix closes this bug","commit_id":"34f1ab0f1269509591e35ce798a58491dc3cdfd8"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"728dae8c03b7cd7c614e1f16df3170a8da240732","unresolved":false,"context_lines":[{"line_number":13,"context_line":"Reutrn FloatingIPExceedLimit exception when quota exceed"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: Ieb90521cf231acae8b5a9920acf6c77f2e34ef67"},{"line_number":16,"context_line":"Closes-Bug: #1210598"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAATn%2F8%2Be0%3D","line":16,"in_reply_to":"AAAATn%2F9AVE%3D","updated":"2013-12-18 07:37:45.000000000","message":"see this function\nnova.tests.network.security_group.test_neutron_driver.TestNeutronDriver.test_create_security_group_exceed_quota\n\nI think it\u0027s already supported","commit_id":"34f1ab0f1269509591e35ce798a58491dc3cdfd8"}],"nova/api/openstack/compute/contrib/floating_ips.py":[{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"b75a6eabc1939aab089c2f3c9d3eb7d1a471eca2","unresolved":false,"context_lines":[{"line_number":168,"context_line":"                msg \u003d _(\"floating ips over quota limit in pool %s.\") % pool"},{"line_number":169,"context_line":"            else:"},{"line_number":170,"context_line":"                msg \u003d _(\"floating ips over quota limit\")"},{"line_number":171,"context_line":"            raise webob.exc.HTTPNotFound(explanation\u003dmsg)"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"        return _translate_floating_ip_view(ip)"},{"line_number":174,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"1ae5cdf2_505aa32a","line":171,"updated":"2014-06-11 19:07:58.000000000","message":"I don\u0027t think we want to be raising a 404 here if we\u0027re over quota? I see the code did this before too though.","commit_id":"855141ea59aa4537f1e746f93fc7f775cc50d8db"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"32914739be4c793b6ba7d6968c72dcd5fe307918","unresolved":false,"context_lines":[{"line_number":168,"context_line":"                msg \u003d _(\"floating ips over quota limit in pool %s.\") % pool"},{"line_number":169,"context_line":"            else:"},{"line_number":170,"context_line":"                msg \u003d _(\"floating ips over quota limit\")"},{"line_number":171,"context_line":"            raise webob.exc.HTTPNotFound(explanation\u003dmsg)"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"        return _translate_floating_ip_view(ip)"},{"line_number":174,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"1ae5cdf2_896cbcd1","line":171,"in_reply_to":"1ae5cdf2_420babd5","updated":"2014-06-13 19:55:27.000000000","message":"Ask Ken\u0027ichi or Chris Yeoh, I\u0027ve also seen 409 used for over quota.","commit_id":"855141ea59aa4537f1e746f93fc7f775cc50d8db"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"168276a43364046cc3930b1f74c3a29fa9c4237d","unresolved":false,"context_lines":[{"line_number":168,"context_line":"                msg \u003d _(\"floating ips over quota limit in pool %s.\") % pool"},{"line_number":169,"context_line":"            else:"},{"line_number":170,"context_line":"                msg \u003d _(\"floating ips over quota limit\")"},{"line_number":171,"context_line":"            raise webob.exc.HTTPNotFound(explanation\u003dmsg)"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"        return _translate_floating_ip_view(ip)"},{"line_number":174,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"1ae5cdf2_420babd5","line":171,"in_reply_to":"1ae5cdf2_505aa32a","updated":"2014-06-12 06:41:09.000000000","message":"maybe a HTTPBadRequest will be better ?\n\nI see a over quota handling in os_tenant_networks.py\nit reports a 400 error when over quota.. thanks","commit_id":"855141ea59aa4537f1e746f93fc7f775cc50d8db"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"70ab1fbda81f8f5b53893627624173015fa3d4a2","unresolved":false,"context_lines":[{"line_number":175,"context_line":"                msg \u003d _(\"No more floating ips available.\")"},{"line_number":176,"context_line":"            raise webob.exc.HTTPNotFound(explanation\u003dmsg)"},{"line_number":177,"context_line":"        except exception.FloatingIpLimitExceeded:"},{"line_number":178,"context_line":"            if pool:"},{"line_number":179,"context_line":"                msg \u003d _(\"floating ips over quota limit in pool %s.\") % pool"},{"line_number":180,"context_line":"            else:"},{"line_number":181,"context_line":"                msg \u003d _(\"floating ips over quota limit\")"}],"source_content_type":"text/x-python","patch_set":15,"id":"1ae5cdf2_24214ab4","line":178,"updated":"2014-06-27 01:57:03.000000000","message":"Besides the messages and the error returned, this is basically the same as NoMoreFloatingIps above, why don\u0027t we just do them together, i.e. lump FloatingIpLimitExceeded with NoMoreFloatingIps?  Seems like 404 or 409 is more appropriate here than 400 anyway based on the descriptions here:\n\nhttp://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html","commit_id":"53a137d59f0748cdce70ea97e7cf483b8b9ff35f"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"95b8f50ab8328ff5f5a6d195e5592c4869a8f6ad","unresolved":false,"context_lines":[{"line_number":161,"context_line":"            if pool:"},{"line_number":162,"context_line":"                msg \u003d _(\"No more floating ips in pool %s.\") % pool"},{"line_number":163,"context_line":"            else:"},{"line_number":164,"context_line":"                msg \u003d _(\"No more floating ips available\")"},{"line_number":165,"context_line":"            raise webob.exc.HTTPNotFound(explanation\u003dmsg)"},{"line_number":166,"context_line":"        except exception.FloatingIpLimitExceeded:"},{"line_number":167,"context_line":"            if pool:"}],"source_content_type":"text/x-python","patch_set":17,"id":"baada198_760bf7d5","line":164,"updated":"2014-07-14 06:40:23.000000000","message":"why did you remove the .?","commit_id":"9d4c781f48d0cde2ea0efce7e3235341209c8367"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"825bb671502fd2a55cd52a50a4acc4c63611d8e3","unresolved":false,"context_lines":[{"line_number":161,"context_line":"            if pool:"},{"line_number":162,"context_line":"                msg \u003d _(\"No more floating ips in pool %s.\") % pool"},{"line_number":163,"context_line":"            else:"},{"line_number":164,"context_line":"                msg \u003d _(\"No more floating ips available\")"},{"line_number":165,"context_line":"            raise webob.exc.HTTPNotFound(explanation\u003dmsg)"},{"line_number":166,"context_line":"        except exception.FloatingIpLimitExceeded:"},{"line_number":167,"context_line":"            if pool:"}],"source_content_type":"text/x-python","patch_set":17,"id":"baada198_31ec29bb","line":164,"in_reply_to":"baada198_760bf7d5","updated":"2014-07-14 07:39:33.000000000","message":"wrong operation, will upload another patch, thanks","commit_id":"9d4c781f48d0cde2ea0efce7e3235341209c8367"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"3c5cf09eee1a45f7a132ecbcb67a3bdbcba2af36","unresolved":false,"context_lines":[{"line_number":168,"context_line":"                msg \u003d _(\"IP allocation over quota in pool %s.\") % pool"},{"line_number":169,"context_line":"            else:"},{"line_number":170,"context_line":"                msg \u003d _(\"IP allocation over quota.\")"},{"line_number":171,"context_line":"            raise webob.exc.HTTPConflict(explanation\u003dmsg)"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"        return _translate_floating_ip_view(ip)"},{"line_number":174,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"baada198_61986875","line":171,"updated":"2014-07-15 05:51:49.000000000","message":"since http://lists.openstack.org/pipermail/openstack-dev/2014-June/036557.html , 403(webob.exc.HTTPForbidden) is better for this case instead of webob.exc.HTTPConflict.","commit_id":"19d89b26186e5afccfb36886049e5f8def010589"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"157b8f357361bc4706a9be3d37d263d5fd1efce8","unresolved":false,"context_lines":[{"line_number":168,"context_line":"                msg \u003d _(\"IP allocation over quota in pool %s.\") % pool"},{"line_number":169,"context_line":"            else:"},{"line_number":170,"context_line":"                msg \u003d _(\"IP allocation over quota.\")"},{"line_number":171,"context_line":"            raise webob.exc.HTTPConflict(explanation\u003dmsg)"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"        return _translate_floating_ip_view(ip)"},{"line_number":174,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"baada198_c9787ac6","line":171,"in_reply_to":"baada198_61986875","updated":"2014-07-15 08:05:08.000000000","message":"thanks, Done","commit_id":"19d89b26186e5afccfb36886049e5f8def010589"}],"nova/network/neutronv2/api.py":[{"author":{"_account_id":7040,"name":"GuoHui LIu","email":"liuguohui@gmail.com","username":"guohliu"},"change_message_id":"fc3e3e5bcdbc30e83c9136f41a30943afb5deeb7","unresolved":false,"context_lines":[{"line_number":817,"context_line":"        try:"},{"line_number":818,"context_line":"            fip \u003d client.create_floatingip(param)"},{"line_number":819,"context_line":"        except neutron_client_exc.NeutronClientException as e:"},{"line_number":820,"context_line":"            LOG.exception(_(\u0027Neutron error creating floating on pool %s\u0027) %"},{"line_number":821,"context_line":"                          pool)"},{"line_number":822,"context_line":"            # NOTE(mriedem): OverQuota in neutron is a 409"},{"line_number":823,"context_line":"            if e.status_code \u003d\u003d 409:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F8%2Bgw%3D","line":820,"updated":"2013-12-18 07:29:37.000000000","message":"We need more specific message, so here should be Neutron error occured during creating floating ip on pool","commit_id":"810c05a2fddecb2892d008524d45c6743981bceb"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"c5ab1dbb5bbe7d7d8442588bd0cc38af77f171fe","unresolved":false,"context_lines":[{"line_number":817,"context_line":"        try:"},{"line_number":818,"context_line":"            fip \u003d client.create_floatingip(param)"},{"line_number":819,"context_line":"        except neutron_client_exc.NeutronClientException as e:"},{"line_number":820,"context_line":"            LOG.exception(_(\u0027Neutron error creating floating on pool %s\u0027) %"},{"line_number":821,"context_line":"                          pool)"},{"line_number":822,"context_line":"            # NOTE(mriedem): OverQuota in neutron is a 409"},{"line_number":823,"context_line":"            if e.status_code \u003d\u003d 409:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F8%2Bek%3D","line":820,"in_reply_to":"AAAATn%2F8%2Bgw%3D","updated":"2013-12-18 07:42:19.000000000","message":"Done","commit_id":"810c05a2fddecb2892d008524d45c6743981bceb"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"a36f026717fc81c2423bc2612caea48156008dbe","unresolved":false,"context_lines":[{"line_number":818,"context_line":"            fip \u003d client.create_floatingip(param)"},{"line_number":819,"context_line":"        except neutron_client_exc.NeutronClientException as e:"},{"line_number":820,"context_line":"            LOG.exception(_(\u0027Neutron error occured during creating floating\u0027"},{"line_number":821,"context_line":"                          \u0027ip on pool %s\u0027) % pool)"},{"line_number":822,"context_line":"            # NOTE(mriedem): OverQuota in neutron is a 409"},{"line_number":823,"context_line":"            if e.status_code \u003d\u003d 409:"},{"line_number":824,"context_line":"                raise exception.FloatingIpLimitExceeded()"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2FprQ%3D","line":821,"updated":"2014-01-10 03:17:48.000000000","message":"we should use LOG.exception(_(\"...\"), vars), not \u0027%\u0027","commit_id":"b1812256923602724da0de0b9bf7bcbe14d012d9"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"9cea5e8e32155218505474e2e69d33de12ccecf2","unresolved":false,"context_lines":[{"line_number":818,"context_line":"            fip \u003d client.create_floatingip(param)"},{"line_number":819,"context_line":"        except neutron_client_exc.NeutronClientException as e:"},{"line_number":820,"context_line":"            LOG.exception(_(\u0027Neutron error occured during creating floating\u0027"},{"line_number":821,"context_line":"                          \u0027ip on pool %s\u0027) % pool)"},{"line_number":822,"context_line":"            # NOTE(mriedem): OverQuota in neutron is a 409"},{"line_number":823,"context_line":"            if e.status_code \u003d\u003d 409:"},{"line_number":824,"context_line":"                raise exception.FloatingIpLimitExceeded()"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2FpUc%3D","line":821,"in_reply_to":"AAAAUH%2F%2FprQ%3D","updated":"2014-01-10 05:56:17.000000000","message":"Done","commit_id":"b1812256923602724da0de0b9bf7bcbe14d012d9"},{"author":{"_account_id":9645,"name":"lizheming","email":"lizheming.li@huawei.com","username":"lizheming"},"change_message_id":"1e6298fe6f9f04f8a99e18ad84ac0f130df9c6c2","unresolved":false,"context_lines":[{"line_number":818,"context_line":"            fip \u003d client.create_floatingip(param)"},{"line_number":819,"context_line":"        except neutron_client_exc.NeutronClientException as e:"},{"line_number":820,"context_line":"            LOG.exception(_(\u0027Neutron error occured during creating floating\u0027"},{"line_number":821,"context_line":"                          \u0027ip on pool %s\u0027) % pool)"},{"line_number":822,"context_line":"            # NOTE(mriedem): OverQuota in neutron is a 409"},{"line_number":823,"context_line":"            if e.status_code \u003d\u003d 409:"},{"line_number":824,"context_line":"                raise exception.FloatingIpLimitExceeded()"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2Fpps%3D","line":821,"in_reply_to":"AAAAUH%2F%2FprQ%3D","updated":"2014-01-10 03:31:38.000000000","message":"i aggree with Alex Xu,I suggest: \r\nLOG.exception(_(\"...%s\"), unicode(vars))","commit_id":"b1812256923602724da0de0b9bf7bcbe14d012d9"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"a36f026717fc81c2423bc2612caea48156008dbe","unresolved":false,"context_lines":[{"line_number":820,"context_line":"            LOG.exception(_(\u0027Neutron error occured during creating floating\u0027"},{"line_number":821,"context_line":"                          \u0027ip on pool %s\u0027) % pool)"},{"line_number":822,"context_line":"            # NOTE(mriedem): OverQuota in neutron is a 409"},{"line_number":823,"context_line":"            if e.status_code \u003d\u003d 409:"},{"line_number":824,"context_line":"                raise exception.FloatingIpLimitExceeded()"},{"line_number":825,"context_line":"            raise"},{"line_number":826,"context_line":"        return fip[\u0027floatingip\u0027][\u0027floating_ip_address\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2FprY%3D","line":823,"updated":"2014-01-10 03:17:48.000000000","message":"it isn\u0027t not all the 409 means OverQuota, looks like when no more floatingip for allocated is also return 409\nhttps://github.com/openstack/neutron/blob/master/neutron/db/db_base_plugin_v2.py#L482\n\nBut looks through the code, we use status_code to decide what happened also. so not sure should we make it better?","commit_id":"b1812256923602724da0de0b9bf7bcbe14d012d9"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"9cea5e8e32155218505474e2e69d33de12ccecf2","unresolved":false,"context_lines":[{"line_number":820,"context_line":"            LOG.exception(_(\u0027Neutron error occured during creating floating\u0027"},{"line_number":821,"context_line":"                          \u0027ip on pool %s\u0027) % pool)"},{"line_number":822,"context_line":"            # NOTE(mriedem): OverQuota in neutron is a 409"},{"line_number":823,"context_line":"            if e.status_code \u003d\u003d 409:"},{"line_number":824,"context_line":"                raise exception.FloatingIpLimitExceeded()"},{"line_number":825,"context_line":"            raise"},{"line_number":826,"context_line":"        return fip[\u0027floatingip\u0027][\u0027floating_ip_address\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2FpUM%3D","line":823,"in_reply_to":"AAAAUH%2F%2FprY%3D","updated":"2014-01-10 05:56:17.000000000","message":"This is a good suggestion, I refer to the same code in same file \ndef _create_port\nand they also use same logic to me ,they should have same problem \n\nsince neutronclient will use HTTPConflict (409 ) and nova side can\u0027t distinguish the exceptions with only the error code, I suggest to create or update the exception to mark either quota exceed or no more to allocate, is it acceptable?\n\nif it\u0027s ok, I might also open a defect to def _create_port function","commit_id":"b1812256923602724da0de0b9bf7bcbe14d012d9"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"5e6b44fcda40218865c3a9f6cf786a1eafb9ede9","unresolved":false,"context_lines":[{"line_number":820,"context_line":"            LOG.exception(_(\u0027Neutron error occured during creating floating\u0027"},{"line_number":821,"context_line":"                          \u0027ip on pool %s\u0027) % pool)"},{"line_number":822,"context_line":"            # NOTE(mriedem): OverQuota in neutron is a 409"},{"line_number":823,"context_line":"            if e.status_code \u003d\u003d 409:"},{"line_number":824,"context_line":"                raise exception.FloatingIpLimitExceeded()"},{"line_number":825,"context_line":"            raise"},{"line_number":826,"context_line":"        return fip[\u0027floatingip\u0027][\u0027floating_ip_address\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2Fo5k%3D","line":823,"in_reply_to":"AAAAUH%2F%2FprY%3D","updated":"2014-01-10 07:42:51.000000000","message":"add a check on the message might be a candidate though it\u0027s a little bit uglt\nI will upload the code, please help to take a look, thanks","commit_id":"b1812256923602724da0de0b9bf7bcbe14d012d9"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"e6284fd5843384f904615016a0a2af12f067e771","unresolved":false,"context_lines":[{"line_number":824,"context_line":"            # floating ip, so check the message is needed"},{"line_number":825,"context_line":"            if e.status_code \u003d\u003d 409:"},{"line_number":826,"context_line":"                if (e.message and \u0027Quota\u0027 in e.message):"},{"line_number":827,"context_line":"                    raise exception.FloatingIpLimitExceeded()"},{"line_number":828,"context_line":"            raise"},{"line_number":829,"context_line":"        return fip[\u0027floatingip\u0027][\u0027floating_ip_address\u0027]"},{"line_number":830,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2B9mA%3D","line":827,"updated":"2014-01-20 11:17:26.000000000","message":"FloatingIpLimitExceeded is not currently caught in the API and will cause a traceback if not caught. Although NoMoreFloatingIps is. We probably need to catch both with this change. Although I don\u0027t know why we have to very similar exceptions.","commit_id":"69ee5d62b2f3202374bc3c832445e5c96f333279"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"1010fa8b4a93d1538c64ae4d047541c4a56c98a0","unresolved":false,"context_lines":[{"line_number":824,"context_line":"            # floating ip, so check the message is needed"},{"line_number":825,"context_line":"            if e.status_code \u003d\u003d 409:"},{"line_number":826,"context_line":"                if (e.message and \u0027Quota\u0027 in e.message):"},{"line_number":827,"context_line":"                    raise exception.FloatingIpLimitExceeded()"},{"line_number":828,"context_line":"            raise"},{"line_number":829,"context_line":"        return fip[\u0027floatingip\u0027][\u0027floating_ip_address\u0027]"},{"line_number":830,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2B9EM%3D","line":827,"in_reply_to":"AAAAUH%2F%2B9mA%3D","updated":"2014-01-20 13:09:03.000000000","message":"yes, you are right, \nhttps://review.openstack.org/#/c/66808/ has the fix for fixed ip allocation\nI will update in this patch for NoMoreFloatingIps, thanks","commit_id":"69ee5d62b2f3202374bc3c832445e5c96f333279"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"e4e7b522eb0158db4c0b74aca6f96f57e735be28","unresolved":false,"context_lines":[{"line_number":818,"context_line":"            fip \u003d client.create_floatingip(param)"},{"line_number":819,"context_line":"        except neutron_client_exc.NeutronClientException as e:"},{"line_number":820,"context_line":"            LOG.exception(_(\u0027Neutron error occured during creating floating\u0027"},{"line_number":821,"context_line":"                          \u0027ip on pool %(pool)s\u0027), {\u0027pool\u0027: pool})"},{"line_number":822,"context_line":"            # NOTE: OverQuota in neutron is a 409"},{"line_number":823,"context_line":"            # but we can\u0027t distinguish quota exceed and no more"},{"line_number":824,"context_line":"            # floating ip, so check the message is needed"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAVn%2F%2FQJQ%3D","line":821,"updated":"2014-03-07 09:00:27.000000000","message":"it is not necessary to use a dict here.","commit_id":"52e32331b33f701cb2dc6a3b987cc4496b32c399"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"dc376fbf692abd6f52b3127d8c3c4373861523ab","unresolved":false,"context_lines":[{"line_number":818,"context_line":"            fip \u003d client.create_floatingip(param)"},{"line_number":819,"context_line":"        except neutron_client_exc.NeutronClientException as e:"},{"line_number":820,"context_line":"            LOG.exception(_(\u0027Neutron error occured during creating floating\u0027"},{"line_number":821,"context_line":"                          \u0027ip on pool %(pool)s\u0027), {\u0027pool\u0027: pool})"},{"line_number":822,"context_line":"            # NOTE: OverQuota in neutron is a 409"},{"line_number":823,"context_line":"            # but we can\u0027t distinguish quota exceed and no more"},{"line_number":824,"context_line":"            # floating ip, so check the message is needed"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAVn%2F%2FPZg%3D","line":821,"in_reply_to":"AAAAVn%2F%2FQJQ%3D","updated":"2014-03-07 10:57:54.000000000","message":"Done","commit_id":"52e32331b33f701cb2dc6a3b987cc4496b32c399"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"e4e7b522eb0158db4c0b74aca6f96f57e735be28","unresolved":false,"context_lines":[{"line_number":823,"context_line":"            # but we can\u0027t distinguish quota exceed and no more"},{"line_number":824,"context_line":"            # floating ip, so check the message is needed"},{"line_number":825,"context_line":"            if e.status_code \u003d\u003d 409:"},{"line_number":826,"context_line":"                if (e.message and \u0027Quota\u0027 in e.message):"},{"line_number":827,"context_line":"                    raise exception.FloatingIpLimitExceeded()"},{"line_number":828,"context_line":"                elif (e.message and \u0027No more\u0027 in e.message):"},{"line_number":829,"context_line":"                    raise exception.NoMoreFloatingIps()"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAVn%2F%2FQG0%3D","line":826,"updated":"2014-03-07 09:00:27.000000000","message":"I\u0027m not for this kind of solution, you cannot correctly fix the problem now. an other solution could be to raise an NovaException with a message that explain the problem.","commit_id":"52e32331b33f701cb2dc6a3b987cc4496b32c399"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"dc376fbf692abd6f52b3127d8c3c4373861523ab","unresolved":false,"context_lines":[{"line_number":823,"context_line":"            # but we can\u0027t distinguish quota exceed and no more"},{"line_number":824,"context_line":"            # floating ip, so check the message is needed"},{"line_number":825,"context_line":"            if e.status_code \u003d\u003d 409:"},{"line_number":826,"context_line":"                if (e.message and \u0027Quota\u0027 in e.message):"},{"line_number":827,"context_line":"                    raise exception.FloatingIpLimitExceeded()"},{"line_number":828,"context_line":"                elif (e.message and \u0027No more\u0027 in e.message):"},{"line_number":829,"context_line":"                    raise exception.NoMoreFloatingIps()"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAVn%2F%2FPY4%3D","line":826,"in_reply_to":"AAAAVn%2F%2FQG0%3D","updated":"2014-03-07 10:57:54.000000000","message":"yes, I think this is the only solution now \n\nI guess you want us to give a message like \nEither floating exceeded quota or no more floating ip able to be allocated?","commit_id":"52e32331b33f701cb2dc6a3b987cc4496b32c399"},{"author":{"_account_id":9645,"name":"lizheming","email":"lizheming.li@huawei.com","username":"lizheming"},"change_message_id":"88549ac6e88482fafbec6da4ab7621f23f9efc31","unresolved":false,"context_lines":[{"line_number":818,"context_line":"            fip \u003d client.create_floatingip(param)"},{"line_number":819,"context_line":"        except neutron_client_exc.NeutronClientException as e:"},{"line_number":820,"context_line":"            LOG.exception(_(\u0027Neutron error occured during creating floating\u0027"},{"line_number":821,"context_line":"                          \u0027ip on pool %s\u0027) % pool)"},{"line_number":822,"context_line":"            # NOTE: OverQuota in neutron is a 409"},{"line_number":823,"context_line":"            # but we can\u0027t distinguish quota exceed and no more"},{"line_number":824,"context_line":"            # floating ip, so check the message is needed"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAVn%2F%2B72Q%3D","line":821,"updated":"2014-03-11 07:17:18.000000000","message":"LOG.exception(_(%s), value)","commit_id":"96ccf6b158b0183a851e84c0c79f20a7bd2db256"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"bcc57a0d75f28a22dd79035b201f888fe18737b8","unresolved":false,"context_lines":[{"line_number":818,"context_line":"            fip \u003d client.create_floatingip(param)"},{"line_number":819,"context_line":"        except neutron_client_exc.NeutronClientException as e:"},{"line_number":820,"context_line":"            LOG.exception(_(\u0027Neutron error occured during creating floating\u0027"},{"line_number":821,"context_line":"                          \u0027ip on pool %s\u0027) % pool)"},{"line_number":822,"context_line":"            # NOTE: OverQuota in neutron is a 409"},{"line_number":823,"context_line":"            # but we can\u0027t distinguish quota exceed and no more"},{"line_number":824,"context_line":"            # floating ip, so check the message is needed"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAVn%2F%2B7lE%3D","line":821,"in_reply_to":"AAAAVn%2F%2B72Q%3D","updated":"2014-03-11 07:50:20.000000000","message":"Done","commit_id":"96ccf6b158b0183a851e84c0c79f20a7bd2db256"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"7a90047b65118d44097dc32222a4e04d34e96752","unresolved":false,"context_lines":[{"line_number":821,"context_line":"                          \u0027ip on pool %s\u0027) % pool)"},{"line_number":822,"context_line":"            # NOTE: OverQuota in neutron is a 409"},{"line_number":823,"context_line":"            # but we can\u0027t distinguish quota exceed and no more"},{"line_number":824,"context_line":"            # floating ip, so check the message is needed"},{"line_number":825,"context_line":"            if e.status_code \u003d\u003d 409:"},{"line_number":826,"context_line":"                if (e.message and \u0027Quota\u0027 in e.message):"},{"line_number":827,"context_line":"                    raise exception.FloatingIpLimitExceeded()"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAVn%2F%2B74I%3D","line":824,"updated":"2014-03-11 07:07:01.000000000","message":"So I think we can now distinguish between 409 OverQuota and no more floating ips.\nSee https://review.openstack.org/#/c/48606/\n\nWe have a bit of cross over on patches here. But I think if its a 409 and not a neutron_client_exc.IpAddressGenerationFailureClient or \t                neutron_client_exc.ExternalIpAddressExhaustedClient then we know that it must be an over quota issue?\n\nI\u0027ll fix my patch up (its been sitting in the queue since Havana) and I think it just needs a commit message update so you can probably rebase on top of it, and modify from there as needed. But the issue below will also need to be fixed in this patch.","commit_id":"96ccf6b158b0183a851e84c0c79f20a7bd2db256"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"bcc57a0d75f28a22dd79035b201f888fe18737b8","unresolved":false,"context_lines":[{"line_number":821,"context_line":"                          \u0027ip on pool %s\u0027) % pool)"},{"line_number":822,"context_line":"            # NOTE: OverQuota in neutron is a 409"},{"line_number":823,"context_line":"            # but we can\u0027t distinguish quota exceed and no more"},{"line_number":824,"context_line":"            # floating ip, so check the message is needed"},{"line_number":825,"context_line":"            if e.status_code \u003d\u003d 409:"},{"line_number":826,"context_line":"                if (e.message and \u0027Quota\u0027 in e.message):"},{"line_number":827,"context_line":"                    raise exception.FloatingIpLimitExceeded()"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAVn%2F%2B7lA%3D","line":824,"in_reply_to":"AAAAVn%2F%2B74I%3D","updated":"2014-03-11 07:50:20.000000000","message":"will work on it and rebase the code later, thanks","commit_id":"96ccf6b158b0183a851e84c0c79f20a7bd2db256"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"7a90047b65118d44097dc32222a4e04d34e96752","unresolved":false,"context_lines":[{"line_number":824,"context_line":"            # floating ip, so check the message is needed"},{"line_number":825,"context_line":"            if e.status_code \u003d\u003d 409:"},{"line_number":826,"context_line":"                if (e.message and \u0027Quota\u0027 in e.message):"},{"line_number":827,"context_line":"                    raise exception.FloatingIpLimitExceeded()"},{"line_number":828,"context_line":"                elif (e.message and \u0027No more\u0027 in e.message):"},{"line_number":829,"context_line":"                    raise exception.NoMoreFloatingIps()"},{"line_number":830,"context_line":"            raise"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAVn%2F%2B75Y%3D","line":827,"updated":"2014-03-11 07:07:01.000000000","message":"So AFAICT we don\u0027t currently handle FloatingIpLimitExceeded further up in the API stack where this can be called. I think we only handle NoMoreFloatingIps - at least in the floating_ips create method, but there may be others. So the API layer will need to be fixed too.","commit_id":"96ccf6b158b0183a851e84c0c79f20a7bd2db256"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"bcc57a0d75f28a22dd79035b201f888fe18737b8","unresolved":false,"context_lines":[{"line_number":824,"context_line":"            # floating ip, so check the message is needed"},{"line_number":825,"context_line":"            if e.status_code \u003d\u003d 409:"},{"line_number":826,"context_line":"                if (e.message and \u0027Quota\u0027 in e.message):"},{"line_number":827,"context_line":"                    raise exception.FloatingIpLimitExceeded()"},{"line_number":828,"context_line":"                elif (e.message and \u0027No more\u0027 in e.message):"},{"line_number":829,"context_line":"                    raise exception.NoMoreFloatingIps()"},{"line_number":830,"context_line":"            raise"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAVn%2F%2B7k8%3D","line":827,"in_reply_to":"AAAAVn%2F%2B75Y%3D","updated":"2014-03-11 07:50:20.000000000","message":"ok, got it","commit_id":"96ccf6b158b0183a851e84c0c79f20a7bd2db256"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"c100322498c433f6c89e80752308a7dbc93b5ee5","unresolved":false,"context_lines":[{"line_number":927,"context_line":"            if e.status_code \u003d\u003d 409:"},{"line_number":928,"context_line":"                raise exception.FloatingIpLimitExceeded(unicode(e))"},{"line_number":929,"context_line":"            raise"},{"line_number":930,"context_line":"            "},{"line_number":931,"context_line":"        return fip[\u0027floatingip\u0027][\u0027floating_ip_address\u0027]"},{"line_number":932,"context_line":""},{"line_number":933,"context_line":"    def _get_floating_ip_by_address(self, client, address):"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAWH%2F%2BE4k%3D","line":930,"updated":"2014-03-31 02:35:30.000000000","message":"pep8 checking failed for wrong indent.","commit_id":"b4f2711dd1cd5a3a4ad42237dd67a884240caa6f"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"90d0d9c8cbb56643a108fa4e7c7112d9f5126d40","unresolved":false,"context_lines":[{"line_number":927,"context_line":"            if e.status_code \u003d\u003d 409:"},{"line_number":928,"context_line":"                raise exception.FloatingIpLimitExceeded(unicode(e))"},{"line_number":929,"context_line":"            raise"},{"line_number":930,"context_line":"            "},{"line_number":931,"context_line":"        return fip[\u0027floatingip\u0027][\u0027floating_ip_address\u0027]"},{"line_number":932,"context_line":""},{"line_number":933,"context_line":"    def _get_floating_ip_by_address(self, client, address):"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAWH%2F%2BE3w%3D","line":930,"in_reply_to":"AAAAWH%2F%2BE4k%3D","updated":"2014-03-31 02:40:36.000000000","message":"I am struggling with local pep8 env nowadays... thanks a lot","commit_id":"b4f2711dd1cd5a3a4ad42237dd67a884240caa6f"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"9e6a349bfc293bfc1cf241c1790c7102a5c3c82a","unresolved":false,"context_lines":[{"line_number":923,"context_line":"        except (neutron_client_exc.IpAddressGenerationFailureClient,"},{"line_number":924,"context_line":"                neutron_client_exc.ExternalIpAddressExhaustedClient) as e:"},{"line_number":925,"context_line":"            raise exception.NoMoreFloatingIps(unicode(e))"},{"line_number":926,"context_line":"        except neutron_client_exc.NeutronClientException as e:"},{"line_number":927,"context_line":"            if e.status_code \u003d\u003d 409:"},{"line_number":928,"context_line":"                raise exception.FloatingIpLimitExceeded(unicode(e))"},{"line_number":929,"context_line":"            raise"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAW3%2F%2F%2B2c%3D","line":926,"updated":"2014-04-09 03:49:58.000000000","message":"So its a bit of a pain, but given we\u0027re in Juno now I think its worth enhancing neutron client to have an explicit exception to raise for this case (may require a neutron change too). That way we won\u0027t accidentally start raising a FloatingIpLimitExceeded when its some other failure causing a 409.","commit_id":"855141ea59aa4537f1e746f93fc7f775cc50d8db"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b8132d121bca8f340066aedddb931f92a471a7ba","unresolved":false,"context_lines":[{"line_number":923,"context_line":"        except (neutron_client_exc.IpAddressGenerationFailureClient,"},{"line_number":924,"context_line":"                neutron_client_exc.ExternalIpAddressExhaustedClient) as e:"},{"line_number":925,"context_line":"            raise exception.NoMoreFloatingIps(unicode(e))"},{"line_number":926,"context_line":"        except neutron_client_exc.NeutronClientException as e:"},{"line_number":927,"context_line":"            if e.status_code \u003d\u003d 409:"},{"line_number":928,"context_line":"                raise exception.FloatingIpLimitExceeded(unicode(e))"},{"line_number":929,"context_line":"            raise"}],"source_content_type":"text/x-python","patch_set":13,"id":"1ae5cdf2_709788ec","line":926,"in_reply_to":"AAAAW3%2F%2F%2B2c%3D","updated":"2014-06-04 16:10:51.000000000","message":"This came up here before too:\n\nhttps://review.openstack.org/#/c/34363/6/nova/network/quantumv2/api.py","commit_id":"855141ea59aa4537f1e746f93fc7f775cc50d8db"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"32914739be4c793b6ba7d6968c72dcd5fe307918","unresolved":false,"context_lines":[{"line_number":923,"context_line":"        except (neutron_client_exc.IpAddressGenerationFailureClient,"},{"line_number":924,"context_line":"                neutron_client_exc.ExternalIpAddressExhaustedClient) as e:"},{"line_number":925,"context_line":"            raise exception.NoMoreFloatingIps(unicode(e))"},{"line_number":926,"context_line":"        except neutron_client_exc.NeutronClientException as e:"},{"line_number":927,"context_line":"            if e.status_code \u003d\u003d 409:"},{"line_number":928,"context_line":"                raise exception.FloatingIpLimitExceeded(unicode(e))"},{"line_number":929,"context_line":"            raise"}],"source_content_type":"text/x-python","patch_set":13,"id":"1ae5cdf2_0960accd","line":926,"in_reply_to":"AAAAW3%2F%2F%2B2c%3D","updated":"2014-06-13 19:55:27.000000000","message":"This was approved so once it merges it can be used here:\n\nhttps://review.openstack.org/#/c/89781/","commit_id":"855141ea59aa4537f1e746f93fc7f775cc50d8db"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"70ab1fbda81f8f5b53893627624173015fa3d4a2","unresolved":false,"context_lines":[{"line_number":955,"context_line":"        pool \u003d pool or CONF.default_floating_pool"},{"line_number":956,"context_line":"        pool_id \u003d self._get_floating_ip_pool_id_by_name_or_id(client, pool)"},{"line_number":957,"context_line":""},{"line_number":958,"context_line":"        # TODO(amotoki): handle exception during create_floatingip()"},{"line_number":959,"context_line":"        # At this timing it is ensured that a network for pool exists."},{"line_number":960,"context_line":"        # quota error may be returned."},{"line_number":961,"context_line":"        param \u003d {\u0027floatingip\u0027: {\u0027floating_network_id\u0027: pool_id}}"}],"source_content_type":"text/x-python","patch_set":15,"id":"1ae5cdf2_c468a6f6","line":958,"updated":"2014-06-27 01:57:03.000000000","message":"Can\u0027t this TODO be removed now?","commit_id":"53a137d59f0748cdce70ea97e7cf483b8b9ff35f"}],"nova/tests/api/openstack/compute/contrib/test_floating_ips.py":[{"author":{"_account_id":7653,"name":"Zhengguang Ou","email":"zhengguangou@gmail.com","username":"Zhengguang"},"change_message_id":"49056b159f7076b9a6359b3cd8839e74fc91a029","unresolved":false,"context_lines":[{"line_number":387,"context_line":"    @mock.patch(\u0027nova.network.api.API.allocate_floating_ip\u0027)"},{"line_number":388,"context_line":"    def test_floating_ip_allocate_no_free_ips_pool(self, allocate_mock):"},{"line_number":389,"context_line":"        def fake_allocate(*args, **kwargs):"},{"line_number":390,"context_line":"            raise exception.FloatingIpLimitExceeded()"},{"line_number":391,"context_line":""},{"line_number":392,"context_line":"        allocate_mock.side_effect \u003d fake_allocate"},{"line_number":393,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"1ae5cdf2_2131d8ed","line":390,"updated":"2014-06-23 15:09:36.000000000","message":"why do not use side_effect like above?","commit_id":"6d7314ec719cd8a9dfe3d16704f08a5156be0f1b"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"f281aeefe26f8a0a0adc6c405146484316f28dc0","unresolved":false,"context_lines":[{"line_number":387,"context_line":"    @mock.patch(\u0027nova.network.api.API.allocate_floating_ip\u0027)"},{"line_number":388,"context_line":"    def test_floating_ip_allocate_no_free_ips_pool(self, allocate_mock):"},{"line_number":389,"context_line":"        def fake_allocate(*args, **kwargs):"},{"line_number":390,"context_line":"            raise exception.FloatingIpLimitExceeded()"},{"line_number":391,"context_line":""},{"line_number":392,"context_line":"        allocate_mock.side_effect \u003d fake_allocate"},{"line_number":393,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"1ae5cdf2_1e86e0ba","line":390,"in_reply_to":"1ae5cdf2_2131d8ed","updated":"2014-06-24 02:58:12.000000000","message":"yes, it should be updated","commit_id":"6d7314ec719cd8a9dfe3d16704f08a5156be0f1b"}],"nova/tests/network/test_neutronv2.py":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"7364e664049b00f3b9df86ef0051340c305fac9d","unresolved":false,"context_lines":[{"line_number":1364,"context_line":"        self.assertEqual(fip, self.fip_unassociated[\u0027floating_ip_address\u0027])"},{"line_number":1365,"context_line":""},{"line_number":1366,"context_line":"    def test_allocate_floating_ip_exceed_limit(self):"},{"line_number":1367,"context_line":"        # Verify that the correct exception is thrown when quota excceed"},{"line_number":1368,"context_line":"        api \u003d neutronapi.API()"},{"line_number":1369,"context_line":"        pool_name \u003d self.fip_pool[\u0027name\u0027]"},{"line_number":1370,"context_line":"        pool_id \u003d self.fip_pool[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F9AZE%3D","line":1367,"updated":"2013-12-17 20:27:12.000000000","message":"typo, grammar s/excceed/exceeded/","commit_id":"34f1ab0f1269509591e35ce798a58491dc3cdfd8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"70ab1fbda81f8f5b53893627624173015fa3d4a2","unresolved":false,"context_lines":[{"line_number":1800,"context_line":"        search_opts \u003d {\u0027router:external\u0027: True,"},{"line_number":1801,"context_line":"                       \u0027fields\u0027: \u0027id\u0027,"},{"line_number":1802,"context_line":"                       \u0027name\u0027: pool_name}"},{"line_number":1803,"context_line":"        self.moxed_client.list_networks(**search_opts).\\"},{"line_number":1804,"context_line":"            AndReturn({\u0027networks\u0027: [self.fip_pool]})"},{"line_number":1805,"context_line":"        NeutronExceedLimit \u003d neutronv2.exceptions.OverQuotaClient()"},{"line_number":1806,"context_line":"        self.moxed_client.create_floatingip("}],"source_content_type":"text/x-python","patch_set":15,"id":"1ae5cdf2_84493e90","line":1803,"updated":"2014-06-27 01:57:03.000000000","message":"Please use mock for new tests, put it in the TestNeutronv2WithMock class below.","commit_id":"53a137d59f0748cdce70ea97e7cf483b8b9ff35f"}]}
