68c970ea99
The libvirt driver power on and hard reboot destroys the domain first and unplugs the vifs then recreate the domain and replug the vifs. However nova does not wait for the network-vif-plugged event before unpause the domain. This can cause that the domain starts running and requesting IP via DHCP before the networking backend finished plugging the vifs. So this patch adds a workaround config option to nova to wait for network-vif-plugged events during hard reboot the same way as nova waits for this event during new instance spawn. This logic cannot be enabled unconditionally as not all neutron networking backend sending plug time events to wait for. Also the logic needs to be vnic_type dependent as ml2/ovs and the in tree sriov backend often deployed together on the same compute. While ml2/ovs sends plug time event the sriov backend does not send it reliably. So the configuration is not just a boolean flag but a list of vnic_types instead. This way the waiting for the plug time event for a vif that is handled by ml2/ovs is possible while the instance has other vifs handled by the sriov backend where no event can be expected. Change-Id: Ie904d1513b5cf76d6d5f6877545e8eb378dd5499 Closes-Bug: #1946729
19 lines
1.1 KiB
YAML
19 lines
1.1 KiB
YAML
---
|
|
issues:
|
|
- |
|
|
The libvirt virt driver in Nova implements power on and hard reboot by
|
|
destroying the domain first and unpluging the vifs then recreating the
|
|
domain and replugging the vifs. However nova does not wait for the
|
|
network-vif-plugged event before unpause the domain. This can cause
|
|
the domain to start running and requesting IP via DHCP before the
|
|
networking backend has finished plugging the vifs. The config option
|
|
[workarounds]wait_for_vif_plugged_event_during_hard_reboot has been added,
|
|
defaulting to an empty list, that can be used to ensure that the libvirt
|
|
driver waits for the network-vif-plugged event for vifs with specific
|
|
``vnic_type`` before it unpauses the domain during hard reboot. This should
|
|
only be used if the deployment uses a networking backend that sends such
|
|
event for the given ``vif_type`` at vif plug time. The ml2/ovs and the
|
|
networking-odl Neutron backend is known to send plug time events for ports
|
|
with ``normal`` ``vnic_type``. For more information see
|
|
https://bugs.launchpad.net/nova/+bug/1946729
|