Merge "Updates to image-metadata-prefiltering spec"

This commit is contained in:
Zuul 2019-05-30 17:00:51 +00:00 committed by Gerrit Code Review
commit 7fdc4dc094
1 changed files with 45 additions and 37 deletions

View File

@ -17,7 +17,7 @@ If the operator does not configure the ImagePropertiesFilter and an instance
is scheduled to a host that cannot support the requested device model, a late is scheduled to a host that cannot support the requested device model, a late
check in the virt driver will fail the spawn and trigger a reschedule. check in the virt driver will fail the spawn and trigger a reschedule.
If only a subset of hosts can support the requested device model this If only a subset of hosts can support the requested device model this
frequently results in a ``No valid host`` error. frequently results in a ``NoValidHost`` error.
This proposal suggests using standardised traits and placement to address This proposal suggests using standardised traits and placement to address
device model compatibility by extending existing virt drivers to declare the device model compatibility by extending existing virt drivers to declare the
@ -48,7 +48,7 @@ Proposed change
Step 1: Standard Traits Step 1: Standard Traits
----------------------- -----------------------
Well-defined image metadata properties that have a finite set of values Well-defined `image metadata properties`_ that have a finite set of values
which represent virtualisation capabilities will be converted to standard which represent virtualisation capabilities will be converted to standard
traits. traits.
@ -108,9 +108,9 @@ The current proposed set is
}, },
} }
Note hw_cdrom_bus supports the same values as hw_disk_bus but is not Note ``hw_cdrom_bus`` supports the same values as ``hw_disk_bus`` but is not
documented. hw_cdrom_bus will also be supported by this spec. documented. ``hw_cdrom_bus`` will also be supported by this spec. Other image
Other image properties that may also be worth considering are: properties that may also be worth considering are:
.. code-block:: json .. code-block:: json
@ -147,14 +147,15 @@ Other image properties that may also be worth considering are:
} }
While this spec primarily targets the device model specific image metadata While this spec primarily targets the device model specific image metadata
properties the same pattern could be applied to hypervisor_type and vm_mode. properties the same pattern could be applied to ``hypervisor_type`` and
``vm_mode``.
Creation of the standard traits will be tracked using placement/os-traits Creation of the standard traits will be tracked in a `placement/os-traits
storyboard now that it is extracted from Nova so discussion of how StoryBoard story <os-traits story_>`_. Discussion of how these traits will be
these traits will be named/namespaced will happen outside this spec. named/namespaced will happen there rather than in this spec.
Step 2: Reporting Of Capablities By Virt Drivers Step 2: Reporting Of Capabilities By Virt Drivers
------------------------------------------------ -------------------------------------------------
This spec primarily targets extending the libvirt driver; however as This spec primarily targets extending the libvirt driver; however as
these properties are also used by the vmware and fake drivers they will these properties are also used by the vmware and fake drivers they will
@ -163,7 +164,7 @@ also be extended.
To enable this feature, the virt drivers will be extended to report traits To enable this feature, the virt drivers will be extended to report traits
for each device model they are capable of emulating on the compute node for each device model they are capable of emulating on the compute node
resource provider. This will be done by introspection of the libvirt version, resource provider. This will be done by introspection of the libvirt version,
qemu version, and Nova config such as CONF.virt_type. qemu version, and Nova config such as ``CONF.virt_type``.
To support upgrades without modifying existing images or flavors, the late To support upgrades without modifying existing images or flavors, the late
checks for device model support in the virt driver will not be removed. checks for device model support in the virt driver will not be removed.
@ -174,43 +175,44 @@ Step 3: Requesting A Device Model And Scheduling
A new scheduler prefilter will be added to automatically add the new traits A new scheduler prefilter will be added to automatically add the new traits
to requests. As adding new options to the device models requires a change to to requests. As adding new options to the device models requires a change to
Nova anyway, and these get updated infrequently, we can just have a mapping Nova anyway, and these get updated infrequently, we can just have a mapping
table in a prefilter that added additional traits to the request spec by table in a prefilter that adds additional traits to the request spec by
looking up the appropriate image metadata key and appending the traits to the looking up the appropriate image metadata key and appending the traits to the
request. This will not require changes to images to use the feature. unnumbered request group. This will not require changes to images to use the
feature.
Alternatives Alternatives
------------ ------------
Operators can continue to use image property filters Operators can continue to use image property filters.
If the virt drivers are modified to report traits but a prefilter If the virt drivers are modified to report traits but a prefilter
is not added, the existing ability to specify required traits in an image is not added, the existing ability to specify required traits in an image
would be sufficient to consume the new traits, however, that would require would be sufficient to consume the new traits. However, that would require
the image created to first specify the device model request and then also the image created to first specify the device model request and then also
the required traits. the required traits. E.g.
e.g. ``hw_vif_model=e1000, traits:COMPUTE_NET_MODEL_E1000=required``.
hw_vif_model=e1000 traits:compute_net_model_e1000=required
This will work but it's verbose. This will work but it's verbose.
As with other recent features, we could use the traits request as a As with other recent features, we could use the traits request as a
replacement for an image metadata property. If we chose this option we can replacement for an image metadata property. If we chose this option we could
deprecate the image metadata data values in train e.g. hw_vif_model deprecate the image metadata data values (e.g. ``hw_vif_model``) in train
and remove them in a later release. To use the feature and request a device and remove them in a later release. To use the feature and request a device
model going forward a trait would be used model going forward a trait would be used
e.g. traits:compute_net_model_e1000=required. e.g. ``traits:COMPUTE_NET_MODEL_E1000=required``.
While this may seem nicer in some respects its more typing then the selected While this may seem nicer in some respects it is more typing than the selected
option and has the disadvantage of requiring all image to be updated to include option and has the disadvantage of requiring all images to be updated to
the traits request. As such this is discarded due to the upgrade impact. include the traits request. As such this is discarded due to the upgrade
impact.
Operators can also achive the goals of this spec by manually creating nova host Operators can also achieve the goals of this spec by manually creating nova
aggregates or placement aggregates, then mapping the images to aggregates using host aggregates or placement aggregates, then mapping the images to aggregates
IsolatedHostsFilter or a aggregate member_of placement request. using IsolatedHostsFilter or an aggregate ``member_of`` placement request.
Data model impact Data model impact
----------------- -----------------
A new set of standard traits will be added to os-traits. A `new set of standard traits will be added to os-traits <os-traits story_>`_.
no other data model change should be required. No other data model change should be required.
REST API impact REST API impact
--------------- ---------------
@ -244,8 +246,8 @@ Other deployer impact
--------------------- ---------------------
A new config option will be added to enable the image metadata prefilter. A new config option will be added to enable the image metadata prefilter.
Initally this will default to disabled but that can be change in future Initially this will default to disabled but that can be changed in a future
release after feedback on the performance impact. release based on feedback on the performance impact.
Developer impact Developer impact
---------------- ----------------
@ -255,7 +257,7 @@ None
Upgrade impact Upgrade impact
-------------- --------------
No action is required on upgrade however just as with new deployments No action is required on upgrade. However just as with new deployments
if the operator wishes to enable this feature they will need to if the operator wishes to enable this feature they will need to
update the nova config to enable it after upgrading. update the nova config to enable it after upgrading.
@ -274,12 +276,13 @@ Work Items
- Add new traits - Add new traits
- Modify libvirt virt driver to report traits - Modify libvirt virt driver to report traits
- Write prefilter - Write prefilter
- Add config option
- Tests - Tests
Dependencies Dependencies
============ ============
None `Additions in os-traits <os-traits story_>`_
Testing Testing
======= =======
@ -288,20 +291,25 @@ This can be tested entirely in the gate.
Functional and unit tests will be added. Functional and unit tests will be added.
While tempest tests could be added, since we do not have a While tempest tests could be added, since we do not have a
multinode gate job with different hyperviors tempest will multinode gate job with different hypervisors tempest will
not be extended. not be extended.
Documentation Impact Documentation Impact
==================== ====================
A release note will be added and documentation of the new config option A release note will be added and documentation of the new config option
for the prefilter will be provided. As there is no enduser impact for the prefilter will be provided. As there is no end user impact
no user facing documentation will be required. no user facing documentation will be required.
References References
========== ==========
* `Glance Metadata Definitions Catalog namespaces <image metadata
properties_>`_
* `Additions in os-traits <os-traits story_>`_
None .. _`image metadata properties`:
https://github.com/openstack/glance/tree/master/etc/metadefs
.. _`os-traits story`: https://storyboard.openstack.org/#!/story/2005447
History History
======= =======