)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9d05793ca49eb080dd250ad9ea0c11eb2b37ae16","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"5e952710_22eeb4b1","updated":"2025-09-09 21:42:02.000000000","message":"This is very thorough. Nice work. I have a couple of requests inline. The -1 is for that. I\u0027d also like to see a functional test if you\u0027re willing and able to add it.","commit_id":"62335fc0c3162375383e611e38f44b4b32cf5fe6"},{"author":{"_account_id":23279,"name":"Seongsoo Cho","display_name":"Seongsoo Cho","email":"ppiyakk2@printf.kr","username":"seongsoo.cho"},"change_message_id":"e3083e20f5feecf3d19b11de3aa324eac427ecc3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"89e37f1a_7c79483a","updated":"2026-05-19 14:45:41.000000000","message":"This patch was originally developed as part of the 2025 Korea Contribution Mentoring Program.\n\nSince there have been no updates for several months after the patch was proposed, a mentee from the 2026 program will continue working on it. (from may 2026)","commit_id":"62335fc0c3162375383e611e38f44b4b32cf5fe6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"14c5f139fb540dfcf2ea1e6420529f0c39749254","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"bcb054bf_463b2aed","updated":"2026-06-04 17:37:00.000000000","message":"I have a few new requests. Could you address them?","commit_id":"f133c9b3e72a89a652e7cc633c0672cc723862cf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"626e97752db5266aee9307f104abae8d8247670e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"01f5d32a_250d3f1e","updated":"2026-06-05 09:37:47.000000000","message":"🥳","commit_id":"ff9d09dfec556e6d6ae2e51c1a02bca10ded56af"}],"openstack/key_manager/v1/_proxy.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9d05793ca49eb080dd250ad9ea0c11eb2b37ae16","unresolved":true,"context_lines":[{"line_number":23,"context_line":"class Proxy(proxy.Proxy):"},{"line_number":24,"context_line":"    _resource_registry \u003d {"},{"line_number":25,"context_line":"        \"container\": _container.Container,"},{"line_number":26,"context_line":"        \"order\": _order.Order,"},{"line_number":27,"context_line":"        \"secret_consumer\": _secret_consumer.SecretConsumer,"},{"line_number":28,"context_line":"        \"secret\": _secret.Secret,"},{"line_number":29,"context_line":"    }"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def create_container(self, **attrs):"}],"source_content_type":"text/x-python","patch_set":3,"id":"f3d94490_e49bb2fa","line":28,"range":{"start_line":26,"start_character":30,"end_line":28,"end_character":33},"updated":"2025-09-09 21:42:02.000000000","message":"nit:\n\n```suggestion\n        \"order\": _order.Order,\n        \"secret\": _secret.Secret,\n        \"secret_consumer\": _secret_consumer.SecretConsumer,\n```","commit_id":"62335fc0c3162375383e611e38f44b4b32cf5fe6"},{"author":{"_account_id":39065,"name":"JeongBin Kim","display_name":"JeongBin Kim","email":"jeongvin1999@gmail.com","username":"jeongbin.kim"},"change_message_id":"86b7eae9c4df445df6f57f1a8c8279e98fedd231","unresolved":false,"context_lines":[{"line_number":23,"context_line":"class Proxy(proxy.Proxy):"},{"line_number":24,"context_line":"    _resource_registry \u003d {"},{"line_number":25,"context_line":"        \"container\": _container.Container,"},{"line_number":26,"context_line":"        \"order\": _order.Order,"},{"line_number":27,"context_line":"        \"secret_consumer\": _secret_consumer.SecretConsumer,"},{"line_number":28,"context_line":"        \"secret\": _secret.Secret,"},{"line_number":29,"context_line":"    }"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def create_container(self, **attrs):"}],"source_content_type":"text/x-python","patch_set":3,"id":"4a828ff9_061f53eb","line":28,"range":{"start_line":26,"start_character":30,"end_line":28,"end_character":33},"in_reply_to":"f3d94490_e49bb2fa","updated":"2026-06-03 14:40:41.000000000","message":"Done","commit_id":"62335fc0c3162375383e611e38f44b4b32cf5fe6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9d05793ca49eb080dd250ad9ea0c11eb2b37ae16","unresolved":true,"context_lines":[{"line_number":275,"context_line":"    def create_secret_consumer(self, secret, **attrs):"},{"line_number":276,"context_line":"        \"\"\"Create a consumer for a secret"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"        :param secret: The secret id or :class:`~openstack.key_manager.v1.secret.Secret`."},{"line_number":279,"context_line":"        :param dict attrs: Must include ``service``, ``resource_type``, ``resource_id``."},{"line_number":280,"context_line":"        :returns: The created consumer association"},{"line_number":281,"context_line":"        :rtype: :class:`~openstack.key_manager.v1.secret_consumer.SecretConsumer`"}],"source_content_type":"text/x-python","patch_set":3,"id":"a8b3fa0c_92ca0c23","line":278,"updated":"2025-09-09 21:42:02.000000000","message":"Can you wrap these docstring at \u003c\u003d 79 characters","commit_id":"62335fc0c3162375383e611e38f44b4b32cf5fe6"},{"author":{"_account_id":39065,"name":"JeongBin Kim","display_name":"JeongBin Kim","email":"jeongvin1999@gmail.com","username":"jeongbin.kim"},"change_message_id":"86b7eae9c4df445df6f57f1a8c8279e98fedd231","unresolved":false,"context_lines":[{"line_number":275,"context_line":"    def create_secret_consumer(self, secret, **attrs):"},{"line_number":276,"context_line":"        \"\"\"Create a consumer for a secret"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"        :param secret: The secret id or :class:`~openstack.key_manager.v1.secret.Secret`."},{"line_number":279,"context_line":"        :param dict attrs: Must include ``service``, ``resource_type``, ``resource_id``."},{"line_number":280,"context_line":"        :returns: The created consumer association"},{"line_number":281,"context_line":"        :rtype: :class:`~openstack.key_manager.v1.secret_consumer.SecretConsumer`"}],"source_content_type":"text/x-python","patch_set":3,"id":"c1f5d04b_89b558c3","line":278,"in_reply_to":"a8b3fa0c_92ca0c23","updated":"2026-06-03 14:40:41.000000000","message":"Done","commit_id":"62335fc0c3162375383e611e38f44b4b32cf5fe6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9d05793ca49eb080dd250ad9ea0c11eb2b37ae16","unresolved":true,"context_lines":[{"line_number":280,"context_line":"        :returns: The created consumer association"},{"line_number":281,"context_line":"        :rtype: :class:`~openstack.key_manager.v1.secret_consumer.SecretConsumer`"},{"line_number":282,"context_line":"        \"\"\""},{"line_number":283,"context_line":"        secret_ref \u003d self._get_secret_ref(secret)"},{"line_number":284,"context_line":"        consumer \u003d _secret_consumer.SecretConsumer.new("},{"line_number":285,"context_line":"            secret_ref\u003dsecret_ref, **attrs"},{"line_number":286,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":3,"id":"184f49cd_5e2d959c","line":283,"updated":"2025-09-09 21:42:02.000000000","message":"I don\u0027t believe we need to support passing secrets by URL as we don\u0027t do this anywhere else. If we drop this functionality then you should be able to use `self._get_resource` for this instead. You will find plenty of examples in e.g. `openstack/compute/v2/_proxy.py`.","commit_id":"62335fc0c3162375383e611e38f44b4b32cf5fe6"},{"author":{"_account_id":39065,"name":"JeongBin Kim","display_name":"JeongBin Kim","email":"jeongvin1999@gmail.com","username":"jeongbin.kim"},"change_message_id":"86b7eae9c4df445df6f57f1a8c8279e98fedd231","unresolved":false,"context_lines":[{"line_number":280,"context_line":"        :returns: The created consumer association"},{"line_number":281,"context_line":"        :rtype: :class:`~openstack.key_manager.v1.secret_consumer.SecretConsumer`"},{"line_number":282,"context_line":"        \"\"\""},{"line_number":283,"context_line":"        secret_ref \u003d self._get_secret_ref(secret)"},{"line_number":284,"context_line":"        consumer \u003d _secret_consumer.SecretConsumer.new("},{"line_number":285,"context_line":"            secret_ref\u003dsecret_ref, **attrs"},{"line_number":286,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":3,"id":"36b6422f_36e183c6","line":283,"in_reply_to":"184f49cd_5e2d959c","updated":"2026-06-03 14:40:41.000000000","message":"Done","commit_id":"62335fc0c3162375383e611e38f44b4b32cf5fe6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9d05793ca49eb080dd250ad9ea0c11eb2b37ae16","unresolved":true,"context_lines":[{"line_number":280,"context_line":"        :returns: The created consumer association"},{"line_number":281,"context_line":"        :rtype: :class:`~openstack.key_manager.v1.secret_consumer.SecretConsumer`"},{"line_number":282,"context_line":"        \"\"\""},{"line_number":283,"context_line":"        secret_ref \u003d self._get_secret_ref(secret)"},{"line_number":284,"context_line":"        consumer \u003d _secret_consumer.SecretConsumer.new("},{"line_number":285,"context_line":"            secret_ref\u003dsecret_ref, **attrs"},{"line_number":286,"context_line":"        )"},{"line_number":287,"context_line":"        return consumer.create(self)"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"    def delete_secret_consumer(self, secret, **attrs):"},{"line_number":290,"context_line":"        \"\"\"Delete a consumer association from a secret"}],"source_content_type":"text/x-python","patch_set":3,"id":"b48628ae_0df8e7e6","line":287,"range":{"start_line":283,"start_character":49,"end_line":287,"end_character":36},"updated":"2025-09-09 21:42:02.000000000","message":"Why are you not using the `self._create` helper here? If there\u0027s a good reason for it, please add a comment to help others understand","commit_id":"62335fc0c3162375383e611e38f44b4b32cf5fe6"},{"author":{"_account_id":39065,"name":"JeongBin Kim","display_name":"JeongBin Kim","email":"jeongvin1999@gmail.com","username":"jeongbin.kim"},"change_message_id":"86b7eae9c4df445df6f57f1a8c8279e98fedd231","unresolved":false,"context_lines":[{"line_number":280,"context_line":"        :returns: The created consumer association"},{"line_number":281,"context_line":"        :rtype: :class:`~openstack.key_manager.v1.secret_consumer.SecretConsumer`"},{"line_number":282,"context_line":"        \"\"\""},{"line_number":283,"context_line":"        secret_ref \u003d self._get_secret_ref(secret)"},{"line_number":284,"context_line":"        consumer \u003d _secret_consumer.SecretConsumer.new("},{"line_number":285,"context_line":"            secret_ref\u003dsecret_ref, **attrs"},{"line_number":286,"context_line":"        )"},{"line_number":287,"context_line":"        return consumer.create(self)"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"    def delete_secret_consumer(self, secret, **attrs):"},{"line_number":290,"context_line":"        \"\"\"Delete a consumer association from a secret"}],"source_content_type":"text/x-python","patch_set":3,"id":"37b6f7f8_002d69e7","line":287,"range":{"start_line":283,"start_character":49,"end_line":287,"end_character":36},"in_reply_to":"b48628ae_0df8e7e6","updated":"2026-06-03 14:40:41.000000000","message":"Done","commit_id":"62335fc0c3162375383e611e38f44b4b32cf5fe6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9d05793ca49eb080dd250ad9ea0c11eb2b37ae16","unresolved":true,"context_lines":[{"line_number":292,"context_line":"        :param secret: The secret id or :class:`~openstack.key_manager.v1.secret.Secret`."},{"line_number":293,"context_line":"        :param dict attrs: Must include ``service``, ``resource_type``, ``resource_id``."},{"line_number":294,"context_line":"        :returns: ``None``"},{"line_number":295,"context_line":"        \"\"\""},{"line_number":296,"context_line":"        secret_ref \u003d self._get_secret_ref(secret)"},{"line_number":297,"context_line":"        # Create a temporary resource instance for deletion"},{"line_number":298,"context_line":"        consumer \u003d _secret_consumer.SecretConsumer.new("},{"line_number":299,"context_line":"            secret_ref\u003dsecret_ref, **attrs"},{"line_number":300,"context_line":"        )"},{"line_number":301,"context_line":"        consumer.delete(self)"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"    def secret_consumers(self, secret, **query):"},{"line_number":304,"context_line":"        \"\"\"List consumers for a secret"}],"source_content_type":"text/x-python","patch_set":3,"id":"36da6b5f_827b8693","line":301,"range":{"start_line":295,"start_character":11,"end_line":301,"end_character":29},"updated":"2025-09-09 21:42:02.000000000","message":"As above: why can\u0027t we use `self._delete` here?","commit_id":"62335fc0c3162375383e611e38f44b4b32cf5fe6"},{"author":{"_account_id":39065,"name":"JeongBin Kim","display_name":"JeongBin Kim","email":"jeongvin1999@gmail.com","username":"jeongbin.kim"},"change_message_id":"86b7eae9c4df445df6f57f1a8c8279e98fedd231","unresolved":false,"context_lines":[{"line_number":292,"context_line":"        :param secret: The secret id or :class:`~openstack.key_manager.v1.secret.Secret`."},{"line_number":293,"context_line":"        :param dict attrs: Must include ``service``, ``resource_type``, ``resource_id``."},{"line_number":294,"context_line":"        :returns: ``None``"},{"line_number":295,"context_line":"        \"\"\""},{"line_number":296,"context_line":"        secret_ref \u003d self._get_secret_ref(secret)"},{"line_number":297,"context_line":"        # Create a temporary resource instance for deletion"},{"line_number":298,"context_line":"        consumer \u003d _secret_consumer.SecretConsumer.new("},{"line_number":299,"context_line":"            secret_ref\u003dsecret_ref, **attrs"},{"line_number":300,"context_line":"        )"},{"line_number":301,"context_line":"        consumer.delete(self)"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"    def secret_consumers(self, secret, **query):"},{"line_number":304,"context_line":"        \"\"\"List consumers for a secret"}],"source_content_type":"text/x-python","patch_set":3,"id":"24343df9_ecb108fc","line":301,"range":{"start_line":295,"start_character":11,"end_line":301,"end_character":29},"in_reply_to":"36da6b5f_827b8693","updated":"2026-06-03 14:40:41.000000000","message":"resource_type is a required body field for Barbican\u0027s DELETE endpoint, but it conflicts with proxy._delete\u0027s first parameter name. proxy._delete doesn\u0027t support __conflicting_attrs unlike _create, so we construct the resource directly.","commit_id":"62335fc0c3162375383e611e38f44b4b32cf5fe6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"14c5f139fb540dfcf2ea1e6420529f0c39749254","unresolved":true,"context_lines":[{"line_number":527,"context_line":"            ignore_missing\u003dignore_missing,"},{"line_number":528,"context_line":"        )"},{"line_number":529,"context_line":""},{"line_number":530,"context_line":"    def create_secret_consumer(self, secret, **attrs):"},{"line_number":531,"context_line":"        \"\"\"Create a consumer for a secret"},{"line_number":532,"context_line":""},{"line_number":533,"context_line":"        :param secret: Either the id of a secret or a"}],"source_content_type":"text/x-python","patch_set":4,"id":"668d1354_878918f7","line":530,"updated":"2026-06-04 17:37:00.000000000","message":"Could you add annotations to this?\n\n\n\n```suggestion\n    def create_secret_consumer(\n        self, secret: str | _secret.Secret, **attrs: Any\n    ) -\u003e _secret_consumer.SecretConsumer:\n```","commit_id":"f133c9b3e72a89a652e7cc633c0672cc723862cf"},{"author":{"_account_id":39065,"name":"JeongBin Kim","display_name":"JeongBin Kim","email":"jeongvin1999@gmail.com","username":"jeongbin.kim"},"change_message_id":"933c93ce07fd85208b1aaaaf27b81fc6bf3a5748","unresolved":false,"context_lines":[{"line_number":527,"context_line":"            ignore_missing\u003dignore_missing,"},{"line_number":528,"context_line":"        )"},{"line_number":529,"context_line":""},{"line_number":530,"context_line":"    def create_secret_consumer(self, secret, **attrs):"},{"line_number":531,"context_line":"        \"\"\"Create a consumer for a secret"},{"line_number":532,"context_line":""},{"line_number":533,"context_line":"        :param secret: Either the id of a secret or a"}],"source_content_type":"text/x-python","patch_set":4,"id":"dc149c21_f5983fec","line":530,"in_reply_to":"668d1354_878918f7","updated":"2026-06-05 08:40:15.000000000","message":"Done","commit_id":"f133c9b3e72a89a652e7cc633c0672cc723862cf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"14c5f139fb540dfcf2ea1e6420529f0c39749254","unresolved":true,"context_lines":[{"line_number":529,"context_line":""},{"line_number":530,"context_line":"    def create_secret_consumer(self, secret, **attrs):"},{"line_number":531,"context_line":"        \"\"\"Create a consumer for a secret"},{"line_number":532,"context_line":""},{"line_number":533,"context_line":"        :param secret: Either the id of a secret or a"},{"line_number":534,"context_line":"            :class:`~openstack.key_manager.v1.secret.Secret` instance."},{"line_number":535,"context_line":"        :param dict attrs: Must include ``service``, ``resource_type``,"},{"line_number":536,"context_line":"            ``resource_id``."},{"line_number":537,"context_line":"        :returns: The created consumer association"},{"line_number":538,"context_line":"        :rtype:"},{"line_number":539,"context_line":"            :class:`~openstack.key_manager.v1.secret_consumer.SecretConsumer`"},{"line_number":540,"context_line":"        \"\"\""},{"line_number":541,"context_line":"        sid \u003d resource.Resource._get_id(secret)"},{"line_number":542,"context_line":"        if \u0027resource_type\u0027 in attrs:"}],"source_content_type":"text/x-python","patch_set":4,"id":"83d65ee4_8b7cbe79","line":539,"range":{"start_line":532,"start_character":1,"end_line":539,"end_character":77},"updated":"2026-06-04 17:37:00.000000000","message":"```suggestion\n\n        :param secret: Either the id of a secret or a\n            :class:`~openstack.key_manager.v1.secret.Secret` instance.\n        :param attrs: Must include ``service``, ``resource_type``,\n            ``resource_id``.\n        :returns: The created consumer association\n```\n\nLet\u0027s use type annotations instead of the docstring for type info","commit_id":"f133c9b3e72a89a652e7cc633c0672cc723862cf"},{"author":{"_account_id":39065,"name":"JeongBin Kim","display_name":"JeongBin Kim","email":"jeongvin1999@gmail.com","username":"jeongbin.kim"},"change_message_id":"933c93ce07fd85208b1aaaaf27b81fc6bf3a5748","unresolved":false,"context_lines":[{"line_number":529,"context_line":""},{"line_number":530,"context_line":"    def create_secret_consumer(self, secret, **attrs):"},{"line_number":531,"context_line":"        \"\"\"Create a consumer for a secret"},{"line_number":532,"context_line":""},{"line_number":533,"context_line":"        :param secret: Either the id of a secret or a"},{"line_number":534,"context_line":"            :class:`~openstack.key_manager.v1.secret.Secret` instance."},{"line_number":535,"context_line":"        :param dict attrs: Must include ``service``, ``resource_type``,"},{"line_number":536,"context_line":"            ``resource_id``."},{"line_number":537,"context_line":"        :returns: The created consumer association"},{"line_number":538,"context_line":"        :rtype:"},{"line_number":539,"context_line":"            :class:`~openstack.key_manager.v1.secret_consumer.SecretConsumer`"},{"line_number":540,"context_line":"        \"\"\""},{"line_number":541,"context_line":"        sid \u003d resource.Resource._get_id(secret)"},{"line_number":542,"context_line":"        if \u0027resource_type\u0027 in attrs:"}],"source_content_type":"text/x-python","patch_set":4,"id":"911513d0_c19722aa","line":539,"range":{"start_line":532,"start_character":1,"end_line":539,"end_character":77},"in_reply_to":"83d65ee4_8b7cbe79","updated":"2026-06-05 08:40:15.000000000","message":"Done","commit_id":"f133c9b3e72a89a652e7cc633c0672cc723862cf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"14c5f139fb540dfcf2ea1e6420529f0c39749254","unresolved":true,"context_lines":[{"line_number":549,"context_line":"            _secret_consumer.SecretConsumer, secret_id\u003dsid, **attrs"},{"line_number":550,"context_line":"        )"},{"line_number":551,"context_line":""},{"line_number":552,"context_line":"    def delete_secret_consumer(self, secret, ignore_missing\u003dTrue, **attrs):"},{"line_number":553,"context_line":"        \"\"\"Delete a consumer association from a secret"},{"line_number":554,"context_line":""},{"line_number":555,"context_line":"        :param secret: Either the id of a secret or a"}],"source_content_type":"text/x-python","patch_set":4,"id":"16b95a2e_4161810b","line":552,"updated":"2026-06-04 17:37:00.000000000","message":"```suggestion\n    def delete_secret_consumer(\n        self,\n        secret: str | _secret.Secret,\n        ignore_missing: bool \u003d True,\n        **attrs: Any,\n    ) -\u003e None:\n```","commit_id":"f133c9b3e72a89a652e7cc633c0672cc723862cf"},{"author":{"_account_id":39065,"name":"JeongBin Kim","display_name":"JeongBin Kim","email":"jeongvin1999@gmail.com","username":"jeongbin.kim"},"change_message_id":"933c93ce07fd85208b1aaaaf27b81fc6bf3a5748","unresolved":false,"context_lines":[{"line_number":549,"context_line":"            _secret_consumer.SecretConsumer, secret_id\u003dsid, **attrs"},{"line_number":550,"context_line":"        )"},{"line_number":551,"context_line":""},{"line_number":552,"context_line":"    def delete_secret_consumer(self, secret, ignore_missing\u003dTrue, **attrs):"},{"line_number":553,"context_line":"        \"\"\"Delete a consumer association from a secret"},{"line_number":554,"context_line":""},{"line_number":555,"context_line":"        :param secret: Either the id of a secret or a"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a2dae2e_1b776b0e","line":552,"in_reply_to":"16b95a2e_4161810b","updated":"2026-06-05 08:40:15.000000000","message":"Done\nAlso removed the :raises: entry as it was redundant with the :param ignore_missing: description.","commit_id":"f133c9b3e72a89a652e7cc633c0672cc723862cf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"14c5f139fb540dfcf2ea1e6420529f0c39749254","unresolved":true,"context_lines":[{"line_number":578,"context_line":"                return None"},{"line_number":579,"context_line":"            raise"},{"line_number":580,"context_line":""},{"line_number":581,"context_line":"    def secret_consumers(self, secret, **query):"},{"line_number":582,"context_line":"        \"\"\"List consumers for a secret"},{"line_number":583,"context_line":""},{"line_number":584,"context_line":"        :param secret: Either the id of a secret or a"}],"source_content_type":"text/x-python","patch_set":4,"id":"0826517a_ce7dafa2","line":581,"updated":"2026-06-04 17:37:00.000000000","message":"```suggestion\n    def secret_consumers(\n        self, secret: str | _secret.Secret, **query: Any\n    ) -\u003e Generator[_secret_consumer.SecretConsumer, None, None]:\n```","commit_id":"f133c9b3e72a89a652e7cc633c0672cc723862cf"},{"author":{"_account_id":39065,"name":"JeongBin Kim","display_name":"JeongBin Kim","email":"jeongvin1999@gmail.com","username":"jeongbin.kim"},"change_message_id":"933c93ce07fd85208b1aaaaf27b81fc6bf3a5748","unresolved":false,"context_lines":[{"line_number":578,"context_line":"                return None"},{"line_number":579,"context_line":"            raise"},{"line_number":580,"context_line":""},{"line_number":581,"context_line":"    def secret_consumers(self, secret, **query):"},{"line_number":582,"context_line":"        \"\"\"List consumers for a secret"},{"line_number":583,"context_line":""},{"line_number":584,"context_line":"        :param secret: Either the id of a secret or a"}],"source_content_type":"text/x-python","patch_set":4,"id":"4988bea9_582e1cbf","line":581,"in_reply_to":"0826517a_ce7dafa2","updated":"2026-06-05 08:40:15.000000000","message":"Done","commit_id":"f133c9b3e72a89a652e7cc633c0672cc723862cf"}],"openstack/key_manager/v1/secret_consumer.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9d05793ca49eb080dd250ad9ea0c11eb2b37ae16","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":2,"context_line":"# not use this file except in compliance with the License. You may obtain"},{"line_number":3,"context_line":"# a copy of the License at"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":3,"id":"bb5f1e67_52d985d9","line":1,"updated":"2025-09-09 21:42:02.000000000","message":"D","commit_id":"62335fc0c3162375383e611e38f44b4b32cf5fe6"},{"author":{"_account_id":39065,"name":"JeongBin Kim","display_name":"JeongBin Kim","email":"jeongvin1999@gmail.com","username":"jeongbin.kim"},"change_message_id":"86b7eae9c4df445df6f57f1a8c8279e98fedd231","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":2,"context_line":"# not use this file except in compliance with the License. You may obtain"},{"line_number":3,"context_line":"# a copy of the License at"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":3,"id":"20b90e72_b2a635e9","line":1,"in_reply_to":"bb5f1e67_52d985d9","updated":"2026-06-03 14:40:41.000000000","message":"Done","commit_id":"62335fc0c3162375383e611e38f44b4b32cf5fe6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9d05793ca49eb080dd250ad9ea0c11eb2b37ae16","unresolved":true,"context_lines":[{"line_number":21,"context_line":"    allow_delete \u003d True"},{"line_number":22,"context_line":"    allow_list \u003d True"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    # DELETE on this endpoint uses a body and does not target a specific id"},{"line_number":25,"context_line":"    requires_id \u003d False"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    # URI parameters"}],"source_content_type":"text/x-python","patch_set":3,"id":"edc71c94_7f8ca2fe","line":24,"updated":"2025-09-09 21:42:02.000000000","message":"Do you need to define this when you\u0027re overriding `delete` below?","commit_id":"62335fc0c3162375383e611e38f44b4b32cf5fe6"},{"author":{"_account_id":39065,"name":"JeongBin Kim","display_name":"JeongBin Kim","email":"jeongvin1999@gmail.com","username":"jeongbin.kim"},"change_message_id":"86b7eae9c4df445df6f57f1a8c8279e98fedd231","unresolved":false,"context_lines":[{"line_number":21,"context_line":"    allow_delete \u003d True"},{"line_number":22,"context_line":"    allow_list \u003d True"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    # DELETE on this endpoint uses a body and does not target a specific id"},{"line_number":25,"context_line":"    requires_id \u003d False"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    # URI parameters"}],"source_content_type":"text/x-python","patch_set":3,"id":"2c45cb22_cbbc03df","line":24,"in_reply_to":"edc71c94_7f8ca2fe","updated":"2026-06-03 14:40:41.000000000","message":"This is needed now. Secret consumers do not have a separate ID in the URL; the endpoint is /secrets/{secret_id}/consumers. \nSince _raw_delete() now lets _prepare_request use the resource-level requires_id value, requires_id\u003dFalse prevents it from requiring or appending an ID.","commit_id":"62335fc0c3162375383e611e38f44b4b32cf5fe6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"14c5f139fb540dfcf2ea1e6420529f0c39749254","unresolved":true,"context_lines":[{"line_number":32,"context_line":"    resource_type \u003d resource.Body(\u0027resource_type\u0027)"},{"line_number":33,"context_line":"    resource_id \u003d resource.Body(\u0027resource_id\u0027)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def _raw_delete(self, session, microversion\u003dNone, **attrs):"},{"line_number":36,"context_line":"        \"\"\"Custom raw_delete method for Barbican consumers."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        Barbican requires DELETE requests to include a JSON body with"}],"source_content_type":"text/x-python","patch_set":4,"id":"e96bbbcf_14159fa2","line":35,"updated":"2026-06-04 17:37:00.000000000","message":"```suggestion\n    def _raw_delete(\n        self,\n        session: adapter.Adapter,\n        microversion: str | None \u003d None,\n        **attrs: Any,\n    ) -\u003e requests.Response:\n```\n\n(you\u0027ll need to add `from keystoneauth1 import adapter` and `import requests` above)","commit_id":"f133c9b3e72a89a652e7cc633c0672cc723862cf"},{"author":{"_account_id":39065,"name":"JeongBin Kim","display_name":"JeongBin Kim","email":"jeongvin1999@gmail.com","username":"jeongbin.kim"},"change_message_id":"933c93ce07fd85208b1aaaaf27b81fc6bf3a5748","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    resource_type \u003d resource.Body(\u0027resource_type\u0027)"},{"line_number":33,"context_line":"    resource_id \u003d resource.Body(\u0027resource_id\u0027)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def _raw_delete(self, session, microversion\u003dNone, **attrs):"},{"line_number":36,"context_line":"        \"\"\"Custom raw_delete method for Barbican consumers."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        Barbican requires DELETE requests to include a JSON body with"}],"source_content_type":"text/x-python","patch_set":4,"id":"e2bb234f_124071b4","line":35,"in_reply_to":"e96bbbcf_14159fa2","updated":"2026-06-05 08:40:15.000000000","message":"Done","commit_id":"f133c9b3e72a89a652e7cc633c0672cc723862cf"}],"openstack/tests/unit/key_manager/v1/test_proxy.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"14c5f139fb540dfcf2ea1e6420529f0c39749254","unresolved":true,"context_lines":[{"line_number":10,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"# under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"from openstack.key_manager.v1 import _proxy"},{"line_number":15,"context_line":"from openstack.key_manager.v1 import container"},{"line_number":16,"context_line":"from openstack.key_manager.v1 import order"}],"source_content_type":"text/x-python","patch_set":4,"id":"97f38027_27c15ac8","line":13,"updated":"2026-06-04 17:37:00.000000000","message":"nit: let\u0027s drop this","commit_id":"f133c9b3e72a89a652e7cc633c0672cc723862cf"},{"author":{"_account_id":39065,"name":"JeongBin Kim","display_name":"JeongBin Kim","email":"jeongvin1999@gmail.com","username":"jeongbin.kim"},"change_message_id":"933c93ce07fd85208b1aaaaf27b81fc6bf3a5748","unresolved":false,"context_lines":[{"line_number":10,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"# under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"from openstack.key_manager.v1 import _proxy"},{"line_number":15,"context_line":"from openstack.key_manager.v1 import container"},{"line_number":16,"context_line":"from openstack.key_manager.v1 import order"}],"source_content_type":"text/x-python","patch_set":4,"id":"28126c8c_fb31e4e2","line":13,"in_reply_to":"97f38027_27c15ac8","updated":"2026-06-05 08:40:15.000000000","message":"Done","commit_id":"f133c9b3e72a89a652e7cc633c0672cc723862cf"}]}
