Project

General

Profile

coordination #95422

Updated by mloviska almost 4 years ago

`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.](https://github.com/os-autoinst/os-autoinst-distri-opensuse/blob/master/tests/installation/bootloader_hyperv.pm#L244) ). 
 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 
    
 #### Task list: 
   * Introduce a new backend class (backend/hyperv.pm) 
   * Move code from bootloader_hyperv.pm to `start_vm()` 
   * Add RDP support ( as we have VNC ) 
   * `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" 
      

Back