-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
HyperV: add support for new flags added in libvirt >= 4.7.0 #1949
Conversation
Travis fails. it looks like some 'make generate' changes are missing. @MarSik @michalskrivanek This pr seems relevant to the discussion in #1919 |
yeah, in general not all of them will work on all versions. qemu-kvm-ev (and its equivalent in future) will likely not support some. |
I think I already added that, I've now pushed one last bit which seems irrelevant, but still. Quickly glancing at the failures, they all seem unrelated to this patchset, which just adds three new hyperv booleans: [Fail] ContainerDisk Starting with virtio-win with virtio-win as secondary disk [It] should boot and have the virtio as sata CDROM �[0m�[91mpackage k8s.io/code-generator/cmd/deepcopy-gen: unrecognized import path "k8s.io/code-generator/cmd/deepcopy-gen" (https fetch: Get https://k8s.io/code-generator/cmd/deepcopy-gen?go-get=1: dial tcp 23.236.58.218:443: connect: connection refused) HEAD is now at 5f66499b all: bump to 2.5.0 Summarizing 3 Failures: [Fail] DataVolume Integration Starting a VirtualMachineInstance with a DataVolume as a volume source using Alpine import [It] should be successfully started and stopped multiple times [Fail] Templates Creating VM from Template with RHEL Template when the VirtualMachine was created [It] should succeed to start the VirtualMachine via oc command [Fail] ContainerDisk Starting with virtio-win with virtio-win as secondary disk [It] should boot and have the virtio as sata CDROM |
This patch exposes in the API the last HyperV highlightenments added in libvirt 4.7.0. Signed-off-by: Francesco Romani <fromani@redhat.com>
This patch add support for the HyperV enlightenments added in libvirt 4.7 Signed-off-by: Francesco Romani <fromani@redhat.com>
This apparently cosmetic-only change is the only change that running 'make generate' does to my source tree. Uploading for the sake of the completenss. Signed-off-by: Francesco Romani <fromani@redhat.com>
f904315
to
3749e52
Compare
a couple of the newer hyperV flags (frequencies, reenlightenment) we recently added are related to L2 support, and require host kernel updates. For this reason we want to have a feature gate to guard those settings. Signed-off-by: Francesco Romani <fromani@redhat.com>
Signed-off-by: Francesco Romani <fromani@redhat.com>
ping? |
to learn about the meaning of hyperv flags: https://schd.ws/hosted_files/devconfcz2019/cf/vkuznets_enlightening_kvm_devconf2019.pdf |
@fromanirh Do we really need to expose these options via API or can we set some defaults that will work good, I just did not remember that we had such customization options under the oVirt? PR himself lgtm |
We'd like to do that in https://github.com/kubevirt/common-templates/ , and we like to avoid hardcoding defaults in the code.
In oVirt VDSM used to expose just one flags and apply the "best" settings itself - and in that case the best settings where hardcoded in the Vdsm source code. Here I'm following the path kubevirt choose when it added the hyperv options back in time. |
@fromanirh I see, thanks for the clarification. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lgtm
How are these flags used? I wonder if we need to expose all of them individually in the API, or if we could have someling like an |
There are two group of hyperv flags:
Not sure I completely understood. This presentation is an awesome source of informations: https://schd.ws/hosted_files/devconfcz2019/cf/vkuznets_enlightening_kvm_devconf2019.pdf |
@fabiand There is also the issue with the newest flags (synic for example) that require support from libvirt, qemu and host kernel. The VM will not boot otherwise. We control most of the chain, but not all of it. The qemu "enable all" flag @fromanirh mentioned will enable all flags that are compatible with the node. That is something we can't easily do without reimplementing the detection logic. |
For SyNIC we will need another Issue/PR, because SyNIC support is already merged in kubevirt core |
We are discussing SyNIC - and in general, optimization dependent on host kernel features - on kubevirt-dev. |
Now that the SyNIC/feature gate is handled elsewhere, anything else I can do here? Any more comments? |
Signed-off-by: Francesco Romani <fromani@redhat.com>
|
I'll just write my thoughts here. From my point of view, it's wrong to allow setting flags that will lead a vm to a crash. If we are allowing the API users to set these flags, I think we must distinguish between scenarios that affect scheduling - I want my VM to run on a host that supports these flags. |
Partially obsoleted by #2162 and by upgrade to libvirt 5.1 in |
WIP
What this PR does / why we need it:
This PR adds support for the last HyperV highlightenments
added in libvirt 4.7.0.
Which issue(s) this PR fixes (optional, in
fixes #<issue number>(, fixes #<issue_number>, ...)
format, will close the issue(s) when PR gets merged):Fixes #1919
Special notes for your reviewer:
N/A
Release note: