)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"0ccaa00b6538f62b5ba9cb41698dfe729b9cc178","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     vponomaryov \u003cvponomaryov@mirantis.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-07-24 22:14:42 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add share groups quotas"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"and share group snapshots quotas. \"quota\" APIs now will return two new"},{"line_number":10,"context_line":"following keys:"},{"line_number":11,"context_line":"- \u0027share_groups\u0027"},{"line_number":12,"context_line":"- \u0027share_group_snapshots\u0027"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"ff346bd7_c42e41a4","line":9,"range":{"start_line":7,"start_character":0,"end_line":9,"end_character":32},"updated":"2017-07-25 17:28:29.000000000","message":"Combine those in one line?","commit_id":"d2afd6f7ecc96a83b67d56d8a173530af1a66e7e"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"bde7490161dc27108ab89da8e244c9fbb3846d05","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     vponomaryov \u003cvponomaryov@mirantis.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-07-24 22:14:42 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add share groups quotas"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"and share group snapshots quotas. \"quota\" APIs now will return two new"},{"line_number":10,"context_line":"following keys:"},{"line_number":11,"context_line":"- \u0027share_groups\u0027"},{"line_number":12,"context_line":"- \u0027share_group_snapshots\u0027"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"ff346bd7_0e7a11f0","line":9,"range":{"start_line":7,"start_character":0,"end_line":9,"end_character":32},"in_reply_to":"ff346bd7_c42e41a4","updated":"2017-07-26 08:30:32.000000000","message":"Done","commit_id":"d2afd6f7ecc96a83b67d56d8a173530af1a66e7e"}],"manila/api/v2/quota_sets.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"38c3549c3d9f7c66a9f4fbc91f1ed6345b8a1f29","unresolved":false,"context_lines":[{"line_number":84,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    @staticmethod"},{"line_number":87,"context_line":"    def _ensure_share_group_related_args_are_absent(body):"},{"line_number":88,"context_line":"        body \u003d body.get(\u0027quota_set\u0027, body)"},{"line_number":89,"context_line":"        for key in (\u0027share_groups\u0027, \u0027share_group_snapshots\u0027):"},{"line_number":90,"context_line":"            if body.get(key):"},{"line_number":91,"context_line":"                msg \u003d _(\"\u0027%(key)s\u0027 key is not supported by this microversion. \""},{"line_number":92,"context_line":"                        \"Use 2.36 or greater microversion to be able \""},{"line_number":93,"context_line":"                        \"to use \u0027%(key)s\u0027 quotas.\") % {\"key\": key}"},{"line_number":94,"context_line":"                raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def _get_quotas(self, context, project_id, user_id\u003dNone,"},{"line_number":97,"context_line":"                    share_type_id\u003dNone, usages\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":11,"id":"7f231b9d_90610c15","line":94,"range":{"start_line":87,"start_character":0,"end_line":94,"end_character":63},"updated":"2017-06-19 21:48:50.000000000","message":"?\n\nYou shouldn\u0027t modify a previously published API to send an error like this.... We don\u0027t seem to perform a strict key check currently, and i can send garbage to the quota sets APIs. While this is undesirable, this \"fix\" shouldn\u0027t be in this patch atleast...","commit_id":"97cd32be30849bae27a922de8e7088847280e6c0"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"8dbe3afb502e25c4748bb57254155116bb2c2a65","unresolved":false,"context_lines":[{"line_number":84,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    @staticmethod"},{"line_number":87,"context_line":"    def _ensure_share_group_related_args_are_absent(body):"},{"line_number":88,"context_line":"        body \u003d body.get(\u0027quota_set\u0027, body)"},{"line_number":89,"context_line":"        for key in (\u0027share_groups\u0027, \u0027share_group_snapshots\u0027):"},{"line_number":90,"context_line":"            if body.get(key):"},{"line_number":91,"context_line":"                msg \u003d _(\"\u0027%(key)s\u0027 key is not supported by this microversion. \""},{"line_number":92,"context_line":"                        \"Use 2.36 or greater microversion to be able \""},{"line_number":93,"context_line":"                        \"to use \u0027%(key)s\u0027 quotas.\") % {\"key\": key}"},{"line_number":94,"context_line":"                raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def _get_quotas(self, context, project_id, user_id\u003dNone,"},{"line_number":97,"context_line":"                    share_type_id\u003dNone, usages\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f201791_359303fd","line":94,"range":{"start_line":87,"start_character":0,"end_line":94,"end_character":63},"in_reply_to":"5f201791_3c9e5054","updated":"2017-06-22 15:14:59.000000000","message":"Goutham Pacha Ravi,\n\nmy point is that people tend to mix up microversions and things they support. So, we \"explicitly\" raise error on OLD API, because it can be mistake. User mistake, without such error, he will not see his mistake and use wrong data.","commit_id":"97cd32be30849bae27a922de8e7088847280e6c0"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"28de5371fc618c4cc9eb02c87b0836f4aa9c0ea2","unresolved":false,"context_lines":[{"line_number":84,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    @staticmethod"},{"line_number":87,"context_line":"    def _ensure_share_group_related_args_are_absent(body):"},{"line_number":88,"context_line":"        body \u003d body.get(\u0027quota_set\u0027, body)"},{"line_number":89,"context_line":"        for key in (\u0027share_groups\u0027, \u0027share_group_snapshots\u0027):"},{"line_number":90,"context_line":"            if body.get(key):"},{"line_number":91,"context_line":"                msg \u003d _(\"\u0027%(key)s\u0027 key is not supported by this microversion. \""},{"line_number":92,"context_line":"                        \"Use 2.36 or greater microversion to be able \""},{"line_number":93,"context_line":"                        \"to use \u0027%(key)s\u0027 quotas.\") % {\"key\": key}"},{"line_number":94,"context_line":"                raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def _get_quotas(self, context, project_id, user_id\u003dNone,"},{"line_number":97,"context_line":"                    share_type_id\u003dNone, usages\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f201791_3c9e5054","line":94,"range":{"start_line":87,"start_character":0,"end_line":94,"end_character":63},"in_reply_to":"5f201791_e4464422","updated":"2017-06-22 13:44:26.000000000","message":"I don\u0027t understand; of course our APIs are not perfect. But people typically don\u0027t write one-off tools around our APIs, if there\u0027s a script that interacts with multiple manila installations, each at a different release, the script will experience a difference in behavior against these installations: that\u0027s my point.\n\nI am for \"fixing\" this API. However, you\u0027re only doing it for the two new fields... I can still send garbage that\u0027s not the two fields and the response is the same, silently ignore.. So, I don\u0027t see your point. What\u0027s the reason for doing this special casing? If you\u0027d like we should add allowed_quota_classes and do this correctly. Then, you can start returning 400 for all garbage as it makes sense and document this behavior in the API reference.","commit_id":"97cd32be30849bae27a922de8e7088847280e6c0"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"aa8b934f3015e98139ea1f9755366dbc6d6275d7","unresolved":false,"context_lines":[{"line_number":84,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    @staticmethod"},{"line_number":87,"context_line":"    def _ensure_share_group_related_args_are_absent(body):"},{"line_number":88,"context_line":"        body \u003d body.get(\u0027quota_set\u0027, body)"},{"line_number":89,"context_line":"        for key in (\u0027share_groups\u0027, \u0027share_group_snapshots\u0027):"},{"line_number":90,"context_line":"            if body.get(key):"},{"line_number":91,"context_line":"                msg \u003d _(\"\u0027%(key)s\u0027 key is not supported by this microversion. \""},{"line_number":92,"context_line":"                        \"Use 2.36 or greater microversion to be able \""},{"line_number":93,"context_line":"                        \"to use \u0027%(key)s\u0027 quotas.\") % {\"key\": key}"},{"line_number":94,"context_line":"                raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def _get_quotas(self, context, project_id, user_id\u003dNone,"},{"line_number":97,"context_line":"                    share_type_id\u003dNone, usages\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f201791_e4464422","line":94,"range":{"start_line":87,"start_character":0,"end_line":94,"end_character":63},"in_reply_to":"7f231b9d_90610c15","updated":"2017-06-20 15:19:23.000000000","message":"\"Garbage\" and \"new logic\" that is SUPPORTED by new API is two different things. Implementing something new, we should make sure that new logic is not open to old API. So, I disagree.","commit_id":"97cd32be30849bae27a922de8e7088847280e6c0"}],"manila/quota.py":[{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"66af58ad14c94376434ea599db9622b63d5ada00","unresolved":false,"context_lines":[{"line_number":51,"context_line":"               help\u003d\u0027Number of share groups allowed.\u0027),"},{"line_number":52,"context_line":"    cfg.IntOpt(\u0027quota_share_group_snapshots\u0027,"},{"line_number":53,"context_line":"               default\u003d50,"},{"line_number":54,"context_line":"               help\u003d\u0027Number of share snapshots allowed.\u0027),"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    cfg.IntOpt(\u0027reservation_expire\u0027,"},{"line_number":57,"context_line":"               default\u003d86400,"}],"source_content_type":"text/x-python","patch_set":12,"id":"ff346bd7_000d4e36","line":54,"range":{"start_line":54,"start_character":15,"end_line":54,"end_character":56},"updated":"2017-07-25 20:46:07.000000000","message":"Number of share group snapshots allowed","commit_id":"d2afd6f7ecc96a83b67d56d8a173530af1a66e7e"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"bde7490161dc27108ab89da8e244c9fbb3846d05","unresolved":false,"context_lines":[{"line_number":51,"context_line":"               help\u003d\u0027Number of share groups allowed.\u0027),"},{"line_number":52,"context_line":"    cfg.IntOpt(\u0027quota_share_group_snapshots\u0027,"},{"line_number":53,"context_line":"               default\u003d50,"},{"line_number":54,"context_line":"               help\u003d\u0027Number of share snapshots allowed.\u0027),"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    cfg.IntOpt(\u0027reservation_expire\u0027,"},{"line_number":57,"context_line":"               default\u003d86400,"}],"source_content_type":"text/x-python","patch_set":12,"id":"ff346bd7_0e15719c","line":54,"range":{"start_line":54,"start_character":15,"end_line":54,"end_character":56},"in_reply_to":"ff346bd7_000d4e36","updated":"2017-07-26 08:30:32.000000000","message":"Done","commit_id":"d2afd6f7ecc96a83b67d56d8a173530af1a66e7e"}],"manila/share_group/api.py":[{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"0ac7ccaafdc40ff35477aeabfe0bf4d92b623c21","unresolved":false,"context_lines":[{"line_number":139,"context_line":"            raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"        try:"},{"line_number":142,"context_line":"            reservations \u003d QUOTAS.reserve(context, share_groups\u003d1)"},{"line_number":143,"context_line":"        except exception.OverQuota as e:"},{"line_number":144,"context_line":"            overs \u003d e.kwargs[\u0027overs\u0027]"},{"line_number":145,"context_line":"            usages \u003d e.kwargs[\u0027usages\u0027]"}],"source_content_type":"text/x-python","patch_set":12,"id":"ff346bd7_a4433daf","line":142,"range":{"start_line":142,"start_character":49,"end_line":142,"end_character":51},"updated":"2017-07-25 17:20:46.000000000","message":"Do we need to add user id and project it?\nIf we don\u0027t add it, how to get the real share groups count by user id or project it?","commit_id":"d2afd6f7ecc96a83b67d56d8a173530af1a66e7e"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"bde7490161dc27108ab89da8e244c9fbb3846d05","unresolved":false,"context_lines":[{"line_number":139,"context_line":"            raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"        try:"},{"line_number":142,"context_line":"            reservations \u003d QUOTAS.reserve(context, share_groups\u003d1)"},{"line_number":143,"context_line":"        except exception.OverQuota as e:"},{"line_number":144,"context_line":"            overs \u003d e.kwargs[\u0027overs\u0027]"},{"line_number":145,"context_line":"            usages \u003d e.kwargs[\u0027usages\u0027]"}],"source_content_type":"text/x-python","patch_set":12,"id":"ff346bd7_6ec75d47","line":142,"range":{"start_line":142,"start_character":49,"end_line":142,"end_character":51},"in_reply_to":"ff346bd7_a4433daf","updated":"2017-07-26 08:30:32.000000000","message":"It is taken from context: https://github.com/openstack/manila/blob/05c42ecf/manila/quota.py#L423-L427","commit_id":"d2afd6f7ecc96a83b67d56d8a173530af1a66e7e"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"0ccaa00b6538f62b5ba9cb41698dfe729b9cc178","unresolved":false,"context_lines":[{"line_number":337,"context_line":"                raise exception.InvalidShareGroup(reason\u003dmsg)"},{"line_number":338,"context_line":""},{"line_number":339,"context_line":"        try:"},{"line_number":340,"context_line":"            reservations \u003d QUOTAS.reserve(context, share_group_snapshots\u003d1)"},{"line_number":341,"context_line":"        except exception.OverQuota as e:"},{"line_number":342,"context_line":"            overs \u003d e.kwargs[\u0027overs\u0027]"},{"line_number":343,"context_line":"            usages \u003d e.kwargs[\u0027usages\u0027]"}],"source_content_type":"text/x-python","patch_set":12,"id":"ff346bd7_24ed0d8b","line":340,"range":{"start_line":340,"start_character":49,"end_line":340,"end_character":51},"updated":"2017-07-25 17:28:29.000000000","message":"above","commit_id":"d2afd6f7ecc96a83b67d56d8a173530af1a66e7e"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"bde7490161dc27108ab89da8e244c9fbb3846d05","unresolved":false,"context_lines":[{"line_number":337,"context_line":"                raise exception.InvalidShareGroup(reason\u003dmsg)"},{"line_number":338,"context_line":""},{"line_number":339,"context_line":"        try:"},{"line_number":340,"context_line":"            reservations \u003d QUOTAS.reserve(context, share_group_snapshots\u003d1)"},{"line_number":341,"context_line":"        except exception.OverQuota as e:"},{"line_number":342,"context_line":"            overs \u003d e.kwargs[\u0027overs\u0027]"},{"line_number":343,"context_line":"            usages \u003d e.kwargs[\u0027usages\u0027]"}],"source_content_type":"text/x-python","patch_set":12,"id":"ff346bd7_0ede9110","line":340,"range":{"start_line":340,"start_character":49,"end_line":340,"end_character":51},"in_reply_to":"ff346bd7_24ed0d8b","updated":"2017-07-26 08:30:32.000000000","message":"It is taken from context: https://github.com/openstack/manila/blob/05c42ecf/manila/quota.py#L423-L427","commit_id":"d2afd6f7ecc96a83b67d56d8a173530af1a66e7e"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"0ccaa00b6538f62b5ba9cb41698dfe729b9cc178","unresolved":false,"context_lines":[{"line_number":350,"context_line":"                msg \u003d (\"Quota exceeded for %(s_pid)s. (%(d_consumed)d of \""},{"line_number":351,"context_line":"                       \"%(d_quota)d already consumed).\")"},{"line_number":352,"context_line":"                LOG.warning(msg, {"},{"line_number":353,"context_line":"                    \u0027s_pid\u0027: context.project_id,"},{"line_number":354,"context_line":"                    \u0027d_consumed\u0027: _consumed(\u0027share_group_snapshots\u0027),"},{"line_number":355,"context_line":"                    \u0027d_quota\u0027: quotas[\u0027share_group_snapshots\u0027],"},{"line_number":356,"context_line":"                })"},{"line_number":357,"context_line":"            raise exception.ShareGroupSnapshotsLimitExceeded()"}],"source_content_type":"text/x-python","patch_set":12,"id":"ff346bd7_64c1d5e4","line":354,"range":{"start_line":353,"start_character":48,"end_line":354,"end_character":20},"updated":"2017-07-25 17:28:29.000000000","message":"Could we add user id in this?","commit_id":"d2afd6f7ecc96a83b67d56d8a173530af1a66e7e"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"bde7490161dc27108ab89da8e244c9fbb3846d05","unresolved":false,"context_lines":[{"line_number":350,"context_line":"                msg \u003d (\"Quota exceeded for %(s_pid)s. (%(d_consumed)d of \""},{"line_number":351,"context_line":"                       \"%(d_quota)d already consumed).\")"},{"line_number":352,"context_line":"                LOG.warning(msg, {"},{"line_number":353,"context_line":"                    \u0027s_pid\u0027: context.project_id,"},{"line_number":354,"context_line":"                    \u0027d_consumed\u0027: _consumed(\u0027share_group_snapshots\u0027),"},{"line_number":355,"context_line":"                    \u0027d_quota\u0027: quotas[\u0027share_group_snapshots\u0027],"},{"line_number":356,"context_line":"                })"},{"line_number":357,"context_line":"            raise exception.ShareGroupSnapshotsLimitExceeded()"}],"source_content_type":"text/x-python","patch_set":12,"id":"ff346bd7_2ee03596","line":354,"range":{"start_line":353,"start_character":48,"end_line":354,"end_character":20},"in_reply_to":"ff346bd7_64c1d5e4","updated":"2017-07-26 08:30:32.000000000","message":"Done","commit_id":"d2afd6f7ecc96a83b67d56d8a173530af1a66e7e"}]}
