)]}'
{"id":"openstack%2Fnova~670179","triplet_id":"openstack%2Fnova~stable%2Fstein~Ibf430a8bc2a2af9353b8cdf875f8506377a1c9c2","project":"openstack/nova","branch":"stable/stein","topic":"bug/1816086-stable/stein","hashtags":[],"change_id":"Ibf430a8bc2a2af9353b8cdf875f8506377a1c9c2","subject":"Perf: Use dicts for ProviderTree roots","status":"MERGED","created":"2019-07-10 20:11:35.000000000","updated":"2019-07-24 20:20:08.000000000","submitted":"2019-07-24 20:20:07.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":"670179-1563999608004-b2829698","meta_rev_id":"89ef4f3162889b638fe598a704b0842637dc5059","_number":670179,"virtual_id_number":670179,"owner":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"actions":{},"labels":{"Verified":{"approved":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"value":2,"date":"2019-07-24 20:20:07.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":0,"_account_id":30381,"name":"Jean-Pierre REN","email":"renzp@awcloud.com","username":"jpren"},{"value":0,"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},{"value":0,"_account_id":17130,"name":"melissaml","email":"ma.lei@99cloud.net","username":"malei"},{"value":0,"date":"2019-07-11 00:33:13.000000000","permitted_voting_range":{"min":0,"max":1},"_account_id":10118,"name":"IBM PowerKVM CI","email":"kvmpower@linux.vnet.ibm.com","username":"powerkvm","tags":["SERVICE_USER"]},{"value":0,"_account_id":28935,"name":"98k","email":"18552437190@163.com","username":"98k"},{"value":0,"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},{"value":0,"date":"2019-07-10 20:17:45.000000000","_account_id":26515,"name":"Cloudbase Nova Hyper-V CI","email":"nova_hyperv_ci@cloudbasesolutions.com","username":"nova_hyperv_ci"}],"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":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"recommended":{"_account_id":30381,"name":"Jean-Pierre REN","email":"renzp@awcloud.com","username":"jpren"},"all":[{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":1,"date":"2019-07-11 23:08:25.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":30381,"name":"Jean-Pierre REN","email":"renzp@awcloud.com","username":"jpren"},{"value":2,"date":"2019-07-10 20:16:55.000000000","_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},{"value":1,"date":"2019-07-14 08:06:01.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":17130,"name":"melissaml","email":"ma.lei@99cloud.net","username":"malei"},{"value":0,"_account_id":10118,"name":"IBM PowerKVM CI","email":"kvmpower@linux.vnet.ibm.com","username":"powerkvm","tags":["SERVICE_USER"]},{"value":1,"date":"2019-07-14 08:10:57.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":28935,"name":"98k","email":"18552437190@163.com","username":"98k"},{"value":2,"date":"2019-07-24 17:53:47.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},{"value":0,"_account_id":26515,"name":"Cloudbase Nova Hyper-V CI","email":"nova_hyperv_ci@cloudbasesolutions.com","username":"nova_hyperv_ci"}],"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":"","value":1,"default_value":0,"optional":true},"Workflow":{"approved":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"all":[{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":0,"_account_id":30381,"name":"Jean-Pierre REN","email":"renzp@awcloud.com","username":"jpren"},{"value":0,"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},{"value":0,"_account_id":17130,"name":"melissaml","email":"ma.lei@99cloud.net","username":"malei"},{"value":0,"_account_id":10118,"name":"IBM PowerKVM CI","email":"kvmpower@linux.vnet.ibm.com","username":"powerkvm","tags":["SERVICE_USER"]},{"value":0,"_account_id":28935,"name":"98k","email":"18552437190@163.com","username":"98k"},{"value":1,"date":"2019-07-24 17:53:47.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},{"value":0,"_account_id":26515,"name":"Cloudbase Nova Hyper-V CI","email":"nova_hyperv_ci@cloudbasesolutions.com","username":"nova_hyperv_ci"}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true},"Review-Priority":{"all":[{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":0,"_account_id":30381,"name":"Jean-Pierre REN","email":"renzp@awcloud.com","username":"jpren"},{"value":0,"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},{"value":0,"_account_id":17130,"name":"melissaml","email":"ma.lei@99cloud.net","username":"malei"},{"value":0,"_account_id":10118,"name":"IBM PowerKVM CI","email":"kvmpower@linux.vnet.ibm.com","username":"powerkvm","tags":["SERVICE_USER"]},{"value":0,"_account_id":28935,"name":"98k","email":"18552437190@163.com","username":"98k"},{"value":0,"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},{"value":0,"_account_id":26515,"name":"Cloudbase Nova Hyper-V CI","email":"nova_hyperv_ci@cloudbasesolutions.com","username":"nova_hyperv_ci"}],"values":{" 0":"Default Priority","+1":"Contributor Review Promise","+2":"Core Review Promise"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},{"_account_id":10118,"name":"IBM PowerKVM CI","email":"kvmpower@linux.vnet.ibm.com","username":"powerkvm","tags":["SERVICE_USER"]},{"_account_id":17130,"name":"melissaml","email":"ma.lei@99cloud.net","username":"malei"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"_account_id":26515,"name":"Cloudbase Nova Hyper-V CI","email":"nova_hyperv_ci@cloudbasesolutions.com","username":"nova_hyperv_ci"},{"_account_id":28935,"name":"98k","email":"18552437190@163.com","username":"98k"},{"_account_id":30381,"name":"Jean-Pierre REN","email":"renzp@awcloud.com","username":"jpren"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2019-07-10 20:16:55.000000000","updated_by":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"reviewer":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"state":"REVIEWER"},{"updated":"2019-07-10 20:17:45.000000000","updated_by":{"_account_id":26515,"name":"Cloudbase Nova Hyper-V CI","email":"nova_hyperv_ci@cloudbasesolutions.com","username":"nova_hyperv_ci"},"reviewer":{"_account_id":26515,"name":"Cloudbase Nova Hyper-V CI","email":"nova_hyperv_ci@cloudbasesolutions.com","username":"nova_hyperv_ci"},"state":"REVIEWER"},{"updated":"2019-07-11 00:33:13.000000000","updated_by":{"_account_id":10118,"name":"IBM PowerKVM CI","email":"kvmpower@linux.vnet.ibm.com","username":"powerkvm","tags":["SERVICE_USER"]},"reviewer":{"_account_id":10118,"name":"IBM PowerKVM CI","email":"kvmpower@linux.vnet.ibm.com","username":"powerkvm","tags":["SERVICE_USER"]},"state":"REVIEWER"},{"updated":"2019-07-11 23:08:25.000000000","updated_by":{"_account_id":30381,"name":"Jean-Pierre REN","email":"renzp@awcloud.com","username":"jpren"},"reviewer":{"_account_id":30381,"name":"Jean-Pierre REN","email":"renzp@awcloud.com","username":"jpren"},"state":"REVIEWER"},{"updated":"2019-07-14 08:06:01.000000000","updated_by":{"_account_id":17130,"name":"melissaml","email":"ma.lei@99cloud.net","username":"malei"},"reviewer":{"_account_id":17130,"name":"melissaml","email":"ma.lei@99cloud.net","username":"malei"},"state":"REVIEWER"},{"updated":"2019-07-14 08:10:57.000000000","updated_by":{"_account_id":28935,"name":"98k","email":"18552437190@163.com","username":"98k"},"reviewer":{"_account_id":28935,"name":"98k","email":"18552437190@163.com","username":"98k"},"state":"REVIEWER"},{"updated":"2019-07-24 17:53:47.000000000","updated_by":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"reviewer":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"state":"REVIEWER"},{"updated":"2019-07-24 20:20:07.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":"7ebd19f244fdb02ace0ad82e1ed219e9a728d407","author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"date":"2019-07-10 20:11:35.000000000","message":"Patch Set 1: Cherry Picked from branch master.","accounts_in_message":[],"_revision_number":1},{"id":"e79b438d4a7104041120c8146bd6718ea9ff42c8","author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"date":"2019-07-10 20:16:55.000000000","message":"Patch Set 1: Code-Review+2\n\nClean backport, lgtm.","accounts_in_message":[],"_revision_number":1},{"id":"921d1c1af5618d4cc95993bc80413400fcc4062c","author":{"_account_id":26515,"name":"Cloudbase Nova Hyper-V CI","email":"nova_hyperv_ci@cloudbasesolutions.com","username":"nova_hyperv_ci"},"date":"2019-07-10 20:17:45.000000000","message":"Patch Set 1:\n\nFor rechecking only on the Cloudbase Nova Hyper-V CI, add a review comment with run-Cloudbase Nova Hyper-V CI\n\n- nova http://cloudbase-ci.com/nova/670179/1 : FAILURE in 48s","accounts_in_message":[],"_revision_number":1},{"id":"c2ce558ee51254bbaa84dfe711bcde95df0724d1","author":{"_account_id":10118,"name":"IBM PowerKVM CI","email":"kvmpower@linux.vnet.ibm.com","username":"powerkvm","tags":["SERVICE_USER"]},"date":"2019-07-11 00:33:13.000000000","message":"Patch Set 1:\n\nBuild succeeded. Test completed on IBM PowerKVM platform. For rechecking only on the IBM PowerKVM CI, add a review comment with pkvm: recheck. For contact and more information, see https://wiki.openstack.org/wiki/PowerKVM\n\n- tempest-dsvm-full-xenial https://oplab9.parqtec.unicamp.br/pub/ppc64el/openstack/nova/79/670179/1/check/tempest-dsvm-full-xenial/b3e9c77/ : SUCCESS in 1h 13m 49s\n- tempest-dsvm-full-xenial-py3 https://oplab9.parqtec.unicamp.br/pub/ppc64el/openstack/nova/79/670179/1/check/tempest-dsvm-full-xenial-py3/49cd057/ : SUCCESS in 1h 23m 36s (non-voting)\n- grenade-dsvm-xenial https://oplab9.parqtec.unicamp.br/pub/ppc64el/openstack/nova/79/670179/1/check/grenade-dsvm-xenial/3f864ce/ : SUCCESS in 1h 07m 44s (non-voting)","accounts_in_message":[],"_revision_number":1},{"id":"4e5b91be16cb6370faf44ef5dd38fc65077ef667","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-07-11 02:56:50.000000000","message":"Patch Set 1: Verified+1\n\nBuild succeeded (check pipeline).\n\n- grenade-py3 http://logs.openstack.org/79/670179/1/check/grenade-py3/950c0b1/ : SUCCESS in 1h 02m 10s\n- tempest-full-py3 http://logs.openstack.org/79/670179/1/check/tempest-full-py3/18ac314/ : SUCCESS in 1h 15m 29s\n- openstack-tox-cover http://logs.openstack.org/79/670179/1/check/openstack-tox-cover/c72cf17/cover/ : SUCCESS in 16m 33s\n- openstack-tox-lower-constraints http://logs.openstack.org/79/670179/1/check/openstack-tox-lower-constraints/607c904/ : SUCCESS in 14m 40s\n- openstack-tox-pep8 http://logs.openstack.org/79/670179/1/check/openstack-tox-pep8/012d440/ : SUCCESS in 9m 54s\n- openstack-tox-py27 http://logs.openstack.org/79/670179/1/check/openstack-tox-py27/df83289/ : SUCCESS in 11m 32s\n- openstack-tox-py35 http://logs.openstack.org/79/670179/1/check/openstack-tox-py35/e296ae1/ : SUCCESS in 13m 00s\n- openstack-tox-py36 http://logs.openstack.org/79/670179/1/check/openstack-tox-py36/56cce12/ : SUCCESS in 13m 12s\n- openstack-tox-py37 http://logs.openstack.org/79/670179/1/check/openstack-tox-py37/523be35/ : SUCCESS in 12m 25s\n- openstack-tox-docs http://logs.openstack.org/79/670179/1/check/openstack-tox-docs/b567578/html/ : SUCCESS in 6m 14s\n- ironic-tempest-ipa-wholedisk-bios-agent_ipmitool-tinyipa http://logs.openstack.org/79/670179/1/check/ironic-tempest-ipa-wholedisk-bios-agent_ipmitool-tinyipa/0358ea9/ : SUCCESS in 46m 01s (non-voting)\n- devstack-plugin-ceph-tempest http://logs.openstack.org/79/670179/1/check/devstack-plugin-ceph-tempest/667272a/ : SUCCESS in 1h 15m 58s (non-voting)\n- neutron-grenade-multinode http://logs.openstack.org/79/670179/1/check/neutron-grenade-multinode/dd479bb/ : SUCCESS in 1h 02m 35s\n- nova-grenade-live-migration http://logs.openstack.org/79/670179/1/check/nova-grenade-live-migration/53efc9b/ : SUCCESS in 1h 03m 15s\n- nova-live-migration http://logs.openstack.org/79/670179/1/check/nova-live-migration/f5b4ea1/ : SUCCESS in 45m 06s\n- nova-lvm http://logs.openstack.org/79/670179/1/check/nova-lvm/1ab98e4/ : SUCCESS in 57m 47s (non-voting)\n- nova-next http://logs.openstack.org/79/670179/1/check/nova-next/ab4f9e7/ : SUCCESS in 1h 57m 31s\n- nova-tox-functional http://logs.openstack.org/79/670179/1/check/nova-tox-functional/05ec8ac/ : SUCCESS in 16m 51s\n- nova-tox-functional-py35 http://logs.openstack.org/79/670179/1/check/nova-tox-functional-py35/5222630/ : SUCCESS in 24m 53s\n- tempest-multinode-full http://logs.openstack.org/79/670179/1/check/tempest-multinode-full/356aaae/ : SUCCESS in 1h 33m 35s (non-voting)\n- tempest-slow-py3 http://logs.openstack.org/79/670179/1/check/tempest-slow-py3/9895b93/ : SUCCESS in 2h 11m 46s","accounts_in_message":[],"_revision_number":1},{"id":"b0052344538319ee5bda9df078c7585e6f1e4258","author":{"_account_id":30381,"name":"Jean-Pierre REN","email":"renzp@awcloud.com","username":"jpren"},"date":"2019-07-11 23:08:25.000000000","message":"Patch Set 1: Code-Review+1","accounts_in_message":[],"_revision_number":1},{"id":"7b27012de7e5f37ebe5d2613c3dd4464da5f6031","author":{"_account_id":17130,"name":"melissaml","email":"ma.lei@99cloud.net","username":"malei"},"date":"2019-07-14 08:06:01.000000000","message":"Patch Set 1: Code-Review+1","accounts_in_message":[],"_revision_number":1},{"id":"2e702ebefd30dbfc4e339d7d0d1a6a2e4eeb15b4","author":{"_account_id":28935,"name":"98k","email":"18552437190@163.com","username":"98k"},"date":"2019-07-14 08:10:57.000000000","message":"Patch Set 1: Code-Review+1","accounts_in_message":[],"_revision_number":1},{"id":"484366f4cab66b8cc95ca2646fe53f82e2be2166","author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"date":"2019-07-24 17:53:47.000000000","message":"Patch Set 1: Code-Review+2 Workflow+1\n\nLGTM","accounts_in_message":[],"_revision_number":1},{"id":"5a78fdb80a1ed7eb8bf3190776d5ec6be97198f4","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-07-24 17:54:18.000000000","message":"Patch Set 1: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":1},{"id":"6dccc0cf8356c43aa9cd83c49303820b9677d2c1","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-07-24 20:20:07.000000000","message":"Patch Set 1: Verified+2\n\nBuild succeeded (gate pipeline).\n\n- grenade-py3 http://logs.openstack.org/79/670179/1/gate/grenade-py3/1506115/ : SUCCESS in 1h 18m 48s\n- tempest-full-py3 http://logs.openstack.org/79/670179/1/gate/tempest-full-py3/e416c38/ : SUCCESS in 1h 36m 07s\n- openstack-tox-lower-constraints http://logs.openstack.org/79/670179/1/gate/openstack-tox-lower-constraints/2de109d/ : SUCCESS in 11m 10s\n- openstack-tox-pep8 http://logs.openstack.org/79/670179/1/gate/openstack-tox-pep8/1f6937a/ : SUCCESS in 10m 07s\n- openstack-tox-py27 http://logs.openstack.org/79/670179/1/gate/openstack-tox-py27/bbc36e9/ : SUCCESS in 12m 38s\n- openstack-tox-py35 http://logs.openstack.org/79/670179/1/gate/openstack-tox-py35/f9e3c4c/ : SUCCESS in 20m 08s\n- openstack-tox-py36 http://logs.openstack.org/79/670179/1/gate/openstack-tox-py36/10225ae/ : SUCCESS in 12m 13s\n- openstack-tox-py37 http://logs.openstack.org/79/670179/1/gate/openstack-tox-py37/05f2a0a/ : SUCCESS in 13m 57s\n- openstack-tox-docs http://logs.openstack.org/79/670179/1/gate/openstack-tox-docs/08f7cff/html/ : SUCCESS in 7m 50s\n- nova-grenade-live-migration http://logs.openstack.org/79/670179/1/gate/nova-grenade-live-migration/be375ff/ : SUCCESS in 1h 06m 14s\n- nova-live-migration http://logs.openstack.org/79/670179/1/gate/nova-live-migration/5a03492/ : SUCCESS in 57m 01s\n- nova-tox-functional http://logs.openstack.org/79/670179/1/gate/nova-tox-functional/a2ef6c4/ : SUCCESS in 21m 59s\n- nova-tox-functional-py35 http://logs.openstack.org/79/670179/1/gate/nova-tox-functional-py35/029cd11/ : SUCCESS in 23m 00s\n- nova-next http://logs.openstack.org/79/670179/1/gate/nova-next/0c2111a/ : SUCCESS in 1h 26m 51s\n- tempest-slow-py3 http://logs.openstack.org/79/670179/1/gate/tempest-slow-py3/35a773c/ : SUCCESS in 2h 17m 28s","accounts_in_message":[],"_revision_number":1},{"id":"6f16cb987c064912b225e77065266198f7f33bfa","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-07-24 20:20:08.000000000","message":"Change has been successfully merged by Zuul","accounts_in_message":[],"_revision_number":1}],"current_revision_number":1,"current_revision":"754d8eb76c6fcd539fc2c32f0e2f90f6503b9f0c","revisions":{"754d8eb76c6fcd539fc2c32f0e2f90f6503b9f0c":{"kind":"REWORK","_number":1,"created":"2019-07-10 20:11:35.000000000","uploader":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"ref":"refs/changes/79/670179/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/nova","ref":"refs/changes/79/670179/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/nova refs/changes/79/670179/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/nova refs/changes/79/670179/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/nova refs/changes/79/670179/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/nova refs/changes/79/670179/1"}}},"commit":{"parents":[{"commit":"950e044af1ba58894f0860039b5d62b913e3e0b4","subject":"Merge \"Ignore hw_vif_type for direct, direct-physical vNIC types\" into stable/stein","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/950e044af1ba58894f0860039b5d62b913e3e0b4"}]}],"author":{"name":"Eric Fried","email":"openstack@fried.cc","date":"2019-02-15 16:54:36.000000000","tz":-360},"committer":{"name":"Eric Fried","email":"openstack@fried.cc","date":"2019-07-10 20:11:35.000000000","tz":0},"subject":"Perf: Use dicts for ProviderTree roots","message":"Perf: Use dicts for ProviderTree roots\n\nProviderTree used to keep track of root providers in a list. Since we\ndon\u0027t yet have sharing providers, this would always be a list of one for\nnon-ironic deployments, or N for ironic deployments of N nodes.\n\nTo find a provider (by name or UUID), we would iterate over this list,\nan O(N) operation. For large ironic deployments, this added up fast -\nsee the referenced bug.\n\nWith this change, we store roots in two dicts: one keyed by UUID, one\nkeyed by name. To find a provider, we first check these dicts. If the\nprovider we\u0027re looking for is a root, this is now O(1). (If it\u0027s a\nchild, it would still be O(N), because we iterate over all the roots\nlooking for a descendant that matches. But ironic deployments don\u0027t have\nchild providers (yet?) (right?) so that should be n/a. For non-ironic\ndeployments it\u0027s unchanged: O(M) where M is the number of descendants,\nwhich should be very small for the time being.)\n\nTest note: Existing tests in nova.tests.unit.compute.test_provider_tree\nthoroughly cover all the affected code paths. There was one usage of\nProviderTree.roots that was untested and broken (even before this\nchange) which is now fixed.\n\nChange-Id: Ibf430a8bc2a2af9353b8cdf875f8506377a1c9c2\nCloses-Bug: #1816086\n(cherry picked from commit 8c797450cbff5194fb6791cd0a07fa060dc8af72)\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/754d8eb76c6fcd539fc2c32f0e2f90f6503b9f0c"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/754d8eb76c6fcd539fc2c32f0e2f90f6503b9f0c"}]},"branch":"refs/heads/stable/stein"}},"requirements":[],"submit_records":[],"submit_requirements":[]}
