From b1c8b5ab370f681fa0a92b3f185cab95bd9daad5 Mon Sep 17 00:00:00 2001 From: Nicolas Vazquez Date: Mon, 23 May 2022 08:12:49 -0300 Subject: [PATCH] [KVM] Fix VM migration error due to VNC password on libvirt limiting versions (#6404) * [KVM] Fix VM migration error due to VNC password on libvirt limiting versions * Fix passwd value * Simplify implementation --- .../wrapper/LibvirtMigrateCommandWrapper.java | 12 +++++++++-- .../LibvirtMigrateCommandWrapperTest.java | 21 ++++++++++--------- 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtMigrateCommandWrapper.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtMigrateCommandWrapper.java index ab448df3009..ed3b0481819 100644 --- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtMigrateCommandWrapper.java +++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtMigrateCommandWrapper.java @@ -149,7 +149,11 @@ public final class LibvirtMigrateCommandWrapper extends CommandWrapper * @param xmlDesc the qemu xml description * @param target the ip address to migrate to + * @param vncPassword if set, the VNC password truncated to 8 characters * @return the new xmlDesc */ - String replaceIpForVNCInDescFile(String xmlDesc, final String target) { + String replaceIpForVNCInDescFileAndNormalizePassword(String xmlDesc, final String target, String vncPassword) { final int begin = xmlDesc.indexOf(GRAPHICS_ELEM_START); if (begin >= 0) { final int end = xmlDesc.lastIndexOf(GRAPHICS_ELEM_END) + GRAPHICS_ELEM_END.length(); @@ -460,6 +465,9 @@ public final class LibvirtMigrateCommandWrapper extends CommandWrapper" + - " " + + " " + " " + " " + " " + @@ -588,22 +588,23 @@ public class LibvirtMigrateCommandWrapperTest { final String expectedXmlDesc = "" + " " + - " " + + " " + " " + " " + " " + ""; final String targetIp = "10.10.10.10"; - final String result = libvirtMigrateCmdWrapper.replaceIpForVNCInDescFile(xmlDesc, targetIp); + final String password = "12345678"; + final String result = libvirtMigrateCmdWrapper.replaceIpForVNCInDescFileAndNormalizePassword(xmlDesc, targetIp, password); assertTrue("transformation does not live up to expectation:\n" + result, expectedXmlDesc.equals(result)); } @Test - public void testReplaceFqdnForVNCInDesc() { + public void testReplaceFqdnAndPasswordForVNCInDesc() { final String xmlDesc = "" + " " + - " " + + " " + " " + " " + " " + @@ -611,13 +612,14 @@ public class LibvirtMigrateCommandWrapperTest { final String expectedXmlDesc = "" + " " + - " " + + " " + " " + " " + " " + ""; final String targetIp = "localhost.localdomain"; - final String result = libvirtMigrateCmdWrapper.replaceIpForVNCInDescFile(xmlDesc, targetIp); + final String password = "12345678"; + final String result = libvirtMigrateCmdWrapper.replaceIpForVNCInDescFileAndNormalizePassword(xmlDesc, targetIp, password); assertTrue("transformation does not live up to expectation:\n" + result, expectedXmlDesc.equals(result)); } @@ -789,5 +791,4 @@ public class LibvirtMigrateCommandWrapperTest { Assert.assertTrue(replaced.contains("csdpdk-7")); Assert.assertFalse(replaced.contains("csdpdk-1")); } - }