Bug 1839808 - Configuring 'e1000e' VIF type results in 'UnsupportedHardware' exception
Summary: Configuring 'e1000e' VIF type results in 'UnsupportedHardware' exception
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat OpenStack
Classification: Red Hat
Component: openstack-nova
Version: 13.0 (Queens)
Hardware: Unspecified
OS: Unspecified
medium
medium
Target Milestone: z13
: 13.0 (Queens)
Assignee: Stephen Finucane
QA Contact: OSP DFG:Compute
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2020-05-25 15:55 UTC by Stan Toporek
Modified: 2023-09-07 23:12 UTC (History)
14 users (show)

Fixed In Version: openstack-nova-17.0.13-21.el7ost
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2020-10-28 18:32:07 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Launchpad 1882919 0 None None None 2020-06-10 10:24:38 UTC
OpenStack gerrit 734777 0 None MERGED libvirt: Mark e1000e VIF as supported 2020-07-31 12:02:12 UTC
Red Hat Product Errata RHBA-2020:4393 0 None None None 2020-10-28 18:32:30 UTC

Description Stan Toporek 2020-05-25 15:55:00 UTC
Description of problem:
Instance failed to spawn: UnsupportedHardware: Requested hardware 'e1000e' is not supported by the 'kvm' virt driver

Version-Release number of selected component (if applicable):
qemu/kvm version 2.12.0-18.el7_6.1

How reproducible:
Every time you try and run a windows server 2012 or windows server 2016

Steps to Reproduce:
1.Start win2012 instance
2.
3.

Actual results:
2020-05-22 16:54:52.886 1 INFO nova.virt.libvirt.driver [req-25aeea48-0db8-4d1e-bcf0-8eab4ae44a79 60ff6613541a554c5924cd66912b877b50ce354929ca546d4ea13210f084095c d441429d70a04daf869a3d701460c712 - b9cfb7d35ccf4d2f877dbf533b4c764d b9cfb7d35ccf4d2f877dbf533b4c764d] Configuring timezone for windows instance to localtime
2020-05-22 16:54:53.266 1 ERROR nova.compute.manager [req-25aeea48-0db8-4d1e-bcf0-8eab4ae44a79 60ff6613541a554c5924cd66912b877b50ce354929ca546d4ea13210f084095c d441429d70a04daf869a3d701460c712 - b9cfb7d35ccf4d2f877dbf533b4c764d b9cfb7d35ccf4d2f877dbf533b4c764d] [instance: dfc6f01a-d5d4-4bbe-a2d9-dd89b89f64df] Instance failed to spawn: UnsupportedHardware: Requested hardware 'e1000e' is not supported by the 'kvm' virt driver
2020-05-22 16:54:53.266 1 ERROR nova.compute.manager [instance: dfc6f01a-d5d4-4bbe-a2d9-dd89b89f64df] Traceback (most recent call last):
2020-05-22 16:54:53.266 1 ERROR nova.compute.manager [instance: dfc6f01a-d5d4-4bbe-a2d9-dd89b89f64df]   File "/usr/lib/python2.7/site-packages/nova/compute/manager.py", line 2273, in _build_resources
2020-05-22 16:54:53.266 1 ERROR nova.compute.manager [instance: dfc6f01a-d5d4-4bbe-a2d9-dd89b89f64df]     yield resources
2020-05-22 16:54:53.266 1 ERROR nova.compute.manager [instance: dfc6f01a-d5d4-4bbe-a2d9-dd89b89f64df]   File "/usr/lib/python2.7/site-packages/nova/compute/manager.py", line 2053, in _build_and_run_instance
2020-05-22 16:54:53.266 1 ERROR nova.compute.manager [instance: dfc6f01a-d5d4-4bbe-a2d9-dd89b89f64df]     block_device_info=block_device_info)
2020-05-22 16:54:53.266 1 ERROR nova.compute.manager [instance: dfc6f01a-d5d4-4bbe-a2d9-dd89b89f64df]   File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/driver.py", line 3110, in spawn
2020-05-22 16:54:53.266 1 ERROR nova.compute.manager [instance: dfc6f01a-d5d4-4bbe-a2d9-dd89b89f64df]     mdevs=mdevs)
2020-05-22 16:54:53.266 1 ERROR nova.compute.manager [instance: dfc6f01a-d5d4-4bbe-a2d9-dd89b89f64df]   File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/driver.py", line 5429, in _get_guest_xml
2020-05-22 16:54:53.266 1 ERROR nova.compute.manager [instance: dfc6f01a-d5d4-4bbe-a2d9-dd89b89f64df]     context, mdevs)
2020-05-22 16:54:53.266 1 ERROR nova.compute.manager [instance: dfc6f01a-d5d4-4bbe-a2d9-dd89b89f64df]   File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/driver.py", line 5226, in _get_guest_config
2020-05-22 16:54:53.266 1 ERROR nova.compute.manager [instance: dfc6f01a-d5d4-4bbe-a2d9-dd89b89f64df]     flavor, virt_type, self._host)
2020-05-22 16:54:53.266 1 ERROR nova.compute.manager [instance: dfc6f01a-d5d4-4bbe-a2d9-dd89b89f64df]   File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/vif.py", line 680, in get_config
2020-05-22 16:54:53.266 1 ERROR nova.compute.manager [instance: dfc6f01a-d5d4-4bbe-a2d9-dd89b89f64df]     vnic_type)
2020-05-22 16:54:53.266 1 ERROR nova.compute.manager [instance: dfc6f01a-d5d4-4bbe-a2d9-dd89b89f64df]   File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/vif.py", line 640, in _get_config_os_vif
2020-05-22 16:54:53.266 1 ERROR nova.compute.manager [instance: dfc6f01a-d5d4-4bbe-a2d9-dd89b89f64df]     host)
2020-05-22 16:54:53.266 1 ERROR nova.compute.manager [instance: dfc6f01a-d5d4-4bbe-a2d9-dd89b89f64df]   File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/vif.py", line 156, in get_base_config
2020-05-22 16:54:53.266 1 ERROR nova.compute.manager [instance: dfc6f01a-d5d4-4bbe-a2d9-dd89b89f64df]     virt=virt_type)
2020-05-22 16:54:53.266 1 ERROR nova.compute.manager [instance: dfc6f01a-d5d4-4bbe-a2d9-dd89b89f64df] UnsupportedHardware: Requested hardware 'e1000e' is not supported by the 'kvm' virt driver
2020-05-22 16:54:53.266 1 ERROR nova.compute.manager [instance: dfc6f01a-d5d4-4bbe-a2d9-dd89b89f64df]
2020-05-22 16:54:53.268 1 INFO nova.compute.manager [req-25aeea48-0db8-4d1e-bcf0-8eab4ae44a79 60ff6613541a554c5924cd66912b877b50ce354929ca546d4ea13210f084095c d441429d70a04daf869a3d701460c712 - b9cfb7d35ccf4d2f877dbf533b4c764d b9cfb7d35ccf4d2f877dbf533b4c764d] [instance: dfc6f01a-d5d4-4bbe-a2d9-dd89b89f64df] Terminating instance
2020-05-22 16:54:53.302 1 INFO nova.virt.libvirt.driver [-] [instance: dfc6f01a-d5d4-4bbe-a2d9-dd89b89f64df] Instance destroyed successfully.
2020-05-22 16:54:53.401 1 INFO os_vif [req-25aeea48-0db8-4d1e-bcf0-8eab4ae44a79 60ff6613541a554c5924cd66912b877b50ce354929ca546d4ea13210f084095c d441429d70a04daf869a3d701460c712 - b9cfb7d35ccf4d2f877dbf533b4c764d b9cfb7d35ccf4d2f877dbf533b4c764d] Successfully unplugged vif VIFBridge(active=False,address=fa:16:3e:26:c7:24,bridge_name='qbr783e39d1-d9',has_traffic_filtering=True,id=783e39d1-d9af-4e69-9ad1-d3835a48529c,network=Network(e15c9d6c-6fa6-45b1-a39f-49e5ff071a56),plugin='ovs',port_profile=VIFPortProfileOpenVSwitch,preserve_on_delete=False,vif_name='tap783e39d1-d9')

Expected results:
Running Windows server 2012 instance

Additional info:

Comment 2 Yvugenfi@redhat.com 2020-06-07 07:16:25 UTC
It looks like nova internal test for supported network device models in qemu\kvm is failing:

Those are the supported models (E1000E is not one of them for some reason):
nova/virt/libvirt/vif.py:92

SUPPORTED_VIF_MODELS = {
    'qemu': [
        network_model.VIF_MODEL_VIRTIO,
        network_model.VIF_MODEL_NE2K_PCI,
        network_model.VIF_MODEL_PCNET,
        network_model.VIF_MODEL_RTL8139,
        network_model.VIF_MODEL_E1000,
        network_model.VIF_MODEL_LAN9118,
        network_model.VIF_MODEL_SPAPR_VLAN],
    'kvm': [
        network_model.VIF_MODEL_VIRTIO,
        network_model.VIF_MODEL_NE2K_PCI,
        network_model.VIF_MODEL_PCNET,
        network_model.VIF_MODEL_RTL8139,
        network_model.VIF_MODEL_E1000,
        network_model.VIF_MODEL_SPAPR_VLAN],
    'xen': [
        network_model.VIF_MODEL_NETFRONT,
        network_model.VIF_MODEL_NE2K_PCI,
        network_model.VIF_MODEL_PCNET,
        network_model.VIF_MODEL_RTL8139,
        network_model.VIF_MODEL_E1000],
    'lxc': [],
    'uml': [],
    'parallels': [
        network_model.VIF_MODEL_VIRTIO,
        network_model.VIF_MODEL_RTL8139,
        network_model.VIF_MODEL_E1000],
}

Then, I assume, for some reason, Windows Server guests are configured to use e1000e and are failing the following test:
nova/virt/libvirt/vif.py:199

 if not is_vif_model_valid_for_virt(virt_type, model):
            raise exception.UnsupportedHardware(model=model, virt=virt_type)


Also, it looks like there was some similar case (it is marked as “Solution verified”). Unfortunately, I don’t have the credentials to access full information.
https://access.redhat.com/solutions/3947641

So either e1000e should be added as a supported network device for QEMU\KVM or Window Server configuration should be edited to use virtio or e1000.

Comment 4 Stephen Finucane 2020-06-10 10:24:06 UTC
This appears to a valid issue. For reference, based on a quick bit of research, libosinfo is configuring VIF type because Windows does not provide virtio drivers out-of-the-box. The e1000e is the PCIe variant of the e1000 NIC and therefore requires the Q35 machine type. Since libvirt supports this for the QEMU/KVM backend, there should be no reason nova does not. The fact we don't appears to have been an oversight.

Comment 5 Stephen Finucane 2020-06-10 10:33:37 UTC
(In reply to Yan Vugenfirer from comment #2)
...
> Also, it looks like there was some similar case (it is marked as “Solution
> verified”). Unfortunately, I don’t have the credentials to access full
> information.
> https://access.redhat.com/solutions/3947641

The solution suggests editing instance records in the DB as a workaround. This should be a last-resort and I'll seek to have this advice removed. The correct solution is to address the issue at root, as you've suggested. This is in progress now.

Comment 13 errata-xmlrpc 2020-10-28 18:32:07 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory (openstack-nova bug fix advisory), and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHBA-2020:4393


Note You need to log in before you can comment on or make changes to this bug.