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

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


The following commit(s) were added to refs/heads/4.18 by this push:
     new 6cd5c6a1d01 linstor: Do not pretend handling disconnect paths that are 
non Linstor (#8897)
6cd5c6a1d01 is described below

commit 6cd5c6a1d01966e6da2750db8e23093d1408b910
Author: Rene Peinthor <rene.peint...@linbit.com>
AuthorDate: Fri Apr 12 13:23:15 2024 +0200

    linstor: Do not pretend handling disconnect paths that are non Linstor 
(#8897)
---
 .../kvm/storage/LinstorStorageAdaptor.java         | 53 ++++++++++++----------
 1 file changed, 29 insertions(+), 24 deletions(-)

diff --git 
a/plugins/storage/volume/linstor/src/main/java/com/cloud/hypervisor/kvm/storage/LinstorStorageAdaptor.java
 
b/plugins/storage/volume/linstor/src/main/java/com/cloud/hypervisor/kvm/storage/LinstorStorageAdaptor.java
index 87746447188..9ad8332d0e1 100644
--- 
a/plugins/storage/volume/linstor/src/main/java/com/cloud/hypervisor/kvm/storage/LinstorStorageAdaptor.java
+++ 
b/plugins/storage/volume/linstor/src/main/java/com/cloud/hypervisor/kvm/storage/LinstorStorageAdaptor.java
@@ -45,6 +45,7 @@ import com.linbit.linstor.api.model.ApiCallRc;
 import com.linbit.linstor.api.model.ApiCallRcList;
 import com.linbit.linstor.api.model.Properties;
 import com.linbit.linstor.api.model.ProviderKind;
+import com.linbit.linstor.api.model.Resource;
 import com.linbit.linstor.api.model.ResourceDefinition;
 import com.linbit.linstor.api.model.ResourceDefinitionModify;
 import com.linbit.linstor.api.model.ResourceGroup;
@@ -306,7 +307,7 @@ public class LinstorStorageAdaptor implements 
StorageAdaptor {
     public boolean disconnectPhysicalDisk(String volumePath, KVMStoragePool 
pool)
     {
         s_logger.debug("Linstor: disconnectPhysicalDisk " + pool.getUuid() + 
":" + volumePath);
-        return true;
+        return false;
     }
 
     @Override
@@ -342,40 +343,44 @@ public class LinstorStorageAdaptor implements 
StorageAdaptor {
             s_logger.debug("Linstor: Using storpool: " + pool.getUuid());
             final DevelopersApi api = getLinstorAPI(pool);
 
-            try
-            {
+            Optional<ResourceWithVolumes> optRsc;
+            try {
                 List<ResourceWithVolumes> resources = api.viewResources(
-                    Collections.singletonList(localNodeName),
-                    null,
-                    null,
-                    null,
-                    null,
-                    null);
-
-                Optional<ResourceWithVolumes> rsc = 
getResourceByPath(resources, localPath);
+                        Collections.singletonList(localNodeName),
+                        null,
+                        null,
+                        null,
+                        null,
+                        null);
+
+                optRsc = getResourceByPath(resources, localPath);
+            } catch (ApiException apiEx) {
+                // couldn't query linstor controller
+                s_logger.error(apiEx.getBestMessage());
+                return false;
+            }
 
-                if (rsc.isPresent())
-                {
+            if (optRsc.isPresent()) {
+                try {
+                    Resource rsc = optRsc.get();
                     ResourceDefinitionModify rdm = new 
ResourceDefinitionModify();
                     
rdm.deleteProps(Collections.singletonList("DrbdOptions/Net/allow-two-primaries"));
-                    ApiCallRcList answers = 
api.resourceDefinitionModify(rsc.get().getName(), rdm);
-                    if (answers.hasError())
-                    {
+                    ApiCallRcList answers = 
api.resourceDefinitionModify(rsc.getName(), rdm);
+                    if (answers.hasError()) {
                         s_logger.error(
                                 String.format("Failed to remove 
'allow-two-primaries' on %s: %s",
-                                        rsc.get().getName(), 
LinstorUtil.getBestErrorMessage(answers)));
+                                        rsc.getName(), 
LinstorUtil.getBestErrorMessage(answers)));
                         // do not fail here as removing allow-two-primaries 
property isn't fatal
                     }
-
-                    return true;
+                } catch(ApiException apiEx){
+                    s_logger.error(apiEx.getBestMessage());
+                    // do not fail here as removing allow-two-primaries 
property isn't fatal
                 }
-                s_logger.warn("Linstor: Couldn't find resource for this path: 
" + localPath);
-            } catch (ApiException apiEx) {
-                s_logger.error(apiEx.getBestMessage());
-                // do not fail here as removing allow-two-primaries property 
isn't fatal
+                return true;
             }
         }
-        return true;
+        s_logger.info("Linstor: Couldn't find resource for this path: " + 
localPath);
+        return false;
     }
 
     @Override

Reply via email to