)]}'
{"cinderclient/v2/shell.py":[{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"37c88a772b61a828d545fadd4fda50eede61165a","unresolved":false,"context_lines":[{"line_number":1486,"context_line":"           start_version\u003d\u00273.59\u0027)"},{"line_number":1487,"context_line":"def do_transfer_list(cs, args):"},{"line_number":1488,"context_line":"    \"\"\"Lists all transfers.\"\"\""},{"line_number":1489,"context_line":"    all_tenants \u003d int(os.environ.get(\"ALL_TENANTS\", args.all_tenants))"},{"line_number":1490,"context_line":"    search_opts \u003d {"},{"line_number":1491,"context_line":"        \u0027all_tenants\u0027: all_tenants,"},{"line_number":1492,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":1,"id":"ffb9cba7_583d1b29","line":1489,"range":{"start_line":1489,"start_character":0,"end_line":1489,"end_character":70},"updated":"2019-05-01 13:21:31.000000000","message":"we can merge it with --sort like here https://review.opendev.org/#/c/627359/8/cinderclient/v3/shell.py@1569","commit_id":"affa771779430af974213e1faa717abb39266ab6"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"6fca7ee5c5730ae9b64e7b8a99b35c0e5decef44","unresolved":false,"context_lines":[{"line_number":1486,"context_line":"           start_version\u003d\u00273.59\u0027)"},{"line_number":1487,"context_line":"def do_transfer_list(cs, args):"},{"line_number":1488,"context_line":"    \"\"\"Lists all transfers.\"\"\""},{"line_number":1489,"context_line":"    all_tenants \u003d int(os.environ.get(\"ALL_TENANTS\", args.all_tenants))"},{"line_number":1490,"context_line":"    search_opts \u003d {"},{"line_number":1491,"context_line":"        \u0027all_tenants\u0027: all_tenants,"},{"line_number":1492,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":1,"id":"ffb9cba7_abd4fc20","line":1489,"range":{"start_line":1489,"start_character":0,"end_line":1489,"end_character":70},"in_reply_to":"ffb9cba7_583d1b29","updated":"2019-05-01 16:08:30.000000000","message":"I\u0027m not sure what you mean. Sorting and tenants are separate, so what would we be merging there?","commit_id":"affa771779430af974213e1faa717abb39266ab6"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"31b0ee9ccbd08c4c12eb92c614e39c50cc62101e","unresolved":false,"context_lines":[{"line_number":1486,"context_line":"           start_version\u003d\u00273.59\u0027)"},{"line_number":1487,"context_line":"def do_transfer_list(cs, args):"},{"line_number":1488,"context_line":"    \"\"\"Lists all transfers.\"\"\""},{"line_number":1489,"context_line":"    all_tenants \u003d int(os.environ.get(\"ALL_TENANTS\", args.all_tenants))"},{"line_number":1490,"context_line":"    search_opts \u003d {"},{"line_number":1491,"context_line":"        \u0027all_tenants\u0027: all_tenants,"},{"line_number":1492,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":1,"id":"ffb9cba7_2e4c9a40","line":1489,"range":{"start_line":1489,"start_character":0,"end_line":1489,"end_character":70},"in_reply_to":"ffb9cba7_abd4fc20","updated":"2019-05-01 17:22:07.000000000","message":"Oh sorry, my whole comment is wrong.\ns/sort/tenant\nwas going through the gate failure and thought here is the cause but now i think the tests needs to be modified to fix it. will check further.","commit_id":"affa771779430af974213e1faa717abb39266ab6"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"37c88a772b61a828d545fadd4fda50eede61165a","unresolved":false,"context_lines":[{"line_number":1504,"context_line":"                \u0027Invalid sort parameter provided. Argument must be in the \u0027"},{"line_number":1505,"context_line":"                \u0027form \"key[:\u003casc|desc\u003e]\".\u0027)"},{"line_number":1506,"context_line":""},{"line_number":1507,"context_line":"        search_opts[\u0027sort_key\u0027] \u003d sort_args[0]"},{"line_number":1508,"context_line":"        if len(sort_args) \u003d\u003d 2:"},{"line_number":1509,"context_line":"            search_opts[\u0027sort_dir\u0027] \u003d sort_args[1]"},{"line_number":1510,"context_line":""},{"line_number":1511,"context_line":"    transfers \u003d cs.transfers.list(search_opts\u003dsearch_opts)"},{"line_number":1512,"context_line":"    columns \u003d [\u0027ID\u0027, \u0027Volume ID\u0027, \u0027Name\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"ffb9cba7_f8e3af32","line":1509,"range":{"start_line":1507,"start_character":0,"end_line":1509,"end_character":50},"updated":"2019-05-01 13:21:31.000000000","message":"this is starting to confuse me,\nIts deprecated on both client and server side.\nwe removed it from client in [1]\nserver still has the code but states deprecation warning when used.\nthe splitting of sort into sort_dir and sort_key is done at server end too [2] so why are we doing it here?\n\n[1] https://review.opendev.org/#/c/653831\n[2] https://github.com/openstack/cinder/blob/master/cinder/api/common.py#L165","commit_id":"affa771779430af974213e1faa717abb39266ab6"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"e255ea11103d8c4e3bb89ec02d5047c0ead56439","unresolved":false,"context_lines":[{"line_number":1504,"context_line":"                \u0027Invalid sort parameter provided. Argument must be in the \u0027"},{"line_number":1505,"context_line":"                \u0027form \"key[:\u003casc|desc\u003e]\".\u0027)"},{"line_number":1506,"context_line":""},{"line_number":1507,"context_line":"        search_opts[\u0027sort_key\u0027] \u003d sort_args[0]"},{"line_number":1508,"context_line":"        if len(sort_args) \u003d\u003d 2:"},{"line_number":1509,"context_line":"            search_opts[\u0027sort_dir\u0027] \u003d sort_args[1]"},{"line_number":1510,"context_line":""},{"line_number":1511,"context_line":"    transfers \u003d cs.transfers.list(search_opts\u003dsearch_opts)"},{"line_number":1512,"context_line":"    columns \u003d [\u0027ID\u0027, \u0027Volume ID\u0027, \u0027Name\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"dfbec78f_5666e7ef","line":1509,"range":{"start_line":1507,"start_character":0,"end_line":1509,"end_character":50},"in_reply_to":"dfbec78f_23ff73ab","updated":"2019-05-03 23:40:03.000000000","message":"Oh, If i understand your statement correctly, we didn\u0027t had --sort in transfers list previously (in client) so it was getting empty sort_keys and sort_dirs at the API.","commit_id":"affa771779430af974213e1faa717abb39266ab6"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"31b0ee9ccbd08c4c12eb92c614e39c50cc62101e","unresolved":false,"context_lines":[{"line_number":1504,"context_line":"                \u0027Invalid sort parameter provided. Argument must be in the \u0027"},{"line_number":1505,"context_line":"                \u0027form \"key[:\u003casc|desc\u003e]\".\u0027)"},{"line_number":1506,"context_line":""},{"line_number":1507,"context_line":"        search_opts[\u0027sort_key\u0027] \u003d sort_args[0]"},{"line_number":1508,"context_line":"        if len(sort_args) \u003d\u003d 2:"},{"line_number":1509,"context_line":"            search_opts[\u0027sort_dir\u0027] \u003d sort_args[1]"},{"line_number":1510,"context_line":""},{"line_number":1511,"context_line":"    transfers \u003d cs.transfers.list(search_opts\u003dsearch_opts)"},{"line_number":1512,"context_line":"    columns \u003d [\u0027ID\u0027, \u0027Volume ID\u0027, \u0027Name\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"ffb9cba7_ae2f2a3d","line":1509,"range":{"start_line":1507,"start_character":0,"end_line":1509,"end_character":50},"in_reply_to":"ffb9cba7_4bcea082","updated":"2019-05-01 17:22:07.000000000","message":"Okay, getting some idea here.\nStill [1] is calling get_sort_params which is doing the same splitting of sort into sort_dir and sort_key [2] as done here\nSo is this part still required?\n[1] https://review.opendev.org/#/c/602181/13/cinder/api/v3/volume_transfer.py@42\n[2] https://github.com/openstack/cinder/blob/master/cinder/api/common.py#L165","commit_id":"affa771779430af974213e1faa717abb39266ab6"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"a6ca0eddf1f0373e93ec76c2cc9e49a316d108dd","unresolved":false,"context_lines":[{"line_number":1504,"context_line":"                \u0027Invalid sort parameter provided. Argument must be in the \u0027"},{"line_number":1505,"context_line":"                \u0027form \"key[:\u003casc|desc\u003e]\".\u0027)"},{"line_number":1506,"context_line":""},{"line_number":1507,"context_line":"        search_opts[\u0027sort_key\u0027] \u003d sort_args[0]"},{"line_number":1508,"context_line":"        if len(sort_args) \u003d\u003d 2:"},{"line_number":1509,"context_line":"            search_opts[\u0027sort_dir\u0027] \u003d sort_args[1]"},{"line_number":1510,"context_line":""},{"line_number":1511,"context_line":"    transfers \u003d cs.transfers.list(search_opts\u003dsearch_opts)"},{"line_number":1512,"context_line":"    columns \u003d [\u0027ID\u0027, \u0027Volume ID\u0027, \u0027Name\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"ffb9cba7_eec20234","line":1509,"range":{"start_line":1507,"start_character":0,"end_line":1509,"end_character":50},"in_reply_to":"ffb9cba7_ae2f2a3d","updated":"2019-05-01 17:32:34.000000000","message":"That splitting appears to be a little redundant since the API will not actually pass in sort:\n\nhttps://review.opendev.org/#/c/602181/13/cinder/transfer/api.py\n\nSo it\u0027s trying to split out sort into sort_key and sort_dir, but sort will always be empty there. The only sorting that the actual exposed API is allowing is the sort_key and sort_dir.","commit_id":"affa771779430af974213e1faa717abb39266ab6"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"83649b444828dfa0561bd3138a4a5cb42baa2c37","unresolved":false,"context_lines":[{"line_number":1504,"context_line":"                \u0027Invalid sort parameter provided. Argument must be in the \u0027"},{"line_number":1505,"context_line":"                \u0027form \"key[:\u003casc|desc\u003e]\".\u0027)"},{"line_number":1506,"context_line":""},{"line_number":1507,"context_line":"        search_opts[\u0027sort_key\u0027] \u003d sort_args[0]"},{"line_number":1508,"context_line":"        if len(sort_args) \u003d\u003d 2:"},{"line_number":1509,"context_line":"            search_opts[\u0027sort_dir\u0027] \u003d sort_args[1]"},{"line_number":1510,"context_line":""},{"line_number":1511,"context_line":"    transfers \u003d cs.transfers.list(search_opts\u003dsearch_opts)"},{"line_number":1512,"context_line":"    columns \u003d [\u0027ID\u0027, \u0027Volume ID\u0027, \u0027Name\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"dfbec78f_23ff73ab","line":1509,"range":{"start_line":1507,"start_character":0,"end_line":1509,"end_character":50},"in_reply_to":"ffb9cba7_b1a542a4","updated":"2019-05-03 22:37:45.000000000","message":"\"it\u0027s split into sort_dir and sort_keys before\"\n\nThis is the API, there is no \"before\". Not sure what you mean here.\n\nSorting is a py2/3 issue that just needs to be addressed.","commit_id":"affa771779430af974213e1faa717abb39266ab6"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"6bd530b43168b3cb0cc26a2d7e041147f9ee6c1d","unresolved":false,"context_lines":[{"line_number":1504,"context_line":"                \u0027Invalid sort parameter provided. Argument must be in the \u0027"},{"line_number":1505,"context_line":"                \u0027form \"key[:\u003casc|desc\u003e]\".\u0027)"},{"line_number":1506,"context_line":""},{"line_number":1507,"context_line":"        search_opts[\u0027sort_key\u0027] \u003d sort_args[0]"},{"line_number":1508,"context_line":"        if len(sort_args) \u003d\u003d 2:"},{"line_number":1509,"context_line":"            search_opts[\u0027sort_dir\u0027] \u003d sort_args[1]"},{"line_number":1510,"context_line":""},{"line_number":1511,"context_line":"    transfers \u003d cs.transfers.list(search_opts\u003dsearch_opts)"},{"line_number":1512,"context_line":"    columns \u003d [\u0027ID\u0027, \u0027Volume ID\u0027, \u0027Name\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"ffb9cba7_b1a542a4","line":1509,"range":{"start_line":1507,"start_character":0,"end_line":1509,"end_character":50},"in_reply_to":"ffb9cba7_eec20234","updated":"2019-05-03 22:24:41.000000000","message":"sort isn\u0027t passed by the api cause it\u0027s split into sort_dir and sort_keys before\nanyway it\u0027s redundant at one place, better keep it at client so we don\u0027t pass unnecessary args to API. +1\n\nAlso looks like adding keys like \u0027search_opts[\u0027sort_key\u0027]\u0027 is messing up the order in the search_opts failing the tests","commit_id":"affa771779430af974213e1faa717abb39266ab6"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"6fca7ee5c5730ae9b64e7b8a99b35c0e5decef44","unresolved":false,"context_lines":[{"line_number":1504,"context_line":"                \u0027Invalid sort parameter provided. Argument must be in the \u0027"},{"line_number":1505,"context_line":"                \u0027form \"key[:\u003casc|desc\u003e]\".\u0027)"},{"line_number":1506,"context_line":""},{"line_number":1507,"context_line":"        search_opts[\u0027sort_key\u0027] \u003d sort_args[0]"},{"line_number":1508,"context_line":"        if len(sort_args) \u003d\u003d 2:"},{"line_number":1509,"context_line":"            search_opts[\u0027sort_dir\u0027] \u003d sort_args[1]"},{"line_number":1510,"context_line":""},{"line_number":1511,"context_line":"    transfers \u003d cs.transfers.list(search_opts\u003dsearch_opts)"},{"line_number":1512,"context_line":"    columns \u003d [\u0027ID\u0027, \u0027Volume ID\u0027, \u0027Name\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"ffb9cba7_4bcea082","line":1509,"range":{"start_line":1507,"start_character":0,"end_line":1509,"end_character":50},"in_reply_to":"ffb9cba7_f8e3af32","updated":"2019-05-01 16:08:30.000000000","message":"This particular API was just added in a microversion. If we want to drop support like in 653831, that means we need to add a new microversion denoting that change. And even if we do that, we would need to continue to support the deprecated way for API versions between 3.59 and whatever the new bump would be. So since we messed up in adding this new case, we are sort of stuck with it and the best I think we can do at this point is \"hide\" it in the client by exposing it in the way we want it to be, but translate it to what the server side will expect.","commit_id":"affa771779430af974213e1faa717abb39266ab6"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"f674445086334d81af5638ae62d9b492d3459c71","unresolved":false,"context_lines":[{"line_number":1504,"context_line":"                \u0027Invalid sort parameter provided. Argument must be in the \u0027"},{"line_number":1505,"context_line":"                \u0027form \"key[:\u003casc|desc\u003e]\".\u0027)"},{"line_number":1506,"context_line":""},{"line_number":1507,"context_line":"        search_opts.update({\u0027sort_key\u0027: sort_args[0]})"},{"line_number":1508,"context_line":"        if len(sort_args) \u003d\u003d 2:"},{"line_number":1509,"context_line":"            search_opts.update({\u0027sort_dir\u0027: sort_args[1]})"},{"line_number":1510,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"dfbec78f_236a1380","line":1507,"updated":"2019-05-03 22:35:29.000000000","message":"Why?","commit_id":"bd2097f90df21632ad8567ce78a46e9870f209c0"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"88f7186ca04887b2f48fcb0b0cf78bd9a567cb58","unresolved":false,"context_lines":[{"line_number":1504,"context_line":"                \u0027Invalid sort parameter provided. Argument must be in the \u0027"},{"line_number":1505,"context_line":"                \u0027form \"key[:\u003casc|desc\u003e]\".\u0027)"},{"line_number":1506,"context_line":""},{"line_number":1507,"context_line":"        search_opts.update({\u0027sort_key\u0027: sort_args[0]})"},{"line_number":1508,"context_line":"        if len(sort_args) \u003d\u003d 2:"},{"line_number":1509,"context_line":"            search_opts.update({\u0027sort_dir\u0027: sort_args[1]})"},{"line_number":1510,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"dfbec78f_16bcef03","line":1507,"in_reply_to":"dfbec78f_16194f78","updated":"2019-05-03 23:51:51.000000000","message":"No. Please stop. Generally, it\u0027s best to only update someone else\u0027s patch if they are no longer working on it or you just need to make a trivial change before you approve it.","commit_id":"bd2097f90df21632ad8567ce78a46e9870f209c0"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"002aff47db4dc5e4b0edd7e7f00852abf6f6bf38","unresolved":false,"context_lines":[{"line_number":1504,"context_line":"                \u0027Invalid sort parameter provided. Argument must be in the \u0027"},{"line_number":1505,"context_line":"                \u0027form \"key[:\u003casc|desc\u003e]\".\u0027)"},{"line_number":1506,"context_line":""},{"line_number":1507,"context_line":"        search_opts.update({\u0027sort_key\u0027: sort_args[0]})"},{"line_number":1508,"context_line":"        if len(sort_args) \u003d\u003d 2:"},{"line_number":1509,"context_line":"            search_opts.update({\u0027sort_dir\u0027: sort_args[1]})"},{"line_number":1510,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"dfbec78f_561ee70c","line":1507,"in_reply_to":"dfbec78f_16bcef03","updated":"2019-05-04 00:07:12.000000000","message":"Really sorry for the updates. I thought it was a basic change to pass the gate. Won\u0027t happen again.","commit_id":"bd2097f90df21632ad8567ce78a46e9870f209c0"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"e255ea11103d8c4e3bb89ec02d5047c0ead56439","unresolved":false,"context_lines":[{"line_number":1504,"context_line":"                \u0027Invalid sort parameter provided. Argument must be in the \u0027"},{"line_number":1505,"context_line":"                \u0027form \"key[:\u003casc|desc\u003e]\".\u0027)"},{"line_number":1506,"context_line":""},{"line_number":1507,"context_line":"        search_opts.update({\u0027sort_key\u0027: sort_args[0]})"},{"line_number":1508,"context_line":"        if len(sort_args) \u003d\u003d 2:"},{"line_number":1509,"context_line":"            search_opts.update({\u0027sort_dir\u0027: sort_args[1]})"},{"line_number":1510,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"dfbec78f_16194f78","line":1507,"in_reply_to":"dfbec78f_236a1380","updated":"2019-05-03 23:40:03.000000000","message":"Bad Idea, instead using OrderedDict now","commit_id":"bd2097f90df21632ad8567ce78a46e9870f209c0"}]}
