)]}'
{"id":"openstack%2Fansible-collections-openstack~992589","triplet_id":"openstack%2Fansible-collections-openstack~master~I3e0e4026b5d1ac9e3780d5fc5a3f6177ede517a1","project":"openstack/ansible-collections-openstack","branch":"master","attention_set":{},"removed_from_attention_set":{"7102":{"account":{"_account_id":7102,"name":"Thomas Bechtold","email":"thomas.bechtold@chainguard.dev","username":"toabctl"},"last_update":"2026-06-10 07:32:34.000000000","reason":"Change was abandoned"}},"hashtags":[],"change_id":"I3e0e4026b5d1ac9e3780d5fc5a3f6177ede517a1","subject":"Read openstacksdk version from package metadata","status":"ABANDONED","created":"2026-06-10 07:26:49.000000000","updated":"2026-06-10 07:32:34.000000000","total_comment_count":1,"unresolved_comment_count":0,"has_review_started":true,"meta_rev_id":"1c04a0a60485c782340e90ecd6e1a0382901e85c","_number":992589,"virtual_id_number":992589,"owner":{"_account_id":7102,"name":"Thomas Bechtold","email":"thomas.bechtold@chainguard.dev","username":"toabctl"},"actions":{},"labels":{"Verified":{"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":{"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":{"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"CC":[{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2026-06-10 07:27:40.000000000","updated_by":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"reviewer":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"state":"CC"}],"messages":[{"id":"c5bdb93bd75967295b2223c3a46f20bb842e59d8","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7102,"name":"Thomas Bechtold","email":"thomas.bechtold@chainguard.dev","username":"toabctl"},"date":"2026-06-10 07:26:49.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"02a22c7c4193495f3b7b982949196cf87a29de18","author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"date":"2026-06-10 07:27:40.000000000","message":"Patch Set 1:\n\n(1 comment)","accounts_in_message":[],"_revision_number":1},{"id":"1c04a0a60485c782340e90ecd6e1a0382901e85c","tag":"autogenerated:gerrit:abandon","author":{"_account_id":7102,"name":"Thomas Bechtold","email":"thomas.bechtold@chainguard.dev","username":"toabctl"},"date":"2026-06-10 07:32:34.000000000","message":"Abandoned\n\nI missed that there\u0027s already a patch solving this: https://review.opendev.org/c/openstack/ansible-collections-openstack/+/992526","accounts_in_message":[],"_revision_number":1}],"current_revision_number":1,"current_revision":"46dd10ab580cdf627e93072316618712be9d52b3","revisions":{"46dd10ab580cdf627e93072316618712be9d52b3":{"kind":"REWORK","_number":1,"created":"2026-06-10 07:26:49.000000000","uploader":{"_account_id":7102,"name":"Thomas Bechtold","email":"thomas.bechtold@chainguard.dev","username":"toabctl"},"ref":"refs/changes/89/992589/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/ansible-collections-openstack","ref":"refs/changes/89/992589/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/ansible-collections-openstack refs/changes/89/992589/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/ansible-collections-openstack refs/changes/89/992589/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/ansible-collections-openstack refs/changes/89/992589/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/ansible-collections-openstack refs/changes/89/992589/1"}}},"commit":{"parents":[{"commit":"c81422e3f6be86394284ce2db3e28ed87a530428","subject":"Merge \"[doc] Document usage of changelog\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ansible-collections-openstack/commit/c81422e3f6be86394284ce2db3e28ed87a530428"}]}],"author":{"name":"Thomas Bechtold","email":"thomasbechtold@jpberlin.de","date":"2026-06-10 07:26:15.000000000","tz":120},"committer":{"name":"Thomas Bechtold","email":"thomasbechtold@jpberlin.de","date":"2026-06-10 07:26:29.000000000","tz":120},"subject":"Read openstacksdk version from package metadata","message":"Read openstacksdk version from package metadata\n\nopenstacksdk 4.15.0 removed the deprecated top-level ``openstack.version``\nattribute. module_utils/openstack.py still read ``sdk.version.__version__``\nin both ``openstack_cloud_from_module()`` and ``OpenStackModule``, so every\nmodule fails with \"AttributeError: module \u0027openstack\u0027 has no attribute\n\u0027version\u0027\" when run against openstacksdk \u003e\u003d 4.15.0.\n\nRead the installed version via ``importlib.metadata`` instead, which does not\ndepend on the removed attribute. Add a unit test that exercises\n``openstack_cloud_from_module()`` against an SDK whose ``version`` attribute\nis unavailable.\n\nThe breaking openstacksdk change was\nI56ea28c93f37160482b14b49acd79110a6c42159 (\"drop deprecated openstack.version\",\ncommit 3ae89d61b4f49b74a0f933c95e2df57a87816316).\n\nChange-Id: I3e0e4026b5d1ac9e3780d5fc5a3f6177ede517a1\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ansible-collections-openstack/commit/46dd10ab580cdf627e93072316618712be9d52b3"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ansible-collections-openstack/commit/46dd10ab580cdf627e93072316618712be9d52b3"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[],"submit_requirements":[{"name":"Verified","description":"Verified in gate by CI","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Verified\u003dMAX AND -label:Verified\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Verified\u003dMAX","label:Verified\u003dMIN"],"atom_explanations":{"label:Verified\u003dMAX":"","label:Verified\u003dMIN":""}}},{"name":"Code-Review","description":"Code reviewed by core reviewer","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Code-Review\u003dMAX AND -label:Code-Review\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Code-Review\u003dMAX","label:Code-Review\u003dMIN"],"atom_explanations":{"label:Code-Review\u003dMAX":"","label:Code-Review\u003dMIN":""}}},{"name":"Workflow","description":"Approved for gate by core reviewer","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Workflow\u003dMAX AND -label:Workflow\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Workflow\u003dMAX","label:Workflow\u003dMIN"],"atom_explanations":{"label:Workflow\u003dMAX":"","label:Workflow\u003dMIN":""}}}]}
