From 96c949439754ee4b71cf04b1d4afcf891b1aebeb Mon Sep 17 00:00:00 2001 From: vishesh92 Date: Mon, 9 Mar 2026 16:36:48 +0530 Subject: [PATCH 1/2] Fix error message while creating local storage pool --- .../src/main/java/com/cloud/storage/StorageManagerImpl.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/server/src/main/java/com/cloud/storage/StorageManagerImpl.java b/server/src/main/java/com/cloud/storage/StorageManagerImpl.java index d1dca0fa901b..7de9e930a3b2 100644 --- a/server/src/main/java/com/cloud/storage/StorageManagerImpl.java +++ b/server/src/main/java/com/cloud/storage/StorageManagerImpl.java @@ -1017,6 +1017,10 @@ public PrimaryDataStoreInfo createPool(CreateStoragePoolCmd cmd) throws Resource if (Grouping.AllocationState.Disabled == zone.getAllocationState() && !_accountMgr.isRootAdmin(account.getId())) { throw new PermissionDeniedException(String.format("Cannot perform this operation, Zone is currently disabled: %s", zone)); } + // Check if it's local storage and if it's enabled on the zone + if (isFileScheme && !zone.isLocalStorageEnabled()) { + throw new InvalidParameterValueException("Local storage is not enabled for zone: " + zone); + } managementService.checkJsInterpretationAllowedIfNeededForParameterValue(ApiConstants.IS_TAG_A_RULE, Boolean.TRUE.equals(cmd.isTagARule())); From e9872b1c97ecc92bc81aed5875aa51db4e1da9dc Mon Sep 17 00:00:00 2001 From: vishesh92 Date: Tue, 10 Mar 2026 13:23:10 +0530 Subject: [PATCH 2/2] Address comments --- .../com/cloud/storage/StorageManagerImpl.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/server/src/main/java/com/cloud/storage/StorageManagerImpl.java b/server/src/main/java/com/cloud/storage/StorageManagerImpl.java index 7de9e930a3b2..6751da3dde05 100644 --- a/server/src/main/java/com/cloud/storage/StorageManagerImpl.java +++ b/server/src/main/java/com/cloud/storage/StorageManagerImpl.java @@ -16,6 +16,7 @@ // under the License. package com.cloud.storage; +import static com.cloud.configuration.ConfigurationManagerImpl.SystemVMUseLocalStorage; import static com.cloud.utils.NumbersUtil.toHumanReadableSize; import java.io.UnsupportedEncodingException; @@ -144,6 +145,7 @@ import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.MapUtils; import org.apache.commons.lang.time.DateUtils; +import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.EnumUtils; import org.springframework.stereotype.Component; @@ -176,7 +178,6 @@ import com.cloud.cluster.ClusterManagerListener; import com.cloud.configuration.Config; import com.cloud.configuration.ConfigurationManager; -import com.cloud.configuration.ConfigurationManagerImpl; import com.cloud.configuration.Resource.ResourceType; import com.cloud.cpu.CPU; import com.cloud.dc.ClusterVO; @@ -803,6 +804,10 @@ protected DataStore createLocalStorage(Map poolInfos) throws Con return createLocalStorage(host, pInfo); } + private boolean isLocalStorageEnabledForZone(DataCenterVO zone) { + return zone.isLocalStorageEnabled() || BooleanUtils.toBoolean(SystemVMUseLocalStorage.valueIn(zone.getId())); + } + @DB @Override public DataStore createLocalStorage(Host host, StoragePoolInfo pInfo) throws ConnectionException { @@ -810,12 +815,7 @@ public DataStore createLocalStorage(Host host, StoragePoolInfo pInfo) throws Con if (dc == null) { return null; } - boolean useLocalStorageForSystemVM = false; - Boolean isLocal = ConfigurationManagerImpl.SystemVMUseLocalStorage.valueIn(dc.getId()); - if (isLocal != null) { - useLocalStorageForSystemVM = isLocal.booleanValue(); - } - if (!(dc.isLocalStorageEnabled() || useLocalStorageForSystemVM)) { + if (!isLocalStorageEnabledForZone(dc)) { return null; } DataStore store = null; @@ -1018,7 +1018,7 @@ public PrimaryDataStoreInfo createPool(CreateStoragePoolCmd cmd) throws Resource throw new PermissionDeniedException(String.format("Cannot perform this operation, Zone is currently disabled: %s", zone)); } // Check if it's local storage and if it's enabled on the zone - if (isFileScheme && !zone.isLocalStorageEnabled()) { + if (isFileScheme && !isLocalStorageEnabledForZone(zone)) { throw new InvalidParameterValueException("Local storage is not enabled for zone: " + zone); }