This is an automated email from the ASF dual-hosted git repository. dahn pushed a commit to branch 4.20 in repository https://gitbox.apache.org/repos/asf/cloudstack.git
The following commit(s) were added to refs/heads/4.20 by this push: new 30deec89e6b kvm: consider Debian same as Ubuntu (#10917) 30deec89e6b is described below commit 30deec89e6b90c9f36ef40dfa2d2582265016417 Author: Wei Zhou <weiz...@apache.org> AuthorDate: Thu Jul 17 15:56:48 2025 +0800 kvm: consider Debian same as Ubuntu (#10917) Co-authored-by: Suresh Kumar Anaparti <sureshkumar.anapa...@gmail.com> --- .../hypervisor/kvm/resource/LibvirtComputingResource.java | 11 ++++++----- .../wrapper/LibvirtCheckConvertInstanceCommandWrapper.java | 2 +- .../wrapper/LibvirtConvertInstanceCommandWrapper.java | 2 +- .../kvm/resource/wrapper/LibvirtReadyCommandWrapper.java | 6 +++--- 4 files changed, 11 insertions(+), 10 deletions(-) diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java index 7fb3839860f..5694c23a216 100644 --- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java +++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java @@ -3368,7 +3368,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv if (!meetRequirements) { return false; } - return isUbuntuHost() || isIoUringSupportedByQemu(); + return isUbuntuOrDebianHost() || isIoUringSupportedByQemu(); } /** @@ -3381,13 +3381,14 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv return diskBus != DiskDef.DiskBus.IDE || getHypervisorQemuVersion() >= HYPERVISOR_QEMU_VERSION_IDE_DISCARD_FIXED; } - public boolean isUbuntuHost() { + public boolean isUbuntuOrDebianHost() { Map<String, String> versionString = getVersionStrings(); String hostKey = "Host.OS"; if (MapUtils.isEmpty(versionString) || !versionString.containsKey(hostKey) || versionString.get(hostKey) == null) { return false; } - return versionString.get(hostKey).equalsIgnoreCase("ubuntu"); + return versionString.get(hostKey).equalsIgnoreCase("ubuntu") + || versionString.get(hostKey).toLowerCase().startsWith("debian"); } private KVMPhysicalDisk getPhysicalDiskFromNfsStore(String dataStoreUrl, DataTO data) { @@ -5357,14 +5358,14 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv public boolean hostSupportsInstanceConversion() { int exitValue = Script.runSimpleBashScriptForExitValue(INSTANCE_CONVERSION_SUPPORTED_CHECK_CMD); - if (isUbuntuHost() && exitValue == 0) { + if (isUbuntuOrDebianHost() && exitValue == 0) { exitValue = Script.runSimpleBashScriptForExitValue(UBUNTU_NBDKIT_PKG_CHECK_CMD); } return exitValue == 0; } public boolean hostSupportsWindowsGuestConversion() { - if (isUbuntuHost()) { + if (isUbuntuOrDebianHost()) { int exitValue = Script.runSimpleBashScriptForExitValue(UBUNTU_WINDOWS_GUEST_CONVERSION_SUPPORTED_CHECK_CMD); return exitValue == 0; } diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtCheckConvertInstanceCommandWrapper.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtCheckConvertInstanceCommandWrapper.java index d3ebb28b106..b94b4830003 100644 --- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtCheckConvertInstanceCommandWrapper.java +++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtCheckConvertInstanceCommandWrapper.java @@ -32,7 +32,7 @@ public class LibvirtCheckConvertInstanceCommandWrapper extends CommandWrapper<Ch public Answer execute(CheckConvertInstanceCommand cmd, LibvirtComputingResource serverResource) { if (!serverResource.hostSupportsInstanceConversion()) { String msg = String.format("Cannot convert the instance from VMware as the virt-v2v binary is not found on host %s. " + - "Please install virt-v2v%s on the host before attempting the instance conversion.", serverResource.getPrivateIp(), serverResource.isUbuntuHost()? ", nbdkit" : ""); + "Please install virt-v2v%s on the host before attempting the instance conversion.", serverResource.getPrivateIp(), serverResource.isUbuntuOrDebianHost()? ", nbdkit" : ""); logger.info(msg); return new CheckConvertInstanceAnswer(cmd, false, msg); } diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtConvertInstanceCommandWrapper.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtConvertInstanceCommandWrapper.java index e79a8da9dda..abc408f20f6 100644 --- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtConvertInstanceCommandWrapper.java +++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtConvertInstanceCommandWrapper.java @@ -60,7 +60,7 @@ public class LibvirtConvertInstanceCommandWrapper extends CommandWrapper<Convert if (cmd.getCheckConversionSupport() && !serverResource.hostSupportsInstanceConversion()) { String msg = String.format("Cannot convert the instance %s from VMware as the virt-v2v binary is not found. " + - "Please install virt-v2v%s on the host before attempting the instance conversion.", sourceInstanceName, serverResource.isUbuntuHost()? ", nbdkit" : ""); + "Please install virt-v2v%s on the host before attempting the instance conversion.", sourceInstanceName, serverResource.isUbuntuOrDebianHost()? ", nbdkit" : ""); logger.info(msg); return new Answer(cmd, false, msg); } diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtReadyCommandWrapper.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtReadyCommandWrapper.java index 485254c6bb9..e74923b281f 100644 --- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtReadyCommandWrapper.java +++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtReadyCommandWrapper.java @@ -43,7 +43,7 @@ public final class LibvirtReadyCommandWrapper extends CommandWrapper<ReadyComman public Answer execute(final ReadyCommand command, final LibvirtComputingResource libvirtComputingResource) { Map<String, String> hostDetails = new HashMap<String, String>(); - if (hostSupportsUefi(libvirtComputingResource.isUbuntuHost()) && libvirtComputingResource.isUefiPropertiesFileLoaded()) { + if (hostSupportsUefi(libvirtComputingResource.isUbuntuOrDebianHost()) && libvirtComputingResource.isUefiPropertiesFileLoaded()) { hostDetails.put(Host.HOST_UEFI_ENABLE, Boolean.TRUE.toString()); } @@ -58,10 +58,10 @@ public final class LibvirtReadyCommandWrapper extends CommandWrapper<ReadyComman return new ReadyAnswer(command, hostDetails); } - private boolean hostSupportsUefi(boolean isUbuntuHost) { + private boolean hostSupportsUefi(boolean isUbuntuOrDebianHost) { int timeout = AgentPropertiesFileHandler.getPropertyValue(AgentProperties.AGENT_SCRIPT_TIMEOUT) * 1000; // Get property value & convert to milliseconds int result; - if (isUbuntuHost) { + if (isUbuntuOrDebianHost) { logger.debug("Running command : [dpkg -l ovmf] with timeout : " + timeout + " ms"); result = Script.executeCommandForExitValue(timeout, Script.getExecutableAbsolutePath("dpkg"), "-l", "ovmf"); } else {