)]}'
{"cinder/db/sqlalchemy/api.py":[{"author":{"_account_id":20813,"name":"Sofia Enriquez","email":"lsofia.enriquez@gmail.com","username":"enriquetaso"},"change_message_id":"1d7c2c34b03c2d30d0f8ecc6057a948f3654702b","unresolved":true,"context_lines":[{"line_number":7391,"context_line":"    return 0 !\u003d result"},{"line_number":7392,"context_line":""},{"line_number":7393,"context_line":""},{"line_number":7394,"context_line":"# TODO: (Y Release) remove method and this comment"},{"line_number":7395,"context_line":"@enginefacade.writer"},{"line_number":7396,"context_line":"def volume_use_quota_online_data_migration(context, max_count):"},{"line_number":7397,"context_line":"    def calculate_use_quota(volume):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5e775c2b_f1f83651","line":7394,"range":{"start_line":7394,"start_character":0,"end_line":7394,"end_character":50},"updated":"2021-09-02 20:37:04.000000000","message":"It\u0027s not related to this patch but looks like in a couple weeks we should remove @enginefacade.writer.","commit_id":"d613c3077d7c9bb824af0f9923e698eaa58304d2"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"bb6331156f4c332c902a966e8f689b2e265e8fc6","unresolved":true,"context_lines":[{"line_number":7395,"context_line":"@enginefacade.writer"},{"line_number":7396,"context_line":"def volume_use_quota_online_data_migration(context, max_count):"},{"line_number":7397,"context_line":"    def calculate_use_quota(volume):"},{"line_number":7398,"context_line":"        if volume.migration_status:"},{"line_number":7399,"context_line":"            return not (volume.migration_status.startswith(\u0027target:\u0027) or"},{"line_number":7400,"context_line":"                        volume.admin_metadata.get(\u0027temporary\u0027) \u003d\u003d \u0027True\u0027)"},{"line_number":7401,"context_line":"        return True"},{"line_number":7402,"context_line":""},{"line_number":7403,"context_line":"    return use_quota_online_data_migration(context, max_count, \u0027Volume\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"fb9e0443_2c0aebe2","line":7400,"range":{"start_line":7398,"start_character":0,"end_line":7400,"end_character":73},"updated":"2021-09-06 13:12:17.000000000","message":"-1: What if the volume.migration_status is None yet volume.admin_metadada[\u0027temporary\u0027] is True?\nThen we would be incorrectly returning True.\n\nAlternative proposal:\n\n         not ((volume.migration_status or \u0027\u0027).startswith(\u0027target:\u0027) or\n              volume.admin_metadata.get(\u0027temporary\u0027) \u003d\u003d \u0027True\u0027)","commit_id":"3082546119d10ef1eeae463bc0ad7f8190b9fc22"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"e5853631008b1b0d500398e3b0724767831fc15b","unresolved":false,"context_lines":[{"line_number":7395,"context_line":"@enginefacade.writer"},{"line_number":7396,"context_line":"def volume_use_quota_online_data_migration(context, max_count):"},{"line_number":7397,"context_line":"    def calculate_use_quota(volume):"},{"line_number":7398,"context_line":"        if volume.migration_status:"},{"line_number":7399,"context_line":"            return not (volume.migration_status.startswith(\u0027target:\u0027) or"},{"line_number":7400,"context_line":"                        volume.admin_metadata.get(\u0027temporary\u0027) \u003d\u003d \u0027True\u0027)"},{"line_number":7401,"context_line":"        return True"},{"line_number":7402,"context_line":""},{"line_number":7403,"context_line":"    return use_quota_online_data_migration(context, max_count, \u0027Volume\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"83e413e9_55776c9e","line":7400,"range":{"start_line":7398,"start_character":0,"end_line":7400,"end_character":73},"in_reply_to":"fb9e0443_2c0aebe2","updated":"2021-09-06 13:48:31.000000000","message":"Done","commit_id":"3082546119d10ef1eeae463bc0ad7f8190b9fc22"},{"author":{"_account_id":30491,"name":"Radosław Piliszek","display_name":"Radek","email":"radek@piliszek.it","username":"yoctozepto","status":"self-employed techologist, collaborating mostly with 7bulls.com"},"change_message_id":"022c59e4e2333ddb53c8efe0b17a548c3894ddcd","unresolved":true,"context_lines":[{"line_number":7395,"context_line":"@enginefacade.writer"},{"line_number":7396,"context_line":"def volume_use_quota_online_data_migration(context, max_count):"},{"line_number":7397,"context_line":"    def calculate_use_quota(volume):"},{"line_number":7398,"context_line":"        is_migrating \u003d (volume.migration_status or \u0027\u0027).startswith(\u0027target:\u0027)"},{"line_number":7399,"context_line":"        is_temporary \u003d False"},{"line_number":7400,"context_line":"        if hasattr(volume, \u0027admin_metadata\u0027):"},{"line_number":7401,"context_line":"            is_temporary \u003d volume.admin_metadata.get(\u0027temporary\u0027) \u003d\u003d \u0027True\u0027"},{"line_number":7402,"context_line":"        return not (is_migrating or is_temporary)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9cf33c47_313508b3","line":7399,"range":{"start_line":7398,"start_character":8,"end_line":7399,"end_character":28},"updated":"2021-09-07 11:08:15.000000000","message":"side-note: these two is_* look like good candidates to live at the volume model level as helper attributes","commit_id":"b34f0f3e2ccafca2bdbe4b2671cae4072e6e084f"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"0df098a6136e7f5dad525d439d53a26719dc1e0b","unresolved":true,"context_lines":[{"line_number":7395,"context_line":"@enginefacade.writer"},{"line_number":7396,"context_line":"def volume_use_quota_online_data_migration(context, max_count):"},{"line_number":7397,"context_line":"    def calculate_use_quota(volume):"},{"line_number":7398,"context_line":"        is_migrating \u003d (volume.migration_status or \u0027\u0027).startswith(\u0027target:\u0027)"},{"line_number":7399,"context_line":"        is_temporary \u003d False"},{"line_number":7400,"context_line":"        if hasattr(volume, \u0027admin_metadata\u0027):"},{"line_number":7401,"context_line":"            is_temporary \u003d volume.admin_metadata.get(\u0027temporary\u0027) \u003d\u003d \u0027True\u0027"},{"line_number":7402,"context_line":"        return not (is_migrating or is_temporary)"}],"source_content_type":"text/x-python","patch_set":6,"id":"c893d044_77ce7663","line":7399,"range":{"start_line":7398,"start_character":8,"end_line":7399,"end_character":28},"in_reply_to":"9cf33c47_313508b3","updated":"2021-09-07 14:38:22.000000000","message":"Good idea on the is_migrating being a model attribute.\nFor is_temporary we already have the new \"use_quota\" DB field (was introduced in the patch that this is fixing).  This piece of code is to migrate to that field.","commit_id":"b34f0f3e2ccafca2bdbe4b2671cae4072e6e084f"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"0df098a6136e7f5dad525d439d53a26719dc1e0b","unresolved":true,"context_lines":[{"line_number":7399,"context_line":"        is_temporary \u003d False"},{"line_number":7400,"context_line":"        if hasattr(volume, \u0027admin_metadata\u0027):"},{"line_number":7401,"context_line":"            is_temporary \u003d volume.admin_metadata.get(\u0027temporary\u0027) \u003d\u003d \u0027True\u0027"},{"line_number":7402,"context_line":"        return not (is_migrating or is_temporary)"},{"line_number":7403,"context_line":""},{"line_number":7404,"context_line":"    return use_quota_online_data_migration(context, max_count, \u0027Volume\u0027,"},{"line_number":7405,"context_line":"                                           calculate_use_quota)"}],"source_content_type":"text/x-python","patch_set":6,"id":"c8b80440_d135d07d","line":7402,"updated":"2021-09-07 14:38:22.000000000","message":"-1: As I mention in the reply to Radoslaw, my code was terrible and we don\u0027t have the volume_admin_metadata information loaded into the volume.\n\nSo we have to change this to load that information. :-(\n\nThe field in that case will always be present, though it can be None.","commit_id":"b34f0f3e2ccafca2bdbe4b2671cae4072e6e084f"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"f239d99b7655a1cf74fef461b0df2dbc30928961","unresolved":true,"context_lines":[{"line_number":7399,"context_line":"        is_temporary \u003d False"},{"line_number":7400,"context_line":"        if hasattr(volume, \u0027admin_metadata\u0027):"},{"line_number":7401,"context_line":"            is_temporary \u003d volume.admin_metadata.get(\u0027temporary\u0027) \u003d\u003d \u0027True\u0027"},{"line_number":7402,"context_line":"        return not (is_migrating or is_temporary)"},{"line_number":7403,"context_line":""},{"line_number":7404,"context_line":"    return use_quota_online_data_migration(context, max_count, \u0027Volume\u0027,"},{"line_number":7405,"context_line":"                                           calculate_use_quota)"}],"source_content_type":"text/x-python","patch_set":6,"id":"f1a418e2_e5d1b8f9","line":7402,"in_reply_to":"c8b80440_d135d07d","updated":"2021-09-09 10:28:00.000000000","message":"I checked and the volume_admin_metadata info is loaded with volume so no need to do the joinedload in query.\nThe thing here is, it is loaded as a list of admin meta items and we\u0027ve to traverse from it to find the admin meta we are looking for i.e. key\u003d\u0027temporary\u0027 value\u003d\u0027True\u0027\nUpdated the code in next PS.","commit_id":"b34f0f3e2ccafca2bdbe4b2671cae4072e6e084f"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"b0fb8bbb8a80907b1b362385fac4b6a963789bc1","unresolved":true,"context_lines":[{"line_number":7397,"context_line":"    def calculate_use_quota(volume):"},{"line_number":7398,"context_line":"        is_migrating \u003d (volume.migration_status or \u0027\u0027).startswith(\u0027target:\u0027)"},{"line_number":7399,"context_line":"        is_temporary \u003d False"},{"line_number":7400,"context_line":"        if volume.volume_admin_metadata:"},{"line_number":7401,"context_line":"            for admin_meta in volume.volume_admin_metadata:"},{"line_number":7402,"context_line":"                if (admin_meta.key \u003d\u003d \u0027temporary\u0027) and ("},{"line_number":7403,"context_line":"                        admin_meta.value \u003d\u003d \u0027True\u0027):"}],"source_content_type":"text/x-python","patch_set":7,"id":"955f811c_1495516e","line":7400,"range":{"start_line":7400,"start_character":11,"end_line":7400,"end_character":40},"updated":"2021-09-14 15:36:12.000000000","message":"-1: This field is being lazy loaded because on L1436 we use the generic model_query method that doesn\u0027t do the joined load.  The lazy loading relies on the session used to load the data being alive, and if it isn\u0027t then we\u0027ll get an error.\n\nWe\u0027ve had a lot of those errors over the years, so we should be very careful with them.","commit_id":"3c9ef7042bf79d085b01c1cf37aa193ddb411178"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"7a6871057072ac698b7e76fe47f521eb12577c4b","unresolved":true,"context_lines":[{"line_number":7398,"context_line":"        is_migrating \u003d (volume.migration_status or \u0027\u0027).startswith(\u0027target:\u0027)"},{"line_number":7399,"context_line":"        is_temporary \u003d False"},{"line_number":7400,"context_line":"        if volume.volume_admin_metadata:"},{"line_number":7401,"context_line":"            for admin_meta in volume.volume_admin_metadata:"},{"line_number":7402,"context_line":"                if (admin_meta.key \u003d\u003d \u0027temporary\u0027) and ("},{"line_number":7403,"context_line":"                        admin_meta.value \u003d\u003d \u0027True\u0027):"},{"line_number":7404,"context_line":"                    is_temporary \u003d True"},{"line_number":7405,"context_line":"                    break"},{"line_number":7406,"context_line":"        return not (is_migrating or is_temporary)"},{"line_number":7407,"context_line":""},{"line_number":7408,"context_line":"    return use_quota_online_data_migration(context, max_count, \u0027Volume\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"8d3d8bd1_c96e3d1e","line":7405,"range":{"start_line":7401,"start_character":0,"end_line":7405,"end_character":25},"updated":"2021-09-14 16:03:34.000000000","message":"nit: Shorter and a bit more readable:\n            is_temporary \u003d any(meta.key \u003d\u003d \u0027temporary\u0027 and meta.value \u003d\u003d \u0027True\u0027\n                               for meta in volume.volume_admin_metadata)","commit_id":"53c3b192ec3327c5426810e227abf9fe25540ae1"}]}
