Tal Nisan has uploaded a new change for review.

Change subject: core: Log error correctly when connecting domain for removal
......................................................................

core: Log error correctly when connecting domain for removal

When connecting to a storage domain as a part of it's removal (or format
in case of ISO domains) if the connection failed the error is not logged
correctly and instead we get a generic error, this was fixed and instead
the generic error we will get the real cause

Change-Id: Idd7435336acbec41edbdd70568f1dfdce664f875
Bug-Url: https://bugzilla.redhat.com/1003266
Signed-off-by: Tal Nisan <tni...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/BaseFsStorageHelper.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/FCPStorageHelper.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/ISCSIStorageHelper.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/IStorageHelper.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/RemoveStorageDomainCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/StorageHelperBase.java
6 files changed, 53 insertions(+), 24 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/42/33442/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/BaseFsStorageHelper.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/BaseFsStorageHelper.java
index c2e9943..bd72855 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/BaseFsStorageHelper.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/BaseFsStorageHelper.java
@@ -8,30 +8,35 @@
 import org.ovirt.engine.core.bll.Backend;
 import 
org.ovirt.engine.core.common.action.StorageServerConnectionParametersBase;
 import org.ovirt.engine.core.common.action.VdcActionType;
+import org.ovirt.engine.core.common.action.VdcReturnValueBase;
 import org.ovirt.engine.core.common.businessentities.StorageType;
 import org.ovirt.engine.core.common.businessentities.StorageDomainStatic;
 import org.ovirt.engine.core.common.businessentities.StorageDomain;
 import org.ovirt.engine.core.common.businessentities.StorageServerConnections;
+import org.ovirt.engine.core.common.errors.VdcFault;
+import org.ovirt.engine.core.common.utils.Pair;
 import org.ovirt.engine.core.compat.Guid;
 import org.ovirt.engine.core.dal.dbbroker.DbFacade;
 
 public abstract class BaseFsStorageHelper extends StorageHelperBase {
 
     @Override
-    protected boolean runConnectionStorageToDomain(StorageDomain 
storageDomain, Guid vdsId, int type) {
-        boolean returnValue = false;
+    protected Pair<Boolean, VdcFault> 
runConnectionStorageToDomain(StorageDomain storageDomain, Guid vdsId, int type) 
{
+        Pair<Boolean, VdcFault> result;
         StorageServerConnections connection = 
DbFacade.getInstance().getStorageServerConnectionDao().get(
                 storageDomain.getStorage());
         if (connection != null) {
-            returnValue = Backend
+            VdcReturnValueBase returnValue = Backend
                     .getInstance()
                     .runInternalAction(VdcActionType.forValue(type),
-                            new 
StorageServerConnectionParametersBase(connection, vdsId)).getSucceeded();
+                            new 
StorageServerConnectionParametersBase(connection, vdsId));
+            result = new Pair<>(returnValue.getSucceeded(), 
returnValue.getFault());
         } else {
+            result = new Pair<>(false, null);
             log.warn("Did not connect host: " + vdsId + " to storage domain: " 
+ storageDomain.getStorageName()
                     + " because connection for connectionId:" + 
storageDomain.getStorage() + " is null.");
         }
-        return returnValue;
+        return result;
     }
 
     @Override
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/FCPStorageHelper.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/FCPStorageHelper.java
index 36b1df1..aa1d492 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/FCPStorageHelper.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/FCPStorageHelper.java
@@ -5,13 +5,15 @@
 import org.ovirt.engine.core.common.action.VdcActionType;
 import org.ovirt.engine.core.common.businessentities.StorageDomain;
 import org.ovirt.engine.core.common.businessentities.StorageDomainStatic;
+import org.ovirt.engine.core.common.errors.VdcFault;
+import org.ovirt.engine.core.common.utils.Pair;
 import org.ovirt.engine.core.compat.Guid;
 
 public class FCPStorageHelper extends StorageHelperBase {
 
     @Override
-    protected boolean runConnectionStorageToDomain(StorageDomain 
storageDomain, Guid vdsId, int type) {
-        return true;
+    protected Pair<Boolean, VdcFault> 
runConnectionStorageToDomain(StorageDomain storageDomain, Guid vdsId, int type) 
{
+        return new Pair<>(true, null);
     }
 
     @Override
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/ISCSIStorageHelper.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/ISCSIStorageHelper.java
index b527679..1bc6462 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/ISCSIStorageHelper.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/ISCSIStorageHelper.java
@@ -15,6 +15,8 @@
 import org.ovirt.engine.core.common.businessentities.StorageServerConnections;
 import org.ovirt.engine.core.common.businessentities.StorageType;
 import 
org.ovirt.engine.core.common.businessentities.network.VdsNetworkInterface;
+import org.ovirt.engine.core.common.errors.VdcFault;
+import org.ovirt.engine.core.common.utils.Pair;
 import 
org.ovirt.engine.core.common.vdscommands.StorageServerConnectionManagementVDSParameters;
 import org.ovirt.engine.core.common.vdscommands.VDSCommandType;
 import org.ovirt.engine.core.common.vdscommands.VDSReturnValue;
@@ -27,18 +29,19 @@
 public class ISCSIStorageHelper extends StorageHelperBase {
 
     @Override
-    protected boolean runConnectionStorageToDomain(StorageDomain 
storageDomain, Guid vdsId, int type) {
+    protected Pair<Boolean, VdcFault> 
runConnectionStorageToDomain(StorageDomain storageDomain, Guid vdsId, int type) 
{
         return runConnectionStorageToDomain(storageDomain, vdsId, type, null, 
Guid.Empty);
     }
 
     @SuppressWarnings("unchecked")
     @Override
-    protected boolean runConnectionStorageToDomain(StorageDomain storageDomain,
+    protected Pair<Boolean, VdcFault> 
runConnectionStorageToDomain(StorageDomain storageDomain,
             Guid vdsId,
             int type,
             LUNs lun,
             Guid storagePoolId) {
         boolean isSuccess = true;
+        VDSReturnValue returnValue = null;
         List<StorageServerConnections> list =
                 (lun == null) ? DbFacade.getInstance()
                         
.getStorageServerConnectionDao().getAllForVolumeGroup(storageDomain.getStorage())
@@ -55,7 +58,7 @@
             if (storageDomain != null && storageDomain.getStoragePoolId() != 
null) {
                 poolId = storageDomain.getStoragePoolId();
             }
-            VDSReturnValue returnValue = Backend
+            returnValue = Backend
                     .getInstance()
                     .getResourceManager()
                     .RunVdsCommand(
@@ -67,7 +70,12 @@
                 isSuccess = isConnectSucceeded((Map<String, String>) 
returnValue.getReturnValue(), list);
             }
         }
-        return isSuccess;
+        VdcFault vdcFault = null;
+        if (!isSuccess && returnValue != null && returnValue.getVdsError() != 
null) {
+            vdcFault = new VdcFault();
+            vdcFault.setError(returnValue.getVdsError().getCode());
+        }
+        return new Pair<>(isSuccess, vdcFault);
     }
 
     public static List<StorageServerConnections> 
updateIfaces(List<StorageServerConnections> conns, Guid vdsId) {
@@ -224,12 +232,12 @@
 
     @Override
     public boolean connectStorageToDomainByVdsId(StorageDomain storageDomain, 
Guid vdsId) {
-        return runConnectionStorageToDomain(storageDomain, vdsId, 
VDSCommandType.ConnectStorageServer.getValue());
+        return runConnectionStorageToDomain(storageDomain, vdsId, 
VDSCommandType.ConnectStorageServer.getValue()).getFirst();
     }
 
     @Override
     public boolean disconnectStorageFromDomainByVdsId(StorageDomain 
storageDomain, Guid vdsId) {
-        return runConnectionStorageToDomain(storageDomain, vdsId, 
VDSCommandType.DisconnectStorageServer.getValue());
+        return runConnectionStorageToDomain(storageDomain, vdsId, 
VDSCommandType.DisconnectStorageServer.getValue()).getFirst();
     }
 
     @Override
@@ -238,13 +246,13 @@
                 vdsId,
                 VDSCommandType.ConnectStorageServer.getValue(),
                 lun,
-                storagePoolId);
+                storagePoolId).getFirst();
     }
 
     @Override
     public boolean disconnectStorageFromLunByVdsId(StorageDomain 
storageDomain, Guid vdsId, LUNs lun) {
         return runConnectionStorageToDomain(storageDomain, vdsId, 
VDSCommandType.DisconnectStorageServer.getValue(),
-                lun, Guid.Empty);
+                lun, Guid.Empty).getFirst();
     }
 
     @Override
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/IStorageHelper.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/IStorageHelper.java
index b646972..b6ccd90 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/IStorageHelper.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/IStorageHelper.java
@@ -7,12 +7,16 @@
 import org.ovirt.engine.core.common.businessentities.StorageDomainStatic;
 import org.ovirt.engine.core.common.businessentities.StorageDomain;
 import org.ovirt.engine.core.common.businessentities.StorageServerConnections;
+import org.ovirt.engine.core.common.errors.VdcFault;
+import org.ovirt.engine.core.common.utils.Pair;
 import org.ovirt.engine.core.compat.Guid;
 
 public interface IStorageHelper {
 
     boolean connectStorageToDomainByVdsId(StorageDomain storageDomain, Guid 
vdsId);
 
+    Pair<Boolean, VdcFault> connectStorageToDomainByVdsIdDetails(StorageDomain 
storageDomain, Guid vdsId);
+
     boolean disconnectStorageFromDomainByVdsId(StorageDomain storageDomain, 
Guid vdsId);
 
     boolean connectStorageToLunByVdsId(StorageDomain storageDomain, Guid 
vdsId, LUNs lun, Guid storagePoolId);
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/RemoveStorageDomainCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/RemoveStorageDomainCommand.java
index 6f60af9..7b79c16 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/RemoveStorageDomainCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/RemoveStorageDomainCommand.java
@@ -20,6 +20,7 @@
 import org.ovirt.engine.core.common.errors.VdcBLLException;
 import org.ovirt.engine.core.common.errors.VdcBllErrors;
 import org.ovirt.engine.core.common.errors.VdcBllMessages;
+import org.ovirt.engine.core.common.errors.VdcFault;
 import org.ovirt.engine.core.common.locks.LockingGroup;
 import org.ovirt.engine.core.common.utils.Pair;
 import 
org.ovirt.engine.core.common.vdscommands.FormatStorageDomainVDSCommandParameters;
@@ -56,7 +57,9 @@
         }
 
         if (!isISO(dom) && !isExport(dom) || format) {
-            if (!connectStorage()) {
+            Pair<Boolean, VdcFault> connectResult = connectStorage();
+            if (!connectResult.getFirst()) {
+                getReturnValue().setFault(connectResult.getSecond());
                 return;
             }
 
@@ -145,8 +148,8 @@
         return true;
     }
 
-    private boolean connectStorage() {
-        return 
getStorageHelper(getStorageDomain()).connectStorageToDomainByVdsId(getStorageDomain(),
+    private Pair<Boolean, VdcFault> connectStorage() {
+        return 
getStorageHelper(getStorageDomain()).connectStorageToDomainByVdsIdDetails(getStorageDomain(),
                 getVds().getId());
     }
 
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/StorageHelperBase.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/StorageHelperBase.java
index bfcfb23..228db38 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/StorageHelperBase.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/StorageHelperBase.java
@@ -15,6 +15,8 @@
 import org.ovirt.engine.core.common.businessentities.StorageType;
 import org.ovirt.engine.core.common.businessentities.StorageDomain;
 import org.ovirt.engine.core.common.errors.VdcBllErrors;
+import org.ovirt.engine.core.common.errors.VdcFault;
+import org.ovirt.engine.core.common.utils.Pair;
 import org.ovirt.engine.core.compat.Guid;
 import org.ovirt.engine.core.dal.dbbroker.DbFacade;
 import org.ovirt.engine.core.dal.dbbroker.auditloghandling.AuditLogDirector;
@@ -28,25 +30,30 @@
 
     protected final Log log = LogFactory.getLog(getClass());
 
-    protected abstract boolean runConnectionStorageToDomain(StorageDomain 
storageDomain, Guid vdsId, int type);
+    protected abstract Pair<Boolean, VdcFault> 
runConnectionStorageToDomain(StorageDomain storageDomain, Guid vdsId, int type);
 
-    protected boolean runConnectionStorageToDomain(StorageDomain storageDomain,
+    protected Pair<Boolean, VdcFault> 
runConnectionStorageToDomain(StorageDomain storageDomain,
             Guid vdsId,
             int type,
             LUNs lun,
             Guid storagePoolId) {
-        return true;
+        return new Pair<>(true, null);
     }
 
     @Override
     public boolean connectStorageToDomainByVdsId(StorageDomain storageDomain, 
Guid vdsId) {
+        return connectStorageToDomainByVdsIdDetails(storageDomain, 
vdsId).getFirst();
+    }
+
+    @Override
+    public Pair<Boolean, VdcFault> 
connectStorageToDomainByVdsIdDetails(StorageDomain storageDomain, Guid vdsId) {
         return runConnectionStorageToDomain(storageDomain, vdsId, 
VdcActionType.ConnectStorageToVds.getValue());
     }
 
     @Override
     public boolean disconnectStorageFromDomainByVdsId(StorageDomain 
storageDomain, Guid vdsId) {
         return runConnectionStorageToDomain(storageDomain, vdsId,
-                VdcActionType.DisconnectStorageServerConnection.getValue());
+                
VdcActionType.DisconnectStorageServerConnection.getValue()).getFirst();
     }
 
     @Override
@@ -55,13 +62,13 @@
                 vdsId,
                 VdcActionType.ConnectStorageToVds.getValue(),
                 lun,
-                storagePoolId);
+                storagePoolId).getFirst();
     }
 
     @Override
     public boolean disconnectStorageFromLunByVdsId(StorageDomain 
storageDomain, Guid vdsId, LUNs lun) {
         return runConnectionStorageToDomain(storageDomain, vdsId,
-                VdcActionType.DisconnectStorageServerConnection.getValue(), 
lun, Guid.Empty);
+                VdcActionType.DisconnectStorageServerConnection.getValue(), 
lun, Guid.Empty).getFirst();
     }
 
     @Override


-- 
To view, visit http://gerrit.ovirt.org/33442
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Idd7435336acbec41edbdd70568f1dfdce664f875
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Tal Nisan <tni...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to