)]}'
{"id":"openstack%2Fopenstacksdk~951878","triplet_id":"openstack%2Fopenstacksdk~master~I6e5e1b0f5357afa0462703eb18b9f2da340e90a4","project":"openstack/openstacksdk","branch":"master","topic":"typing","attention_set":{},"removed_from_attention_set":{"15334":{"account":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"last_update":"2025-06-10 15:26:15.000000000","reason":"\u003cGERRIT_ACCOUNT_15334\u003e replied on the change","reason_account":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"}}},"hashtags":[],"change_id":"I6e5e1b0f5357afa0462703eb18b9f2da340e90a4","subject":"config: Handle interface list in CloudRegion.get_all_version_data","status":"MERGED","created":"2025-06-05 16:26:36.000000000","updated":"2025-06-10 19:37:27.000000000","submitted":"2025-06-10 19:36:24.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":"951878-typing","meta_rev_id":"03cfb3747ceeda04e4e0ee63ec51c8315dfde629","_number":951878,"virtual_id_number":951878,"owner":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"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":"2025-06-10 19:36:24.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":"2025-06-10 15:26:15.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":"2025-06-10 15:26:15.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":"2025-06-05 18:06:14.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"}],"messages":[{"id":"80768c3f3ed21844dcfecc796cc9a25cde6c6cdd","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"date":"2025-06-05 16:26:36.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"67942b9a69bfb5ed72147e8eb146bab353a43cc6","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-06-05 18:06:14.000000000","message":"Patch Set 1: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttps://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing\nand https://docs.openstack.org/project-team-guide/testing.html#how-to-handle-test-failures\n\nhttps://zuul.opendev.org/t/openstack/buildset/008d22b494b04b30b5dd9c650e56d304\n\n- ironic-inspector-tempest-openstacksdk-src https://zuul.opendev.org/t/openstack/build/11fbc20d4aec47ea98735dd658ec396a : SUCCESS in 37m 22s (non-voting)\n- bifrost-integration-openstacksdk-src https://zuul.opendev.org/t/openstack/build/ddcea8b5d95f400f8b47f9ddd67c005f : SUCCESS in 40m 15s (non-voting)\n- metalsmith-integration-openstacksdk-src https://zuul.opendev.org/t/openstack/build/acf4847407434e09882f106d43293368 : SUCCESS in 55m 01s (non-voting)\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/440c054903b7438bbc1f1f783721f043 : SUCCESS in 3m 43s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/6c544a83d3cf4b4693fd0d9b3cde64e1 : SUCCESS in 3m 40s\n- openstack-tox-py312 https://zuul.opendev.org/t/openstack/build/d98aa3329347425daf78d00aef401bb9 : SUCCESS in 4m 46s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/657c36a098744b8fb3b45c8718d60151 : SUCCESS in 5m 46s (non-voting)\n- openstacksdk-functional-devstack-tips https://zuul.opendev.org/t/openstack/build/4abd36f32ab44e839caa82b5a4cfaaeb : SUCCESS in 58m 27s\n- os-client-config-tox-py311-tips https://zuul.opendev.org/t/openstack/build/16d5b4cbe91449b3af319bece674dbc8 : SUCCESS in 3m 15s\n- osc-tox-py310-tips https://zuul.opendev.org/t/openstack/build/4fdb57f3973b47d4bb5a2a247df3628f : FAILURE in 6m 10s\n- osc-tox-py313-tips https://zuul.opendev.org/t/openstack/build/d9ce598ad89e42b2b7c8c27476bd8368 : FAILURE in 8m 13s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/565edd3d11754156b10370648ca49bbf : SUCCESS in 11m 26s\n- opendev-buildset-registry https://zuul.opendev.org/t/openstack/build/248605135d5a4535a0d7564e08e606bf : SUCCESS in 33m 13s\n- nodepool-build-image-siblings https://zuul.opendev.org/t/openstack/build/60608330070d4224abed31baa041322b : SUCCESS in 9m 10s (non-voting)\n- dib-nodepool-functional-openstack-ubuntu-noble-src https://zuul.opendev.org/t/openstack/build/09f79554f23343408bf5b59cfd721f4d : SUCCESS in 20m 35s (non-voting)\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/f984c3b1f4974e008f1b01348695af08 : SUCCESS in 58m 17s\n- openstacksdk-functional-devstack-networking https://zuul.opendev.org/t/openstack/build/bb826cc79d784c4eb6fc65711ecec8b9 : SUCCESS in 1h 03m 19s\n- openstacksdk-functional-devstack-networking-ext https://zuul.opendev.org/t/openstack/build/1c559ee5c95b4622b3c0fa17840a89eb : SUCCESS in 1h 34m 08s\n- openstacksdk-functional-devstack-magnum https://zuul.opendev.org/t/openstack/build/c76e0b10596341f986dfa5675dc64db8 : FAILURE in 38m 10s (non-voting)\n- openstacksdk-functional-devstack-manila https://zuul.opendev.org/t/openstack/build/2756b373db3c4e6b9d78b9f03430fd97 : SUCCESS in 18m 48s\n- openstacksdk-functional-devstack-masakari https://zuul.opendev.org/t/openstack/build/a81563812b324eb896f21df7bb936732 : SUCCESS in 13m 39s (non-voting)\n- openstacksdk-functional-devstack-ironic https://zuul.opendev.org/t/openstack/build/c7f9e93e8c1543d5969bb260f09268ab : FAILURE in 20m 36s (non-voting)\n- osc-functional-devstack-tips https://zuul.opendev.org/t/openstack/build/14586fe462b2423a81baa9b93a415ccc : SUCCESS in 1h 11m 18s (non-voting)\n- ansible-collections-openstack-functional-devstack https://zuul.opendev.org/t/openstack/build/7ef4197a34b84ffe97e77c933e39cc07 : SUCCESS in 38m 53s (non-voting)","accounts_in_message":[],"_revision_number":1},{"id":"3556df806e7bcc17e300cf5f25d28445a4cb8e0a","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"date":"2025-06-09 13:58:14.000000000","message":"Uploaded patch set 2: Patch Set 1 was rebased.\n\nOutdated Votes:\n* Verified-1\n","accounts_in_message":[],"_revision_number":2},{"id":"4baf1f4bb7d84f29ca76f41d550d334316efee6c","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-06-09 15:41:03.000000000","message":"Patch Set 2: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/be1cc750cb8744f5a4fe3fe813624d82\n\n- ironic-inspector-tempest-openstacksdk-src https://zuul.opendev.org/t/openstack/build/ef162cc31a1c40c59200246505bd2a5d : SUCCESS in 35m 44s (non-voting)\n- bifrost-integration-openstacksdk-src https://zuul.opendev.org/t/openstack/build/4cc5c5440c1a4cd6828bcf7811619687 : SUCCESS in 39m 30s (non-voting)\n- metalsmith-integration-openstacksdk-src https://zuul.opendev.org/t/openstack/build/fd0621b3493d4ad3be245374f7e0c43b : FAILURE in 22m 26s (non-voting)\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/2f66144020d246a2919e0408a837c586 : SUCCESS in 4m 56s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/a0a32e607d014b5c9bd6dd6a938f0243 : SUCCESS in 2m 57s\n- openstack-tox-py312 https://zuul.opendev.org/t/openstack/build/ae61121801d34191bd93246738c64676 : SUCCESS in 4m 32s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/cf186370440d48cba587bbf060aba38c : SUCCESS in 6m 06s (non-voting)\n- openstacksdk-functional-devstack-tips https://zuul.opendev.org/t/openstack/build/937297cc0807407394c8d67d28c7be38 : SUCCESS in 52m 54s\n- os-client-config-tox-py311-tips https://zuul.opendev.org/t/openstack/build/3ccd47655b874df7bf049f8e865ea5b5 : SUCCESS in 2m 42s\n- osc-tox-py310-tips https://zuul.opendev.org/t/openstack/build/0e689de595d943839a90f94caa518ea0 : SUCCESS in 3m 16s\n- osc-tox-py313-tips https://zuul.opendev.org/t/openstack/build/cbf8c25176f14f9496c56961ad4facde : SUCCESS in 9m 26s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/d01547582e0a433d9e976f334970009f : SUCCESS in 12m 13s\n- opendev-buildset-registry https://zuul.opendev.org/t/openstack/build/30b4b685685c4ef1987e78f563c11fa4 : SUCCESS in 55m 24s\n- nodepool-build-image-siblings https://zuul.opendev.org/t/openstack/build/16819e2893284c95b6253f27d878b956 : SUCCESS in 14m 26s (non-voting)\n- dib-nodepool-functional-openstack-ubuntu-noble-src https://zuul.opendev.org/t/openstack/build/abecbe4b7d46434f8e819cc4b444254a : SUCCESS in 34m 14s (non-voting)\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/ea19b07bbb8d4d1d9a50424443ecd997 : SUCCESS in 1h 02m 56s\n- openstacksdk-functional-devstack-networking https://zuul.opendev.org/t/openstack/build/0011fb64f6134e6dbe562e9c0ba24bef : SUCCESS in 55m 23s\n- openstacksdk-functional-devstack-networking-ext https://zuul.opendev.org/t/openstack/build/f6b9facba7094f8fb5ec02c28e7bfbb7 : SUCCESS in 1h 29m 41s\n- openstacksdk-functional-devstack-magnum https://zuul.opendev.org/t/openstack/build/9f7831e3f99f41e7aa4456ddd85a26c6 : FAILURE in 1h 03m 32s (non-voting)\n- openstacksdk-functional-devstack-manila https://zuul.opendev.org/t/openstack/build/d4162b40cee24b98aaa3fcbbfdefca49 : SUCCESS in 28m 13s\n- openstacksdk-functional-devstack-masakari https://zuul.opendev.org/t/openstack/build/21163f6b43aa47698a59a8d37b1d616f : SUCCESS in 12m 20s (non-voting)\n- openstacksdk-functional-devstack-ironic https://zuul.opendev.org/t/openstack/build/df6e5fc1776944cb9f98f1e42a16243c : FAILURE in 35m 28s (non-voting)\n- osc-functional-devstack-tips https://zuul.opendev.org/t/openstack/build/5692bae7760747ab9f8191cbbdf79516 : SUCCESS in 1h 11m 57s (non-voting)\n- ansible-collections-openstack-functional-devstack https://zuul.opendev.org/t/openstack/build/605611f431a04327909b734379f9f750 : SUCCESS in 1h 17m 42s (non-voting)","accounts_in_message":[],"_revision_number":2},{"id":"7a6ca339d46d5a5cb2d516cd623931255a06827c","author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"date":"2025-06-10 15:26:15.000000000","message":"Patch Set 2: Code-Review+2 Workflow+1","accounts_in_message":[],"_revision_number":2},{"id":"409087a5a85ab49a6d5ebe617ff7e01ee981ed70","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-06-10 16:57:55.000000000","message":"Patch Set 2: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":2},{"id":"55508bb2430ac97ae7fd6b4aec48e21ac08b8184","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-06-10 19:36:24.000000000","message":"Patch Set 2: Verified+2\n\nBuild succeeded (gate pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/2310a2e5d16b4a38a32132b79ef6c316\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/1dc7eb1468bf4c3c8ce16bb314288e45 : SUCCESS in 5m 53s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/d0f2100f312c4296a14f008e754aeb6e : SUCCESS in 3m 08s\n- openstack-tox-py312 https://zuul.opendev.org/t/openstack/build/3a3405e9f9f74472b5ae55c534e89966 : SUCCESS in 4m 49s\n- openstacksdk-functional-devstack-tips https://zuul.opendev.org/t/openstack/build/7d27641c6bc549498018a4c9344e729a : SUCCESS in 55m 32s\n- os-client-config-tox-py311-tips https://zuul.opendev.org/t/openstack/build/39dcc97c53544833840c98f59690616b : SUCCESS in 4m 21s\n- osc-tox-py310-tips https://zuul.opendev.org/t/openstack/build/dfb7d4711834449ba36714beca391d2e : SUCCESS in 5m 50s\n- osc-tox-py313-tips https://zuul.opendev.org/t/openstack/build/67e791a0c5f64ae4a317c27cd348d75f : SUCCESS in 4m 12s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/d7c2641f0bf74d5db798d6385884d88b : SUCCESS in 11m 39s\n- opendev-buildset-registry https://zuul.opendev.org/t/openstack/build/3d85e1097f7845b2ab228a7900f2a683 : SUCCESS in 6m 10s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/f486efb052c14d1192a4e37bdea4200f : SUCCESS in 1h 06m 51s\n- openstacksdk-functional-devstack-networking https://zuul.opendev.org/t/openstack/build/2c4a9cc675bd45249981a6f50ca77b0b : SUCCESS in 2h 24m 55s\n- openstacksdk-functional-devstack-networking-ext https://zuul.opendev.org/t/openstack/build/7dea606ea8904bbd96c3af3e5454f6d3 : SUCCESS in 1h 36m 16s","accounts_in_message":[],"_revision_number":2},{"id":"b04191b64c270eefeb6941a42343a75c49b5f806","tag":"autogenerated:gerrit:merged","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-06-10 19:36:24.000000000","message":"Change has been successfully merged","accounts_in_message":[],"_revision_number":2},{"id":"03cfb3747ceeda04e4e0ee63ec51c8315dfde629","tag":"autogenerated:zuul:promote","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-06-10 19:37:27.000000000","message":"Patch Set 2:\n\nBuild succeeded (promote pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/19b8f49c11294a8aa6cf9283ca05a491\n\n- promote-openstack-tox-docs https://zuul.opendev.org/t/openstack/build/7dcf75fa493b4b1094ff8a64cd113233 : SUCCESS in 53s","accounts_in_message":[],"_revision_number":2}],"current_revision_number":2,"current_revision":"7c1e42b4175cd34a2eefb86996221fa55ab895d2","revisions":{"b16642cbddd4185b2dfc5700cee16bb62f4a42dd":{"kind":"REWORK","_number":1,"created":"2025-06-05 16:26:36.000000000","uploader":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"ref":"refs/changes/78/951878/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/openstacksdk","ref":"refs/changes/78/951878/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/openstacksdk refs/changes/78/951878/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/openstacksdk refs/changes/78/951878/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/openstacksdk refs/changes/78/951878/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/openstacksdk refs/changes/78/951878/1"}}},"commit":{"parents":[{"commit":"d20df529656945f2dd85b6a18b1b9949736b536f","subject":"typing: Annotate openstack.config.cloud_config","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/openstacksdk/commit/d20df529656945f2dd85b6a18b1b9949736b536f"}]}],"author":{"name":"Stephen Finucane","email":"stephenfin@redhat.com","date":"2025-06-05 16:25:21.000000000","tz":60},"committer":{"name":"Stephen Finucane","email":"stephenfin@redhat.com","date":"2025-06-05 16:25:21.000000000","tz":60},"subject":"config: Handle interface list in CloudRegion.get_all_version_data","message":"config: Handle interface list in CloudRegion.get_all_version_data\n\nIf a connection is created via an oslo.config cfg.ConfigOpts object,\nthen it\u0027s possible for interface to be a list of interfaces (due to\nvalid_interfaces). We were not previously handling this, resulting in\nthe following error:\n\n  ❯ python -m cfg_test --config-file sample.conf\n  Traceback (most recent call last):\n    File \"\u003cfrozen runpy\u003e\", line 198, in _run_module_as_main\n    File \"\u003cfrozen runpy\u003e\", line 88, in _run_code\n    File \"/dev/cfg-test/__main__.py\", line 25, in \u003cmodule\u003e\n      print(conn.config.get_all_version_data(\u0027placement\u0027))\n            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^\n    File \"/dev/openstacksdk/openstack/config/cloud_region.py\", line 926, in get_all_version_data\n      interface_versions \u003d region_versions.get(interface, {})\n  TypeError: unhashable type: \u0027list\u0027\n\nCorrect this by iterating through all interfaces until we find a\nnon-null version information.\n\nChange-Id: I6e5e1b0f5357afa0462703eb18b9f2da340e90a4\nSigned-off-by: Stephen Finucane \u003cstephenfin@redhat.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/openstacksdk/commit/b16642cbddd4185b2dfc5700cee16bb62f4a42dd"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/openstacksdk/commit/b16642cbddd4185b2dfc5700cee16bb62f4a42dd"}]},"branch":"refs/heads/master"},"7c1e42b4175cd34a2eefb86996221fa55ab895d2":{"kind":"TRIVIAL_REBASE","_number":2,"created":"2025-06-09 13:58:14.000000000","uploader":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"ref":"refs/changes/78/951878/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/openstacksdk","ref":"refs/changes/78/951878/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/openstacksdk refs/changes/78/951878/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/openstacksdk refs/changes/78/951878/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/openstacksdk refs/changes/78/951878/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/openstacksdk refs/changes/78/951878/2"}}},"commit":{"parents":[{"commit":"36a7ccb6f547664d23bf13b4f2cf86ca442c792b","subject":"typing: Annotate openstack.config.cloud_config","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/openstacksdk/commit/36a7ccb6f547664d23bf13b4f2cf86ca442c792b"}]}],"author":{"name":"Stephen Finucane","email":"stephenfin@redhat.com","date":"2025-06-05 16:25:21.000000000","tz":60},"committer":{"name":"Stephen Finucane","email":"stephenfin@redhat.com","date":"2025-06-09 11:12:53.000000000","tz":60},"subject":"config: Handle interface list in CloudRegion.get_all_version_data","message":"config: Handle interface list in CloudRegion.get_all_version_data\n\nIf a connection is created via an oslo.config cfg.ConfigOpts object,\nthen it\u0027s possible for interface to be a list of interfaces (due to\nvalid_interfaces). We were not previously handling this, resulting in\nthe following error:\n\n  ❯ python -m cfg_test --config-file sample.conf\n  Traceback (most recent call last):\n    File \"\u003cfrozen runpy\u003e\", line 198, in _run_module_as_main\n    File \"\u003cfrozen runpy\u003e\", line 88, in _run_code\n    File \"/dev/cfg-test/__main__.py\", line 25, in \u003cmodule\u003e\n      print(conn.config.get_all_version_data(\u0027placement\u0027))\n            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^\n    File \"/dev/openstacksdk/openstack/config/cloud_region.py\", line 926, in get_all_version_data\n      interface_versions \u003d region_versions.get(interface, {})\n  TypeError: unhashable type: \u0027list\u0027\n\nCorrect this by iterating through all interfaces until we find a\nnon-null version information.\n\nChange-Id: I6e5e1b0f5357afa0462703eb18b9f2da340e90a4\nSigned-off-by: Stephen Finucane \u003cstephenfin@redhat.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/openstacksdk/commit/7c1e42b4175cd34a2eefb86996221fa55ab895d2"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/openstacksdk/commit/7c1e42b4175cd34a2eefb86996221fa55ab895d2"}]},"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":{}}}]}
