)]}'
{"manila/api/v1/quota_class_sets.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"7f033a4cf0f20ef4714f14a0d13544c8c9994e6c","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        context \u003d req.environ[\u0027manila.context\u0027]"},{"line_number":35,"context_line":"        self.authorize(context, \u0027show\u0027)"},{"line_number":36,"context_line":"        try:"},{"line_number":37,"context_line":"            db.sqlalchemy.api.authorize_quota_class_context(context, id)"},{"line_number":38,"context_line":"        except exception.NotAuthorized:"},{"line_number":39,"context_line":"            raise webob.exc.HTTPForbidden()"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a29b11f_4543436c","line":37,"updated":"2015-10-22 14:56:18.000000000","message":"Why not make a DB level method?","commit_id":"60bcdf00859b3b00d03678c5c9cef9b54d71cfcf"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"7083e270b3616f7c22573cb8b7fdaa887deaf91b","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        context \u003d req.environ[\u0027manila.context\u0027]"},{"line_number":35,"context_line":"        self.authorize(context, \u0027show\u0027)"},{"line_number":36,"context_line":"        try:"},{"line_number":37,"context_line":"            db.sqlalchemy.api.authorize_quota_class_context(context, id)"},{"line_number":38,"context_line":"        except exception.NotAuthorized:"},{"line_number":39,"context_line":"            raise webob.exc.HTTPForbidden()"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a29b11f_8a8e422c","line":37,"in_reply_to":"3a29b11f_4543436c","updated":"2015-10-22 17:03:30.000000000","message":"Done","commit_id":"60bcdf00859b3b00d03678c5c9cef9b54d71cfcf"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ca33d45191df7c4be24b406421cdfcb47608fe38","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        try:"},{"line_number":37,"context_line":"            db.authorize_quota_class_context(context, id)"},{"line_number":38,"context_line":"        except exception.NotAuthorized:"},{"line_number":39,"context_line":"            raise webob.exc.HTTPForbidden()"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"        return self._view_builder.detail_list("},{"line_number":42,"context_line":"            QUOTAS.get_class_quotas(context, id), id)"}],"source_content_type":"text/x-python","patch_set":7,"id":"da85f559_d518ac77","line":39,"updated":"2015-11-10 19:23:29.000000000","message":"Can you add some message to the exception to explain what failed?\n\nwebob.exc.HTTPForbidden(explanation\u003dmsg)\n\nThere are a few of these in this file and in other files of this patch.  It will be great if you can fix all of them.","commit_id":"f4c16c45be9981063208d36d138e10f3b67f41d4"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4f5053f9a219b362b104bddac48476503ad4c3f5","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        try:"},{"line_number":37,"context_line":"            db.authorize_quota_class_context(context, id)"},{"line_number":38,"context_line":"        except exception.NotAuthorized:"},{"line_number":39,"context_line":"            raise webob.exc.HTTPForbidden()"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"        return self._view_builder.detail_list("},{"line_number":42,"context_line":"            QUOTAS.get_class_quotas(context, id), id)"}],"source_content_type":"text/x-python","patch_set":7,"id":"da85f559_27d661f1","line":39,"in_reply_to":"da85f559_6979c4c7","updated":"2015-11-12 03:57:48.000000000","message":"That\u0027s fine. I think changing of the message can be done later.","commit_id":"f4c16c45be9981063208d36d138e10f3b67f41d4"},{"author":{"_account_id":7102,"name":"Thomas Bechtold","email":"thomas.bechtold@chainguard.dev","username":"toabctl"},"change_message_id":"d3af25a3aa7e97cb9aa3e6e24505386a2a0fae0d","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        try:"},{"line_number":37,"context_line":"            db.authorize_quota_class_context(context, id)"},{"line_number":38,"context_line":"        except exception.NotAuthorized:"},{"line_number":39,"context_line":"            raise webob.exc.HTTPForbidden()"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"        return self._view_builder.detail_list("},{"line_number":42,"context_line":"            QUOTAS.get_class_quotas(context, id), id)"}],"source_content_type":"text/x-python","patch_set":7,"id":"da85f559_6979c4c7","line":39,"in_reply_to":"da85f559_6a855605","updated":"2015-11-11 14:14:13.000000000","message":"Because it\u0027s just a copy\u0026paste I agree with Valeriy to lust leave it as it is for now.\n@xing-yang: are you fine with that? Or do you think this really has to be changed now?","commit_id":"f4c16c45be9981063208d36d138e10f3b67f41d4"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"26511fa5dcc1a716786148909f27fb6eddb48a93","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        try:"},{"line_number":37,"context_line":"            db.authorize_quota_class_context(context, id)"},{"line_number":38,"context_line":"        except exception.NotAuthorized:"},{"line_number":39,"context_line":"            raise webob.exc.HTTPForbidden()"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"        return self._view_builder.detail_list("},{"line_number":42,"context_line":"            QUOTAS.get_class_quotas(context, id), id)"}],"source_content_type":"text/x-python","patch_set":7,"id":"da85f559_6a855605","line":39,"in_reply_to":"da85f559_d518ac77","updated":"2015-11-10 21:02:04.000000000","message":"I do not implement it, it is copy-paste. And, what do you suggest to add as a message? I propose to leave it as is.","commit_id":"f4c16c45be9981063208d36d138e10f3b67f41d4"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ca33d45191df7c4be24b406421cdfcb47608fe38","unresolved":false,"context_lines":[{"line_number":53,"context_line":"                except exception.QuotaClassNotFound:"},{"line_number":54,"context_line":"                    db.quota_class_create(context, quota_class, key, value)"},{"line_number":55,"context_line":"                except exception.AdminRequired:"},{"line_number":56,"context_line":"                    raise webob.exc.HTTPForbidden()"},{"line_number":57,"context_line":"        return self._view_builder.detail_list("},{"line_number":58,"context_line":"            QUOTAS.get_class_quotas(context, quota_class))"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"da85f559_55f6fcf9","line":56,"updated":"2015-11-10 19:23:29.000000000","message":"Same","commit_id":"f4c16c45be9981063208d36d138e10f3b67f41d4"}],"manila/api/v1/quota_sets.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"7f033a4cf0f20ef4714f14a0d13544c8c9994e6c","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from manila.api.openstack import wsgi"},{"line_number":23,"context_line":"from manila.api.views import quota_sets as quota_sets_views"},{"line_number":24,"context_line":"from manila import db"},{"line_number":25,"context_line":"from manila.db.sqlalchemy import api as sqlalchemy_api"},{"line_number":26,"context_line":"from manila import exception"},{"line_number":27,"context_line":"from manila.i18n import _"},{"line_number":28,"context_line":"from manila import quota"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a29b11f_28405e33","line":25,"updated":"2015-10-22 14:56:18.000000000","message":"I think we should use the db layer (manila/db/api.py) as interface as usual and not use the api directly from (manila/db/sqlalchemy/api.py)...","commit_id":"60bcdf00859b3b00d03678c5c9cef9b54d71cfcf"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"7083e270b3616f7c22573cb8b7fdaa887deaf91b","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from manila.api.openstack import wsgi"},{"line_number":23,"context_line":"from manila.api.views import quota_sets as quota_sets_views"},{"line_number":24,"context_line":"from manila import db"},{"line_number":25,"context_line":"from manila.db.sqlalchemy import api as sqlalchemy_api"},{"line_number":26,"context_line":"from manila import exception"},{"line_number":27,"context_line":"from manila.i18n import _"},{"line_number":28,"context_line":"from manila import quota"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a29b11f_ca999a7a","line":25,"in_reply_to":"3a29b11f_28405e33","updated":"2015-10-22 17:03:30.000000000","message":"Done","commit_id":"60bcdf00859b3b00d03678c5c9cef9b54d71cfcf"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"4c0bf093147309a28ea753cff2fa460968af8ea2","unresolved":false,"context_lines":[{"line_number":109,"context_line":"                    LOG.warn(msg)"},{"line_number":110,"context_line":"                    raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        LOG.debug(\"force update quotas: %s\", force_update)"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        if len(bad_keys) \u003e 0:"},{"line_number":115,"context_line":"            msg \u003d _(\"Bad key(s) %s in quota_set\") % \",\".join(bad_keys)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a29b11f_b68cc4da","line":112,"updated":"2015-10-22 18:52:10.000000000","message":"nit: If making another patch, :s/force/Force, also missing period at the end of the sentence.","commit_id":"1c0ecd584e2cc37179581f5ac8c83170ecb67798"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"950247e8c181538609d4014e96cf6bcfdaf45afa","unresolved":false,"context_lines":[{"line_number":109,"context_line":"                    LOG.warn(msg)"},{"line_number":110,"context_line":"                    raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        LOG.debug(\"force update quotas: %s\", force_update)"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        if len(bad_keys) \u003e 0:"},{"line_number":115,"context_line":"            msg \u003d _(\"Bad key(s) %s in quota_set\") % \",\".join(bad_keys)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a29b11f_e424c60d","line":112,"in_reply_to":"3a29b11f_b68cc4da","updated":"2015-10-22 19:39:18.000000000","message":"Done","commit_id":"1c0ecd584e2cc37179581f5ac8c83170ecb67798"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"4c0bf093147309a28ea753cff2fa460968af8ea2","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        LOG.debug(\"force update quotas: %s\", force_update)"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        if len(bad_keys) \u003e 0:"},{"line_number":115,"context_line":"            msg \u003d _(\"Bad key(s) %s in quota_set\") % \",\".join(bad_keys)"},{"line_number":116,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a29b11f_7692acf7","line":115,"updated":"2015-10-22 18:52:10.000000000","message":"nit: Missing period at the end of sentence.","commit_id":"1c0ecd584e2cc37179581f5ac8c83170ecb67798"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"950247e8c181538609d4014e96cf6bcfdaf45afa","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        LOG.debug(\"force update quotas: %s\", force_update)"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        if len(bad_keys) \u003e 0:"},{"line_number":115,"context_line":"            msg \u003d _(\"Bad key(s) %s in quota_set\") % \",\".join(bad_keys)"},{"line_number":116,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a29b11f_e46b661c","line":115,"in_reply_to":"3a29b11f_7692acf7","updated":"2015-10-22 19:39:18.000000000","message":"Done","commit_id":"1c0ecd584e2cc37179581f5ac8c83170ecb67798"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"4c0bf093147309a28ea753cff2fa460968af8ea2","unresolved":false,"context_lines":[{"line_number":147,"context_line":"                    if quota_used \u003e value:"},{"line_number":148,"context_line":"                        msg \u003d (_(\"Quota value %(value)s for %(key)s are \""},{"line_number":149,"context_line":"                                 \"greater than already used and reserved \""},{"line_number":150,"context_line":"                                 \"%(quota_used)s\") %"},{"line_number":151,"context_line":"                               {\u0027value\u0027: value, \u0027key\u0027: key,"},{"line_number":152,"context_line":"                                \u0027quota_used\u0027: quota_used})"},{"line_number":153,"context_line":"                        raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a29b11f_364d149a","line":150,"updated":"2015-10-22 18:52:10.000000000","message":"nit: Missing period.","commit_id":"1c0ecd584e2cc37179581f5ac8c83170ecb67798"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"950247e8c181538609d4014e96cf6bcfdaf45afa","unresolved":false,"context_lines":[{"line_number":147,"context_line":"                    if quota_used \u003e value:"},{"line_number":148,"context_line":"                        msg \u003d (_(\"Quota value %(value)s for %(key)s are \""},{"line_number":149,"context_line":"                                 \"greater than already used and reserved \""},{"line_number":150,"context_line":"                                 \"%(quota_used)s\") %"},{"line_number":151,"context_line":"                               {\u0027value\u0027: value, \u0027key\u0027: key,"},{"line_number":152,"context_line":"                                \u0027quota_used\u0027: quota_used})"},{"line_number":153,"context_line":"                        raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a29b11f_c470aa0d","line":150,"in_reply_to":"3a29b11f_364d149a","updated":"2015-10-22 19:39:18.000000000","message":"Done","commit_id":"1c0ecd584e2cc37179581f5ac8c83170ecb67798"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ca33d45191df7c4be24b406421cdfcb47608fe38","unresolved":false,"context_lines":[{"line_number":71,"context_line":"            return self._view_builder.detail_list("},{"line_number":72,"context_line":"                self._get_quotas(context, id, user_id\u003duser_id), id)"},{"line_number":73,"context_line":"        except exception.NotAuthorized:"},{"line_number":74,"context_line":"            raise webob.exc.HTTPForbidden()"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    def defaults(self, req, id):"},{"line_number":77,"context_line":"        context \u003d req.environ[\u0027manila.context\u0027]"}],"source_content_type":"text/x-python","patch_set":7,"id":"da85f559_95a224fc","line":74,"updated":"2015-11-10 19:23:29.000000000","message":"Same here","commit_id":"f4c16c45be9981063208d36d138e10f3b67f41d4"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ca33d45191df7c4be24b406421cdfcb47608fe38","unresolved":false,"context_lines":[{"line_number":91,"context_line":"            settable_quotas \u003d QUOTAS.get_settable_quotas(context, project_id,"},{"line_number":92,"context_line":"                                                         user_id\u003duser_id)"},{"line_number":93,"context_line":"        except exception.NotAuthorized:"},{"line_number":94,"context_line":"            raise webob.exc.HTTPForbidden()"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"        for key, value in body.get(\u0027quota_set\u0027, {}).items():"},{"line_number":97,"context_line":"            if (key not in QUOTAS and"}],"source_content_type":"text/x-python","patch_set":7,"id":"da85f559_b5b72839","line":94,"updated":"2015-11-10 19:23:29.000000000","message":"Same","commit_id":"f4c16c45be9981063208d36d138e10f3b67f41d4"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ca33d45191df7c4be24b406421cdfcb47608fe38","unresolved":false,"context_lines":[{"line_number":119,"context_line":"            quotas \u003d self._get_quotas(context, id, user_id\u003duser_id,"},{"line_number":120,"context_line":"                                      usages\u003dTrue)"},{"line_number":121,"context_line":"        except exception.NotAuthorized:"},{"line_number":122,"context_line":"            raise webob.exc.HTTPForbidden()"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        for key, value in body.get(\u0027quota_set\u0027, {}).items():"},{"line_number":125,"context_line":"            if key in NON_QUOTA_KEYS or (not value and value !\u003d 0):"}],"source_content_type":"text/x-python","patch_set":7,"id":"da85f559_9589c477","line":122,"updated":"2015-11-10 19:23:29.000000000","message":"Same","commit_id":"f4c16c45be9981063208d36d138e10f3b67f41d4"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ca33d45191df7c4be24b406421cdfcb47608fe38","unresolved":false,"context_lines":[{"line_number":162,"context_line":"                db.quota_update(context, project_id, key, value,"},{"line_number":163,"context_line":"                                user_id\u003duser_id)"},{"line_number":164,"context_line":"            except exception.AdminRequired:"},{"line_number":165,"context_line":"                raise webob.exc.HTTPForbidden()"},{"line_number":166,"context_line":"        return self._view_builder.detail_list("},{"line_number":167,"context_line":"            self._get_quotas(context, id, user_id\u003duser_id))"},{"line_number":168,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"da85f559_b58e4877","line":165,"updated":"2015-11-10 19:23:29.000000000","message":"Same","commit_id":"f4c16c45be9981063208d36d138e10f3b67f41d4"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ca33d45191df7c4be24b406421cdfcb47608fe38","unresolved":false,"context_lines":[{"line_number":179,"context_line":"                QUOTAS.destroy_all_by_project(context, id)"},{"line_number":180,"context_line":"            return webob.Response(status_int\u003d202)"},{"line_number":181,"context_line":"        except exception.NotAuthorized:"},{"line_number":182,"context_line":"            raise webob.exc.HTTPForbidden()"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"def create_resource():"}],"source_content_type":"text/x-python","patch_set":7,"id":"da85f559_95f0e4ff","line":182,"updated":"2015-11-10 19:23:29.000000000","message":"Same","commit_id":"f4c16c45be9981063208d36d138e10f3b67f41d4"}]}
