)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"ddf9879be2834bc062b7e2dcb0c1c6ec0234d273","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Sergio Cazzolato \u003csergio.j.cazzolato@intel.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-02-15 00:22:45 -0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Nova option to or delete the quota for an specific resource"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The quota-delete method can receive a new optional parameter with the"},{"line_number":10,"context_line":"resource to be deleted. This operation when receives a resource, resets"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"AAAAUX%2F%2B%2FBw%3D","line":7,"updated":"2014-02-17 20:09:53.000000000","message":"\"Nova option to\" what?  (femtonit ;)","commit_id":"15217595d9b7d5f633484aa4df4f56d4a0d321c5"},{"author":{"_account_id":9214,"name":"Sergio Cazzolato","email":"sergiocazzolato@gmail.com","username":"sjcazzol"},"change_message_id":"7ca26c52fc17a4f0171864585a8b60238800069e","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Sergio Cazzolato \u003csergio.j.cazzolato@intel.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-02-15 00:22:45 -0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Nova option to or delete the quota for an specific resource"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The quota-delete method can receive a new optional parameter with the"},{"line_number":10,"context_line":"resource to be deleted. This operation when receives a resource, resets"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"AAAAUX%2F%2B%2B7g%3D","line":7,"in_reply_to":"AAAAUX%2F%2B%2FBw%3D","updated":"2014-02-17 20:30:28.000000000","message":"Done","commit_id":"15217595d9b7d5f633484aa4df4f56d4a0d321c5"}],"nova/api/openstack/compute/contrib/quotas.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"ebdc7eb45764515634eaaff39209228a1ce1babe","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        return self._format_quota_set(id, QUOTAS.get_defaults(context))"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    @wsgi.serializers(xml\u003dQuotaTemplate)"},{"line_number":109,"context_line":"    def reset(self, req, id):"},{"line_number":110,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":111,"context_line":"        authorize_reset(context)"},{"line_number":112,"context_line":"        project_id \u003d id"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALn%2F%2F3pE%3D","line":109,"updated":"2012-10-31 15:13:32.000000000","message":"This can never be called, because you haven\u0027t plumbed it in properly.  Also, I wouldn\u0027t take this approach; I would make a delete of the quotas be equivalent to a reset to the default.","commit_id":"c45691cbb98e24d6ce0fafa5f777fc5a4414754a"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"0067975372fe13cd10500a0d55152fb0da926be0","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        return self._format_quota_set(id, QUOTAS.get_defaults(context))"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    @wsgi.serializers(xml\u003dQuotaTemplate)"},{"line_number":109,"context_line":"    def reset(self, req, id, body):"},{"line_number":110,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":111,"context_line":"        authorize_reset(context)"},{"line_number":112,"context_line":"        project_id \u003d id"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2F%2BEc%3D","line":109,"updated":"2012-12-18 14:57:22.000000000","message":"+1","commit_id":"f0ce1a9299fc2af1d7fdcea025f0a2949a369ab6"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"e924212aaaabfb8d14bc0f8f11126c79b56ab516","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        return self._format_quota_set(id, QUOTAS.get_defaults(context))"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    @wsgi.serializers(xml\u003dQuotaTemplate)"},{"line_number":109,"context_line":"    def reset(self, req, id, body):"},{"line_number":110,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":111,"context_line":"        authorize_reset(context)"},{"line_number":112,"context_line":"        project_id \u003d id"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAMX%2F%2F7as%3D","line":109,"updated":"2012-12-06 16:04:22.000000000","message":"Personally, I would elect for a DELETE-based approach rather than a POST to reset, but that\u0027s a quibble, now that you have this plumbed correctly.","commit_id":"f0ce1a9299fc2af1d7fdcea025f0a2949a369ab6"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"c181b0d9d1bdfb4878e3024937c415d4d417c64c","unresolved":false,"context_lines":[{"line_number":218,"context_line":"            authorize_delete(context)"},{"line_number":219,"context_line":"            params \u003d urlparse.parse_qs(req.environ.get(\u0027QUERY_STRING\u0027, \u0027\u0027))"},{"line_number":220,"context_line":"            user_id \u003d params.get(\u0027user_id\u0027, [None])[0]"},{"line_number":221,"context_line":"            resource \u003d params.get(\u0027resource\u0027, [None])[0]"},{"line_number":222,"context_line":"            if user_id and not self.ext_mgr.is_loaded(\u0027os-user-quotas\u0027):"},{"line_number":223,"context_line":"                raise webob.exc.HTTPNotFound()"},{"line_number":224,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAU3%2F%2F%2BzU%3D","line":221,"updated":"2014-02-23 04:41:56.000000000","message":"This has to be dependent on a new extension being present (see os-user-quotas as an example) so the old behaviour stays the same if the new extension is not loaded","commit_id":"2e4822b3493ca5de84712d923fdce9d4d7c12c23"},{"author":{"_account_id":9214,"name":"Sergio Cazzolato","email":"sergiocazzolato@gmail.com","username":"sjcazzol"},"change_message_id":"fd9aeaa4a10b70cab8c5831dae83190d92303d8f","unresolved":false,"context_lines":[{"line_number":218,"context_line":"            authorize_delete(context)"},{"line_number":219,"context_line":"            params \u003d urlparse.parse_qs(req.environ.get(\u0027QUERY_STRING\u0027, \u0027\u0027))"},{"line_number":220,"context_line":"            user_id \u003d params.get(\u0027user_id\u0027, [None])[0]"},{"line_number":221,"context_line":"            resource \u003d params.get(\u0027resource\u0027, [None])[0]"},{"line_number":222,"context_line":"            if user_id and not self.ext_mgr.is_loaded(\u0027os-user-quotas\u0027):"},{"line_number":223,"context_line":"                raise webob.exc.HTTPNotFound()"},{"line_number":224,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAU3%2F%2F1bM%3D","line":221,"in_reply_to":"AAAAU3%2F%2F%2BzU%3D","updated":"2014-02-24 15:30:26.000000000","message":"Done","commit_id":"2e4822b3493ca5de84712d923fdce9d4d7c12c23"},{"author":{"_account_id":9214,"name":"Sergio Cazzolato","email":"sergiocazzolato@gmail.com","username":"sjcazzol"},"change_message_id":"28219cb399f28c6180dfecb9b3efdec5ff211e4c","unresolved":false,"context_lines":[{"line_number":218,"context_line":"            authorize_delete(context)"},{"line_number":219,"context_line":"            params \u003d urlparse.parse_qs(req.environ.get(\u0027QUERY_STRING\u0027, \u0027\u0027))"},{"line_number":220,"context_line":"            user_id \u003d params.get(\u0027user_id\u0027, [None])[0]"},{"line_number":221,"context_line":"            resource \u003d params.get(\u0027resource\u0027, [None])[0]"},{"line_number":222,"context_line":"            if user_id and not self.ext_mgr.is_loaded(\u0027os-user-quotas\u0027):"},{"line_number":223,"context_line":"                raise webob.exc.HTTPNotFound()"},{"line_number":224,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAU3%2F%2Fzvc%3D","line":221,"in_reply_to":"AAAAU3%2F%2F1bM%3D","updated":"2014-02-24 17:36:23.000000000","message":"I was reviewing this I don\u0027t see this extension should be a dependency since the resource is independent of the user support. \nIs there any reason for this dependency that I am missing?","commit_id":"2e4822b3493ca5de84712d923fdce9d4d7c12c23"},{"author":{"_account_id":9214,"name":"Sergio Cazzolato","email":"sergiocazzolato@gmail.com","username":"sjcazzol"},"change_message_id":"3a228671853dac59e9555e6bd6f9aa8e2176e5dc","unresolved":false,"context_lines":[{"line_number":218,"context_line":"            authorize_delete(context)"},{"line_number":219,"context_line":"            params \u003d urlparse.parse_qs(req.environ.get(\u0027QUERY_STRING\u0027, \u0027\u0027))"},{"line_number":220,"context_line":"            user_id \u003d params.get(\u0027user_id\u0027, [None])[0]"},{"line_number":221,"context_line":"            resource \u003d params.get(\u0027resource\u0027, [None])[0]"},{"line_number":222,"context_line":"            if user_id and not self.ext_mgr.is_loaded(\u0027os-user-quotas\u0027):"},{"line_number":223,"context_line":"                raise webob.exc.HTTPNotFound()"},{"line_number":224,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAU3%2F%2FowA%3D","line":221,"in_reply_to":"AAAAU3%2F%2Fzvc%3D","updated":"2014-02-25 14:42:55.000000000","message":"I didn\u0027t get well the previous comment, now working on fix it","commit_id":"2e4822b3493ca5de84712d923fdce9d4d7c12c23"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"c181b0d9d1bdfb4878e3024937c415d4d417c64c","unresolved":false,"context_lines":[{"line_number":223,"context_line":"                raise webob.exc.HTTPNotFound()"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"            if resource and not resource in QUOTAS:"},{"line_number":226,"context_line":"                raise exception.InvalidInput(_(\"Unexpected quota resource: \""},{"line_number":227,"context_line":"                                               \"\u0027%s\u0027\") % resource)"},{"line_number":228,"context_line":"            try:"},{"line_number":229,"context_line":"                nova.context.authorize_project_context(context, id)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAU3%2F%2F%2Bz8%3D","line":226,"updated":"2014-02-23 04:41:56.000000000","message":"Should be a HTTPBadRequest","commit_id":"2e4822b3493ca5de84712d923fdce9d4d7c12c23"},{"author":{"_account_id":9214,"name":"Sergio Cazzolato","email":"sergiocazzolato@gmail.com","username":"sjcazzol"},"change_message_id":"fd9aeaa4a10b70cab8c5831dae83190d92303d8f","unresolved":false,"context_lines":[{"line_number":223,"context_line":"                raise webob.exc.HTTPNotFound()"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"            if resource and not resource in QUOTAS:"},{"line_number":226,"context_line":"                raise exception.InvalidInput(_(\"Unexpected quota resource: \""},{"line_number":227,"context_line":"                                               \"\u0027%s\u0027\") % resource)"},{"line_number":228,"context_line":"            try:"},{"line_number":229,"context_line":"                nova.context.authorize_project_context(context, id)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAU3%2F%2F3DQ%3D","line":226,"in_reply_to":"AAAAU3%2F%2F%2Bz8%3D","updated":"2014-02-24 15:30:26.000000000","message":"Done","commit_id":"2e4822b3493ca5de84712d923fdce9d4d7c12c23"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"9b57deff9b598dffb682321d4e61629ddd05f9d8","unresolved":false,"context_lines":[{"line_number":225,"context_line":""},{"line_number":226,"context_line":"            if resource:"},{"line_number":227,"context_line":"                if not self.ext_mgr.is_loaded(\u0027os-delete-quotas-by-resource\u0027):"},{"line_number":228,"context_line":"                    raise webob.exc.HTTPNotFound()"},{"line_number":229,"context_line":"                if resource not in QUOTAS:"},{"line_number":230,"context_line":"                    raise webob.exc.HTTPBadRequest(_(\"Unexpected quota \""},{"line_number":231,"context_line":"                                                     \"resource : \u0027%s\u0027\") %"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAVn%2F%2F%2B%2FY%3D","line":228,"updated":"2014-03-03 00:14:54.000000000","message":"I think just HTTPBadRequest is better here","commit_id":"00c01a96e7180c249190fad30403b94a604abcd2"},{"author":{"_account_id":9214,"name":"Sergio Cazzolato","email":"sergiocazzolato@gmail.com","username":"sjcazzol"},"change_message_id":"524c384b5be8a31b430186930975380a6476a678","unresolved":false,"context_lines":[{"line_number":225,"context_line":""},{"line_number":226,"context_line":"            if resource:"},{"line_number":227,"context_line":"                if not self.ext_mgr.is_loaded(\u0027os-delete-quotas-by-resource\u0027):"},{"line_number":228,"context_line":"                    raise webob.exc.HTTPNotFound()"},{"line_number":229,"context_line":"                if resource not in QUOTAS:"},{"line_number":230,"context_line":"                    raise webob.exc.HTTPBadRequest(_(\"Unexpected quota \""},{"line_number":231,"context_line":"                                                     \"resource : \u0027%s\u0027\") %"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAVn%2F%2FjFE%3D","line":228,"in_reply_to":"AAAAVn%2F%2F%2B%2FY%3D","updated":"2014-03-05 13:55:17.000000000","message":"Agree on that. \n\nDo you think is good idea to create a bug in order to fix the other HTTTPNotFound that are used when extensions are not loaded?","commit_id":"00c01a96e7180c249190fad30403b94a604abcd2"}],"nova/api/openstack/compute/plugins/v3/quota_sets.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"a525a569786a51181e7f6e4d24911850b0a6e55e","unresolved":false,"context_lines":[{"line_number":210,"context_line":"        resource \u003d params.get(\u0027resource\u0027, [None])[0]"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"        if resource and not resource in QUOTAS:"},{"line_number":213,"context_line":"            raise webob.exc.HTTPBadRequest(_(\"Unexpected quota resource: \u0027%s\u0027\")"},{"line_number":214,"context_line":"                                           % resource)"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAXX%2F%2F8%2FM%3D","line":213,"updated":"2014-04-25 03:39:46.000000000","message":"The argument \"explanation\u003d\" is necessary for passing the message to wsgi framework.","commit_id":"9e53662de04b0c2c27c5b87f39c4ca39e57b0c38"},{"author":{"_account_id":9214,"name":"Sergio Cazzolato","email":"sergiocazzolato@gmail.com","username":"sjcazzol"},"change_message_id":"287cd1418c7a98bce3cc2291cb53eaff17ca2a2e","unresolved":false,"context_lines":[{"line_number":210,"context_line":"        resource \u003d params.get(\u0027resource\u0027, [None])[0]"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"        if resource and not resource in QUOTAS:"},{"line_number":213,"context_line":"            raise webob.exc.HTTPBadRequest(_(\"Unexpected quota resource: \u0027%s\u0027\")"},{"line_number":214,"context_line":"                                           % resource)"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":10,"id":"7adec928_1230bce7","line":213,"in_reply_to":"AAAAXX%2F%2F8%2FM%3D","updated":"2014-05-20 17:42:13.000000000","message":"Done","commit_id":"9e53662de04b0c2c27c5b87f39c4ca39e57b0c38"}],"nova/db/api.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"ddf9879be2834bc062b7e2dcb0c1c6ec0234d273","unresolved":false,"context_lines":[{"line_number":1116,"context_line":"def quota_destroy_all_by_project_and_user(context, project_id, user_id,"},{"line_number":1117,"context_line":"                                          resource\u003dNone):"},{"line_number":1118,"context_line":"    #Destroy all quotas associated with a given project, user and"},{"line_number":1119,"context_line":"    #resource."},{"line_number":1120,"context_line":"    return IMPL.quota_destroy_all_by_project_and_user(context, project_id,"},{"line_number":1121,"context_line":"                                                      user_id, resource)"},{"line_number":1122,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUX%2F%2B%2FBo%3D","line":1119,"updated":"2014-02-17 20:09:53.000000000","message":"Why did you eliminate the docstring?","commit_id":"15217595d9b7d5f633484aa4df4f56d4a0d321c5"},{"author":{"_account_id":9214,"name":"Sergio Cazzolato","email":"sergiocazzolato@gmail.com","username":"sjcazzol"},"change_message_id":"7ca26c52fc17a4f0171864585a8b60238800069e","unresolved":false,"context_lines":[{"line_number":1116,"context_line":"def quota_destroy_all_by_project_and_user(context, project_id, user_id,"},{"line_number":1117,"context_line":"                                          resource\u003dNone):"},{"line_number":1118,"context_line":"    #Destroy all quotas associated with a given project, user and"},{"line_number":1119,"context_line":"    #resource."},{"line_number":1120,"context_line":"    return IMPL.quota_destroy_all_by_project_and_user(context, project_id,"},{"line_number":1121,"context_line":"                                                      user_id, resource)"},{"line_number":1122,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUX%2F%2B%2B%2FQ%3D","line":1119,"in_reply_to":"AAAAUX%2F%2B%2FBo%3D","updated":"2014-02-17 20:30:28.000000000","message":"Done","commit_id":"15217595d9b7d5f633484aa4df4f56d4a0d321c5"}],"nova/db/sqlalchemy/api.py":[{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"9b57deff9b598dffb682321d4e61629ddd05f9d8","unresolved":false,"context_lines":[{"line_number":3270,"context_line":"        reservation_query.soft_delete(synchronize_session\u003dFalse)"},{"line_number":3271,"context_line":""},{"line_number":3272,"context_line":""},{"line_number":3273,"context_line":"@require_admin_context"},{"line_number":3274,"context_line":"def _quota_destroy_all(context, models, filters):"},{"line_number":3275,"context_line":"    def _get_model_queries(context, session, models):"},{"line_number":3276,"context_line":"        queries \u003d []"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAVn%2F%2F%2B9s%3D","line":3273,"updated":"2014-03-03 00:14:54.000000000","message":"I don\u0027t think you need this require_admin_context anymore?","commit_id":"00c01a96e7180c249190fad30403b94a604abcd2"},{"author":{"_account_id":9214,"name":"Sergio Cazzolato","email":"sergiocazzolato@gmail.com","username":"sjcazzol"},"change_message_id":"524c384b5be8a31b430186930975380a6476a678","unresolved":false,"context_lines":[{"line_number":3270,"context_line":"        reservation_query.soft_delete(synchronize_session\u003dFalse)"},{"line_number":3271,"context_line":""},{"line_number":3272,"context_line":""},{"line_number":3273,"context_line":"@require_admin_context"},{"line_number":3274,"context_line":"def _quota_destroy_all(context, models, filters):"},{"line_number":3275,"context_line":"    def _get_model_queries(context, session, models):"},{"line_number":3276,"context_line":"        queries \u003d []"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAVn%2F%2FjMk%3D","line":3273,"in_reply_to":"AAAAVn%2F%2F%2B9s%3D","updated":"2014-03-05 13:55:17.000000000","message":"Done","commit_id":"00c01a96e7180c249190fad30403b94a604abcd2"}],"nova/tests/api/openstack/compute/contrib/test_quotas.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"ddf9879be2834bc062b7e2dcb0c1c6ec0234d273","unresolved":false,"context_lines":[{"line_number":359,"context_line":"        self.req.environ[\u0027nova.context\u0027] \u003d context"},{"line_number":360,"context_line":"        self.ext_mgr.is_loaded(\u0027os-extended-quotas\u0027).AndReturn(True)"},{"line_number":361,"context_line":"        self.ext_mgr.is_loaded(\u0027os-user-quotas\u0027).AndReturn(True)"},{"line_number":362,"context_line":"        self.mox.StubOutWithMock(quota.QUOTAS, \"destroy_all_by_project\")"},{"line_number":363,"context_line":"        quota.QUOTAS.destroy_all_by_project_and_user(context, 1234, 5555, None)"},{"line_number":364,"context_line":"        self.mox.ReplayAll()"},{"line_number":365,"context_line":"        res \u003d self.controller.delete(self.req, 1234)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUX%2F%2B%2FBE%3D","line":362,"updated":"2014-02-17 20:09:53.000000000","message":"New tests are encouraged to use mock in preference to mox","commit_id":"15217595d9b7d5f633484aa4df4f56d4a0d321c5"},{"author":{"_account_id":9214,"name":"Sergio Cazzolato","email":"sergiocazzolato@gmail.com","username":"sjcazzol"},"change_message_id":"7ca26c52fc17a4f0171864585a8b60238800069e","unresolved":false,"context_lines":[{"line_number":359,"context_line":"        self.req.environ[\u0027nova.context\u0027] \u003d context"},{"line_number":360,"context_line":"        self.ext_mgr.is_loaded(\u0027os-extended-quotas\u0027).AndReturn(True)"},{"line_number":361,"context_line":"        self.ext_mgr.is_loaded(\u0027os-user-quotas\u0027).AndReturn(True)"},{"line_number":362,"context_line":"        self.mox.StubOutWithMock(quota.QUOTAS, \"destroy_all_by_project\")"},{"line_number":363,"context_line":"        quota.QUOTAS.destroy_all_by_project_and_user(context, 1234, 5555, None)"},{"line_number":364,"context_line":"        self.mox.ReplayAll()"},{"line_number":365,"context_line":"        res \u003d self.controller.delete(self.req, 1234)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUX%2F%2B%2B4k%3D","line":362,"in_reply_to":"AAAAUX%2F%2B%2FBE%3D","updated":"2014-02-17 20:30:28.000000000","message":"Good, working on it!","commit_id":"15217595d9b7d5f633484aa4df4f56d4a0d321c5"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"04f8f44b1f5e76e8e083a40503dffc49fb5301cf","unresolved":false,"context_lines":[{"line_number":352,"context_line":"        self.mox.VerifyAll()"},{"line_number":353,"context_line":"        self.assertEqual(res.status_int, 202)"},{"line_number":354,"context_line":""},{"line_number":355,"context_line":"    def test_user_quotas_delete(self):"},{"line_number":356,"context_line":"        context \u003d context_maker.get_admin_context()"},{"line_number":357,"context_line":"        self.req \u003d fakes.HTTPRequest.blank(\u0027/v2/fake4/os-quota-sets/1234?\u0027"},{"line_number":358,"context_line":"                                           \u0027user_id\u003d5555\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAWH%2F9tr0%3D","line":355,"updated":"2014-04-02 16:14:03.000000000","message":"I would slightly prefer that this test be reworked to use mock as opposed to mox, to match the other tests you\u0027ve added.","commit_id":"037ae170a6ff6b8dd625c7c8e8cd786ab3bafb6b"}],"nova/tests/test_quota.py":[{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"9b57deff9b598dffb682321d4e61629ddd05f9d8","unresolved":false,"context_lines":[{"line_number":750,"context_line":"        self.assertEqual(driver.called, ["},{"line_number":751,"context_line":"                (\u0027destroy_all_by_project\u0027, context, \u0027test_project\u0027, None),"},{"line_number":752,"context_line":"                ])"},{"line_number":753,"context_line":""},{"line_number":754,"context_line":"    def test_expire(self):"},{"line_number":755,"context_line":"        context \u003d FakeContext(None, None)"},{"line_number":756,"context_line":"        driver \u003d FakeDriver()"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAVn%2F%2F%2B8g%3D","line":753,"updated":"2014-03-03 00:14:54.000000000","message":"SO dyou need some more testcases here for the extra resource parameter added?","commit_id":"00c01a96e7180c249190fad30403b94a604abcd2"},{"author":{"_account_id":9214,"name":"Sergio Cazzolato","email":"sergiocazzolato@gmail.com","username":"sjcazzol"},"change_message_id":"524c384b5be8a31b430186930975380a6476a678","unresolved":false,"context_lines":[{"line_number":750,"context_line":"        self.assertEqual(driver.called, ["},{"line_number":751,"context_line":"                (\u0027destroy_all_by_project\u0027, context, \u0027test_project\u0027, None),"},{"line_number":752,"context_line":"                ])"},{"line_number":753,"context_line":""},{"line_number":754,"context_line":"    def test_expire(self):"},{"line_number":755,"context_line":"        context \u003d FakeContext(None, None)"},{"line_number":756,"context_line":"        driver \u003d FakeDriver()"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAVn%2F%2Fi8E%3D","line":753,"in_reply_to":"AAAAVn%2F%2F%2B8g%3D","updated":"2014-03-05 13:55:17.000000000","message":"Done","commit_id":"00c01a96e7180c249190fad30403b94a604abcd2"}]}
