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