)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f2a1eb01257d3e1db1f91000fc08772916ad09c2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"44af4501_3d736014","updated":"2025-02-26 15:35:24.000000000","message":"Said this on IRC, but you need https://review.opendev.org/c/openstack/openstacksdk/+/942818","commit_id":"b6712ab0d0da7e40e91c24a7ad44088622d96e79"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"8b90d006148951b6919e4525a245ba48027217e0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"8eb0e084_8863f4cb","updated":"2025-11-18 12:22:18.000000000","message":"I wrote those comments last week but forgot to send them 🤦‍♂️","commit_id":"d29d6cee60c7d19c458cce650d08fadeaf0c775c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"8ce381350ecf2a58d0f130dc79dd358c8f157f33","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"7b7b3f80_fc8c9bb2","updated":"2025-11-26 10:32:04.000000000","message":"Still needs rework based on those three outstanding comments","commit_id":"7e39e4dec1128f4436f6c090e47dac7e990836fe"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"1762828874f6a3305583e66702eab1210f73e6a6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"ad298889_da4b1ce9","updated":"2025-12-12 14:51:19.000000000","message":"Last change, hopefully","commit_id":"47ba155a3c345752101a4bb61e094d4e5a5c6af7"}],"openstackclient/identity/v3/registered_limit.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"8582af6c72c9caf79ec93b802d61df014ce48b10","unresolved":true,"context_lines":[{"line_number":68,"context_line":"            \u0027--service\u0027,"},{"line_number":69,"context_line":"            metavar\u003d\u0027\u003cservice\u003e\u0027,"},{"line_number":70,"context_line":"            required\u003dTrue,"},{"line_number":71,"context_line":"            help\u003d_(\u0027Service responsible for the resource to limit (required)\u0027),"},{"line_number":72,"context_line":"        )"},{"line_number":73,"context_line":"        parser.add_argument("},{"line_number":74,"context_line":"            \u0027--default-limit\u0027,"}],"source_content_type":"text/x-python","patch_set":11,"id":"0804ae7c_7a3aa984","line":71,"updated":"2025-11-18 12:21:50.000000000","message":"```suggestion\n            help\u003d_(\n                \u0027Service responsible for the resource to limit (required) \u0027\n                \u0027(name or ID)\u0027\n            ),\n```","commit_id":"d29d6cee60c7d19c458cce650d08fadeaf0c775c"},{"author":{"_account_id":36482,"name":"Oria Weng","display_name":"0weng","email":"oweng@osuosl.org","username":"0weng"},"change_message_id":"9d6903d7b5b6b33328ab79d4ad7726cae1c913f2","unresolved":false,"context_lines":[{"line_number":68,"context_line":"            \u0027--service\u0027,"},{"line_number":69,"context_line":"            metavar\u003d\u0027\u003cservice\u003e\u0027,"},{"line_number":70,"context_line":"            required\u003dTrue,"},{"line_number":71,"context_line":"            help\u003d_(\u0027Service responsible for the resource to limit (required)\u0027),"},{"line_number":72,"context_line":"        )"},{"line_number":73,"context_line":"        parser.add_argument("},{"line_number":74,"context_line":"            \u0027--default-limit\u0027,"}],"source_content_type":"text/x-python","patch_set":11,"id":"d8de20ac_f7b67d03","line":71,"in_reply_to":"0804ae7c_7a3aa984","updated":"2025-11-18 17:55:30.000000000","message":"Added to this patch: https://review.opendev.org/c/openstack/python-openstackclient/+/967594","commit_id":"d29d6cee60c7d19c458cce650d08fadeaf0c775c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"8582af6c72c9caf79ec93b802d61df014ce48b10","unresolved":true,"context_lines":[{"line_number":96,"context_line":"            identity_client, parsed_args.service"},{"line_number":97,"context_line":"        ).id"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        if parsed_args.region:"},{"line_number":100,"context_line":"            # NOTE (0weng/originally vishakha): Mimic the behavior of"},{"line_number":101,"context_line":"            # common_utils.get_resource() here, instead of"},{"line_number":102,"context_line":"            # osc_lib.utils.find_resource()."},{"line_number":103,"context_line":"            # common_utils.get_resource() was used due to the case described in"},{"line_number":104,"context_line":"            # bug #1799153 where the GET resource API does not support"},{"line_number":105,"context_line":"            # filtering by name. The osc_lib.utils.find_resource() method"},{"line_number":106,"context_line":"            # could not be used because that method tries to fall back to"},{"line_number":107,"context_line":"            # list all of that resource if the requested resource"},{"line_number":108,"context_line":"            # could not be GET by ID or name, resulting in a NoUniqueMatch error."},{"line_number":109,"context_line":"            requested_region \u003d parsed_args.region"},{"line_number":110,"context_line":"            try:"},{"line_number":111,"context_line":"                resource \u003d identity_client.find_region("},{"line_number":112,"context_line":"                    name_or_id\u003drequested_region,"},{"line_number":113,"context_line":"                    ignore_missing\u003dFalse,"},{"line_number":114,"context_line":"                )"},{"line_number":115,"context_line":"            # Still mimic osc_lib.utils.find_resource() here"},{"line_number":116,"context_line":"            # and ignore if we don\u0027t have permission to find a resource."},{"line_number":117,"context_line":"            except sdk_exc.ForbiddenException:"},{"line_number":118,"context_line":"                kwargs[\"region_id\"] \u003d requested_region"},{"line_number":119,"context_line":"            except sdk_exc.ResourceNotFound as exc:"},{"line_number":120,"context_line":"                raise exceptions.CommandError from exc"},{"line_number":121,"context_line":"            else:"},{"line_number":122,"context_line":"                # It\u0027s possible for a region to have no ID, so look for ID or name"},{"line_number":123,"context_line":"                kwargs[\"region_id\"] \u003d getattr(resource, \"id\") or getattr("},{"line_number":124,"context_line":"                    resource, \"name\""},{"line_number":125,"context_line":"                )"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        kwargs[\"resource_name\"] \u003d parsed_args.resource_name"},{"line_number":128,"context_line":"        kwargs[\"default_limit\"] \u003d parsed_args.default_limit"}],"source_content_type":"text/x-python","patch_set":11,"id":"1601bcd5_3ab74035","line":125,"range":{"start_line":99,"start_character":0,"end_line":125,"end_character":17},"updated":"2025-11-18 12:21:50.000000000","message":"I think you\u0027ve overcomplicated this, as has vishakha. vishakha is saying that we can\u0027t use a `find_region` call because you can\u0027t do `GET /regions?name\u003dfoo`. Their solution was to call `get_resource` instead, which in this case will call `keystoneclient.v3.regions.RegionManager.get`. The equivalent of that in SDK is `get_region`. You should simply call this.\n\nI also had an earlier comment about whether we wanted to have a `find_region_id_sdk` method that called `_find_sdk_id` under the hood, but I don\u0027t think we need that given (a) we are not/cannot call `find_region` and (b) services are admin-only - meaning the earlier call to `find_service_sdk` will already have failed if you don\u0027t have admin permissions.\n\nYou might want to go and deprecate the `find_region` method is the identity Proxy API in SDK since it\u0027s clearly useless","commit_id":"d29d6cee60c7d19c458cce650d08fadeaf0c775c"},{"author":{"_account_id":36482,"name":"Oria Weng","display_name":"0weng","email":"oweng@osuosl.org","username":"0weng"},"change_message_id":"9d6903d7b5b6b33328ab79d4ad7726cae1c913f2","unresolved":true,"context_lines":[{"line_number":96,"context_line":"            identity_client, parsed_args.service"},{"line_number":97,"context_line":"        ).id"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        if parsed_args.region:"},{"line_number":100,"context_line":"            # NOTE (0weng/originally vishakha): Mimic the behavior of"},{"line_number":101,"context_line":"            # common_utils.get_resource() here, instead of"},{"line_number":102,"context_line":"            # osc_lib.utils.find_resource()."},{"line_number":103,"context_line":"            # common_utils.get_resource() was used due to the case described in"},{"line_number":104,"context_line":"            # bug #1799153 where the GET resource API does not support"},{"line_number":105,"context_line":"            # filtering by name. The osc_lib.utils.find_resource() method"},{"line_number":106,"context_line":"            # could not be used because that method tries to fall back to"},{"line_number":107,"context_line":"            # list all of that resource if the requested resource"},{"line_number":108,"context_line":"            # could not be GET by ID or name, resulting in a NoUniqueMatch error."},{"line_number":109,"context_line":"            requested_region \u003d parsed_args.region"},{"line_number":110,"context_line":"            try:"},{"line_number":111,"context_line":"                resource \u003d identity_client.find_region("},{"line_number":112,"context_line":"                    name_or_id\u003drequested_region,"},{"line_number":113,"context_line":"                    ignore_missing\u003dFalse,"},{"line_number":114,"context_line":"                )"},{"line_number":115,"context_line":"            # Still mimic osc_lib.utils.find_resource() here"},{"line_number":116,"context_line":"            # and ignore if we don\u0027t have permission to find a resource."},{"line_number":117,"context_line":"            except sdk_exc.ForbiddenException:"},{"line_number":118,"context_line":"                kwargs[\"region_id\"] \u003d requested_region"},{"line_number":119,"context_line":"            except sdk_exc.ResourceNotFound as exc:"},{"line_number":120,"context_line":"                raise exceptions.CommandError from exc"},{"line_number":121,"context_line":"            else:"},{"line_number":122,"context_line":"                # It\u0027s possible for a region to have no ID, so look for ID or name"},{"line_number":123,"context_line":"                kwargs[\"region_id\"] \u003d getattr(resource, \"id\") or getattr("},{"line_number":124,"context_line":"                    resource, \"name\""},{"line_number":125,"context_line":"                )"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        kwargs[\"resource_name\"] \u003d parsed_args.resource_name"},{"line_number":128,"context_line":"        kwargs[\"default_limit\"] \u003d parsed_args.default_limit"}],"source_content_type":"text/x-python","patch_set":11,"id":"873f7d64_c737f61b","line":125,"range":{"start_line":99,"start_character":0,"end_line":125,"end_character":17},"in_reply_to":"1601bcd5_3ab74035","updated":"2025-11-18 17:55:30.000000000","message":"Ah ok, I wasn\u0027t aware that those were equivalent. I\u0027m assuming `get_region` works because it calls `GET /regions/test-region-name`, which works because name and ID are basically functionally the same for regions? I seem to remember someone mentioning there was a point where they were not the same (hence the check for both attributes in the else statement), so I\u0027m not sure if switching to this would break that case.\n\nAlso, should the `find_region` API still be kept for the `GET /regions?parent_region_id` use case?","commit_id":"d29d6cee60c7d19c458cce650d08fadeaf0c775c"},{"author":{"_account_id":36482,"name":"Oria Weng","display_name":"0weng","email":"oweng@osuosl.org","username":"0weng"},"change_message_id":"407fe47a339e8e23812043489ced6b7663257ca7","unresolved":true,"context_lines":[{"line_number":96,"context_line":"            identity_client, parsed_args.service"},{"line_number":97,"context_line":"        ).id"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        if parsed_args.region:"},{"line_number":100,"context_line":"            # NOTE (0weng/originally vishakha): Mimic the behavior of"},{"line_number":101,"context_line":"            # common_utils.get_resource() here, instead of"},{"line_number":102,"context_line":"            # osc_lib.utils.find_resource()."},{"line_number":103,"context_line":"            # common_utils.get_resource() was used due to the case described in"},{"line_number":104,"context_line":"            # bug #1799153 where the GET resource API does not support"},{"line_number":105,"context_line":"            # filtering by name. The osc_lib.utils.find_resource() method"},{"line_number":106,"context_line":"            # could not be used because that method tries to fall back to"},{"line_number":107,"context_line":"            # list all of that resource if the requested resource"},{"line_number":108,"context_line":"            # could not be GET by ID or name, resulting in a NoUniqueMatch error."},{"line_number":109,"context_line":"            requested_region \u003d parsed_args.region"},{"line_number":110,"context_line":"            try:"},{"line_number":111,"context_line":"                resource \u003d identity_client.find_region("},{"line_number":112,"context_line":"                    name_or_id\u003drequested_region,"},{"line_number":113,"context_line":"                    ignore_missing\u003dFalse,"},{"line_number":114,"context_line":"                )"},{"line_number":115,"context_line":"            # Still mimic osc_lib.utils.find_resource() here"},{"line_number":116,"context_line":"            # and ignore if we don\u0027t have permission to find a resource."},{"line_number":117,"context_line":"            except sdk_exc.ForbiddenException:"},{"line_number":118,"context_line":"                kwargs[\"region_id\"] \u003d requested_region"},{"line_number":119,"context_line":"            except sdk_exc.ResourceNotFound as exc:"},{"line_number":120,"context_line":"                raise exceptions.CommandError from exc"},{"line_number":121,"context_line":"            else:"},{"line_number":122,"context_line":"                # It\u0027s possible for a region to have no ID, so look for ID or name"},{"line_number":123,"context_line":"                kwargs[\"region_id\"] \u003d getattr(resource, \"id\") or getattr("},{"line_number":124,"context_line":"                    resource, \"name\""},{"line_number":125,"context_line":"                )"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        kwargs[\"resource_name\"] \u003d parsed_args.resource_name"},{"line_number":128,"context_line":"        kwargs[\"default_limit\"] \u003d parsed_args.default_limit"}],"source_content_type":"text/x-python","patch_set":11,"id":"6a3e883e_fcfebdc7","line":125,"range":{"start_line":99,"start_character":0,"end_line":125,"end_character":17},"in_reply_to":"5bc0d674_bfcd4649","updated":"2025-11-19 22:12:34.000000000","message":"Ok, that makes sense. So to confirm, I don\u0027t need to worry about any sort of backward compatibility with a time when regions did have a separate name attribute? I seem to remember someone (maybe Artem?) mentioning such a thing.\n\nAck on the `parent_region_id` filter, patch to deprecate it is here: https://review.opendev.org/c/openstack/openstacksdk/+/967779","commit_id":"d29d6cee60c7d19c458cce650d08fadeaf0c775c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"8ce381350ecf2a58d0f130dc79dd358c8f157f33","unresolved":true,"context_lines":[{"line_number":96,"context_line":"            identity_client, parsed_args.service"},{"line_number":97,"context_line":"        ).id"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        if parsed_args.region:"},{"line_number":100,"context_line":"            # NOTE (0weng/originally vishakha): Mimic the behavior of"},{"line_number":101,"context_line":"            # common_utils.get_resource() here, instead of"},{"line_number":102,"context_line":"            # osc_lib.utils.find_resource()."},{"line_number":103,"context_line":"            # common_utils.get_resource() was used due to the case described in"},{"line_number":104,"context_line":"            # bug #1799153 where the GET resource API does not support"},{"line_number":105,"context_line":"            # filtering by name. The osc_lib.utils.find_resource() method"},{"line_number":106,"context_line":"            # could not be used because that method tries to fall back to"},{"line_number":107,"context_line":"            # list all of that resource if the requested resource"},{"line_number":108,"context_line":"            # could not be GET by ID or name, resulting in a NoUniqueMatch error."},{"line_number":109,"context_line":"            requested_region \u003d parsed_args.region"},{"line_number":110,"context_line":"            try:"},{"line_number":111,"context_line":"                resource \u003d identity_client.find_region("},{"line_number":112,"context_line":"                    name_or_id\u003drequested_region,"},{"line_number":113,"context_line":"                    ignore_missing\u003dFalse,"},{"line_number":114,"context_line":"                )"},{"line_number":115,"context_line":"            # Still mimic osc_lib.utils.find_resource() here"},{"line_number":116,"context_line":"            # and ignore if we don\u0027t have permission to find a resource."},{"line_number":117,"context_line":"            except sdk_exc.ForbiddenException:"},{"line_number":118,"context_line":"                kwargs[\"region_id\"] \u003d requested_region"},{"line_number":119,"context_line":"            except sdk_exc.ResourceNotFound as exc:"},{"line_number":120,"context_line":"                raise exceptions.CommandError from exc"},{"line_number":121,"context_line":"            else:"},{"line_number":122,"context_line":"                # It\u0027s possible for a region to have no ID, so look for ID or name"},{"line_number":123,"context_line":"                kwargs[\"region_id\"] \u003d getattr(resource, \"id\") or getattr("},{"line_number":124,"context_line":"                    resource, \"name\""},{"line_number":125,"context_line":"                )"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        kwargs[\"resource_name\"] \u003d parsed_args.resource_name"},{"line_number":128,"context_line":"        kwargs[\"default_limit\"] \u003d parsed_args.default_limit"}],"source_content_type":"text/x-python","patch_set":11,"id":"d3e0f780_27ad470f","line":125,"range":{"start_line":99,"start_character":0,"end_line":125,"end_character":17},"in_reply_to":"6a3e883e_fcfebdc7","updated":"2025-11-26 10:32:04.000000000","message":"\u003e Ok, that makes sense. So to confirm, I don\u0027t need to worry about any sort of backward compatibility with a time when regions did have a separate name attribute?\n\nYeah, correct. If keystone ever supported that, it was a very long time ago (v1? v2?) and doesn\u0027t affect us here with v3.\n\n\u003e Ack on the `parent_region_id` filter, patch to deprecate it is here: https://review.opendev.org/c/openstack/openstacksdk/+/967779\n\nApproved","commit_id":"d29d6cee60c7d19c458cce650d08fadeaf0c775c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"65a04bb2ab614e7417d0c136800ad70327d3950f","unresolved":true,"context_lines":[{"line_number":96,"context_line":"            identity_client, parsed_args.service"},{"line_number":97,"context_line":"        ).id"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        if parsed_args.region:"},{"line_number":100,"context_line":"            # NOTE (0weng/originally vishakha): Mimic the behavior of"},{"line_number":101,"context_line":"            # common_utils.get_resource() here, instead of"},{"line_number":102,"context_line":"            # osc_lib.utils.find_resource()."},{"line_number":103,"context_line":"            # common_utils.get_resource() was used due to the case described in"},{"line_number":104,"context_line":"            # bug #1799153 where the GET resource API does not support"},{"line_number":105,"context_line":"            # filtering by name. The osc_lib.utils.find_resource() method"},{"line_number":106,"context_line":"            # could not be used because that method tries to fall back to"},{"line_number":107,"context_line":"            # list all of that resource if the requested resource"},{"line_number":108,"context_line":"            # could not be GET by ID or name, resulting in a NoUniqueMatch error."},{"line_number":109,"context_line":"            requested_region \u003d parsed_args.region"},{"line_number":110,"context_line":"            try:"},{"line_number":111,"context_line":"                resource \u003d identity_client.find_region("},{"line_number":112,"context_line":"                    name_or_id\u003drequested_region,"},{"line_number":113,"context_line":"                    ignore_missing\u003dFalse,"},{"line_number":114,"context_line":"                )"},{"line_number":115,"context_line":"            # Still mimic osc_lib.utils.find_resource() here"},{"line_number":116,"context_line":"            # and ignore if we don\u0027t have permission to find a resource."},{"line_number":117,"context_line":"            except sdk_exc.ForbiddenException:"},{"line_number":118,"context_line":"                kwargs[\"region_id\"] \u003d requested_region"},{"line_number":119,"context_line":"            except sdk_exc.ResourceNotFound as exc:"},{"line_number":120,"context_line":"                raise exceptions.CommandError from exc"},{"line_number":121,"context_line":"            else:"},{"line_number":122,"context_line":"                # It\u0027s possible for a region to have no ID, so look for ID or name"},{"line_number":123,"context_line":"                kwargs[\"region_id\"] \u003d getattr(resource, \"id\") or getattr("},{"line_number":124,"context_line":"                    resource, \"name\""},{"line_number":125,"context_line":"                )"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        kwargs[\"resource_name\"] \u003d parsed_args.resource_name"},{"line_number":128,"context_line":"        kwargs[\"default_limit\"] \u003d parsed_args.default_limit"}],"source_content_type":"text/x-python","patch_set":11,"id":"5bc0d674_bfcd4649","line":125,"range":{"start_line":99,"start_character":0,"end_line":125,"end_character":17},"in_reply_to":"873f7d64_c737f61b","updated":"2025-11-19 11:12:40.000000000","message":"The api-ref is generally your best resource for this stuff. If you look at keystone\u0027s, you will see that regions [do not have a `name` attribute](https://docs.openstack.org/api-ref/identity/v3/#show-region-details). The `name` attribute exposed by SDK is therefore a bit of a lie (it\u0027s only there because it\u0027s an attribute of the `Resource` class).\n\nwrt the `parent_region_id` filter: I assume you\u0027re asking what kind of change to make in SDK? If so, I think the answer is not and you can deprecate it for removal. `find_xxx` proxy methods are designed to return exactly one `xxx` resource with the given name or ID. What you\u0027re doing with `GET /regions?parent_region_id` is returning zero or more resources that have this given attribute. For that you would use `regions` (which would also use if you wanted to find zero or more resources with the given name, e.g. `conn.compute.servers(name\u003d\u0027test-server\u0027)`).","commit_id":"d29d6cee60c7d19c458cce650d08fadeaf0c775c"},{"author":{"_account_id":36482,"name":"Oria Weng","display_name":"0weng","email":"oweng@osuosl.org","username":"0weng"},"change_message_id":"c440a10d70fbe7a2ed4d2d5c7e6619821d6043d6","unresolved":false,"context_lines":[{"line_number":96,"context_line":"            identity_client, parsed_args.service"},{"line_number":97,"context_line":"        ).id"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        if parsed_args.region:"},{"line_number":100,"context_line":"            # NOTE (0weng/originally vishakha): Mimic the behavior of"},{"line_number":101,"context_line":"            # common_utils.get_resource() here, instead of"},{"line_number":102,"context_line":"            # osc_lib.utils.find_resource()."},{"line_number":103,"context_line":"            # common_utils.get_resource() was used due to the case described in"},{"line_number":104,"context_line":"            # bug #1799153 where the GET resource API does not support"},{"line_number":105,"context_line":"            # filtering by name. The osc_lib.utils.find_resource() method"},{"line_number":106,"context_line":"            # could not be used because that method tries to fall back to"},{"line_number":107,"context_line":"            # list all of that resource if the requested resource"},{"line_number":108,"context_line":"            # could not be GET by ID or name, resulting in a NoUniqueMatch error."},{"line_number":109,"context_line":"            requested_region \u003d parsed_args.region"},{"line_number":110,"context_line":"            try:"},{"line_number":111,"context_line":"                resource \u003d identity_client.find_region("},{"line_number":112,"context_line":"                    name_or_id\u003drequested_region,"},{"line_number":113,"context_line":"                    ignore_missing\u003dFalse,"},{"line_number":114,"context_line":"                )"},{"line_number":115,"context_line":"            # Still mimic osc_lib.utils.find_resource() here"},{"line_number":116,"context_line":"            # and ignore if we don\u0027t have permission to find a resource."},{"line_number":117,"context_line":"            except sdk_exc.ForbiddenException:"},{"line_number":118,"context_line":"                kwargs[\"region_id\"] \u003d requested_region"},{"line_number":119,"context_line":"            except sdk_exc.ResourceNotFound as exc:"},{"line_number":120,"context_line":"                raise exceptions.CommandError from exc"},{"line_number":121,"context_line":"            else:"},{"line_number":122,"context_line":"                # It\u0027s possible for a region to have no ID, so look for ID or name"},{"line_number":123,"context_line":"                kwargs[\"region_id\"] \u003d getattr(resource, \"id\") or getattr("},{"line_number":124,"context_line":"                    resource, \"name\""},{"line_number":125,"context_line":"                )"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        kwargs[\"resource_name\"] \u003d parsed_args.resource_name"},{"line_number":128,"context_line":"        kwargs[\"default_limit\"] \u003d parsed_args.default_limit"}],"source_content_type":"text/x-python","patch_set":11,"id":"bf4d6200_17246a0d","line":125,"range":{"start_line":99,"start_character":0,"end_line":125,"end_character":17},"in_reply_to":"d3e0f780_27ad470f","updated":"2025-12-01 18:03:42.000000000","message":"Done","commit_id":"d29d6cee60c7d19c458cce650d08fadeaf0c775c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"8582af6c72c9caf79ec93b802d61df014ce48b10","unresolved":true,"context_lines":[{"line_number":138,"context_line":"    def get_parser(self, prog_name):"},{"line_number":139,"context_line":"        parser \u003d super().get_parser(prog_name)"},{"line_number":140,"context_line":"        parser.add_argument("},{"line_number":141,"context_line":"            \u0027registered_limit_id\u0027,"},{"line_number":142,"context_line":"            metavar\u003d\u0027\u003cregistered-limit-id\u003e\u0027,"},{"line_number":143,"context_line":"            nargs\u003d\"+\","},{"line_number":144,"context_line":"            help\u003d_(\u0027Registered limit to delete (ID)\u0027),"},{"line_number":145,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":11,"id":"903277f6_28a9586f","line":142,"range":{"start_line":141,"start_character":0,"end_line":142,"end_character":44},"updated":"2025-11-18 12:21:50.000000000","message":"nit: while we\u0027re here, could we drop the unnecessary `_id` suffix and rename the variable to indicate that it\u0027s plural. This could (/should?) be done in separate change.\n\n```suggestion\n            \u0027registered_limits\u0027,\n            metavar\u003d\u0027\u003cregistered-limit\u003e\u0027,\n```","commit_id":"d29d6cee60c7d19c458cce650d08fadeaf0c775c"},{"author":{"_account_id":36482,"name":"Oria Weng","display_name":"0weng","email":"oweng@osuosl.org","username":"0weng"},"change_message_id":"9d6903d7b5b6b33328ab79d4ad7726cae1c913f2","unresolved":false,"context_lines":[{"line_number":138,"context_line":"    def get_parser(self, prog_name):"},{"line_number":139,"context_line":"        parser \u003d super().get_parser(prog_name)"},{"line_number":140,"context_line":"        parser.add_argument("},{"line_number":141,"context_line":"            \u0027registered_limit_id\u0027,"},{"line_number":142,"context_line":"            metavar\u003d\u0027\u003cregistered-limit-id\u003e\u0027,"},{"line_number":143,"context_line":"            nargs\u003d\"+\","},{"line_number":144,"context_line":"            help\u003d_(\u0027Registered limit to delete (ID)\u0027),"},{"line_number":145,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":11,"id":"d0195b59_9db48552","line":142,"range":{"start_line":141,"start_character":0,"end_line":142,"end_character":44},"in_reply_to":"903277f6_28a9586f","updated":"2025-11-18 17:55:30.000000000","message":"Added to this patch: https://review.opendev.org/c/openstack/python-openstackclient/+/967594","commit_id":"d29d6cee60c7d19c458cce650d08fadeaf0c775c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"8582af6c72c9caf79ec93b802d61df014ce48b10","unresolved":true,"context_lines":[{"line_number":141,"context_line":"            \u0027registered_limit_id\u0027,"},{"line_number":142,"context_line":"            metavar\u003d\u0027\u003cregistered-limit-id\u003e\u0027,"},{"line_number":143,"context_line":"            nargs\u003d\"+\","},{"line_number":144,"context_line":"            help\u003d_(\u0027Registered limit to delete (ID)\u0027),"},{"line_number":145,"context_line":"        )"},{"line_number":146,"context_line":"        return parser"},{"line_number":147,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"66d5f27e_47acebdb","line":144,"updated":"2025-11-18 12:21:50.000000000","message":"```suggestion\n            help\u003d_(\n                \u0027Registered limit to delete (ID) \u0027\n                \u0027\n            ),\n```","commit_id":"d29d6cee60c7d19c458cce650d08fadeaf0c775c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"a3a45ee3f33c7b33ac9aaa7ad3501ba0e221a991","unresolved":true,"context_lines":[{"line_number":141,"context_line":"            \u0027registered_limit_id\u0027,"},{"line_number":142,"context_line":"            metavar\u003d\u0027\u003cregistered-limit-id\u003e\u0027,"},{"line_number":143,"context_line":"            nargs\u003d\"+\","},{"line_number":144,"context_line":"            help\u003d_(\u0027Registered limit to delete (ID)\u0027),"},{"line_number":145,"context_line":"        )"},{"line_number":146,"context_line":"        return parser"},{"line_number":147,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"9aff2db5_fad76184","line":144,"in_reply_to":"04ee5537_b26abb14","updated":"2025-11-26 10:41:23.000000000","message":"Actually, I remembered what I was supposed to say here 😅\n\n\n```suggestion\n            help\u003d_(\n                \u0027Registered limit to delete (ID) \u0027\n                \u0027(repeat option to remove multiple registered limits)\u0027\n            ),\n```\n\nCould still be done here rather than in the preceding patch (which is now approved)","commit_id":"d29d6cee60c7d19c458cce650d08fadeaf0c775c"},{"author":{"_account_id":36482,"name":"Oria Weng","display_name":"0weng","email":"oweng@osuosl.org","username":"0weng"},"change_message_id":"9d6903d7b5b6b33328ab79d4ad7726cae1c913f2","unresolved":true,"context_lines":[{"line_number":141,"context_line":"            \u0027registered_limit_id\u0027,"},{"line_number":142,"context_line":"            metavar\u003d\u0027\u003cregistered-limit-id\u003e\u0027,"},{"line_number":143,"context_line":"            nargs\u003d\"+\","},{"line_number":144,"context_line":"            help\u003d_(\u0027Registered limit to delete (ID)\u0027),"},{"line_number":145,"context_line":"        )"},{"line_number":146,"context_line":"        return parser"},{"line_number":147,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"b15255ee_ee212168","line":144,"in_reply_to":"66d5f27e_47acebdb","updated":"2025-11-18 17:55:30.000000000","message":"Is it necessary to add this space and newline at the end?","commit_id":"d29d6cee60c7d19c458cce650d08fadeaf0c775c"},{"author":{"_account_id":36482,"name":"Oria Weng","display_name":"0weng","email":"oweng@osuosl.org","username":"0weng"},"change_message_id":"c440a10d70fbe7a2ed4d2d5c7e6619821d6043d6","unresolved":false,"context_lines":[{"line_number":141,"context_line":"            \u0027registered_limit_id\u0027,"},{"line_number":142,"context_line":"            metavar\u003d\u0027\u003cregistered-limit-id\u003e\u0027,"},{"line_number":143,"context_line":"            nargs\u003d\"+\","},{"line_number":144,"context_line":"            help\u003d_(\u0027Registered limit to delete (ID)\u0027),"},{"line_number":145,"context_line":"        )"},{"line_number":146,"context_line":"        return parser"},{"line_number":147,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"65b83b66_e1eed3dc","line":144,"in_reply_to":"9aff2db5_fad76184","updated":"2025-12-01 18:03:42.000000000","message":"Done","commit_id":"d29d6cee60c7d19c458cce650d08fadeaf0c775c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"65a04bb2ab614e7417d0c136800ad70327d3950f","unresolved":false,"context_lines":[{"line_number":141,"context_line":"            \u0027registered_limit_id\u0027,"},{"line_number":142,"context_line":"            metavar\u003d\u0027\u003cregistered-limit-id\u003e\u0027,"},{"line_number":143,"context_line":"            nargs\u003d\"+\","},{"line_number":144,"context_line":"            help\u003d_(\u0027Registered limit to delete (ID)\u0027),"},{"line_number":145,"context_line":"        )"},{"line_number":146,"context_line":"        return parser"},{"line_number":147,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"04ee5537_b26abb14","line":144,"in_reply_to":"b15255ee_ee212168","updated":"2025-11-19 11:12:40.000000000","message":"Nope, sorry, ignore this. I had initially modified this to say `name or ID`, then realised that didn\u0027t make sense but forgot to remove the comment.","commit_id":"d29d6cee60c7d19c458cce650d08fadeaf0c775c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"8582af6c72c9caf79ec93b802d61df014ce48b10","unresolved":true,"context_lines":[{"line_number":183,"context_line":"        parser.add_argument("},{"line_number":184,"context_line":"            \u0027--service\u0027,"},{"line_number":185,"context_line":"            metavar\u003d\u0027\u003cservice\u003e\u0027,"},{"line_number":186,"context_line":"            help\u003d_(\u0027Service responsible for the resource to limit\u0027),"},{"line_number":187,"context_line":"        )"},{"line_number":188,"context_line":"        parser.add_argument("},{"line_number":189,"context_line":"            \u0027--resource-name\u0027,"}],"source_content_type":"text/x-python","patch_set":11,"id":"d0c4282c_8a79c6a4","line":186,"updated":"2025-11-18 12:21:50.000000000","message":"```suggestion\n            help\u003d_(\n                \u0027Service responsible for the resource to limit (name or ID)\u0027\n            ),\n```","commit_id":"d29d6cee60c7d19c458cce650d08fadeaf0c775c"},{"author":{"_account_id":36482,"name":"Oria Weng","display_name":"0weng","email":"oweng@osuosl.org","username":"0weng"},"change_message_id":"9d6903d7b5b6b33328ab79d4ad7726cae1c913f2","unresolved":false,"context_lines":[{"line_number":183,"context_line":"        parser.add_argument("},{"line_number":184,"context_line":"            \u0027--service\u0027,"},{"line_number":185,"context_line":"            metavar\u003d\u0027\u003cservice\u003e\u0027,"},{"line_number":186,"context_line":"            help\u003d_(\u0027Service responsible for the resource to limit\u0027),"},{"line_number":187,"context_line":"        )"},{"line_number":188,"context_line":"        parser.add_argument("},{"line_number":189,"context_line":"            \u0027--resource-name\u0027,"}],"source_content_type":"text/x-python","patch_set":11,"id":"950e8127_a5044dbd","line":186,"in_reply_to":"d0c4282c_8a79c6a4","updated":"2025-11-18 17:55:30.000000000","message":"Add to this patch: https://review.opendev.org/c/openstack/python-openstackclient/+/967594","commit_id":"d29d6cee60c7d19c458cce650d08fadeaf0c775c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"8582af6c72c9caf79ec93b802d61df014ce48b10","unresolved":true,"context_lines":[{"line_number":207,"context_line":"                identity_client, parsed_args.service"},{"line_number":208,"context_line":"            ).id"},{"line_number":209,"context_line":"        if parsed_args.region:"},{"line_number":210,"context_line":"            # NOTE (0weng/originally vishakha): Mimic the behavior of"},{"line_number":211,"context_line":"            # common_utils.get_resource() here, instead of"},{"line_number":212,"context_line":"            # osc_lib.utils.find_resource()."},{"line_number":213,"context_line":"            # common_utils.get_resource() was used due to the case described in"},{"line_number":214,"context_line":"            # bug #1799153 where the GET resource API does not support"},{"line_number":215,"context_line":"            # filtering by name. The osc_lib.utils.find_resource() method"},{"line_number":216,"context_line":"            # could not be used because that method tries to fall back to"},{"line_number":217,"context_line":"            # list all of that resource if the requested resource"},{"line_number":218,"context_line":"            # could not be GET by ID or name, resulting in a NoUniqueMatch error."},{"line_number":219,"context_line":"            requested_region \u003d parsed_args.region"},{"line_number":220,"context_line":"            try:"},{"line_number":221,"context_line":"                resource \u003d identity_client.find_region("},{"line_number":222,"context_line":"                    name_or_id\u003drequested_region,"},{"line_number":223,"context_line":"                    ignore_missing\u003dFalse,"},{"line_number":224,"context_line":"                )"},{"line_number":225,"context_line":"            # Still mimic osc_lib.utils.find_resource() here"},{"line_number":226,"context_line":"            # and ignore if we don\u0027t have permission to find a resource."},{"line_number":227,"context_line":"            except sdk_exc.ForbiddenException:"},{"line_number":228,"context_line":"                kwargs[\"region_id\"] \u003d requested_region"},{"line_number":229,"context_line":"            except sdk_exc.ResourceNotFound as exc:"},{"line_number":230,"context_line":"                raise exceptions.CommandError from exc"},{"line_number":231,"context_line":"            else:"},{"line_number":232,"context_line":"                # It\u0027s possible for a region to have no ID, so look for ID or name"},{"line_number":233,"context_line":"                kwargs[\"region_id\"] \u003d getattr(resource, \"id\") or getattr("},{"line_number":234,"context_line":"                    resource, \"name\""},{"line_number":235,"context_line":"                )"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"        if parsed_args.resource_name:"},{"line_number":238,"context_line":"            kwargs[\"resource_name\"] \u003d parsed_args.resource_name"},{"line_number":239,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"fd6887d5_7734e83a","line":236,"range":{"start_line":210,"start_character":0,"end_line":236,"end_character":1},"updated":"2025-11-18 12:21:50.000000000","message":"Same comment as above","commit_id":"d29d6cee60c7d19c458cce650d08fadeaf0c775c"},{"author":{"_account_id":36482,"name":"Oria Weng","display_name":"0weng","email":"oweng@osuosl.org","username":"0weng"},"change_message_id":"c440a10d70fbe7a2ed4d2d5c7e6619821d6043d6","unresolved":false,"context_lines":[{"line_number":207,"context_line":"                identity_client, parsed_args.service"},{"line_number":208,"context_line":"            ).id"},{"line_number":209,"context_line":"        if parsed_args.region:"},{"line_number":210,"context_line":"            # NOTE (0weng/originally vishakha): Mimic the behavior of"},{"line_number":211,"context_line":"            # common_utils.get_resource() here, instead of"},{"line_number":212,"context_line":"            # osc_lib.utils.find_resource()."},{"line_number":213,"context_line":"            # common_utils.get_resource() was used due to the case described in"},{"line_number":214,"context_line":"            # bug #1799153 where the GET resource API does not support"},{"line_number":215,"context_line":"            # filtering by name. The osc_lib.utils.find_resource() method"},{"line_number":216,"context_line":"            # could not be used because that method tries to fall back to"},{"line_number":217,"context_line":"            # list all of that resource if the requested resource"},{"line_number":218,"context_line":"            # could not be GET by ID or name, resulting in a NoUniqueMatch error."},{"line_number":219,"context_line":"            requested_region \u003d parsed_args.region"},{"line_number":220,"context_line":"            try:"},{"line_number":221,"context_line":"                resource \u003d identity_client.find_region("},{"line_number":222,"context_line":"                    name_or_id\u003drequested_region,"},{"line_number":223,"context_line":"                    ignore_missing\u003dFalse,"},{"line_number":224,"context_line":"                )"},{"line_number":225,"context_line":"            # Still mimic osc_lib.utils.find_resource() here"},{"line_number":226,"context_line":"            # and ignore if we don\u0027t have permission to find a resource."},{"line_number":227,"context_line":"            except sdk_exc.ForbiddenException:"},{"line_number":228,"context_line":"                kwargs[\"region_id\"] \u003d requested_region"},{"line_number":229,"context_line":"            except sdk_exc.ResourceNotFound as exc:"},{"line_number":230,"context_line":"                raise exceptions.CommandError from exc"},{"line_number":231,"context_line":"            else:"},{"line_number":232,"context_line":"                # It\u0027s possible for a region to have no ID, so look for ID or name"},{"line_number":233,"context_line":"                kwargs[\"region_id\"] \u003d getattr(resource, \"id\") or getattr("},{"line_number":234,"context_line":"                    resource, \"name\""},{"line_number":235,"context_line":"                )"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"        if parsed_args.resource_name:"},{"line_number":238,"context_line":"            kwargs[\"resource_name\"] \u003d parsed_args.resource_name"},{"line_number":239,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"df53b369_b1f4efa6","line":236,"range":{"start_line":210,"start_character":0,"end_line":236,"end_character":1},"in_reply_to":"fd6887d5_7734e83a","updated":"2025-12-01 18:03:42.000000000","message":"Done","commit_id":"d29d6cee60c7d19c458cce650d08fadeaf0c775c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"8582af6c72c9caf79ec93b802d61df014ce48b10","unresolved":true,"context_lines":[{"line_number":239,"context_line":""},{"line_number":240,"context_line":"        registered_limits \u003d identity_client.registered_limits(**kwargs)"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"        columns \u003d ("},{"line_number":243,"context_line":"            \"ID\","},{"line_number":244,"context_line":"            \"Service ID\","},{"line_number":245,"context_line":"            \"Resource Name\","},{"line_number":246,"context_line":"            \"Default Limit\","},{"line_number":247,"context_line":"            \"Description\","},{"line_number":248,"context_line":"            \"Region ID\","},{"line_number":249,"context_line":"        )"},{"line_number":250,"context_line":"        return ("},{"line_number":251,"context_line":"            columns,"}],"source_content_type":"text/x-python","patch_set":11,"id":"cc17656b_0e724156","line":248,"range":{"start_line":242,"start_character":19,"end_line":248,"end_character":24},"updated":"2025-11-18 12:21:50.000000000","message":"nit: probably not necessary?","commit_id":"d29d6cee60c7d19c458cce650d08fadeaf0c775c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"65a04bb2ab614e7417d0c136800ad70327d3950f","unresolved":true,"context_lines":[{"line_number":239,"context_line":""},{"line_number":240,"context_line":"        registered_limits \u003d identity_client.registered_limits(**kwargs)"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"        columns \u003d ("},{"line_number":243,"context_line":"            \"ID\","},{"line_number":244,"context_line":"            \"Service ID\","},{"line_number":245,"context_line":"            \"Resource Name\","},{"line_number":246,"context_line":"            \"Default Limit\","},{"line_number":247,"context_line":"            \"Description\","},{"line_number":248,"context_line":"            \"Region ID\","},{"line_number":249,"context_line":"        )"},{"line_number":250,"context_line":"        return ("},{"line_number":251,"context_line":"            columns,"}],"source_content_type":"text/x-python","patch_set":11,"id":"73ab487b_4eeed412","line":248,"range":{"start_line":242,"start_character":19,"end_line":248,"end_character":24},"in_reply_to":"15b28c2b_39a7a9c0","updated":"2025-11-19 11:12:40.000000000","message":"Yeah, I was referring to the change in quotation marks 😊","commit_id":"d29d6cee60c7d19c458cce650d08fadeaf0c775c"},{"author":{"_account_id":36482,"name":"Oria Weng","display_name":"0weng","email":"oweng@osuosl.org","username":"0weng"},"change_message_id":"fcea9d0a04d74a0525662a304c859ce4fd1f9fe0","unresolved":true,"context_lines":[{"line_number":239,"context_line":""},{"line_number":240,"context_line":"        registered_limits \u003d identity_client.registered_limits(**kwargs)"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"        columns \u003d ("},{"line_number":243,"context_line":"            \"ID\","},{"line_number":244,"context_line":"            \"Service ID\","},{"line_number":245,"context_line":"            \"Resource Name\","},{"line_number":246,"context_line":"            \"Default Limit\","},{"line_number":247,"context_line":"            \"Description\","},{"line_number":248,"context_line":"            \"Region ID\","},{"line_number":249,"context_line":"        )"},{"line_number":250,"context_line":"        return ("},{"line_number":251,"context_line":"            columns,"}],"source_content_type":"text/x-python","patch_set":11,"id":"a6246e39_7a4dbfe8","line":248,"range":{"start_line":242,"start_character":19,"end_line":248,"end_character":24},"in_reply_to":"266182a3_bb871d53","updated":"2025-11-19 00:02:15.000000000","message":"(And same with the functional tests.)","commit_id":"d29d6cee60c7d19c458cce650d08fadeaf0c775c"},{"author":{"_account_id":36482,"name":"Oria Weng","display_name":"0weng","email":"oweng@osuosl.org","username":"0weng"},"change_message_id":"1d8af1f71d1dbb68342babed732be3e709129b48","unresolved":false,"context_lines":[{"line_number":239,"context_line":""},{"line_number":240,"context_line":"        registered_limits \u003d identity_client.registered_limits(**kwargs)"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"        columns \u003d ("},{"line_number":243,"context_line":"            \"ID\","},{"line_number":244,"context_line":"            \"Service ID\","},{"line_number":245,"context_line":"            \"Resource Name\","},{"line_number":246,"context_line":"            \"Default Limit\","},{"line_number":247,"context_line":"            \"Description\","},{"line_number":248,"context_line":"            \"Region ID\","},{"line_number":249,"context_line":"        )"},{"line_number":250,"context_line":"        return ("},{"line_number":251,"context_line":"            columns,"}],"source_content_type":"text/x-python","patch_set":11,"id":"cb05bfe6_9694126f","line":248,"range":{"start_line":242,"start_character":19,"end_line":248,"end_character":24},"in_reply_to":"73ab487b_4eeed412","updated":"2025-11-19 22:41:10.000000000","message":"Done","commit_id":"d29d6cee60c7d19c458cce650d08fadeaf0c775c"},{"author":{"_account_id":36482,"name":"Oria Weng","display_name":"0weng","email":"oweng@osuosl.org","username":"0weng"},"change_message_id":"93e279186c836822fb12967fe2560ce502e52f29","unresolved":true,"context_lines":[{"line_number":239,"context_line":""},{"line_number":240,"context_line":"        registered_limits \u003d identity_client.registered_limits(**kwargs)"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"        columns \u003d ("},{"line_number":243,"context_line":"            \"ID\","},{"line_number":244,"context_line":"            \"Service ID\","},{"line_number":245,"context_line":"            \"Resource Name\","},{"line_number":246,"context_line":"            \"Default Limit\","},{"line_number":247,"context_line":"            \"Description\","},{"line_number":248,"context_line":"            \"Region ID\","},{"line_number":249,"context_line":"        )"},{"line_number":250,"context_line":"        return ("},{"line_number":251,"context_line":"            columns,"}],"source_content_type":"text/x-python","patch_set":11,"id":"15b28c2b_39a7a9c0","line":248,"range":{"start_line":242,"start_character":19,"end_line":248,"end_character":24},"in_reply_to":"a6246e39_7a4dbfe8","updated":"2025-11-19 02:07:17.000000000","message":"Ah I just realized the quotation marks were different, I thought you wanted to remove this code and use the same column names as `_format_registered_limit`. Is the quotation marks what you were referring to? That was probably an accident, I can change those back.","commit_id":"d29d6cee60c7d19c458cce650d08fadeaf0c775c"},{"author":{"_account_id":36482,"name":"Oria Weng","display_name":"0weng","email":"oweng@osuosl.org","username":"0weng"},"change_message_id":"9d6903d7b5b6b33328ab79d4ad7726cae1c913f2","unresolved":true,"context_lines":[{"line_number":239,"context_line":""},{"line_number":240,"context_line":"        registered_limits \u003d identity_client.registered_limits(**kwargs)"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"        columns \u003d ("},{"line_number":243,"context_line":"            \"ID\","},{"line_number":244,"context_line":"            \"Service ID\","},{"line_number":245,"context_line":"            \"Resource Name\","},{"line_number":246,"context_line":"            \"Default Limit\","},{"line_number":247,"context_line":"            \"Description\","},{"line_number":248,"context_line":"            \"Region ID\","},{"line_number":249,"context_line":"        )"},{"line_number":250,"context_line":"        return ("},{"line_number":251,"context_line":"            columns,"}],"source_content_type":"text/x-python","patch_set":11,"id":"266182a3_bb871d53","line":248,"range":{"start_line":242,"start_character":19,"end_line":248,"end_character":24},"in_reply_to":"cc17656b_0e724156","updated":"2025-11-18 17:55:30.000000000","message":"This doesn\u0027t pass the unit test otherwise. Should the unit test be updated to match the ordering and lowercasing?","commit_id":"d29d6cee60c7d19c458cce650d08fadeaf0c775c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"8582af6c72c9caf79ec93b802d61df014ce48b10","unresolved":true,"context_lines":[{"line_number":270,"context_line":"                \u0027Service to be updated responsible for the resource to \u0027"},{"line_number":271,"context_line":"                \u0027limit. Either --service, --resource-name or --region must \u0027"},{"line_number":272,"context_line":"                \u0027be different than existing value otherwise it will be \u0027"},{"line_number":273,"context_line":"                \u0027duplicate entry\u0027"},{"line_number":274,"context_line":"            ),"},{"line_number":275,"context_line":"        )"},{"line_number":276,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":11,"id":"0a90803b_b281e415","line":273,"updated":"2025-11-18 12:21:50.000000000","message":"```suggestion\n                \u0027duplicate entry (name or ID)\u0027\n```","commit_id":"d29d6cee60c7d19c458cce650d08fadeaf0c775c"},{"author":{"_account_id":36482,"name":"Oria Weng","display_name":"0weng","email":"oweng@osuosl.org","username":"0weng"},"change_message_id":"9d6903d7b5b6b33328ab79d4ad7726cae1c913f2","unresolved":false,"context_lines":[{"line_number":270,"context_line":"                \u0027Service to be updated responsible for the resource to \u0027"},{"line_number":271,"context_line":"                \u0027limit. Either --service, --resource-name or --region must \u0027"},{"line_number":272,"context_line":"                \u0027be different than existing value otherwise it will be \u0027"},{"line_number":273,"context_line":"                \u0027duplicate entry\u0027"},{"line_number":274,"context_line":"            ),"},{"line_number":275,"context_line":"        )"},{"line_number":276,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":11,"id":"6a7e3073_7aa83249","line":273,"in_reply_to":"0a90803b_b281e415","updated":"2025-11-18 17:55:30.000000000","message":"Added to this patch: https://review.opendev.org/c/openstack/python-openstackclient/+/967594","commit_id":"d29d6cee60c7d19c458cce650d08fadeaf0c775c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"8582af6c72c9caf79ec93b802d61df014ce48b10","unresolved":true,"context_lines":[{"line_number":321,"context_line":"        if parsed_args.default_limit:"},{"line_number":322,"context_line":"            kwargs[\"default_limit\"] \u003d parsed_args.default_limit"},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"        if parsed_args.description:"},{"line_number":325,"context_line":"            kwargs[\"description\"] \u003d parsed_args.description"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"        if parsed_args.region:"},{"line_number":328,"context_line":"            # NOTE (0weng/originally vishakha): Mimic the behavior of"},{"line_number":329,"context_line":"            # common_utils.get_resource() here, instead of"},{"line_number":330,"context_line":"            # osc_lib.utils.find_resource()."},{"line_number":331,"context_line":"            # common_utils.get_resource() was used due to the case described in"},{"line_number":332,"context_line":"            # bug #1799153 where the GET resource API does not support"},{"line_number":333,"context_line":"            # filtering by name. The osc_lib.utils.find_resource() method"},{"line_number":334,"context_line":"            # could not be used because that method tries to fall back to"},{"line_number":335,"context_line":"            # list all of that resource if the requested resource"},{"line_number":336,"context_line":"            # could not be GET by ID or name, resulting in a NoUniqueMatch error."},{"line_number":337,"context_line":"            requested_region \u003d parsed_args.region"},{"line_number":338,"context_line":"            try:"},{"line_number":339,"context_line":"                resource \u003d identity_client.find_region("},{"line_number":340,"context_line":"                    name_or_id\u003drequested_region,"},{"line_number":341,"context_line":"                    ignore_missing\u003dFalse,"},{"line_number":342,"context_line":"                )"},{"line_number":343,"context_line":"            # Still mimic osc_lib.utils.find_resource() here"},{"line_number":344,"context_line":"            # and ignore if we don\u0027t have permission to find a resource."},{"line_number":345,"context_line":"            except sdk_exc.ForbiddenException:"},{"line_number":346,"context_line":"                kwargs[\"region_id\"] \u003d requested_region"},{"line_number":347,"context_line":"            except sdk_exc.ResourceNotFound as exc:"},{"line_number":348,"context_line":"                raise exceptions.CommandError from exc"},{"line_number":349,"context_line":"            else:"},{"line_number":350,"context_line":"                # It\u0027s possible for a region to have no ID, so look for ID or name"},{"line_number":351,"context_line":"                kwargs[\"region_id\"] \u003d getattr(resource, \"id\") or getattr("},{"line_number":352,"context_line":"                    resource, \"name\""},{"line_number":353,"context_line":"                )"},{"line_number":354,"context_line":""},{"line_number":355,"context_line":"        registered_limit \u003d identity_client.update_registered_limit("},{"line_number":356,"context_line":"            parsed_args.registered_limit_id, **kwargs"}],"source_content_type":"text/x-python","patch_set":11,"id":"a6eea1e6_8d65885c","line":353,"range":{"start_line":324,"start_character":7,"end_line":353,"end_character":17},"updated":"2025-11-18 12:21:50.000000000","message":"Same comment again","commit_id":"d29d6cee60c7d19c458cce650d08fadeaf0c775c"},{"author":{"_account_id":36482,"name":"Oria Weng","display_name":"0weng","email":"oweng@osuosl.org","username":"0weng"},"change_message_id":"c440a10d70fbe7a2ed4d2d5c7e6619821d6043d6","unresolved":false,"context_lines":[{"line_number":321,"context_line":"        if parsed_args.default_limit:"},{"line_number":322,"context_line":"            kwargs[\"default_limit\"] \u003d parsed_args.default_limit"},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"        if parsed_args.description:"},{"line_number":325,"context_line":"            kwargs[\"description\"] \u003d parsed_args.description"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"        if parsed_args.region:"},{"line_number":328,"context_line":"            # NOTE (0weng/originally vishakha): Mimic the behavior of"},{"line_number":329,"context_line":"            # common_utils.get_resource() here, instead of"},{"line_number":330,"context_line":"            # osc_lib.utils.find_resource()."},{"line_number":331,"context_line":"            # common_utils.get_resource() was used due to the case described in"},{"line_number":332,"context_line":"            # bug #1799153 where the GET resource API does not support"},{"line_number":333,"context_line":"            # filtering by name. The osc_lib.utils.find_resource() method"},{"line_number":334,"context_line":"            # could not be used because that method tries to fall back to"},{"line_number":335,"context_line":"            # list all of that resource if the requested resource"},{"line_number":336,"context_line":"            # could not be GET by ID or name, resulting in a NoUniqueMatch error."},{"line_number":337,"context_line":"            requested_region \u003d parsed_args.region"},{"line_number":338,"context_line":"            try:"},{"line_number":339,"context_line":"                resource \u003d identity_client.find_region("},{"line_number":340,"context_line":"                    name_or_id\u003drequested_region,"},{"line_number":341,"context_line":"                    ignore_missing\u003dFalse,"},{"line_number":342,"context_line":"                )"},{"line_number":343,"context_line":"            # Still mimic osc_lib.utils.find_resource() here"},{"line_number":344,"context_line":"            # and ignore if we don\u0027t have permission to find a resource."},{"line_number":345,"context_line":"            except sdk_exc.ForbiddenException:"},{"line_number":346,"context_line":"                kwargs[\"region_id\"] \u003d requested_region"},{"line_number":347,"context_line":"            except sdk_exc.ResourceNotFound as exc:"},{"line_number":348,"context_line":"                raise exceptions.CommandError from exc"},{"line_number":349,"context_line":"            else:"},{"line_number":350,"context_line":"                # It\u0027s possible for a region to have no ID, so look for ID or name"},{"line_number":351,"context_line":"                kwargs[\"region_id\"] \u003d getattr(resource, \"id\") or getattr("},{"line_number":352,"context_line":"                    resource, \"name\""},{"line_number":353,"context_line":"                )"},{"line_number":354,"context_line":""},{"line_number":355,"context_line":"        registered_limit \u003d identity_client.update_registered_limit("},{"line_number":356,"context_line":"            parsed_args.registered_limit_id, **kwargs"}],"source_content_type":"text/x-python","patch_set":11,"id":"e168cd8f_19baf5d0","line":353,"range":{"start_line":324,"start_character":7,"end_line":353,"end_character":17},"in_reply_to":"a6eea1e6_8d65885c","updated":"2025-12-01 18:03:42.000000000","message":"Done","commit_id":"d29d6cee60c7d19c458cce650d08fadeaf0c775c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"057ffcc3861d76b8848064a73530fc9c23dc1e40","unresolved":true,"context_lines":[{"line_number":211,"context_line":"            kwargs[\"service_id\"] \u003d common_utils.find_service_sdk("},{"line_number":212,"context_line":"                identity_client, parsed_args.service"},{"line_number":213,"context_line":"            ).id"},{"line_number":214,"context_line":"        if parsed_args.region:"},{"line_number":215,"context_line":"            # NOTE (0weng/originally vishakha): Mimic the behavior of"},{"line_number":216,"context_line":"            # common_utils.get_resource() here, instead of"},{"line_number":217,"context_line":"            # osc_lib.utils.find_resource()."},{"line_number":218,"context_line":"            # common_utils.get_resource() was used due to the case described in"},{"line_number":219,"context_line":"            # bug #1799153 where the GET resource API does not support"},{"line_number":220,"context_line":"            # filtering by name. The osc_lib.utils.find_resource() method"},{"line_number":221,"context_line":"            # could not be used because that method tries to fall back to"},{"line_number":222,"context_line":"            # list all of that resource if the requested resource"},{"line_number":223,"context_line":"            # could not be GET by ID or name, resulting in a NoUniqueMatch error."},{"line_number":224,"context_line":"            requested_region \u003d parsed_args.region"},{"line_number":225,"context_line":"            try:"},{"line_number":226,"context_line":"                resource \u003d identity_client.find_region("},{"line_number":227,"context_line":"                    name_or_id\u003drequested_region,"},{"line_number":228,"context_line":"                    ignore_missing\u003dFalse,"},{"line_number":229,"context_line":"                )"},{"line_number":230,"context_line":"            # Still mimic osc_lib.utils.find_resource() here"},{"line_number":231,"context_line":"            # and ignore if we don\u0027t have permission to find a resource."},{"line_number":232,"context_line":"            except sdk_exc.ForbiddenException:"},{"line_number":233,"context_line":"                kwargs[\"region_id\"] \u003d requested_region"},{"line_number":234,"context_line":"            except sdk_exc.ResourceNotFound as exc:"},{"line_number":235,"context_line":"                raise exceptions.CommandError from exc"},{"line_number":236,"context_line":"            else:"},{"line_number":237,"context_line":"                # It\u0027s possible for a region to have no ID, so look for ID or name"},{"line_number":238,"context_line":"                kwargs[\"region_id\"] \u003d getattr(resource, \"id\") or getattr("},{"line_number":239,"context_line":"                    resource, \"name\""},{"line_number":240,"context_line":"                )"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"        if parsed_args.resource_name:"},{"line_number":243,"context_line":"            kwargs[\"resource_name\"] \u003d parsed_args.resource_name"}],"source_content_type":"text/x-python","patch_set":15,"id":"17839a4c_957e7dbf","line":240,"range":{"start_line":214,"start_character":30,"end_line":240,"end_character":17},"updated":"2025-11-26 10:33:32.000000000","message":"```suggestion\n        if parsed_args.region:\n            kwargs[\u0027region\u0027] \u003d parsed_args.region\n```","commit_id":"7e39e4dec1128f4436f6c090e47dac7e990836fe"},{"author":{"_account_id":36482,"name":"Oria Weng","display_name":"0weng","email":"oweng@osuosl.org","username":"0weng"},"change_message_id":"c440a10d70fbe7a2ed4d2d5c7e6619821d6043d6","unresolved":false,"context_lines":[{"line_number":211,"context_line":"            kwargs[\"service_id\"] \u003d common_utils.find_service_sdk("},{"line_number":212,"context_line":"                identity_client, parsed_args.service"},{"line_number":213,"context_line":"            ).id"},{"line_number":214,"context_line":"        if parsed_args.region:"},{"line_number":215,"context_line":"            # NOTE (0weng/originally vishakha): Mimic the behavior of"},{"line_number":216,"context_line":"            # common_utils.get_resource() here, instead of"},{"line_number":217,"context_line":"            # osc_lib.utils.find_resource()."},{"line_number":218,"context_line":"            # common_utils.get_resource() was used due to the case described in"},{"line_number":219,"context_line":"            # bug #1799153 where the GET resource API does not support"},{"line_number":220,"context_line":"            # filtering by name. The osc_lib.utils.find_resource() method"},{"line_number":221,"context_line":"            # could not be used because that method tries to fall back to"},{"line_number":222,"context_line":"            # list all of that resource if the requested resource"},{"line_number":223,"context_line":"            # could not be GET by ID or name, resulting in a NoUniqueMatch error."},{"line_number":224,"context_line":"            requested_region \u003d parsed_args.region"},{"line_number":225,"context_line":"            try:"},{"line_number":226,"context_line":"                resource \u003d identity_client.find_region("},{"line_number":227,"context_line":"                    name_or_id\u003drequested_region,"},{"line_number":228,"context_line":"                    ignore_missing\u003dFalse,"},{"line_number":229,"context_line":"                )"},{"line_number":230,"context_line":"            # Still mimic osc_lib.utils.find_resource() here"},{"line_number":231,"context_line":"            # and ignore if we don\u0027t have permission to find a resource."},{"line_number":232,"context_line":"            except sdk_exc.ForbiddenException:"},{"line_number":233,"context_line":"                kwargs[\"region_id\"] \u003d requested_region"},{"line_number":234,"context_line":"            except sdk_exc.ResourceNotFound as exc:"},{"line_number":235,"context_line":"                raise exceptions.CommandError from exc"},{"line_number":236,"context_line":"            else:"},{"line_number":237,"context_line":"                # It\u0027s possible for a region to have no ID, so look for ID or name"},{"line_number":238,"context_line":"                kwargs[\"region_id\"] \u003d getattr(resource, \"id\") or getattr("},{"line_number":239,"context_line":"                    resource, \"name\""},{"line_number":240,"context_line":"                )"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"        if parsed_args.resource_name:"},{"line_number":243,"context_line":"            kwargs[\"resource_name\"] \u003d parsed_args.resource_name"}],"source_content_type":"text/x-python","patch_set":15,"id":"85b00c15_b31cbb8b","line":240,"range":{"start_line":214,"start_character":30,"end_line":240,"end_character":17},"in_reply_to":"17839a4c_957e7dbf","updated":"2025-12-01 18:03:42.000000000","message":"Done","commit_id":"7e39e4dec1128f4436f6c090e47dac7e990836fe"}],"releasenotes/notes/migrate-registered-limit-to-sdk-36b6451e3a799a43.yaml":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"8582af6c72c9caf79ec93b802d61df014ce48b10","unresolved":true,"context_lines":[{"line_number":6,"context_line":"  - |"},{"line_number":7,"context_line":"    Filtering in ``registered limit`` commands is now case sensitive."},{"line_number":8,"context_line":"  - |"},{"line_number":9,"context_line":"    Specifying ``--region None`` is no longer supported for ``registered limit`` commands."}],"source_content_type":"text/x-yaml","patch_set":11,"id":"c7180c27_29d3dbf8","line":9,"updated":"2025-11-18 12:21:50.000000000","message":"Can you wrap this at \u003c\u003d 79 characters?","commit_id":"d29d6cee60c7d19c458cce650d08fadeaf0c775c"},{"author":{"_account_id":36482,"name":"Oria Weng","display_name":"0weng","email":"oweng@osuosl.org","username":"0weng"},"change_message_id":"25b2726542ac8e0c2b1f308a5c1dba5c19e7a0f4","unresolved":false,"context_lines":[{"line_number":6,"context_line":"  - |"},{"line_number":7,"context_line":"    Filtering in ``registered limit`` commands is now case sensitive."},{"line_number":8,"context_line":"  - |"},{"line_number":9,"context_line":"    Specifying ``--region None`` is no longer supported for ``registered limit`` commands."}],"source_content_type":"text/x-yaml","patch_set":11,"id":"bad16b5b_67a66907","line":9,"in_reply_to":"c7180c27_29d3dbf8","updated":"2025-11-18 17:57:00.000000000","message":"Done","commit_id":"d29d6cee60c7d19c458cce650d08fadeaf0c775c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"1762828874f6a3305583e66702eab1210f73e6a6","unresolved":true,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Migrate ``registered limit`` commands from keystoneclient to SDK."},{"line_number":5,"context_line":"upgrade:"},{"line_number":6,"context_line":"  - |"},{"line_number":7,"context_line":"    Filtering in ``registered limit`` commands is now case sensitive."},{"line_number":8,"context_line":"  - |"},{"line_number":9,"context_line":"    Specifying ``--region None`` is no longer supported for ``registered limit``"},{"line_number":10,"context_line":"    commands."}],"source_content_type":"text/x-yaml","patch_set":16,"id":"6aea1049_c0baf4bc","line":7,"range":{"start_line":5,"start_character":8,"end_line":7,"end_character":69},"updated":"2025-12-12 14:51:19.000000000","message":"I think we\u0027ve realised this isn\u0027t true? Can you remove it?","commit_id":"47ba155a3c345752101a4bb61e094d4e5a5c6af7"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"56efeb472d4cc5eff6ea8de208bbfacb28ad0bab","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Migrate ``registered limit`` commands from keystoneclient to SDK."},{"line_number":5,"context_line":"upgrade:"},{"line_number":6,"context_line":"  - |"},{"line_number":7,"context_line":"    Filtering in ``registered limit`` commands is now case sensitive."},{"line_number":8,"context_line":"  - |"},{"line_number":9,"context_line":"    Specifying ``--region None`` is no longer supported for ``registered limit``"},{"line_number":10,"context_line":"    commands."}],"source_content_type":"text/x-yaml","patch_set":16,"id":"ebc66989_5d39692b","line":7,"range":{"start_line":5,"start_character":8,"end_line":7,"end_character":69},"in_reply_to":"00b99a58_832c371b","updated":"2026-02-13 14:07:22.000000000","message":"Sounds good. I took a look at this myself today and left my notes [here](https://review.opendev.org/c/openstack/python-openstackclient/+/965317/comment/bce798a6_1429cc05/)","commit_id":"47ba155a3c345752101a4bb61e094d4e5a5c6af7"},{"author":{"_account_id":36482,"name":"Oria Weng","display_name":"0weng","email":"oweng@osuosl.org","username":"0weng"},"change_message_id":"5f7f1a0079adee8131b41e41477ac32444284589","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Migrate ``registered limit`` commands from keystoneclient to SDK."},{"line_number":5,"context_line":"upgrade:"},{"line_number":6,"context_line":"  - |"},{"line_number":7,"context_line":"    Filtering in ``registered limit`` commands is now case sensitive."},{"line_number":8,"context_line":"  - |"},{"line_number":9,"context_line":"    Specifying ``--region None`` is no longer supported for ``registered limit``"},{"line_number":10,"context_line":"    commands."}],"source_content_type":"text/x-yaml","patch_set":16,"id":"00b99a58_832c371b","line":7,"range":{"start_line":5,"start_character":8,"end_line":7,"end_character":69},"in_reply_to":"6aea1049_c0baf4bc","updated":"2026-01-27 22:19:12.000000000","message":"I tested and retrieving registered limits by ID is currently (i.e. before this patch is applied) case insensitive:\n\n```\n$ openstack --os-cloud devstack-admin registered limit show c90c1a780c004f4984db81cc32b9bcea\n+---------------+----------------------------------+\n| Field         | Value                            |\n+---------------+----------------------------------+\n| default_limit | 2000                             |\n| description   | None                             |\n| id            | c90c1a780c004f4984db81cc32b9bcea |\n| region_id     | RegionOne                        |\n| resource_name | image_size_total                 |\n| service_id    | 99127edb98ce4330a6bb055b99a6d546 |\n+---------------+----------------------------------+\n```\nWith the last letter of the ID capitalized:\n```\nubuntu@openstack-new-oweng:~$ openstack --os-cloud devstack-admin registered limit show c90c1a780c004f4984db81cc32b9bceA\n+---------------+----------------------------------+\n| Field         | Value                            |\n+---------------+----------------------------------+\n| default_limit | 2000                             |\n| description   | None                             |\n| id            | c90c1a780c004f4984db81cc32b9bcea |\n| region_id     | RegionOne                        |\n| resource_name | image_size_total                 |\n| service_id    | 99127edb98ce4330a6bb055b99a6d546 |\n+---------------+----------------------------------+\n```","commit_id":"47ba155a3c345752101a4bb61e094d4e5a5c6af7"}]}
