)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b5d583da07c8693641e7a790b4b4ef93eaad61d5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"f4ee6a2a_4a5f062b","updated":"2025-11-12 12:54:33.000000000","message":"I have some small comments inline. Could we also get a functional tests and a release note for this, please?","commit_id":"a421df8128da0ac03867c621dfab55cf7afb4572"},{"author":{"_account_id":23279,"name":"Seongsoo Cho","display_name":"Seongsoo Cho","email":"ppiyakk2@printf.kr","username":"seongsoo.cho"},"change_message_id":"4cdc750e10153fc1a3a2c2c3591ede98b96a35c2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"92511d0a_4cb68d83","updated":"2026-05-19 14:44:45.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":"a421df8128da0ac03867c621dfab55cf7afb4572"},{"author":{"_account_id":39093,"name":"JunsuLee","display_name":"jungu","email":"ljs21008@naver.com","username":"jungu"},"change_message_id":"1451f3be16e70ce085cd3dacd77767e6d157c4bb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"8847637e_9017e49f","updated":"2026-06-02 16:01:14.000000000","message":"-Removed the users/project_access shorthand. The ACL body is now passed through to the resource directly.\n-Corrected the resource handling: the parent container ID is supplied as the container_id URI attribute (previously the request URI could not be constructed), and ContainerACL is registered in the proxy resource registry. The resource is modelled as a singleton at /containers/\u003ccontainer_id\u003e/acl, using PUT for create/replace and PATCH for update.\n-Added a functional test and a release note.","commit_id":"d4beded332ced01ca30b0d7d219daf6a15bf7490"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"cfbf299dc9d8183c468fd23e8db03f76f3a32d51","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"2dc75de9_305cffb5","updated":"2026-06-04 17:54:59.000000000","message":"Couple of requests. Can you also update the `doc/source/user/proxies/key_manager.rst` doc and add a new `doc/source/user/resources/key_manager/v1/container_acl.rst` document (which will need to be referenced from `doc/source/user/resources/key_manager/index.rst`)","commit_id":"d4beded332ced01ca30b0d7d219daf6a15bf7490"}],"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":"b5d583da07c8693641e7a790b4b4ef93eaad61d5","unresolved":true,"context_lines":[{"line_number":300,"context_line":"        container \u003d self._get_resource(_container.Container, container)"},{"line_number":301,"context_line":"        attrs[\u0027container_id\u0027] \u003d container.id"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"        # Handle shorthand parameters"},{"line_number":304,"context_line":"        if \u0027users\u0027 in attrs or \u0027project_access\u0027 in attrs:"},{"line_number":305,"context_line":"            read_settings \u003d {}"},{"line_number":306,"context_line":"            if \u0027users\u0027 in attrs:"},{"line_number":307,"context_line":"                read_settings[\u0027users\u0027] \u003d attrs.pop(\u0027users\u0027)"},{"line_number":308,"context_line":"            if \u0027project_access\u0027 in attrs:"},{"line_number":309,"context_line":"                read_settings[\u0027project-access\u0027] \u003d attrs.pop(\u0027project_access\u0027)"},{"line_number":310,"context_line":"            attrs[\u0027read\u0027] \u003d read_settings"},{"line_number":311,"context_line":"        elif \u0027read\u0027 not in attrs:"},{"line_number":312,"context_line":"            # Default settings"},{"line_number":313,"context_line":"            attrs[\u0027read\u0027] \u003d {\u0027project-access\u0027: True}"},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"        return self._create(_container_acl.ContainerACL, container.id, **attrs)"},{"line_number":316,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3bd1ba29_4961d8fd","line":313,"range":{"start_line":303,"start_character":0,"end_line":313,"end_character":52},"updated":"2025-11-12 12:54:33.000000000","message":"I don\u0027t believe this is our responsibility. I think it would be better to insist users provide this data themselves, personally.","commit_id":"a421df8128da0ac03867c621dfab55cf7afb4572"},{"author":{"_account_id":39093,"name":"JunsuLee","display_name":"jungu","email":"ljs21008@naver.com","username":"jungu"},"change_message_id":"1451f3be16e70ce085cd3dacd77767e6d157c4bb","unresolved":false,"context_lines":[{"line_number":300,"context_line":"        container \u003d self._get_resource(_container.Container, container)"},{"line_number":301,"context_line":"        attrs[\u0027container_id\u0027] \u003d container.id"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"        # Handle shorthand parameters"},{"line_number":304,"context_line":"        if \u0027users\u0027 in attrs or \u0027project_access\u0027 in attrs:"},{"line_number":305,"context_line":"            read_settings \u003d {}"},{"line_number":306,"context_line":"            if \u0027users\u0027 in attrs:"},{"line_number":307,"context_line":"                read_settings[\u0027users\u0027] \u003d attrs.pop(\u0027users\u0027)"},{"line_number":308,"context_line":"            if \u0027project_access\u0027 in attrs:"},{"line_number":309,"context_line":"                read_settings[\u0027project-access\u0027] \u003d attrs.pop(\u0027project_access\u0027)"},{"line_number":310,"context_line":"            attrs[\u0027read\u0027] \u003d read_settings"},{"line_number":311,"context_line":"        elif \u0027read\u0027 not in attrs:"},{"line_number":312,"context_line":"            # Default settings"},{"line_number":313,"context_line":"            attrs[\u0027read\u0027] \u003d {\u0027project-access\u0027: True}"},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"        return self._create(_container_acl.ContainerACL, container.id, **attrs)"},{"line_number":316,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"04f6d263_4b25ce47","line":313,"range":{"start_line":303,"start_character":0,"end_line":313,"end_character":52},"in_reply_to":"3bd1ba29_4961d8fd","updated":"2026-06-02 16:01:14.000000000","message":"Done","commit_id":"a421df8128da0ac03867c621dfab55cf7afb4572"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b5d583da07c8693641e7a790b4b4ef93eaad61d5","unresolved":true,"context_lines":[{"line_number":328,"context_line":"        container \u003d self._get_resource(_container.Container, container)"},{"line_number":329,"context_line":"        attrs[\u0027container_id\u0027] \u003d container.id"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"        # Handle shorthand parameters"},{"line_number":332,"context_line":"        if \u0027users\u0027 in attrs:"},{"line_number":333,"context_line":"            attrs[\u0027read\u0027] \u003d {\u0027users\u0027: attrs.pop(\u0027users\u0027)}"},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"        return self._update(_container_acl.ContainerACL, container.id, **attrs)"},{"line_number":336,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"caa75b13_de3d41ed","line":333,"range":{"start_line":331,"start_character":0,"end_line":333,"end_character":57},"updated":"2025-11-12 12:54:33.000000000","message":"ditto","commit_id":"a421df8128da0ac03867c621dfab55cf7afb4572"},{"author":{"_account_id":39093,"name":"JunsuLee","display_name":"jungu","email":"ljs21008@naver.com","username":"jungu"},"change_message_id":"1451f3be16e70ce085cd3dacd77767e6d157c4bb","unresolved":false,"context_lines":[{"line_number":328,"context_line":"        container \u003d self._get_resource(_container.Container, container)"},{"line_number":329,"context_line":"        attrs[\u0027container_id\u0027] \u003d container.id"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"        # Handle shorthand parameters"},{"line_number":332,"context_line":"        if \u0027users\u0027 in attrs:"},{"line_number":333,"context_line":"            attrs[\u0027read\u0027] \u003d {\u0027users\u0027: attrs.pop(\u0027users\u0027)}"},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"        return self._update(_container_acl.ContainerACL, container.id, **attrs)"},{"line_number":336,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"33eb4c1c_62981ed9","line":333,"range":{"start_line":331,"start_character":0,"end_line":333,"end_character":57},"in_reply_to":"caa75b13_de3d41ed","updated":"2026-06-02 16:01:14.000000000","message":"Done","commit_id":"a421df8128da0ac03867c621dfab55cf7afb4572"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"cfbf299dc9d8183c468fd23e8db03f76f3a32d51","unresolved":true,"context_lines":[{"line_number":348,"context_line":"        \"\"\""},{"line_number":349,"context_line":"        return self._update(_secret.Secret, secret, **attrs)"},{"line_number":350,"context_line":""},{"line_number":351,"context_line":"    def get_container_acl(self, container):"},{"line_number":352,"context_line":"        \"\"\"Get a container\u0027s ACL settings"},{"line_number":353,"context_line":""},{"line_number":354,"context_line":"        :param container: The value can be the ID of a container or a"}],"source_content_type":"text/x-python","patch_set":3,"id":"77b8b5ca_15c05542","line":351,"updated":"2026-06-04 17:54:59.000000000","message":"Can you add types for these methods? This one would be:\n\n```suggestion\n    def get_container_acl(\n        self, container: str | _container.Container\n    ) -\u003e _container_acl.ContainerACL:\n```\n\nLook at the rest of this file for inspiration on how to do this for other methods.","commit_id":"d4beded332ced01ca30b0d7d219daf6a15bf7490"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"cfbf299dc9d8183c468fd23e8db03f76f3a32d51","unresolved":true,"context_lines":[{"line_number":354,"context_line":"        :param container: The value can be the ID of a container or a"},{"line_number":355,"context_line":"            :class:`~openstack.key_manager.v1.container.Container` instance."},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"        :returns: One container ACL"},{"line_number":358,"context_line":"        :rtype: :class:`~openstack.key_manager.v1.container_acl.ContainerACL`"},{"line_number":359,"context_line":"        \"\"\""},{"line_number":360,"context_line":"        container \u003d self._get_resource(_container.Container, container)"},{"line_number":361,"context_line":"        return self._get("}],"source_content_type":"text/x-python","patch_set":3,"id":"6f9328f9_f2bb9495","line":358,"range":{"start_line":357,"start_character":0,"end_line":358,"end_character":77},"updated":"2026-06-04 17:54:59.000000000","message":"You can drop type information from the docstring also\n\n```suggestion\n        :returns: One container ACL\n```","commit_id":"d4beded332ced01ca30b0d7d219daf6a15bf7490"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"cfbf299dc9d8183c468fd23e8db03f76f3a32d51","unresolved":true,"context_lines":[{"line_number":407,"context_line":""},{"line_number":408,"context_line":"        :param container: The value can be the ID of a container or a"},{"line_number":409,"context_line":"            :class:`~openstack.key_manager.v1.container.Container` instance."},{"line_number":410,"context_line":"        :param bool ignore_missing: When set to ``False``"},{"line_number":411,"context_line":"            :class:`~openstack.exceptions.NotFoundException` will be"},{"line_number":412,"context_line":"            raised when the container does not exist."},{"line_number":413,"context_line":"            When set to ``True``, no exception will be set when"}],"source_content_type":"text/x-python","patch_set":3,"id":"d3b5df4f_5180a643","line":410,"updated":"2026-06-04 17:54:59.000000000","message":"```suggestion\n        :param ignore_missing: When set to ``False``\n```","commit_id":"d4beded332ced01ca30b0d7d219daf6a15bf7490"}],"openstack/key_manager/v1/container_acl.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"cfbf299dc9d8183c468fd23e8db03f76f3a32d51","unresolved":true,"context_lines":[{"line_number":27,"context_line":"    # (/containers/\u003ccontainer_id\u003e/acl); it is never addressed by an id of"},{"line_number":28,"context_line":"    # its own. Barbican creates/replaces the ACL with a PUT and partially"},{"line_number":29,"context_line":"    # updates it with a PATCH."},{"line_number":30,"context_line":"    create_method \u003d \u0027PUT\u0027"},{"line_number":31,"context_line":"    create_requires_id \u003d False"},{"line_number":32,"context_line":"    commit_method \u003d \u0027PATCH\u0027"},{"line_number":33,"context_line":"    requires_id \u003d False"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"f9f00759_d02772b5","line":31,"range":{"start_line":30,"start_character":0,"end_line":31,"end_character":30},"updated":"2026-06-04 17:54:59.000000000","message":"This variable is going away shortly, as of https://review.opendev.org/c/openstack/openstacksdk/+/990028. Can you rework this accordingly See https://review.opendev.org/c/openstack/openstacksdk/+/990028/2/openstack/identity/v3/domain_config.py for inspiration\n\n```suggestion\n    create_opts \u003d resource.CreateOpts(method\u003d\u0027PUT\u0027, requires_id\u003dFalse)\n```","commit_id":"d4beded332ced01ca30b0d7d219daf6a15bf7490"}]}
