)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"bbf1f8185e2e9276d17166112050ac072be1a3bc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"f3c08651_831475ec","updated":"2026-03-10 14:37:40.000000000","message":"looks ok. few comments inline","commit_id":"9575815d2d5dba21e8e0c04e7f1c690655bc6a05"},{"author":{"_account_id":38842,"name":"Silvia Wachira","display_name":"Silvia Wachira","email":"wachirasilvia8@gmail.com","username":"Silvia-Wachira"},"change_message_id":"0801f07fe5490db6b5a33ab2020a2dedbdbb9b32","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"d42c1702_dd636fef","updated":"2026-06-10 06:56:23.000000000","message":"recheck","commit_id":"01cdc1221558948d48c43d3e714180f2a32af567"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"488511a2eff99594750b01e9f63384ce72a4d3a1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"fbdaed5d_c10c93c6","updated":"2026-06-10 10:15:14.000000000","message":"Thanks for taking this over. Couple of comments inline.","commit_id":"b9f7349f5cfa3ca39a22e30be1f9dfe644e42a16"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"93b7a9e85cfb36e2832609c62e856f49602b2847","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"daf0fc25_ecc79a8b","updated":"2026-06-15 16:16:28.000000000","message":"recheck\n\nPOST_FAILURE due to a CI issue","commit_id":"cea083ae2640803f36632fdf518395198b16af02"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"fe4ba83267d0fd09e308c63981a2df4060afe58c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"3097e4ca_c9b30abb","updated":"2026-06-19 23:01:41.000000000","message":"Thanks for picking up this change, Silvia! No further comments other than what Stephen already pointed. Could you please fix the merge conflict in the series too?","commit_id":"b824d9a75e9b8e70b232404049a895e6b8319fb6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"86b94e87efc5e27f7bf3b001a3f8e6668ab7ee9d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"e5459d0c_06400bf5","updated":"2026-06-23 10:57:59.000000000","message":"My comments were on PS15. They might not apply any more","commit_id":"d89d0b7fa5c035e9cc2938ef189f1ce9b1ec5c72"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"910cce6f1ec7c6f837804e01eecccf31db9b080e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"8d2953f7_8e421e53","updated":"2026-06-25 14:54:55.000000000","message":"We can resolve the remaining question in a follow-up (but I would like to get an answer at some point)","commit_id":"e94c73c9d964892cc1cf9ad223bf9ff793c61673"},{"author":{"_account_id":38842,"name":"Silvia Wachira","display_name":"Silvia Wachira","email":"wachirasilvia8@gmail.com","username":"Silvia-Wachira"},"change_message_id":"939cb07591bb99b405605e285adfc043dc7992b1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"98717767_31681ce4","updated":"2026-06-24 18:22:34.000000000","message":"osc-functional-devstack-tips failure is unrelated to this patch — it\u0027s a compute quota test failure (openstack quota list --compute) hitting a 400 error from Nova. All other jobs pass including osc-functional-devstack.","commit_id":"e94c73c9d964892cc1cf9ad223bf9ff793c61673"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"398227ea1d953507d988fa3063089f79aba8ab9a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"a801c48c_b0b0b224","updated":"2026-06-25 14:39:36.000000000","message":"recheck","commit_id":"e94c73c9d964892cc1cf9ad223bf9ff793c61673"}],"openstackclient/share/client.py":[{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"bbf1f8185e2e9276d17166112050ac072be1a3bc","unresolved":true,"context_lines":[{"line_number":1,"context_line":"#   Copyright 2012-2013 OpenStack Foundation"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#   Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#   not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":2,"id":"2c294131_b68fd5f3","line":1,"updated":"2026-03-10 14:37:40.000000000","message":"2026","commit_id":"9575815d2d5dba21e8e0c04e7f1c690655bc6a05"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"9d9f2555d3e65e3bcc7850b17d3fad899717cf6a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#   Copyright 2012-2013 OpenStack Foundation"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#   Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#   not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":2,"id":"5c813054_484a17d6","line":1,"in_reply_to":"2c294131_b68fd5f3","updated":"2026-06-15 23:37:57.000000000","message":"Unfortunately, because this was copied from a different place, it\u0027s not worth touching.","commit_id":"9575815d2d5dba21e8e0c04e7f1c690655bc6a05"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"bbf1f8185e2e9276d17166112050ac072be1a3bc","unresolved":true,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"def build_option_parser(parser):"},{"line_number":59,"context_line":"    \"\"\"Hook to add global options\"\"\""},{"line_number":60,"context_line":"    parser.add_argument("},{"line_number":61,"context_line":"        \u0027--os-share-api-version\u0027,"},{"line_number":62,"context_line":"        metavar\u003d\u0027\u003cshare-api-version\u003e\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"5d6d85cf_76d19f1a","line":59,"updated":"2026-03-10 14:37:40.000000000","message":"can we add endpoint option as well like https://review.opendev.org/c/openstack/python-manilaclient/+/978183","commit_id":"9575815d2d5dba21e8e0c04e7f1c690655bc6a05"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"8a693521db87e3f57ad5b253bd4c131c2637528e","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"def build_option_parser(parser):"},{"line_number":59,"context_line":"    \"\"\"Hook to add global options\"\"\""},{"line_number":60,"context_line":"    parser.add_argument("},{"line_number":61,"context_line":"        \u0027--os-share-api-version\u0027,"},{"line_number":62,"context_line":"        metavar\u003d\u0027\u003cshare-api-version\u003e\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"a4ec134c_41ccac34","line":59,"in_reply_to":"08afc145_28dd1e7e","updated":"2026-06-16 15:06:22.000000000","message":"Done","commit_id":"9575815d2d5dba21e8e0c04e7f1c690655bc6a05"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e680786390770cd330e6fe1c4aca7037db67666f","unresolved":true,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"def build_option_parser(parser):"},{"line_number":59,"context_line":"    \"\"\"Hook to add global options\"\"\""},{"line_number":60,"context_line":"    parser.add_argument("},{"line_number":61,"context_line":"        \u0027--os-share-api-version\u0027,"},{"line_number":62,"context_line":"        metavar\u003d\u0027\u003cshare-api-version\u003e\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"08afc145_28dd1e7e","line":59,"in_reply_to":"5d6d85cf_76d19f1a","updated":"2026-03-10 15:32:39.000000000","message":"This would be a good follow-up if you want to propose one? We could probably do it for other services also.","commit_id":"9575815d2d5dba21e8e0c04e7f1c690655bc6a05"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"7773f0baa6f5d1594a1c649ea7e51266b6aa1dd2","unresolved":true,"context_lines":[{"line_number":64,"context_line":"        temp_client, requested_api_version"},{"line_number":65,"context_line":"    )"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    share_client \u003d utils.get_client_class("},{"line_number":68,"context_line":"        API_NAME, discovered_version.get_string(), API_VERSIONS"},{"line_number":69,"context_line":"    )"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    LOG.debug(\u0027Instantiating Shared File System client: %s\u0027, share_client)"},{"line_number":72,"context_line":"    LOG.debug(\u0027Shared File System API version: %s\u0027, discovered_version)"}],"source_content_type":"text/x-python","patch_set":5,"id":"abd5c531_6f1a7547","line":69,"range":{"start_line":67,"start_character":0,"end_line":69,"end_character":5},"updated":"2026-05-29 15:57:46.000000000","message":"```\n\n  share_client \u003d utils.get_client_class(\n      API_NAME, discovered_version.ver_major, API_VERSIONS\n  )\n```","commit_id":"ffa3d908319a8e53495f2956a326b9a1207c0c88"},{"author":{"_account_id":38842,"name":"Silvia Wachira","display_name":"Silvia Wachira","email":"wachirasilvia8@gmail.com","username":"Silvia-Wachira"},"change_message_id":"d78ecc2b9200065c813b656e1bd24e56eb5291c8","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        temp_client, requested_api_version"},{"line_number":65,"context_line":"    )"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    share_client \u003d utils.get_client_class("},{"line_number":68,"context_line":"        API_NAME, discovered_version.get_string(), API_VERSIONS"},{"line_number":69,"context_line":"    )"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    LOG.debug(\u0027Instantiating Shared File System client: %s\u0027, share_client)"},{"line_number":72,"context_line":"    LOG.debug(\u0027Shared File System API version: %s\u0027, discovered_version)"}],"source_content_type":"text/x-python","patch_set":5,"id":"f995c1dc_9411bfc0","line":69,"range":{"start_line":67,"start_character":0,"end_line":69,"end_character":5},"in_reply_to":"abd5c531_6f1a7547","updated":"2026-05-29 19:01:00.000000000","message":"Done","commit_id":"ffa3d908319a8e53495f2956a326b9a1207c0c88"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"87ddd7062df35ca7455d83aeb4eefbc92ba6221b","unresolved":false,"context_lines":[{"line_number":31,"context_line":"_share_api_version \u003d None"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"def make_client(instance):"},{"line_number":35,"context_line":"    \"\"\"Returns a service client.\"\"\""},{"line_number":36,"context_line":"    # Defer client imports until we actually need them"},{"line_number":37,"context_line":"    from manilaclient import api_versions"}],"source_content_type":"text/x-python","patch_set":6,"id":"ef0b2085_40a73ae1","line":34,"updated":"2026-06-10 08:32:20.000000000","message":"pep8: error: Function is missing a type annotation  [no-untyped-def]","commit_id":"01cdc1221558948d48c43d3e714180f2a32af567"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"87ddd7062df35ca7455d83aeb4eefbc92ba6221b","unresolved":false,"context_lines":[{"line_number":75,"context_line":"    return share_client(**client_args)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"def build_option_parser(parser):"},{"line_number":79,"context_line":"    \"\"\"Hook to add global options\"\"\""},{"line_number":80,"context_line":"    parser.add_argument("},{"line_number":81,"context_line":"        \u0027--os-share-api-version\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"ace698d3_2684b356","line":78,"updated":"2026-06-10 08:32:20.000000000","message":"pep8: error: Function is missing a type annotation  [no-untyped-def]","commit_id":"01cdc1221558948d48c43d3e714180f2a32af567"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"87ddd7062df35ca7455d83aeb4eefbc92ba6221b","unresolved":false,"context_lines":[{"line_number":102,"context_line":"    return parser"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"def check_api_version(check_version):"},{"line_number":106,"context_line":"    # Defer client imports until we actually need them"},{"line_number":107,"context_line":"    from manilaclient import api_versions"},{"line_number":108,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"22273659_4a28b7d3","line":105,"updated":"2026-06-10 08:32:20.000000000","message":"pep8: error: Function is missing a type annotation  [no-untyped-def]","commit_id":"01cdc1221558948d48c43d3e714180f2a32af567"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"488511a2eff99594750b01e9f63384ce72a4d3a1","unresolved":true,"context_lines":[{"line_number":44,"context_line":"    # normalization for us"},{"line_number":45,"context_line":"    if check_version.isdigit():"},{"line_number":46,"context_line":"        check_version \u003d f\"{check_version}.0\""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    requested_api_version \u003d api_versions.APIVersion(version_str\u003dcheck_version)"},{"line_number":49,"context_line":"    max_version \u003d api_versions.APIVersion(api_versions.MAX_VERSION)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    instance.setup_auth()"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    client_args \u003d dict("},{"line_number":54,"context_line":"        session\u003dinstance.session,"},{"line_number":55,"context_line":"        endpoint_type\u003dinstance.interface,"},{"line_number":56,"context_line":"        region_name\u003dinstance.region_name,"},{"line_number":57,"context_line":"        auth\u003dinstance.auth,"},{"line_number":58,"context_line":"        cacert\u003dinstance.cacert,"},{"line_number":59,"context_line":"        cert\u003dinstance.cert,"},{"line_number":60,"context_line":"        insecure\u003dnot instance.verify,"},{"line_number":61,"context_line":"        api_version\u003dmax_version,"},{"line_number":62,"context_line":"    )"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    temp_client \u003d client.Client(max_version, **client_args)"},{"line_number":65,"context_line":"    discovered_version \u003d api_versions.discover_version("},{"line_number":66,"context_line":"        temp_client, requested_api_version"},{"line_number":67,"context_line":"    )"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    share_client \u003d utils.get_client_class("},{"line_number":70,"context_line":"        API_NAME, discovered_version.get_string(), API_VERSIONS"},{"line_number":71,"context_line":"    )"}],"source_content_type":"text/x-python","patch_set":7,"id":"aa68e2b4_6041751b","line":68,"range":{"start_line":47,"start_character":1,"end_line":68,"end_character":1},"updated":"2026-06-10 10:15:14.000000000","message":"Could you explain what\u0027s going on here (ideally via a comment in the code too). Is there a reason we can\u0027t use `manilaclient.api_versions.get_api_version` like all the other clients?","commit_id":"b9f7349f5cfa3ca39a22e30be1f9dfe644e42a16"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"8a693521db87e3f57ad5b253bd4c131c2637528e","unresolved":true,"context_lines":[{"line_number":44,"context_line":"    # normalization for us"},{"line_number":45,"context_line":"    if check_version.isdigit():"},{"line_number":46,"context_line":"        check_version \u003d f\"{check_version}.0\""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    requested_api_version \u003d api_versions.APIVersion(version_str\u003dcheck_version)"},{"line_number":49,"context_line":"    max_version \u003d api_versions.APIVersion(api_versions.MAX_VERSION)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    instance.setup_auth()"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    client_args \u003d dict("},{"line_number":54,"context_line":"        session\u003dinstance.session,"},{"line_number":55,"context_line":"        endpoint_type\u003dinstance.interface,"},{"line_number":56,"context_line":"        region_name\u003dinstance.region_name,"},{"line_number":57,"context_line":"        auth\u003dinstance.auth,"},{"line_number":58,"context_line":"        cacert\u003dinstance.cacert,"},{"line_number":59,"context_line":"        cert\u003dinstance.cert,"},{"line_number":60,"context_line":"        insecure\u003dnot instance.verify,"},{"line_number":61,"context_line":"        api_version\u003dmax_version,"},{"line_number":62,"context_line":"    )"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    temp_client \u003d client.Client(max_version, **client_args)"},{"line_number":65,"context_line":"    discovered_version \u003d api_versions.discover_version("},{"line_number":66,"context_line":"        temp_client, requested_api_version"},{"line_number":67,"context_line":"    )"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    share_client \u003d utils.get_client_class("},{"line_number":70,"context_line":"        API_NAME, discovered_version.get_string(), API_VERSIONS"},{"line_number":71,"context_line":"    )"}],"source_content_type":"text/x-python","patch_set":7,"id":"70f060b9_6a2646ef","line":68,"range":{"start_line":47,"start_character":1,"end_line":68,"end_character":1},"in_reply_to":"56062410_275ef428","updated":"2026-06-16 15:06:22.000000000","message":"We\u0027re still missing this comment. However, this is is doing more than it needs to do. The point of this code is not to verify whether the API is supported server-side or not: it\u0027s to validate whether the client supports it. From reading the code for `Client` in manilaclient/v2/client.py it seems all we need to do is drop the `api_version` kwarg to client and rely on the positional `discovered_version` arg?","commit_id":"b9f7349f5cfa3ca39a22e30be1f9dfe644e42a16"},{"author":{"_account_id":38842,"name":"Silvia Wachira","display_name":"Silvia Wachira","email":"wachirasilvia8@gmail.com","username":"Silvia-Wachira"},"change_message_id":"61707ce48739ed9ed1ce8a556df9a706e13052b4","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    # normalization for us"},{"line_number":45,"context_line":"    if check_version.isdigit():"},{"line_number":46,"context_line":"        check_version \u003d f\"{check_version}.0\""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    requested_api_version \u003d api_versions.APIVersion(version_str\u003dcheck_version)"},{"line_number":49,"context_line":"    max_version \u003d api_versions.APIVersion(api_versions.MAX_VERSION)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    instance.setup_auth()"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    client_args \u003d dict("},{"line_number":54,"context_line":"        session\u003dinstance.session,"},{"line_number":55,"context_line":"        endpoint_type\u003dinstance.interface,"},{"line_number":56,"context_line":"        region_name\u003dinstance.region_name,"},{"line_number":57,"context_line":"        auth\u003dinstance.auth,"},{"line_number":58,"context_line":"        cacert\u003dinstance.cacert,"},{"line_number":59,"context_line":"        cert\u003dinstance.cert,"},{"line_number":60,"context_line":"        insecure\u003dnot instance.verify,"},{"line_number":61,"context_line":"        api_version\u003dmax_version,"},{"line_number":62,"context_line":"    )"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    temp_client \u003d client.Client(max_version, **client_args)"},{"line_number":65,"context_line":"    discovered_version \u003d api_versions.discover_version("},{"line_number":66,"context_line":"        temp_client, requested_api_version"},{"line_number":67,"context_line":"    )"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    share_client \u003d utils.get_client_class("},{"line_number":70,"context_line":"        API_NAME, discovered_version.get_string(), API_VERSIONS"},{"line_number":71,"context_line":"    )"}],"source_content_type":"text/x-python","patch_set":7,"id":"fd96d8ba_11e163f2","line":68,"range":{"start_line":47,"start_character":1,"end_line":68,"end_character":1},"in_reply_to":"70f060b9_6a2646ef","updated":"2026-06-22 11:44:09.000000000","message":"Done","commit_id":"b9f7349f5cfa3ca39a22e30be1f9dfe644e42a16"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5e7ef674338fb7537ca8076a07a8cdd395f9d473","unresolved":true,"context_lines":[{"line_number":44,"context_line":"    # normalization for us"},{"line_number":45,"context_line":"    if check_version.isdigit():"},{"line_number":46,"context_line":"        check_version \u003d f\"{check_version}.0\""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    requested_api_version \u003d api_versions.APIVersion(version_str\u003dcheck_version)"},{"line_number":49,"context_line":"    max_version \u003d api_versions.APIVersion(api_versions.MAX_VERSION)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    instance.setup_auth()"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    client_args \u003d dict("},{"line_number":54,"context_line":"        session\u003dinstance.session,"},{"line_number":55,"context_line":"        endpoint_type\u003dinstance.interface,"},{"line_number":56,"context_line":"        region_name\u003dinstance.region_name,"},{"line_number":57,"context_line":"        auth\u003dinstance.auth,"},{"line_number":58,"context_line":"        cacert\u003dinstance.cacert,"},{"line_number":59,"context_line":"        cert\u003dinstance.cert,"},{"line_number":60,"context_line":"        insecure\u003dnot instance.verify,"},{"line_number":61,"context_line":"        api_version\u003dmax_version,"},{"line_number":62,"context_line":"    )"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    temp_client \u003d client.Client(max_version, **client_args)"},{"line_number":65,"context_line":"    discovered_version \u003d api_versions.discover_version("},{"line_number":66,"context_line":"        temp_client, requested_api_version"},{"line_number":67,"context_line":"    )"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    share_client \u003d utils.get_client_class("},{"line_number":70,"context_line":"        API_NAME, discovered_version.get_string(), API_VERSIONS"},{"line_number":71,"context_line":"    )"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff09d330_c8a6e519","line":68,"range":{"start_line":47,"start_character":1,"end_line":68,"end_character":1},"in_reply_to":"86653a41_b19d2af9","updated":"2026-06-10 11:59:24.000000000","message":"What do you mean by \"original patch\"? I don\u0027t see it in the original version of this patch?\n\nhttps://review.opendev.org/c/openstack/python-openstackclient/+/970818/1..8/openstackclient/share/client.py","commit_id":"b9f7349f5cfa3ca39a22e30be1f9dfe644e42a16"},{"author":{"_account_id":38842,"name":"Silvia Wachira","display_name":"Silvia Wachira","email":"wachirasilvia8@gmail.com","username":"Silvia-Wachira"},"change_message_id":"0209ad3b0b0174ef4080325fb4817005da0e7134","unresolved":true,"context_lines":[{"line_number":44,"context_line":"    # normalization for us"},{"line_number":45,"context_line":"    if check_version.isdigit():"},{"line_number":46,"context_line":"        check_version \u003d f\"{check_version}.0\""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    requested_api_version \u003d api_versions.APIVersion(version_str\u003dcheck_version)"},{"line_number":49,"context_line":"    max_version \u003d api_versions.APIVersion(api_versions.MAX_VERSION)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    instance.setup_auth()"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    client_args \u003d dict("},{"line_number":54,"context_line":"        session\u003dinstance.session,"},{"line_number":55,"context_line":"        endpoint_type\u003dinstance.interface,"},{"line_number":56,"context_line":"        region_name\u003dinstance.region_name,"},{"line_number":57,"context_line":"        auth\u003dinstance.auth,"},{"line_number":58,"context_line":"        cacert\u003dinstance.cacert,"},{"line_number":59,"context_line":"        cert\u003dinstance.cert,"},{"line_number":60,"context_line":"        insecure\u003dnot instance.verify,"},{"line_number":61,"context_line":"        api_version\u003dmax_version,"},{"line_number":62,"context_line":"    )"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    temp_client \u003d client.Client(max_version, **client_args)"},{"line_number":65,"context_line":"    discovered_version \u003d api_versions.discover_version("},{"line_number":66,"context_line":"        temp_client, requested_api_version"},{"line_number":67,"context_line":"    )"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    share_client \u003d utils.get_client_class("},{"line_number":70,"context_line":"        API_NAME, discovered_version.get_string(), API_VERSIONS"},{"line_number":71,"context_line":"    )"}],"source_content_type":"text/x-python","patch_set":7,"id":"86653a41_b19d2af9","line":68,"range":{"start_line":47,"start_character":1,"end_line":68,"end_character":1},"in_reply_to":"aa68e2b4_6041751b","updated":"2026-06-10 11:13:55.000000000","message":"This logic was present in the original patch. The discover_version() call negotiates the actual version with the server, whereas get_api_version() (as used in the volume client) just parses the version string locally.","commit_id":"b9f7349f5cfa3ca39a22e30be1f9dfe644e42a16"},{"author":{"_account_id":38842,"name":"Silvia Wachira","display_name":"Silvia Wachira","email":"wachirasilvia8@gmail.com","username":"Silvia-Wachira"},"change_message_id":"1833f1b4d8f1ccd29fb5302c04112d55354f68f8","unresolved":true,"context_lines":[{"line_number":44,"context_line":"    # normalization for us"},{"line_number":45,"context_line":"    if check_version.isdigit():"},{"line_number":46,"context_line":"        check_version \u003d f\"{check_version}.0\""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    requested_api_version \u003d api_versions.APIVersion(version_str\u003dcheck_version)"},{"line_number":49,"context_line":"    max_version \u003d api_versions.APIVersion(api_versions.MAX_VERSION)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    instance.setup_auth()"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    client_args \u003d dict("},{"line_number":54,"context_line":"        session\u003dinstance.session,"},{"line_number":55,"context_line":"        endpoint_type\u003dinstance.interface,"},{"line_number":56,"context_line":"        region_name\u003dinstance.region_name,"},{"line_number":57,"context_line":"        auth\u003dinstance.auth,"},{"line_number":58,"context_line":"        cacert\u003dinstance.cacert,"},{"line_number":59,"context_line":"        cert\u003dinstance.cert,"},{"line_number":60,"context_line":"        insecure\u003dnot instance.verify,"},{"line_number":61,"context_line":"        api_version\u003dmax_version,"},{"line_number":62,"context_line":"    )"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    temp_client \u003d client.Client(max_version, **client_args)"},{"line_number":65,"context_line":"    discovered_version \u003d api_versions.discover_version("},{"line_number":66,"context_line":"        temp_client, requested_api_version"},{"line_number":67,"context_line":"    )"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    share_client \u003d utils.get_client_class("},{"line_number":70,"context_line":"        API_NAME, discovered_version.get_string(), API_VERSIONS"},{"line_number":71,"context_line":"    )"}],"source_content_type":"text/x-python","patch_set":7,"id":"56062410_275ef428","line":68,"range":{"start_line":47,"start_character":1,"end_line":68,"end_character":1},"in_reply_to":"ff09d330_c8a6e519","updated":"2026-06-11 10:17:59.000000000","message":"You are right, it\u0027s not in the original patch. To give more context: we can\u0027t use get_api_version() here because it returns a string like \u00272.0\u0027 which doesn\u0027t match the keys in API_VERSIONS (which expects \u00272\u0027), causing a runtime error: \"Invalid share client version \u00272.0\u0027. must be one of: 2\". discover_version() negotiates with the server and returns a version object where get_major_version() correctly returns \u00272\u0027.\nI\u0027ll add a comment in the code explaining this.","commit_id":"b9f7349f5cfa3ca39a22e30be1f9dfe644e42a16"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"488511a2eff99594750b01e9f63384ce72a4d3a1","unresolved":true,"context_lines":[{"line_number":91,"context_line":"        )"},{"line_number":92,"context_line":"        % DEFAULT_API_VERSION,"},{"line_number":93,"context_line":"    )"},{"line_number":94,"context_line":"    parser.add_argument("},{"line_number":95,"context_line":"        \u0027--os-share-endpoint-override\u0027,"},{"line_number":96,"context_line":"        metavar\u003d\u0027\u003cshare-endpoint-override\u003e\u0027,"},{"line_number":97,"context_line":"        default\u003dutils.env("},{"line_number":98,"context_line":"            \u0027OS_SHARED_FILE_SYSTEM_ENDPOINT_OVERRIDE\u0027,"},{"line_number":99,"context_line":"            \u0027OS_ENDPOINT_OVERRIDE\u0027,"},{"line_number":100,"context_line":"        ),"},{"line_number":101,"context_line":"        help\u003d_("},{"line_number":102,"context_line":"            \u0027Use this API endpoint instead of the Service Catalog. \u0027"},{"line_number":103,"context_line":"            \u0027Defaults to env[OS_SHARED_FILE_SYSTEM_ENDPOINT_OVERRIDE].\u0027"},{"line_number":104,"context_line":"        ),"},{"line_number":105,"context_line":"    )"},{"line_number":106,"context_line":"    return parser"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"7b352259_a661d43f","line":105,"range":{"start_line":94,"start_character":0,"end_line":105,"end_character":5},"updated":"2026-06-10 10:15:14.000000000","message":"Can we do this in a separate change and also add it for the other services in said change?","commit_id":"b9f7349f5cfa3ca39a22e30be1f9dfe644e42a16"},{"author":{"_account_id":38842,"name":"Silvia Wachira","display_name":"Silvia Wachira","email":"wachirasilvia8@gmail.com","username":"Silvia-Wachira"},"change_message_id":"da637f94c949811e084e3a458621d9a16dafc314","unresolved":true,"context_lines":[{"line_number":91,"context_line":"        )"},{"line_number":92,"context_line":"        % DEFAULT_API_VERSION,"},{"line_number":93,"context_line":"    )"},{"line_number":94,"context_line":"    parser.add_argument("},{"line_number":95,"context_line":"        \u0027--os-share-endpoint-override\u0027,"},{"line_number":96,"context_line":"        metavar\u003d\u0027\u003cshare-endpoint-override\u003e\u0027,"},{"line_number":97,"context_line":"        default\u003dutils.env("},{"line_number":98,"context_line":"            \u0027OS_SHARED_FILE_SYSTEM_ENDPOINT_OVERRIDE\u0027,"},{"line_number":99,"context_line":"            \u0027OS_ENDPOINT_OVERRIDE\u0027,"},{"line_number":100,"context_line":"        ),"},{"line_number":101,"context_line":"        help\u003d_("},{"line_number":102,"context_line":"            \u0027Use this API endpoint instead of the Service Catalog. \u0027"},{"line_number":103,"context_line":"            \u0027Defaults to env[OS_SHARED_FILE_SYSTEM_ENDPOINT_OVERRIDE].\u0027"},{"line_number":104,"context_line":"        ),"},{"line_number":105,"context_line":"    )"},{"line_number":106,"context_line":"    return parser"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"a172bfdc_59852b8b","line":105,"range":{"start_line":94,"start_character":0,"end_line":105,"end_character":5},"in_reply_to":"7b352259_a661d43f","updated":"2026-06-10 11:17:54.000000000","message":"Sure, I\u0027ll remove this from the patch.","commit_id":"b9f7349f5cfa3ca39a22e30be1f9dfe644e42a16"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"2c26499e1f056eb4f72b59dd3247e009715ebaac","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        )"},{"line_number":92,"context_line":"        % DEFAULT_API_VERSION,"},{"line_number":93,"context_line":"    )"},{"line_number":94,"context_line":"    parser.add_argument("},{"line_number":95,"context_line":"        \u0027--os-share-endpoint-override\u0027,"},{"line_number":96,"context_line":"        metavar\u003d\u0027\u003cshare-endpoint-override\u003e\u0027,"},{"line_number":97,"context_line":"        default\u003dutils.env("},{"line_number":98,"context_line":"            \u0027OS_SHARED_FILE_SYSTEM_ENDPOINT_OVERRIDE\u0027,"},{"line_number":99,"context_line":"            \u0027OS_ENDPOINT_OVERRIDE\u0027,"},{"line_number":100,"context_line":"        ),"},{"line_number":101,"context_line":"        help\u003d_("},{"line_number":102,"context_line":"            \u0027Use this API endpoint instead of the Service Catalog. \u0027"},{"line_number":103,"context_line":"            \u0027Defaults to env[OS_SHARED_FILE_SYSTEM_ENDPOINT_OVERRIDE].\u0027"},{"line_number":104,"context_line":"        ),"},{"line_number":105,"context_line":"    )"},{"line_number":106,"context_line":"    return parser"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"0ee5b2b9_e61b29d8","line":105,"range":{"start_line":94,"start_character":0,"end_line":105,"end_character":5},"in_reply_to":"a172bfdc_59852b8b","updated":"2026-06-15 20:24:14.000000000","message":"Done ; Silvia, please track this - let\u0027s hope to get this bootstrap in so we can modify all the services at the same time","commit_id":"b9f7349f5cfa3ca39a22e30be1f9dfe644e42a16"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"2c26499e1f056eb4f72b59dd3247e009715ebaac","unresolved":true,"context_lines":[{"line_number":72,"context_line":"    )"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    share_client \u003d utils.get_client_class("},{"line_number":75,"context_line":"        API_NAME, discovered_version.get_string(), API_VERSIONS"},{"line_number":76,"context_line":"    )"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    LOG.debug(\u0027Instantiating Shared File System client: %s\u0027, share_client)"}],"source_content_type":"text/x-python","patch_set":9,"id":"5d57c839_7ae16dcc","line":75,"updated":"2026-06-15 20:24:14.000000000","message":"in the comment above, you state that you\u0027d use \"get_major_version\".. get_string() returns the full version, it\u0027ll blow up in the dict lookup.. \n\nhttps://opendev.org/openstack/python-manilaclient/src/commit/97edb9bae63fd8e2db40bd7c9ebda1798ed2f3e1/manilaclient/api_versions.py#L153-L159\n\n\nThat said, I don\u0027t think we need this dict lookup at all. Manila only has/supports the v2 API. Moreover, this \"get_client_class\" is going to emit a deprecation warning that would be ugly/unnecessary:\n\nhttps://opendev.org/openstack/osc-lib/src/commit/441ed6b048703191f2ddb73293936923db431ca9/osc_lib/utils/__init__.py#L454-L457\n\n\nTry this:\n\n```\n  temp_client \u003d client.Client(max_version, **client_args)\n  discovered_version \u003d api_versions.discover_version(\n      temp_client, requested_api_version\n  )\n\n  LOG.debug(\u0027Instantiating Shared File System client: %s\u0027, client.Client)\n  LOG.debug(\u0027Shared File System API version: %s\u0027, discovered_version)\n\n  client_args.update(dict(api_version\u003ddiscovered_version))\n  return client.Client(discovered_version, **client_args)\n```","commit_id":"cea083ae2640803f36632fdf518395198b16af02"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"8a693521db87e3f57ad5b253bd4c131c2637528e","unresolved":false,"context_lines":[{"line_number":72,"context_line":"    )"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    share_client \u003d utils.get_client_class("},{"line_number":75,"context_line":"        API_NAME, discovered_version.get_string(), API_VERSIONS"},{"line_number":76,"context_line":"    )"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    LOG.debug(\u0027Instantiating Shared File System client: %s\u0027, share_client)"}],"source_content_type":"text/x-python","patch_set":9,"id":"647a9a13_cccd8fc7","line":75,"in_reply_to":"5d57c839_7ae16dcc","updated":"2026-06-16 15:06:22.000000000","message":"I\u0027ve commented on this below, but this is unnecessary. The client will already pass through the API version information to the server (via the microversion header) so there\u0027s no need to duplicate that check here.","commit_id":"cea083ae2640803f36632fdf518395198b16af02"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"8a693521db87e3f57ad5b253bd4c131c2637528e","unresolved":true,"context_lines":[{"line_number":32,"context_line":"_share_api_version \u003d None"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"def make_client(instance: Any) -\u003e Any:"},{"line_number":36,"context_line":"    \"\"\"Returns a service client.\"\"\""},{"line_number":37,"context_line":"    # Defer client imports until we actually need them"},{"line_number":38,"context_line":"    from manilaclient import api_versions"}],"source_content_type":"text/x-python","patch_set":11,"id":"f36b4b38_a5083a82","line":35,"updated":"2026-06-16 15:06:22.000000000","message":"This returns an instance of `manilaclient.client.Client`. Can you indicate that?","commit_id":"d07b925a1925d7ebe5ee66864c63987b1f5b9ec2"},{"author":{"_account_id":38842,"name":"Silvia Wachira","display_name":"Silvia Wachira","email":"wachirasilvia8@gmail.com","username":"Silvia-Wachira"},"change_message_id":"61707ce48739ed9ed1ce8a556df9a706e13052b4","unresolved":false,"context_lines":[{"line_number":32,"context_line":"_share_api_version \u003d None"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"def make_client(instance: Any) -\u003e Any:"},{"line_number":36,"context_line":"    \"\"\"Returns a service client.\"\"\""},{"line_number":37,"context_line":"    # Defer client imports until we actually need them"},{"line_number":38,"context_line":"    from manilaclient import api_versions"}],"source_content_type":"text/x-python","patch_set":11,"id":"f5db6264_e689a821","line":35,"in_reply_to":"2243e6dc_532e2cbc","updated":"2026-06-22 11:44:09.000000000","message":"Done","commit_id":"d07b925a1925d7ebe5ee66864c63987b1f5b9ec2"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"fe4ba83267d0fd09e308c63981a2df4060afe58c","unresolved":true,"context_lines":[{"line_number":32,"context_line":"_share_api_version \u003d None"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"def make_client(instance: Any) -\u003e Any:"},{"line_number":36,"context_line":"    \"\"\"Returns a service client.\"\"\""},{"line_number":37,"context_line":"    # Defer client imports until we actually need them"},{"line_number":38,"context_line":"    from manilaclient import api_versions"}],"source_content_type":"text/x-python","patch_set":11,"id":"2243e6dc_532e2cbc","line":35,"in_reply_to":"f36b4b38_a5083a82","updated":"2026-06-19 23:01:41.000000000","message":"+1","commit_id":"d07b925a1925d7ebe5ee66864c63987b1f5b9ec2"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"8a693521db87e3f57ad5b253bd4c131c2637528e","unresolved":true,"context_lines":[{"line_number":48,"context_line":"    max_version \u003d api_versions.APIVersion(api_versions.MAX_VERSION)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    instance.setup_auth()"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    client_args \u003d dict("},{"line_number":53,"context_line":"        session\u003dinstance.session,"},{"line_number":54,"context_line":"        endpoint_type\u003dinstance.interface,"},{"line_number":55,"context_line":"        region_name\u003dinstance.region_name,"},{"line_number":56,"context_line":"        auth\u003dinstance.auth,"},{"line_number":57,"context_line":"        cacert\u003dinstance.cacert,"},{"line_number":58,"context_line":"        cert\u003dinstance.cert,"},{"line_number":59,"context_line":"        insecure\u003dnot instance.verify,"},{"line_number":60,"context_line":"        api_version\u003dmax_version,"},{"line_number":61,"context_line":"    )"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    temp_client \u003d client.Client(max_version, **client_args)"},{"line_number":64,"context_line":"    discovered_version \u003d api_versions.discover_version("},{"line_number":65,"context_line":"        temp_client, requested_api_version"}],"source_content_type":"text/x-python","patch_set":11,"id":"7c499f92_a776b01f","line":62,"range":{"start_line":51,"start_character":1,"end_line":62,"end_character":1},"updated":"2026-06-16 15:06:22.000000000","message":"Can you just pass these arguments directly through to the `client.Client` call below, assuming we can drop the `temp_client` usage","commit_id":"d07b925a1925d7ebe5ee66864c63987b1f5b9ec2"},{"author":{"_account_id":38842,"name":"Silvia Wachira","display_name":"Silvia Wachira","email":"wachirasilvia8@gmail.com","username":"Silvia-Wachira"},"change_message_id":"61707ce48739ed9ed1ce8a556df9a706e13052b4","unresolved":false,"context_lines":[{"line_number":48,"context_line":"    max_version \u003d api_versions.APIVersion(api_versions.MAX_VERSION)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    instance.setup_auth()"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    client_args \u003d dict("},{"line_number":53,"context_line":"        session\u003dinstance.session,"},{"line_number":54,"context_line":"        endpoint_type\u003dinstance.interface,"},{"line_number":55,"context_line":"        region_name\u003dinstance.region_name,"},{"line_number":56,"context_line":"        auth\u003dinstance.auth,"},{"line_number":57,"context_line":"        cacert\u003dinstance.cacert,"},{"line_number":58,"context_line":"        cert\u003dinstance.cert,"},{"line_number":59,"context_line":"        insecure\u003dnot instance.verify,"},{"line_number":60,"context_line":"        api_version\u003dmax_version,"},{"line_number":61,"context_line":"    )"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    temp_client \u003d client.Client(max_version, **client_args)"},{"line_number":64,"context_line":"    discovered_version \u003d api_versions.discover_version("},{"line_number":65,"context_line":"        temp_client, requested_api_version"}],"source_content_type":"text/x-python","patch_set":11,"id":"201c0dcb_a1236fc5","line":62,"range":{"start_line":51,"start_character":1,"end_line":62,"end_character":1},"in_reply_to":"7c499f92_a776b01f","updated":"2026-06-22 11:44:09.000000000","message":"Done.Kept temp_client as discover_version() requires an existing client instance to negotiate the microversion with the server. Added a comment explaining this.","commit_id":"d07b925a1925d7ebe5ee66864c63987b1f5b9ec2"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"56024b909847d3b78ca710db030d2b4e6655951d","unresolved":true,"context_lines":[{"line_number":13,"context_line":"#   under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import argparse"},{"line_number":16,"context_line":"import logging"},{"line_number":17,"context_line":"from typing import Any"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from osc_lib import exceptions"},{"line_number":20,"context_line":"from osc_lib import utils"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from openstackclient.i18n import _"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"398d269a_ea9642b4","line":22,"range":{"start_line":16,"start_character":14,"end_line":22,"end_character":34},"updated":"2026-06-23 10:57:26.000000000","message":"You need to import the client so that mypy can see it\n\n```suggestion\nimport logging\nfrom typing import Any, TYPE_CHECKING\n\nfrom osc_lib import exceptions\nfrom osc_lib import utils\n\nfrom openstackclient.i18n import _\n\n\nif TYPE_CHECKING:\n    from manilaclient import client\n```\n\nAlternatively, you can just import without the `TYPE_CHECKING` block and remove the import from `make_client`. Per @gouthampravi@gmail.com\u0027s comments below, there isn\u0027t really a good reason to delay the import nowadays","commit_id":"991cbae3a1f4ff26f9d8f2191eb54074ff9b8e5f"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f1be542150425eac31bee286d24d89cb66759387","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#   under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import argparse"},{"line_number":16,"context_line":"import logging"},{"line_number":17,"context_line":"from typing import Any"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from osc_lib import exceptions"},{"line_number":20,"context_line":"from osc_lib import utils"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from openstackclient.i18n import _"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"d7732d77_d3717252","line":22,"range":{"start_line":16,"start_character":14,"end_line":22,"end_character":34},"in_reply_to":"398d269a_ea9642b4","updated":"2026-06-23 21:27:23.000000000","message":"Marked as resolved. Will have this addressed.","commit_id":"991cbae3a1f4ff26f9d8f2191eb54074ff9b8e5f"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"e704b1a972cab06e1d019a6b74bb168bf8f4da39","unresolved":true,"context_lines":[{"line_number":32,"context_line":"_share_api_version \u003d None"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"def make_client(instance: Any) -\u003e \"client.Client\":"},{"line_number":36,"context_line":"    \"\"\"Returns a manilaclient.client.Client instance.\"\"\""},{"line_number":37,"context_line":"    # Defer client imports until we actually need them"},{"line_number":38,"context_line":"    from manilaclient import api_versions"}],"source_content_type":"text/x-python","patch_set":15,"id":"1c1c30da_7875dbed","line":35,"range":{"start_line":35,"start_character":34,"end_line":35,"end_character":50},"updated":"2026-06-22 17:00:03.000000000","message":"The import is happening within the method.. i think the reasoning here is to not import the manilaclient unless this make_client method is called. I don\u0027t know the reasoning, perhaps @stephenfin@redhat.com knows.. \n\nthe make_client method for all existing services also use \"Any\" as the return type.. i guess the goal is to get that addressed all over. \n\nMaybe we can fix this up in a follow up change?","commit_id":"991cbae3a1f4ff26f9d8f2191eb54074ff9b8e5f"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"56024b909847d3b78ca710db030d2b4e6655951d","unresolved":true,"context_lines":[{"line_number":32,"context_line":"_share_api_version \u003d None"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"def make_client(instance: Any) -\u003e \"client.Client\":"},{"line_number":36,"context_line":"    \"\"\"Returns a manilaclient.client.Client instance.\"\"\""},{"line_number":37,"context_line":"    # Defer client imports until we actually need them"},{"line_number":38,"context_line":"    from manilaclient import api_versions"}],"source_content_type":"text/x-python","patch_set":15,"id":"1f32fc77_3d04dfc2","line":35,"range":{"start_line":35,"start_character":34,"end_line":35,"end_character":50},"in_reply_to":"1c1c30da_7875dbed","updated":"2026-06-23 10:57:26.000000000","message":"\u003e The import is happening within the method.. i think the reasoning here is to not import the manilaclient unless this make_client method is called. I don\u0027t know the reasoning, perhaps @stephenfin@redhat.com knows.. \n\nIt predates my time, but the clients can be slow to import so by delaying them \n\n\u003e the make_client method for all existing services also use \"Any\" as the return type.. i guess the goal is to get that addressed all over. \n\u003e \n\u003e Maybe we can fix this up in a follow up change?\n\nYeah, it would be. The hints in OSC were a rough first pass to get most things initially typed. They can definitely be tightened up as we\u0027re doing here","commit_id":"991cbae3a1f4ff26f9d8f2191eb54074ff9b8e5f"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"b1984007923bcbc094c9db9d0cde5529e7003be1","unresolved":true,"context_lines":[{"line_number":32,"context_line":"_share_api_version \u003d None"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"def make_client(instance: Any) -\u003e \"client.Client\":"},{"line_number":36,"context_line":"    \"\"\"Returns a manilaclient.client.Client instance.\"\"\""},{"line_number":37,"context_line":"    # Defer client imports until we actually need them"},{"line_number":38,"context_line":"    from manilaclient import api_versions"}],"source_content_type":"text/x-python","patch_set":15,"id":"d383717e_cb205601","line":35,"range":{"start_line":35,"start_character":34,"end_line":35,"end_character":50},"in_reply_to":"1f32fc77_3d04dfc2","updated":"2026-06-23 20:14:05.000000000","message":"++ Will ask Sylvia to tackle this once she\u0027s done with the meaty migration patches..","commit_id":"991cbae3a1f4ff26f9d8f2191eb54074ff9b8e5f"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"efc41fb151e806edb1901792e4559bd18d469f3b","unresolved":false,"context_lines":[{"line_number":32,"context_line":"_share_api_version \u003d None"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"def make_client(instance: Any) -\u003e \"client.Client\":"},{"line_number":36,"context_line":"    \"\"\"Returns a manilaclient.client.Client instance.\"\"\""},{"line_number":37,"context_line":"    # Defer client imports until we actually need them"},{"line_number":38,"context_line":"    from manilaclient import api_versions"}],"source_content_type":"text/x-python","patch_set":15,"id":"42d3b925_aaedb365","line":35,"range":{"start_line":35,"start_character":34,"end_line":35,"end_character":50},"in_reply_to":"d383717e_cb205601","updated":"2026-06-25 15:12:48.000000000","message":"Acknowledged","commit_id":"991cbae3a1f4ff26f9d8f2191eb54074ff9b8e5f"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"a7a332fe45d82479977166f12573c20e2aafff4a","unresolved":true,"context_lines":[{"line_number":59,"context_line":"        insecure\u003dnot instance.verify,"},{"line_number":60,"context_line":"    )"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    # We use discover_version() to negotiate the microversion with the server"},{"line_number":63,"context_line":"    # rather than get_api_version(), which only parses the version string"},{"line_number":64,"context_line":"    # locally and does not validate against what the server supports."},{"line_number":65,"context_line":"    temp_client \u003d client.Client(max_version, **client_args)"},{"line_number":66,"context_line":"    discovered_version \u003d api_versions.discover_version("},{"line_number":67,"context_line":"        temp_client, requested_api_version"},{"line_number":68,"context_line":"    )"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    LOG.debug(\u0027Instantiating Shared File System client: %s\u0027, client.Client)"},{"line_number":71,"context_line":"    LOG.debug(\u0027Shared File System API version: %s\u0027, discovered_version)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    return client.Client(discovered_version, **client_args)"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"def build_option_parser("}],"source_content_type":"text/x-python","patch_set":17,"id":"43ff242d_8e372807","line":73,"range":{"start_line":62,"start_character":3,"end_line":73,"end_character":59},"updated":"2026-06-23 20:13:21.000000000","message":"Silvia, per Stephen\u0027s IRC feedback — we should drop the `temp_client` / `discover_version()` pattern from `make_client()`.\n\nNone of the other in-tree service clients do server-side version negotiation during client creation. The microversion validation will occur when a command is invoked, and doesn\u0027t have to hppen at client init time. \n\nHere\u0027s what `make_client` should look like — same shape as the\nvolume client, minus the multi-version complexity:\n\n      def make_client(instance: Any) -\u003e Any:\n          \"\"\"Returns a manilaclient.client.Client instance.\"\"\"\n          from manilaclient import api_versions\n          from manilaclient import client\n\n          check_version \u003d instance._api_version[API_NAME]\n          if check_version.isdigit():\n              check_version \u003d f\"{check_version}.0\"\n\n          version \u003d api_versions.get_api_version(check_version)\n\n          instance.setup_auth()\n\n          LOG.debug(\u0027Instantiating Shared File System client: %s\u0027, client.Client)\n          LOG.debug(\u0027Shared File System API version: %s\u0027, version)\n\n          return client.Client(\n              version,\n              session\u003dinstance.session,\n              endpoint_type\u003dinstance.interface,\n              region_name\u003dinstance.region_name,\n              auth\u003dinstance.auth,\n              cacert\u003dinstance.cacert,\n              cert\u003dinstance.cert,\n              insecure\u003dnot instance.verify,\n          )","commit_id":"d89d0b7fa5c035e9cc2938ef189f1ce9b1ec5c72"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f1be542150425eac31bee286d24d89cb66759387","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        insecure\u003dnot instance.verify,"},{"line_number":60,"context_line":"    )"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    # We use discover_version() to negotiate the microversion with the server"},{"line_number":63,"context_line":"    # rather than get_api_version(), which only parses the version string"},{"line_number":64,"context_line":"    # locally and does not validate against what the server supports."},{"line_number":65,"context_line":"    temp_client \u003d client.Client(max_version, **client_args)"},{"line_number":66,"context_line":"    discovered_version \u003d api_versions.discover_version("},{"line_number":67,"context_line":"        temp_client, requested_api_version"},{"line_number":68,"context_line":"    )"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    LOG.debug(\u0027Instantiating Shared File System client: %s\u0027, client.Client)"},{"line_number":71,"context_line":"    LOG.debug(\u0027Shared File System API version: %s\u0027, discovered_version)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    return client.Client(discovered_version, **client_args)"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"def build_option_parser("}],"source_content_type":"text/x-python","patch_set":17,"id":"e2b7efbc_bd3ca2ea","line":73,"range":{"start_line":62,"start_character":3,"end_line":73,"end_character":59},"in_reply_to":"43ff242d_8e372807","updated":"2026-06-23 21:27:23.000000000","message":"Done","commit_id":"d89d0b7fa5c035e9cc2938ef189f1ce9b1ec5c72"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f1be542150425eac31bee286d24d89cb66759387","unresolved":true,"context_lines":[{"line_number":24,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"# global variables used when building the shell"},{"line_number":27,"context_line":"DEFAULT_API_VERSION \u003d \"2\""},{"line_number":28,"context_line":"API_VERSION_OPTION \u003d \"os_share_api_version\""},{"line_number":29,"context_line":"API_NAME \u003d \"share\""},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"a52ccf62_731ca13a","line":27,"updated":"2026-06-23 21:27:23.000000000","message":"nit: unsure about this quote style change, looks like the preference here has been single quotes. Not a blocker","commit_id":"bdd700c883c817a07a2630542e9f63a3907d0378"},{"author":{"_account_id":38842,"name":"Silvia Wachira","display_name":"Silvia Wachira","email":"wachirasilvia8@gmail.com","username":"Silvia-Wachira"},"change_message_id":"c9f36d81db6737ac69cb208ade3516d7f59aee41","unresolved":false,"context_lines":[{"line_number":24,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"# global variables used when building the shell"},{"line_number":27,"context_line":"DEFAULT_API_VERSION \u003d \"2\""},{"line_number":28,"context_line":"API_VERSION_OPTION \u003d \"os_share_api_version\""},{"line_number":29,"context_line":"API_NAME \u003d \"share\""},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"2cf06b05_211359ea","line":27,"in_reply_to":"a52ccf62_731ca13a","updated":"2026-06-23 22:51:22.000000000","message":"Fixed quote style to use single quotes consistently","commit_id":"bdd700c883c817a07a2630542e9f63a3907d0378"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9841518640b64e975c793197757dbc38c2170965","unresolved":true,"context_lines":[{"line_number":15,"context_line":"import argparse"},{"line_number":16,"context_line":"import logging"},{"line_number":17,"context_line":"from typing import TYPE_CHECKING, Any"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"if TYPE_CHECKING:"},{"line_number":20,"context_line":"    from manilaclient import client"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from osc_lib import exceptions"},{"line_number":23,"context_line":"from osc_lib import utils"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from openstackclient.i18n import _"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"# global variables used when building the shell"}],"source_content_type":"text/x-python","patch_set":20,"id":"c727b484_52a736e5","line":26,"range":{"start_line":18,"start_character":1,"end_line":26,"end_character":1},"updated":"2026-06-25 14:45:25.000000000","message":"conditional imports should go later\n\n```suggestion\n\nfrom osc_lib import exceptions\nfrom osc_lib import utils\n\nfrom openstackclient.i18n import _\n\nif TYPE_CHECKING:\n    from manilaclient import client\n```","commit_id":"e94c73c9d964892cc1cf9ad223bf9ff793c61673"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7914ded786d822303e4187bd6b19380730220cac","unresolved":false,"context_lines":[{"line_number":15,"context_line":"import argparse"},{"line_number":16,"context_line":"import logging"},{"line_number":17,"context_line":"from typing import TYPE_CHECKING, Any"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"if TYPE_CHECKING:"},{"line_number":20,"context_line":"    from manilaclient import client"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from osc_lib import exceptions"},{"line_number":23,"context_line":"from osc_lib import utils"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from openstackclient.i18n import _"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"# global variables used when building the shell"}],"source_content_type":"text/x-python","patch_set":20,"id":"f1b8cf38_8f468e8a","line":26,"range":{"start_line":18,"start_character":1,"end_line":26,"end_character":1},"in_reply_to":"c727b484_52a736e5","updated":"2026-06-25 14:53:49.000000000","message":"Done in https://review.opendev.org/c/openstack/python-openstackclient/+/994922","commit_id":"e94c73c9d964892cc1cf9ad223bf9ff793c61673"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9841518640b64e975c793197757dbc38c2170965","unresolved":true,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"def make_client(instance: Any) -\u003e \u0027client.Client\u0027:"},{"line_number":39,"context_line":"    \"\"\"Returns a manilaclient.client.Client instance.\"\"\""},{"line_number":40,"context_line":"    from manilaclient import api_versions"},{"line_number":41,"context_line":"    from manilaclient import client"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    check_version \u003d instance._api_version[API_NAME]"}],"source_content_type":"text/x-python","patch_set":20,"id":"ec863b94_be15c4f9","line":40,"updated":"2026-06-25 14:45:25.000000000","message":"You\u0027ve lost a comment here:\n\n```suggestion\n    # Defer client imports until we actually need them\n    from manilaclient import api_versions\n```\n\nLet\u0027s re-add it in a follow-up","commit_id":"e94c73c9d964892cc1cf9ad223bf9ff793c61673"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7914ded786d822303e4187bd6b19380730220cac","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"def make_client(instance: Any) -\u003e \u0027client.Client\u0027:"},{"line_number":39,"context_line":"    \"\"\"Returns a manilaclient.client.Client instance.\"\"\""},{"line_number":40,"context_line":"    from manilaclient import api_versions"},{"line_number":41,"context_line":"    from manilaclient import client"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    check_version \u003d instance._api_version[API_NAME]"}],"source_content_type":"text/x-python","patch_set":20,"id":"ae04eb10_61b58505","line":40,"in_reply_to":"ec863b94_be15c4f9","updated":"2026-06-25 14:53:49.000000000","message":"Done in https://review.opendev.org/c/openstack/python-openstackclient/+/994922","commit_id":"e94c73c9d964892cc1cf9ad223bf9ff793c61673"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9841518640b64e975c793197757dbc38c2170965","unresolved":true,"context_lines":[{"line_number":41,"context_line":"    from manilaclient import client"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    check_version \u003d instance._api_version[API_NAME]"},{"line_number":44,"context_line":"    if check_version.isdigit():"},{"line_number":45,"context_line":"        check_version \u003d f\"{check_version}.0\""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    version \u003d api_versions.get_api_version(check_version)"}],"source_content_type":"text/x-python","patch_set":20,"id":"c123f21c_8c354cd9","line":44,"updated":"2026-06-25 14:45:25.000000000","message":"We\u0027ve dropped the TODO from PS1:\n\n```suggestion\n    # TODO(stephenfin): Other clients (novaclient, cinderclient, ...) do this\n    # normalization for us\n    if check_version.isdigit():\n```\n\nThat was kept as a reminder to update this once the [fix in manilaclient](https://review.opendev.org/c/openstack/python-manilaclient/+/970824) had landed. That has happened now so this could be dropped. I\u0027ll push a follow-up rather than make this rebase again.","commit_id":"e94c73c9d964892cc1cf9ad223bf9ff793c61673"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7914ded786d822303e4187bd6b19380730220cac","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    from manilaclient import client"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    check_version \u003d instance._api_version[API_NAME]"},{"line_number":44,"context_line":"    if check_version.isdigit():"},{"line_number":45,"context_line":"        check_version \u003d f\"{check_version}.0\""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    version \u003d api_versions.get_api_version(check_version)"}],"source_content_type":"text/x-python","patch_set":20,"id":"fd93e9d6_8336404c","line":44,"in_reply_to":"c123f21c_8c354cd9","updated":"2026-06-25 14:53:49.000000000","message":"Done in https://review.opendev.org/c/openstack/python-openstackclient/+/994922","commit_id":"e94c73c9d964892cc1cf9ad223bf9ff793c61673"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9841518640b64e975c793197757dbc38c2170965","unresolved":true,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    version \u003d api_versions.get_api_version(check_version)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    instance.setup_auth()"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    LOG.debug(\u0027Instantiating Shared File System client: %s\u0027, client.Client)"},{"line_number":52,"context_line":"    LOG.debug(\u0027Shared File System API version: %s\u0027, version)"}],"source_content_type":"text/x-python","patch_set":20,"id":"49ea01b5_3238e4be","line":49,"updated":"2026-06-25 14:45:25.000000000","message":"Do we need this? None of the other clients seem to need it","commit_id":"e94c73c9d964892cc1cf9ad223bf9ff793c61673"},{"author":{"_account_id":38842,"name":"Silvia Wachira","display_name":"Silvia Wachira","email":"wachirasilvia8@gmail.com","username":"Silvia-Wachira"},"change_message_id":"ea120587fcdcdbd8f951560390131999079ab47e","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    version \u003d api_versions.get_api_version(check_version)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    instance.setup_auth()"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    LOG.debug(\u0027Instantiating Shared File System client: %s\u0027, client.Client)"},{"line_number":52,"context_line":"    LOG.debug(\u0027Shared File System API version: %s\u0027, version)"}],"source_content_type":"text/x-python","patch_set":20,"id":"8c345d1e_c6dfb990","line":49,"in_reply_to":"1cedfefd_1e2d0857","updated":"2026-06-25 18:10:59.000000000","message":"Done","commit_id":"e94c73c9d964892cc1cf9ad223bf9ff793c61673"},{"author":{"_account_id":38842,"name":"Silvia Wachira","display_name":"Silvia Wachira","email":"wachirasilvia8@gmail.com","username":"Silvia-Wachira"},"change_message_id":"1fc450f910833c15c3334f24df77485d3f96d39d","unresolved":true,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    version \u003d api_versions.get_api_version(check_version)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    instance.setup_auth()"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    LOG.debug(\u0027Instantiating Shared File System client: %s\u0027, client.Client)"},{"line_number":52,"context_line":"    LOG.debug(\u0027Shared File System API version: %s\u0027, version)"}],"source_content_type":"text/x-python","patch_set":20,"id":"1cedfefd_1e2d0857","line":49,"in_reply_to":"49ea01b5_3238e4be","updated":"2026-06-25 18:10:39.000000000","message":"Removed in 994922.","commit_id":"e94c73c9d964892cc1cf9ad223bf9ff793c61673"}]}
