All (but especially out-of-tree compute driver maintainers)- ComputeDriver.get_traits() was introduced mere months ago [1] for initial implementation by Ironic [2] mainly because the whole update_provider_tree framework [3] wasn't fully baked yet. Now that update_provider_tree is a thing, I'm starting work to cut Ironic over to using it [4]. Since, as of this writing, Ironic still has the only in-tree implementation of get_traits [5], I'm planning to whack the ComputeDriver interface [6] and its one callout in the resource tracker [7] at the same time. If you maintain an out-of-tree driver and this is going to break you unbearably, scream now. However, be warned that I will probably just ask you to cut over to update_provider_tree. Thanks, efried [1] https://review.openstack.org/#/c/532290/ [2] https://review.openstack.org/#/q/topic:bp/ironic-driver-traits+(status:open+OR+status:merged) [3] http://specs.openstack.org/openstack/nova-specs/specs/rocky/approved/update-provider-tree.html [4] https://review.openstack.org/#/c/576588/ [5] https://github.com/openstack/nova/blob/0876b091db6f6f0d6795d5907d3d8314706729a7/nova/virt/ironic/driver.py#L737 [6] https://github.com/openstack/nova/blob/ecaadf6d6d3c94706fdd1fb24676e3bd2370f9f7/nova/virt/driver.py#L886-L895 [7] https://github.com/openstack/nova/blob/ecaadf6d6d3c94706fdd1fb24676e3bd2370f9f7/nova/compute/resource_tracker.py#L915-L926