This is an automated email from the ASF dual-hosted git repository. Pearl1594 pushed a commit to branch clvm-delete-storage in repository https://gitbox.apache.org/repos/asf/cloudstack.git
commit 150d800c09f36c2fac8f3957336c4d46d12b8a9c Author: Pearl1594 <[email protected]> AuthorDate: Fri Oct 9 16:43:47 2026 -0400 CLVM: remove inactive libvirt pool on storage pool delete and stop autostarting CLVM pools --- .../hypervisor/kvm/storage/ClvmStorageAdaptor.java | 37 +++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/ClvmStorageAdaptor.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/ClvmStorageAdaptor.java index e9ec65505e4..a7b4491a821 100644 --- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/ClvmStorageAdaptor.java +++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/ClvmStorageAdaptor.java @@ -89,6 +89,42 @@ public class ClvmStorageAdaptor extends LibvirtStorageAdaptor { } } + @Override + public boolean deleteStoragePool(String uuid) { + logger.info("Attempting to remove CLVM/CLVM_NG storage pool {} from libvirt", uuid); + + if (decStoragePoolRefCount(uuid)) { + logger.info("deleteStoragePool: CLVM/CLVM_NG storage pool {} still in use", uuid); + return true; + } + + try { + return undefineInactiveClvmPool(LibvirtConnection.getConnection(), uuid); + } catch (LibvirtException e) { + throw new CloudRuntimeException(e.toString(), e); + } + } + + private boolean undefineInactiveClvmPool(Connect conn, String uuid) throws LibvirtException { + StoragePool sp; + try { + sp = conn.storagePoolLookupByUUIDString(uuid); + } catch (LibvirtException e) { + logger.warn("CLVM/CLVM_NG storage pool {} doesn't exist in libvirt. Assuming it is already removed", uuid); + return true; + } + + if (sp.isActive() == 1) { + sp.destroy(); + } + if (sp.isPersistent() == 1) { + sp.undefine(); + } + sp.free(); + logger.info("CLVM/CLVM_NG storage pool {} was successfully removed from libvirt", uuid); + return true; + } + @Override public KVMStoragePool getStoragePool(String uuid, boolean refreshInfo) { logger.info("Fetching CLVM/CLVM_NG storage pool {} ", uuid); @@ -290,7 +326,6 @@ public class ClvmStorageAdaptor extends LibvirtStorageAdaptor { try { StoragePool pool = conn.storagePoolDefineXML(poolDef.toString(), 0); logger.info("Created libvirt pool definition for CLVM/CLVM_NG VG: {} (pool will remain inactive)", volgroupName); - pool.setAutostart(1); return pool; } catch (LibvirtException e) { logger.warn("Failed to define CLVM/CLVM_NG pool in libvirt: {}", e.getMessage());
