)]}'
{"id":"openstack%2Fopenstacksdk~981412","triplet_id":"openstack%2Fopenstacksdk~master~I5a8ccfd1725ea518242217e655e67eac218aa921","project":"openstack/openstacksdk","branch":"master","attention_set":{},"removed_from_attention_set":{"13478":{"account":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"last_update":"2026-03-20 12:12:33.000000000","reason":"Change was submitted"}},"hashtags":[],"change_id":"I5a8ccfd1725ea518242217e655e67eac218aa921","subject":"Fix UserGroup.base_path format specifier","status":"MERGED","created":"2026-03-19 21:47:14.000000000","updated":"2026-03-20 12:13:59.000000000","submitted":"2026-03-20 12:12:33.000000000","submitter":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"total_comment_count":0,"unresolved_comment_count":0,"has_review_started":true,"submission_id":"981412","meta_rev_id":"ec1085b3a6a050d4842c56ee361faaf822e52700","_number":981412,"virtual_id_number":981412,"owner":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"actions":{},"labels":{"Verified":{"approved":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"value":0,"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},{"tag":"autogenerated:zuul:gate","value":2,"date":"2026-03-20 12:12:32.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-2":"Fails","-1":"Doesn\u0027t seem to work"," 0":"No score","+1":"Works for me","+2":"Verified"},"description":"","default_value":0,"optional":true},"Code-Review":{"approved":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"all":[{"value":2,"date":"2026-03-20 10:36:09.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-2":"Do not merge","-1":"This patch needs further work before it can be merged"," 0":"No score","+1":"Looks good to me, but someone else must approve","+2":"Looks good to me (core reviewer)"},"description":"","default_value":0,"optional":true},"Workflow":{"approved":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"all":[{"value":1,"date":"2026-03-20 10:36:09.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true},"Allow-Post-Review":{"all":[{"value":0,"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{" 0":"Abstain","+1":"Approved for Zuul Post Review Pipeline"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2026-03-19 23:30:00.000000000","updated_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"reviewer":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"state":"REVIEWER"},{"updated":"2026-03-20 10:36:09.000000000","updated_by":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"reviewer":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"state":"REVIEWER"}],"messages":[{"id":"76f52f682cf7f95a80db1a9dad27aafa9a976905","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"date":"2026-03-19 21:47:14.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"a63dbf3d7f898928936493b646de63761479f991","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"date":"2026-03-19 21:48:25.000000000","message":"Uploaded patch set 2: Commit message was updated.","accounts_in_message":[],"_revision_number":2},{"id":"561a2663dd782182d86b6ec73b1b6d06cfb44617","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-19 23:30:00.000000000","message":"Patch Set 2: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/1bb72a5df4a941f39a08e395385af47e\n\n- bifrost-integration-openstacksdk-src https://zuul.opendev.org/t/openstack/build/5ccfc57a91da4ed7a391b3527fc67607 : SUCCESS in 53m 23s (non-voting)\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/906643385fee408ba903cf16f5ff251c : SUCCESS in 6m 31s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/5c9ad935bcd4417b919ce83275389a34 : SUCCESS in 4m 04s\n- openstack-tox-py312 https://zuul.opendev.org/t/openstack/build/00ce3993c94d478db78d44c11836c839 : SUCCESS in 4m 35s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/f1a71fdd8ed341b5b65e277887462b45 : SUCCESS in 3m 40s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/56f74efb5169489aaa6c18cbf7d0b00c : SUCCESS in 6m 32s (non-voting)\n- openstacksdk-functional-devstack-tips https://zuul.opendev.org/t/openstack/build/58e28e62422b4e3bb397578a8f2fb52c : SUCCESS in 1h 02m 20s\n- os-client-config-tox-py311-tips https://zuul.opendev.org/t/openstack/build/428b1a91f94245fb812fcb9d89616691 : SUCCESS in 3m 24s\n- osc-tox-py310-tips https://zuul.opendev.org/t/openstack/build/e8276b2f7dfd41e7947318fc73f4aaca : SUCCESS in 4m 38s\n- osc-tox-py313-tips https://zuul.opendev.org/t/openstack/build/c16cdca2a33c4b2cb852f974cd9b4988 : SUCCESS in 4m 06s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/8f25c3bb49904ebaa6728f402a602248 : SUCCESS in 11m 08s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/e97f9ae76b024a49a4c02768c17ec54e : SUCCESS in 45m 22s\n- openstacksdk-functional-devstack-networking https://zuul.opendev.org/t/openstack/build/1d75efbf18f74aaa80e25157ad6e96a3 : SUCCESS in 1h 23m 53s\n- openstacksdk-functional-devstack-networking-ext https://zuul.opendev.org/t/openstack/build/79b9c2dd1b784155b0003a1f869a7b55 : SUCCESS in 1h 36m 43s\n- openstacksdk-functional-devstack-magnum https://zuul.opendev.org/t/openstack/build/2dacf2f4ee6c4a77942141bc0017a47b : FAILURE in 1h 01m 24s (non-voting)\n- openstacksdk-functional-devstack-manila https://zuul.opendev.org/t/openstack/build/a4fdc722931f4d059693b28b46bbd1fa : SUCCESS in 26m 41s\n- openstacksdk-functional-devstack-masakari https://zuul.opendev.org/t/openstack/build/5e622e97d12c403a809eb79d2bd956b0 : SUCCESS in 28m 36s\n- openstacksdk-functional-devstack-ironic https://zuul.opendev.org/t/openstack/build/6dffba1d33d8403f8a7d7a5868b8ebf8 : SUCCESS in 21m 27s\n- osc-functional-devstack-tips https://zuul.opendev.org/t/openstack/build/dd7326c52d3c44cba1f2581550b54c57 : SUCCESS in 1h 10m 35s (non-voting)\n- ansible-collections-openstack-functional-devstack https://zuul.opendev.org/t/openstack/build/369b3a61552a409393d30d70b35c0a68 : SUCCESS in 1h 28m 56s (non-voting)","accounts_in_message":[],"_revision_number":2},{"id":"90c849713a2f67c7f72814e5370cfec6efc08a0f","author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"date":"2026-03-20 10:36:09.000000000","message":"Patch Set 2: Code-Review+2 Workflow+1","accounts_in_message":[],"_revision_number":2},{"id":"50e5285c52f4c2842113ba76e964b1fbca967d02","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-20 10:36:44.000000000","message":"Patch Set 2: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":2},{"id":"69ab2da0e464f0db614d9861289aa3a165b45abb","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-20 12:12:32.000000000","message":"Patch Set 2: Verified+2\n\nBuild succeeded (gate pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/956f5aa3b549486c928f71e8c31b4f58\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/f718b919b8ea498fb81346eae7859f05 : SUCCESS in 4m 47s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/6a2291e7579540bf88ac280c37f7cd4a : SUCCESS in 3m 46s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/8d5a73b3a69e410798ae7ab55032e37b : SUCCESS in 3m 41s\n- openstacksdk-functional-devstack-tips https://zuul.opendev.org/t/openstack/build/9188d4693c3946fe8d3c3405c7f28c2b : SUCCESS in 1h 00m 57s\n- os-client-config-tox-py311-tips https://zuul.opendev.org/t/openstack/build/49edf6ce003d4791b5bb2745f213f2ff : SUCCESS in 2m 10s\n- osc-tox-py310-tips https://zuul.opendev.org/t/openstack/build/756ea42b14ae44408ae4c1340d5964dd : SUCCESS in 5m 10s\n- osc-tox-py313-tips https://zuul.opendev.org/t/openstack/build/ca9db60444a74b6da851f2017d193424 : SUCCESS in 5m 05s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/b4d32f6002ee46a3979488702980ae2b : SUCCESS in 10m 41s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/30b4b9b1c3b74dc090cbba881ea4060c : SUCCESS in 1h 06m 56s\n- openstacksdk-functional-devstack-networking https://zuul.opendev.org/t/openstack/build/0fa48f73e3bf4873883529b7c53c4a44 : SUCCESS in 1h 26m 15s\n- openstacksdk-functional-devstack-networking-ext https://zuul.opendev.org/t/openstack/build/2ba41de574434bee96e7e608be5db950 : SUCCESS in 1h 31m 10s\n- openstacksdk-functional-devstack-ironic https://zuul.opendev.org/t/openstack/build/a731f9429527415bbe0d493ca0a8af04 : SUCCESS in 21m 43s","accounts_in_message":[],"_revision_number":2},{"id":"70eafdeb4ea33e20ad3726ff993a1d0fc6c62d99","tag":"autogenerated:gerrit:merged","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-20 12:12:33.000000000","message":"Change has been successfully merged","accounts_in_message":[],"_revision_number":2},{"id":"ec1085b3a6a050d4842c56ee361faaf822e52700","tag":"autogenerated:zuul:promote","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-20 12:13:59.000000000","message":"Patch Set 2:\n\nBuild succeeded (promote pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/8f3da6bb2378405f97a7f466bb80fbf4\n\n- promote-openstack-tox-docs https://zuul.opendev.org/t/openstack/build/99842268b23b43d09d471b8016e6dfc2 : SUCCESS in 1m 01s","accounts_in_message":[],"_revision_number":2}],"current_revision_number":2,"current_revision":"0831e0e681488b624f4b5aac91bb2726ba426e47","revisions":{"2f86be9ff159ef033ce4cbd712fe0e7d018529a6":{"kind":"REWORK","_number":1,"created":"2026-03-19 21:47:14.000000000","uploader":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"ref":"refs/changes/12/981412/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/openstacksdk","ref":"refs/changes/12/981412/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/openstacksdk refs/changes/12/981412/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/openstacksdk refs/changes/12/981412/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/openstacksdk refs/changes/12/981412/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/openstacksdk refs/changes/12/981412/1"}}},"commit":{"parents":[{"commit":"d39d58aedaa12dd43f27738e50375ad677ea7ccb","subject":"Merge \"Fix RecursionError when deepcopy is called on CloudRegion\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/openstacksdk/commit/d39d58aedaa12dd43f27738e50375ad677ea7ccb"}]}],"author":{"name":"Boris Bobrov","email":"b.bobrov@sap.com","date":"2026-03-19 21:46:30.000000000","tz":60},"committer":{"name":"Boris Bobrov","email":"b.bobrov@sap.com","date":"2026-03-19 21:47:12.000000000","tz":60},"subject":"Fix UserGroup.base_path format specifier","message":"Fix UserGroup.base_path format specifier\n\nThe UserGroup resource class had an invalid Python format\nspecifier in its base_path: \u0027%(user_id)%\u0027 instead of\n\u0027%(user_id)s\u0027. The trailing \u0027%\u0027 is not a valid conversion\ntype, causing a ValueError whenever Resource.list() attempts\nto interpolate the URI via \u0027base_path % params\u0027. This made\n\u0027openstack group list --user\u0027 and the SDK\u0027s\nidentity.user_groups() completely non-functional since the\nfeature was introduced.\n\nThe existing unit test did not catch this because it mocks\nProxy._list, never exercising the actual base_path string\ninterpolation. Added a resource-level test for UserGroup\nand an integration-level test that exercises the full\nproxy -\u003e resource -\u003e HTTP path.\n\nCloses-Bug: #2144954\nGenerated-By: claude-opus-4-6 (OpenCode)\nChange-Id: I5a8ccfd1725ea518242217e655e67eac218aa921\nSigned-off-by: Boris Bobrov \u003cb.bobrov@sap.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/openstacksdk/commit/2f86be9ff159ef033ce4cbd712fe0e7d018529a6"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/openstacksdk/commit/2f86be9ff159ef033ce4cbd712fe0e7d018529a6"}]},"branch":"refs/heads/master"},"0831e0e681488b624f4b5aac91bb2726ba426e47":{"kind":"NO_CODE_CHANGE","_number":2,"created":"2026-03-19 21:48:25.000000000","uploader":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"ref":"refs/changes/12/981412/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/openstacksdk","ref":"refs/changes/12/981412/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/openstacksdk refs/changes/12/981412/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/openstacksdk refs/changes/12/981412/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/openstacksdk refs/changes/12/981412/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/openstacksdk refs/changes/12/981412/2"}}},"commit":{"parents":[{"commit":"d39d58aedaa12dd43f27738e50375ad677ea7ccb","subject":"Merge \"Fix RecursionError when deepcopy is called on CloudRegion\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/openstacksdk/commit/d39d58aedaa12dd43f27738e50375ad677ea7ccb"}]}],"author":{"name":"Boris Bobrov","email":"b.bobrov@sap.com","date":"2026-03-19 21:46:30.000000000","tz":60},"committer":{"name":"Boris Bobrov","email":"b.bobrov@sap.com","date":"2026-03-19 21:48:00.000000000","tz":60},"subject":"Fix UserGroup.base_path format specifier","message":"Fix UserGroup.base_path format specifier\n\nThe UserGroup resource class had an invalid Python format\nspecifier in its base_path: \u0027%(user_id)%\u0027 instead of\n\u0027%(user_id)s\u0027. The trailing \u0027%\u0027 is not a valid conversion\ntype, causing a ValueError whenever Resource.list() attempts\nto interpolate the URI via \u0027base_path % params\u0027. This made\n\u0027openstack group list --user\u0027 and the SDK\u0027s\nidentity.user_groups() completely non-functional since the\nfeature was introduced.\n\nThe existing unit test did not catch this because it mocks\nProxy._list, never exercising the actual base_path string\ninterpolation. Added a resource-level test for UserGroup\nand an integration-level test that exercises the full\nproxy -\u003e resource -\u003e HTTP path.\n\nCloses-Bug: #2144954\nGenerated-By: claude-opus-4-6 (OpenCode)\nSigned-off-by: Boris Bobrov \u003cb.bobrov@sap.com\u003e\nChange-Id: I5a8ccfd1725ea518242217e655e67eac218aa921\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/openstacksdk/commit/0831e0e681488b624f4b5aac91bb2726ba426e47"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/openstacksdk/commit/0831e0e681488b624f4b5aac91bb2726ba426e47"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[{"rule_name":"gerrit~DefaultSubmitRule","status":"CLOSED","labels":[{"label":"Verified","status":"MAY","applied_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}},{"label":"Code-Review","status":"MAY","applied_by":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"}},{"label":"Workflow","status":"MAY","applied_by":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"}},{"label":"Allow-Post-Review","status":"MAY"}]}],"submit_requirements":[{"name":"Verified","description":"Verified in gate by CI","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Verified\u003dMAX AND -label:Verified\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Verified\u003dMAX"],"failing_atoms":["label:Verified\u003dMIN"],"atom_explanations":{}}},{"name":"Allow-Post-Review","description":"Allow Post Review","status":"NOT_APPLICABLE","is_legacy":false,"applicability_expression_result":{"fulfilled":false,"status":"FAIL"},"submittability_expression_result":{"expression":"is:true","fulfilled":true,"status":"NOT_EVALUATED","passing_atoms":[],"failing_atoms":[],"atom_explanations":{}}},{"name":"Code-Review","description":"Code reviewed by core reviewer","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Code-Review\u003dMAX AND -label:Code-Review\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Code-Review\u003dMAX"],"failing_atoms":["label:Code-Review\u003dMIN"],"atom_explanations":{}}},{"name":"Workflow","description":"Approved for gate by core reviewer","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Workflow\u003dMAX AND -label:Workflow\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Workflow\u003dMAX"],"failing_atoms":["label:Workflow\u003dMIN"],"atom_explanations":{}}}]}
