)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":38463,"name":"llm tech","display_name":"llmtech","email":"llm.tech.developer@gmail.com","username":"llmtech"},"change_message_id":"9e25030e82b5cdb984b6751631476738714f6f75","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"dfc8d58b_b3e933c2","updated":"2025-10-28 14:45:45.000000000","message":"I marked all the comments as resolved.","commit_id":"461769b90f4959c9454b57798e9c03c48b9ab20e"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"d33533abb40b7667afba1ad9114dd15d4c1962b1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"3a20ef5a_31a140f3","updated":"2025-10-28 14:32:53.000000000","message":"Thanks for rebasing this change. Please mark comments as resolved in the places they were.","commit_id":"461769b90f4959c9454b57798e9c03c48b9ab20e"}],"manilaclient/v2/shell.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"97d3c77765611ae45496cb919ad382e8922d8ca2","unresolved":true,"context_lines":[{"line_number":1860,"context_line":"    access \u003d share_snapshot.allow(args.access_type, args.access_to)"},{"line_number":1861,"context_line":"    cliutils.print_dict(access)"},{"line_number":1862,"context_line":"    if args.wait:"},{"line_number":1863,"context_line":"        share_snapshot \u003d _wait_for_resource_status(cs, snapshot,"},{"line_number":1864,"context_line":"                                                   resource_type\u003d\u0027snapshot\u0027)"},{"line_number":1865,"context_line":"    else:"},{"line_number":1866,"context_line":"        share_snapshot \u003d _find_share_snapshot(cs, args.snapshot)"}],"source_content_type":"text/x-python","patch_set":1,"id":"b4b420db_da0ee93e","line":1863,"range":{"start_line":1863,"start_character":25,"end_line":1863,"end_character":50},"updated":"2021-03-16 02:19:11.000000000","message":"unfortunately the \"status\" attribute on a snapshot does not tell you whether the access rules are applied or not. You\u0027ll need to look at the snapshot access rule and figure that out. To see how to retrieve the access available, see the \"do_snapshot_access_list\" method in this file. You can get the snapshot\u0027s access rules and then wait until the state has been set to \"active\"\n\n   accesses \u003d share_snapshot.access_list()\n   this_rule \u003d [acc for acc in accesses if acc[\u0027id\u0027] \u003d\u003d access[\u0027id\u0027]][0]\n   # this_rule[\u0027state\u0027] \u003d\u003d \u0027active\u0027? if not, repeat your check\n\n   finally, print this_rule.","commit_id":"a3221efb152b7e5d01bcfd4e54731def0f69a4fa"},{"author":{"_account_id":38463,"name":"llm tech","display_name":"llmtech","email":"llm.tech.developer@gmail.com","username":"llmtech"},"change_message_id":"9e25030e82b5cdb984b6751631476738714f6f75","unresolved":false,"context_lines":[{"line_number":1860,"context_line":"    access \u003d share_snapshot.allow(args.access_type, args.access_to)"},{"line_number":1861,"context_line":"    cliutils.print_dict(access)"},{"line_number":1862,"context_line":"    if args.wait:"},{"line_number":1863,"context_line":"        share_snapshot \u003d _wait_for_resource_status(cs, snapshot,"},{"line_number":1864,"context_line":"                                                   resource_type\u003d\u0027snapshot\u0027)"},{"line_number":1865,"context_line":"    else:"},{"line_number":1866,"context_line":"        share_snapshot \u003d _find_share_snapshot(cs, args.snapshot)"}],"source_content_type":"text/x-python","patch_set":1,"id":"514ac5d1_ac4739fd","line":1863,"range":{"start_line":1863,"start_character":25,"end_line":1863,"end_character":50},"in_reply_to":"b4b420db_da0ee93e","updated":"2025-10-28 14:45:45.000000000","message":"Done","commit_id":"a3221efb152b7e5d01bcfd4e54731def0f69a4fa"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"97d3c77765611ae45496cb919ad382e8922d8ca2","unresolved":true,"context_lines":[{"line_number":1862,"context_line":"    if args.wait:"},{"line_number":1863,"context_line":"        share_snapshot \u003d _wait_for_resource_status(cs, snapshot,"},{"line_number":1864,"context_line":"                                                   resource_type\u003d\u0027snapshot\u0027)"},{"line_number":1865,"context_line":"    else:"},{"line_number":1866,"context_line":"        share_snapshot \u003d _find_share_snapshot(cs, args.snapshot)"},{"line_number":1867,"context_line":"    _print_share_snapshot"},{"line_number":1868,"context_line":""},{"line_number":1869,"context_line":""},{"line_number":1870,"context_line":"@cliutils.arg("}],"source_content_type":"text/x-python","patch_set":1,"id":"b149479a_48884a9c","line":1867,"range":{"start_line":1865,"start_character":4,"end_line":1867,"end_character":25},"updated":"2021-03-16 02:19:11.000000000","message":"No need to print the share snapshot. The access rule needs to be printed","commit_id":"a3221efb152b7e5d01bcfd4e54731def0f69a4fa"},{"author":{"_account_id":38463,"name":"llm tech","display_name":"llmtech","email":"llm.tech.developer@gmail.com","username":"llmtech"},"change_message_id":"9e25030e82b5cdb984b6751631476738714f6f75","unresolved":false,"context_lines":[{"line_number":1862,"context_line":"    if args.wait:"},{"line_number":1863,"context_line":"        share_snapshot \u003d _wait_for_resource_status(cs, snapshot,"},{"line_number":1864,"context_line":"                                                   resource_type\u003d\u0027snapshot\u0027)"},{"line_number":1865,"context_line":"    else:"},{"line_number":1866,"context_line":"        share_snapshot \u003d _find_share_snapshot(cs, args.snapshot)"},{"line_number":1867,"context_line":"    _print_share_snapshot"},{"line_number":1868,"context_line":""},{"line_number":1869,"context_line":""},{"line_number":1870,"context_line":"@cliutils.arg("}],"source_content_type":"text/x-python","patch_set":1,"id":"69da4b64_aaadcee5","line":1867,"range":{"start_line":1865,"start_character":4,"end_line":1867,"end_character":25},"in_reply_to":"b149479a_48884a9c","updated":"2025-10-28 14:45:45.000000000","message":"Done","commit_id":"a3221efb152b7e5d01bcfd4e54731def0f69a4fa"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"97d3c77765611ae45496cb919ad382e8922d8ca2","unresolved":true,"context_lines":[{"line_number":1899,"context_line":"def do_snapshot_access_deny(cs, args):"},{"line_number":1900,"context_line":"    \"\"\"Deny access to a snapshot.\"\"\""},{"line_number":1901,"context_line":"    failure_count \u003d 0"},{"line_number":1902,"context_line":"    snapshots_to_deny \u003d []"},{"line_number":1903,"context_line":"    snapshot \u003d _find_share_snapshot(cs, args.snapshot)"},{"line_number":1904,"context_line":"    snapshots_to_deny.append(snapshot)"},{"line_number":1905,"context_line":"    for access_id in args.id:"}],"source_content_type":"text/x-python","patch_set":1,"id":"36a59d74_1e794e7d","line":1902,"range":{"start_line":1902,"start_character":0,"end_line":1902,"end_character":26},"updated":"2021-03-16 02:19:11.000000000","message":"You can only specify one snapshot, and many rule IDs\nso no need for this variabl, and for the loop on line 1919","commit_id":"a3221efb152b7e5d01bcfd4e54731def0f69a4fa"},{"author":{"_account_id":38463,"name":"llm tech","display_name":"llmtech","email":"llm.tech.developer@gmail.com","username":"llmtech"},"change_message_id":"9e25030e82b5cdb984b6751631476738714f6f75","unresolved":false,"context_lines":[{"line_number":1899,"context_line":"def do_snapshot_access_deny(cs, args):"},{"line_number":1900,"context_line":"    \"\"\"Deny access to a snapshot.\"\"\""},{"line_number":1901,"context_line":"    failure_count \u003d 0"},{"line_number":1902,"context_line":"    snapshots_to_deny \u003d []"},{"line_number":1903,"context_line":"    snapshot \u003d _find_share_snapshot(cs, args.snapshot)"},{"line_number":1904,"context_line":"    snapshots_to_deny.append(snapshot)"},{"line_number":1905,"context_line":"    for access_id in args.id:"}],"source_content_type":"text/x-python","patch_set":1,"id":"10a87694_0f0781ca","line":1902,"range":{"start_line":1902,"start_character":0,"end_line":1902,"end_character":26},"in_reply_to":"36a59d74_1e794e7d","updated":"2025-10-28 14:45:45.000000000","message":"Done","commit_id":"a3221efb152b7e5d01bcfd4e54731def0f69a4fa"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"755fc52c91f1f1de5488eb769f4b80764cd0fd64","unresolved":true,"context_lines":[{"line_number":1916,"context_line":"                                      \"snapshot rules.\")"},{"line_number":1917,"context_line":""},{"line_number":1918,"context_line":"    if args.wait:"},{"line_number":1919,"context_line":"        for snapshot in snapshots_to_deny:"},{"line_number":1920,"context_line":"            try:"},{"line_number":1921,"context_line":"                _wait_for_resource_status("},{"line_number":1922,"context_line":"                    cs, snapshot, resource_type\u003d\u0027snapshot\u0027,"},{"line_number":1923,"context_line":"                    expected_status\u003d\u0027deny\u0027)"},{"line_number":1924,"context_line":"            except exceptions.CommandError as e:"},{"line_number":1925,"context_line":"                print(e, file\u003dsys.stderr)"},{"line_number":1926,"context_line":""},{"line_number":1927,"context_line":""},{"line_number":1928,"context_line":"@api_versions.wraps(\"1.0\", \"2.20\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa36eb1_ac6492f6","line":1925,"range":{"start_line":1919,"start_character":8,"end_line":1925,"end_character":41},"updated":"2021-03-16 02:21:26.000000000","message":"Unfortunately, there is no \"status\" change in the snapshot when access rules are denied. I would suggest using the same pattern as above:\n\n  for access_id in args.id:\n      accesses \u003d snapshot.access_list()\n      # wait until args.id isn\u0027t in accesses.","commit_id":"a3221efb152b7e5d01bcfd4e54731def0f69a4fa"},{"author":{"_account_id":38463,"name":"llm tech","display_name":"llmtech","email":"llm.tech.developer@gmail.com","username":"llmtech"},"change_message_id":"9e25030e82b5cdb984b6751631476738714f6f75","unresolved":false,"context_lines":[{"line_number":1916,"context_line":"                                      \"snapshot rules.\")"},{"line_number":1917,"context_line":""},{"line_number":1918,"context_line":"    if args.wait:"},{"line_number":1919,"context_line":"        for snapshot in snapshots_to_deny:"},{"line_number":1920,"context_line":"            try:"},{"line_number":1921,"context_line":"                _wait_for_resource_status("},{"line_number":1922,"context_line":"                    cs, snapshot, resource_type\u003d\u0027snapshot\u0027,"},{"line_number":1923,"context_line":"                    expected_status\u003d\u0027deny\u0027)"},{"line_number":1924,"context_line":"            except exceptions.CommandError as e:"},{"line_number":1925,"context_line":"                print(e, file\u003dsys.stderr)"},{"line_number":1926,"context_line":""},{"line_number":1927,"context_line":""},{"line_number":1928,"context_line":"@api_versions.wraps(\"1.0\", \"2.20\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"c1736b54_bb657718","line":1925,"range":{"start_line":1919,"start_character":8,"end_line":1925,"end_character":41},"in_reply_to":"7aa36eb1_ac6492f6","updated":"2025-10-28 14:45:45.000000000","message":"Done","commit_id":"a3221efb152b7e5d01bcfd4e54731def0f69a4fa"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"8a16653ed0ee73c013e1dd002fc515e60626124a","unresolved":true,"context_lines":[{"line_number":1858,"context_line":"    \"\"\"Allow read only access to a snapshot.\"\"\""},{"line_number":1859,"context_line":"    share_snapshot \u003d _find_share_snapshot(cs, args.snapshot)"},{"line_number":1860,"context_line":"    access \u003d share_snapshot.allow(args.access_type, args.access_to)"},{"line_number":1861,"context_line":"    cliutils.print_dict(access)"},{"line_number":1862,"context_line":"    if args.wait:"},{"line_number":1863,"context_line":"        accesses \u003d share_snapshot.access_list()"},{"line_number":1864,"context_line":"        this_rule \u003d [acc for acc in accesses if acc[\u0027id\u0027] \u003d\u003d access[\u0027id\u0027]][0]"}],"source_content_type":"text/x-python","patch_set":2,"id":"92ea7609_03d0b67e","line":1861,"range":{"start_line":1861,"start_character":0,"end_line":1861,"end_character":31},"updated":"2021-03-17 22:53:08.000000000","message":"This needn\u0027t be printed here anymore; you can wait to print it if --wait is provided","commit_id":"46ee8e1432bbcd2118529b78f35eebc9ba5a481c"},{"author":{"_account_id":38463,"name":"llm tech","display_name":"llmtech","email":"llm.tech.developer@gmail.com","username":"llmtech"},"change_message_id":"9e25030e82b5cdb984b6751631476738714f6f75","unresolved":false,"context_lines":[{"line_number":1858,"context_line":"    \"\"\"Allow read only access to a snapshot.\"\"\""},{"line_number":1859,"context_line":"    share_snapshot \u003d _find_share_snapshot(cs, args.snapshot)"},{"line_number":1860,"context_line":"    access \u003d share_snapshot.allow(args.access_type, args.access_to)"},{"line_number":1861,"context_line":"    cliutils.print_dict(access)"},{"line_number":1862,"context_line":"    if args.wait:"},{"line_number":1863,"context_line":"        accesses \u003d share_snapshot.access_list()"},{"line_number":1864,"context_line":"        this_rule \u003d [acc for acc in accesses if acc[\u0027id\u0027] \u003d\u003d access[\u0027id\u0027]][0]"}],"source_content_type":"text/x-python","patch_set":2,"id":"477f861e_e7551a31","line":1861,"range":{"start_line":1861,"start_character":0,"end_line":1861,"end_character":31},"in_reply_to":"92ea7609_03d0b67e","updated":"2025-10-28 14:45:45.000000000","message":"Done","commit_id":"46ee8e1432bbcd2118529b78f35eebc9ba5a481c"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"8a16653ed0ee73c013e1dd002fc515e60626124a","unresolved":true,"context_lines":[{"line_number":1859,"context_line":"    share_snapshot \u003d _find_share_snapshot(cs, args.snapshot)"},{"line_number":1860,"context_line":"    access \u003d share_snapshot.allow(args.access_type, args.access_to)"},{"line_number":1861,"context_line":"    cliutils.print_dict(access)"},{"line_number":1862,"context_line":"    if args.wait:"},{"line_number":1863,"context_line":"        accesses \u003d share_snapshot.access_list()"},{"line_number":1864,"context_line":"        this_rule \u003d [acc for acc in accesses if acc[\u0027id\u0027] \u003d\u003d access[\u0027id\u0027]][0]"},{"line_number":1865,"context_line":"        cliutils.print_list(this_rule)"},{"line_number":1866,"context_line":"    else:"},{"line_number":1867,"context_line":"        cliutils.print_dict(access)"},{"line_number":1868,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"c7d98bfa_23e4c53d","line":1865,"range":{"start_line":1862,"start_character":4,"end_line":1865,"end_character":38},"updated":"2021-03-17 22:53:08.000000000","message":"This logic is incorrect. What it is currently doing is reading the access list, and printing the entry from the list, it isn\u0027t really \"wait\"ing for anything to happen. What should happen is in the following pseudocode:\n\n while True:\n    a) Read the access list\n    b) Extract the specific access rule from the access list\n    c) Check the \"state\" attribute on the rule\n    d) If the \"state\" is \"active\" or \"error\", bail out of the loop\n\nOnce you\u0027ve implemented this core logic, we can make some improvements:\n\n1) If the access state reaches \"error\", you need to print the access rule (using cliutils.print_dict) and raise a CommandError\n2) You can\u0027t be in an infinite waiting loop. You need some criteria to get out of the loop if the state never changes. That criteria is a timeout. Take a look at how timeout is implemented in the other waiters: https://github.com/openstack/python-manilaclient/blob/1075210b959da0daa613aaaf4f60f4b7810071f2/manilaclient/v2/shell.py#L74-L92\n3) This logic can be extracted into a method instead of being directly in line with the code. You can re-use the same logic for the \"deny_access\" waiter below.","commit_id":"46ee8e1432bbcd2118529b78f35eebc9ba5a481c"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"8a16653ed0ee73c013e1dd002fc515e60626124a","unresolved":true,"context_lines":[{"line_number":1862,"context_line":"    if args.wait:"},{"line_number":1863,"context_line":"        accesses \u003d share_snapshot.access_list()"},{"line_number":1864,"context_line":"        this_rule \u003d [acc for acc in accesses if acc[\u0027id\u0027] \u003d\u003d access[\u0027id\u0027]][0]"},{"line_number":1865,"context_line":"        cliutils.print_list(this_rule)"},{"line_number":1866,"context_line":"    else:"},{"line_number":1867,"context_line":"        cliutils.print_dict(access)"},{"line_number":1868,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"cb4cdbe4_600b239d","line":1865,"range":{"start_line":1865,"start_character":17,"end_line":1865,"end_character":27},"updated":"2021-03-17 22:53:08.000000000","message":"print_dict","commit_id":"46ee8e1432bbcd2118529b78f35eebc9ba5a481c"},{"author":{"_account_id":38463,"name":"llm tech","display_name":"llmtech","email":"llm.tech.developer@gmail.com","username":"llmtech"},"change_message_id":"9e25030e82b5cdb984b6751631476738714f6f75","unresolved":false,"context_lines":[{"line_number":1859,"context_line":"    share_snapshot \u003d _find_share_snapshot(cs, args.snapshot)"},{"line_number":1860,"context_line":"    access \u003d share_snapshot.allow(args.access_type, args.access_to)"},{"line_number":1861,"context_line":"    cliutils.print_dict(access)"},{"line_number":1862,"context_line":"    if args.wait:"},{"line_number":1863,"context_line":"        accesses \u003d share_snapshot.access_list()"},{"line_number":1864,"context_line":"        this_rule \u003d [acc for acc in accesses if acc[\u0027id\u0027] \u003d\u003d access[\u0027id\u0027]][0]"},{"line_number":1865,"context_line":"        cliutils.print_list(this_rule)"},{"line_number":1866,"context_line":"    else:"},{"line_number":1867,"context_line":"        cliutils.print_dict(access)"},{"line_number":1868,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5a38b309_bf1f5cb8","line":1865,"range":{"start_line":1862,"start_character":4,"end_line":1865,"end_character":38},"in_reply_to":"c7d98bfa_23e4c53d","updated":"2025-10-28 14:45:45.000000000","message":"Done","commit_id":"46ee8e1432bbcd2118529b78f35eebc9ba5a481c"},{"author":{"_account_id":38463,"name":"llm tech","display_name":"llmtech","email":"llm.tech.developer@gmail.com","username":"llmtech"},"change_message_id":"9e25030e82b5cdb984b6751631476738714f6f75","unresolved":false,"context_lines":[{"line_number":1862,"context_line":"    if args.wait:"},{"line_number":1863,"context_line":"        accesses \u003d share_snapshot.access_list()"},{"line_number":1864,"context_line":"        this_rule \u003d [acc for acc in accesses if acc[\u0027id\u0027] \u003d\u003d access[\u0027id\u0027]][0]"},{"line_number":1865,"context_line":"        cliutils.print_list(this_rule)"},{"line_number":1866,"context_line":"    else:"},{"line_number":1867,"context_line":"        cliutils.print_dict(access)"},{"line_number":1868,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a775771_0b172784","line":1865,"range":{"start_line":1865,"start_character":17,"end_line":1865,"end_character":27},"in_reply_to":"cb4cdbe4_600b239d","updated":"2025-10-28 14:45:45.000000000","message":"Done","commit_id":"46ee8e1432bbcd2118529b78f35eebc9ba5a481c"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"8a16653ed0ee73c013e1dd002fc515e60626124a","unresolved":true,"context_lines":[{"line_number":1918,"context_line":"            accesses \u003d snapshot.access_list()"},{"line_number":1919,"context_line":"            this_rule \u003d ["},{"line_number":1920,"context_line":"                acc for acc in accesses if acc[\u0027id\u0027] \u003d\u003d access[\u0027id\u0027]][0]"},{"line_number":1921,"context_line":"            cliutils.print_list(this_rule)"},{"line_number":1922,"context_line":""},{"line_number":1923,"context_line":""},{"line_number":1924,"context_line":"@api_versions.wraps(\"1.0\", \"2.20\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"769a83bd_6a4501bf","line":1921,"range":{"start_line":1921,"start_character":41,"end_line":1921,"end_character":42},"updated":"2021-03-17 22:53:08.000000000","message":"I am not sure i understand the intent here. If i read this right, you\u0027re looping through the rules being deleted and printing the rule as you find them. That isn\u0027t what you want... \n\nYou should be waiting until the rules are all deleted. A rule is deleted when it stops being in the response of the access_list on line 1918.","commit_id":"46ee8e1432bbcd2118529b78f35eebc9ba5a481c"},{"author":{"_account_id":38463,"name":"llm tech","display_name":"llmtech","email":"llm.tech.developer@gmail.com","username":"llmtech"},"change_message_id":"9e25030e82b5cdb984b6751631476738714f6f75","unresolved":false,"context_lines":[{"line_number":1918,"context_line":"            accesses \u003d snapshot.access_list()"},{"line_number":1919,"context_line":"            this_rule \u003d ["},{"line_number":1920,"context_line":"                acc for acc in accesses if acc[\u0027id\u0027] \u003d\u003d access[\u0027id\u0027]][0]"},{"line_number":1921,"context_line":"            cliutils.print_list(this_rule)"},{"line_number":1922,"context_line":""},{"line_number":1923,"context_line":""},{"line_number":1924,"context_line":"@api_versions.wraps(\"1.0\", \"2.20\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"e2b3cc2b_69c04db1","line":1921,"range":{"start_line":1921,"start_character":41,"end_line":1921,"end_character":42},"in_reply_to":"769a83bd_6a4501bf","updated":"2025-10-28 14:45:45.000000000","message":"Done","commit_id":"46ee8e1432bbcd2118529b78f35eebc9ba5a481c"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"88edc9616c94e03001783d610d8f631f5b7c3cbc","unresolved":true,"context_lines":[{"line_number":189,"context_line":"        cs, share, expected_status, resource_type\u003d\u0027share\u0027)"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"def _wait_for_snapshot_access_rule_state(expected):"},{"line_number":193,"context_line":"    time_elapsed \u003d 0"},{"line_number":194,"context_line":"    poll_interval \u003d 2"},{"line_number":195,"context_line":"    poll_timeout \u003d 900"}],"source_content_type":"text/x-python","patch_set":4,"id":"c711c06d_ea353f85","line":192,"range":{"start_line":192,"start_character":41,"end_line":192,"end_character":49},"updated":"2021-03-22 18:20:10.000000000","message":"can we call this \"action\" instead of \"expected\"?\n\ndid you mean to make this a keyword argument? your method invocation on 1903 and 1953 is as if this were a keyword argument...","commit_id":"7ca937bf35c44bbf7432ba711b909746e9345d95"},{"author":{"_account_id":38463,"name":"llm tech","display_name":"llmtech","email":"llm.tech.developer@gmail.com","username":"llmtech"},"change_message_id":"9e25030e82b5cdb984b6751631476738714f6f75","unresolved":false,"context_lines":[{"line_number":189,"context_line":"        cs, share, expected_status, resource_type\u003d\u0027share\u0027)"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"def _wait_for_snapshot_access_rule_state(expected):"},{"line_number":193,"context_line":"    time_elapsed \u003d 0"},{"line_number":194,"context_line":"    poll_interval \u003d 2"},{"line_number":195,"context_line":"    poll_timeout \u003d 900"}],"source_content_type":"text/x-python","patch_set":4,"id":"b9a185e9_5c3f3ada","line":192,"range":{"start_line":192,"start_character":41,"end_line":192,"end_character":49},"in_reply_to":"c711c06d_ea353f85","updated":"2025-10-28 14:45:45.000000000","message":"Done","commit_id":"7ca937bf35c44bbf7432ba711b909746e9345d95"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"88edc9616c94e03001783d610d8f631f5b7c3cbc","unresolved":true,"context_lines":[{"line_number":203,"context_line":"        try:"},{"line_number":204,"context_line":"            accesses \u003d share_snapshot.access_list()"},{"line_number":205,"context_line":"            this_rule \u003d ["},{"line_number":206,"context_line":"                acc for acc in accesses if acc[\u0027id\u0027] \u003d\u003d access[\u0027id\u0027]][0]"},{"line_number":207,"context_line":"        except exceptions.CommandError as e:"},{"line_number":208,"context_line":"            raise e"},{"line_number":209,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"6448a49c_673ff253","line":206,"range":{"start_line":206,"start_character":56,"end_line":206,"end_character":62},"updated":"2021-03-22 18:20:10.000000000","message":"this needs to be passed to this method, instead of passing the whole access dict, just pass access_id from the calling method","commit_id":"7ca937bf35c44bbf7432ba711b909746e9345d95"},{"author":{"_account_id":38463,"name":"llm tech","display_name":"llmtech","email":"llm.tech.developer@gmail.com","username":"llmtech"},"change_message_id":"9e25030e82b5cdb984b6751631476738714f6f75","unresolved":false,"context_lines":[{"line_number":203,"context_line":"        try:"},{"line_number":204,"context_line":"            accesses \u003d share_snapshot.access_list()"},{"line_number":205,"context_line":"            this_rule \u003d ["},{"line_number":206,"context_line":"                acc for acc in accesses if acc[\u0027id\u0027] \u003d\u003d access[\u0027id\u0027]][0]"},{"line_number":207,"context_line":"        except exceptions.CommandError as e:"},{"line_number":208,"context_line":"            raise e"},{"line_number":209,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"2d042723_d1dff735","line":206,"range":{"start_line":206,"start_character":56,"end_line":206,"end_character":62},"in_reply_to":"6448a49c_673ff253","updated":"2025-10-28 14:45:45.000000000","message":"Done","commit_id":"7ca937bf35c44bbf7432ba711b909746e9345d95"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"88edc9616c94e03001783d610d8f631f5b7c3cbc","unresolved":true,"context_lines":[{"line_number":204,"context_line":"            accesses \u003d share_snapshot.access_list()"},{"line_number":205,"context_line":"            this_rule \u003d ["},{"line_number":206,"context_line":"                acc for acc in accesses if acc[\u0027id\u0027] \u003d\u003d access[\u0027id\u0027]][0]"},{"line_number":207,"context_line":"        except exceptions.CommandError as e:"},{"line_number":208,"context_line":"            raise e"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"        if expected \u003d\u003d \u0027allow\u0027:"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f2a7d2d_fa0f3882","line":207,"range":{"start_line":207,"start_character":15,"end_line":207,"end_character":38},"updated":"2021-03-22 18:20:10.000000000","message":"Exception\n\n\nlines 204 and 205 don\u0027t raise \"CommandError\"","commit_id":"7ca937bf35c44bbf7432ba711b909746e9345d95"},{"author":{"_account_id":38463,"name":"llm tech","display_name":"llmtech","email":"llm.tech.developer@gmail.com","username":"llmtech"},"change_message_id":"9e25030e82b5cdb984b6751631476738714f6f75","unresolved":false,"context_lines":[{"line_number":204,"context_line":"            accesses \u003d share_snapshot.access_list()"},{"line_number":205,"context_line":"            this_rule \u003d ["},{"line_number":206,"context_line":"                acc for acc in accesses if acc[\u0027id\u0027] \u003d\u003d access[\u0027id\u0027]][0]"},{"line_number":207,"context_line":"        except exceptions.CommandError as e:"},{"line_number":208,"context_line":"            raise e"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"        if expected \u003d\u003d \u0027allow\u0027:"}],"source_content_type":"text/x-python","patch_set":4,"id":"404aed85_eec9c184","line":207,"range":{"start_line":207,"start_character":15,"end_line":207,"end_character":38},"in_reply_to":"1f2a7d2d_fa0f3882","updated":"2025-10-28 14:45:45.000000000","message":"Done","commit_id":"7ca937bf35c44bbf7432ba711b909746e9345d95"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"88edc9616c94e03001783d610d8f631f5b7c3cbc","unresolved":true,"context_lines":[{"line_number":205,"context_line":"            this_rule \u003d ["},{"line_number":206,"context_line":"                acc for acc in accesses if acc[\u0027id\u0027] \u003d\u003d access[\u0027id\u0027]][0]"},{"line_number":207,"context_line":"        except exceptions.CommandError as e:"},{"line_number":208,"context_line":"            raise e"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"        if expected \u003d\u003d \u0027allow\u0027:"},{"line_number":211,"context_line":"            if ("}],"source_content_type":"text/x-python","patch_set":4,"id":"2539758e_5d98a587","line":208,"range":{"start_line":208,"start_character":0,"end_line":208,"end_character":19},"updated":"2021-03-22 18:20:10.000000000","message":"line 206 will end up raising an IndexError at some point when denying an access rule.\n\n\n   try:\n      this_rule \u003d [\n                acc for acc in accesses if acc[\u0027id\u0027] \u003d\u003d access[\u0027id\u0027]\n      ][0]\n   except IndexError:\n      if action \u003d\u003d \u0027deny\u0027:\n         return\n      cliutils.print_dict(access)\n      raise CommandError(\u0027Failed to allow access, the rule has been deleted. Please retry.\u0027)","commit_id":"7ca937bf35c44bbf7432ba711b909746e9345d95"},{"author":{"_account_id":38463,"name":"llm tech","display_name":"llmtech","email":"llm.tech.developer@gmail.com","username":"llmtech"},"change_message_id":"9e25030e82b5cdb984b6751631476738714f6f75","unresolved":false,"context_lines":[{"line_number":205,"context_line":"            this_rule \u003d ["},{"line_number":206,"context_line":"                acc for acc in accesses if acc[\u0027id\u0027] \u003d\u003d access[\u0027id\u0027]][0]"},{"line_number":207,"context_line":"        except exceptions.CommandError as e:"},{"line_number":208,"context_line":"            raise e"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"        if expected \u003d\u003d \u0027allow\u0027:"},{"line_number":211,"context_line":"            if ("}],"source_content_type":"text/x-python","patch_set":4,"id":"11d6109e_d89f22a9","line":208,"range":{"start_line":208,"start_character":0,"end_line":208,"end_character":19},"in_reply_to":"2539758e_5d98a587","updated":"2025-10-28 14:45:45.000000000","message":"Done","commit_id":"7ca937bf35c44bbf7432ba711b909746e9345d95"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"88edc9616c94e03001783d610d8f631f5b7c3cbc","unresolved":true,"context_lines":[{"line_number":210,"context_line":"        if expected \u003d\u003d \u0027allow\u0027:"},{"line_number":211,"context_line":"            if ("},{"line_number":212,"context_line":"               this_rule[\u0027state\u0027] \u003d\u003d \u0027active\u0027 or"},{"line_number":213,"context_line":"               this_rule[\u0027state\u0027] \u003d\u003d \u0027error\u0027):"},{"line_number":214,"context_line":"                cliutils.print_dict(this_rule)"},{"line_number":215,"context_line":"                if this_rule[\u0027state\u0027] \u003d\u003d \u0027error\u0027:"},{"line_number":216,"context_line":"                    raise exceptions.CommandError(\"access rule has reached\""}],"source_content_type":"text/x-python","patch_set":4,"id":"68f3cdb9_9d82947a","line":213,"range":{"start_line":213,"start_character":15,"end_line":213,"end_character":44},"updated":"2021-03-22 18:20:10.000000000","message":"Change this check and the check on line 215 to \n\n  \u0027error\u0027 in this_rule[\u0027state\u0027]\n\nIt\u0027s better future proofing, since we could have states that have the word \"error\" in them","commit_id":"7ca937bf35c44bbf7432ba711b909746e9345d95"},{"author":{"_account_id":38463,"name":"llm tech","display_name":"llmtech","email":"llm.tech.developer@gmail.com","username":"llmtech"},"change_message_id":"9e25030e82b5cdb984b6751631476738714f6f75","unresolved":false,"context_lines":[{"line_number":210,"context_line":"        if expected \u003d\u003d \u0027allow\u0027:"},{"line_number":211,"context_line":"            if ("},{"line_number":212,"context_line":"               this_rule[\u0027state\u0027] \u003d\u003d \u0027active\u0027 or"},{"line_number":213,"context_line":"               this_rule[\u0027state\u0027] \u003d\u003d \u0027error\u0027):"},{"line_number":214,"context_line":"                cliutils.print_dict(this_rule)"},{"line_number":215,"context_line":"                if this_rule[\u0027state\u0027] \u003d\u003d \u0027error\u0027:"},{"line_number":216,"context_line":"                    raise exceptions.CommandError(\"access rule has reached\""}],"source_content_type":"text/x-python","patch_set":4,"id":"26089497_293ad6ec","line":213,"range":{"start_line":213,"start_character":15,"end_line":213,"end_character":44},"in_reply_to":"68f3cdb9_9d82947a","updated":"2025-10-28 14:45:45.000000000","message":"Done","commit_id":"7ca937bf35c44bbf7432ba711b909746e9345d95"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"88edc9616c94e03001783d610d8f631f5b7c3cbc","unresolved":true,"context_lines":[{"line_number":217,"context_line":"                                                  \"a failed state\")"},{"line_number":218,"context_line":"                break"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"        elif expected \u003d\u003d \u0027deny\u0027:"},{"line_number":221,"context_line":"            if (this_rule not in accesses or this_rule[\u0027state\u0027] \u003d\u003d \u0027error\u0027):"},{"line_number":222,"context_line":"                if this_rule[\u0027state\u0027] \u003d\u003d \u0027error\u0027:"},{"line_number":223,"context_line":"                    cliutils.print_dict(this_rule)"},{"line_number":224,"context_line":"                    raise exceptions.CommandError(\"unable to delete\""},{"line_number":225,"context_line":"                                                  \"the access rule\")"},{"line_number":226,"context_line":"                break"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"        time.sleep(poll_interval)"},{"line_number":229,"context_line":"        time_elapsed +\u003d poll_interval"}],"source_content_type":"text/x-python","patch_set":4,"id":"731b721a_84ef9966","line":226,"range":{"start_line":220,"start_character":8,"end_line":226,"end_character":21},"updated":"2021-03-22 18:20:10.000000000","message":"this isn\u0027t required. Please see comment above on how to check for rules to disappear from the access_list - we don\u0027t need to print anything when denying rules","commit_id":"7ca937bf35c44bbf7432ba711b909746e9345d95"},{"author":{"_account_id":38463,"name":"llm tech","display_name":"llmtech","email":"llm.tech.developer@gmail.com","username":"llmtech"},"change_message_id":"9e25030e82b5cdb984b6751631476738714f6f75","unresolved":false,"context_lines":[{"line_number":217,"context_line":"                                                  \"a failed state\")"},{"line_number":218,"context_line":"                break"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"        elif expected \u003d\u003d \u0027deny\u0027:"},{"line_number":221,"context_line":"            if (this_rule not in accesses or this_rule[\u0027state\u0027] \u003d\u003d \u0027error\u0027):"},{"line_number":222,"context_line":"                if this_rule[\u0027state\u0027] \u003d\u003d \u0027error\u0027:"},{"line_number":223,"context_line":"                    cliutils.print_dict(this_rule)"},{"line_number":224,"context_line":"                    raise exceptions.CommandError(\"unable to delete\""},{"line_number":225,"context_line":"                                                  \"the access rule\")"},{"line_number":226,"context_line":"                break"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"        time.sleep(poll_interval)"},{"line_number":229,"context_line":"        time_elapsed +\u003d poll_interval"}],"source_content_type":"text/x-python","patch_set":4,"id":"419e9b8d_ba9ac692","line":226,"range":{"start_line":220,"start_character":8,"end_line":226,"end_character":21},"in_reply_to":"731b721a_84ef9966","updated":"2025-10-28 14:45:45.000000000","message":"Done","commit_id":"7ca937bf35c44bbf7432ba711b909746e9345d95"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"88edc9616c94e03001783d610d8f631f5b7c3cbc","unresolved":true,"context_lines":[{"line_number":1898,"context_line":"    \"\"\"Allow read only access to a snapshot.\"\"\""},{"line_number":1899,"context_line":"    share_snapshot \u003d _find_share_snapshot(cs, args.snapshot)"},{"line_number":1900,"context_line":"    access \u003d share_snapshot.allow(args.access_type, args.access_to)"},{"line_number":1901,"context_line":"    cliutils.print_dict(access)"},{"line_number":1902,"context_line":"    if args.wait:"},{"line_number":1903,"context_line":"        _wait_for_snapshot_access_rule_state(expected\u003d\"allow\")"},{"line_number":1904,"context_line":""},{"line_number":1905,"context_line":""},{"line_number":1906,"context_line":"@cliutils.arg("}],"source_content_type":"text/x-python","patch_set":4,"id":"2ed5cef0_824774d8","line":1903,"range":{"start_line":1901,"start_character":0,"end_line":1903,"end_character":62},"updated":"2021-03-22 18:20:10.000000000","message":"Based on the changes suggested above: (also, delay printing if \"wait\" is used)\n   \n    if args.wait:\n        _wait_for_snapshot_access_rule_state(access_id\u003daccess[\u0027id\u0027], action\u003d\"allow\")\n    else:\n        cliutils.print_dict(access)","commit_id":"7ca937bf35c44bbf7432ba711b909746e9345d95"},{"author":{"_account_id":38463,"name":"llm tech","display_name":"llmtech","email":"llm.tech.developer@gmail.com","username":"llmtech"},"change_message_id":"9e25030e82b5cdb984b6751631476738714f6f75","unresolved":false,"context_lines":[{"line_number":1898,"context_line":"    \"\"\"Allow read only access to a snapshot.\"\"\""},{"line_number":1899,"context_line":"    share_snapshot \u003d _find_share_snapshot(cs, args.snapshot)"},{"line_number":1900,"context_line":"    access \u003d share_snapshot.allow(args.access_type, args.access_to)"},{"line_number":1901,"context_line":"    cliutils.print_dict(access)"},{"line_number":1902,"context_line":"    if args.wait:"},{"line_number":1903,"context_line":"        _wait_for_snapshot_access_rule_state(expected\u003d\"allow\")"},{"line_number":1904,"context_line":""},{"line_number":1905,"context_line":""},{"line_number":1906,"context_line":"@cliutils.arg("}],"source_content_type":"text/x-python","patch_set":4,"id":"3683bacc_fc942143","line":1903,"range":{"start_line":1901,"start_character":0,"end_line":1903,"end_character":62},"in_reply_to":"2ed5cef0_824774d8","updated":"2025-10-28 14:45:45.000000000","message":"Done","commit_id":"7ca937bf35c44bbf7432ba711b909746e9345d95"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"88edc9616c94e03001783d610d8f631f5b7c3cbc","unresolved":true,"context_lines":[{"line_number":1949,"context_line":"        raise exceptions.CommandError(\"Unable to delete any of the specified \""},{"line_number":1950,"context_line":"                                      \"snapshot rules.\")"},{"line_number":1951,"context_line":""},{"line_number":1952,"context_line":"    if args.wait:"},{"line_number":1953,"context_line":"        _wait_for_snapshot_access_rule_state(expected\u003d\"deny\")"},{"line_number":1954,"context_line":""},{"line_number":1955,"context_line":""},{"line_number":1956,"context_line":"@api_versions.wraps(\"1.0\", \"2.20\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"2a778230_0b0a5af1","line":1953,"range":{"start_line":1952,"start_character":4,"end_line":1953,"end_character":61},"updated":"2021-03-22 18:20:10.000000000","message":"you\u0027ll need to wait for each rule in args.id, see loop on line 1939.","commit_id":"7ca937bf35c44bbf7432ba711b909746e9345d95"},{"author":{"_account_id":38463,"name":"llm tech","display_name":"llmtech","email":"llm.tech.developer@gmail.com","username":"llmtech"},"change_message_id":"9e25030e82b5cdb984b6751631476738714f6f75","unresolved":false,"context_lines":[{"line_number":1949,"context_line":"        raise exceptions.CommandError(\"Unable to delete any of the specified \""},{"line_number":1950,"context_line":"                                      \"snapshot rules.\")"},{"line_number":1951,"context_line":""},{"line_number":1952,"context_line":"    if args.wait:"},{"line_number":1953,"context_line":"        _wait_for_snapshot_access_rule_state(expected\u003d\"deny\")"},{"line_number":1954,"context_line":""},{"line_number":1955,"context_line":""},{"line_number":1956,"context_line":"@api_versions.wraps(\"1.0\", \"2.20\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"5643bdfa_83f77167","line":1953,"range":{"start_line":1952,"start_character":4,"end_line":1953,"end_character":61},"in_reply_to":"2a778230_0b0a5af1","updated":"2025-10-28 14:45:45.000000000","message":"Done","commit_id":"7ca937bf35c44bbf7432ba711b909746e9345d95"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"ab4215ddaf396134990b96f8c9984656ca1767ae","unresolved":true,"context_lines":[{"line_number":200,"context_line":"        if time_elapsed \u003e poll_timeout:"},{"line_number":201,"context_line":"            raise exceptions.TimeoutException(message\u003dtimeout_message)"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"        try:"},{"line_number":204,"context_line":"            accesses \u003d share_snapshot.access_list()"},{"line_number":205,"context_line":"            this_rule \u003d ["},{"line_number":206,"context_line":"                acc for acc in accesses if acc[\u0027id\u0027] \u003d\u003d access_id][0]"}],"source_content_type":"text/x-python","patch_set":5,"id":"4619fac2_5b6e3a98","line":203,"range":{"start_line":203,"start_character":8,"end_line":203,"end_character":12},"updated":"2021-03-23 23:24:54.000000000","message":"nit: try..except around lines 205-206, not share_snapshot.access_list()","commit_id":"9fa8bb0678bf2b9a9c3d3046489219d405c711f9"},{"author":{"_account_id":38463,"name":"llm tech","display_name":"llmtech","email":"llm.tech.developer@gmail.com","username":"llmtech"},"change_message_id":"9e25030e82b5cdb984b6751631476738714f6f75","unresolved":false,"context_lines":[{"line_number":200,"context_line":"        if time_elapsed \u003e poll_timeout:"},{"line_number":201,"context_line":"            raise exceptions.TimeoutException(message\u003dtimeout_message)"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"        try:"},{"line_number":204,"context_line":"            accesses \u003d share_snapshot.access_list()"},{"line_number":205,"context_line":"            this_rule \u003d ["},{"line_number":206,"context_line":"                acc for acc in accesses if acc[\u0027id\u0027] \u003d\u003d access_id][0]"}],"source_content_type":"text/x-python","patch_set":5,"id":"a660b268_284e8e1d","line":203,"range":{"start_line":203,"start_character":8,"end_line":203,"end_character":12},"in_reply_to":"4619fac2_5b6e3a98","updated":"2025-10-28 14:45:45.000000000","message":"Done","commit_id":"9fa8bb0678bf2b9a9c3d3046489219d405c711f9"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"ab4215ddaf396134990b96f8c9984656ca1767ae","unresolved":true,"context_lines":[{"line_number":212,"context_line":"                               \u0027the rule has been deleted. Please retry.\u0027)"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"        if action \u003d\u003d \u0027allow\u0027:"},{"line_number":215,"context_line":"            if ("},{"line_number":216,"context_line":"               this_rule[\u0027state\u0027] \u003d\u003d \u0027active\u0027 or"},{"line_number":217,"context_line":"               \u0027error\u0027 in this_rule[\u0027state\u0027]):"},{"line_number":218,"context_line":"                cliutils.print_dict(this_rule)"},{"line_number":219,"context_line":"                if \u0027error\u0027 in this_rule[\u0027state\u0027]:"},{"line_number":220,"context_line":"                    raise exceptions.CommandError(\u0027access rule has reached\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"695b6680_375153d1","line":217,"range":{"start_line":215,"start_character":12,"end_line":217,"end_character":45},"updated":"2021-03-23 23:24:54.000000000","message":"nit: please see pep8 conventions on how to format this code: https://www.python.org/dev/peps/pep-0008/#indentation","commit_id":"9fa8bb0678bf2b9a9c3d3046489219d405c711f9"},{"author":{"_account_id":38463,"name":"llm tech","display_name":"llmtech","email":"llm.tech.developer@gmail.com","username":"llmtech"},"change_message_id":"9e25030e82b5cdb984b6751631476738714f6f75","unresolved":false,"context_lines":[{"line_number":212,"context_line":"                               \u0027the rule has been deleted. Please retry.\u0027)"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"        if action \u003d\u003d \u0027allow\u0027:"},{"line_number":215,"context_line":"            if ("},{"line_number":216,"context_line":"               this_rule[\u0027state\u0027] \u003d\u003d \u0027active\u0027 or"},{"line_number":217,"context_line":"               \u0027error\u0027 in this_rule[\u0027state\u0027]):"},{"line_number":218,"context_line":"                cliutils.print_dict(this_rule)"},{"line_number":219,"context_line":"                if \u0027error\u0027 in this_rule[\u0027state\u0027]:"},{"line_number":220,"context_line":"                    raise exceptions.CommandError(\u0027access rule has reached\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"10a56f1e_97f7455e","line":217,"range":{"start_line":215,"start_character":12,"end_line":217,"end_character":45},"in_reply_to":"695b6680_375153d1","updated":"2025-10-28 14:45:45.000000000","message":"Done","commit_id":"9fa8bb0678bf2b9a9c3d3046489219d405c711f9"}],"releasenotes/notes/bug-898313-add-wait-option-for-allowing-denying-access-to-snapshot-ce1f3e438c641317.yaml":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"97d3c77765611ae45496cb919ad382e8922d8ca2","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The commands \"manila access-allow snapshot\" and \"manila access-deny snapshot\""},{"line_number":5,"context_line":"    now accept an optional \"--wait\" that allows administrator users to"},{"line_number":6,"context_line":"    let the client poll for the completion of the operation."},{"line_number":7,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":1,"id":"a897456e_7137d874","line":4,"range":{"start_line":4,"start_character":25,"end_line":4,"end_character":46},"updated":"2021-03-16 02:19:11.000000000","message":"snapshot-access-allow","commit_id":"a3221efb152b7e5d01bcfd4e54731def0f69a4fa"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"97d3c77765611ae45496cb919ad382e8922d8ca2","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The commands \"manila access-allow snapshot\" and \"manila access-deny snapshot\""},{"line_number":5,"context_line":"    now accept an optional \"--wait\" that allows administrator users to"},{"line_number":6,"context_line":"    let the client poll for the completion of the operation."},{"line_number":7,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":1,"id":"872eb517_f011cd86","line":4,"range":{"start_line":4,"start_character":60,"end_line":4,"end_character":80},"updated":"2021-03-16 02:19:11.000000000","message":"snapshot-access-deny","commit_id":"a3221efb152b7e5d01bcfd4e54731def0f69a4fa"},{"author":{"_account_id":38463,"name":"llm tech","display_name":"llmtech","email":"llm.tech.developer@gmail.com","username":"llmtech"},"change_message_id":"9e25030e82b5cdb984b6751631476738714f6f75","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The commands \"manila access-allow snapshot\" and \"manila access-deny snapshot\""},{"line_number":5,"context_line":"    now accept an optional \"--wait\" that allows administrator users to"},{"line_number":6,"context_line":"    let the client poll for the completion of the operation."},{"line_number":7,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":1,"id":"41acc4ab_6d48c981","line":4,"range":{"start_line":4,"start_character":60,"end_line":4,"end_character":80},"in_reply_to":"872eb517_f011cd86","updated":"2025-10-28 14:45:45.000000000","message":"Done","commit_id":"a3221efb152b7e5d01bcfd4e54731def0f69a4fa"},{"author":{"_account_id":38463,"name":"llm tech","display_name":"llmtech","email":"llm.tech.developer@gmail.com","username":"llmtech"},"change_message_id":"9e25030e82b5cdb984b6751631476738714f6f75","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The commands \"manila access-allow snapshot\" and \"manila access-deny snapshot\""},{"line_number":5,"context_line":"    now accept an optional \"--wait\" that allows administrator users to"},{"line_number":6,"context_line":"    let the client poll for the completion of the operation."},{"line_number":7,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":1,"id":"59974847_5d459a08","line":4,"range":{"start_line":4,"start_character":25,"end_line":4,"end_character":46},"in_reply_to":"a897456e_7137d874","updated":"2025-10-28 14:45:45.000000000","message":"Done","commit_id":"a3221efb152b7e5d01bcfd4e54731def0f69a4fa"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"97d3c77765611ae45496cb919ad382e8922d8ca2","unresolved":true,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The commands \"manila access-allow snapshot\" and \"manila access-deny snapshot\""},{"line_number":5,"context_line":"    now accept an optional \"--wait\" that allows administrator users to"},{"line_number":6,"context_line":"    let the client poll for the completion of the operation."},{"line_number":7,"context_line":""},{"line_number":8,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":1,"id":"59b69c98_215059f7","line":5,"range":{"start_line":5,"start_character":48,"end_line":5,"end_character":61},"updated":"2021-03-16 02:19:11.000000000","message":"remove\n\nThese commands aren\u0027t only for Administrators","commit_id":"a3221efb152b7e5d01bcfd4e54731def0f69a4fa"},{"author":{"_account_id":38463,"name":"llm tech","display_name":"llmtech","email":"llm.tech.developer@gmail.com","username":"llmtech"},"change_message_id":"9e25030e82b5cdb984b6751631476738714f6f75","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The commands \"manila access-allow snapshot\" and \"manila access-deny snapshot\""},{"line_number":5,"context_line":"    now accept an optional \"--wait\" that allows administrator users to"},{"line_number":6,"context_line":"    let the client poll for the completion of the operation."},{"line_number":7,"context_line":""},{"line_number":8,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":1,"id":"12be180e_db818131","line":5,"range":{"start_line":5,"start_character":48,"end_line":5,"end_character":61},"in_reply_to":"59b69c98_215059f7","updated":"2025-10-28 14:45:45.000000000","message":"Done","commit_id":"a3221efb152b7e5d01bcfd4e54731def0f69a4fa"}]}
