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

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


The following commit(s) were added to refs/heads/4.22 by this push:
     new 71bd26ff7cd PowerFlex/ScaleIO storage - the MDMs validation 
improvements (#12893)
71bd26ff7cd is described below

commit 71bd26ff7cdabe07cc8c4344b26f156671d88fd4
Author: Suresh Kumar Anaparti <[email protected]>
AuthorDate: Sat Mar 28 00:07:30 2026 +0530

    PowerFlex/ScaleIO storage - the MDMs validation improvements (#12893)
---
 .../kvm/storage/ScaleIOStorageAdaptor.java         | 31 +++++++++++++++-------
 1 file changed, 22 insertions(+), 9 deletions(-)

diff --git 
a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/ScaleIOStorageAdaptor.java
 
b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/ScaleIOStorageAdaptor.java
index e336e0e5a54..82bc35f009e 100644
--- 
a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/ScaleIOStorageAdaptor.java
+++ 
b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/ScaleIOStorageAdaptor.java
@@ -27,6 +27,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.UUID;
+import java.util.function.Predicate;
 
 import com.cloud.agent.api.PrepareStorageClientCommand;
 import org.apache.cloudstack.storage.datastore.client.ScaleIOGatewayClient;
@@ -644,18 +645,30 @@ public class ScaleIOStorageAdaptor implements 
StorageAdaptor {
             // Assuming SDC service is started, add mdms
             String mdms = details.get(ScaleIOGatewayClient.STORAGE_POOL_MDMS);
             String[] mdmAddresses = mdms.split(",");
-            if (mdmAddresses.length > 0) {
-                if (ScaleIOUtil.isMdmPresent(mdmAddresses[0])) {
-                    return new Ternary<>(true, getSDCDetails(details), "MDM 
added, no need to prepare the SDC client");
-                }
-
-                ScaleIOUtil.addMdms(mdmAddresses);
-                if (!ScaleIOUtil.isMdmPresent(mdmAddresses[0])) {
-                    return new Ternary<>(false, null, "Failed to add MDMs");
+            // remove MDMs already present in the config and added to the SDC
+            String[] mdmAddressesToAdd = Arrays.stream(mdmAddresses)
+                    .filter(Predicate.not(ScaleIOUtil::isMdmPresent))
+                    .toArray(String[]::new);
+            // if all MDMs are already in the config and added to the SDC
+            if (mdmAddressesToAdd.length < 1 && mdmAddresses.length > 0) {
+                String msg = String.format("MDMs %s of the storage pool %s are 
already added", mdms, uuid);
+                logger.debug(msg);
+                return new Ternary<>(true, getSDCDetails(details), msg);
+            } else if (mdmAddressesToAdd.length > 0) {
+                ScaleIOUtil.addMdms(mdmAddressesToAdd);
+                String[] missingMdmAddresses = Arrays.stream(mdmAddressesToAdd)
+                        .filter(Predicate.not(ScaleIOUtil::isMdmPresent))
+                        .toArray(String[]::new);
+                if (missingMdmAddresses.length > 0) {
+                    String msg = String.format("Failed to add MDMs %s of the 
storage pool %s", String.join(", ", missingMdmAddresses), uuid);
+                    logger.debug(msg);
+                    return new Ternary<>(false, null, msg);
                 } else {
-                    logger.debug(String.format("MDMs %s added to storage pool 
%s", mdms, uuid));
+                    logger.debug("MDMs {} of the storage pool {} are added", 
mdmAddressesToAdd, uuid);
                     applyMdmsChangeWaitTime(details);
                 }
+            } else {
+                return new Ternary<>(false, getSDCDetails(details), "No MDM 
addresses provided");
             }
         }
 

Reply via email to