coordination #95422
open[MinimalVM][epic] separate hyperv from svirt backend
0%
Description
svirt
is designed to take advantage of libvirt, however hyper is using ssh + powershell commands.
The backend code compared to qemu is spreading across backend code and test case code ( bootloader_hyperv.pm - e.g. ).
We should try to unify this approach and get closer to qemu-like backend.
Infrastructure¶
- hyperV barematel servers
- Windows 2012r2
- Windows 2016 (openqaw7-hyperv.qa.suse.de)
- Windows 2019 (win2k19.qa.suse.cz)
- VM domain to translate RDP2VNC
- hyperv-intermediary (openqaw5-xen-1.qa.suse.de)
- xen host
- openqaw5-xen.qa.suse.de hosting VM from 2.
How it works¶
isotovideo
runs on normal x86_64 worker, e.g. openqaworker2, and it's handling several ssh connections for multiple purposes. The first ssh connection is established for hyperv-intermediary VM to have "VNC" interaction with the SUT running on top of hyperv server. Another ssh connection is to handle serial line output (serial0.txt), this is basically done using socat on the worker level, that connects to Name TCP proxy pipes opened port on the hyperv side. The last connection is established in order to handle SUT's VM itself using powershell commands.
Current setup:
* connection to HyperV (start VM, setup Comports @see tests/installation/bootloader_hyperv.pm)
* connection to Intermediate host
* RDP2VNC
* serial to via socat to HyperV
- worker
- connect to intermediate host via VNC (consoles/vnc_base.pm)
- connect to serial via open_serial_console_via_ssh() which is used with consoles/sshVirtshSUT.pm
Ideal setup:
* Worker
* connection to the HyperV host
* RDP session to the Virtual machine
* TCP connection to serial console
Acceptance Criteria:¶
1) Introduce a new backend class (backend/hyperv.pm)
* hyperv code does not use svirt features
it would be better to create a separate hyperv only backend
* add proper clean up proceedure when SUT or VM failure occures ( currently we can see hangs in RDP, socat, or left over VMs and drives )
2) Move code from bootloader_hyperv.pm to start_vm()
* functions that manipulate with hyperv VMs, drives and VM setup should be located in one repository
3) Add RDP support in openQA ( as we have VNC )
* currently we need and addition VM to translate RDP2VNC
4) socat
connection can get stuck and it won't kill the process on consumer side, we need to make sure that backend does not leave any "leftovers"