)]}'
{"id":"openstack%2Fnova~656382","triplet_id":"openstack%2Fnova~stable%2Fstein~Ib9a9a9a79499272d740a64cc0b909f0299a237d1","project":"openstack/nova","branch":"stable/stein","topic":"bug/1801897","hashtags":[],"change_id":"Ib9a9a9a79499272d740a64cc0b909f0299a237d1","subject":"AZ list performance optimization: avoid double service list DB fetch","status":"MERGED","created":"2019-04-29 19:05:05.000000000","updated":"2019-04-30 13:17:04.000000000","submitted":"2019-04-30 11:26:50.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":"656382-1556623610144-36e30e48","meta_rev_id":"98e8640bf7ac9c249bd8f0c5bbdee5afd78beda8","_number":656382,"virtual_id_number":656382,"owner":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"actions":{},"labels":{"Verified":{"approved":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"value":0,"date":"2019-04-29 19:09:07.000000000","_account_id":14595,"name":"z Systems KVM","email":"zkvm-ci@linux.vnet.ibm.com","username":"ibm-zkvm-ci","tags":["SERVICE_USER"]},{"value":0,"date":"2019-04-29 23:19:10.000000000","_account_id":26515,"name":"Cloudbase Nova Hyper-V CI","email":"nova_hyperv_ci@cloudbasesolutions.com","username":"nova_hyperv_ci"},{"value":0,"date":"2019-04-29 20:24:45.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":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},{"value":2,"date":"2019-04-30 11:26:49.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":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"all":[{"value":0,"_account_id":14595,"name":"z Systems KVM","email":"zkvm-ci@linux.vnet.ibm.com","username":"ibm-zkvm-ci","tags":["SERVICE_USER"]},{"value":0,"_account_id":26515,"name":"Cloudbase Nova Hyper-V CI","email":"nova_hyperv_ci@cloudbasesolutions.com","username":"nova_hyperv_ci"},{"value":0,"_account_id":10118,"name":"IBM PowerKVM CI","email":"kvmpower@linux.vnet.ibm.com","username":"powerkvm","tags":["SERVICE_USER"]},{"value":2,"date":"2019-04-30 08:43:22.000000000","_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},{"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":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"all":[{"value":0,"_account_id":14595,"name":"z Systems KVM","email":"zkvm-ci@linux.vnet.ibm.com","username":"ibm-zkvm-ci","tags":["SERVICE_USER"]},{"value":0,"_account_id":26515,"name":"Cloudbase Nova Hyper-V CI","email":"nova_hyperv_ci@cloudbasesolutions.com","username":"nova_hyperv_ci"},{"value":0,"_account_id":10118,"name":"IBM PowerKVM CI","email":"kvmpower@linux.vnet.ibm.com","username":"powerkvm","tags":["SERVICE_USER"]},{"value":1,"date":"2019-04-30 08:43:22.000000000","_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},{"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},"Review-Priority":{"all":[{"value":0,"_account_id":14595,"name":"z Systems KVM","email":"zkvm-ci@linux.vnet.ibm.com","username":"ibm-zkvm-ci","tags":["SERVICE_USER"]},{"value":0,"_account_id":26515,"name":"Cloudbase Nova Hyper-V CI","email":"nova_hyperv_ci@cloudbasesolutions.com","username":"nova_hyperv_ci"},{"value":0,"_account_id":10118,"name":"IBM PowerKVM CI","email":"kvmpower@linux.vnet.ibm.com","username":"powerkvm","tags":["SERVICE_USER"]},{"value":0,"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{" 0":"Default Priority","+1":"Contributor Review Promise","+2":"Core Review Promise"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":10118,"name":"IBM PowerKVM CI","email":"kvmpower@linux.vnet.ibm.com","username":"powerkvm","tags":["SERVICE_USER"]},{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},{"_account_id":14595,"name":"z Systems KVM","email":"zkvm-ci@linux.vnet.ibm.com","username":"ibm-zkvm-ci","tags":["SERVICE_USER"]},{"_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"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2019-04-29 19:09:07.000000000","updated_by":{"_account_id":14595,"name":"z Systems KVM","email":"zkvm-ci@linux.vnet.ibm.com","username":"ibm-zkvm-ci","tags":["SERVICE_USER"]},"reviewer":{"_account_id":14595,"name":"z Systems KVM","email":"zkvm-ci@linux.vnet.ibm.com","username":"ibm-zkvm-ci","tags":["SERVICE_USER"]},"state":"REVIEWER"},{"updated":"2019-04-29 20:24:45.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-04-29 23:19:10.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-04-30 08:43:22.000000000","updated_by":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"reviewer":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"state":"REVIEWER"},{"updated":"2019-04-30 11:26:49.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":"48051d14bafb9dbfc0420c1baf1582bf87dba81f","author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"date":"2019-04-29 19:05:05.000000000","message":"Patch Set 1: Cherry Picked from branch master.","accounts_in_message":[],"_revision_number":1},{"id":"81180de83decbd5e2b52c74598dd4783249c0f15","author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"date":"2019-04-29 19:05:13.000000000","message":"Topic changed from bug/1801897-stable/stein to bug/1801897","accounts_in_message":[],"_revision_number":1},{"id":"59fd5e96c6a8910ff07ac579d98276beefa3964b","author":{"_account_id":14595,"name":"z Systems KVM","email":"zkvm-ci@linux.vnet.ibm.com","username":"ibm-zkvm-ci","tags":["SERVICE_USER"]},"date":"2019-04-29 19:09:07.000000000","message":"Patch Set 1:\n\nTesting failed ubuntu-xenial-s390x. For rechecking only on the ubuntu-xenial-s390x CI, add a review comment with recheck-zkvm. Contact info: zkvm-ci@linux.vnet.ibm.com. For more information, see https://wiki.openstack.org/wiki/ThirdPartySystems/IBM_zKVM_CI\n\n- check-tempest-dsvm-neutron-full-ubuntu-xenial-s390x http://sng01.objectstorage.softlayer.net/v1/AUTH_1940ea10-6e82-4501-b2f9-eb236510e575/ibmzkvmci/production/656382/1/check-tempest-dsvm-neutron-full-ubuntu-xenial-s390x/39705fe : FAILURE in 3m 12s","accounts_in_message":[],"_revision_number":1},{"id":"692cb49edb215ecac50fca8e9eaa8839c71f84d2","author":{"_account_id":10118,"name":"IBM PowerKVM CI","email":"kvmpower@linux.vnet.ibm.com","username":"powerkvm","tags":["SERVICE_USER"]},"date":"2019-04-29 20:24:45.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://dal05.objectstorage.softlayer.net/v1/AUTH_3d8e6ecb-f597-448c-8ec2-164e9f710dd6/pkvmci/nova/82/656382/1/check/tempest-dsvm-full-xenial/8388afd/ : SUCCESS in 1h 11m 24s\n- tempest-dsvm-full-xenial-py3 https://dal05.objectstorage.softlayer.net/v1/AUTH_3d8e6ecb-f597-448c-8ec2-164e9f710dd6/pkvmci/nova/82/656382/1/check/tempest-dsvm-full-xenial-py3/667eb78/ : SUCCESS in 1h 18m 54s (non-voting)\n- grenade-dsvm-xenial https://dal05.objectstorage.softlayer.net/v1/AUTH_3d8e6ecb-f597-448c-8ec2-164e9f710dd6/pkvmci/nova/82/656382/1/check/grenade-dsvm-xenial/d8153ce/ : SUCCESS in 59m 13s (non-voting)","accounts_in_message":[],"_revision_number":1},{"id":"230ee079fb338f8e49d1603c0570dff4184d72db","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-04-29 22:04:14.000000000","message":"Patch Set 1: Verified+1\n\nBuild succeeded (check pipeline).\n\n- grenade-py3 http://logs.openstack.org/82/656382/1/check/grenade-py3/bb5a826/ : SUCCESS in 59m 16s\n- tempest-full-py3 http://logs.openstack.org/82/656382/1/check/tempest-full-py3/39dd07d/ : SUCCESS in 1h 24m 36s\n- openstack-tox-cover http://logs.openstack.org/82/656382/1/check/openstack-tox-cover/4169f37/cover/ : SUCCESS in 14m 19s\n- openstack-tox-lower-constraints http://logs.openstack.org/82/656382/1/check/openstack-tox-lower-constraints/e499e2d/ : SUCCESS in 17m 57s\n- openstack-tox-pep8 http://logs.openstack.org/82/656382/1/check/openstack-tox-pep8/9895268/ : SUCCESS in 9m 09s\n- openstack-tox-py27 http://logs.openstack.org/82/656382/1/check/openstack-tox-py27/48faff4/ : SUCCESS in 12m 53s\n- openstack-tox-py35 http://logs.openstack.org/82/656382/1/check/openstack-tox-py35/f19cf7a/ : SUCCESS in 15m 13s\n- openstack-tox-py36 http://logs.openstack.org/82/656382/1/check/openstack-tox-py36/040f7f8/ : SUCCESS in 11m 55s\n- openstack-tox-py37 http://logs.openstack.org/82/656382/1/check/openstack-tox-py37/38b452b/ : SUCCESS in 11m 48s\n- openstack-tox-docs http://logs.openstack.org/82/656382/1/check/openstack-tox-docs/20dd6e2/html/ : SUCCESS in 6m 23s\n- ironic-tempest-ipa-wholedisk-bios-agent_ipmitool-tinyipa http://logs.openstack.org/82/656382/1/check/ironic-tempest-ipa-wholedisk-bios-agent_ipmitool-tinyipa/e5d7f3a/ : SUCCESS in 52m 00s (non-voting)\n- devstack-plugin-ceph-tempest http://logs.openstack.org/82/656382/1/check/devstack-plugin-ceph-tempest/41c211b/ : SUCCESS in 1h 23m 23s (non-voting)\n- neutron-grenade-multinode http://logs.openstack.org/82/656382/1/check/neutron-grenade-multinode/09ca066/ : SUCCESS in 1h 06m 46s\n- nova-grenade-live-migration http://logs.openstack.org/82/656382/1/check/nova-grenade-live-migration/f164cad/ : SUCCESS in 1h 08m 45s\n- nova-live-migration http://logs.openstack.org/82/656382/1/check/nova-live-migration/17826c0/ : SUCCESS in 53m 24s\n- nova-next http://logs.openstack.org/82/656382/1/check/nova-next/b735a79/ : SUCCESS in 1h 47m 29s\n- nova-tox-functional http://logs.openstack.org/82/656382/1/check/nova-tox-functional/7d274d1/ : SUCCESS in 19m 23s\n- nova-tox-functional-py35 http://logs.openstack.org/82/656382/1/check/nova-tox-functional-py35/73099d7/ : SUCCESS in 18m 39s\n- tempest-multinode-full http://logs.openstack.org/82/656382/1/check/tempest-multinode-full/754ff0e/ : SUCCESS in 1h 59m 35s (non-voting)\n- tempest-slow-py3 http://logs.openstack.org/82/656382/1/check/tempest-slow-py3/0755164/ : SUCCESS in 2h 10m 34s","accounts_in_message":[],"_revision_number":1},{"id":"710fb43b34123bd8d8887059fc4daa3f3fb91237","author":{"_account_id":26515,"name":"Cloudbase Nova Hyper-V CI","email":"nova_hyperv_ci@cloudbasesolutions.com","username":"nova_hyperv_ci"},"date":"2019-04-29 23:19:10.000000000","message":"Patch Set 1:\n\nBuild succeeded.\n\n- nova http://cloudbase-ci.com/nova/656382/1 : SUCCESS in 2h 11m 06s","accounts_in_message":[],"_revision_number":1},{"id":"f257184f1ad0d82c14e7eca0b9565c9c563b827a","author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"date":"2019-04-30 08:43:22.000000000","message":"Patch Set 1: Code-Review+2 Workflow+1\n\nLGTM, while this isn\u0027t closing a bug outright it\u0027s well described and improves API performance in a suitable way for stable IMHO. Also TIL about the --timing switch in OSC.\n\nApproving as this was submitted to stable/stein by another Nova stable core.","accounts_in_message":[],"_revision_number":1},{"id":"cef3fd709d02c04b3445f3f229d655ffc139e5f1","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-04-30 08:43:52.000000000","message":"Patch Set 1: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":1},{"id":"cc4fab8c5628edc879f950c3ab892e7fac6783b3","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-04-30 11:26:49.000000000","message":"Patch Set 1: Verified+2\n\nBuild succeeded (gate pipeline).\n\n- grenade-py3 http://logs.openstack.org/82/656382/1/gate/grenade-py3/8885d7d/ : SUCCESS in 1h 02m 49s\n- tempest-full-py3 http://logs.openstack.org/82/656382/1/gate/tempest-full-py3/ad73b29/ : SUCCESS in 1h 34m 59s\n- openstack-tox-lower-constraints http://logs.openstack.org/82/656382/1/gate/openstack-tox-lower-constraints/e66ecc7/ : SUCCESS in 16m 49s\n- openstack-tox-pep8 http://logs.openstack.org/82/656382/1/gate/openstack-tox-pep8/1f327cb/ : SUCCESS in 8m 59s\n- openstack-tox-py27 http://logs.openstack.org/82/656382/1/gate/openstack-tox-py27/e4d510a/ : SUCCESS in 14m 00s\n- openstack-tox-py35 http://logs.openstack.org/82/656382/1/gate/openstack-tox-py35/2a95908/ : SUCCESS in 16m 39s\n- openstack-tox-py36 http://logs.openstack.org/82/656382/1/gate/openstack-tox-py36/95c6785/ : SUCCESS in 12m 21s\n- openstack-tox-py37 http://logs.openstack.org/82/656382/1/gate/openstack-tox-py37/fec85a6/ : SUCCESS in 11m 20s\n- openstack-tox-docs http://logs.openstack.org/82/656382/1/gate/openstack-tox-docs/4ee9c71/html/ : SUCCESS in 5m 59s\n- nova-grenade-live-migration http://logs.openstack.org/82/656382/1/gate/nova-grenade-live-migration/24df928/ : SUCCESS in 1h 06m 56s\n- nova-live-migration http://logs.openstack.org/82/656382/1/gate/nova-live-migration/0d5d6df/ : SUCCESS in 45m 43s\n- nova-tox-functional http://logs.openstack.org/82/656382/1/gate/nova-tox-functional/0d8bc24/ : SUCCESS in 18m 19s\n- nova-tox-functional-py35 http://logs.openstack.org/82/656382/1/gate/nova-tox-functional-py35/d0973e7/ : SUCCESS in 18m 46s\n- nova-next http://logs.openstack.org/82/656382/1/gate/nova-next/e1ecc0c/ : SUCCESS in 1h 20m 27s\n- tempest-slow-py3 http://logs.openstack.org/82/656382/1/gate/tempest-slow-py3/2737bb2/ : SUCCESS in 2h 16m 43s","accounts_in_message":[],"_revision_number":1},{"id":"55a2b1d6d3a061ac0a0cdd2c29a190459946ce05","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-04-30 11:26:50.000000000","message":"Change has been successfully merged by Zuul","accounts_in_message":[],"_revision_number":1},{"id":"98e8640bf7ac9c249bd8f0c5bbdee5afd78beda8","author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"date":"2019-04-30 13:17:04.000000000","message":"Patch Set 1: Cherry Picked\n\nThis patchset was cherry picked to branch stable/rocky as commit fa275544c27a5b428ad34b4c03be511607d15bf6","accounts_in_message":[],"_revision_number":1}],"current_revision_number":1,"current_revision":"c280d747fb23f1abaaf91eea7f6d11e716c6db42","revisions":{"c280d747fb23f1abaaf91eea7f6d11e716c6db42":{"kind":"REWORK","_number":1,"created":"2019-04-29 19:05:05.000000000","uploader":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"ref":"refs/changes/82/656382/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/nova","ref":"refs/changes/82/656382/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/nova refs/changes/82/656382/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/nova refs/changes/82/656382/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/nova refs/changes/82/656382/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/nova refs/changes/82/656382/1"}}},"commit":{"parents":[{"commit":"870e5bcfb6a5243a785b66353dda299286274e59","subject":"Create request spec, build request and mappings in one transaction","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/870e5bcfb6a5243a785b66353dda299286274e59"}]}],"author":{"name":"Andrey Volkov","email":"avolkov@mirantis.com","date":"2019-02-14 12:39:45.000000000","tz":180},"committer":{"name":"Matt Riedemann","email":"mriedem.os@gmail.com","date":"2019-04-29 19:05:05.000000000","tz":0},"subject":"AZ list performance optimization: avoid double service list DB fetch","message":"AZ list performance optimization: avoid double service list DB fetch\n\nAssume number of services can be large (10000 as in the bug description),\nthis patch removes second service_get_all call.\n\nzone_hosts changed from dict of lists to dict of sets.\n\nThe HostAPI instance from the API controller is also passed to the\nget_availability_zones method so it does not have to recreate it\nper call (this is both for a slight performance gain but mostly also\nfor test sanity).\n\nOn devstack with 10000 services patch decreased response time twice.\n\nopenstack availability zone list --long --timing\n\n...\n\nBefore:\n\n+-------------------------------------------------------------------------------------------+-----------+\n| URL                                                                                       |   Seconds |\n+-------------------------------------------------------------------------------------------+-----------+\n| GET http://192.168.0.45/identity                                                          |  0.006816 |\n| POST http://192.168.0.45/identity/v3/auth/tokens                                          |  0.456708 |\n| POST http://192.168.0.45/identity/v3/auth/tokens                                          |  0.087485 |\n| GET http://172.18.237.203/compute/v2.1/os-availability-zone/detail                        | 95.667192 |\n| GET http://172.18.237.203/volume/v2/e2671d37ee2c4374bd1533645261f1d4/os-availability-zone |  0.036528 |\n| Total                                                                                     | 96.254729 |\n+-------------------------------------------------------------------------------------------+-----------+\n\nAfter:\n\n+-------------------------------------------------------------------------------------------+-----------+\n| URL                                                                                       |   Seconds |\n+-------------------------------------------------------------------------------------------+-----------+\n| GET http://192.168.0.45/identity                                                          |  0.020215 |\n| POST http://192.168.0.45/identity/v3/auth/tokens                                          |  0.102987 |\n| POST http://192.168.0.45/identity/v3/auth/tokens                                          |  0.111899 |\n| GET http://172.18.237.203/compute/v2.1/os-availability-zone/detail                        | 39.346657 |\n| GET http://172.18.237.203/volume/v2/e2671d37ee2c4374bd1533645261f1d4/os-availability-zone |  0.026403 |\n| Total                                                                                     | 39.608161 |\n+-------------------------------------------------------------------------------------------+-----------+\n\nThe test_availability_zone_detail unit test is updated to assert that\nservices are only retrieved twice (once for enabled, once for disabled).\nWhile in there, the expected response dict is formatted for readability\nand a duplicate zone/host is added to make sure duplicates are handled\nfor available services. To ensure service_get_all is called only twice,\nthe low-level DB API service_get_all stub is replaced with a mock and\nthe mock is changed to be on the HostAPI.service_get_all method which\nis (1) what the API controller code is actually using and (2) allows the\ntest to only mock the instance of the HostAPI being tested - trying to\nmock the DB API service_get_all method causes intermittent failures\nin unrelated tests because of the global nature of that mock.\n\nThere is another opportunity for optimizing get_availability_zones which\nis marked with a TODO but left for a separate patch.\n\nCo-Authored-By: Matt Riedemann \u003cmriedem.os@gmail.com\u003e\n\nPartial-Bug: #1801897\nChange-Id: Ib9a9a9a79499272d740a64cc0b909f0299a237d1\n(cherry picked from commit 74cefe4266a613d4c2afbb0c791e16eb7789aef4)\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/c280d747fb23f1abaaf91eea7f6d11e716c6db42"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/c280d747fb23f1abaaf91eea7f6d11e716c6db42"}]},"branch":"refs/heads/stable/stein"}},"requirements":[],"submit_records":[],"submit_requirements":[]}
