Project

General

Profile

Actions

coordination #95422

open

[MinimalVM][epic] separate hyperv from svirt backend

Added by mloviska over 3 years ago. Updated 4 months ago.

Status:
New
Priority:
Normal
Assignee:
-
Target version:
-
Start date:
2021-07-13
Due date:
% Done:

0%

Estimated time:

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

  1. hyperV barematel servers
    • Windows 2012r2
    • Windows 2016 (openqaw7-hyperv.qa.suse.de)
    • Windows 2019 (win2k19.qa.suse.cz)
  2. VM domain to translate RDP2VNC
    • hyperv-intermediary (openqaw5-xen-1.qa.suse.de)
  3. 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"


Related issues 3 (2 open1 closed)

Related to openQA Infrastructure (public) - action #97745: [virtualization][hyperv] ensure_serialdev_permissions fails for hypervNew2021-08-31

Actions
Related to openQA Infrastructure (public) - coordination #131519: [epic] Additional redundancy for OSD virtualization testingResolvedokurz2023-02-09

Actions
Related to Containers and images - action #157591: [MinimalVM] Create daily canary jobs for VMware and HyperVWorkable2024-03-20

Actions
Actions

Also available in: Atom PDF