)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"09fb97d9370f1f4299b189ca53d60f50c6e860a9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"0289b651_68e9fb87","updated":"2024-12-16 18:36:12.000000000","message":"Just need a release note...and a merge and release of the dependency, naturally!","commit_id":"be3d055e3e623218188c107562971d059535e761"},{"author":{"_account_id":36482,"name":"Oria Weng","display_name":"0weng","email":"oweng@osuosl.org","username":"0weng"},"change_message_id":"0831325dc55927c20bb5482d7d4afd4d50ef7be7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"ff5d7977_4697977f","in_reply_to":"0289b651_68e9fb87","updated":"2025-01-13 22:37:14.000000000","message":"Done :)","commit_id":"be3d055e3e623218188c107562971d059535e761"},{"author":{"_account_id":36482,"name":"Oria Weng","display_name":"0weng","email":"oweng@osuosl.org","username":"0weng"},"change_message_id":"cc2335aaefa3cf681a15ef9e28b9c26bafe7fce2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"e43c8258_53f7f2ad","in_reply_to":"ff5d7977_4697977f","updated":"2025-01-13 23:39:32.000000000","message":"(meant to say, \"Done with the release note :)\")","commit_id":"be3d055e3e623218188c107562971d059535e761"},{"author":{"_account_id":36482,"name":"Oria Weng","display_name":"0weng","email":"oweng@osuosl.org","username":"0weng"},"change_message_id":"171d311714afc4d43f22f9d01ffdbc0ce5668ea2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"49754914_856e00b0","updated":"2025-01-16 01:43:46.000000000","message":"recheck unrelated","commit_id":"442ab46e2e0af128cc012b997bcf6568db13b136"},{"author":{"_account_id":36482,"name":"Oria Weng","display_name":"0weng","email":"oweng@osuosl.org","username":"0weng"},"change_message_id":"a8f31579118d4122ff33a5b479af77a8b47127e6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"3cb6ed32_2d2bb075","in_reply_to":"49754914_856e00b0","updated":"2025-01-16 20:40:34.000000000","message":"Oh, didn\u0027t realize `openstackclient-check-plugins` was non-voting. In that case I don\u0027t need it to check again since the `osc-functional-devstack` is expected from the `Depends-On` not being released yet.","commit_id":"442ab46e2e0af128cc012b997bcf6568db13b136"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b0697dacefaf2d0c48b3da26a257bbfb05671ef6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":30,"id":"99bc72fa_0d8153b8","updated":"2025-12-04 14:04:58.000000000","message":"I think we should add two TODOs and remove that note about case-sensitivity from the release note since I don\u0027t believe it\u0027s true. Hopefully patchset 31 will be the last one then 😂","commit_id":"4d89d521c78a750bef635304e5667980ade11076"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2320af631ab87323769062d6eab279b9cd3a3f58","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":32,"id":"c91945e6_cd8f6ad0","updated":"2026-01-27 17:08:45.000000000","message":"Great work here. There are a couple of follow-ups, and I\u0027d still like to get to the bottom of that case-insensitivity thing, but we can do that in follow-ups.","commit_id":"911e643f2c6ff15072ce558d4f8b547af8505155"}],"openstackclient/identity/v3/limit.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d7913435382ae27dd1ae6fc66acbf2d07556caeb","unresolved":true,"context_lines":[{"line_number":26,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"def _find_sdk_id("},{"line_number":30,"context_line":"    find_command, name_or_id, validate_actor_existence\u003dTrue, **kwargs"},{"line_number":31,"context_line":"):"},{"line_number":32,"context_line":"    try:"},{"line_number":33,"context_line":"        resource \u003d find_command("},{"line_number":34,"context_line":"            name_or_id\u003dname_or_id, ignore_missing\u003dFalse, **kwargs"},{"line_number":35,"context_line":"        )"},{"line_number":36,"context_line":"    # Mimic the behavior of"},{"line_number":37,"context_line":"    # openstackclient.identity.common._find_identity_resource()"},{"line_number":38,"context_line":"    # and ignore if we don\u0027t have permission to find a resource."},{"line_number":39,"context_line":"    except sdk_exc.ForbiddenException:"},{"line_number":40,"context_line":"        return name_or_id"},{"line_number":41,"context_line":"    except sdk_exc.ResourceNotFound as exc:"},{"line_number":42,"context_line":"        if not validate_actor_existence:"},{"line_number":43,"context_line":"            return name_or_id"},{"line_number":44,"context_line":"        raise exceptions.CommandError from exc"},{"line_number":45,"context_line":"    return resource.id"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"def _format_limit(limit):"}],"source_content_type":"text/x-python","patch_set":29,"id":"de19f593_17ec7664","line":45,"range":{"start_line":29,"start_character":0,"end_line":45,"end_character":22},"updated":"2025-11-26 10:45:04.000000000","message":"Let\u0027s use the common one from `openstack.identity.common` now, rather than duplicating this everywhere","commit_id":"82426bf89f6508a1080edc1edcba79b18ba1e5ed"},{"author":{"_account_id":36482,"name":"Oria Weng","display_name":"0weng","email":"oweng@osuosl.org","username":"0weng"},"change_message_id":"66d85a392a204603264bf2df900ad8585ac108af","unresolved":false,"context_lines":[{"line_number":26,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"def _find_sdk_id("},{"line_number":30,"context_line":"    find_command, name_or_id, validate_actor_existence\u003dTrue, **kwargs"},{"line_number":31,"context_line":"):"},{"line_number":32,"context_line":"    try:"},{"line_number":33,"context_line":"        resource \u003d find_command("},{"line_number":34,"context_line":"            name_or_id\u003dname_or_id, ignore_missing\u003dFalse, **kwargs"},{"line_number":35,"context_line":"        )"},{"line_number":36,"context_line":"    # Mimic the behavior of"},{"line_number":37,"context_line":"    # openstackclient.identity.common._find_identity_resource()"},{"line_number":38,"context_line":"    # and ignore if we don\u0027t have permission to find a resource."},{"line_number":39,"context_line":"    except sdk_exc.ForbiddenException:"},{"line_number":40,"context_line":"        return name_or_id"},{"line_number":41,"context_line":"    except sdk_exc.ResourceNotFound as exc:"},{"line_number":42,"context_line":"        if not validate_actor_existence:"},{"line_number":43,"context_line":"            return name_or_id"},{"line_number":44,"context_line":"        raise exceptions.CommandError from exc"},{"line_number":45,"context_line":"    return resource.id"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"def _format_limit(limit):"}],"source_content_type":"text/x-python","patch_set":29,"id":"c1302fb6_35d10763","line":45,"range":{"start_line":29,"start_character":0,"end_line":45,"end_character":22},"in_reply_to":"de19f593_17ec7664","updated":"2025-12-01 23:54:22.000000000","message":"Done, I believe I first created this patch before the one in `openstack.identity.common` existed. (And now I\u0027m updating it before `openstack.identity.common.find_project_id_sdk()` exists...)","commit_id":"82426bf89f6508a1080edc1edcba79b18ba1e5ed"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d7913435382ae27dd1ae6fc66acbf2d07556caeb","unresolved":true,"context_lines":[{"line_number":124,"context_line":"        ).id"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"        if parsed_args.region:"},{"line_number":127,"context_line":"            # NOTE (0weng/originally vishakha): Mimic the behavior of"},{"line_number":128,"context_line":"            # common_utils.get_resource() here, instead of"},{"line_number":129,"context_line":"            # osc_lib.utils.find_resource()."},{"line_number":130,"context_line":"            # common_utils.get_resource() was used due to the case described in"},{"line_number":131,"context_line":"            # bug #1799153 where the GET resource API does not support"},{"line_number":132,"context_line":"            # filtering by name. The osc_lib.utils.find_resource() method"},{"line_number":133,"context_line":"            # could not be used because that method tries to fall back to"},{"line_number":134,"context_line":"            # list all of that resource if the requested resource"},{"line_number":135,"context_line":"            # could not be GET by ID or name, resulting in a NoUniqueMatch error."},{"line_number":136,"context_line":"            requested_region \u003d parsed_args.region"},{"line_number":137,"context_line":"            try:"},{"line_number":138,"context_line":"                resource \u003d identity_client.find_region("},{"line_number":139,"context_line":"                    name_or_id\u003drequested_region,"},{"line_number":140,"context_line":"                    ignore_missing\u003dFalse,"},{"line_number":141,"context_line":"                )"},{"line_number":142,"context_line":"            # Still mimic osc_lib.utils.find_resource() here"},{"line_number":143,"context_line":"            # and ignore if we don\u0027t have permission to find a resource."},{"line_number":144,"context_line":"            except sdk_exc.ForbiddenException:"},{"line_number":145,"context_line":"                kwargs[\"region_id\"] \u003d requested_region"},{"line_number":146,"context_line":"            except sdk_exc.ResourceNotFound as exc:"},{"line_number":147,"context_line":"                raise exceptions.CommandError from exc"},{"line_number":148,"context_line":"            else:"},{"line_number":149,"context_line":"                # It\u0027s possible for a region to have no ID, so look for ID or name"},{"line_number":150,"context_line":"                kwargs[\"region_id\"] \u003d getattr(resource, \"id\") or getattr("},{"line_number":151,"context_line":"                    resource, \"name\""},{"line_number":152,"context_line":"                )"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"        kwargs[\"resource_name\"] \u003d parsed_args.resource_name"},{"line_number":155,"context_line":"        kwargs[\"resource_limit\"] \u003d parsed_args.resource_limit"}],"source_content_type":"text/x-python","patch_set":29,"id":"e3267806_8c93c507","line":152,"range":{"start_line":127,"start_character":0,"end_line":152,"end_character":17},"updated":"2025-11-26 10:45:04.000000000","message":"Same comment as with registered limit\n\nhttps://review.opendev.org/c/openstack/python-openstackclient/+/942735/comment/1601bcd5_3ab74035/","commit_id":"82426bf89f6508a1080edc1edcba79b18ba1e5ed"},{"author":{"_account_id":36482,"name":"Oria Weng","display_name":"0weng","email":"oweng@osuosl.org","username":"0weng"},"change_message_id":"66d85a392a204603264bf2df900ad8585ac108af","unresolved":false,"context_lines":[{"line_number":124,"context_line":"        ).id"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"        if parsed_args.region:"},{"line_number":127,"context_line":"            # NOTE (0weng/originally vishakha): Mimic the behavior of"},{"line_number":128,"context_line":"            # common_utils.get_resource() here, instead of"},{"line_number":129,"context_line":"            # osc_lib.utils.find_resource()."},{"line_number":130,"context_line":"            # common_utils.get_resource() was used due to the case described in"},{"line_number":131,"context_line":"            # bug #1799153 where the GET resource API does not support"},{"line_number":132,"context_line":"            # filtering by name. The osc_lib.utils.find_resource() method"},{"line_number":133,"context_line":"            # could not be used because that method tries to fall back to"},{"line_number":134,"context_line":"            # list all of that resource if the requested resource"},{"line_number":135,"context_line":"            # could not be GET by ID or name, resulting in a NoUniqueMatch error."},{"line_number":136,"context_line":"            requested_region \u003d parsed_args.region"},{"line_number":137,"context_line":"            try:"},{"line_number":138,"context_line":"                resource \u003d identity_client.find_region("},{"line_number":139,"context_line":"                    name_or_id\u003drequested_region,"},{"line_number":140,"context_line":"                    ignore_missing\u003dFalse,"},{"line_number":141,"context_line":"                )"},{"line_number":142,"context_line":"            # Still mimic osc_lib.utils.find_resource() here"},{"line_number":143,"context_line":"            # and ignore if we don\u0027t have permission to find a resource."},{"line_number":144,"context_line":"            except sdk_exc.ForbiddenException:"},{"line_number":145,"context_line":"                kwargs[\"region_id\"] \u003d requested_region"},{"line_number":146,"context_line":"            except sdk_exc.ResourceNotFound as exc:"},{"line_number":147,"context_line":"                raise exceptions.CommandError from exc"},{"line_number":148,"context_line":"            else:"},{"line_number":149,"context_line":"                # It\u0027s possible for a region to have no ID, so look for ID or name"},{"line_number":150,"context_line":"                kwargs[\"region_id\"] \u003d getattr(resource, \"id\") or getattr("},{"line_number":151,"context_line":"                    resource, \"name\""},{"line_number":152,"context_line":"                )"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"        kwargs[\"resource_name\"] \u003d parsed_args.resource_name"},{"line_number":155,"context_line":"        kwargs[\"resource_limit\"] \u003d parsed_args.resource_limit"}],"source_content_type":"text/x-python","patch_set":29,"id":"2e72370a_9bb129e4","line":152,"range":{"start_line":127,"start_character":0,"end_line":152,"end_character":17},"in_reply_to":"e3267806_8c93c507","updated":"2025-12-01 23:54:22.000000000","message":"Done","commit_id":"82426bf89f6508a1080edc1edcba79b18ba1e5ed"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d7913435382ae27dd1ae6fc66acbf2d07556caeb","unresolved":true,"context_lines":[{"line_number":151,"context_line":"                    resource, \"name\""},{"line_number":152,"context_line":"                )"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"        kwargs[\"resource_name\"] \u003d parsed_args.resource_name"},{"line_number":155,"context_line":"        kwargs[\"resource_limit\"] \u003d parsed_args.resource_limit"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"        limit \u003d identity_client.create_limit(**kwargs)"},{"line_number":158,"context_line":""}],"source_content_type":"text/x-python","patch_set":29,"id":"0e6d6a73_673a1076","line":155,"range":{"start_line":154,"start_character":0,"end_line":155,"end_character":61},"updated":"2025-11-26 10:45:04.000000000","message":"nit: we could set `resource_name` up top when we initially create `kwargs`. ~~Also, do we need to wrap `resource_limit` in a conditional in case it\u0027s unset?~~ Edit: no, that\u0027s a required opt, but we can set this initially during `kwargs` creation also.","commit_id":"82426bf89f6508a1080edc1edcba79b18ba1e5ed"},{"author":{"_account_id":36482,"name":"Oria Weng","display_name":"0weng","email":"oweng@osuosl.org","username":"0weng"},"change_message_id":"66d85a392a204603264bf2df900ad8585ac108af","unresolved":false,"context_lines":[{"line_number":151,"context_line":"                    resource, \"name\""},{"line_number":152,"context_line":"                )"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"        kwargs[\"resource_name\"] \u003d parsed_args.resource_name"},{"line_number":155,"context_line":"        kwargs[\"resource_limit\"] \u003d parsed_args.resource_limit"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"        limit \u003d identity_client.create_limit(**kwargs)"},{"line_number":158,"context_line":""}],"source_content_type":"text/x-python","patch_set":29,"id":"34d09665_1e8bef31","line":155,"range":{"start_line":154,"start_character":0,"end_line":155,"end_character":61},"in_reply_to":"0e6d6a73_673a1076","updated":"2025-12-01 23:54:22.000000000","message":"Done","commit_id":"82426bf89f6508a1080edc1edcba79b18ba1e5ed"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d7913435382ae27dd1ae6fc66acbf2d07556caeb","unresolved":true,"context_lines":[{"line_number":197,"context_line":"            )"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"        if parsed_args.region:"},{"line_number":200,"context_line":"            # NOTE (0weng/originally vishakha): Mimic the behavior of"},{"line_number":201,"context_line":"            # common_utils.get_resource() here, instead of"},{"line_number":202,"context_line":"            # osc_lib.utils.find_resource()."},{"line_number":203,"context_line":"            # common_utils.get_resource() was used due to the case described in"},{"line_number":204,"context_line":"            # bug #1799153 where the GET resource API does not support"},{"line_number":205,"context_line":"            # filtering by name. The osc_lib.utils.find_resource() method"},{"line_number":206,"context_line":"            # could not be used because that method tries to fall back to"},{"line_number":207,"context_line":"            # list all of that resource if the requested resource"},{"line_number":208,"context_line":"            # could not be GET by ID or name, resulting in a NoUniqueMatch error."},{"line_number":209,"context_line":"            requested_region \u003d parsed_args.region"},{"line_number":210,"context_line":"            try:"},{"line_number":211,"context_line":"                resource \u003d identity_client.find_region("},{"line_number":212,"context_line":"                    name_or_id\u003drequested_region,"},{"line_number":213,"context_line":"                    ignore_missing\u003dFalse,"},{"line_number":214,"context_line":"                )"},{"line_number":215,"context_line":"            # Still mimic osc_lib.utils.find_resource() here"},{"line_number":216,"context_line":"            # and ignore if we don\u0027t have permission to find a resource."},{"line_number":217,"context_line":"            except sdk_exc.ForbiddenException:"},{"line_number":218,"context_line":"                kwargs[\"region_id\"] \u003d requested_region"},{"line_number":219,"context_line":"            except sdk_exc.ResourceNotFound as exc:"},{"line_number":220,"context_line":"                raise exceptions.CommandError from exc"},{"line_number":221,"context_line":"            else:"},{"line_number":222,"context_line":"                # It\u0027s possible for a region to have no ID, so look for ID or name"},{"line_number":223,"context_line":"                kwargs[\"region_id\"] \u003d getattr(resource, \"id\") or getattr("},{"line_number":224,"context_line":"                    resource, \"name\""},{"line_number":225,"context_line":"                )"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"        if parsed_args.project:"},{"line_number":228,"context_line":"            kwargs[\"project_id\"] \u003d _find_sdk_id("}],"source_content_type":"text/x-python","patch_set":29,"id":"f8bb767c_4e2327a9","line":225,"range":{"start_line":200,"start_character":0,"end_line":225,"end_character":17},"updated":"2025-11-26 10:45:04.000000000","message":"Same comment as with registered limit\n\nhttps://review.opendev.org/c/openstack/python-openstackclient/+/942735/comment/1601bcd5_3ab74035/","commit_id":"82426bf89f6508a1080edc1edcba79b18ba1e5ed"},{"author":{"_account_id":36482,"name":"Oria Weng","display_name":"0weng","email":"oweng@osuosl.org","username":"0weng"},"change_message_id":"66d85a392a204603264bf2df900ad8585ac108af","unresolved":false,"context_lines":[{"line_number":197,"context_line":"            )"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"        if parsed_args.region:"},{"line_number":200,"context_line":"            # NOTE (0weng/originally vishakha): Mimic the behavior of"},{"line_number":201,"context_line":"            # common_utils.get_resource() here, instead of"},{"line_number":202,"context_line":"            # osc_lib.utils.find_resource()."},{"line_number":203,"context_line":"            # common_utils.get_resource() was used due to the case described in"},{"line_number":204,"context_line":"            # bug #1799153 where the GET resource API does not support"},{"line_number":205,"context_line":"            # filtering by name. The osc_lib.utils.find_resource() method"},{"line_number":206,"context_line":"            # could not be used because that method tries to fall back to"},{"line_number":207,"context_line":"            # list all of that resource if the requested resource"},{"line_number":208,"context_line":"            # could not be GET by ID or name, resulting in a NoUniqueMatch error."},{"line_number":209,"context_line":"            requested_region \u003d parsed_args.region"},{"line_number":210,"context_line":"            try:"},{"line_number":211,"context_line":"                resource \u003d identity_client.find_region("},{"line_number":212,"context_line":"                    name_or_id\u003drequested_region,"},{"line_number":213,"context_line":"                    ignore_missing\u003dFalse,"},{"line_number":214,"context_line":"                )"},{"line_number":215,"context_line":"            # Still mimic osc_lib.utils.find_resource() here"},{"line_number":216,"context_line":"            # and ignore if we don\u0027t have permission to find a resource."},{"line_number":217,"context_line":"            except sdk_exc.ForbiddenException:"},{"line_number":218,"context_line":"                kwargs[\"region_id\"] \u003d requested_region"},{"line_number":219,"context_line":"            except sdk_exc.ResourceNotFound as exc:"},{"line_number":220,"context_line":"                raise exceptions.CommandError from exc"},{"line_number":221,"context_line":"            else:"},{"line_number":222,"context_line":"                # It\u0027s possible for a region to have no ID, so look for ID or name"},{"line_number":223,"context_line":"                kwargs[\"region_id\"] \u003d getattr(resource, \"id\") or getattr("},{"line_number":224,"context_line":"                    resource, \"name\""},{"line_number":225,"context_line":"                )"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"        if parsed_args.project:"},{"line_number":228,"context_line":"            kwargs[\"project_id\"] \u003d _find_sdk_id("}],"source_content_type":"text/x-python","patch_set":29,"id":"7077bdff_a915f690","line":225,"range":{"start_line":200,"start_character":0,"end_line":225,"end_character":17},"in_reply_to":"f8bb767c_4e2327a9","updated":"2025-12-01 23:54:22.000000000","message":"Done","commit_id":"82426bf89f6508a1080edc1edcba79b18ba1e5ed"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"09eea35de8749808de51f9c1778697b9441210f8","unresolved":true,"context_lines":[{"line_number":228,"context_line":"            kwargs[\"project_id\"] \u003d _find_sdk_id("},{"line_number":229,"context_line":"                identity_client.find_project,"},{"line_number":230,"context_line":"                name_or_id\u003dparsed_args.project,"},{"line_number":231,"context_line":"            )"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"        if parsed_args.resource_name:"},{"line_number":234,"context_line":"            kwargs[\"resource_name\"] \u003d parsed_args.resource_name"}],"source_content_type":"text/x-python","patch_set":29,"id":"23d68434_9b3da27e","line":231,"updated":"2025-11-26 11:03:53.000000000","message":"This is mostly unrelated, but why don\u0027t we need to use a `find_project_id_sdk` helper like you add in [another patch](https://review.opendev.org/c/openstack/python-openstackclient/+/965317/6/openstackclient/identity/common.py#258)? My guess is that we\u0027re missing `--project-domain` options. Do we want to add them (in a follow-up).","commit_id":"82426bf89f6508a1080edc1edcba79b18ba1e5ed"},{"author":{"_account_id":36482,"name":"Oria Weng","display_name":"0weng","email":"oweng@osuosl.org","username":"0weng"},"change_message_id":"66d85a392a204603264bf2df900ad8585ac108af","unresolved":true,"context_lines":[{"line_number":228,"context_line":"            kwargs[\"project_id\"] \u003d _find_sdk_id("},{"line_number":229,"context_line":"                identity_client.find_project,"},{"line_number":230,"context_line":"                name_or_id\u003dparsed_args.project,"},{"line_number":231,"context_line":"            )"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"        if parsed_args.resource_name:"},{"line_number":234,"context_line":"            kwargs[\"resource_name\"] \u003d parsed_args.resource_name"}],"source_content_type":"text/x-python","patch_set":29,"id":"a32a0c40_b7b53380","line":231,"in_reply_to":"23d68434_9b3da27e","updated":"2025-12-01 23:54:22.000000000","message":"The only reason I can remember is that the helper didn\u0027t exist yet (and most likely I hadn\u0027t even had the idea to start making the helpers yet, seeing as there was still a separate `_find_sdk_id()` function in this file). Should I rebase this patch onto the [other one](https://review.opendev.org/c/openstack/python-openstackclient/+/965317/6/openstackclient/identity/common.py#258) that creates the helper?","commit_id":"82426bf89f6508a1080edc1edcba79b18ba1e5ed"},{"author":{"_account_id":36482,"name":"Oria Weng","display_name":"0weng","email":"oweng@osuosl.org","username":"0weng"},"change_message_id":"4013a9b3ca7047b5a137cd7361c5ad023e7c5bea","unresolved":false,"context_lines":[{"line_number":228,"context_line":"            kwargs[\"project_id\"] \u003d _find_sdk_id("},{"line_number":229,"context_line":"                identity_client.find_project,"},{"line_number":230,"context_line":"                name_or_id\u003dparsed_args.project,"},{"line_number":231,"context_line":"            )"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"        if parsed_args.resource_name:"},{"line_number":234,"context_line":"            kwargs[\"resource_name\"] \u003d parsed_args.resource_name"}],"source_content_type":"text/x-python","patch_set":29,"id":"aaf83d92_1186424f","line":231,"in_reply_to":"8511161f_cee0e84a","updated":"2026-01-13 23:31:15.000000000","message":"Done, WIP patch here -  https://review.opendev.org/c/openstack/python-openstackclient/+/973325","commit_id":"82426bf89f6508a1080edc1edcba79b18ba1e5ed"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b0697dacefaf2d0c48b3da26a257bbfb05671ef6","unresolved":true,"context_lines":[{"line_number":228,"context_line":"            kwargs[\"project_id\"] \u003d _find_sdk_id("},{"line_number":229,"context_line":"                identity_client.find_project,"},{"line_number":230,"context_line":"                name_or_id\u003dparsed_args.project,"},{"line_number":231,"context_line":"            )"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"        if parsed_args.resource_name:"},{"line_number":234,"context_line":"            kwargs[\"resource_name\"] \u003d parsed_args.resource_name"}],"source_content_type":"text/x-python","patch_set":29,"id":"8511161f_cee0e84a","line":231,"in_reply_to":"a32a0c40_b7b53380","updated":"2025-12-04 14:04:58.000000000","message":"\u003e Should I rebase this patch onto the other one that creates the helper?\n\nNah, this is separate to your main task here. You would also need to add a `--project-domain` parameter so you can actually use this.\n\nCould you instead add a TODO to add support for project domain filtering? We can address it later.","commit_id":"82426bf89f6508a1080edc1edcba79b18ba1e5ed"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d7913435382ae27dd1ae6fc66acbf2d07556caeb","unresolved":true,"context_lines":[{"line_number":310,"context_line":""},{"line_number":311,"context_line":"    def get_parser(self, prog_name):"},{"line_number":312,"context_line":"        parser \u003d super().get_parser(prog_name)"},{"line_number":313,"context_line":"        parser.add_argument("},{"line_number":314,"context_line":"            \u0027limit_id\u0027,"},{"line_number":315,"context_line":"            metavar\u003d\u0027\u003climit-id\u003e\u0027,"},{"line_number":316,"context_line":"            nargs\u003d\"+\","},{"line_number":317,"context_line":"            help\u003d_(\u0027Limit to delete (ID)\u0027),"},{"line_number":318,"context_line":"        )"},{"line_number":319,"context_line":"        return parser"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"    def take_action(self, parsed_args):"}],"source_content_type":"text/x-python","patch_set":29,"id":"160ea239_747d7d8d","line":318,"range":{"start_line":313,"start_character":0,"end_line":318,"end_character":9},"updated":"2025-11-26 10:45:04.000000000","message":"Same comments around pluralisation as with the registered limit commands, if you have time https://review.opendev.org/c/openstack/python-openstackclient/+/942735/comment/903277f6_28a9586f/","commit_id":"82426bf89f6508a1080edc1edcba79b18ba1e5ed"},{"author":{"_account_id":36482,"name":"Oria Weng","display_name":"0weng","email":"oweng@osuosl.org","username":"0weng"},"change_message_id":"66d85a392a204603264bf2df900ad8585ac108af","unresolved":false,"context_lines":[{"line_number":310,"context_line":""},{"line_number":311,"context_line":"    def get_parser(self, prog_name):"},{"line_number":312,"context_line":"        parser \u003d super().get_parser(prog_name)"},{"line_number":313,"context_line":"        parser.add_argument("},{"line_number":314,"context_line":"            \u0027limit_id\u0027,"},{"line_number":315,"context_line":"            metavar\u003d\u0027\u003climit-id\u003e\u0027,"},{"line_number":316,"context_line":"            nargs\u003d\"+\","},{"line_number":317,"context_line":"            help\u003d_(\u0027Limit to delete (ID)\u0027),"},{"line_number":318,"context_line":"        )"},{"line_number":319,"context_line":"        return parser"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"    def take_action(self, parsed_args):"}],"source_content_type":"text/x-python","patch_set":29,"id":"84c9323a_cdc0630c","line":318,"range":{"start_line":313,"start_character":0,"end_line":318,"end_character":9},"in_reply_to":"160ea239_747d7d8d","updated":"2025-12-01 23:54:22.000000000","message":"Done","commit_id":"82426bf89f6508a1080edc1edcba79b18ba1e5ed"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b0697dacefaf2d0c48b3da26a257bbfb05671ef6","unresolved":true,"context_lines":[{"line_number":98,"context_line":"        if parsed_args.description:"},{"line_number":99,"context_line":"            kwargs[\"description\"] \u003d parsed_args.description"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        kwargs[\"project_id\"] \u003d common_utils._find_sdk_id("},{"line_number":102,"context_line":"            identity_client.find_project,"},{"line_number":103,"context_line":"            name_or_id\u003dparsed_args.project,"},{"line_number":104,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":30,"id":"d0dc0cfd_84e54bac","line":101,"updated":"2025-12-04 14:04:58.000000000","message":"Per my comment later on, can we get a TODO to add a `--project-domain` option and use it here?","commit_id":"4d89d521c78a750bef635304e5667980ade11076"},{"author":{"_account_id":36482,"name":"Oria Weng","display_name":"0weng","email":"oweng@osuosl.org","username":"0weng"},"change_message_id":"4013a9b3ca7047b5a137cd7361c5ad023e7c5bea","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        if parsed_args.description:"},{"line_number":99,"context_line":"            kwargs[\"description\"] \u003d parsed_args.description"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        kwargs[\"project_id\"] \u003d common_utils._find_sdk_id("},{"line_number":102,"context_line":"            identity_client.find_project,"},{"line_number":103,"context_line":"            name_or_id\u003dparsed_args.project,"},{"line_number":104,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":30,"id":"c5f8cb10_1fe40463","line":101,"in_reply_to":"d0dc0cfd_84e54bac","updated":"2026-01-13 23:31:15.000000000","message":"Done","commit_id":"4d89d521c78a750bef635304e5667980ade11076"}],"openstackclient/tests/unit/identity/v3/test_limit.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"09fb97d9370f1f4299b189ca53d60f50c6e860a9","unresolved":true,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class TestLimitCreate(identity_fakes.TestIdentityv3):"},{"line_number":26,"context_line":"    project \u003d sdk_fakes.generate_fake_resource(_project.Project)"},{"line_number":27,"context_line":"    region \u003d sdk_fakes.generate_fake_resource(_region.Region)"},{"line_number":28,"context_line":"    service \u003d sdk_fakes.generate_fake_resource(_service.Service)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    resource_limit \u003d 15"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"52b4c0fa_3f1c4a82","line":28,"range":{"start_line":26,"start_character":0,"end_line":28,"end_character":64},"updated":"2024-12-16 18:36:12.000000000","message":"nit: I\u0027d rather we did this inside `setUp`. As it stands, these are class attributes meaning any modification in one test will be propagated to any later tests in the same test run","commit_id":"be3d055e3e623218188c107562971d059535e761"},{"author":{"_account_id":36482,"name":"Oria Weng","display_name":"0weng","email":"oweng@osuosl.org","username":"0weng"},"change_message_id":"c3d83dbce23d657e265b31f96df972b303c42f3f","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class TestLimitCreate(identity_fakes.TestIdentityv3):"},{"line_number":26,"context_line":"    project \u003d sdk_fakes.generate_fake_resource(_project.Project)"},{"line_number":27,"context_line":"    region \u003d sdk_fakes.generate_fake_resource(_region.Region)"},{"line_number":28,"context_line":"    service \u003d sdk_fakes.generate_fake_resource(_service.Service)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    resource_limit \u003d 15"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"2d87a76a_32099417","line":28,"range":{"start_line":26,"start_character":0,"end_line":28,"end_character":64},"in_reply_to":"52b4c0fa_3f1c4a82","updated":"2025-01-13 22:25:07.000000000","message":"Done!","commit_id":"be3d055e3e623218188c107562971d059535e761"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2320af631ab87323769062d6eab279b9cd3a3f58","unresolved":true,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"        identity_manager \u003d self.identity_client"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"        self.limit_mock \u003d identity_manager.limits"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"        self.services_mock \u003d identity_manager.services"},{"line_number":32,"context_line":"        self.services_mock.reset_mock()"}],"source_content_type":"text/x-python","patch_set":32,"id":"f6e5e68e_917abb51","side":"PARENT","line":29,"updated":"2026-01-27 17:08:45.000000000","message":"You can now remove this mock from `FakeIdentityv3Client` in openstackclient/tests/unit/identity/v3/fakes.py","commit_id":"f7c78b8b748b05cb4e373c8e3828ef0924e809a4"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2320af631ab87323769062d6eab279b9cd3a3f58","unresolved":true,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def test_limit_create_without_options(self):"},{"line_number":63,"context_line":"        self.limit_mock.create.return_value \u003d fakes.FakeResource("},{"line_number":64,"context_line":"            None, copy.deepcopy(identity_fakes.LIMIT), loaded\u003dTrue"},{"line_number":65,"context_line":"        )"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        resource_limit \u003d 15"}],"source_content_type":"text/x-python","patch_set":32,"id":"644a8680_f4e28366","side":"PARENT","line":64,"updated":"2026-01-27 17:08:45.000000000","message":"I suspect `LIMIT` can be removed now also.","commit_id":"f7c78b8b748b05cb4e373c8e3828ef0924e809a4"}],"releasenotes/notes/migrate-limit-to-sdk-378037ec2b79e302.yaml":[{"author":{"_account_id":36482,"name":"Oria Weng","display_name":"0weng","email":"oweng@osuosl.org","username":"0weng"},"change_message_id":"b82b56b704716484f068af016da420a34393d6d4","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":11,"id":"899f086f_74a7dcd9","line":5,"updated":"2025-01-14 23:52:53.000000000","message":"Should I add a \"fixed\" section here to indicate that region names containing the string \"None\" are no longer mis-flagged as indicating no region? I couldn\u0027t find any bug reports for this.","commit_id":"de146b01cd697c3aea1bc67be19d381b1e1db62d"},{"author":{"_account_id":36482,"name":"Oria Weng","display_name":"0weng","email":"oweng@osuosl.org","username":"0weng"},"change_message_id":"0d555ba48c815574679cc1621c47923801da23d0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"ab59a820_73578122","line":5,"in_reply_to":"899f086f_74a7dcd9","updated":"2025-01-28 17:31:45.000000000","message":"After discussing with Stephen and Artem, passing `--region None` when creating or listing limits will be deprecated and removed before this change can be merged. Deprecation change here: https://review.opendev.org/c/openstack/python-openstackclient/+/940321","commit_id":"de146b01cd697c3aea1bc67be19d381b1e1db62d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d7913435382ae27dd1ae6fc66acbf2d07556caeb","unresolved":true,"context_lines":[{"line_number":4,"context_line":"    Migrate ``limit`` commands from keystoneclient to SDK."},{"line_number":5,"context_line":"upgrade:"},{"line_number":6,"context_line":"  - |"},{"line_number":7,"context_line":"    Filtering in ``limit`` commands is now case sensitive."},{"line_number":8,"context_line":"  - |"},{"line_number":9,"context_line":"    Specifying ``--region None`` is no longer supported for ``limit`` commands."}],"source_content_type":"text/x-yaml","patch_set":29,"id":"2dab74a3_c34239dd","line":7,"updated":"2025-11-26 10:45:04.000000000","message":"It doesn\u0027t belong here, but could you explain why this is in the commit message for my benefit/the benefit of future reviewers","commit_id":"82426bf89f6508a1080edc1edcba79b18ba1e5ed"},{"author":{"_account_id":36482,"name":"Oria Weng","display_name":"0weng","email":"oweng@osuosl.org","username":"0weng"},"change_message_id":"66d85a392a204603264bf2df900ad8585ac108af","unresolved":true,"context_lines":[{"line_number":4,"context_line":"    Migrate ``limit`` commands from keystoneclient to SDK."},{"line_number":5,"context_line":"upgrade:"},{"line_number":6,"context_line":"  - |"},{"line_number":7,"context_line":"    Filtering in ``limit`` commands is now case sensitive."},{"line_number":8,"context_line":"  - |"},{"line_number":9,"context_line":"    Specifying ``--region None`` is no longer supported for ``limit`` commands."}],"source_content_type":"text/x-yaml","patch_set":29,"id":"742e3ee2_9175dd23","line":7,"in_reply_to":"2dab74a3_c34239dd","updated":"2025-12-01 23:54:22.000000000","message":"I could have sworn there was discussion about this somewhere (I combed through my past changes and even search-engined the IRC logs and didn\u0027t find anything) but the reason iirc was because SDK is case-sensitive while keystoneclient is not. I believe we agreed to leave it as an upgrade and release note (the reason we noticed the difference in case sensitivity at all initially was because of a change that had already been merged and was causing issues, so it was decided that release notes should be updated rather than revert the change).","commit_id":"82426bf89f6508a1080edc1edcba79b18ba1e5ed"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2320af631ab87323769062d6eab279b9cd3a3f58","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    Migrate ``limit`` commands from keystoneclient to SDK."},{"line_number":5,"context_line":"upgrade:"},{"line_number":6,"context_line":"  - |"},{"line_number":7,"context_line":"    Filtering in ``limit`` commands is now case sensitive."},{"line_number":8,"context_line":"  - |"},{"line_number":9,"context_line":"    Specifying ``--region None`` is no longer supported for ``limit`` commands."}],"source_content_type":"text/x-yaml","patch_set":29,"id":"8f8805d2_b3a8f838","line":7,"in_reply_to":"6d18c1fc_183d00b9","updated":"2026-01-27 17:08:45.000000000","message":"Acknowledged","commit_id":"82426bf89f6508a1080edc1edcba79b18ba1e5ed"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b0697dacefaf2d0c48b3da26a257bbfb05671ef6","unresolved":true,"context_lines":[{"line_number":4,"context_line":"    Migrate ``limit`` commands from keystoneclient to SDK."},{"line_number":5,"context_line":"upgrade:"},{"line_number":6,"context_line":"  - |"},{"line_number":7,"context_line":"    Filtering in ``limit`` commands is now case sensitive."},{"line_number":8,"context_line":"  - |"},{"line_number":9,"context_line":"    Specifying ``--region None`` is no longer supported for ``limit`` commands."}],"source_content_type":"text/x-yaml","patch_set":29,"id":"83302592_ee59762e","line":7,"in_reply_to":"742e3ee2_9175dd23","updated":"2025-12-04 14:04:58.000000000","message":"Hmm, so I don\u0027t know if this is true. I tested it:\n\n```\n❯ openstack registered limit create --service nova --default-limit 10 fooBar                                                                                                                                                                                                                                                                                                                \n+---------------+----------------------------------+                                                                                                                                                                                                                                                                                                                                        \n| Field         | Value                            |                                                                                                                                                                                                                                                                                                                                        \n+---------------+----------------------------------+                                                                                                                                                                                                                                                                                                                                        \n| default_limit | 10                               |                                                                                                                                                                                                                                                                                                                                        \n| description   | None                             |                                                                                                                                                                                                                                                                                                                                        \n| id            | 3567759ac00141119b27fa69c5521a23 |                                                                                                                                                                                                                                                                                                                                        \n| region_id     | None                             |                                                                                                                                                                                                                                                                                                                                        \n| resource_name | fooBar                           |                                                                                                                                                                                                                                                                                                                                        \n| service_id    | 1c35d42e73864223a0323b458ef53646 |                                                                                                                                                                                                                                                                                                                                        \n+---------------+----------------------------------+\n\n❯ openstack limit create fooBar --project d8dea803f1fe44e2bdf9d9d017750b4e --service nova --resource-limit 5                                                                                                                                                                                                                                                                                \n+----------------+----------------------------------+                                                                                                                                                                                                                                                                                                                                       \n| Field          | Value                            |                                                                                                                                                                                                                                                                                                                                       \n+----------------+----------------------------------+                                                                                                                                                                                                                                                                                                                                       \n| description    | None                             |                                                                                                                                                                                                                                                                                                                                       \n| domain_id      | None                             |                                                                                                                                                                                                                                                                                                                                       \n| id             | a4867151d8ff4b8a92788242ddab0e24 |                                                                                                                                                                                                                                                                                                                                       \n| project_id     | d8dea803f1fe44e2bdf9d9d017750b4e |                                                                                                                                                                                                                                                                                                                                       \n| region_id      | None                             |                                                                                                                                                                                                                                                                                                                                       \n| resource_limit | 5                                |                                                                                                                                                                                                                                                                                                                                       \n| resource_name  | fooBar                           |                                                                                                                                                                                                                                                                                                                                       \n| service_id     | 1c35d42e73864223a0323b458ef53646 |                                                                                                                                                                                                                                                                                                                                       \n+----------------+----------------------------------+\n\n❯ openstack limit show fooBar                                                                                                                                                                  \nCould not find limit for fooBar. (HTTP 404) (Request-ID: req-5a720797-b3cd-42e1-a22e-d870c791f514)\n\n❯ openstack limit show a4867151d8ff4b8a92788242ddab0e24\n+----------------+----------------------------------+\n| Field          | Value                            |\n+----------------+----------------------------------+\n| description    | None                             |\n| domain_id      | None                             |\n| id             | a4867151d8ff4b8a92788242ddab0e24 |\n| project_id     | d8dea803f1fe44e2bdf9d9d017750b4e |\n| region_id      | None                             |\n| resource_limit | 5                                |\n| resource_name  | fooBar                           |\n| service_id     | 1c35d42e73864223a0323b458ef53646 |\n+----------------+----------------------------------+\n```\n\nSo previously it wasn\u0027t possible to retrieve a limit by resource name, only by limit ID. This is still the same with this patch.\n\nI then tested the `limit list` filters. Project `d8dea803f1fe44e2bdf9d9d017750b4e` is the admin project in my devstack:\n\n```\n❯ openstack project show d8dea803f1fe44e2bdf9d9d017750b4e\n+-------------+-----------------------------------------------+\n| Field       | Value                                         |\n+-------------+-----------------------------------------------+\n| description | Bootstrap project for initializing the cloud. |\n| domain_id   | default                                       |\n| enabled     | True                                          |\n| id          | d8dea803f1fe44e2bdf9d9d017750b4e              |\n| is_domain   | False                                         |\n| name        | admin                                         |\n| options     | {}                                            |\n| parent_id   | default                                       |\n| tags        | []                                            |\n+-------------+-----------------------------------------------+\n```\n\nSo filtering by the name in a case-insensitive manner:\n\n```\n❯ openstack limit list --project admiN \n+----------------------------------+----------------------------------+----------------------------------+---------------+----------------+-------------+-----------+\n| ID                               | Project ID                       | Service ID                       | Resource Name | Resource Limit | Description | Region ID |\n+----------------------------------+----------------------------------+----------------------------------+---------------+----------------+-------------+-----------+\n| a4867151d8ff4b8a92788242ddab0e24 | d8dea803f1fe44e2bdf9d9d017750b4e | 1c35d42e73864223a0323b458ef53646 | fooBar        |              5 | None        | None      |\n+----------------------------------+----------------------------------+----------------------------------+---------------+----------------+-------------+-----------+\n\n\n❯ openstack limit list --project admin\n+----------------------------------+----------------------------------+----------------------------------+---------------+----------------+-------------+-----------+\n| ID                               | Project ID                       | Service ID                       | Resource Name | Resource Limit | Description | Region ID |\n+----------------------------------+----------------------------------+----------------------------------+---------------+----------------+-------------+-----------+\n| a4867151d8ff4b8a92788242ddab0e24 | d8dea803f1fe44e2bdf9d9d017750b4e | 1c35d42e73864223a0323b458ef53646 | fooBar        |              5 | None        | None      |\n+----------------------------------+----------------------------------+----------------------------------+---------------+----------------+-------------+-----------+\n```\n\nThis behaves identically with your change. Have I missed something or is this not true?","commit_id":"82426bf89f6508a1080edc1edcba79b18ba1e5ed"},{"author":{"_account_id":36482,"name":"Oria Weng","display_name":"0weng","email":"oweng@osuosl.org","username":"0weng"},"change_message_id":"4013a9b3ca7047b5a137cd7361c5ad023e7c5bea","unresolved":true,"context_lines":[{"line_number":4,"context_line":"    Migrate ``limit`` commands from keystoneclient to SDK."},{"line_number":5,"context_line":"upgrade:"},{"line_number":6,"context_line":"  - |"},{"line_number":7,"context_line":"    Filtering in ``limit`` commands is now case sensitive."},{"line_number":8,"context_line":"  - |"},{"line_number":9,"context_line":"    Specifying ``--region None`` is no longer supported for ``limit`` commands."}],"source_content_type":"text/x-yaml","patch_set":29,"id":"6d18c1fc_183d00b9","line":7,"in_reply_to":"83302592_ee59762e","updated":"2026-01-13 23:31:15.000000000","message":"From my testing, retrieving a limit by resource ID used to be case-insensitive:\n\n```\n$ openstack --os-cloud devstack-admin limit create --service neutron TEST --project demo --resource-limit 15\n+----------------+----------------------------------+\n| Field          | Value                            |\n+----------------+----------------------------------+\n| description    | None                             |\n| domain_id      | None                             |\n| id             | 46c494a282a7491b8f88ea1d1009610f |\n| project_id     | 2820a8a2d24e44f9a23b6bdff6cfe701 |\n| region_id      | None                             |\n| resource_limit | 15                               |\n| resource_name  | TEST                             |\n| service_id     | 69c462ca6db943eab63ba515ec5a8541 |\n+----------------+----------------------------------+\n```\n(Changing the capitalization of the last letter in the ID)\n```\n$ openstack --os-cloud devstack-admin limit show 46c494a282a7491b8f88ea1d1009610f\n+----------------+----------------------------------+\n| Field          | Value                            |\n+----------------+----------------------------------+\n| description    | None                             |\n| domain_id      | None                             |\n| id             | 46c494a282a7491b8f88ea1d1009610f |\n| project_id     | 2820a8a2d24e44f9a23b6bdff6cfe701 |\n| region_id      | None                             |\n| resource_limit | 15                               |\n| resource_name  | TEST                             |\n| service_id     | 69c462ca6db943eab63ba515ec5a8541 |\n+----------------+----------------------------------+\n\n\n\n$ openstack --os-cloud devstack-admin limit show 46c494a282a7491b8f88ea1d1009610F\n+----------------+----------------------------------+\n| Field          | Value                            |\n+----------------+----------------------------------+\n| description    | None                             |\n| domain_id      | None                             |\n| id             | 46c494a282a7491b8f88ea1d1009610f |\n| project_id     | 2820a8a2d24e44f9a23b6bdff6cfe701 |\n| region_id      | None                             |\n| resource_limit | 15                               |\n| resource_name  | TEST                             |\n| service_id     | 69c462ca6db943eab63ba515ec5a8541 |\n+----------------+----------------------------------+\n```","commit_id":"82426bf89f6508a1080edc1edcba79b18ba1e5ed"}]}
