You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by nv...@apache.org on 2022/04/02 02:39:14 UTC

[cloudstack] branch main updated: Mount disabled storage pool on host reboot (#6164)

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 <ra...@gmail.com>
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 <ra...@apache.org>
---
 .../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;
                     }