Project

General

Profile

coordination #100688

Updated by okurz about 2 years ago

## Observation 
 In vmware 7.0, the VNC server is completely removed. However the svirt backend that is used to do vmware virtualization tests heavily relies on VNC to interact with guests. So we have to rework the backend to make it compatible with vmware 7.0, while keeping the current way for vmware 6.5. 
 In vSphere 7.0, the ESXi built-in VNC server has been removed. Users will no longer be able to connect to a virtual machine using a VNC client by setting the RemoteDisplay.vnc.enable configure to be true.  
 Instead, users should use the VM Console via the vSphere Client, the ESXi Host Client, or the VMware Remote Console, to connect virtual machines. Customers desiring VNC access to a VM should use the VirtualMachine.AcquireTicket("webmks") API, which offers a VNC-over-websocket connection. The webmks ticket offers authenticated access to the virtual machine console. For more information, please refer to the VMware HTML Console SDK Documentation(http://www.vmware.com/support/developer/html-console/). 

 ### Impact of this ticket 
 It blocks all VT test on vmware 7.0. 
 According to latest info from Ralf, vmware cloud will potentially be used by SAP as a replacement of xen. So we should give high enough priority to vmware testing. And 7.0 is the current latest vmware version. 

 ## Acceptance criteria 
 * **AC1:** There is support for Vmware7.0 in os-autoinst to get a graphical connection with guests comparable to existing openQA tests 

 ## Suggestions 
 * DONE: Research task #106083 : Learn about VirtualMachine.AcquireTicket("webmks") API first and refine ticket to understand if we can use "VNC as-is" or need further tunneling, etc. 
     * Some curl commands to get started with the API: #106083#note-11 
     * Further details: #106083#note-10 
     * Further links to the VMWare documentation: #106083?#note-4 
     * To test and investigate yourself: Just start a VM via the web UI (see #100688#note-25 for URL and credentials), open the screen and monitor the traffic. 
     * It should be possible to do all the requests and the web socket connection via Mojolicious. 
     * Our VNC code likely needs to be decoupled from reading/writing on a network socket directly (so we can instead read/write data via binary web socket messages). 
     * Hopefully the server will only use formats the client supports. Otherwise we might need to implement support for further formats in our VNC client. 
 * Download evaluation version of VMWare 7, install it locally (your notebook or workstation), try to get something running locally. 
 * DONE: Ask virtualization team for servers which we can use for testing 
 * Create pull request and ask domain experts to test in their near-production or production environment before going ahead 
 * Improve existing unit tests for VNC module to increase its test coverage (before doing any actual changes) -> #107026 
 * Create integration test for the VNC module (using VNC-over-websockets) to test outside of a whole test run 
 * Document how to test manually, e.g. just in the git commit 
 * Consider alternatives to what customers would also use rather than our own custom VNC over websockets implementation. This allows to mitigate implementation risks and provides better, more realistic tests 
   * Automate VMWare tooling as part of tests itself, e.g. the web interface 
   * Start VM with just serial terminal and spawn VNC server within the SUT, compare to s390x z/VM test implementations

Back