)]}'
{"cinder/db/sqlalchemy/api.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"932991735be828629b78b3d3e7d8ae30f5b998c4","unresolved":true,"context_lines":[{"line_number":927,"context_line":"def quota_destroy_all_by_resource(context, resource):"},{"line_number":928,"context_line":"    session \u003d get_session()"},{"line_number":929,"context_line":"    with session.begin():"},{"line_number":930,"context_line":"        quotas \u003d _quota_get_all_by_resource(context, resource, session\u003dsession)"},{"line_number":931,"context_line":"        for quota in quotas:"},{"line_number":932,"context_line":"            quota.delete(session\u003dsession)"},{"line_number":933,"context_line":""},{"line_number":934,"context_line":""},{"line_number":935,"context_line":"###################"}],"source_content_type":"text/x-python","patch_set":2,"id":"4ab0ed4c_7d5294fb","line":932,"range":{"start_line":930,"start_character":0,"end_line":932,"end_character":41},"updated":"2021-01-14 11:14:50.000000000","message":"-1: This is too inefficient, probably better something in the lines of:\n\n    delete_values \u003d models.Quota.delete_values()\n    model_query(context, models.Quota,\n                session\u003dsession,\n                read_deleted\u003d\u0027no\u0027).filter_by(\n        resource\u003dresource).update(delete_values)","commit_id":"794062e6fa6d05bfc65555bccb2775c494e901f9"},{"author":{"_account_id":20160,"name":"haobing1","email":"bing.hao@easystack.cn","username":"haobing"},"change_message_id":"4eca77ce23220205a3769204522d99b1e5419e2a","unresolved":false,"context_lines":[{"line_number":927,"context_line":"def quota_destroy_all_by_resource(context, resource):"},{"line_number":928,"context_line":"    session \u003d get_session()"},{"line_number":929,"context_line":"    with session.begin():"},{"line_number":930,"context_line":"        quotas \u003d _quota_get_all_by_resource(context, resource, session\u003dsession)"},{"line_number":931,"context_line":"        for quota in quotas:"},{"line_number":932,"context_line":"            quota.delete(session\u003dsession)"},{"line_number":933,"context_line":""},{"line_number":934,"context_line":""},{"line_number":935,"context_line":"###################"}],"source_content_type":"text/x-python","patch_set":2,"id":"5ffa4132_61878b6e","line":932,"range":{"start_line":930,"start_character":0,"end_line":932,"end_character":41},"in_reply_to":"4ab0ed4c_7d5294fb","updated":"2021-03-16 02:41:36.000000000","message":"Done","commit_id":"794062e6fa6d05bfc65555bccb2775c494e901f9"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"932991735be828629b78b3d3e7d8ae30f5b998c4","unresolved":true,"context_lines":[{"line_number":1051,"context_line":"def quota_class_destroy_all_by_resource(context, resource):"},{"line_number":1052,"context_line":"    session \u003d get_session()"},{"line_number":1053,"context_line":"    with session.begin():"},{"line_number":1054,"context_line":"        quota_class_list \u003d _quota_class_get_all_by_resource("},{"line_number":1055,"context_line":"            context, resource, session)"},{"line_number":1056,"context_line":"        for quota_class in quota_class_list:"},{"line_number":1057,"context_line":"            quota_class.delete(session\u003dsession)"},{"line_number":1058,"context_line":""},{"line_number":1059,"context_line":""},{"line_number":1060,"context_line":"###################"},{"line_number":1061,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ef029d10_cfd9d221","line":1058,"range":{"start_line":1054,"start_character":1,"end_line":1058,"end_character":0},"updated":"2021-01-14 11:14:50.000000000","message":"-1: Same as above","commit_id":"794062e6fa6d05bfc65555bccb2775c494e901f9"},{"author":{"_account_id":20160,"name":"haobing1","email":"bing.hao@easystack.cn","username":"haobing"},"change_message_id":"4eca77ce23220205a3769204522d99b1e5419e2a","unresolved":false,"context_lines":[{"line_number":1051,"context_line":"def quota_class_destroy_all_by_resource(context, resource):"},{"line_number":1052,"context_line":"    session \u003d get_session()"},{"line_number":1053,"context_line":"    with session.begin():"},{"line_number":1054,"context_line":"        quota_class_list \u003d _quota_class_get_all_by_resource("},{"line_number":1055,"context_line":"            context, resource, session)"},{"line_number":1056,"context_line":"        for quota_class in quota_class_list:"},{"line_number":1057,"context_line":"            quota_class.delete(session\u003dsession)"},{"line_number":1058,"context_line":""},{"line_number":1059,"context_line":""},{"line_number":1060,"context_line":"###################"},{"line_number":1061,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"c24b4096_a262a844","line":1058,"range":{"start_line":1054,"start_character":1,"end_line":1058,"end_character":0},"in_reply_to":"ef029d10_cfd9d221","updated":"2021-03-16 02:41:36.000000000","message":"Done","commit_id":"794062e6fa6d05bfc65555bccb2775c494e901f9"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"932991735be828629b78b3d3e7d8ae30f5b998c4","unresolved":true,"context_lines":[{"line_number":1167,"context_line":"def quota_usage_destroy_all_by_resource(context, resource):"},{"line_number":1168,"context_line":"    session \u003d get_session()"},{"line_number":1169,"context_line":"    with session.begin():"},{"line_number":1170,"context_line":"        usages \u003d _get_quota_usages_by_resource(context, session, resource)"},{"line_number":1171,"context_line":"        for usage in usages:"},{"line_number":1172,"context_line":"            usage.delete(session\u003dsession)"},{"line_number":1173,"context_line":""},{"line_number":1174,"context_line":""},{"line_number":1175,"context_line":"@require_context"},{"line_number":1176,"context_line":"@oslo_db_api.wrap_db_retry(max_retries\u003d5, retry_on_deadlock\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":2,"id":"0530989b_49812f92","line":1173,"range":{"start_line":1170,"start_character":0,"end_line":1173,"end_character":0},"updated":"2021-01-14 11:14:50.000000000","message":"-1: Same as others","commit_id":"794062e6fa6d05bfc65555bccb2775c494e901f9"},{"author":{"_account_id":20160,"name":"haobing1","email":"bing.hao@easystack.cn","username":"haobing"},"change_message_id":"4eca77ce23220205a3769204522d99b1e5419e2a","unresolved":false,"context_lines":[{"line_number":1167,"context_line":"def quota_usage_destroy_all_by_resource(context, resource):"},{"line_number":1168,"context_line":"    session \u003d get_session()"},{"line_number":1169,"context_line":"    with session.begin():"},{"line_number":1170,"context_line":"        usages \u003d _get_quota_usages_by_resource(context, session, resource)"},{"line_number":1171,"context_line":"        for usage in usages:"},{"line_number":1172,"context_line":"            usage.delete(session\u003dsession)"},{"line_number":1173,"context_line":""},{"line_number":1174,"context_line":""},{"line_number":1175,"context_line":"@require_context"},{"line_number":1176,"context_line":"@oslo_db_api.wrap_db_retry(max_retries\u003d5, retry_on_deadlock\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":2,"id":"04a68064_f2ddaa22","line":1173,"range":{"start_line":1170,"start_character":0,"end_line":1173,"end_character":0},"in_reply_to":"0530989b_49812f92","updated":"2021-03-16 02:41:36.000000000","message":"Done","commit_id":"794062e6fa6d05bfc65555bccb2775c494e901f9"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"309235929c0e8969eab96d987325a1a6b9f0e490","unresolved":true,"context_lines":[{"line_number":4181,"context_line":"                    read_deleted\u003d\"int_no\").filter_by("},{"line_number":4182,"context_line":"            volume_type_id\u003did).soft_delete(synchronize_session\u003dFalse)"},{"line_number":4183,"context_line":"        type_postfix \u003d \u0027_\u0027 + vtype[\u0027name\u0027]"},{"line_number":4184,"context_line":"        query \u003d model_query(context, models.QuotaUsage, session\u003dsession). \\"},{"line_number":4185,"context_line":"            filter(models.QuotaUsage.resource.endswith(type_postfix))"},{"line_number":4186,"context_line":"        entity \u003d query.column_descriptions[0][\u0027entity\u0027]"},{"line_number":4187,"context_line":"        query.update({\u0027deleted\u0027: True,"},{"line_number":4188,"context_line":"                      \u0027deleted_at\u0027: utcnow,"},{"line_number":4189,"context_line":"                      \u0027updated_at\u0027: entity.updated_at}, synchronize_session\u003dFalse)"},{"line_number":4190,"context_line":""},{"line_number":4191,"context_line":"        query \u003d model_query(context, models.Quota, session\u003dsession). \\"},{"line_number":4192,"context_line":"            filter(models.Quota.resource.endswith(type_postfix))"},{"line_number":4193,"context_line":"        entity \u003d query.column_descriptions[0][\u0027entity\u0027]"},{"line_number":4194,"context_line":"        query.update({\u0027deleted\u0027: True,"},{"line_number":4195,"context_line":"                      \u0027deleted_at\u0027: utcnow,"},{"line_number":4196,"context_line":"                      \u0027updated_at\u0027: entity.updated_at}, synchronize_session\u003dFalse)"},{"line_number":4197,"context_line":""},{"line_number":4198,"context_line":"        query \u003d model_query(context, models.QuotaClass, session\u003dsession). \\"},{"line_number":4199,"context_line":"            filter(models.QuotaClass.resource.endswith(type_postfix))"},{"line_number":4200,"context_line":"        entity \u003d query.column_descriptions[0][\u0027entity\u0027]"},{"line_number":4201,"context_line":"        query.update({\u0027deleted\u0027: True,"},{"line_number":4202,"context_line":"                      \u0027deleted_at\u0027: utcnow,"},{"line_number":4203,"context_line":"                      \u0027updated_at\u0027: entity.updated_at}, synchronize_session\u003dFalse)"},{"line_number":4204,"context_line":"        # model_query(context, models.Quota, session\u003dsession). \\"},{"line_number":4205,"context_line":"        #     filter(models.QuotaUsage.resource.endswith(type_postfix)). \\"},{"line_number":4206,"context_line":"        #     update(updated_values, synchronize_session\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":7,"id":"726720ec_3f7dd9bb","line":4203,"range":{"start_line":4184,"start_character":0,"end_line":4203,"end_character":82},"updated":"2021-06-28 09:51:45.000000000","message":"nit: This looks like a good opportunity for a loop:\n\n        update \u003d {\u0027deleted\u0027: True, \u0027deleted_at\u0027: utcnow}\n        for model in (models.QuotaUsage, models.Quota, models.QuotaClass):\n            query \u003d model_query(context, model, session\u003dsession). \\\n                filter(model.resource.endswith(type_postfix))\n            entity \u003d query.column_descriptions[0][\u0027entity\u0027]\n            update[\u0027updated_at\u0027] \u003d entity.updated_at\n            query.update(update, synchronize_session\u003dFalse)","commit_id":"602dd7fc1a04d3eabf1ccc9628b9fccc1d9e6418"},{"author":{"_account_id":33642,"name":"zhuyuhao","email":"yuhao.zhu@easystack.cn","username":"zhuyuhao"},"change_message_id":"b1b188aa59673e28e099f0c1734a668e9630b43e","unresolved":false,"context_lines":[{"line_number":4181,"context_line":"                    read_deleted\u003d\"int_no\").filter_by("},{"line_number":4182,"context_line":"            volume_type_id\u003did).soft_delete(synchronize_session\u003dFalse)"},{"line_number":4183,"context_line":"        type_postfix \u003d \u0027_\u0027 + vtype[\u0027name\u0027]"},{"line_number":4184,"context_line":"        query \u003d model_query(context, models.QuotaUsage, session\u003dsession). \\"},{"line_number":4185,"context_line":"            filter(models.QuotaUsage.resource.endswith(type_postfix))"},{"line_number":4186,"context_line":"        entity \u003d query.column_descriptions[0][\u0027entity\u0027]"},{"line_number":4187,"context_line":"        query.update({\u0027deleted\u0027: True,"},{"line_number":4188,"context_line":"                      \u0027deleted_at\u0027: utcnow,"},{"line_number":4189,"context_line":"                      \u0027updated_at\u0027: entity.updated_at}, synchronize_session\u003dFalse)"},{"line_number":4190,"context_line":""},{"line_number":4191,"context_line":"        query \u003d model_query(context, models.Quota, session\u003dsession). \\"},{"line_number":4192,"context_line":"            filter(models.Quota.resource.endswith(type_postfix))"},{"line_number":4193,"context_line":"        entity \u003d query.column_descriptions[0][\u0027entity\u0027]"},{"line_number":4194,"context_line":"        query.update({\u0027deleted\u0027: True,"},{"line_number":4195,"context_line":"                      \u0027deleted_at\u0027: utcnow,"},{"line_number":4196,"context_line":"                      \u0027updated_at\u0027: entity.updated_at}, synchronize_session\u003dFalse)"},{"line_number":4197,"context_line":""},{"line_number":4198,"context_line":"        query \u003d model_query(context, models.QuotaClass, session\u003dsession). \\"},{"line_number":4199,"context_line":"            filter(models.QuotaClass.resource.endswith(type_postfix))"},{"line_number":4200,"context_line":"        entity \u003d query.column_descriptions[0][\u0027entity\u0027]"},{"line_number":4201,"context_line":"        query.update({\u0027deleted\u0027: True,"},{"line_number":4202,"context_line":"                      \u0027deleted_at\u0027: utcnow,"},{"line_number":4203,"context_line":"                      \u0027updated_at\u0027: entity.updated_at}, synchronize_session\u003dFalse)"},{"line_number":4204,"context_line":"        # model_query(context, models.Quota, session\u003dsession). \\"},{"line_number":4205,"context_line":"        #     filter(models.QuotaUsage.resource.endswith(type_postfix)). \\"},{"line_number":4206,"context_line":"        #     update(updated_values, synchronize_session\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":7,"id":"48362418_cf648936","line":4203,"range":{"start_line":4184,"start_character":0,"end_line":4203,"end_character":82},"in_reply_to":"726720ec_3f7dd9bb","updated":"2021-07-01 02:12:36.000000000","message":"Done","commit_id":"602dd7fc1a04d3eabf1ccc9628b9fccc1d9e6418"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"309235929c0e8969eab96d987325a1a6b9f0e490","unresolved":true,"context_lines":[{"line_number":4201,"context_line":"        query.update({\u0027deleted\u0027: True,"},{"line_number":4202,"context_line":"                      \u0027deleted_at\u0027: utcnow,"},{"line_number":4203,"context_line":"                      \u0027updated_at\u0027: entity.updated_at}, synchronize_session\u003dFalse)"},{"line_number":4204,"context_line":"        # model_query(context, models.Quota, session\u003dsession). \\"},{"line_number":4205,"context_line":"        #     filter(models.QuotaUsage.resource.endswith(type_postfix)). \\"},{"line_number":4206,"context_line":"        #     update(updated_values, synchronize_session\u003dFalse)"},{"line_number":4207,"context_line":"        # model_query(context, models.Quota, session\u003dsession). \\"},{"line_number":4208,"context_line":"        #     filter(models.Quota.resource.endswith(type_postfix)). \\"},{"line_number":4209,"context_line":"        #     update(updated_values, synchronize_session\u003dFalse)"},{"line_number":4210,"context_line":"        # model_query(context, models.QuotaClass, session\u003dsession). \\"},{"line_number":4211,"context_line":"        #     filter(models.QuotaClass.resource.endswith(type_postfix)). \\"},{"line_number":4212,"context_line":"        #     update(updated_values, synchronize_session\u003dFalse)"},{"line_number":4213,"context_line":"    del updated_values[\u0027updated_at\u0027]"},{"line_number":4214,"context_line":"    return updated_values"},{"line_number":4215,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"e6980c38_50511de7","line":4212,"range":{"start_line":4204,"start_character":0,"end_line":4212,"end_character":63},"updated":"2021-06-28 09:51:45.000000000","message":"-1: These comments should be removed","commit_id":"602dd7fc1a04d3eabf1ccc9628b9fccc1d9e6418"},{"author":{"_account_id":33642,"name":"zhuyuhao","email":"yuhao.zhu@easystack.cn","username":"zhuyuhao"},"change_message_id":"b1b188aa59673e28e099f0c1734a668e9630b43e","unresolved":false,"context_lines":[{"line_number":4201,"context_line":"        query.update({\u0027deleted\u0027: True,"},{"line_number":4202,"context_line":"                      \u0027deleted_at\u0027: utcnow,"},{"line_number":4203,"context_line":"                      \u0027updated_at\u0027: entity.updated_at}, synchronize_session\u003dFalse)"},{"line_number":4204,"context_line":"        # model_query(context, models.Quota, session\u003dsession). \\"},{"line_number":4205,"context_line":"        #     filter(models.QuotaUsage.resource.endswith(type_postfix)). \\"},{"line_number":4206,"context_line":"        #     update(updated_values, synchronize_session\u003dFalse)"},{"line_number":4207,"context_line":"        # model_query(context, models.Quota, session\u003dsession). \\"},{"line_number":4208,"context_line":"        #     filter(models.Quota.resource.endswith(type_postfix)). \\"},{"line_number":4209,"context_line":"        #     update(updated_values, synchronize_session\u003dFalse)"},{"line_number":4210,"context_line":"        # model_query(context, models.QuotaClass, session\u003dsession). \\"},{"line_number":4211,"context_line":"        #     filter(models.QuotaClass.resource.endswith(type_postfix)). \\"},{"line_number":4212,"context_line":"        #     update(updated_values, synchronize_session\u003dFalse)"},{"line_number":4213,"context_line":"    del updated_values[\u0027updated_at\u0027]"},{"line_number":4214,"context_line":"    return updated_values"},{"line_number":4215,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"17c4235e_ebab048d","line":4212,"range":{"start_line":4204,"start_character":0,"end_line":4212,"end_character":63},"in_reply_to":"e6980c38_50511de7","updated":"2021-07-01 02:12:36.000000000","message":"Done","commit_id":"602dd7fc1a04d3eabf1ccc9628b9fccc1d9e6418"}],"cinder/quota.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"932991735be828629b78b3d3e7d8ae30f5b998c4","unresolved":true,"context_lines":[{"line_number":1191,"context_line":"                                     new_res)"},{"line_number":1192,"context_line":""},{"line_number":1193,"context_line":"    def delete_quota_associated_volume_type(self, context, type_name):"},{"line_number":1194,"context_line":"        \"\"\"delete type related quotas."},{"line_number":1195,"context_line":""},{"line_number":1196,"context_line":"        This is to update resource in quotas, quota_classes, and"},{"line_number":1197,"context_line":"        quota_usages once the name of a volume type is changed."}],"source_content_type":"text/x-python","patch_set":2,"id":"80322fe4_ae31b3af","line":1194,"range":{"start_line":1194,"start_character":11,"end_line":1194,"end_character":17},"updated":"2021-01-14 11:14:50.000000000","message":"nit: Delete","commit_id":"794062e6fa6d05bfc65555bccb2775c494e901f9"},{"author":{"_account_id":20160,"name":"haobing1","email":"bing.hao@easystack.cn","username":"haobing"},"change_message_id":"4eca77ce23220205a3769204522d99b1e5419e2a","unresolved":false,"context_lines":[{"line_number":1191,"context_line":"                                     new_res)"},{"line_number":1192,"context_line":""},{"line_number":1193,"context_line":"    def delete_quota_associated_volume_type(self, context, type_name):"},{"line_number":1194,"context_line":"        \"\"\"delete type related quotas."},{"line_number":1195,"context_line":""},{"line_number":1196,"context_line":"        This is to update resource in quotas, quota_classes, and"},{"line_number":1197,"context_line":"        quota_usages once the name of a volume type is changed."}],"source_content_type":"text/x-python","patch_set":2,"id":"8497d725_16335af2","line":1194,"range":{"start_line":1194,"start_character":11,"end_line":1194,"end_character":17},"in_reply_to":"80322fe4_ae31b3af","updated":"2021-03-16 02:41:36.000000000","message":"Done","commit_id":"794062e6fa6d05bfc65555bccb2775c494e901f9"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"932991735be828629b78b3d3e7d8ae30f5b998c4","unresolved":true,"context_lines":[{"line_number":1193,"context_line":"    def delete_quota_associated_volume_type(self, context, type_name):"},{"line_number":1194,"context_line":"        \"\"\"delete type related quotas."},{"line_number":1195,"context_line":""},{"line_number":1196,"context_line":"        This is to update resource in quotas, quota_classes, and"},{"line_number":1197,"context_line":"        quota_usages once the name of a volume type is changed."},{"line_number":1198,"context_line":""},{"line_number":1199,"context_line":"        :param context: The request context, for access checks."},{"line_number":1200,"context_line":"        :param old_type_name: old name of volume type."},{"line_number":1201,"context_line":"        :param new_type_name: new name of volume type."}],"source_content_type":"text/x-python","patch_set":2,"id":"90fc01e2_4077bc18","line":1198,"range":{"start_line":1196,"start_character":8,"end_line":1198,"end_character":0},"updated":"2021-01-14 11:14:50.000000000","message":"-1: In theory it is an update, but we should be referring to it as \"marking as deleted in the database\" or something in that line.","commit_id":"794062e6fa6d05bfc65555bccb2775c494e901f9"},{"author":{"_account_id":20160,"name":"haobing1","email":"bing.hao@easystack.cn","username":"haobing"},"change_message_id":"4eca77ce23220205a3769204522d99b1e5419e2a","unresolved":false,"context_lines":[{"line_number":1193,"context_line":"    def delete_quota_associated_volume_type(self, context, type_name):"},{"line_number":1194,"context_line":"        \"\"\"delete type related quotas."},{"line_number":1195,"context_line":""},{"line_number":1196,"context_line":"        This is to update resource in quotas, quota_classes, and"},{"line_number":1197,"context_line":"        quota_usages once the name of a volume type is changed."},{"line_number":1198,"context_line":""},{"line_number":1199,"context_line":"        :param context: The request context, for access checks."},{"line_number":1200,"context_line":"        :param old_type_name: old name of volume type."},{"line_number":1201,"context_line":"        :param new_type_name: new name of volume type."}],"source_content_type":"text/x-python","patch_set":2,"id":"1e331af6_7c098740","line":1198,"range":{"start_line":1196,"start_character":8,"end_line":1198,"end_character":0},"in_reply_to":"90fc01e2_4077bc18","updated":"2021-03-16 02:41:36.000000000","message":"Done","commit_id":"794062e6fa6d05bfc65555bccb2775c494e901f9"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"932991735be828629b78b3d3e7d8ae30f5b998c4","unresolved":true,"context_lines":[{"line_number":1197,"context_line":"        quota_usages once the name of a volume type is changed."},{"line_number":1198,"context_line":""},{"line_number":1199,"context_line":"        :param context: The request context, for access checks."},{"line_number":1200,"context_line":"        :param old_type_name: old name of volume type."},{"line_number":1201,"context_line":"        :param new_type_name: new name of volume type."},{"line_number":1202,"context_line":"        \"\"\""},{"line_number":1203,"context_line":"        for quota in (\u0027volumes\u0027, \u0027gigabytes\u0027, \u0027snapshots\u0027):"},{"line_number":1204,"context_line":"            res_name \u003d \"%s_%s\" % (quota, type_name)"},{"line_number":1205,"context_line":"            db.quota_usage_destroy_all_by_resource(context, res_name)"}],"source_content_type":"text/x-python","patch_set":2,"id":"25929adb_5d969595","line":1202,"range":{"start_line":1200,"start_character":1,"end_line":1202,"end_character":0},"updated":"2021-01-14 11:14:50.000000000","message":"-1: These are not the arguments to the method","commit_id":"794062e6fa6d05bfc65555bccb2775c494e901f9"},{"author":{"_account_id":20160,"name":"haobing1","email":"bing.hao@easystack.cn","username":"haobing"},"change_message_id":"4eca77ce23220205a3769204522d99b1e5419e2a","unresolved":false,"context_lines":[{"line_number":1197,"context_line":"        quota_usages once the name of a volume type is changed."},{"line_number":1198,"context_line":""},{"line_number":1199,"context_line":"        :param context: The request context, for access checks."},{"line_number":1200,"context_line":"        :param old_type_name: old name of volume type."},{"line_number":1201,"context_line":"        :param new_type_name: new name of volume type."},{"line_number":1202,"context_line":"        \"\"\""},{"line_number":1203,"context_line":"        for quota in (\u0027volumes\u0027, \u0027gigabytes\u0027, \u0027snapshots\u0027):"},{"line_number":1204,"context_line":"            res_name \u003d \"%s_%s\" % (quota, type_name)"},{"line_number":1205,"context_line":"            db.quota_usage_destroy_all_by_resource(context, res_name)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5e746f2e_4cc5790b","line":1202,"range":{"start_line":1200,"start_character":1,"end_line":1202,"end_character":0},"in_reply_to":"25929adb_5d969595","updated":"2021-03-16 02:41:36.000000000","message":"Done","commit_id":"794062e6fa6d05bfc65555bccb2775c494e901f9"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"932991735be828629b78b3d3e7d8ae30f5b998c4","unresolved":true,"context_lines":[{"line_number":1202,"context_line":"        \"\"\""},{"line_number":1203,"context_line":"        for quota in (\u0027volumes\u0027, \u0027gigabytes\u0027, \u0027snapshots\u0027):"},{"line_number":1204,"context_line":"            res_name \u003d \"%s_%s\" % (quota, type_name)"},{"line_number":1205,"context_line":"            db.quota_usage_destroy_all_by_resource(context, res_name)"},{"line_number":1206,"context_line":"            db.quota_class_destroy_all_by_resource(context, res_name)"},{"line_number":1207,"context_line":"            db.quota_destroy_all_by_resource(context, res_name)"},{"line_number":1208,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"0f7f7e20_1009a1e4","line":1205,"updated":"2021-01-14 11:14:50.000000000","message":"-1: We should clear the reservations first.","commit_id":"794062e6fa6d05bfc65555bccb2775c494e901f9"},{"author":{"_account_id":20160,"name":"haobing1","email":"bing.hao@easystack.cn","username":"haobing"},"change_message_id":"4eca77ce23220205a3769204522d99b1e5419e2a","unresolved":false,"context_lines":[{"line_number":1202,"context_line":"        \"\"\""},{"line_number":1203,"context_line":"        for quota in (\u0027volumes\u0027, \u0027gigabytes\u0027, \u0027snapshots\u0027):"},{"line_number":1204,"context_line":"            res_name \u003d \"%s_%s\" % (quota, type_name)"},{"line_number":1205,"context_line":"            db.quota_usage_destroy_all_by_resource(context, res_name)"},{"line_number":1206,"context_line":"            db.quota_class_destroy_all_by_resource(context, res_name)"},{"line_number":1207,"context_line":"            db.quota_destroy_all_by_resource(context, res_name)"},{"line_number":1208,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"b457f4ec_6353fc2b","line":1205,"in_reply_to":"0f7f7e20_1009a1e4","updated":"2021-03-16 02:41:36.000000000","message":"Done","commit_id":"794062e6fa6d05bfc65555bccb2775c494e901f9"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"b3db32e4972787fe593d926882b9a75a7501d95f","unresolved":true,"context_lines":[{"line_number":1197,"context_line":"        quota_usages once the volume type is deleted."},{"line_number":1198,"context_line":""},{"line_number":1199,"context_line":"        :param context: The request context, for access checks."},{"line_number":1200,"context_line":"        :param id: id of volume type."},{"line_number":1201,"context_line":"        \"\"\""},{"line_number":1202,"context_line":"        for quota in (\u0027volumes\u0027, \u0027gigabytes\u0027, \u0027snapshots\u0027):"},{"line_number":1203,"context_line":"            res_name \u003d \"%s_%s\" % (quota, type_name)"}],"source_content_type":"text/x-python","patch_set":3,"id":"11b6b651_6501095c","line":1200,"range":{"start_line":1200,"start_character":15,"end_line":1200,"end_character":17},"updated":"2021-01-15 11:05:27.000000000","message":"Parameter is named `type_name`, not `id`","commit_id":"244509c061b06ae2430037cc38d34aff39459887"},{"author":{"_account_id":20160,"name":"haobing1","email":"bing.hao@easystack.cn","username":"haobing"},"change_message_id":"4eca77ce23220205a3769204522d99b1e5419e2a","unresolved":false,"context_lines":[{"line_number":1197,"context_line":"        quota_usages once the volume type is deleted."},{"line_number":1198,"context_line":""},{"line_number":1199,"context_line":"        :param context: The request context, for access checks."},{"line_number":1200,"context_line":"        :param id: id of volume type."},{"line_number":1201,"context_line":"        \"\"\""},{"line_number":1202,"context_line":"        for quota in (\u0027volumes\u0027, \u0027gigabytes\u0027, \u0027snapshots\u0027):"},{"line_number":1203,"context_line":"            res_name \u003d \"%s_%s\" % (quota, type_name)"}],"source_content_type":"text/x-python","patch_set":3,"id":"10de0531_3ef54ca0","line":1200,"range":{"start_line":1200,"start_character":15,"end_line":1200,"end_character":17},"in_reply_to":"11b6b651_6501095c","updated":"2021-03-16 02:41:36.000000000","message":"Done","commit_id":"244509c061b06ae2430037cc38d34aff39459887"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"b3db32e4972787fe593d926882b9a75a7501d95f","unresolved":true,"context_lines":[{"line_number":1201,"context_line":"        \"\"\""},{"line_number":1202,"context_line":"        for quota in (\u0027volumes\u0027, \u0027gigabytes\u0027, \u0027snapshots\u0027):"},{"line_number":1203,"context_line":"            res_name \u003d \"%s_%s\" % (quota, type_name)"},{"line_number":1204,"context_line":"            db.quota_usage_destroy_all_by_resource(context, res_name)"},{"line_number":1205,"context_line":"            db.quota_class_destroy_all_by_resource(context, res_name)"},{"line_number":1206,"context_line":"            db.quota_destroy_all_by_resource(context, res_name)"},{"line_number":1207,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"919c0487_424d95bd","line":1204,"updated":"2021-01-15 11:05:27.000000000","message":"-1: We also need to clear reservations from DB table `reservations` which is the `Reservations` class.","commit_id":"244509c061b06ae2430037cc38d34aff39459887"},{"author":{"_account_id":20160,"name":"haobing1","email":"bing.hao@easystack.cn","username":"haobing"},"change_message_id":"4eca77ce23220205a3769204522d99b1e5419e2a","unresolved":true,"context_lines":[{"line_number":1201,"context_line":"        \"\"\""},{"line_number":1202,"context_line":"        for quota in (\u0027volumes\u0027, \u0027gigabytes\u0027, \u0027snapshots\u0027):"},{"line_number":1203,"context_line":"            res_name \u003d \"%s_%s\" % (quota, type_name)"},{"line_number":1204,"context_line":"            db.quota_usage_destroy_all_by_resource(context, res_name)"},{"line_number":1205,"context_line":"            db.quota_class_destroy_all_by_resource(context, res_name)"},{"line_number":1206,"context_line":"            db.quota_destroy_all_by_resource(context, res_name)"},{"line_number":1207,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"47ac79aa_3a77d0cf","line":1204,"in_reply_to":"919c0487_424d95bd","updated":"2021-03-16 02:41:36.000000000","message":"Hi, Gorka\nBefore deleting the volume type, all volume of this type have been deleted, so there will be no reservation records in db. So I don’t think we need to delete the reservation. I would like to hear your views\n\nthank you!","commit_id":"244509c061b06ae2430037cc38d34aff39459887"}],"cinder/tests/unit/test_db_api.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"b3db32e4972787fe593d926882b9a75a7501d95f","unresolved":true,"context_lines":[{"line_number":2591,"context_line":"        self.assertEqual({\u0027class_name\u0027: \u0027test2\u0027},"},{"line_number":2592,"context_line":"                         db.quota_class_get_all_by_name(self.ctxt, \u0027test2\u0027))"},{"line_number":2593,"context_line":""},{"line_number":2594,"context_line":"    @mock.patch(\u0027cinder.db.sqlalchemy.api._quota_class_get_all_by_resource\u0027)"},{"line_number":2595,"context_line":"    def test_quota_class_destroy_all_by_resource(self,"},{"line_number":2596,"context_line":"                                                 mock_get_all_by_resource):"},{"line_number":2597,"context_line":"        db.quota_class_create(self.ctxt, \u0027test2\u0027, \u0027res1\u0027, 43)"}],"source_content_type":"text/x-python","patch_set":3,"id":"f517b78a_2ffcfd0c","line":2594,"range":{"start_line":2594,"start_character":42,"end_line":2594,"end_character":74},"updated":"2021-01-15 11:05:27.000000000","message":"-1: This method should no longer be called by the code the patch adds, so why mock it?","commit_id":"244509c061b06ae2430037cc38d34aff39459887"},{"author":{"_account_id":20160,"name":"haobing1","email":"bing.hao@easystack.cn","username":"haobing"},"change_message_id":"4eca77ce23220205a3769204522d99b1e5419e2a","unresolved":false,"context_lines":[{"line_number":2591,"context_line":"        self.assertEqual({\u0027class_name\u0027: \u0027test2\u0027},"},{"line_number":2592,"context_line":"                         db.quota_class_get_all_by_name(self.ctxt, \u0027test2\u0027))"},{"line_number":2593,"context_line":""},{"line_number":2594,"context_line":"    @mock.patch(\u0027cinder.db.sqlalchemy.api._quota_class_get_all_by_resource\u0027)"},{"line_number":2595,"context_line":"    def test_quota_class_destroy_all_by_resource(self,"},{"line_number":2596,"context_line":"                                                 mock_get_all_by_resource):"},{"line_number":2597,"context_line":"        db.quota_class_create(self.ctxt, \u0027test2\u0027, \u0027res1\u0027, 43)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9cd9dea5_469b9d06","line":2594,"range":{"start_line":2594,"start_character":42,"end_line":2594,"end_character":74},"in_reply_to":"f517b78a_2ffcfd0c","updated":"2021-03-16 02:41:36.000000000","message":"Done","commit_id":"244509c061b06ae2430037cc38d34aff39459887"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"b3db32e4972787fe593d926882b9a75a7501d95f","unresolved":true,"context_lines":[{"line_number":2594,"context_line":"    @mock.patch(\u0027cinder.db.sqlalchemy.api._quota_class_get_all_by_resource\u0027)"},{"line_number":2595,"context_line":"    def test_quota_class_destroy_all_by_resource(self,"},{"line_number":2596,"context_line":"                                                 mock_get_all_by_resource):"},{"line_number":2597,"context_line":"        db.quota_class_create(self.ctxt, \u0027test2\u0027, \u0027res1\u0027, 43)"},{"line_number":2598,"context_line":"        db.quota_class_create(self.ctxt, \u0027test2\u0027, \u0027res2\u0027, 44)"},{"line_number":2599,"context_line":"        db.quota_class_destroy_all_by_resource(self.ctxt, \u0027test2\u0027)"},{"line_number":2600,"context_line":"        mock_get_all_by_resource.return_value \u003d \\"}],"source_content_type":"text/x-python","patch_set":3,"id":"ec8db9d7_623cbcc8","line":2597,"range":{"start_line":2597,"start_character":51,"end_line":2597,"end_character":55},"updated":"2021-01-15 11:05:27.000000000","message":"nit: Please use fake, but somewhat real, resource names, like gigabytes_lvm, volumes_lvm, snapshots_lvm","commit_id":"244509c061b06ae2430037cc38d34aff39459887"},{"author":{"_account_id":20160,"name":"haobing1","email":"bing.hao@easystack.cn","username":"haobing"},"change_message_id":"4eca77ce23220205a3769204522d99b1e5419e2a","unresolved":false,"context_lines":[{"line_number":2594,"context_line":"    @mock.patch(\u0027cinder.db.sqlalchemy.api._quota_class_get_all_by_resource\u0027)"},{"line_number":2595,"context_line":"    def test_quota_class_destroy_all_by_resource(self,"},{"line_number":2596,"context_line":"                                                 mock_get_all_by_resource):"},{"line_number":2597,"context_line":"        db.quota_class_create(self.ctxt, \u0027test2\u0027, \u0027res1\u0027, 43)"},{"line_number":2598,"context_line":"        db.quota_class_create(self.ctxt, \u0027test2\u0027, \u0027res2\u0027, 44)"},{"line_number":2599,"context_line":"        db.quota_class_destroy_all_by_resource(self.ctxt, \u0027test2\u0027)"},{"line_number":2600,"context_line":"        mock_get_all_by_resource.return_value \u003d \\"}],"source_content_type":"text/x-python","patch_set":3,"id":"cddaf813_b2964883","line":2597,"range":{"start_line":2597,"start_character":51,"end_line":2597,"end_character":55},"in_reply_to":"ec8db9d7_623cbcc8","updated":"2021-03-16 02:41:36.000000000","message":"Done","commit_id":"244509c061b06ae2430037cc38d34aff39459887"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"b3db32e4972787fe593d926882b9a75a7501d95f","unresolved":true,"context_lines":[{"line_number":2596,"context_line":"                                                 mock_get_all_by_resource):"},{"line_number":2597,"context_line":"        db.quota_class_create(self.ctxt, \u0027test2\u0027, \u0027res1\u0027, 43)"},{"line_number":2598,"context_line":"        db.quota_class_create(self.ctxt, \u0027test2\u0027, \u0027res2\u0027, 44)"},{"line_number":2599,"context_line":"        db.quota_class_destroy_all_by_resource(self.ctxt, \u0027test2\u0027)"},{"line_number":2600,"context_line":"        mock_get_all_by_resource.return_value \u003d \\"},{"line_number":2601,"context_line":"            [db.quota_class_create(self.ctxt, \u0027test2\u0027, \u0027res1\u0027, 43),"},{"line_number":2602,"context_line":"             db.quota_class_create(self.ctxt, \u0027test2\u0027, \u0027res2\u0027, 44)]"}],"source_content_type":"text/x-python","patch_set":3,"id":"67ad6475_bc58f9ee","line":2599,"range":{"start_line":2599,"start_character":58,"end_line":2599,"end_character":65},"updated":"2021-01-15 11:05:27.000000000","message":"-1: The method we are calling here receives the resource name (in this case \u0027res1\u0027 or \u0027res2\u0027), not the class name.\n\nAdditionally we have to confirm that the resources have actually been removed, so we\u0027ll have to query the DB afterwards to check that only the resources we want have been removed.","commit_id":"244509c061b06ae2430037cc38d34aff39459887"},{"author":{"_account_id":20160,"name":"haobing1","email":"bing.hao@easystack.cn","username":"haobing"},"change_message_id":"4eca77ce23220205a3769204522d99b1e5419e2a","unresolved":false,"context_lines":[{"line_number":2596,"context_line":"                                                 mock_get_all_by_resource):"},{"line_number":2597,"context_line":"        db.quota_class_create(self.ctxt, \u0027test2\u0027, \u0027res1\u0027, 43)"},{"line_number":2598,"context_line":"        db.quota_class_create(self.ctxt, \u0027test2\u0027, \u0027res2\u0027, 44)"},{"line_number":2599,"context_line":"        db.quota_class_destroy_all_by_resource(self.ctxt, \u0027test2\u0027)"},{"line_number":2600,"context_line":"        mock_get_all_by_resource.return_value \u003d \\"},{"line_number":2601,"context_line":"            [db.quota_class_create(self.ctxt, \u0027test2\u0027, \u0027res1\u0027, 43),"},{"line_number":2602,"context_line":"             db.quota_class_create(self.ctxt, \u0027test2\u0027, \u0027res2\u0027, 44)]"}],"source_content_type":"text/x-python","patch_set":3,"id":"df790094_d26c46fb","line":2599,"range":{"start_line":2599,"start_character":58,"end_line":2599,"end_character":65},"in_reply_to":"67ad6475_bc58f9ee","updated":"2021-03-16 02:41:36.000000000","message":"Done","commit_id":"244509c061b06ae2430037cc38d34aff39459887"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"b3db32e4972787fe593d926882b9a75a7501d95f","unresolved":true,"context_lines":[{"line_number":2597,"context_line":"        db.quota_class_create(self.ctxt, \u0027test2\u0027, \u0027res1\u0027, 43)"},{"line_number":2598,"context_line":"        db.quota_class_create(self.ctxt, \u0027test2\u0027, \u0027res2\u0027, 44)"},{"line_number":2599,"context_line":"        db.quota_class_destroy_all_by_resource(self.ctxt, \u0027test2\u0027)"},{"line_number":2600,"context_line":"        mock_get_all_by_resource.return_value \u003d \\"},{"line_number":2601,"context_line":"            [db.quota_class_create(self.ctxt, \u0027test2\u0027, \u0027res1\u0027, 43),"},{"line_number":2602,"context_line":"             db.quota_class_create(self.ctxt, \u0027test2\u0027, \u0027res2\u0027, 44)]"},{"line_number":2603,"context_line":"        self.assertIsNone(None, db.quota_class_destroy_all_by_resource("},{"line_number":2604,"context_line":"            self.ctxt, \u0027test2\u0027))"},{"line_number":2605,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"4752d635_548a9c4c","line":2602,"range":{"start_line":2600,"start_character":5,"end_line":2602,"end_character":67},"updated":"2021-01-15 11:05:27.000000000","message":"-1: This mock return value is not used by the quota_class_destroy_all_by_resource, and we are creating the same QuotaClass as in lines 2597 and 2598, why?","commit_id":"244509c061b06ae2430037cc38d34aff39459887"},{"author":{"_account_id":20160,"name":"haobing1","email":"bing.hao@easystack.cn","username":"haobing"},"change_message_id":"4eca77ce23220205a3769204522d99b1e5419e2a","unresolved":false,"context_lines":[{"line_number":2597,"context_line":"        db.quota_class_create(self.ctxt, \u0027test2\u0027, \u0027res1\u0027, 43)"},{"line_number":2598,"context_line":"        db.quota_class_create(self.ctxt, \u0027test2\u0027, \u0027res2\u0027, 44)"},{"line_number":2599,"context_line":"        db.quota_class_destroy_all_by_resource(self.ctxt, \u0027test2\u0027)"},{"line_number":2600,"context_line":"        mock_get_all_by_resource.return_value \u003d \\"},{"line_number":2601,"context_line":"            [db.quota_class_create(self.ctxt, \u0027test2\u0027, \u0027res1\u0027, 43),"},{"line_number":2602,"context_line":"             db.quota_class_create(self.ctxt, \u0027test2\u0027, \u0027res2\u0027, 44)]"},{"line_number":2603,"context_line":"        self.assertIsNone(None, db.quota_class_destroy_all_by_resource("},{"line_number":2604,"context_line":"            self.ctxt, \u0027test2\u0027))"},{"line_number":2605,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"27aa531d_889af5df","line":2602,"range":{"start_line":2600,"start_character":5,"end_line":2602,"end_character":67},"in_reply_to":"4752d635_548a9c4c","updated":"2021-03-16 02:41:36.000000000","message":"Done","commit_id":"244509c061b06ae2430037cc38d34aff39459887"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"b3db32e4972787fe593d926882b9a75a7501d95f","unresolved":true,"context_lines":[{"line_number":2601,"context_line":"            [db.quota_class_create(self.ctxt, \u0027test2\u0027, \u0027res1\u0027, 43),"},{"line_number":2602,"context_line":"             db.quota_class_create(self.ctxt, \u0027test2\u0027, \u0027res2\u0027, 44)]"},{"line_number":2603,"context_line":"        self.assertIsNone(None, db.quota_class_destroy_all_by_resource("},{"line_number":2604,"context_line":"            self.ctxt, \u0027test2\u0027))"},{"line_number":2605,"context_line":""},{"line_number":2606,"context_line":""},{"line_number":2607,"context_line":"class DBAPIQuotaTestCase(BaseTest):"}],"source_content_type":"text/x-python","patch_set":3,"id":"a47f5927_54eda7e4","line":2604,"range":{"start_line":2604,"start_character":24,"end_line":2604,"end_character":29},"updated":"2021-01-15 11:05:27.000000000","message":"?: What\u0027s the purpose of calling this method again?  How is it going to test something different than L2599?","commit_id":"244509c061b06ae2430037cc38d34aff39459887"},{"author":{"_account_id":20160,"name":"haobing1","email":"bing.hao@easystack.cn","username":"haobing"},"change_message_id":"4eca77ce23220205a3769204522d99b1e5419e2a","unresolved":false,"context_lines":[{"line_number":2601,"context_line":"            [db.quota_class_create(self.ctxt, \u0027test2\u0027, \u0027res1\u0027, 43),"},{"line_number":2602,"context_line":"             db.quota_class_create(self.ctxt, \u0027test2\u0027, \u0027res2\u0027, 44)]"},{"line_number":2603,"context_line":"        self.assertIsNone(None, db.quota_class_destroy_all_by_resource("},{"line_number":2604,"context_line":"            self.ctxt, \u0027test2\u0027))"},{"line_number":2605,"context_line":""},{"line_number":2606,"context_line":""},{"line_number":2607,"context_line":"class DBAPIQuotaTestCase(BaseTest):"}],"source_content_type":"text/x-python","patch_set":3,"id":"a6fdb69d_3a3f5173","line":2604,"range":{"start_line":2604,"start_character":24,"end_line":2604,"end_character":29},"in_reply_to":"a47f5927_54eda7e4","updated":"2021-03-16 02:41:36.000000000","message":"Done","commit_id":"244509c061b06ae2430037cc38d34aff39459887"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"b3db32e4972787fe593d926882b9a75a7501d95f","unresolved":true,"context_lines":[{"line_number":2723,"context_line":"                         db.quota_usage_get_all_by_project(self.ctxt, project))"},{"line_number":2724,"context_line":""},{"line_number":2725,"context_line":"    def test_quota_destroy_all_by_resource(self):"},{"line_number":2726,"context_line":"        db.quota_create(self.ctxt, \u0027project1\u0027, \u0027resource1\u0027, 41)"},{"line_number":2727,"context_line":"        self.assertIsNone(None, db.quota_destroy_all_by_resource("},{"line_number":2728,"context_line":"            self.ctxt, \u0027resource1\u0027))"},{"line_number":2729,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"4f4147de_d7e5fd6e","line":2726,"range":{"start_line":2726,"start_character":4,"end_line":2726,"end_character":63},"updated":"2021-01-15 11:05:27.000000000","message":"nit: Please use fake, but somewhat real, resource names, like gigabytes_lvm, volumes_lvm, snapshots_lvm\n\nnit: Please add more than 1 resource that will be removed and some that won\u0027t","commit_id":"244509c061b06ae2430037cc38d34aff39459887"},{"author":{"_account_id":20160,"name":"haobing1","email":"bing.hao@easystack.cn","username":"haobing"},"change_message_id":"4eca77ce23220205a3769204522d99b1e5419e2a","unresolved":false,"context_lines":[{"line_number":2723,"context_line":"                         db.quota_usage_get_all_by_project(self.ctxt, project))"},{"line_number":2724,"context_line":""},{"line_number":2725,"context_line":"    def test_quota_destroy_all_by_resource(self):"},{"line_number":2726,"context_line":"        db.quota_create(self.ctxt, \u0027project1\u0027, \u0027resource1\u0027, 41)"},{"line_number":2727,"context_line":"        self.assertIsNone(None, db.quota_destroy_all_by_resource("},{"line_number":2728,"context_line":"            self.ctxt, \u0027resource1\u0027))"},{"line_number":2729,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f406c66_9170f237","line":2726,"range":{"start_line":2726,"start_character":4,"end_line":2726,"end_character":63},"in_reply_to":"4f4147de_d7e5fd6e","updated":"2021-03-16 02:41:36.000000000","message":"Done","commit_id":"244509c061b06ae2430037cc38d34aff39459887"},{"author":{"_account_id":20160,"name":"haobing1","email":"bing.hao@easystack.cn","username":"haobing"},"change_message_id":"4eca77ce23220205a3769204522d99b1e5419e2a","unresolved":false,"context_lines":[{"line_number":2723,"context_line":"                         db.quota_usage_get_all_by_project(self.ctxt, project))"},{"line_number":2724,"context_line":""},{"line_number":2725,"context_line":"    def test_quota_destroy_all_by_resource(self):"},{"line_number":2726,"context_line":"        db.quota_create(self.ctxt, \u0027project1\u0027, \u0027resource1\u0027, 41)"},{"line_number":2727,"context_line":"        self.assertIsNone(None, db.quota_destroy_all_by_resource("},{"line_number":2728,"context_line":"            self.ctxt, \u0027resource1\u0027))"},{"line_number":2729,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"d4a20b5b_90a67ba6","line":2726,"range":{"start_line":2726,"start_character":4,"end_line":2726,"end_character":63},"in_reply_to":"4f4147de_d7e5fd6e","updated":"2021-03-16 02:41:36.000000000","message":"Done","commit_id":"244509c061b06ae2430037cc38d34aff39459887"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"b3db32e4972787fe593d926882b9a75a7501d95f","unresolved":true,"context_lines":[{"line_number":2725,"context_line":"    def test_quota_destroy_all_by_resource(self):"},{"line_number":2726,"context_line":"        db.quota_create(self.ctxt, \u0027project1\u0027, \u0027resource1\u0027, 41)"},{"line_number":2727,"context_line":"        self.assertIsNone(None, db.quota_destroy_all_by_resource("},{"line_number":2728,"context_line":"            self.ctxt, \u0027resource1\u0027))"},{"line_number":2729,"context_line":""},{"line_number":2730,"context_line":"    def test_quota_destroy_sqlalchemy_all_by_project_(self):"},{"line_number":2731,"context_line":"        # Create limits, reservations and usage for project"}],"source_content_type":"text/x-python","patch_set":3,"id":"b17e729e_26729dc4","line":2728,"updated":"2021-01-15 11:05:27.000000000","message":"-1: We need to confirm that they have actually been deleted","commit_id":"244509c061b06ae2430037cc38d34aff39459887"},{"author":{"_account_id":20160,"name":"haobing1","email":"bing.hao@easystack.cn","username":"haobing"},"change_message_id":"4eca77ce23220205a3769204522d99b1e5419e2a","unresolved":false,"context_lines":[{"line_number":2725,"context_line":"    def test_quota_destroy_all_by_resource(self):"},{"line_number":2726,"context_line":"        db.quota_create(self.ctxt, \u0027project1\u0027, \u0027resource1\u0027, 41)"},{"line_number":2727,"context_line":"        self.assertIsNone(None, db.quota_destroy_all_by_resource("},{"line_number":2728,"context_line":"            self.ctxt, \u0027resource1\u0027))"},{"line_number":2729,"context_line":""},{"line_number":2730,"context_line":"    def test_quota_destroy_sqlalchemy_all_by_project_(self):"},{"line_number":2731,"context_line":"        # Create limits, reservations and usage for project"}],"source_content_type":"text/x-python","patch_set":3,"id":"59c593df_c56c4463","line":2728,"in_reply_to":"b17e729e_26729dc4","updated":"2021-03-16 02:41:36.000000000","message":"Done","commit_id":"244509c061b06ae2430037cc38d34aff39459887"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"b3db32e4972787fe593d926882b9a75a7501d95f","unresolved":true,"context_lines":[{"line_number":2776,"context_line":"        self.assertEqual(expected, db.quota_usage_get_all_by_project("},{"line_number":2777,"context_line":"                         self.ctxt, \u0027p1\u0027))"},{"line_number":2778,"context_line":""},{"line_number":2779,"context_line":"    @mock.patch(\u0027cinder.db.sqlalchemy.api._get_quota_usages_by_resource\u0027)"},{"line_number":2780,"context_line":"    def test_quota_usage_destroy_all_by_resource(self, mock_by_resource):"},{"line_number":2781,"context_line":"        mock_by_resource.return_value \u003d \\"},{"line_number":2782,"context_line":"            [db.quota_class_create(self.ctxt, \u0027test2\u0027, \u0027res1\u0027, 43),"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a117836_fb7b10e2","line":2779,"range":{"start_line":2779,"start_character":0,"end_line":2779,"end_character":73},"updated":"2021-01-15 11:05:27.000000000","message":"-1: This method is not called by the code the patch adds, right?","commit_id":"244509c061b06ae2430037cc38d34aff39459887"},{"author":{"_account_id":20160,"name":"haobing1","email":"bing.hao@easystack.cn","username":"haobing"},"change_message_id":"4eca77ce23220205a3769204522d99b1e5419e2a","unresolved":false,"context_lines":[{"line_number":2776,"context_line":"        self.assertEqual(expected, db.quota_usage_get_all_by_project("},{"line_number":2777,"context_line":"                         self.ctxt, \u0027p1\u0027))"},{"line_number":2778,"context_line":""},{"line_number":2779,"context_line":"    @mock.patch(\u0027cinder.db.sqlalchemy.api._get_quota_usages_by_resource\u0027)"},{"line_number":2780,"context_line":"    def test_quota_usage_destroy_all_by_resource(self, mock_by_resource):"},{"line_number":2781,"context_line":"        mock_by_resource.return_value \u003d \\"},{"line_number":2782,"context_line":"            [db.quota_class_create(self.ctxt, \u0027test2\u0027, \u0027res1\u0027, 43),"}],"source_content_type":"text/x-python","patch_set":3,"id":"acc69d6c_5722c63f","line":2779,"range":{"start_line":2779,"start_character":0,"end_line":2779,"end_character":73},"in_reply_to":"5a117836_fb7b10e2","updated":"2021-03-16 02:41:36.000000000","message":"Done","commit_id":"244509c061b06ae2430037cc38d34aff39459887"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"b3db32e4972787fe593d926882b9a75a7501d95f","unresolved":true,"context_lines":[{"line_number":2778,"context_line":""},{"line_number":2779,"context_line":"    @mock.patch(\u0027cinder.db.sqlalchemy.api._get_quota_usages_by_resource\u0027)"},{"line_number":2780,"context_line":"    def test_quota_usage_destroy_all_by_resource(self, mock_by_resource):"},{"line_number":2781,"context_line":"        mock_by_resource.return_value \u003d \\"},{"line_number":2782,"context_line":"            [db.quota_class_create(self.ctxt, \u0027test2\u0027, \u0027res1\u0027, 43),"},{"line_number":2783,"context_line":"             db.quota_class_create(self.ctxt, \u0027test2\u0027, \u0027res2\u0027, 44)]"},{"line_number":2784,"context_line":"        response \u003d db.quota_usage_destroy_all_by_resource("}],"source_content_type":"text/x-python","patch_set":3,"id":"6fd3b7ff_6bc04dc1","line":2781,"range":{"start_line":2781,"start_character":8,"end_line":2781,"end_character":37},"updated":"2021-01-15 11:05:27.000000000","message":"-1: This mock will not be used by the destroy_all method we want to test, so there\u0027s no point in setting the return value, right?","commit_id":"244509c061b06ae2430037cc38d34aff39459887"},{"author":{"_account_id":20160,"name":"haobing1","email":"bing.hao@easystack.cn","username":"haobing"},"change_message_id":"4eca77ce23220205a3769204522d99b1e5419e2a","unresolved":false,"context_lines":[{"line_number":2778,"context_line":""},{"line_number":2779,"context_line":"    @mock.patch(\u0027cinder.db.sqlalchemy.api._get_quota_usages_by_resource\u0027)"},{"line_number":2780,"context_line":"    def test_quota_usage_destroy_all_by_resource(self, mock_by_resource):"},{"line_number":2781,"context_line":"        mock_by_resource.return_value \u003d \\"},{"line_number":2782,"context_line":"            [db.quota_class_create(self.ctxt, \u0027test2\u0027, \u0027res1\u0027, 43),"},{"line_number":2783,"context_line":"             db.quota_class_create(self.ctxt, \u0027test2\u0027, \u0027res2\u0027, 44)]"},{"line_number":2784,"context_line":"        response \u003d db.quota_usage_destroy_all_by_resource("}],"source_content_type":"text/x-python","patch_set":3,"id":"ffa72ae1_fdc7f213","line":2781,"range":{"start_line":2781,"start_character":8,"end_line":2781,"end_character":37},"in_reply_to":"6fd3b7ff_6bc04dc1","updated":"2021-03-16 02:41:36.000000000","message":"Done","commit_id":"244509c061b06ae2430037cc38d34aff39459887"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"b3db32e4972787fe593d926882b9a75a7501d95f","unresolved":true,"context_lines":[{"line_number":2779,"context_line":"    @mock.patch(\u0027cinder.db.sqlalchemy.api._get_quota_usages_by_resource\u0027)"},{"line_number":2780,"context_line":"    def test_quota_usage_destroy_all_by_resource(self, mock_by_resource):"},{"line_number":2781,"context_line":"        mock_by_resource.return_value \u003d \\"},{"line_number":2782,"context_line":"            [db.quota_class_create(self.ctxt, \u0027test2\u0027, \u0027res1\u0027, 43),"},{"line_number":2783,"context_line":"             db.quota_class_create(self.ctxt, \u0027test2\u0027, \u0027res2\u0027, 44)]"},{"line_number":2784,"context_line":"        response \u003d db.quota_usage_destroy_all_by_resource("},{"line_number":2785,"context_line":"            self.ctxt, \u0027resource1\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fba13c3c_df123bbe","line":2782,"range":{"start_line":2782,"start_character":16,"end_line":2782,"end_character":34},"updated":"2021-01-15 11:05:27.000000000","message":"-1: Why do we create quota classes?  We should be creating quota_usage DB entries instead.","commit_id":"244509c061b06ae2430037cc38d34aff39459887"},{"author":{"_account_id":20160,"name":"haobing1","email":"bing.hao@easystack.cn","username":"haobing"},"change_message_id":"4eca77ce23220205a3769204522d99b1e5419e2a","unresolved":false,"context_lines":[{"line_number":2779,"context_line":"    @mock.patch(\u0027cinder.db.sqlalchemy.api._get_quota_usages_by_resource\u0027)"},{"line_number":2780,"context_line":"    def test_quota_usage_destroy_all_by_resource(self, mock_by_resource):"},{"line_number":2781,"context_line":"        mock_by_resource.return_value \u003d \\"},{"line_number":2782,"context_line":"            [db.quota_class_create(self.ctxt, \u0027test2\u0027, \u0027res1\u0027, 43),"},{"line_number":2783,"context_line":"             db.quota_class_create(self.ctxt, \u0027test2\u0027, \u0027res2\u0027, 44)]"},{"line_number":2784,"context_line":"        response \u003d db.quota_usage_destroy_all_by_resource("},{"line_number":2785,"context_line":"            self.ctxt, \u0027resource1\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"12a5fcb2_8bf363dc","line":2782,"range":{"start_line":2782,"start_character":16,"end_line":2782,"end_character":34},"in_reply_to":"fba13c3c_df123bbe","updated":"2021-03-16 02:41:36.000000000","message":"Done","commit_id":"244509c061b06ae2430037cc38d34aff39459887"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"b3db32e4972787fe593d926882b9a75a7501d95f","unresolved":true,"context_lines":[{"line_number":2782,"context_line":"            [db.quota_class_create(self.ctxt, \u0027test2\u0027, \u0027res1\u0027, 43),"},{"line_number":2783,"context_line":"             db.quota_class_create(self.ctxt, \u0027test2\u0027, \u0027res2\u0027, 44)]"},{"line_number":2784,"context_line":"        response \u003d db.quota_usage_destroy_all_by_resource("},{"line_number":2785,"context_line":"            self.ctxt, \u0027resource1\u0027)"},{"line_number":2786,"context_line":"        self.assertIsNone(None, response)"},{"line_number":2787,"context_line":""},{"line_number":2788,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7a1da68a_b3ad0341","line":2785,"range":{"start_line":2785,"start_character":24,"end_line":2785,"end_character":33},"updated":"2021-01-15 11:05:27.000000000","message":"-1: This resource doesn\u0027t exist...  What are we trying to test?","commit_id":"244509c061b06ae2430037cc38d34aff39459887"},{"author":{"_account_id":20160,"name":"haobing1","email":"bing.hao@easystack.cn","username":"haobing"},"change_message_id":"4eca77ce23220205a3769204522d99b1e5419e2a","unresolved":false,"context_lines":[{"line_number":2782,"context_line":"            [db.quota_class_create(self.ctxt, \u0027test2\u0027, \u0027res1\u0027, 43),"},{"line_number":2783,"context_line":"             db.quota_class_create(self.ctxt, \u0027test2\u0027, \u0027res2\u0027, 44)]"},{"line_number":2784,"context_line":"        response \u003d db.quota_usage_destroy_all_by_resource("},{"line_number":2785,"context_line":"            self.ctxt, \u0027resource1\u0027)"},{"line_number":2786,"context_line":"        self.assertIsNone(None, response)"},{"line_number":2787,"context_line":""},{"line_number":2788,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"37876778_cc09d55f","line":2785,"range":{"start_line":2785,"start_character":24,"end_line":2785,"end_character":33},"in_reply_to":"7a1da68a_b3ad0341","updated":"2021-03-16 02:41:36.000000000","message":"Done","commit_id":"244509c061b06ae2430037cc38d34aff39459887"}],"cinder/tests/unit/test_quota.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"932991735be828629b78b3d3e7d8ae30f5b998c4","unresolved":true,"context_lines":[{"line_number":904,"context_line":"        engine \u003d quota.VolumeTypeQuotaEngine()"},{"line_number":905,"context_line":"        engine.update_quota_resource(ctx, \u0027type1\u0027, \u0027type2\u0027)"},{"line_number":906,"context_line":""},{"line_number":907,"context_line":"    def test_delete_quota_associated_volume_type(self):"},{"line_number":908,"context_line":"        ctx \u003d context.RequestContext(\u0027admin\u0027, \u0027admin\u0027, is_admin\u003dTrue)"},{"line_number":909,"context_line":""},{"line_number":910,"context_line":"        engine \u003d quota.VolumeTypeQuotaEngine()"}],"source_content_type":"text/x-python","patch_set":2,"id":"c10ed6a6_41426c00","line":907,"range":{"start_line":907,"start_character":8,"end_line":907,"end_character":48},"updated":"2021-01-14 11:14:50.000000000","message":"-1: I think I may be missing something... How are we testing here that we are doing what we should be doing?\n\nWe need to confirm that we are calling the 3 DB methods with the 3 resource types using mocks.\nThen we also need to have in the DB test file tests for the new DB methods.","commit_id":"794062e6fa6d05bfc65555bccb2775c494e901f9"},{"author":{"_account_id":20160,"name":"haobing1","email":"bing.hao@easystack.cn","username":"haobing"},"change_message_id":"4eca77ce23220205a3769204522d99b1e5419e2a","unresolved":false,"context_lines":[{"line_number":904,"context_line":"        engine \u003d quota.VolumeTypeQuotaEngine()"},{"line_number":905,"context_line":"        engine.update_quota_resource(ctx, \u0027type1\u0027, \u0027type2\u0027)"},{"line_number":906,"context_line":""},{"line_number":907,"context_line":"    def test_delete_quota_associated_volume_type(self):"},{"line_number":908,"context_line":"        ctx \u003d context.RequestContext(\u0027admin\u0027, \u0027admin\u0027, is_admin\u003dTrue)"},{"line_number":909,"context_line":""},{"line_number":910,"context_line":"        engine \u003d quota.VolumeTypeQuotaEngine()"}],"source_content_type":"text/x-python","patch_set":2,"id":"02766273_3537645c","line":907,"range":{"start_line":907,"start_character":8,"end_line":907,"end_character":48},"in_reply_to":"c10ed6a6_41426c00","updated":"2021-03-16 02:41:36.000000000","message":"Done","commit_id":"794062e6fa6d05bfc65555bccb2775c494e901f9"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"b3db32e4972787fe593d926882b9a75a7501d95f","unresolved":true,"context_lines":[{"line_number":904,"context_line":"        engine \u003d quota.VolumeTypeQuotaEngine()"},{"line_number":905,"context_line":"        engine.update_quota_resource(ctx, \u0027type1\u0027, \u0027type2\u0027)"},{"line_number":906,"context_line":""},{"line_number":907,"context_line":"    def test_delete_quota_associated_volume_type(self):"},{"line_number":908,"context_line":"        ctx \u003d context.RequestContext(\u0027admin\u0027, \u0027admin\u0027, is_admin\u003dTrue)"},{"line_number":909,"context_line":""},{"line_number":910,"context_line":"        engine \u003d quota.VolumeTypeQuotaEngine()"}],"source_content_type":"text/x-python","patch_set":3,"id":"0361075d_ac10465e","line":907,"range":{"start_line":907,"start_character":8,"end_line":907,"end_character":48},"updated":"2021-01-15 11:05:27.000000000","message":"-1: As mentioned in previous patchset:\n\nI think I may be missing something... How are we testing here that we are doing what we should be doing?\n \nWe need to confirm that we are calling the 3 DB methods with the 3 resource types using mocks.\nThen we also need to have in the DB test file tests for the new DB methods.","commit_id":"244509c061b06ae2430037cc38d34aff39459887"},{"author":{"_account_id":20160,"name":"haobing1","email":"bing.hao@easystack.cn","username":"haobing"},"change_message_id":"4eca77ce23220205a3769204522d99b1e5419e2a","unresolved":false,"context_lines":[{"line_number":904,"context_line":"        engine \u003d quota.VolumeTypeQuotaEngine()"},{"line_number":905,"context_line":"        engine.update_quota_resource(ctx, \u0027type1\u0027, \u0027type2\u0027)"},{"line_number":906,"context_line":""},{"line_number":907,"context_line":"    def test_delete_quota_associated_volume_type(self):"},{"line_number":908,"context_line":"        ctx \u003d context.RequestContext(\u0027admin\u0027, \u0027admin\u0027, is_admin\u003dTrue)"},{"line_number":909,"context_line":""},{"line_number":910,"context_line":"        engine \u003d quota.VolumeTypeQuotaEngine()"}],"source_content_type":"text/x-python","patch_set":3,"id":"035ef24a_5be34931","line":907,"range":{"start_line":907,"start_character":8,"end_line":907,"end_character":48},"in_reply_to":"0361075d_ac10465e","updated":"2021-03-16 02:41:36.000000000","message":"Done","commit_id":"244509c061b06ae2430037cc38d34aff39459887"}],"cinder/volume/volume_types.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"932991735be828629b78b3d3e7d8ae30f5b998c4","unresolved":true,"context_lines":[{"line_number":138,"context_line":"        raise exception.VolumeTypeDefaultDeletionError(volume_type_id\u003did)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    elevated \u003d context if context.is_admin else context.elevated()"},{"line_number":141,"context_line":"    volume_type \u003d get_volume_type(elevated, id)"},{"line_number":142,"context_line":"    result \u003d db.volume_type_destroy(elevated, id)"},{"line_number":143,"context_line":"    QUOTAS.delete_quota_associated_volume_type(elevated,"},{"line_number":144,"context_line":"                                               volume_type.get(\u0027name\u0027))"}],"source_content_type":"text/x-python","patch_set":2,"id":"b02a6422_8c215634","line":141,"range":{"start_line":141,"start_character":0,"end_line":141,"end_character":47},"updated":"2021-01-14 11:14:50.000000000","message":"nit: I think we should pass the type id to the \"delete_quota_associated_volume_type\" method and   get the type name there.","commit_id":"794062e6fa6d05bfc65555bccb2775c494e901f9"},{"author":{"_account_id":20160,"name":"haobing1","email":"bing.hao@easystack.cn","username":"haobing"},"change_message_id":"4eca77ce23220205a3769204522d99b1e5419e2a","unresolved":true,"context_lines":[{"line_number":138,"context_line":"        raise exception.VolumeTypeDefaultDeletionError(volume_type_id\u003did)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    elevated \u003d context if context.is_admin else context.elevated()"},{"line_number":141,"context_line":"    volume_type \u003d get_volume_type(elevated, id)"},{"line_number":142,"context_line":"    result \u003d db.volume_type_destroy(elevated, id)"},{"line_number":143,"context_line":"    QUOTAS.delete_quota_associated_volume_type(elevated,"},{"line_number":144,"context_line":"                                               volume_type.get(\u0027name\u0027))"}],"source_content_type":"text/x-python","patch_set":2,"id":"de4a20f5_6eefc261","line":141,"range":{"start_line":141,"start_character":0,"end_line":141,"end_character":47},"in_reply_to":"b02a6422_8c215634","updated":"2021-03-16 02:41:36.000000000","message":"Because the volume type is deleted first and then \"delete_quota_associated_volume_type\" method be called, we need to get the name of the volume type before deleting it. If pass the type id to the \"delete_quota_associated_volume_type\" method, we can’t get the name of the volume type.\n\n thank you!","commit_id":"794062e6fa6d05bfc65555bccb2775c494e901f9"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"b3db32e4972787fe593d926882b9a75a7501d95f","unresolved":true,"context_lines":[{"line_number":138,"context_line":"        raise exception.VolumeTypeDefaultDeletionError(volume_type_id\u003did)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    elevated \u003d context if context.is_admin else context.elevated()"},{"line_number":141,"context_line":"    volume_type \u003d get_volume_type(elevated, id)"},{"line_number":142,"context_line":"    result \u003d db.volume_type_destroy(elevated, id)"},{"line_number":143,"context_line":"    QUOTAS.delete_quota_associated_volume_type(elevated,"},{"line_number":144,"context_line":"                                               volume_type.get(\u0027name\u0027))"}],"source_content_type":"text/x-python","patch_set":3,"id":"1cd7d592_6fb5b1f0","line":141,"range":{"start_line":141,"start_character":0,"end_line":141,"end_character":47},"updated":"2021-01-15 11:05:27.000000000","message":"nit: I think we should pass the type id to the \"delete_quota_associated_volume_type\" method and   get the type name there.\n\nIt\u0027s OK if you disagree, but it would be nice to hear your reasons...","commit_id":"244509c061b06ae2430037cc38d34aff39459887"},{"author":{"_account_id":20160,"name":"haobing1","email":"bing.hao@easystack.cn","username":"haobing"},"change_message_id":"4eca77ce23220205a3769204522d99b1e5419e2a","unresolved":true,"context_lines":[{"line_number":138,"context_line":"        raise exception.VolumeTypeDefaultDeletionError(volume_type_id\u003did)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    elevated \u003d context if context.is_admin else context.elevated()"},{"line_number":141,"context_line":"    volume_type \u003d get_volume_type(elevated, id)"},{"line_number":142,"context_line":"    result \u003d db.volume_type_destroy(elevated, id)"},{"line_number":143,"context_line":"    QUOTAS.delete_quota_associated_volume_type(elevated,"},{"line_number":144,"context_line":"                                               volume_type.get(\u0027name\u0027))"}],"source_content_type":"text/x-python","patch_set":3,"id":"90664cbd_f4a9c979","line":141,"range":{"start_line":141,"start_character":0,"end_line":141,"end_character":47},"in_reply_to":"1cd7d592_6fb5b1f0","updated":"2021-03-16 02:41:36.000000000","message":"Hi, Gorka\n\nBecause the volume type is deleted first and then \"delete_quota_associated_volume_type\" method be called, we need to get the name of the volume type before deleting it. If pass the type id to the \"delete_quota_associated_volume_type\" method, we can’t get the name of the volume type.\n thank you!","commit_id":"244509c061b06ae2430037cc38d34aff39459887"}]}
