)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"86913f1706d2a3609cc048324ba865c3d7ad4f73","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"4a3e6645_ed179c05","updated":"2022-04-11 14:45:13.000000000","message":"A few comments inline, but overall this looks fine.","commit_id":"f3d837118b86b9a7100ac770b4e8ef406026599e"},{"author":{"_account_id":30615,"name":"Tushar Trambak Gite","email":"tushargite96@gmail.com","username":"tushargite96"},"change_message_id":"5ddeaeff2bfefa53c8b759fff24df1f9b8e80836","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"16e23ac3_0d420272","updated":"2022-03-24 09:33:23.000000000","message":"LGTM","commit_id":"f3d837118b86b9a7100ac770b4e8ef406026599e"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"095bf2411711a02c5ef1657e02b56e10fc87cefd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"0211cd94_d4bcc3e4","updated":"2022-05-18 04:14:44.000000000","message":"One question inline but that can be answered later. LGTM.","commit_id":"4ffe3139cf54bcdcb66f74aec6c294d72f7d3cce"}],"cinder/db/sqlalchemy/api.py":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"86913f1706d2a3609cc048324ba865c3d7ad4f73","unresolved":true,"context_lines":[{"line_number":2002,"context_line":""},{"line_number":2003,"context_line":"# TODO: Remove \u0027session\u0027 parameter once all callers are updated"},{"line_number":2004,"context_line":"@require_admin_context"},{"line_number":2005,"context_line":"def _backup_data_get_for_project(context, project_id, volume_type_id\u003dNone,"},{"line_number":2006,"context_line":"                                 session\u003dNone):"},{"line_number":2007,"context_line":"    query \u003d model_query(context,"},{"line_number":2008,"context_line":"                        func.count(models.Backup.id),"}],"source_content_type":"text/x-python","patch_set":3,"id":"2178dd7d_c1a1eb70","side":"PARENT","line":2005,"updated":"2022-04-11 14:45:13.000000000","message":"Note: This function is moved to line 5884, where it can live with the other backup-related functions.","commit_id":"58f23045962fcbbc033f6d61c34781e2fc3798da"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"8f30cdfc1e77c4e29978b53b38a68706ddd35132","unresolved":false,"context_lines":[{"line_number":2002,"context_line":""},{"line_number":2003,"context_line":"# TODO: Remove \u0027session\u0027 parameter once all callers are updated"},{"line_number":2004,"context_line":"@require_admin_context"},{"line_number":2005,"context_line":"def _backup_data_get_for_project(context, project_id, volume_type_id\u003dNone,"},{"line_number":2006,"context_line":"                                 session\u003dNone):"},{"line_number":2007,"context_line":"    query \u003d model_query(context,"},{"line_number":2008,"context_line":"                        func.count(models.Backup.id),"}],"source_content_type":"text/x-python","patch_set":3,"id":"cf626142_dacac2a1","side":"PARENT","line":2005,"in_reply_to":"2178dd7d_c1a1eb70","updated":"2022-04-27 14:42:05.000000000","message":"Ack","commit_id":"58f23045962fcbbc033f6d61c34781e2fc3798da"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"86913f1706d2a3609cc048324ba865c3d7ad4f73","unresolved":true,"context_lines":[{"line_number":2319,"context_line":"        )"},{"line_number":2320,"context_line":""},{"line_number":2321,"context_line":""},{"line_number":2322,"context_line":"# TODO: Remove \u0027session\u0027 argument when all of the \u0027_get\u0027 helpers are converted"},{"line_number":2323,"context_line":"@require_context"},{"line_number":2324,"context_line":"def _volume_get(context, volume_id, joined_load\u003dTrue, for_update\u003dFalse):"},{"line_number":2325,"context_line":"    result \u003d _volume_get_query("}],"source_content_type":"text/x-python","patch_set":3,"id":"b42eccfd_48d80f7d","line":2322,"range":{"start_line":2322,"start_character":0,"end_line":2322,"end_character":78},"updated":"2022-04-11 14:45:13.000000000","message":"nit: looks like this comment is no longer applicable, but I imagine it will be removed on your final patch in the series","commit_id":"f3d837118b86b9a7100ac770b4e8ef406026599e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"8f30cdfc1e77c4e29978b53b38a68706ddd35132","unresolved":false,"context_lines":[{"line_number":2319,"context_line":"        )"},{"line_number":2320,"context_line":""},{"line_number":2321,"context_line":""},{"line_number":2322,"context_line":"# TODO: Remove \u0027session\u0027 argument when all of the \u0027_get\u0027 helpers are converted"},{"line_number":2323,"context_line":"@require_context"},{"line_number":2324,"context_line":"def _volume_get(context, volume_id, joined_load\u003dTrue, for_update\u003dFalse):"},{"line_number":2325,"context_line":"    result \u003d _volume_get_query("}],"source_content_type":"text/x-python","patch_set":3,"id":"c75e53ce_c981c632","line":2322,"range":{"start_line":2322,"start_character":0,"end_line":2322,"end_character":78},"in_reply_to":"b42eccfd_48d80f7d","updated":"2022-04-27 14:42:05.000000000","message":"Yup, removed later","commit_id":"f3d837118b86b9a7100ac770b4e8ef406026599e"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"86913f1706d2a3609cc048324ba865c3d7ad4f73","unresolved":true,"context_lines":[{"line_number":3247,"context_line":"    volume_ref \u003d _volume_get(context, volume_id)"},{"line_number":3248,"context_line":"    # We need to get and update volume using same session because"},{"line_number":3249,"context_line":"    # there is possibility that instance is deleted between the \u0027get\u0027"},{"line_number":3250,"context_line":"    # and \u0027update\u0027 volume call."},{"line_number":3251,"context_line":"    if not volume_ref[\u0027volume_attachment\u0027]:"},{"line_number":3252,"context_line":"        volume_ref.update({\u0027status\u0027: \u0027available\u0027})"},{"line_number":3253,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":3,"id":"2ec289bd_46a19576","line":3250,"updated":"2022-04-11 14:45:13.000000000","message":"I guess this comment isn\u0027t really necessary since we\u0027re not calling get_session() all over the place anymore and we know these calls are being made in the same session passed in via the context, but it may be a good reminder.","commit_id":"f3d837118b86b9a7100ac770b4e8ef406026599e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"8f30cdfc1e77c4e29978b53b38a68706ddd35132","unresolved":false,"context_lines":[{"line_number":3247,"context_line":"    volume_ref \u003d _volume_get(context, volume_id)"},{"line_number":3248,"context_line":"    # We need to get and update volume using same session because"},{"line_number":3249,"context_line":"    # there is possibility that instance is deleted between the \u0027get\u0027"},{"line_number":3250,"context_line":"    # and \u0027update\u0027 volume call."},{"line_number":3251,"context_line":"    if not volume_ref[\u0027volume_attachment\u0027]:"},{"line_number":3252,"context_line":"        volume_ref.update({\u0027status\u0027: \u0027available\u0027})"},{"line_number":3253,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":3,"id":"a15f6069_d752bfc0","line":3250,"in_reply_to":"2ec289bd_46a19576","updated":"2022-04-27 14:42:05.000000000","message":"Good point. Can remove in a follow-up","commit_id":"f3d837118b86b9a7100ac770b4e8ef406026599e"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"86913f1706d2a3609cc048324ba865c3d7ad4f73","unresolved":true,"context_lines":[{"line_number":3272,"context_line":"            models.Volume.id \u003d\u003d models.Snapshot.volume_id,"},{"line_number":3273,"context_line":"            ~models.Snapshot.deleted,"},{"line_number":3274,"context_line":"            or_("},{"line_number":3275,"context_line":"                models.Snapshot.cgsnapshot_id !\u003d None,  # noqa: !\u003d None"},{"line_number":3276,"context_line":"                models.Snapshot.status.notin_(deletable_statuses),"},{"line_number":3277,"context_line":"            ),"},{"line_number":3278,"context_line":"            or_("}],"source_content_type":"text/x-python","patch_set":3,"id":"f977a663_40142f3d","line":3275,"range":{"start_line":3275,"start_character":64,"end_line":3275,"end_character":71},"updated":"2022-04-11 14:45:13.000000000","message":"Not sure why this isn\u0027t E711, but changing that isn\u0027t your concern.","commit_id":"f3d837118b86b9a7100ac770b4e8ef406026599e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"8f30cdfc1e77c4e29978b53b38a68706ddd35132","unresolved":false,"context_lines":[{"line_number":3272,"context_line":"            models.Volume.id \u003d\u003d models.Snapshot.volume_id,"},{"line_number":3273,"context_line":"            ~models.Snapshot.deleted,"},{"line_number":3274,"context_line":"            or_("},{"line_number":3275,"context_line":"                models.Snapshot.cgsnapshot_id !\u003d None,  # noqa: !\u003d None"},{"line_number":3276,"context_line":"                models.Snapshot.status.notin_(deletable_statuses),"},{"line_number":3277,"context_line":"            ),"},{"line_number":3278,"context_line":"            or_("}],"source_content_type":"text/x-python","patch_set":3,"id":"0c2f5c8b_67ca8025","line":3275,"range":{"start_line":3275,"start_character":64,"end_line":3275,"end_character":71},"in_reply_to":"f977a663_40142f3d","updated":"2022-04-27 14:42:05.000000000","message":"Yeah, I think this is being parsed as equivalent to the plain old \u0027# noqa\u0027","commit_id":"f3d837118b86b9a7100ac770b4e8ef406026599e"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"095bf2411711a02c5ef1657e02b56e10fc87cefd","unresolved":false,"context_lines":[{"line_number":2707,"context_line":""},{"line_number":2708,"context_line":"    :param context: context to query under"},{"line_number":2709,"context_line":"    :param project_only: limit summary to project volumes"},{"line_number":2710,"context_line":"    :param filters: dictionary of filters; values that are in lists, tuples,"},{"line_number":2711,"context_line":"        or sets cause an \u0027IN\u0027 operation, while exact matching is used for other"},{"line_number":2712,"context_line":"        values, see _process_volume_filters function for more information"},{"line_number":2713,"context_line":"    :returns: volume summary"},{"line_number":2714,"context_line":"    \"\"\""},{"line_number":2715,"context_line":"    if not (project_only or is_admin_context(context)):"}],"source_content_type":"text/x-python","patch_set":4,"id":"632a0bc8_abd60248","line":2712,"range":{"start_line":2710,"start_character":0,"end_line":2712,"end_character":73},"updated":"2022-05-18 04:14:44.000000000","message":"Note for myself: There are a bunch of places in the previous patches where I\u0027ve disagreed with black\u0027s formatting choices and this is another addition to it.","commit_id":"4ffe3139cf54bcdcb66f74aec6c294d72f7d3cce"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"095bf2411711a02c5ef1657e02b56e10fc87cefd","unresolved":true,"context_lines":[{"line_number":2910,"context_line":"    :param paginate_type: type of pagination to generate"},{"line_number":2911,"context_line":"    :returns: updated query or None"},{"line_number":2912,"context_line":"    \"\"\""},{"line_number":2913,"context_line":"    if hasattr(context, \u0027session\u0027):"},{"line_number":2914,"context_line":"        if session:"},{"line_number":2915,"context_line":"            # sanity check"},{"line_number":2916,"context_line":"            raise RuntimeError("},{"line_number":2917,"context_line":"                \"Looks like someone forgot to remove the \u0027session\u0027 argument \""},{"line_number":2918,"context_line":"                \"from a call to \u0027_generate_paginate_query\u0027. This is \""},{"line_number":2919,"context_line":"                \"programmer error\""},{"line_number":2920,"context_line":"            )"},{"line_number":2921,"context_line":""},{"line_number":2922,"context_line":"        session \u003d context.session"},{"line_number":2923,"context_line":""},{"line_number":2924,"context_line":"    get_query, process_filters, get \u003d PAGINATION_HELPERS[paginate_type]"},{"line_number":2925,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"2c9172fa_09747610","line":2922,"range":{"start_line":2913,"start_character":0,"end_line":2922,"end_character":33},"updated":"2022-05-18 04:14:44.000000000","message":"I see that a lot of callers have been updated to pass None as session. Just to be sure, those callers, whether private methods starting with _, should have a parent decorated with the context manager reader/writer to get the context.session and for other unmodified methods we are still passing the session right?","commit_id":"4ffe3139cf54bcdcb66f74aec6c294d72f7d3cce"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ebca4cecf7186bcc19208c6c28f634b69d58307b","unresolved":false,"context_lines":[{"line_number":2910,"context_line":"    :param paginate_type: type of pagination to generate"},{"line_number":2911,"context_line":"    :returns: updated query or None"},{"line_number":2912,"context_line":"    \"\"\""},{"line_number":2913,"context_line":"    if hasattr(context, \u0027session\u0027):"},{"line_number":2914,"context_line":"        if session:"},{"line_number":2915,"context_line":"            # sanity check"},{"line_number":2916,"context_line":"            raise RuntimeError("},{"line_number":2917,"context_line":"                \"Looks like someone forgot to remove the \u0027session\u0027 argument \""},{"line_number":2918,"context_line":"                \"from a call to \u0027_generate_paginate_query\u0027. This is \""},{"line_number":2919,"context_line":"                \"programmer error\""},{"line_number":2920,"context_line":"            )"},{"line_number":2921,"context_line":""},{"line_number":2922,"context_line":"        session \u003d context.session"},{"line_number":2923,"context_line":""},{"line_number":2924,"context_line":"    get_query, process_filters, get \u003d PAGINATION_HELPERS[paginate_type]"},{"line_number":2925,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7d16a7db_61d60e83","line":2922,"range":{"start_line":2913,"start_character":0,"end_line":2922,"end_character":33},"in_reply_to":"2c9172fa_09747610","updated":"2022-05-18 15:50:12.000000000","message":"That\u0027s the basic idea, yeah. The idea here is to make sure we\u0027re not doing *both* of those things (i.e. we\u0027ve forgotten to update a nested function or something).","commit_id":"4ffe3139cf54bcdcb66f74aec6c294d72f7d3cce"}]}
