Project

General

Profile

Actions

coordination #95422

open

[MinimalVM][epic] separate hyperv from svirt backend

Added by mloviska over 3 years ago. Updated 3 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 2 (1 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
Actions #1

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

Actions #2

Updated by jlausuch over 3 years ago

  • Tracker changed from action to coordination
Actions #3

Updated by jlausuch over 3 years ago

  • Status changed from New to Workable
  • Priority changed from Normal to High
Actions #4

Updated by jlausuch over 3 years ago

Martin to break down this epic into smaller tasks.

Actions #5

Updated by mloviska over 3 years ago

  • Description updated (diff)
Actions #6

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.

Actions #7

Updated by mloviska over 3 years ago

  • Description updated (diff)
Actions #8

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).

Actions #9

Updated by jlausuch over 3 years ago

  • Priority changed from High to Normal
Actions #10

Updated by jlausuch about 3 years ago

  • Status changed from Workable to New
Actions #11

Updated by okurz almost 3 years ago

  • Related to action #97745: [virtualization][hyperv] ensure_serialdev_permissions fails for hyperv added
Actions #12

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.

Actions #13

Updated by okurz over 1 year ago

  • Related to coordination #131519: [epic] Additional redundancy for OSD virtualization testing added
Actions #14

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.

Actions #15

Updated by ph03nix 3 months ago

  • Tags set to MinimalVM
Actions #16

Updated by ph03nix 3 months ago

  • Project changed from 208 to Containers and images
Actions #17

Updated by ph03nix 3 months ago

  • Subject changed from [epic] [svirt] separate hyperv from svirt backend to [MinimalVM][epic] separate hyperv from svirt backend
Actions

Also available in: Atom PDF