)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"23b5e9ac7ecc08ae962e209e789e2eb9be881bf4","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Cleanup unused only_quotas path in quota_destroy_all_by_project"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"As requested in the TODO above, the only_quotas\u003dFalse path was removed from the quota_destroy_all_by_project function since it was unused code."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: I1089ba70f84d587a4b69c34ba0f7808f81219867"},{"line_number":12,"context_line":"Signed-off-by: Eduardo-Morais \u003ceduardo.henrique.lima.morais@gmail.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"caf22aed_1511eb73","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":143},"updated":"2026-09-14 18:01:55.000000000","message":"Please wrap lines at 72 characters.\n\nhttps://wiki.openstack.org/wiki/GitCommitMessages#Summary_of_Git_commit_message_structure","commit_id":"9d58e8a12c0122d13384bcc5300865edcff0d811"},{"author":{"_account_id":38797,"name":"Eduardo Henrique Lima de Morais","display_name":"Eduardo Morais","email":"eduardo.henrique.lima.morais@gmail.com","username":"Eduardo-Morais"},"change_message_id":"2b9cbb25b82e569c5724c32f93e99bf52fd0bd3a","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Cleanup unused only_quotas path in quota_destroy_all_by_project"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"As requested in the TODO above, the only_quotas\u003dFalse path was removed from the quota_destroy_all_by_project function since it was unused code."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: I1089ba70f84d587a4b69c34ba0f7808f81219867"},{"line_number":12,"context_line":"Signed-off-by: Eduardo-Morais \u003ceduardo.henrique.lima.morais@gmail.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"cb2946c0_23223e1e","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":143},"in_reply_to":"caf22aed_1511eb73","updated":"2026-09-18 17:31:33.000000000","message":"Done","commit_id":"9d58e8a12c0122d13384bcc5300865edcff0d811"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"5b6dd76279fbdf0f8a508325852fde9f4ff7352e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"8f4275f9_5eac22e4","updated":"2026-09-14 15:33:56.000000000","message":"Thanks for proposing this. Please find my comments inline.","commit_id":"dd5c4e0c7bf3b32e071838a49272d0299c896305"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"23b5e9ac7ecc08ae962e209e789e2eb9be881bf4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"7ae3f898_3185956a","updated":"2026-09-14 18:01:55.000000000","message":"According to results posted by CI, you may have to update unit tests, too.","commit_id":"9d58e8a12c0122d13384bcc5300865edcff0d811"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"373b1e0c6346fa639100c2a703ab4b532fb3dee5","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"3ffa41bb_58aca2c1","updated":"2026-09-16 13:50:48.000000000","message":"The failure in unit tests is actually caused by this change. You have to update the existing test case according to this change.\n\n```\nTraceback (most recent call last):\n  File \"/home/zuul/src/opendev.org/openstack/cinder/cinder/tests/unit/test_db_api.py\", line 3092, in test_quota_destroy_sqlalchemy_all_by_project_\n    sqlalchemy_api.quota_destroy_all_by_project(self.ctxt, project,\n  File \"/home/zuul/src/opendev.org/openstack/cinder/cinder/db/api.py\", line 228, in wrapper\n    return f(*args, **kwargs)\n           ^^^^^^^^^^^^^^^^^^\n  File \"/home/zuul/src/opendev.org/openstack/cinder/.tox/py311/lib/python3.11/site-packages/oslo_db/api.py\", line 144, in wrapper\n    with excutils.save_and_reraise_exception() as ectxt:\n  File \"/home/zuul/src/opendev.org/openstack/cinder/.tox/py311/lib/python3.11/site-packages/oslo_utils/excutils.py\", line 260, in __exit__\n    self.force_reraise()\n  File \"/home/zuul/src/opendev.org/openstack/cinder/.tox/py311/lib/python3.11/site-packages/oslo_utils/excutils.py\", line 226, in force_reraise\n    raise self.value\n  File \"/home/zuul/src/opendev.org/openstack/cinder/.tox/py311/lib/python3.11/site-packages/oslo_db/api.py\", line 142, in wrapper\n    return f(*args, **kwargs)\n           ^^^^^^^^^^^^^^^^^^\n  File \"/home/zuul/src/opendev.org/openstack/cinder/.tox/py311/lib/python3.11/site-packages/oslo_db/sqlalchemy/enginefacade.py\", line 1159, in wrapper\n    return fn(*args, **kwargs)\n           ^^^^^^^^^^^^^^^^^^^\nTypeError: quota_destroy_all_by_project() got an unexpected keyword argument \u0027only_quotas\u0027\n```","commit_id":"98b3a57924eee310562647a57d7c223df1f274f7"},{"author":{"_account_id":38797,"name":"Eduardo Henrique Lima de Morais","display_name":"Eduardo Morais","email":"eduardo.henrique.lima.morais@gmail.com","username":"Eduardo-Morais"},"change_message_id":"80dced2e717cb4b40af327c8cc321424d87b844e","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"6ef16f63_b9be332c","in_reply_to":"12be5426_6909a861","updated":"2026-09-16 15:28:52.000000000","message":"Since the function no longer deletes QuotaUsage and Reservation, I updated the test to assert against expected_usage at the end, rather than expecting an empty result.\n\nI ran the tests again after the changes to test_db_api, and they passed this time. Thanks for the review!","commit_id":"98b3a57924eee310562647a57d7c223df1f274f7"},{"author":{"_account_id":38797,"name":"Eduardo Henrique Lima de Morais","display_name":"Eduardo Morais","email":"eduardo.henrique.lima.morais@gmail.com","username":"Eduardo-Morais"},"change_message_id":"6f8428267cf88db102d8bb4161156f002dc4df00","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"6f35e7af_d7325be7","in_reply_to":"3ffa41bb_58aca2c1","updated":"2026-09-16 14:37:08.000000000","message":"I removed the old only_quota parameter in the file where I tested this. Would this be the right way to resolve it?","commit_id":"98b3a57924eee310562647a57d7c223df1f274f7"},{"author":{"_account_id":38797,"name":"Eduardo Henrique Lima de Morais","display_name":"Eduardo Morais","email":"eduardo.henrique.lima.morais@gmail.com","username":"Eduardo-Morais"},"change_message_id":"f3c81652e6b467ddfafcc4ea2e7425caa414daa3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"43b8ad2d_441b15dd","in_reply_to":"6ef16f63_b9be332c","updated":"2026-09-18 13:38:04.000000000","message":"Done","commit_id":"98b3a57924eee310562647a57d7c223df1f274f7"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"916d673eff0f761691137bcb88fd6eabb5bedcf1","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"12be5426_6909a861","in_reply_to":"6f35e7af_d7325be7","updated":"2026-09-16 14:55:24.000000000","message":"I\u0027d strongly suggest reading the test code to find out what\u0027s are asserted there... The existing test code used only_quota\u003dFalse and asserted both quota and quota usage are deleted. With this change only quota is purged so unless you update the assertion the test may not pass.\n\nPlease run these tests in your local env by `tox -e py3` (or `tox -e py313` in case you run tests on specific python version) to check whether the test passes locally.","commit_id":"98b3a57924eee310562647a57d7c223df1f274f7"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"fa966f92f2af7ec12c88a9c4b62913ef21d0976d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"5328365c_991245c6","updated":"2026-09-18 16:01:17.000000000","message":"Hey Eduardo, thanks for helping with this. I added an improvement suggestion in line","commit_id":"28f0021b705d5e167bd35bc654156a26162445f9"}],"cinder/db/api.py":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"5b6dd76279fbdf0f8a508325852fde9f4ff7352e","unresolved":true,"context_lines":[{"line_number":1898,"context_line":"@require_context"},{"line_number":1899,"context_line":"@oslo_db_api.wrap_db_retry(max_retries\u003d5, retry_on_deadlock\u003dTrue)"},{"line_number":1900,"context_line":"@main_context_manager.writer"},{"line_number":1901,"context_line":"def quota_destroy_all_by_project(context, project_id):"},{"line_number":1902,"context_line":"    \"\"\"Destroy all quotas associated with a project."},{"line_number":1903,"context_line":""},{"line_number":1904,"context_line":"    This includes limit quotas, usage quotas and reservation quotas."}],"source_content_type":"text/x-python","patch_set":2,"id":"b23dcba9_ff3aa825","line":1901,"range":{"start_line":1901,"start_character":42,"end_line":1901,"end_character":52},"updated":"2026-09-14 15:33:56.000000000","message":"You should also update quota_destroy_by_project . Also, that method expects only_quotas\u003dTrue, which is broken by the current change.","commit_id":"dd5c4e0c7bf3b32e071838a49272d0299c896305"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"373b1e0c6346fa639100c2a703ab4b532fb3dee5","unresolved":false,"context_lines":[{"line_number":1898,"context_line":"@require_context"},{"line_number":1899,"context_line":"@oslo_db_api.wrap_db_retry(max_retries\u003d5, retry_on_deadlock\u003dTrue)"},{"line_number":1900,"context_line":"@main_context_manager.writer"},{"line_number":1901,"context_line":"def quota_destroy_all_by_project(context, project_id):"},{"line_number":1902,"context_line":"    \"\"\"Destroy all quotas associated with a project."},{"line_number":1903,"context_line":""},{"line_number":1904,"context_line":"    This includes limit quotas, usage quotas and reservation quotas."}],"source_content_type":"text/x-python","patch_set":2,"id":"1dbcae94_fe3deba3","line":1901,"range":{"start_line":1901,"start_character":42,"end_line":1901,"end_character":52},"in_reply_to":"0b2908de_f367c751","updated":"2026-09-16 13:50:48.000000000","message":"The current update looks correct.","commit_id":"dd5c4e0c7bf3b32e071838a49272d0299c896305"},{"author":{"_account_id":38797,"name":"Eduardo Henrique Lima de Morais","display_name":"Eduardo Morais","email":"eduardo.henrique.lima.morais@gmail.com","username":"Eduardo-Morais"},"change_message_id":"8e5a46ea3d1c65cac57adfe770405e4b4cdaad30","unresolved":false,"context_lines":[{"line_number":1898,"context_line":"@require_context"},{"line_number":1899,"context_line":"@oslo_db_api.wrap_db_retry(max_retries\u003d5, retry_on_deadlock\u003dTrue)"},{"line_number":1900,"context_line":"@main_context_manager.writer"},{"line_number":1901,"context_line":"def quota_destroy_all_by_project(context, project_id):"},{"line_number":1902,"context_line":"    \"\"\"Destroy all quotas associated with a project."},{"line_number":1903,"context_line":""},{"line_number":1904,"context_line":"    This includes limit quotas, usage quotas and reservation quotas."}],"source_content_type":"text/x-python","patch_set":2,"id":"0b2908de_f367c751","line":1901,"range":{"start_line":1901,"start_character":42,"end_line":1901,"end_character":52},"in_reply_to":"122408ac_e2a681fe","updated":"2026-09-15 19:02:43.000000000","message":"In this case, I wouldn\u0027t need to use the variable validating as true, right? Since there would only be the valid path, I can delete the if and everything that comes after it, because the if was used for an early return, and whatever came after the if was the false path.","commit_id":"dd5c4e0c7bf3b32e071838a49272d0299c896305"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"23b5e9ac7ecc08ae962e209e789e2eb9be881bf4","unresolved":true,"context_lines":[{"line_number":1898,"context_line":"@require_context"},{"line_number":1899,"context_line":"@oslo_db_api.wrap_db_retry(max_retries\u003d5, retry_on_deadlock\u003dTrue)"},{"line_number":1900,"context_line":"@main_context_manager.writer"},{"line_number":1901,"context_line":"def quota_destroy_all_by_project(context, project_id):"},{"line_number":1902,"context_line":"    \"\"\"Destroy all quotas associated with a project."},{"line_number":1903,"context_line":""},{"line_number":1904,"context_line":"    This includes limit quotas, usage quotas and reservation quotas."}],"source_content_type":"text/x-python","patch_set":2,"id":"122408ac_e2a681fe","line":1901,"range":{"start_line":1901,"start_character":42,"end_line":1901,"end_character":52},"in_reply_to":"b23dcba9_ff3aa825","updated":"2026-09-14 18:01:55.000000000","message":"You are still removing the path for only_quotas\u003dTrue, not only_quotas\u003dFalse.","commit_id":"dd5c4e0c7bf3b32e071838a49272d0299c896305"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"5b6dd76279fbdf0f8a508325852fde9f4ff7352e","unresolved":true,"context_lines":[{"line_number":1906,"context_line":""},{"line_number":1907,"context_line":"    :param context: The request context, for access checks."},{"line_number":1908,"context_line":"    :param project_id: The ID of the project being deleted."},{"line_number":1909,"context_line":"    :param only_quotas: Only delete limit quotas, leave other types intact."},{"line_number":1910,"context_line":"    \"\"\""},{"line_number":1911,"context_line":"    model_query(context, models.Quota).filter_by(project_id\u003dproject_id).update("},{"line_number":1912,"context_line":"        models.Quota.delete_values()"}],"source_content_type":"text/x-python","patch_set":2,"id":"c3cbc32e_b94f01df","line":1909,"range":{"start_line":1909,"start_character":11,"end_line":1909,"end_character":22},"updated":"2026-09-14 15:33:56.000000000","message":"this should be updated","commit_id":"dd5c4e0c7bf3b32e071838a49272d0299c896305"},{"author":{"_account_id":38797,"name":"Eduardo Henrique Lima de Morais","display_name":"Eduardo Morais","email":"eduardo.henrique.lima.morais@gmail.com","username":"Eduardo-Morais"},"change_message_id":"8e5a46ea3d1c65cac57adfe770405e4b4cdaad30","unresolved":false,"context_lines":[{"line_number":1906,"context_line":""},{"line_number":1907,"context_line":"    :param context: The request context, for access checks."},{"line_number":1908,"context_line":"    :param project_id: The ID of the project being deleted."},{"line_number":1909,"context_line":"    :param only_quotas: Only delete limit quotas, leave other types intact."},{"line_number":1910,"context_line":"    \"\"\""},{"line_number":1911,"context_line":"    model_query(context, models.Quota).filter_by(project_id\u003dproject_id).update("},{"line_number":1912,"context_line":"        models.Quota.delete_values()"}],"source_content_type":"text/x-python","patch_set":2,"id":"2d96bb02_0ca968bb","line":1909,"range":{"start_line":1909,"start_character":11,"end_line":1909,"end_character":22},"in_reply_to":"c3cbc32e_b94f01df","updated":"2026-09-15 19:02:43.000000000","message":"Done","commit_id":"dd5c4e0c7bf3b32e071838a49272d0299c896305"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"fa966f92f2af7ec12c88a9c4b62913ef21d0976d","unresolved":true,"context_lines":[{"line_number":1902,"context_line":"    \"\"\"Destroy all quotas associated with a project."},{"line_number":1903,"context_line":""},{"line_number":1904,"context_line":"    This includes limit quotas, usage quotas and reservation quotas."},{"line_number":1905,"context_line":"    Optionally can only remove limit quotas and leave other types as they are."},{"line_number":1906,"context_line":""},{"line_number":1907,"context_line":"    :param context: The request context, for access checks."},{"line_number":1908,"context_line":"    :param project_id: The ID of the project being deleted."}],"source_content_type":"text/x-python","patch_set":6,"id":"99c1b5ba_7f59725a","line":1905,"range":{"start_line":1905,"start_character":4,"end_line":1905,"end_character":78},"updated":"2026-09-18 16:01:17.000000000","message":"Remove this line","commit_id":"28f0021b705d5e167bd35bc654156a26162445f9"},{"author":{"_account_id":38797,"name":"Eduardo Henrique Lima de Morais","display_name":"Eduardo Morais","email":"eduardo.henrique.lima.morais@gmail.com","username":"Eduardo-Morais"},"change_message_id":"2b9cbb25b82e569c5724c32f93e99bf52fd0bd3a","unresolved":false,"context_lines":[{"line_number":1902,"context_line":"    \"\"\"Destroy all quotas associated with a project."},{"line_number":1903,"context_line":""},{"line_number":1904,"context_line":"    This includes limit quotas, usage quotas and reservation quotas."},{"line_number":1905,"context_line":"    Optionally can only remove limit quotas and leave other types as they are."},{"line_number":1906,"context_line":""},{"line_number":1907,"context_line":"    :param context: The request context, for access checks."},{"line_number":1908,"context_line":"    :param project_id: The ID of the project being deleted."}],"source_content_type":"text/x-python","patch_set":6,"id":"9ff00627_4b7be98c","line":1905,"range":{"start_line":1905,"start_character":4,"end_line":1905,"end_character":78},"in_reply_to":"99c1b5ba_7f59725a","updated":"2026-09-18 17:31:33.000000000","message":"Done","commit_id":"28f0021b705d5e167bd35bc654156a26162445f9"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"f5937edd6aeee27187066aaec8180b7ba0f223ea","unresolved":false,"context_lines":[{"line_number":1902,"context_line":"    \"\"\"Destroy all quotas associated with a project."},{"line_number":1903,"context_line":""},{"line_number":1904,"context_line":"    This includes limit quotas, usage quotas and reservation quotas."},{"line_number":1905,"context_line":"    Optionally can only remove limit quotas and leave other types as they are."},{"line_number":1906,"context_line":""},{"line_number":1907,"context_line":"    :param context: The request context, for access checks."},{"line_number":1908,"context_line":"    :param project_id: The ID of the project being deleted."}],"source_content_type":"text/x-python","patch_set":6,"id":"9f38592b_f28d1c03","line":1905,"range":{"start_line":1905,"start_character":4,"end_line":1905,"end_character":78},"in_reply_to":"9ff00627_4b7be98c","updated":"2026-09-18 17:48:59.000000000","message":"Good catch, and I think we also need to remove a wider part. Please my suggestion in a different comment.","commit_id":"28f0021b705d5e167bd35bc654156a26162445f9"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"f5937edd6aeee27187066aaec8180b7ba0f223ea","unresolved":true,"context_lines":[{"line_number":1899,"context_line":"@oslo_db_api.wrap_db_retry(max_retries\u003d5, retry_on_deadlock\u003dTrue)"},{"line_number":1900,"context_line":"@main_context_manager.writer"},{"line_number":1901,"context_line":"def quota_destroy_all_by_project(context, project_id):"},{"line_number":1902,"context_line":"    \"\"\"Destroy all quotas associated with a project."},{"line_number":1903,"context_line":""},{"line_number":1904,"context_line":"    This includes limit quotas, usage quotas and reservation quotas."},{"line_number":1905,"context_line":""},{"line_number":1906,"context_line":"    :param context: The request context, for access checks."},{"line_number":1907,"context_line":"    :param project_id: The ID of the project being deleted."}],"source_content_type":"text/x-python","patch_set":7,"id":"e6edeafa_8207a9d4","line":1904,"range":{"start_line":1902,"start_character":4,"end_line":1904,"end_character":68},"updated":"2026-09-18 17:48:59.000000000","message":"```suggestion\n    \"\"\"Destroy quotas associated with a project.\n```","commit_id":"bac97ca880cdcc2078e833553e6073e8df9189b5"},{"author":{"_account_id":38797,"name":"Eduardo Henrique Lima de Morais","display_name":"Eduardo Morais","email":"eduardo.henrique.lima.morais@gmail.com","username":"Eduardo-Morais"},"change_message_id":"a5f9186ad4a952f8bcd95e506cd4ce1768754449","unresolved":false,"context_lines":[{"line_number":1899,"context_line":"@oslo_db_api.wrap_db_retry(max_retries\u003d5, retry_on_deadlock\u003dTrue)"},{"line_number":1900,"context_line":"@main_context_manager.writer"},{"line_number":1901,"context_line":"def quota_destroy_all_by_project(context, project_id):"},{"line_number":1902,"context_line":"    \"\"\"Destroy all quotas associated with a project."},{"line_number":1903,"context_line":""},{"line_number":1904,"context_line":"    This includes limit quotas, usage quotas and reservation quotas."},{"line_number":1905,"context_line":""},{"line_number":1906,"context_line":"    :param context: The request context, for access checks."},{"line_number":1907,"context_line":"    :param project_id: The ID of the project being deleted."}],"source_content_type":"text/x-python","patch_set":7,"id":"f67c8331_ce52237d","line":1904,"range":{"start_line":1902,"start_character":4,"end_line":1904,"end_character":68},"in_reply_to":"e6edeafa_8207a9d4","updated":"2026-09-18 18:37:25.000000000","message":"Done","commit_id":"bac97ca880cdcc2078e833553e6073e8df9189b5"}]}
