Liron Ar has uploaded a new change for review.

Change subject: core: InitVdsOnUp - proceed regardless of problematic 
iso/export domain
......................................................................

core: InitVdsOnUp - proceed regardless of problematic iso/export domain

Prior to this patch, when host reported iso/export domain as problematic
during the InitVdsOnUp flow it didn't move to status UP.

As currently when ISO/Export domains are reported as problematic by some
of the hosts those hosts remain UP and doesn't move to NonOperational,
the behaviour between those two flows should be unified - therefore it
was decided that when hosts reports iso/export domain as in problem
it won't stop it from moving to UP.

Change-Id: I32372aa80d7193a814f2500231d4545d2b1a5fc3
Bug-Url: https://bugzilla.redhat.com/967604
Signed-off-by: Liron Aravot <lara...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmTemplateCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitVdsOnUpCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/StorageDomainCommandBase.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/UpdateStoragePoolCommand.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogableBase.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/IrsBrokerCommand.java
6 files changed, 26 insertions(+), 27 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/86/17986/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmTemplateCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmTemplateCommand.java
index 4cdcf28..94e2e47 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmTemplateCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmTemplateCommand.java
@@ -48,11 +48,10 @@
 import org.ovirt.engine.core.common.validation.group.ImportEntity;
 import org.ovirt.engine.core.compat.Guid;
 import org.ovirt.engine.core.dal.dbbroker.DbFacade;
-import org.ovirt.engine.core.dao.StorageDomainStaticDAO;
-import org.ovirt.engine.core.utils.transaction.TransactionMethod;
-import org.ovirt.engine.core.utils.transaction.TransactionSupport;
 import org.ovirt.engine.core.dal.dbbroker.auditloghandling.AuditLogDirector;
 import org.ovirt.engine.core.dal.dbbroker.auditloghandling.AuditLogableBase;
+import org.ovirt.engine.core.utils.transaction.TransactionMethod;
+import org.ovirt.engine.core.utils.transaction.TransactionSupport;
 
 @DisableInPrepareMode
 @NonTransactiveCommandAttribute(forceCompensation = true)
@@ -230,11 +229,6 @@
         }
 
         return true;
-    }
-
-    @Override
-    protected StorageDomainStaticDAO getStorageDomainStaticDAO() {
-        return DbFacade.getInstance().getStorageDomainStaticDao();
     }
 
     /**
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitVdsOnUpCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitVdsOnUpCommand.java
index 022d7d7..3265bc3 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitVdsOnUpCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitVdsOnUpCommand.java
@@ -21,6 +21,7 @@
 import org.ovirt.engine.core.common.businessentities.FenceStatusReturnValue;
 import org.ovirt.engine.core.common.businessentities.NonOperationalReason;
 import org.ovirt.engine.core.common.businessentities.StorageDomain;
+import org.ovirt.engine.core.common.businessentities.StorageDomainStatic;
 import org.ovirt.engine.core.common.businessentities.StorageDomainStatus;
 import org.ovirt.engine.core.common.businessentities.StorageDomainType;
 import org.ovirt.engine.core.common.businessentities.StoragePool;
@@ -266,12 +267,17 @@
         boolean returnValue = true;
         try {
             runVdsCommand(VDSCommandType.GetStats, new 
VdsIdAndVdsVDSCommandParametersBase(getVds()));
-            if 
(IrsBrokerCommand.isDomainsReportedAsProblematic(getVds().getStoragePoolId(), 
getVds().getDomains())) {
-                log.errorFormat("One of the Storage Domains of host {0} in 
pool {1} is problematic",
+            List<Guid> problematicDomainsIds = 
IrsBrokerCommand.checkIfDomainsReportedAsProblematic(getVds().getStoragePoolId(),
 getVds().getDomains());
+            for (Guid domainId : problematicDomainsIds) {
+                StorageDomainStatic domainInfo = 
getStorageDomainStaticDAO().get(domainId);
+                log.errorFormat("Storage Domain {0} of pool {1} is in problem 
in host {1}",
+                        domainInfo != null ? domainInfo.getStorageName() : 
domainId,
                         getVds().getName(),
                         getStoragePool()
                                 .getName());
-                returnValue = false;
+                if (domainInfo == null || 
domainInfo.getStorageDomainType().isDataDomain()) {
+                    returnValue = false;
+                }
             }
         } catch (VdcBLLException e) {
             log.errorFormat("Could not get Host statistics for Host {0}, Error 
is {1}",
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/StorageDomainCommandBase.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/StorageDomainCommandBase.java
index 746d63c..216e9d7 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/StorageDomainCommandBase.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/StorageDomainCommandBase.java
@@ -33,7 +33,6 @@
 import org.ovirt.engine.core.dao.ImageStorageDomainMapDao;
 import org.ovirt.engine.core.dao.LunDAO;
 import org.ovirt.engine.core.dao.SnapshotDao;
-import org.ovirt.engine.core.dao.StorageDomainStaticDAO;
 import org.ovirt.engine.core.dao.StoragePoolIsoMapDAO;
 import org.ovirt.engine.core.dao.StorageServerConnectionDAO;
 import org.ovirt.engine.core.utils.linq.LinqUtils;
@@ -363,10 +362,6 @@
 
     protected ImageStorageDomainMapDao getImageStorageDomainMapDao() {
         return getDbFacade().getImageStorageDomainMapDao();
-    }
-
-    protected StorageDomainStaticDAO getStorageDomainStaticDAO() {
-        return getDbFacade().getStorageDomainStaticDao();
     }
 
     protected StorageServerConnectionDAO getStorageServerConnectionDAO() {
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/UpdateStoragePoolCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/UpdateStoragePoolCommand.java
index 5ba7ba5..9c1b812 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/UpdateStoragePoolCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/UpdateStoragePoolCommand.java
@@ -251,10 +251,6 @@
         return Backend.getInstance().getResourceManager();
     }
 
-    protected StorageDomainStaticDAO getStorageDomainStaticDAO() {
-        return DbFacade.getInstance().getStorageDomainStaticDao();
-    }
-
     /**
      * Copy properties from old entity which assumed not to be available in 
the param object.
      *
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogableBase.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogableBase.java
index 10c060a..46829ab 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogableBase.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogableBase.java
@@ -29,6 +29,7 @@
 import org.ovirt.engine.core.dao.RoleDAO;
 import org.ovirt.engine.core.dao.RoleGroupMapDAO;
 import org.ovirt.engine.core.dao.StorageDomainDAO;
+import org.ovirt.engine.core.dao.StorageDomainStaticDAO;
 import org.ovirt.engine.core.dao.StoragePoolDAO;
 import org.ovirt.engine.core.dao.VdsDAO;
 import org.ovirt.engine.core.dao.VdsGroupDAO;
@@ -551,6 +552,10 @@
         return getDbFacade().getStorageDomainDao();
     }
 
+    public StorageDomainStaticDAO getStorageDomainStaticDAO() {
+        return getDbFacade().getStorageDomainStaticDao();
+    }
+
     public StoragePoolDAO getStoragePoolDAO() {
         return getDbFacade().getStoragePoolDao();
     }
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/IrsBrokerCommand.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/IrsBrokerCommand.java
index b7fe7c4..9eb5a1b 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/IrsBrokerCommand.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/IrsBrokerCommand.java
@@ -5,9 +5,11 @@
 import java.text.MessageFormat;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
+import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -94,12 +96,12 @@
         }
     }
 
-    public static boolean isDomainsReportedAsProblematic(Guid storagePoolId, 
List<VDSDomainsData> vdsDomainsData) {
+    public static List<Guid> checkIfDomainsReportedAsProblematic(Guid 
storagePoolId, List<VDSDomainsData> vdsDomainsData) {
         IrsProxyData proxy = _irsProxyData.get(storagePoolId);
         if (proxy != null) {
-            return proxy.isDomainsReportedAsProblematic(vdsDomainsData);
+            return proxy.checkIfDomainsReportedAsProblematic(vdsDomainsData);
         }
-        return false;
+        return Collections.emptyList();
     }
 
     @Override
@@ -1126,7 +1128,8 @@
                     AuditLogType.VDS_DOMAIN_DELAY_INTERVAL);
         }
 
-        public boolean isDomainsReportedAsProblematic(List<VDSDomainsData> 
vdsDomainsData) {
+        public List<Guid> 
checkIfDomainsReportedAsProblematic(List<VDSDomainsData> vdsDomainsData) {
+            List<Guid> domainsInProblem = new LinkedList<>();
             Set<Guid> domainsInPool = new HashSet<Guid>(
                     
DbFacade.getInstance().getStorageDomainStaticDao().getAllIds(
                             _storagePoolId, StorageDomainStatus.Active));
@@ -1136,7 +1139,7 @@
             for (VDSDomainsData vdsDomainData : vdsDomainsData) {
                 if (domainsInPool.contains(vdsDomainData.getDomainId())) {
                     if (isDomainReportedAsProblematic(vdsDomainData, true)) {
-                        return true;
+                        domainsInProblem.add(vdsDomainData.getDomainId());
                     }
                     domainWhicWereSeen.add(vdsDomainData.getDomainId());
                 }
@@ -1146,9 +1149,9 @@
                 for (Guid domainId : domainsInPool) {
                     log.errorFormat("Domain {0} is not seen by Host", 
domainId);
                 }
-                return true;
+                domainsInProblem.addAll(domainsInPool);
             }
-            return false;
+            return domainsInProblem;
         }
 
         private boolean isDomainReportedAsProblematic(VDSDomainsData tempData, 
boolean isLog) {


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

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

Reply via email to