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 <[email protected]>
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