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"
Updated by okurz over 3 years ago
sounds good. Please just keep in mind that no duplication should be introduced, e.g. use common code in a base class and only handle the differences in subclasses specifically
Updated by jlausuch over 3 years ago
- Tracker changed from action to coordination
Updated by jlausuch over 3 years ago
- Status changed from New to Workable
- Priority changed from Normal to High
Updated by jlausuch over 3 years ago
Martin to break down this epic into smaller tasks.
Updated by ilausuch over 3 years ago
- Subject changed from [svirt] separate hyperv from svirt backend to [epic] [svirt] separate hyperv from svirt backend
This is an epic task that involve different tasks. The first work to do is to determine what are the objectives and what is in the scope of this epic, and then determine what tasks should be done.
Updated by okurz over 3 years ago
Please consider picking up this ticket within the next 30 days or just set the ticket to the next lower priority of "Normal" (SLO: updated within 365 days).
Updated by okurz almost 3 years ago
- Related to action #97745: [virtualization][hyperv] ensure_serialdev_permissions fails for hyperv added
Updated by slo-gin about 2 years ago
This ticket was set to Normal priority but was not updated within the SLO period. Please consider picking up this ticket or just set the ticket to the next lower priority.
Updated by okurz over 1 year ago
- Related to coordination #131519: [epic] Additional redundancy for OSD virtualization testing added
Updated by slo-gin 10 months ago
This ticket was set to Normal priority but was not updated within the SLO period. Please consider picking up this ticket or just set the ticket to the next lower priority.