From 241107a24c32b92600924ef5c590de05747c1c19 Mon Sep 17 00:00:00 2001 From: Wido den Hollander Date: Wed, 23 Sep 2026 09:30:06 +0000 Subject: [PATCH 1/5] kvm: remove unused methods from LibvirtComputingResource None of these has a caller anywhere in the tree, tests included: getHostDistro, isCentosHost, isDirectAttachedNetwork, isSnapshotSupported, post_default_network_rules and getPoolManager. post_default_network_rules shares its name with a function in security_group.py; the script is still invoked through other paths, only the unused Java wrapper for that sub-command goes. --- .../resource/LibvirtComputingResource.java | 75 ------------------- 1 file changed, 75 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 9009ec629ca3..c8057fb201d8 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 @@ -33,7 +33,6 @@ import java.io.FileNotFoundException; import java.io.IOException; import java.io.StringReader; -import java.net.InetAddress; import java.net.NetworkInterface; import java.net.URI; import java.net.URISyntaxException; @@ -2325,19 +2324,6 @@ protected Long getJsonLongValueOrNull(JsonObject jsonObject, String fieldName) { return element.getAsLong(); } - boolean isDirectAttachedNetwork(final String type) { - if ("untagged".equalsIgnoreCase(type)) { - return true; - } else { - try { - Long.valueOf(type); - } catch (final NumberFormatException e) { - return true; - } - return false; - } - } - public String startVM(final Connect conn, final String vmName, final String domainXML) throws LibvirtException, InternalErrorException { return startVM(conn, vmName, domainXML, 0); } @@ -4131,10 +4117,6 @@ public boolean cleanupDisk(final DiskDef disk) { return storagePoolManager.disconnectPhysicalDiskByPath(path); } - protected KVMStoragePoolManager getPoolManager() { - return storagePoolManager; - } - public void detachAndAttachConfigDriveISO(final Connect conn, final String vmName) { // detach and re-attach configdrive ISO List disks = getDisks(conn, vmName); @@ -4978,14 +4960,6 @@ boolean isGuestPVEnabled(final String guestOSName) { return db != DiskDef.DiskBus.IDE; } - public boolean isCentosHost() { - if (hvVersion <= 9) { - return true; - } else { - return false; - } - } - public DiskDef.DiskBus getDiskModelFromVMDetail(final VirtualMachineTO vmTO) { Map details = vmTO.getDetails(); if (details == null) { @@ -5753,41 +5727,6 @@ public boolean defaultNetworkRules(final Connect conn, final String vmName, fina return true; } - protected boolean post_default_network_rules(final Connect conn, final String vmName, final NicTO nic, final Long vmId, final InetAddress dhcpServerIp, final String hostIp, final String hostMacAddr) { - if (!canBridgeFirewall) { - return false; - } - - final List intfs = getInterfaces(conn, vmName); - if (intfs.size() < nic.getDeviceId()) { - return false; - } - - final InterfaceDef intf = intfs.get(nic.getDeviceId()); - final String brname = intf.getBrName(); - final String vif = intf.getDevName(); - - final Script cmd = new Script(securityGroupPath, timeout, LOGGER); - cmd.add("post_default_network_rules"); - cmd.add("--vmname", vmName); - cmd.add("--vmid", vmId.toString()); - cmd.add("--vmip", nic.getIp()); - cmd.add("--vmmac", nic.getMac()); - cmd.add("--vif", vif); - cmd.add("--brname", brname); - if (dhcpServerIp != null) { - cmd.add("--dhcpSvr", dhcpServerIp.getHostAddress()); - } - - cmd.add("--hostIp", hostIp); - cmd.add("--hostMacAddr", hostMacAddr); - final String result = cmd.execute(); - if (result != null) { - return false; - } - return true; - } - public boolean configureDefaultNetworkRulesForSystemVm(final Connect conn, final String vmName) { if (!canBridgeFirewall) { return false; @@ -6023,16 +5962,6 @@ private HashMap> syncNetworkGroups(final long id) { return states; } - /* online snapshot supported by enhanced qemu-kvm */ - private boolean isSnapshotSupported() { - final String result = executeBashScript("qemu-img --help|grep convert"); - if (result != null) { - return false; - } else { - return true; - } - } - public Pair getNicStats(final String nicName) { return new Pair(readDouble(nicName, "rx_bytes"), readDouble(nicName, "tx_bytes")); } @@ -6196,10 +6125,6 @@ public void restoreVMSnapshotMetadata(Domain dm, String vmName, List Date: Wed, 23 Sep 2026 09:30:06 +0000 Subject: [PATCH 2/5] kvm: remove unused accessors and fields from LibvirtVMDef Getters and setters that nothing calls, tests included: getVcpu, getEngine, setBootKernel, setSharable, setAttachDeferred, isAttachDeferred, setHostNetType, getHostNetType, getNetSourceMode, getVirtualPortType, getVirtualPortInterfaceId and isLinkStateUp. With them go the fields that only they touched and that the generated XML never read: _kernel, _initrd, _root, _cmdline, _shareable, _deferAttach, _hostNetType and the HostNicType enum, plus the long unused _ipAddr. --- .../hypervisor/kvm/resource/LibvirtVMDef.java | 60 ------------------- 1 file changed, 60 deletions(-) diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java index 439e4f663416..b865821d6afa 100644 --- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java +++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java @@ -278,10 +278,6 @@ public String toString() { private BootMode _bootmode; private String _arch; private String _loader; - private String _kernel; - private String _initrd; - private String _root; - private String _cmdline; private String _uuid; private final List _bootdevs = new ArrayList(); private String _machine; @@ -341,13 +337,6 @@ public void setLoader(String loader) { _loader = loader; } - public void setBootKernel(String kernel, String initrd, String rootdev, String cmdline) { - _kernel = kernel; - _initrd = initrd; - _root = rootdev; - _cmdline = cmdline; - } - public void setBootOrder(BootOrder order) { _bootdevs.add(order); } @@ -470,10 +459,6 @@ public void setMaxVcpuNum(int maxVcpu) { this.maxVcpu = maxVcpu; } - public int getVcpu() { - return vcpu; - } - public int getMaxVcpu() { return maxVcpu; } @@ -802,7 +787,6 @@ public LibvirtDiskEncryptDetails(String passphraseUuid, QemuObject.EncryptFormat public String getPassphraseUuid() { return this.passphraseUuid; } public QemuObject.EncryptFormat getEncryptFormat() { return this.encryptFormat; } - public String getEngine() { return this.engine; } } public static class DiskGeometry { @@ -958,8 +942,6 @@ public String toString() { private DiskBus _bus; private DiskFmtType _diskFmtType; /* qcow2, raw etc. */ private boolean _readonly = false; - private boolean _shareable = false; - private boolean _deferAttach = false; private Long _bytesReadRate; private Long _bytesReadRateMax; private Long _bytesReadRateMaxLength; @@ -1209,18 +1191,6 @@ public void setReadonly() { _readonly = true; } - public void setSharable() { - _shareable = true; - } - - public void setAttachDeferred(boolean deferAttach) { - _deferAttach = deferAttach; - } - - public boolean isAttachDeferred() { - return _deferAttach; - } - public String getDiskPath() { return _sourcePath; } @@ -1591,22 +1561,16 @@ public String toString() { } } - enum HostNicType { - DIRECT_ATTACHED_WITHOUT_DHCP, DIRECT_ATTACHED_WITH_DHCP, VNET, VLAN; - } - public static final int MULTI_QUEUE_NUMBER_MEANS_CPU_CORES = -1; private GuestNetType _netType; /* * bridge, ethernet, network, user, * internal, vhostuser */ - private HostNicType _hostNetType; /* Only used by agent java code */ private String _netSourceMode; private String _sourceName; private String _networkName; private String _macAddr; - private String _ipAddr; private String _scriptPath; private NicModel _model; private int _networkRateKBps; @@ -1709,14 +1673,6 @@ public void defEthernet(String targetName, String macAddr, NicModel model) { defEthernet(targetName, macAddr, model, null); } - public void setHostNetType(HostNicType hostNetType) { - _hostNetType = hostNetType; - } - - public HostNicType getHostNetType() { - return _hostNetType; - } - public void setPxeDisable(boolean pxeDisable) { _pxeDisable = pxeDisable; } @@ -1729,10 +1685,6 @@ public GuestNetType getNetType() { return _netType; } - public String getNetSourceMode() { - return _netSourceMode; - } - public String getDevName() { return _networkName; } @@ -1753,18 +1705,10 @@ public void setVirtualPortType(String virtualPortType) { _virtualPortType = virtualPortType; } - public String getVirtualPortType() { - return _virtualPortType; - } - public void setVirtualPortInterfaceId(String virtualPortInterfaceId) { _virtualPortInterfaceId = virtualPortInterfaceId; } - public String getVirtualPortInterfaceId() { - return _virtualPortInterfaceId; - } - public void setVlanTag(int vlanTag) { _vlanTag = vlanTag; } @@ -1785,10 +1729,6 @@ public void setLinkStateUp(boolean linkStateUp) { _linkStateUp = linkStateUp; } - public boolean isLinkStateUp() { - return _linkStateUp; - } - public String getDpdkSourcePort() { return _dpdkSourcePort; } From 1a598b7ecce225be863d7d22f3e7e925424469b9 Mon Sep 17 00:00:00 2001 From: Wido den Hollander Date: Wed, 23 Sep 2026 09:30:06 +0000 Subject: [PATCH 3/5] kvm: remove unused methods from KVMHABase The four NfsStoragePool setters, getHBFile, getHBFolder and runScriptRetry have no callers anywhere in the tree. --- .../hypervisor/kvm/resource/KVMHABase.java | 46 ------------------- 1 file changed, 46 deletions(-) diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/KVMHABase.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/KVMHABase.java index f30e2c779195..dffa70c28632 100644 --- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/KVMHABase.java +++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/KVMHABase.java @@ -16,7 +16,6 @@ // under the License. package com.cloud.hypervisor.kvm.resource; -import java.io.File; import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; @@ -64,34 +63,18 @@ public String getPoolUUID() { return poolUuid; } - public void setPoolUUID(String poolUuid) { - this.poolUuid = poolUuid; - } - public String getPoolIp() { return poolIp; } - public void setPoolIp(String poolIp) { - this.poolIp = poolIp; - } - public String getPoolMountSourcePath() { return poolMountSourcePath; } - public void setPoolMountSourcePath(String poolMountSourcePath) { - this.poolMountSourcePath = poolMountSourcePath; - } - public String getMountDestPath() { return mountDestPath; } - public void setMountDestPath(String mountDestPath) { - this.mountDestPath = mountDestPath; - } - public PoolType getType() { return poolType; } @@ -202,35 +185,6 @@ protected void destroyVMs(String mountPath) { } } - protected String getHBFile(String mountPoint, String hostIP) { - return mountPoint + File.separator + "KVMHA" + File.separator + "hb-" + hostIP; - } - - protected String getHBFolder(String mountPoint) { - return mountPoint + File.separator + "KVMHA" + File.separator; - } - - protected String runScriptRetry(String cmdString, OutputInterpreter interpreter) { - String result = null; - for (int i = 0; i < 3; i++) { - Script cmd = new Script("/bin/bash", _timeout); - cmd.add("-c"); - cmd.add(cmdString); - if (interpreter != null) - result = cmd.execute(interpreter); - else { - result = cmd.execute(); - } - if (result == Script.ERR_TIMEOUT) { - continue; - } else if (result == null) { - break; - } - } - - return result; - } - public Boolean hasHeartBeat() { // TODO Auto-generated method stub return null; From f5ef4e6ea516de29c028a5dcd2b5b4be0c668d45 Mon Sep 17 00:00:00 2001 From: Wido den Hollander Date: Wed, 23 Sep 2026 09:30:06 +0000 Subject: [PATCH 4/5] kvm: remove unused methods from storage and utility classes Each of these has no caller anywhere in the tree, tests included: LibvirtSecretDef: getEphemeral, getVolumeVolume, getCephName LibvirtStorageVolumeXMLParser: getBackingFileNameIfExists LibvirtStorageAdaptor: storagePoolRefresh KVMStorageProcessor: getDefaultStorageScriptsDir LibvirtMigrateCommandWrapper: hasClvmDestinationDisks MultipathSCSIAdapterBase / FiberChannelAdapter: isStoragePoolTypeSupported QemuImg: supportsSkipZeros KVMHostInfo: getTotalCpus --- .../kvm/resource/LibvirtSecretDef.java | 12 -------- .../LibvirtStorageVolumeXMLParser.java | 20 ------------- .../wrapper/LibvirtMigrateCommandWrapper.java | 28 ------------------- .../kvm/storage/FiberChannelAdapter.java | 7 ----- .../kvm/storage/KVMStorageProcessor.java | 4 --- .../kvm/storage/LibvirtStorageAdaptor.java | 10 ------- .../kvm/storage/MultipathSCSIAdapterBase.java | 2 -- .../cloudstack/utils/linux/KVMHostInfo.java | 4 --- .../apache/cloudstack/utils/qemu/QemuImg.java | 8 ------ 9 files changed, 95 deletions(-) diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtSecretDef.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtSecretDef.java index 9596b40dec63..e05939d2d6d4 100644 --- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtSecretDef.java +++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtSecretDef.java @@ -51,10 +51,6 @@ public LibvirtSecretDef(Usage usage, String uuid, String description) { _description = description; } - public boolean getEphemeral() { - return _ephemeral; - } - public void setEphemeral(boolean ephemeral) { _ephemeral = ephemeral; } public boolean getPrivate() { @@ -71,14 +67,6 @@ public String getDescription() { return _description; } - public String getVolumeVolume() { - return _volumeVolume; - } - - public String getCephName() { - return _cephName; - } - public void setVolumeVolume(String volume) { _volumeVolume = volume; } diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtStorageVolumeXMLParser.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtStorageVolumeXMLParser.java index 00126a07cd3a..1b6f73039ca5 100644 --- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtStorageVolumeXMLParser.java +++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtStorageVolumeXMLParser.java @@ -61,26 +61,6 @@ public LibvirtStorageVolumeDef parseStorageVolumeXML(String volXML) { return null; } - public String getBackingFileNameIfExists(String volXML) { - try { - DocumentBuilder builder = ParserUtils.getSaferDocumentBuilderFactory().newDocumentBuilder(); - - InputSource is = new InputSource(); - is.setCharacterStream(new StringReader(volXML)); - Document doc = builder.parse(is); - - Element rootElement = doc.getDocumentElement(); - Element backingStore = (Element)rootElement.getElementsByTagName("backingStore").item(0); - if (backingStore != null) { - String[] paths = getTagValue("path", backingStore).split("/"); - return paths[paths.length-1]; - } - } catch (ParserConfigurationException | SAXException | IOException e) { - logger.error(e.toString(), e); - } - return null; - } - private static String getTagValue(String tag, Element eElement) { NodeList nlList = eElement.getElementsByTagName(tag).item(0).getChildNodes(); Node nValue = nlList.item(0); 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 ed02ae6da38d..18b71ff18be9 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 @@ -1082,34 +1082,6 @@ public static String maskSensitiveInfoInXML(String xmlDesc) { "$1*****$3"); } - /** - * Checks if any of the destination disks in the migration target a CLVM or CLVM_NG storage pool. - * This is used to determine if incremental migration should be disabled to avoid libvirt - * precreate errors with QCOW2-on-LVM setups. - * - * @param mapMigrateStorage the map containing migration disk information with destination pool types - * @return true if any destination disk targets CLVM or CLVM_NG, false otherwise - */ - protected boolean hasClvmDestinationDisks(Map mapMigrateStorage) { - if (MapUtils.isEmpty(mapMigrateStorage)) { - return false; - } - - try { - for (Map.Entry entry : mapMigrateStorage.entrySet()) { - MigrateCommand.MigrateDiskInfo diskInfo = entry.getValue(); - if (isClvmBlockDevice(diskInfo)) { - logger.debug("Found disk targeting CLVM/CLVM_NG destination pool"); - return true; - } - } - } catch (final Exception e) { - logger.debug("Failed to check for CLVM destination disks: {}. Assuming no CLVM disks.", e.getMessage()); - } - - return false; - } - private boolean isClvmBlockDevice(MigrateCommand.MigrateDiskInfo diskInfo) { if (diskInfo == null ||diskInfo.getDestPoolType() == null) { return false; diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/FiberChannelAdapter.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/FiberChannelAdapter.java index 0a25b89d8c52..e36a3fb22666 100644 --- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/FiberChannelAdapter.java +++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/FiberChannelAdapter.java @@ -69,13 +69,6 @@ public String getName() { return "FiberChannelAdapter"; } - public boolean isStoragePoolTypeSupported(Storage.StoragePoolType type) { - if (Storage.StoragePoolType.FiberChannel.equals(type)) { - return true; - } - return false; - } - @Override public AddressInfo parseAndValidatePath(String inPath) { // type=FIBERWWN; address=
; connid= diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/KVMStorageProcessor.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/KVMStorageProcessor.java index 0cb32da318ea..e457fb9c1645 100644 --- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/KVMStorageProcessor.java +++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/KVMStorageProcessor.java @@ -262,10 +262,6 @@ public KVMStorageProcessor(final KVMStoragePoolManager storagePoolMgr, final Lib this.resource = resource; } - protected String getDefaultStorageScriptsDir() { - return "scripts/storage/qcow2"; - } - public boolean configure(final String name, final Map params) throws ConfigurationException { storageLayer = new JavaStorageLayer(); storageLayer.configure("StorageLayer", params); diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java index 8a1a7b5bbe2e..29fdab81e73b 100644 --- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java +++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java @@ -282,16 +282,6 @@ public StorageVol createVolume(Connect conn, StoragePool pool, String uuid, long return pool.storageVolCreateXML(volDef.toString(), 0); } - public void storagePoolRefresh(StoragePool pool) { - try { - synchronized (getStoragePool(pool.getUUIDString())) { - refreshPool(pool); - } - } catch (LibvirtException e) { - logger.debug("refresh storage pool failed: " + e.toString()); - } - } - private void checkNetfsStoragePoolMounted(String uuid) { String targetPath = _mountPoint + File.separator + uuid; int mountpointResult = Script.runSimpleBashScriptForExitValue("mountpoint -q " + targetPath); diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/MultipathSCSIAdapterBase.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/MultipathSCSIAdapterBase.java index 13dab6942f8b..08eded5a600a 100644 --- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/MultipathSCSIAdapterBase.java +++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/MultipathSCSIAdapterBase.java @@ -139,8 +139,6 @@ public KVMStoragePool getStoragePool(String uuid, boolean refreshInfo) { public abstract String getName(); - public abstract boolean isStoragePoolTypeSupported(Storage.StoragePoolType type); - public abstract AddressInfo parseAndValidatePath(String path); @Override diff --git a/plugins/hypervisors/kvm/src/main/java/org/apache/cloudstack/utils/linux/KVMHostInfo.java b/plugins/hypervisors/kvm/src/main/java/org/apache/cloudstack/utils/linux/KVMHostInfo.java index 1a562f1d330c..118a48b6f287 100644 --- a/plugins/hypervisors/kvm/src/main/java/org/apache/cloudstack/utils/linux/KVMHostInfo.java +++ b/plugins/hypervisors/kvm/src/main/java/org/apache/cloudstack/utils/linux/KVMHostInfo.java @@ -74,10 +74,6 @@ public KVMHostInfo(long reservedMemory, long overCommitMemory, long manualSpeed, } } - public int getTotalCpus() { - return this.totalCpus; - } - public int getAllocatableCpus() { return this.allocatableCpus; } diff --git a/plugins/hypervisors/kvm/src/main/java/org/apache/cloudstack/utils/qemu/QemuImg.java b/plugins/hypervisors/kvm/src/main/java/org/apache/cloudstack/utils/qemu/QemuImg.java index 49f531ed7c11..46b59afe6d0d 100644 --- a/plugins/hypervisors/kvm/src/main/java/org/apache/cloudstack/utils/qemu/QemuImg.java +++ b/plugins/hypervisors/kvm/src/main/java/org/apache/cloudstack/utils/qemu/QemuImg.java @@ -999,14 +999,6 @@ protected Script createScript(String path, long timeout) { return new Script(path, timeout); } - /** - * Does qemu-img support --target-is-zero - * @return boolean - */ - public boolean supportsSkipZeros() { - return this.skipZero; - } - public void setSkipZero(boolean skipZero) { this.skipZero = skipZero; } From 3f5f1ccbbe413b9aad0a5857e1a9f9d802a99747 Mon Sep 17 00:00:00 2001 From: Wido den Hollander Date: Wed, 23 Sep 2026 09:41:31 +0000 Subject: [PATCH 5/5] kvm: remove unused private members reported by PMD Running PMD's UnusedPrivateMethod, UnusedPrivateField and UnusedLocalVariable rules over the module reported these, each verified by hand against the sources and the tests: LibvirtComputingResource: field host, field gson, method executeBashScript, local devNum in configureIpAddresses, local brname in destroyNetworkRulesForVM LibvirtConnection: field s_connection LibvirtStorageAdaptor: field _manageSnapshotPath and its lookup of managesnapshot.sh, which the adaptor never ran LibvirtMigrateCommandWrapper: method isClvmBlockDevice LibvirtCopyToSecondaryStorageWrapper: local success LibvirtCreateDiskOnlyVMSnapshotCommandWrapper: two unused copies of the volume list Left as reported: getPifs and getOvsPifs are called and were flagged in error, and the write-only fields _crash and _readonly in LibvirtVMDef are kept because dropping them would silently turn their setters into no-ops. --- .../kvm/resource/LibvirtComputingResource.java | 9 --------- .../cloud/hypervisor/kvm/resource/LibvirtConnection.java | 1 - .../wrapper/LibvirtCopyToSecondaryStorageWrapper.java | 2 -- .../LibvirtCreateDiskOnlyVMSnapshotCommandWrapper.java | 2 -- .../resource/wrapper/LibvirtMigrateCommandWrapper.java | 7 ------- .../hypervisor/kvm/storage/LibvirtStorageAdaptor.java | 2 -- 6 files changed, 23 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 c8057fb201d8..f8bbd2595ea5 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 @@ -255,7 +255,6 @@ import com.cloud.vm.VirtualMachine.PowerState; import com.cloud.vm.VmDetailConstants; -import com.google.gson.Gson; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; @@ -439,7 +438,6 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv private String setupTungstenVrouterPath; private String updateTungstenLoadbalancerStatsPath; private String updateTungstenLoadbalancerSslPath; - private String host; private String dcId; private String clusterId; @@ -599,7 +597,6 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv private boolean isReconcileCommandsEnabled = false; - private static Gson gson = new Gson(); /** * Virsh command to set the memory balloon stats period.

@@ -2747,7 +2744,6 @@ protected ExecutionResult prepareNetworkElementCommand(final IpAssocVpcCommand c conn = getLibvirtUtilitiesHelper().getConnectionByVmName(routerName); Pair, Integer> macAddressToNicNumPair = getMacAddressToNicNumPair(conn, routerName); final Map macAddressToNicNum = macAddressToNicNumPair.first(); - Integer devNum = macAddressToNicNumPair.second(); final IpAddressTO[] ips = cmd.getIpAddresses(); for (final IpAddressTO ip : ips) { @@ -5080,10 +5076,6 @@ public List getDisks(final Connect conn, final String vmName) { } } - private String executeBashScript(final String script) { - return createScript(script).execute(); - } - private Script createScript(final String script) { final Script command = new Script("/bin/bash", timeout, LOGGER); command.add("-c"); @@ -5606,7 +5598,6 @@ public boolean destroyNetworkRulesForNic(final Connect conn, final String vmName } final InterfaceDef intf = intfs.get(nic.getDeviceId()); - final String brname = intf.getBrName(); final String vif = intf.getDevName(); final Script cmd = new Script(securityGroupPath, timeout, LOGGER); diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtConnection.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtConnection.java index cbb5d85b712c..6650c35ac21e 100644 --- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtConnection.java +++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtConnection.java @@ -34,7 +34,6 @@ public class LibvirtConnection { protected static Logger LOGGER = LogManager.getLogger(LibvirtConnection.class); static private Map s_connections = new HashMap(); - static private Connect s_connection; static private String s_hypervisorURI; static private Thread libvirtEventThread; diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtCopyToSecondaryStorageWrapper.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtCopyToSecondaryStorageWrapper.java index a8ea0d2ce810..b52cde24f8c7 100644 --- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtCopyToSecondaryStorageWrapper.java +++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtCopyToSecondaryStorageWrapper.java @@ -47,8 +47,6 @@ public Answer execute(CopyToSecondaryStorageCommand command, LibvirtComputingRes KVMStoragePoolManager storagePoolMgr = libvirtResource.getStoragePoolMgr(); KVMStoragePool secondaryPool; - boolean success; - secondaryPool = storagePoolMgr.getStoragePoolByURI(secondaryStorageUrl); String mountPoint = secondaryPool.getLocalPath(); diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtCreateDiskOnlyVMSnapshotCommandWrapper.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtCreateDiskOnlyVMSnapshotCommandWrapper.java index e6edf8e6e398..d152427d195f 100644 --- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtCreateDiskOnlyVMSnapshotCommandWrapper.java +++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtCreateDiskOnlyVMSnapshotCommandWrapper.java @@ -96,7 +96,6 @@ protected Answer takeDiskOnlyVmSnapshotOfRunningVm(CreateDiskOnlyVmSnapshotComma try { LibvirtUtilitiesHelper libvirtUtilitiesHelper = resource.getLibvirtUtilitiesHelper(); Connect conn = libvirtUtilitiesHelper.getConnection(); - List volumeObjectTOS = cmd.getVolumeTOs(); List disks = resource.getDisks(conn, vmName); dm = resource.getDomain(conn, vmName); @@ -164,7 +163,6 @@ protected Answer takeDiskOnlyVmSnapshotOfStoppedVm(CreateDiskOnlyVmSnapshotComma Map mapVolumeToSnapshotSize = new HashMap<>(); String nvramSnapshotPath = null; - List volumeObjectTos = cmd.getVolumeTOs(); KVMStoragePoolManager storagePoolMgr = resource.getStoragePoolMgr(); try { nvramSnapshotPath = backupNvramIfNeeded(cmd, resource); 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 18b71ff18be9..12491e610bb6 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 @@ -1082,13 +1082,6 @@ public static String maskSensitiveInfoInXML(String xmlDesc) { "$1*****$3"); } - private boolean isClvmBlockDevice(MigrateCommand.MigrateDiskInfo diskInfo) { - if (diskInfo == null ||diskInfo.getDestPoolType() == null) { - return false; - } - return (Storage.StoragePoolType.CLVM.equals(diskInfo.getDestPoolType()) || Storage.StoragePoolType.CLVM_NG.equals(diskInfo.getDestPoolType())); - } - /** * Determines if the driver type should be updated during migration based on CLVM involvement. * The driver type needs to be updated when: diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java index 29fdab81e73b..b112a181270b 100644 --- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java +++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java @@ -85,7 +85,6 @@ public class LibvirtStorageAdaptor implements StorageAdaptor { protected Logger logger = LogManager.getLogger(getClass()); private StorageLayer _storageLayer; private String _mountPoint = "/mnt"; - private String _manageSnapshotPath; private static final ConcurrentHashMap storagePoolRefCounts = new ConcurrentHashMap<>(); private String rbdTemplateSnapName = "cloudstack-base-snap"; @@ -106,7 +105,6 @@ public class LibvirtStorageAdaptor implements StorageAdaptor { public LibvirtStorageAdaptor(StorageLayer storage) { _storageLayer = storage; - _manageSnapshotPath = Script.findScript("scripts/storage/qcow2/", "managesnapshot.sh"); } @Override