nova/nova
Matt Riedemann 7ce265ebc5 Convert driver supported capabilities to compute node provider traits
This builds on the ProviderTree work in the compute driver and
resource tracker to take the supported capabilities from a driver and
turn those into standard traits on the compute node resource provider.

This is a simple way to expose in a REST API (Placement in this case)
what a compute node, via its driver, supports.

This is also something easy that we can do in lieu of a full-blown
compute capabilities REST API in nova, which we've talked about for
years but never actually done anything about.

We can later build on this to add a request filter which will mark
certain types of boot-from-volume requests as requiring specific
capabilities, like for volume multiattach and tagged devices.

Any traits provided by the driver will be automatically added during
startup or a periodic update of a compute node:

    https://pasteboard.co/I3iqqNm.jpg

Similarly any traits later retracted by the driver will be
automatically removed.

However any traits associated with capabilities which are
inappropriately added to or removed from the resource provider by the
admin via the Placement API will not be reverted until the compute
service's provider cache is reset.

The new call graph is shown in this sequence diagram:

    https://pasteboard.co/I25qICd.png

Co-Authored-By: Adam Spiers <aspiers@suse.com>

Related to blueprint placement-req-filter
Related to blueprint expose-host-capabilities

Change-Id: I15364d37fb7426f4eec00ca4eaf99bec50e964b6
2019-02-28 23:28:19 +00:00
..
api Merge "Dump config options on wsgi startup earlier" 2019-02-26 17:16:24 +00:00
cells Per aggregate scheduling weight 2019-01-21 11:48:44 +08:00
cmd Merge "Add fill_virtual_interface_list online_data_migration script" 2019-01-31 13:43:35 +00:00
common
compute Convert driver supported capabilities to compute node provider traits 2019-02-28 23:28:19 +00:00
conductor Merge "Fup for the bandwidth series" 2019-02-27 17:13:04 +00:00
conf Merge "ironic: partition compute services by conductor group" 2019-02-28 18:18:46 +00:00
console Use X-Forwarded-Proto as origin protocol if present 2019-01-16 00:28:53 +00:00
consoleauth Fix stacktraces with redis caching backend 2018-09-27 13:15:11 -04:00
db Update mailinglist from dev to discuss 2018-12-05 09:44:35 +08:00
hacking Add a hacking rule for deprecated assertion methods 2018-10-25 11:49:10 +09:00
image Update mailinglist from dev to discuss 2018-12-05 09:44:35 +08:00
ipv6
keymgr
locale Imported Translations from Zanata 2018-09-23 06:53:32 +00:00
network Merge "Fup for the bandwidth series" 2019-02-27 17:13:04 +00:00
notifications The field instance_name was added to InstanceCreatePayload 2019-01-15 15:27:07 +00:00
objects Merge "Remove _legacy_dict methods" 2019-02-23 00:43:35 +00:00
pci PCI: do not force remove allocated devices 2019-02-01 16:57:51 +00:00
policies Merge "Remove deprecated 'flavors' policy" 2019-02-23 06:13:00 +00:00
privsep Move create_tap_dev into privsep. 2019-02-19 03:29:44 +00:00
scheduler Merge "Use placement.inventory.inuse in report client" 2019-02-25 22:47:34 +00:00
servicegroup Fix deprecation warning for threadgroup.add_timer 2019-02-07 09:37:00 -05:00
tests Convert driver supported capabilities to compute node provider traits 2019-02-28 23:28:19 +00:00
virt Convert driver supported capabilities to compute node provider traits 2019-02-28 23:28:19 +00:00
vnc Deprecate the nova-xvpvncproxy service 2018-10-15 10:03:13 +01:00
volume Merge "Avoid BadRequest error log on volume attachment" 2019-02-27 05:13:20 +00:00
__init__.py
availability_zones.py
baserpc.py
block_device.py Add method to generate device names universally 2019-01-15 18:55:11 +00:00
cache_utils.py
config.py Configure placement DB context manager for nova-manage/status 2018-09-05 10:29:48 -04:00
context.py Remove NovaException logging from scatter_gather_cells 2018-11-21 12:43:35 -05:00
crypto.py
debugger.py
exception.py Merge "ironic: partition compute services by conductor group" 2019-02-28 18:18:46 +00:00
exception_wrapper.py Add full traceback to ExceptionPayload in versioned notifications 2018-06-19 16:46:46 +08:00
filters.py
hooks.py
i18n.py
loadables.py
manager.py
policy.py Fix string interpolations in logging calls 2019-01-29 15:06:39 +09:00
profiler.py
quota.py Merge "quota: remove defaults kwarg in get_project_quotas" 2019-02-26 13:26:24 +00:00
rc_fields.py Switch to using os-resource-classes 2019-02-07 11:11:09 +00:00
rpc.py Fix jsonutils.to_primitive UserWarning 2018-12-17 22:56:50 -05:00
safe_utils.py
service.py Move conductor wait_until_ready() delay before manager init 2018-08-31 12:50:10 -07:00
service_auth.py
test.py Merge "Use a static resource tracker in compute manager" 2019-02-04 19:53:38 +00:00
utils.py Merge "Address nits from I9e30a24a4c0640f282f507d0a96640d3cdefe43c" 2019-02-20 16:26:31 +00:00
version.py
weights.py Per aggregate scheduling weight 2019-01-21 11:48:44 +08:00
wsgi.py