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());

Reply via email to