This is an automated email from the ASF dual-hosted git repository.

nvazquez pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/cloudstack.git


The following commit(s) were added to refs/heads/main by this push:
     new b88cfc2  Mount disabled storage pool on host reboot (#6164)
b88cfc2 is described below

commit b88cfc226ec4fec3d7bd91f86ac2f54712365a71
Author: Rakesh <[email protected]>
AuthorDate: Sat Apr 2 04:38:32 2022 +0200

    Mount disabled storage pool on host reboot (#6164)
    
    * Mount disabled storage pool on host reboot
    
    Add a global setting so that disabled pools will be mounted
    again on host reboot
    
    * fix build error
    
    * Update description
    
    * add cluster-wide support
    
    Co-authored-by: Rakesh Venkatesh <[email protected]>
---
 .../src/main/java/com/cloud/storage/StorageManager.java   |  9 +++++++++
 .../main/java/com/cloud/storage/StorageManagerImpl.java   |  3 ++-
 .../com/cloud/storage/listener/StoragePoolMonitor.java    | 15 +++++++++++----
 3 files changed, 22 insertions(+), 5 deletions(-)

diff --git 
a/engine/components-api/src/main/java/com/cloud/storage/StorageManager.java 
b/engine/components-api/src/main/java/com/cloud/storage/StorageManager.java
index 0ceae02..e4b46bc 100644
--- a/engine/components-api/src/main/java/com/cloud/storage/StorageManager.java
+++ b/engine/components-api/src/main/java/com/cloud/storage/StorageManager.java
@@ -155,6 +155,15 @@ public interface StorageManager extends StorageService {
     ConfigKey<String> PreferredStoragePool = new 
ConfigKey<String>(String.class, "preferred.storage.pool", "Advanced", "",
             "The UUID of preferred storage pool for allocation.", true, 
ConfigKey.Scope.Account, null);
 
+    ConfigKey<Boolean> MountDisabledStoragePool = new 
ConfigKey<>(Boolean.class,
+            "mount.disabled.storage.pool",
+            "Storage",
+            "false",
+            "Mount all zone-wide or cluster-wide disabled storage pools after 
node reboot",
+            true,
+            ConfigKey.Scope.Cluster,
+            null);
+
     /**
      * Returns a comma separated list of tags for the specified storage pool
      * @param poolId
diff --git a/server/src/main/java/com/cloud/storage/StorageManagerImpl.java 
b/server/src/main/java/com/cloud/storage/StorageManagerImpl.java
index db24b17..336565f 100644
--- a/server/src/main/java/com/cloud/storage/StorageManagerImpl.java
+++ b/server/src/main/java/com/cloud/storage/StorageManagerImpl.java
@@ -3340,7 +3340,8 @@ public class StorageManagerImpl extends ManagerBase 
implements StorageManager, C
                 MaxDataMigrationWaitTime,
                 DiskProvisioningStrictness,
                 PreferredStoragePool,
-                SecStorageVMAutoScaleDown
+                SecStorageVMAutoScaleDown,
+                MountDisabledStoragePool
         };
     }
 
diff --git 
a/server/src/main/java/com/cloud/storage/listener/StoragePoolMonitor.java 
b/server/src/main/java/com/cloud/storage/listener/StoragePoolMonitor.java
index eca96ef..63ae604 100644
--- a/server/src/main/java/com/cloud/storage/listener/StoragePoolMonitor.java
+++ b/server/src/main/java/com/cloud/storage/listener/StoragePoolMonitor.java
@@ -20,6 +20,7 @@ import java.util.List;
 
 import javax.inject.Inject;
 
+import com.cloud.storage.StorageManager;
 import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreProvider;
 import 
org.apache.cloudstack.engine.subsystem.api.storage.DataStoreProviderManager;
 import 
org.apache.cloudstack.engine.subsystem.api.storage.HypervisorHostListener;
@@ -44,7 +45,6 @@ import com.cloud.storage.ScopeType;
 import com.cloud.storage.Storage.StoragePoolType;
 import com.cloud.storage.StorageManagerImpl;
 import com.cloud.storage.StoragePoolHostVO;
-import com.cloud.storage.StoragePoolStatus;
 
 public class StoragePoolMonitor implements Listener {
     private static final Logger s_logger = 
Logger.getLogger(StoragePoolMonitor.class);
@@ -108,10 +108,17 @@ public class StoragePoolMonitor implements Listener {
                 List<StoragePoolVO> zoneStoragePoolsByAnyHypervisor = 
_poolDao.findZoneWideStoragePoolsByHypervisor(host.getDataCenterId(), 
HypervisorType.Any);
                 pools.addAll(zoneStoragePoolsByAnyHypervisor);
 
+                // get the zone wide disabled pools list if global setting is 
true.
+                if (StorageManager.MountDisabledStoragePool.value()) {
+                    
pools.addAll(_poolDao.findDisabledPoolsByScope(host.getDataCenterId(), null, 
null, ScopeType.ZONE));
+                }
+
+                // get the cluster wide disabled pool list
+                if 
(StorageManager.MountDisabledStoragePool.valueIn(host.getClusterId())) {
+                    
pools.addAll(_poolDao.findDisabledPoolsByScope(host.getDataCenterId(), 
host.getPodId(), host.getClusterId(), ScopeType.CLUSTER));
+                }
+
                 for (StoragePoolVO pool : pools) {
-                    if (pool.getStatus() != StoragePoolStatus.Up) {
-                        continue;
-                    }
                     if (!pool.isShared()) {
                         continue;
                     }

Reply via email to