Commit Graph

5 Commits

Author SHA1 Message Date
Matt Riedemann c9ed708d87 Fix update_provider_tree signature in reference docs
The migration guide for porting from old methods to upt
was missing the allocations kwarg in the code samples.

Change-Id: I43fd8d5eeb382d1e5472fa4e9a2f01bd0e4bf243
2019-06-25 12:46:07 -04:00
Adam Spiers 752b135ec4 Add Venn diagram showing taxonomy of traits and capabilities
This was put together while working on the mechanism for converting
driver capabilities to traits in I15364d37fb7426f4eec00ca4eaf99bec50e964b6:

    https://review.openstack.org/538498

and may help other developers working on this area in the future.

Change-Id: I395e386ee713769d4c105be0dd6e821382945866
2019-04-26 22:54:31 +01:00
Hesam Chobanlou 9db41c5ee0 docs: ComputeDriver.update_provider_tree in nova
This change is an update to the nova reference documentation to reflect
changes to the ComputeDriver.update_provider_tree method in nova drivers.

Change-Id: Ifae98d888069477748ade7ef5e0a5cde5c88ffc2
Closes-Bug: #1800657
2019-02-14 00:17:18 +00:00
Matt Riedemann ca279c68a5 Provide allocation_ratio/reserved amounts from update_provider_tree()
The purpose of the RT._normalize_inventory_from_cn_obj method is
to set allocation_ratio and reserved amounts on standard resource
class inventory records that get sent to placement if the virt driver
did not specifically set a ratio or reserved value (which none but
the ironic driver do).

If the allocation_ratio or reserved amount is in the inventory
data dict from the virt driver, then the normalize method ignores
it and lets the virt driver take priority.

However, with change I6a706ec5966cdc85f97223617662fe15d3e6dc08,
any virt driver that implements the update_provider_tree() interface
is storing the inventory data on the ProviderTree object which gets
cached and re-used, meaning once allocation_ratio/reserved is set
from RT._normalize_inventory_from_cn_obj, it doesn't get unset and
the normalize method always assumes the driver provided a value which
should not be changed, even if the configuration value changes.

We can make the config option changes take effect by changing
the semantics between _normalize_inventory_from_cn_obj and
drivers that implement the update_provider_tree interface, like
for the libvirt driver. Effectively with this change, when a driver
implements update_provider_tree(), they now control setting the
allocation_ratio and reserved resource amounts for inventory they
report. The libvirt driver will use the same configuration option
values that _normalize_inventory_from_cn_obj used. The only difference
is in update_provider_tree we don't have the ComputeNode facade to
get the "real" default values when the allocation_ratio is 0.0, so
we handle that like "CONF.cpu_allocation_ratio or 16.0". Eventually
that will get cleaned up with blueprint initial-allocation-ratios.

Change-Id: I72c83a95dabd581998470edb9543079acb6536a5
Closes-Bug: #1799727
2018-10-29 12:27:31 -04:00
Eric Fried f9e13bcfed update_provider_tree devref and docstring updates
Design changes [1] from the Dublin PTG prompted some rewording of the
docstring for ComputeDriver.update_provider_tree.  And to avoid that
docstring becoming too enormous, relevant chunks of the spec [2] are
copied to a new devref document which is linked from that docstring.

[1] https://review.openstack.org/#/c/552122/
[2] http://specs.openstack.org/openstack/nova-specs/specs/rocky/approved/update-provider-tree.html

Change-Id: I06504aa2a3fe6d39ecc1e681de43be8fee9e06f6
blueprint: update-provider-tree
2018-04-05 09:09:26 -05:00