)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"3147e1a2450a70180647c6fa195310320967b3f2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"4cc9db18_76c2ae9c","updated":"2022-06-01 18:36:36.000000000","message":"Looks correct at first pass, but still reviewing it.\nPlease, rebase and fix merge conflicts. Also add a new release note for the new feature added.|\nThank you all for this fix/enhancement o/","commit_id":"87a5fbf4ee05dfe15218e9fe681f005d8ded66f0"},{"author":{"_account_id":33648,"name":"Nahim Alves de Souza","email":"nahimsouza@outlook.com","username":"nahimsouza"},"change_message_id":"5ffe72a3b4cde436820128d9b471def1e1db6632","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"0d772a9a_8014de52","updated":"2022-04-07 17:13:43.000000000","message":"Thanks for working on this patch. Code and UTs look good to me.","commit_id":"87a5fbf4ee05dfe15218e9fe681f005d8ded66f0"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"9f5722f65cedb8a3b64eaad5e9cae99c3d1e3357","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"9f88e175_411ec398","updated":"2022-08-04 16:59:49.000000000","message":"Thanks for working on this. I added a few comments.","commit_id":"974e58127e9acb13e63d83ea571b5b663e0a3308"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"8f600438b804b16ad083fd217e3850d99da9359e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"559e404c_866c5007","updated":"2022-08-03 13:21:12.000000000","message":"thanks all, please, review my comments.","commit_id":"974e58127e9acb13e63d83ea571b5b663e0a3308"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"cb094a14d940512b6e225d5378d6ed2625e19313","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"faa9b6d7_6ac154e5","updated":"2022-08-15 06:18:53.000000000","message":"thanks for your change!\n1: you need add releasenote\n2: you need add api doc, in manila/api-ref/source/quota-sets.inc","commit_id":"974e58127e9acb13e63d83ea571b5b663e0a3308"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"b448f6be76dfd65bb0a0455a8597d296da3015ec","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"4a229fa6_96fb7e4e","in_reply_to":"4dbd19ec_c5bce5a4","updated":"2022-10-08 08:43:56.000000000","message":"not yet, need to add.","commit_id":"974e58127e9acb13e63d83ea571b5b663e0a3308"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"bf5efafc3b31aaa7fb26650dcc549e57dddba7a1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"4dbd19ec_c5bce5a4","in_reply_to":"faa9b6d7_6ac154e5","updated":"2022-08-18 11:30:03.000000000","message":"were those points solved ?","commit_id":"974e58127e9acb13e63d83ea571b5b663e0a3308"},{"author":{"_account_id":33986,"name":"Lucas Morais de oliveira","email":"lucasmoliveira059@gmail.com","username":"lucasmoliveira059"},"change_message_id":"254f95c3b96c6598d493f8f4f26352d890d02be6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"2298a8e0_9b3c181e","updated":"2022-08-16 11:27:26.000000000","message":"Thank you all for the reviews. I hope the patch 6 fixed the dependencies","commit_id":"b9e8f5da316ac1d7b94b39a8c0693d4e21a6383c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"d374e59dc7fb04584c3bd85bdd83858b3bbc5931","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"4257e3b6_9270bf08","updated":"2022-08-19 21:24:02.000000000","message":"Lucas and all working on that, I added more points regarding the approach. The main point is the returned object. It is a dictionary containing the user, who has quota set, and a value. I cannot understand the meaning of this value. It can be \"shares\", \"snapshots\" or any quota resource. Also, those values are summed, why is it required ? Summing quota number of shares with quota number of snaphots, for instance..","commit_id":"6fd35b1054c039bb7d3a0352f7666d378263ad33"},{"author":{"_account_id":33986,"name":"Lucas Morais de oliveira","email":"lucasmoliveira059@gmail.com","username":"lucasmoliveira059"},"change_message_id":"9d0d644d1c3d24398d634372bd810ca32a8d6901","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"45efade8_7e62a196","updated":"2022-08-17 12:07:44.000000000","message":"recheck","commit_id":"6fd35b1054c039bb7d3a0352f7666d378263ad33"},{"author":{"_account_id":33986,"name":"Lucas Morais de oliveira","email":"lucasmoliveira059@gmail.com","username":"lucasmoliveira059"},"change_message_id":"3a997affcc94b1b3a0826e7642ccbde212cda447","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"a4657713_6024e179","updated":"2022-08-16 17:58:02.000000000","message":"recheck","commit_id":"6fd35b1054c039bb7d3a0352f7666d378263ad33"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"b448f6be76dfd65bb0a0455a8597d296da3015ec","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"a640cc43_dc587d97","updated":"2022-10-08 08:43:56.000000000","message":"thanks for your change, please take look at my comments inline.","commit_id":"6fd35b1054c039bb7d3a0352f7666d378263ad33"}],"manila/api/openstack/api_version_request.py":[{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"8f600438b804b16ad083fd217e3850d99da9359e","unresolved":true,"context_lines":[{"line_number":186,"context_line":"             availability zone. Also, users can add subnets for an in-use share"},{"line_number":187,"context_line":"             network."},{"line_number":188,"context_line":"    * 2.71 - Added \u0027updated_at\u0027 field in share instance show API output."},{"line_number":189,"context_line":"             and list user quotas of a project."},{"line_number":190,"context_line":"\"\"\""},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"# The minimum and maximum versions of the API supported"}],"source_content_type":"text/x-python","patch_set":4,"id":"49358102_46401761","line":189,"range":{"start_line":189,"start_character":13,"end_line":189,"end_character":47},"updated":"2022-08-03 13:21:12.000000000","message":"why is it not bumping the version to create this new functionality ?","commit_id":"974e58127e9acb13e63d83ea571b5b663e0a3308"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"9f5722f65cedb8a3b64eaad5e9cae99c3d1e3357","unresolved":true,"context_lines":[{"line_number":186,"context_line":"             availability zone. Also, users can add subnets for an in-use share"},{"line_number":187,"context_line":"             network."},{"line_number":188,"context_line":"    * 2.71 - Added \u0027updated_at\u0027 field in share instance show API output."},{"line_number":189,"context_line":"             and list user quotas of a project."},{"line_number":190,"context_line":"\"\"\""},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"# The minimum and maximum versions of the API supported"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf78bfd8_1abe7dec","line":189,"range":{"start_line":189,"start_character":13,"end_line":189,"end_character":47},"in_reply_to":"49358102_46401761","updated":"2022-08-04 16:59:49.000000000","message":"+1, you need to bump microversion since you are ading a new api","commit_id":"974e58127e9acb13e63d83ea571b5b663e0a3308"},{"author":{"_account_id":33986,"name":"Lucas Morais de oliveira","email":"lucasmoliveira059@gmail.com","username":"lucasmoliveira059"},"change_message_id":"254f95c3b96c6598d493f8f4f26352d890d02be6","unresolved":false,"context_lines":[{"line_number":186,"context_line":"             availability zone. Also, users can add subnets for an in-use share"},{"line_number":187,"context_line":"             network."},{"line_number":188,"context_line":"    * 2.71 - Added \u0027updated_at\u0027 field in share instance show API output."},{"line_number":189,"context_line":"             and list user quotas of a project."},{"line_number":190,"context_line":"\"\"\""},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"# The minimum and maximum versions of the API supported"}],"source_content_type":"text/x-python","patch_set":4,"id":"ad585ded_0184ba14","line":189,"range":{"start_line":189,"start_character":13,"end_line":189,"end_character":47},"in_reply_to":"bf78bfd8_1abe7dec","updated":"2022-08-16 11:27:26.000000000","message":"Done","commit_id":"974e58127e9acb13e63d83ea571b5b663e0a3308"}],"manila/api/v2/quota_sets.py":[{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"9f5722f65cedb8a3b64eaad5e9cae99c3d1e3357","unresolved":true,"context_lines":[{"line_number":323,"context_line":"    Registered under API URL \u0027quota-sets\u0027."},{"line_number":324,"context_line":"    \"\"\""},{"line_number":325,"context_line":""},{"line_number":326,"context_line":"    @wsgi.Controller.api_version(\u00272.71\u0027)"},{"line_number":327,"context_line":"    def list_project_quotas(self, req, id):"},{"line_number":328,"context_line":"        return self._list_project_quotas(req, id)"},{"line_number":329,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3c760427_453aa1cd","line":326,"range":{"start_line":326,"start_character":34,"end_line":326,"end_character":38},"updated":"2022-08-04 16:59:49.000000000","message":"need to bump","commit_id":"974e58127e9acb13e63d83ea571b5b663e0a3308"},{"author":{"_account_id":33986,"name":"Lucas Morais de oliveira","email":"lucasmoliveira059@gmail.com","username":"lucasmoliveira059"},"change_message_id":"254f95c3b96c6598d493f8f4f26352d890d02be6","unresolved":false,"context_lines":[{"line_number":323,"context_line":"    Registered under API URL \u0027quota-sets\u0027."},{"line_number":324,"context_line":"    \"\"\""},{"line_number":325,"context_line":""},{"line_number":326,"context_line":"    @wsgi.Controller.api_version(\u00272.71\u0027)"},{"line_number":327,"context_line":"    def list_project_quotas(self, req, id):"},{"line_number":328,"context_line":"        return self._list_project_quotas(req, id)"},{"line_number":329,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"f25f25dc_de9f8111","line":326,"range":{"start_line":326,"start_character":34,"end_line":326,"end_character":38},"in_reply_to":"3c760427_453aa1cd","updated":"2022-08-16 11:27:26.000000000","message":"Done","commit_id":"974e58127e9acb13e63d83ea571b5b663e0a3308"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"b448f6be76dfd65bb0a0455a8597d296da3015ec","unresolved":true,"context_lines":[{"line_number":114,"context_line":"        return {k: v[\u0027limit\u0027] for k, v in values.items()}"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    @wsgi.Controller.authorize(\"list_project_quotas\")"},{"line_number":117,"context_line":"    def _list_project_quotas(self, req, id):"},{"line_number":118,"context_line":"        context \u003d req.environ[\u0027manila.context\u0027]"},{"line_number":119,"context_line":"        quotas \u003d db.quota_get_all(context, id)"},{"line_number":120,"context_line":"        return self._view_builder.list_project_user_quota(quotas)"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    @wsgi.Controller.authorize(\"show\")"},{"line_number":123,"context_line":"    def _show(self, req, id, detail\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":7,"id":"e056e923_7757653a","line":120,"range":{"start_line":117,"start_character":4,"end_line":120,"end_character":65},"updated":"2022-10-08 08:43:56.000000000","message":"in db layer, quota_get_all need project_id as parameter, Only quota information for the specified project is returned, However, we need quota information for all projects, so we need to develop a new db interface.\n\nfor example in sqlalchemy/api.py:\n@require_context\ndef project_quota_get_all(context):\n    result \u003d (model_query(context, models.ProjectUserQuota).all())\n\n    return result\n\nand here to call db.project_quota_get_all()\n    def _list_project_quotas(self, req):\n        context \u003d req.environ[\u0027manila.context\u0027]\n        quotas \u003d db.project_quota_get_all(context)\n        return self._view_builder.list_project_user_quota(quotas)","commit_id":"6fd35b1054c039bb7d3a0352f7666d378263ad33"}],"manila/api/v2/router.py":[{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"b448f6be76dfd65bb0a0455a8597d296da3015ec","unresolved":true,"context_lines":[{"line_number":116,"context_line":"                        controller\u003dself.resources[\"quota_sets\"],"},{"line_number":117,"context_line":"                        member\u003d{\"defaults\": \"GET\","},{"line_number":118,"context_line":"                                \"detail\": \"GET\","},{"line_number":119,"context_line":"                                \"list_project_quotas\": \"GET\"})"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        for path_prefix in [\u0027/{project_id}\u0027, \u0027\u0027]:"},{"line_number":122,"context_line":"            # project_id is optional"}],"source_content_type":"text/x-python","patch_set":7,"id":"3d34077b_b2eeeaf4","line":119,"range":{"start_line":119,"start_character":31,"end_line":119,"end_character":62},"updated":"2022-10-08 08:43:56.000000000","message":"list project quota is not specific to a single project. \nSo, let\u0027s go back to the way it was.","commit_id":"6fd35b1054c039bb7d3a0352f7666d378263ad33"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"b448f6be76dfd65bb0a0455a8597d296da3015ec","unresolved":true,"context_lines":[{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        for path_prefix in [\u0027/{project_id}\u0027, \u0027\u0027]:"},{"line_number":122,"context_line":"            # project_id is optional"},{"line_number":123,"context_line":"            mapper.connect(\"quota-sets\","},{"line_number":124,"context_line":"                           \"%s/quota-sets/list_project_quotas\" % path_prefix,"},{"line_number":125,"context_line":"                           controller\u003dself.resources[\"quota_sets\"],"},{"line_number":126,"context_line":"                           action\u003d\"list_project_quotas\","}],"source_content_type":"text/x-python","patch_set":7,"id":"0d608d2e_ec4b4db2","line":123,"range":{"start_line":123,"start_character":27,"end_line":123,"end_character":39},"updated":"2022-10-08 08:43:56.000000000","message":"\"list_project_quotas\"  would be better.\n\nthen the rest will be  GET  v2/quota-sets/list_project_quotas","commit_id":"6fd35b1054c039bb7d3a0352f7666d378263ad33"}],"manila/api/views/quota_sets.py":[{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"d374e59dc7fb04584c3bd85bdd83858b3bbc5931","unresolved":true,"context_lines":[{"line_number":50,"context_line":"    def list_project_user_quota(self, quotas):"},{"line_number":51,"context_line":"        view \u003d {}"},{"line_number":52,"context_line":"        for quota in quotas:"},{"line_number":53,"context_line":"            view[quota.user_id] \u003d quota.hard_limit"},{"line_number":54,"context_line":"        view[\u0027total\u0027] \u003d sum(view.values())"},{"line_number":55,"context_line":"        return {self._collection_name: view}"},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"869d9e38_b76bbdcb","line":53,"range":{"start_line":53,"start_character":11,"end_line":53,"end_character":50},"updated":"2022-08-19 21:24:02.000000000","message":"since the user may have more than one quota set, the \"view\" will just keep with the last one in the for loop. As result, the value for the user has no meaning: is it a snapshot quota ? is it a share quota ? which quota for the user is being returned ?","commit_id":"6fd35b1054c039bb7d3a0352f7666d378263ad33"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"d374e59dc7fb04584c3bd85bdd83858b3bbc5931","unresolved":true,"context_lines":[{"line_number":51,"context_line":"        view \u003d {}"},{"line_number":52,"context_line":"        for quota in quotas:"},{"line_number":53,"context_line":"            view[quota.user_id] \u003d quota.hard_limit"},{"line_number":54,"context_line":"        view[\u0027total\u0027] \u003d sum(view.values())"},{"line_number":55,"context_line":"        return {self._collection_name: view}"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    @common.ViewBuilder.versioned_method(\"2.40\")"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fe2ac6c_12af03d3","line":54,"range":{"start_line":54,"start_character":9,"end_line":54,"end_character":42},"updated":"2022-08-19 21:24:02.000000000","message":"it is summing bananas with apples: since the views is leaving the last resource for the user, the total can sum quota of shares with quota of snapshots, is it the expected behavior ?","commit_id":"6fd35b1054c039bb7d3a0352f7666d378263ad33"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"b448f6be76dfd65bb0a0455a8597d296da3015ec","unresolved":true,"context_lines":[{"line_number":52,"context_line":"        for quota in quotas:"},{"line_number":53,"context_line":"            view[quota.user_id] \u003d quota.hard_limit"},{"line_number":54,"context_line":"        view[\u0027total\u0027] \u003d sum(view.values())"},{"line_number":55,"context_line":"        return {self._collection_name: view}"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    @common.ViewBuilder.versioned_method(\"2.40\")"},{"line_number":58,"context_line":"    def add_share_group_quotas(self, context, view, quota_set):"}],"source_content_type":"text/x-python","patch_set":7,"id":"e7c0f277_33c9f0ad","line":55,"range":{"start_line":55,"start_character":39,"end_line":55,"end_character":43},"updated":"2022-10-08 08:43:56.000000000","message":"the view should be:\n{\n    project_id_1:{\n        user_id_1:{\n            shares: xxx,\n            gigabytes: xxx,\n            snapshots: xxx,\n        },\n        user_id_2:{\n            shares: xxx,\n            gigabytes: xxx,\n        }\n    },\n    project_id_2:{\n        user_id_1:{\n            shares: xxx,\n            gigabytes: xxx,\n        },\n        user_id_2:{\n            shares: xxx,\n            gigabytes: xxx,\n        }\n    }\n}","commit_id":"6fd35b1054c039bb7d3a0352f7666d378263ad33"}],"manila/policies/quota_set.py":[{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"9f5722f65cedb8a3b64eaad5e9cae99c3d1e3357","unresolved":true,"context_lines":[{"line_number":123,"context_line":"    ),"},{"line_number":124,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":125,"context_line":"        name\u003dBASE_POLICY_NAME % \u0027list_project_quotas\u0027,"},{"line_number":126,"context_line":"        check_str\u003dbase.SYSTEM_OR_PROJECT_READER,"},{"line_number":127,"context_line":"        scope_types\u003d[\u0027system\u0027, \u0027project\u0027],"},{"line_number":128,"context_line":"        description\u003d\"List all configured quotas in a project.\","},{"line_number":129,"context_line":"        operations\u003d["}],"source_content_type":"text/x-python","patch_set":4,"id":"a3a4019a_4a62b8c2","line":126,"range":{"start_line":126,"start_character":23,"end_line":126,"end_character":47},"updated":"2022-08-04 16:59:49.000000000","message":"I think that this should be SYSTEM_ADMIN, since it will return all user-ids and their quotas, right?","commit_id":"974e58127e9acb13e63d83ea571b5b663e0a3308"},{"author":{"_account_id":33986,"name":"Lucas Morais de oliveira","email":"lucasmoliveira059@gmail.com","username":"lucasmoliveira059"},"change_message_id":"254f95c3b96c6598d493f8f4f26352d890d02be6","unresolved":false,"context_lines":[{"line_number":123,"context_line":"    ),"},{"line_number":124,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":125,"context_line":"        name\u003dBASE_POLICY_NAME % \u0027list_project_quotas\u0027,"},{"line_number":126,"context_line":"        check_str\u003dbase.SYSTEM_OR_PROJECT_READER,"},{"line_number":127,"context_line":"        scope_types\u003d[\u0027system\u0027, \u0027project\u0027],"},{"line_number":128,"context_line":"        description\u003d\"List all configured quotas in a project.\","},{"line_number":129,"context_line":"        operations\u003d["}],"source_content_type":"text/x-python","patch_set":4,"id":"9c89d525_4db53bd8","line":126,"range":{"start_line":126,"start_character":23,"end_line":126,"end_character":47},"in_reply_to":"0da95d56_3ca53ad6","updated":"2022-08-16 11:27:26.000000000","message":"Done","commit_id":"974e58127e9acb13e63d83ea571b5b663e0a3308"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"cb094a14d940512b6e225d5378d6ed2625e19313","unresolved":true,"context_lines":[{"line_number":123,"context_line":"    ),"},{"line_number":124,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":125,"context_line":"        name\u003dBASE_POLICY_NAME % \u0027list_project_quotas\u0027,"},{"line_number":126,"context_line":"        check_str\u003dbase.SYSTEM_OR_PROJECT_READER,"},{"line_number":127,"context_line":"        scope_types\u003d[\u0027system\u0027, \u0027project\u0027],"},{"line_number":128,"context_line":"        description\u003d\"List all configured quotas in a project.\","},{"line_number":129,"context_line":"        operations\u003d["}],"source_content_type":"text/x-python","patch_set":4,"id":"0da95d56_3ca53ad6","line":126,"range":{"start_line":126,"start_character":23,"end_line":126,"end_character":47},"in_reply_to":"a3a4019a_4a62b8c2","updated":"2022-08-15 06:18:53.000000000","message":"+1，just like update quota and delete only system admin can do it.\nproject reader can only show it.","commit_id":"974e58127e9acb13e63d83ea571b5b663e0a3308"}]}
