)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"34228582873f75112aadfca7dac3544433f55c36","unresolved":true,"context_lines":[{"line_number":7,"context_line":"Add Barbican secret store migrate helper"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Expose Secret.migrate_store and Proxy.migrate_secret_store for"},{"line_number":10,"context_line":"key-manager microversion 1.3 (OSPRH-35261)."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Partial-Bug: #2164792"},{"line_number":13,"context_line":"Assisted-by: Cursor Grok 4.6"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"7dc21519_57d33c46","line":10,"updated":"2026-08-26 10:08:05.000000000","message":"This is a downstream tracker and doesn\u0027t belong in an upstream change. Let\u0027s drop this","commit_id":"fa6650d915340f47b802179502ceb7157229add2"},{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"b1fa2457a5a7796257eda1186e850eef6448582d","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add Barbican secret store migrate helper"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Expose Secret.migrate_store and Proxy.migrate_secret_store for"},{"line_number":10,"context_line":"key-manager microversion 1.3 (OSPRH-35261)."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Partial-Bug: #2164792"},{"line_number":13,"context_line":"Assisted-by: Cursor Grok 4.6"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"cabf07a5_ee33ae60","line":10,"in_reply_to":"7dc21519_57d33c46","updated":"2026-10-02 18:37:27.000000000","message":"Done","commit_id":"fa6650d915340f47b802179502ceb7157229add2"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":35125,"name":"Mauricio Harley","email":"mharley@redhat.com","username":"mharley-rh"},"change_message_id":"1e9e952fa94cb29c593654a08e648c99abcef026","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"856edfb7_4994a2c9","updated":"2026-08-27 16:31:04.000000000","message":"Agree with Stephen\u0027s comments, especially on the store identifier design.  Let\u0027s settle that on the barbican side (1002398) first since it defines the wire contract, then this can follow.","commit_id":"fa6650d915340f47b802179502ceb7157229add2"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ed200b060d224b98eaa05e6f2eef7a095ccd7497","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"7961ab90_9e080aba","updated":"2026-09-17 11:31:31.000000000","message":"I was just coming here to ask that you leave this as WIP until the barbican change lands (since it means I don\u0027t get emails about it) but it seems you\u0027ve realised that already 😀","commit_id":"4758330fd7b0b663338fe28d196da94f909c675c"},{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"57712b4e1a339b9f6fd5b4f8c40a1dd9bdc875ba","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"8261870c_e2576289","updated":"2026-09-11 18:49:20.000000000","message":"waiting on server patches to be merged.","commit_id":"4758330fd7b0b663338fe28d196da94f909c675c"},{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"2dce1505a69be67ed2b0a8f8294da5fa8c996ded","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"a9ed9f73_320bdbb4","updated":"2026-10-07 20:41:11.000000000","message":"@vfisarov@redhat.com , @xek@redhat.com - I just did a rebase.  No changes from what was before.  Please re-review.","commit_id":"3619c2b93d1915780f12cc9246f4953eac9713ac"},{"author":{"_account_id":34120,"name":"Andre Aranha","display_name":"afariasa","email":"afariasa@redhat.com","username":"afariasa"},"change_message_id":"5d60b03d8a6da891e5bd3faa62a9ed0f74cc58f2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"fd808635_49e16c02","updated":"2026-10-08 11:35:46.000000000","message":"Looks good, just one very minor note.","commit_id":"3619c2b93d1915780f12cc9246f4953eac9713ac"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"221e29c4b00e5ec407e7629752906805222b64b8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"57aba932_edd06970","updated":"2026-10-13 17:11:30.000000000","message":"This look good to me now. Thanks for the quick turnaround here 🙏","commit_id":"d110918c3119ce6a6bd1832676b92bc4d9ba25ca"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b99721f8406f74ff2663a2e0c94cc34382365745","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"84808ce5_1425b9f3","updated":"2026-10-20 14:25:04.000000000","message":"The issue with microversions presumably applies to all Barbican resources, and we\u0027re only hitting it here since this is the first time that we\u0027ve attempted to do something microversion-specific. We don\u0027t need to fix all resources now, but can you at least split that change out into a separate, backportable precursor commit? One question and one request inline","commit_id":"02a5390ce7268d1f5481c106bb8a8eb8ac9d7a53"},{"author":{"_account_id":35059,"name":"Veronika Fisarova","display_name":"vfisarov","email":"vfisarov@redhat.com","username":"vfisarov"},"change_message_id":"3b0ebcf34f6862a9c46188de4b9930b9afe879b1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"af950985_21af70a1","updated":"2026-10-20 07:58:53.000000000","message":"https://review.opendev.org/c/openstack/ironic/+/1010992 needed for openstacksdk-functional-devstack-ironic to pass","commit_id":"02a5390ce7268d1f5481c106bb8a8eb8ac9d7a53"},{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"a9aefee76373848db5dacca9ca3643ece5c68104","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"6e0ef1e7_1f8b3d6d","updated":"2026-10-20 13:09:35.000000000","message":"recheck","commit_id":"02a5390ce7268d1f5481c106bb8a8eb8ac9d7a53"},{"author":{"_account_id":35059,"name":"Veronika Fisarova","display_name":"vfisarov","email":"vfisarov@redhat.com","username":"vfisarov"},"change_message_id":"8c479bafa70b0976627de47097ff2913aa5f68a2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"7ff28ac5_e53c4383","updated":"2026-10-20 06:14:55.000000000","message":"recheck","commit_id":"02a5390ce7268d1f5481c106bb8a8eb8ac9d7a53"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"497a16af3051e9a399e5a0f71752c9f777979318","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"ad6b57cb_a07fe032","in_reply_to":"84808ce5_1425b9f3","updated":"2026-10-20 14:26:51.000000000","message":"Also, the fix for this really belongs in keystoneauth. I\u0027m okay with a workaround in openstacksdk for now (since that allows us to backport the fix) but I\u0027d like to see a follow-up for this in ksa after. I won\u0027t block on that though, since I\u0027m aware you\u0027re eager to get this in pretty quickly.","commit_id":"02a5390ce7268d1f5481c106bb8a8eb8ac9d7a53"},{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"982aa1b18427874fae74eda6a3f3967e03dc91ef","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"0bd47f64_ccfd440b","updated":"2026-10-20 19:23:57.000000000","message":"Split has been completed as requested.  Definitely a good idea.\n\nIt turns out that this would have affected the new fields on the secret added for consumers in version 1.1 - if we had actually added support for those fields in openstacksdk.  We added support for various CRUD, but not for the extra secret fields.\n\nIn any case, we can backport the dependent microversion fix patch, and add (and backport) the missing consumers field as a separate follow-up.\n\nI will initiate a change in keystoneauth for this next week.","commit_id":"029ebde41c6e3c5c0cbfc1cd248c8f592b2c7c63"},{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"07451556ba6c61391e520fd37dd2c011ca2b60a2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"2d51218c_b627ebba","updated":"2026-10-21 01:48:46.000000000","message":"recheck","commit_id":"029ebde41c6e3c5c0cbfc1cd248c8f592b2c7c63"}],"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":"34228582873f75112aadfca7dac3544433f55c36","unresolved":true,"context_lines":[{"line_number":353,"context_line":"        self,"},{"line_number":354,"context_line":"        secret: str | _secret.Secret,"},{"line_number":355,"context_line":"        secret_store: str | _secret_store.SecretStore | None \u003d None,"},{"line_number":356,"context_line":"        *,"},{"line_number":357,"context_line":"        secret_store_id: str | None \u003d None,"},{"line_number":358,"context_line":"        secret_store_ref: str | None \u003d None,"},{"line_number":359,"context_line":"    ) -\u003e None:"},{"line_number":360,"context_line":"        \"\"\"Migrate a secret to another secret store."},{"line_number":361,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"280df021_27bf357c","line":358,"range":{"start_line":356,"start_character":10,"end_line":358,"end_character":44},"updated":"2026-08-26 10:08:05.000000000","message":"These feels redundant. From the [API ref](https://docs.openstack.org/barbican/latest/api/reference/store_backends.html) and [SecretStore implementation](https://github.com/openstack/openstacksdk/blob/d8c5453619f9212aa3579d6ba9ef978967a072d2/openstack/key_manager/v1/secret_store.py#L47-L52), it seems secret stores responses don\u0027t have an explicit `id` field and are identified by their href via the `secret_store_ref` field.\n\nThis being the case, shouldn\u0027t the `secret_store` argument cover both cases: either a user provides a `SecretStore` instance with the `secret_store_id` field populated (which is a href) or the `id` field artificially populated (since it will never be populated from an API response, given the lack of an `id` field), *or* they provide a string which would have to be either a href or a UUID. It should be pretty simple to disambiguate between a UUID and href, so can we drop these arguments, make `secret_store` non-nullable and update the docstring to indicate what we accept?","commit_id":"fa6650d915340f47b802179502ceb7157229add2"},{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"d78df0b01b594a23b174ad4521bf6d23798422af","unresolved":false,"context_lines":[{"line_number":353,"context_line":"        self,"},{"line_number":354,"context_line":"        secret: str | _secret.Secret,"},{"line_number":355,"context_line":"        secret_store: str | _secret_store.SecretStore | None \u003d None,"},{"line_number":356,"context_line":"        *,"},{"line_number":357,"context_line":"        secret_store_id: str | None \u003d None,"},{"line_number":358,"context_line":"        secret_store_ref: str | None \u003d None,"},{"line_number":359,"context_line":"    ) -\u003e None:"},{"line_number":360,"context_line":"        \"\"\"Migrate a secret to another secret store."},{"line_number":361,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3031bee3_001f7e95","line":358,"range":{"start_line":356,"start_character":10,"end_line":358,"end_character":44},"in_reply_to":"280df021_27bf357c","updated":"2026-10-06 20:10:46.000000000","message":"This has been resolved in the current patch sets.","commit_id":"fa6650d915340f47b802179502ceb7157229add2"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"64f09b32edfab43294c1809a2a20393f0181663e","unresolved":true,"context_lines":[{"line_number":390,"context_line":"            instance."},{"line_number":391,"context_line":""},{"line_number":392,"context_line":"        :returns: None"},{"line_number":393,"context_line":"        \"\"\""},{"line_number":394,"context_line":"        res \u003d self._get_resource(_secret.Secret, secret)"},{"line_number":395,"context_line":"        res.migrate_store(self, secret_store)"},{"line_number":396,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1558562d_1a9d0add","line":393,"updated":"2026-10-09 11:14:34.000000000","message":"Would it make sense to check this? We do this for e.g. cinder currently.\n\n```suggestion\n        \"\"\"\n        if not utils.supports_microversion(self, \u00271.3\u0027):\n            raise exceptions.SDKException(\n                \"Migrate secret store requires at least microversion 1.3\"\n            )\n```","commit_id":"3619c2b93d1915780f12cc9246f4953eac9713ac"},{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"18bc3fe56a657cae1ac6fba499f3364f5556e01c","unresolved":false,"context_lines":[{"line_number":390,"context_line":"            instance."},{"line_number":391,"context_line":""},{"line_number":392,"context_line":"        :returns: None"},{"line_number":393,"context_line":"        \"\"\""},{"line_number":394,"context_line":"        res \u003d self._get_resource(_secret.Secret, secret)"},{"line_number":395,"context_line":"        res.migrate_store(self, secret_store)"},{"line_number":396,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"0f23e80b_414c0374","line":393,"in_reply_to":"1558562d_1a9d0add","updated":"2026-10-09 20:38:33.000000000","message":"Done","commit_id":"3619c2b93d1915780f12cc9246f4953eac9713ac"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b99721f8406f74ff2663a2e0c94cc34382365745","unresolved":true,"context_lines":[{"line_number":422,"context_line":"            )"},{"line_number":423,"context_line":"        store_id \u003d _normalize_secret_store_id(secret_store)"},{"line_number":424,"context_line":"        res \u003d self._get_resource(_secret.Secret, secret)"},{"line_number":425,"context_line":"        res.migrate_store(self, store_id, microversion\u003d\u00271.3\u0027)"},{"line_number":426,"context_line":""},{"line_number":427,"context_line":"    # \u003d\u003d\u003d\u003d\u003d\u003d Container ACLs \u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":428,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"d0053cbf_203887f4","line":425,"updated":"2026-10-20 14:25:04.000000000","message":"This shouldn\u0027t be necessary as we should consume the `_max_microversion` attribute still. Is that not true?","commit_id":"02a5390ce7268d1f5481c106bb8a8eb8ac9d7a53"},{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"3609abd67b004ef5670b031b78b227944f786b6a","unresolved":false,"context_lines":[{"line_number":422,"context_line":"            )"},{"line_number":423,"context_line":"        store_id \u003d _normalize_secret_store_id(secret_store)"},{"line_number":424,"context_line":"        res \u003d self._get_resource(_secret.Secret, secret)"},{"line_number":425,"context_line":"        res.migrate_store(self, store_id, microversion\u003d\u00271.3\u0027)"},{"line_number":426,"context_line":""},{"line_number":427,"context_line":"    # \u003d\u003d\u003d\u003d\u003d\u003d Container ACLs \u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":428,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"0dfc591c_0d88e518","line":425,"in_reply_to":"d0053cbf_203887f4","updated":"2026-10-20 19:18:08.000000000","message":"Done","commit_id":"02a5390ce7268d1f5481c106bb8a8eb8ac9d7a53"}],"openstack/key_manager/v1/secret.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"34228582873f75112aadfca7dac3544433f55c36","unresolved":true,"context_lines":[{"line_number":158,"context_line":"            body[\u0027secret_store_id\u0027] \u003d secret_store_id"},{"line_number":159,"context_line":"        if secret_store_ref is not None:"},{"line_number":160,"context_line":"            body[\u0027secret_store_ref\u0027] \u003d secret_store_ref"},{"line_number":161,"context_line":"        session.put(url, json\u003dbody, microversion\u003d\u00271.3\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"10c1c201_3883246c","line":161,"updated":"2026-08-26 10:08:05.000000000","message":"I\u0027m not able to find any docs on this in either the [secret stores](https://docs.openstack.org/barbican/latest/api/reference/store_backends.html) or [secrets](https://docs.openstack.org/barbican/latest/api/reference/secret_types.html) API refs. Is that a gap in the barbican docs or have I missed something?\n\nAlso, as an API consumer, it\u0027s weird that this API takes an `secret_store_id` field and `GET /v1/secret-stores/{uuid}` expects an UUID despite neither `GET /v1/secret-stores` not `GET /v1/secret-stores/{uuid}` exposing said ID. Might be one to address for a future API microversion?","commit_id":"fa6650d915340f47b802179502ceb7157229add2"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"55c666d6a378c03b8e45a16a2b62b32ebb380900","unresolved":true,"context_lines":[{"line_number":158,"context_line":"            body[\u0027secret_store_id\u0027] \u003d secret_store_id"},{"line_number":159,"context_line":"        if secret_store_ref is not None:"},{"line_number":160,"context_line":"            body[\u0027secret_store_ref\u0027] \u003d secret_store_ref"},{"line_number":161,"context_line":"        session.put(url, json\u003dbody, microversion\u003d\u00271.3\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"8ac8ef86_3cc8961b","line":161,"in_reply_to":"10c1c201_3883246c","updated":"2026-08-26 10:09:06.000000000","message":"Later: I now realise this is WIP and [dependent on a barbican change](https://review.opendev.org/c/openstack/barbican/+/1002398).","commit_id":"fa6650d915340f47b802179502ceb7157229add2"},{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"d78df0b01b594a23b174ad4521bf6d23798422af","unresolved":false,"context_lines":[{"line_number":158,"context_line":"            body[\u0027secret_store_id\u0027] \u003d secret_store_id"},{"line_number":159,"context_line":"        if secret_store_ref is not None:"},{"line_number":160,"context_line":"            body[\u0027secret_store_ref\u0027] \u003d secret_store_ref"},{"line_number":161,"context_line":"        session.put(url, json\u003dbody, microversion\u003d\u00271.3\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"8b9ae8bc_3400f357","line":161,"in_reply_to":"8ac8ef86_3cc8961b","updated":"2026-10-06 20:10:46.000000000","message":"barbican code has merged","commit_id":"fa6650d915340f47b802179502ceb7157229add2"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"64f09b32edfab43294c1809a2a20393f0181663e","unresolved":true,"context_lines":[{"line_number":28,"context_line":"    allow_fetch \u003d True"},{"line_number":29,"context_line":"    allow_commit \u003d True"},{"line_number":30,"context_line":"    allow_delete \u003d True"},{"line_number":31,"context_line":"    allow_list \u003d True"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    _query_mapping \u003d resource.QueryParameters("},{"line_number":34,"context_line":"        \"name\","}],"source_content_type":"text/x-python","patch_set":7,"id":"a0394f45_a2c96426","line":31,"updated":"2026-10-09 11:14:34.000000000","message":"If you add `_min_microversion`, SDK will select this version by default unless the server doesn\u0027t support it or a user explicitly requests a different version\n\n```suggestion\n    allow_list \u003d True\n    \n    _min_microversion \u003d \u00271.3\u0027\n```","commit_id":"3619c2b93d1915780f12cc9246f4953eac9713ac"},{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"18bc3fe56a657cae1ac6fba499f3364f5556e01c","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    allow_fetch \u003d True"},{"line_number":29,"context_line":"    allow_commit \u003d True"},{"line_number":30,"context_line":"    allow_delete \u003d True"},{"line_number":31,"context_line":"    allow_list \u003d True"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    _query_mapping \u003d resource.QueryParameters("},{"line_number":34,"context_line":"        \"name\","}],"source_content_type":"text/x-python","patch_set":7,"id":"e29b15bc_7b272910","line":31,"in_reply_to":"a0394f45_a2c96426","updated":"2026-10-09 20:38:33.000000000","message":"Yeah - its actually _max_microversion - which was a little confusing to me till I examined the code and get my AI minion to explain it to me.  Anyways, we use this now,","commit_id":"3619c2b93d1915780f12cc9246f4953eac9713ac"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f1f56411d735096d80c9d180673f83f57563c3a0","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    allow_fetch \u003d True"},{"line_number":29,"context_line":"    allow_commit \u003d True"},{"line_number":30,"context_line":"    allow_delete \u003d True"},{"line_number":31,"context_line":"    allow_list \u003d True"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    _query_mapping \u003d resource.QueryParameters("},{"line_number":34,"context_line":"        \"name\","}],"source_content_type":"text/x-python","patch_set":7,"id":"23fd2df7_69bf770f","line":31,"in_reply_to":"e29b15bc_7b272910","updated":"2026-10-09 21:09:49.000000000","message":"Sorry, mix up on my end: we don\u0027t have a `_min_microversion` opt (yet) so we use `_max_microversion` to ensure we request \"at least this version by default\" for resources that were added in a non `.0` / `.1` microversion. Good thing I didn\u0027t leave my comment about `_min_microversion` being badly named... 🤦","commit_id":"3619c2b93d1915780f12cc9246f4953eac9713ac"},{"author":{"_account_id":34120,"name":"Andre Aranha","display_name":"afariasa","email":"afariasa@redhat.com","username":"afariasa"},"change_message_id":"5d60b03d8a6da891e5bd3faa62a9ed0f74cc58f2","unresolved":true,"context_lines":[{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        if microversion is None:"},{"line_number":114,"context_line":"            default \u003d getattr(session, \u0027default_microversion\u0027, None)"},{"line_number":115,"context_line":"            # Only propagate a concrete version string; unit-test mocks and"},{"line_number":116,"context_line":"            # unset adapters leave this as None / non-str."},{"line_number":117,"context_line":"            if isinstance(default, str):"},{"line_number":118,"context_line":"                microversion \u003d default"}],"source_content_type":"text/x-python","patch_set":7,"id":"e7105ba9_6a16eae7","line":115,"updated":"2026-10-08 11:35:46.000000000","message":"Maybe we don\u0027t need this comment here","commit_id":"3619c2b93d1915780f12cc9246f4953eac9713ac"},{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"18bc3fe56a657cae1ac6fba499f3364f5556e01c","unresolved":false,"context_lines":[{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        if microversion is None:"},{"line_number":114,"context_line":"            default \u003d getattr(session, \u0027default_microversion\u0027, None)"},{"line_number":115,"context_line":"            # Only propagate a concrete version string; unit-test mocks and"},{"line_number":116,"context_line":"            # unset adapters leave this as None / non-str."},{"line_number":117,"context_line":"            if isinstance(default, str):"},{"line_number":118,"context_line":"                microversion \u003d default"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba3530fe_479f5067","line":115,"in_reply_to":"e7105ba9_6a16eae7","updated":"2026-10-09 20:38:33.000000000","message":"Done","commit_id":"3619c2b93d1915780f12cc9246f4953eac9713ac"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"64f09b32edfab43294c1809a2a20393f0181663e","unresolved":true,"context_lines":[{"line_number":110,"context_line":"            requires_id\u003drequires_id, base_path\u003dbase_path"},{"line_number":111,"context_line":"        )"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        if microversion is None:"},{"line_number":114,"context_line":"            default \u003d getattr(session, \u0027default_microversion\u0027, None)"},{"line_number":115,"context_line":"            # Only propagate a concrete version string; unit-test mocks and"},{"line_number":116,"context_line":"            # unset adapters leave this as None / non-str."},{"line_number":117,"context_line":"            if isinstance(default, str):"},{"line_number":118,"context_line":"                microversion \u003d default"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"        get_kwargs: dict[str, Any] \u003d {}"},{"line_number":121,"context_line":"        if microversion is not None:"},{"line_number":122,"context_line":"            get_kwargs[\u0027microversion\u0027] \u003d microversion"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        response \u003d session.get(request.url, **get_kwargs).json()"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"        content_type \u003d None"},{"line_number":127,"context_line":"        if self.payload_content_type is not None:"}],"source_content_type":"text/x-python","patch_set":7,"id":"4165d9a5_6e110443","line":124,"range":{"start_line":113,"start_character":0,"end_line":124,"end_character":64},"updated":"2026-10-09 11:14:34.000000000","message":"Let\u0027s use the utilities we have here for this and *always* pass a microversion.\n\n```suggestion\n        if microversion is None:\n            microversion \u003d self._get_microversion(session)\n        response \u003d session.get(request.url, microversion\u003dmicroversion).json()\n```","commit_id":"3619c2b93d1915780f12cc9246f4953eac9713ac"},{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"18bc3fe56a657cae1ac6fba499f3364f5556e01c","unresolved":false,"context_lines":[{"line_number":110,"context_line":"            requires_id\u003drequires_id, base_path\u003dbase_path"},{"line_number":111,"context_line":"        )"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        if microversion is None:"},{"line_number":114,"context_line":"            default \u003d getattr(session, \u0027default_microversion\u0027, None)"},{"line_number":115,"context_line":"            # Only propagate a concrete version string; unit-test mocks and"},{"line_number":116,"context_line":"            # unset adapters leave this as None / non-str."},{"line_number":117,"context_line":"            if isinstance(default, str):"},{"line_number":118,"context_line":"                microversion \u003d default"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"        get_kwargs: dict[str, Any] \u003d {}"},{"line_number":121,"context_line":"        if microversion is not None:"},{"line_number":122,"context_line":"            get_kwargs[\u0027microversion\u0027] \u003d microversion"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        response \u003d session.get(request.url, **get_kwargs).json()"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"        content_type \u003d None"},{"line_number":127,"context_line":"        if self.payload_content_type is not None:"}],"source_content_type":"text/x-python","patch_set":7,"id":"6548d47d_1db0d5d6","line":124,"range":{"start_line":113,"start_character":0,"end_line":124,"end_character":64},"in_reply_to":"4165d9a5_6e110443","updated":"2026-10-09 20:38:33.000000000","message":"Done","commit_id":"3619c2b93d1915780f12cc9246f4953eac9713ac"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"64f09b32edfab43294c1809a2a20393f0181663e","unresolved":true,"context_lines":[{"line_number":136,"context_line":"                utils.urljoin(request.url, \"payload\"),"},{"line_number":137,"context_line":"                headers\u003d{\"Accept\": content_type},"},{"line_number":138,"context_line":"                skip_cache\u003dskip_cache,"},{"line_number":139,"context_line":"                **get_kwargs,"},{"line_number":140,"context_line":"            )"},{"line_number":141,"context_line":"            # NOTE(pas-ha): do not return payload.text here,"},{"line_number":142,"context_line":"            # as it will be decoded to whatever requests and chardet detected,"}],"source_content_type":"text/x-python","patch_set":7,"id":"ebe05311_cc5f0aff","line":139,"updated":"2026-10-09 11:14:34.000000000","message":"```suggestion\n                microversion\u003dmicroversion,\n```","commit_id":"3619c2b93d1915780f12cc9246f4953eac9713ac"},{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"18bc3fe56a657cae1ac6fba499f3364f5556e01c","unresolved":false,"context_lines":[{"line_number":136,"context_line":"                utils.urljoin(request.url, \"payload\"),"},{"line_number":137,"context_line":"                headers\u003d{\"Accept\": content_type},"},{"line_number":138,"context_line":"                skip_cache\u003dskip_cache,"},{"line_number":139,"context_line":"                **get_kwargs,"},{"line_number":140,"context_line":"            )"},{"line_number":141,"context_line":"            # NOTE(pas-ha): do not return payload.text here,"},{"line_number":142,"context_line":"            # as it will be decoded to whatever requests and chardet detected,"}],"source_content_type":"text/x-python","patch_set":7,"id":"018c0bf1_f5a283c5","line":139,"in_reply_to":"ebe05311_cc5f0aff","updated":"2026-10-09 20:38:33.000000000","message":"Done","commit_id":"3619c2b93d1915780f12cc9246f4953eac9713ac"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"64f09b32edfab43294c1809a2a20393f0181663e","unresolved":true,"context_lines":[{"line_number":173,"context_line":"        \"\"\""},{"line_number":174,"context_line":"        store_id \u003d _normalize_secret_store_id(secret_store)"},{"line_number":175,"context_line":"        url \u003d utils.urljoin(self.base_path, self.id, \u0027secret-store\u0027, store_id)"},{"line_number":176,"context_line":"        session.put(url, microversion\u003d\u00271.3\u0027)"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"def _normalize_secret_store_id(secret_store: str | resource.Resource) -\u003e str:"}],"source_content_type":"text/x-python","patch_set":7,"id":"e1cf5993_63910b58","line":176,"updated":"2026-10-09 11:14:34.000000000","message":"We don\u0027t tend to do this. Instead, we should accept a `microversion` parameter and set `_min_microversion` as above.","commit_id":"3619c2b93d1915780f12cc9246f4953eac9713ac"},{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"2d271cdc6deadf2b728ba7bd0cc57363923be6c4","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        \"\"\""},{"line_number":174,"context_line":"        store_id \u003d _normalize_secret_store_id(secret_store)"},{"line_number":175,"context_line":"        url \u003d utils.urljoin(self.base_path, self.id, \u0027secret-store\u0027, store_id)"},{"line_number":176,"context_line":"        session.put(url, microversion\u003d\u00271.3\u0027)"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"def _normalize_secret_store_id(secret_store: str | resource.Resource) -\u003e str:"}],"source_content_type":"text/x-python","patch_set":7,"id":"3e47efd7_d689d724","line":176,"in_reply_to":"e1cf5993_63910b58","updated":"2026-10-09 20:56:18.000000000","message":"We\u0027re asserting the microversion above now.","commit_id":"3619c2b93d1915780f12cc9246f4953eac9713ac"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"64f09b32edfab43294c1809a2a20393f0181663e","unresolved":true,"context_lines":[{"line_number":176,"context_line":"        session.put(url, microversion\u003d\u00271.3\u0027)"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"def _normalize_secret_store_id(secret_store: str | resource.Resource) -\u003e str:"},{"line_number":180,"context_line":"    \"\"\"Return a store UUID from a UUID, URI, or SecretStore resource.\"\"\""},{"line_number":181,"context_line":"    if isinstance(secret_store, resource.Resource):"},{"line_number":182,"context_line":"        store_id \u003d resource.Resource._get_id(secret_store)"}],"source_content_type":"text/x-python","patch_set":7,"id":"448978f9_149b2787","line":179,"updated":"2026-10-09 11:14:34.000000000","message":"Does this actually expect a base `Resource` or anything other than `SecretStore`? If you\u0027re avoiding circular imports, you can use `TYPE_CHECKING`. The `isinstance` check below is fine","commit_id":"3619c2b93d1915780f12cc9246f4953eac9713ac"},{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"2d271cdc6deadf2b728ba7bd0cc57363923be6c4","unresolved":false,"context_lines":[{"line_number":176,"context_line":"        session.put(url, microversion\u003d\u00271.3\u0027)"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"def _normalize_secret_store_id(secret_store: str | resource.Resource) -\u003e str:"},{"line_number":180,"context_line":"    \"\"\"Return a store UUID from a UUID, URI, or SecretStore resource.\"\"\""},{"line_number":181,"context_line":"    if isinstance(secret_store, resource.Resource):"},{"line_number":182,"context_line":"        store_id \u003d resource.Resource._get_id(secret_store)"}],"source_content_type":"text/x-python","patch_set":7,"id":"912a9563_02e94cd3","line":179,"in_reply_to":"448978f9_149b2787","updated":"2026-10-09 20:56:18.000000000","message":"no circular imports.  We\u0027ll just simplify here and use the SecretStore","commit_id":"3619c2b93d1915780f12cc9246f4953eac9713ac"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f1f56411d735096d80c9d180673f83f57563c3a0","unresolved":true,"context_lines":[{"line_number":180,"context_line":"        :raises: :exc:`~openstack.exceptions.NotSupported` if the resulting"},{"line_number":181,"context_line":"            microversion is lower than :data:`MIGRATE_MIN_MICROVERSION`."},{"line_number":182,"context_line":"        \"\"\""},{"line_number":183,"context_line":"        # Enforced here (not just in Proxy.migrate_secret_store) so that"},{"line_number":184,"context_line":"        # calling this method directly on a Secret instance is also safe."},{"line_number":185,"context_line":"        if microversion is None:"},{"line_number":186,"context_line":"            microversion \u003d self._assert_microversion_for("},{"line_number":187,"context_line":"                session,"},{"line_number":188,"context_line":"                MIGRATE_MIN_MICROVERSION,"},{"line_number":189,"context_line":"                error_message\u003d\u0027Cannot migrate secret store\u0027,"},{"line_number":190,"context_line":"            )"},{"line_number":191,"context_line":"        else:"},{"line_number":192,"context_line":"            actual_n \u003d discover.normalize_version_number(microversion)"},{"line_number":193,"context_line":"            expected_n \u003d discover.normalize_version_number("},{"line_number":194,"context_line":"                MIGRATE_MIN_MICROVERSION"},{"line_number":195,"context_line":"            )"},{"line_number":196,"context_line":"            if actual_n \u003c expected_n:"},{"line_number":197,"context_line":"                raise exceptions.NotSupported("},{"line_number":198,"context_line":"                    f\u0027Cannot migrate secret store. API version \u0027"},{"line_number":199,"context_line":"                    f\u0027{MIGRATE_MIN_MICROVERSION} is required, but \u0027"},{"line_number":200,"context_line":"                    f\u0027{microversion} will be used.\u0027"},{"line_number":201,"context_line":"                )"},{"line_number":202,"context_line":"        store_id \u003d _normalize_secret_store_id(secret_store)"},{"line_number":203,"context_line":"        url \u003d utils.urljoin(self.base_path, self.id, \u0027secret-store\u0027, store_id)"},{"line_number":204,"context_line":"        session.put(url, microversion\u003dmicroversion)"}],"source_content_type":"text/x-python","patch_set":9,"id":"e1ce0903_f8fe9cc9","line":201,"range":{"start_line":183,"start_character":0,"end_line":201,"end_character":17},"updated":"2026-10-09 21:09:49.000000000","message":"I appreciate the effort here...but I think is overkill. We tend to consider the \"resource layer\" as being as close to the wire as we can get [*]. All supplementary logic (microversion checks, handling of both objects and string IDs etc.) goes into the proxy layer. Would you mind dropping this from here and dropping `MIGRATE_MIN_MICROVERSION` in favour of a magic number in the proxy method. 99.9% of users will use that and the resource layer is mostly there just to allow that to work.\n\n[*] Yes, we do have logic checks in the `openstack/baremetal/v1/node.py` (which I assume is what the LLM picked up on) but (a) that\u0027s an outlier and (b) that predate many of the current maintainers involvement 😇","commit_id":"4fb269ec5e55620f309bf29b73b3fb8980c42fc5"},{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"121df700f2549370aff6583424af09970f40d8b4","unresolved":false,"context_lines":[{"line_number":180,"context_line":"        :raises: :exc:`~openstack.exceptions.NotSupported` if the resulting"},{"line_number":181,"context_line":"            microversion is lower than :data:`MIGRATE_MIN_MICROVERSION`."},{"line_number":182,"context_line":"        \"\"\""},{"line_number":183,"context_line":"        # Enforced here (not just in Proxy.migrate_secret_store) so that"},{"line_number":184,"context_line":"        # calling this method directly on a Secret instance is also safe."},{"line_number":185,"context_line":"        if microversion is None:"},{"line_number":186,"context_line":"            microversion \u003d self._assert_microversion_for("},{"line_number":187,"context_line":"                session,"},{"line_number":188,"context_line":"                MIGRATE_MIN_MICROVERSION,"},{"line_number":189,"context_line":"                error_message\u003d\u0027Cannot migrate secret store\u0027,"},{"line_number":190,"context_line":"            )"},{"line_number":191,"context_line":"        else:"},{"line_number":192,"context_line":"            actual_n \u003d discover.normalize_version_number(microversion)"},{"line_number":193,"context_line":"            expected_n \u003d discover.normalize_version_number("},{"line_number":194,"context_line":"                MIGRATE_MIN_MICROVERSION"},{"line_number":195,"context_line":"            )"},{"line_number":196,"context_line":"            if actual_n \u003c expected_n:"},{"line_number":197,"context_line":"                raise exceptions.NotSupported("},{"line_number":198,"context_line":"                    f\u0027Cannot migrate secret store. API version \u0027"},{"line_number":199,"context_line":"                    f\u0027{MIGRATE_MIN_MICROVERSION} is required, but \u0027"},{"line_number":200,"context_line":"                    f\u0027{microversion} will be used.\u0027"},{"line_number":201,"context_line":"                )"},{"line_number":202,"context_line":"        store_id \u003d _normalize_secret_store_id(secret_store)"},{"line_number":203,"context_line":"        url \u003d utils.urljoin(self.base_path, self.id, \u0027secret-store\u0027, store_id)"},{"line_number":204,"context_line":"        session.put(url, microversion\u003dmicroversion)"}],"source_content_type":"text/x-python","patch_set":9,"id":"0815a338_2925a7b3","line":201,"range":{"start_line":183,"start_character":0,"end_line":201,"end_character":17},"in_reply_to":"e1ce0903_f8fe9cc9","updated":"2026-10-12 18:35:20.000000000","message":"Done","commit_id":"4fb269ec5e55620f309bf29b73b3fb8980c42fc5"}],"openstack/key_manager/v1/secret_store.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"64f09b32edfab43294c1809a2a20393f0181663e","unresolved":true,"context_lines":[{"line_number":46,"context_line":"    #: A URI to the secret store"},{"line_number":47,"context_line":"    secret_store_ref \u003d resource.Body(\u0027secret_store_ref\u0027)"},{"line_number":48,"context_line":"    #: UUID of the secret store (Barbican microversion 1.3+)"},{"line_number":49,"context_line":"    secret_store_id \u003d resource.Body(\u0027secret_store_id\u0027, alternate_id\u003dTrue)"},{"line_number":50,"context_line":"    #: Flag indicating if this secret store is global default"},{"line_number":51,"context_line":"    global_default \u003d resource.Body(\u0027global_default\u0027, type\u003dbool)"},{"line_number":52,"context_line":"    #: The crypto plugin name"}],"source_content_type":"text/x-python","patch_set":7,"id":"74ef369d_27450d6e","line":49,"updated":"2026-10-09 11:14:34.000000000","message":"Do we lose the automatic conversion of a href to UUID here?","commit_id":"3619c2b93d1915780f12cc9246f4953eac9713ac"},{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"18bc3fe56a657cae1ac6fba499f3364f5556e01c","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    #: A URI to the secret store"},{"line_number":47,"context_line":"    secret_store_ref \u003d resource.Body(\u0027secret_store_ref\u0027)"},{"line_number":48,"context_line":"    #: UUID of the secret store (Barbican microversion 1.3+)"},{"line_number":49,"context_line":"    secret_store_id \u003d resource.Body(\u0027secret_store_id\u0027, alternate_id\u003dTrue)"},{"line_number":50,"context_line":"    #: Flag indicating if this secret store is global default"},{"line_number":51,"context_line":"    global_default \u003d resource.Body(\u0027global_default\u0027, type\u003dbool)"},{"line_number":52,"context_line":"    #: The crypto plugin name"}],"source_content_type":"text/x-python","patch_set":7,"id":"1e435d50_816bcde0","line":49,"in_reply_to":"74ef369d_27450d6e","updated":"2026-10-09 20:38:33.000000000","message":"Good catch - fixed","commit_id":"3619c2b93d1915780f12cc9246f4953eac9713ac"}],"openstack/tests/functional/key_manager/v1/test_secret_store.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"64f09b32edfab43294c1809a2a20393f0181663e","unresolved":true,"context_lines":[{"line_number":32,"context_line":"            self.assertIsNotNone(store.name)"},{"line_number":33,"context_line":"            self.assertIsNotNone(store.status)"},{"line_number":34,"context_line":"            # Microversion 1.3+ returns secret_store_id; map it onto .id."},{"line_number":35,"context_line":"            if store.secret_store_id is not None:"},{"line_number":36,"context_line":"                self.assertEqual(store.secret_store_id, store.id)"},{"line_number":37,"context_line":"                self.assertIn(store.secret_store_id, store.secret_store_ref)"},{"line_number":38,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"e0ef5348_76126e3a","line":35,"updated":"2026-10-09 11:14:34.000000000","message":"Rather than asserting this, can we assert the microversion? I assume this will always be present on 1.3+?","commit_id":"3619c2b93d1915780f12cc9246f4953eac9713ac"},{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"2d271cdc6deadf2b728ba7bd0cc57363923be6c4","unresolved":false,"context_lines":[{"line_number":32,"context_line":"            self.assertIsNotNone(store.name)"},{"line_number":33,"context_line":"            self.assertIsNotNone(store.status)"},{"line_number":34,"context_line":"            # Microversion 1.3+ returns secret_store_id; map it onto .id."},{"line_number":35,"context_line":"            if store.secret_store_id is not None:"},{"line_number":36,"context_line":"                self.assertEqual(store.secret_store_id, store.id)"},{"line_number":37,"context_line":"                self.assertIn(store.secret_store_id, store.secret_store_ref)"},{"line_number":38,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"39ef8c49_12c6cff6","line":35,"in_reply_to":"e0ef5348_76126e3a","updated":"2026-10-09 20:56:18.000000000","message":"Yes, it will be present for 1.3+, so we\u0027ll just assert the fields here.","commit_id":"3619c2b93d1915780f12cc9246f4953eac9713ac"}],"releasenotes/notes/barbican-secret-store-migrate.yaml":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b99721f8406f74ff2663a2e0c94cc34382365745","unresolved":true,"context_lines":[{"line_number":15,"context_line":"    Barbican\u0027s unversioned discovery document never carries a"},{"line_number":16,"context_line":"    microversion range (by design, for backward compatibility), so"},{"line_number":17,"context_line":"    ``openstack.utils.supports_microversion()`` /"},{"line_number":18,"context_line":"    ``maximum_supported_microversion()`` could never detect support."},{"line_number":19,"context_line":"    That made ``Proxy.migrate_secret_store`` always raise, and left"},{"line_number":20,"context_line":"    ``secret_store_id`` / ``secret_store_ref`` unset on secret GET/list"},{"line_number":21,"context_line":"    unless the caller pinned ``default_microversion``. Negotiation now"},{"line_number":22,"context_line":"    probes discovery with an explicit ``OpenStack-API-Version`` header,"},{"line_number":23,"context_line":"    the same workaround already used by python-barbicanclient."}],"source_content_type":"text/x-yaml","patch_set":12,"id":"4bd47631_e75a6d12","line":21,"range":{"start_line":18,"start_character":68,"end_line":21,"end_character":70},"updated":"2026-10-20 14:25:04.000000000","message":"This makes no sense: the methods are only added in this change, so there\u0027s no way for a user to get into this situation absent reverting the microversion change. Can you drop this?\n\nAlso, if this patch is split into two as requested, then this should probably go into its own release note.","commit_id":"02a5390ce7268d1f5481c106bb8a8eb8ac9d7a53"},{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"3609abd67b004ef5670b031b78b227944f786b6a","unresolved":false,"context_lines":[{"line_number":15,"context_line":"    Barbican\u0027s unversioned discovery document never carries a"},{"line_number":16,"context_line":"    microversion range (by design, for backward compatibility), so"},{"line_number":17,"context_line":"    ``openstack.utils.supports_microversion()`` /"},{"line_number":18,"context_line":"    ``maximum_supported_microversion()`` could never detect support."},{"line_number":19,"context_line":"    That made ``Proxy.migrate_secret_store`` always raise, and left"},{"line_number":20,"context_line":"    ``secret_store_id`` / ``secret_store_ref`` unset on secret GET/list"},{"line_number":21,"context_line":"    unless the caller pinned ``default_microversion``. Negotiation now"},{"line_number":22,"context_line":"    probes discovery with an explicit ``OpenStack-API-Version`` header,"},{"line_number":23,"context_line":"    the same workaround already used by python-barbicanclient."}],"source_content_type":"text/x-yaml","patch_set":12,"id":"6d889657_9693931c","line":21,"range":{"start_line":18,"start_character":68,"end_line":21,"end_character":70},"in_reply_to":"4bd47631_e75a6d12","updated":"2026-10-20 19:18:08.000000000","message":"Split has been completed.","commit_id":"02a5390ce7268d1f5481c106bb8a8eb8ac9d7a53"}]}
