Optimize hypervisor API calls
The nova CDM builder code and notification handling code had some inefficiencies when it came to looking up a hypevisor to get details. The general pattern used before was: 1. get the minimal hypervisor information by hypervisor_hostname 2. make another query to get the hypervisor details by id In the notifications case, it was actually three calls because the first is listing hyprvisors to filter client-side by service host. This change collapses 1 and 2 above into a single API call to get the hypervisor by hypervisor_hostname with details which will include the service (compute) host information which is what get_compute_node_by_id() was being used for. Now that nothing is using get_compute_node_by_id it is removed. There is more work we could do in get_compute_node_by_hostname if the compute API allowed filtering hypervisors by service host so a TODO is left for that. One final thing: the TODO in get_compute_node_by_hostname about there being more than one hypervisor per compute service host for vmware vcenter is not accurate - nova's vcenter driver hasn't supported a host:node 1:M topology like that since the Liberty release [1]. The only in-tree driver in nova that supports 1:M is the ironic baremetal driver, so the comment is updated. [1] Ifc17c5049e3ed29c8dd130339207907b00433960 Depends-On: https://review.opendev.org/661785/ Change-Id: I5e0e88d7b2dd1a69117ab03e0e66851c687606da
This commit is contained in:
@@ -123,7 +123,6 @@ class TestNovaHelper(base.TestCase):
|
||||
hypervisor = self.fake_hypervisor(hypervisor_id, hypervisor_name)
|
||||
self.fake_nova_hypervisor_list(
|
||||
nova_util,
|
||||
fake_find=hypervisor,
|
||||
fake_list=[hypervisor])
|
||||
nova_util.nova.hypervisors.search.return_value = [hypervisor]
|
||||
# verify that the compute node can be obtained normally by name
|
||||
|
||||
Reference in New Issue
Block a user