diff --git a/server/src/com/cloud/host/dao/HostDao.java b/server/src/com/cloud/host/dao/HostDao.java index f9b6fd6bd93..6a266b7eb13 100644 --- a/server/src/com/cloud/host/dao/HostDao.java +++ b/server/src/com/cloud/host/dao/HostDao.java @@ -68,7 +68,7 @@ public interface HostDao extends GenericDao { List findDirectlyConnectedHosts(); List findDirectAgentToLoad(long msid, long clusterId, long lastPingSecondsAfter, Long limit); - + List findExternalNetworkAppliancesToLoad(long lastPingSecondsAfter); /** * Mark the host as disconnected if it is in one of these states. diff --git a/server/src/com/cloud/host/dao/HostDaoImpl.java b/server/src/com/cloud/host/dao/HostDaoImpl.java index 18965c7beac..45481f6cfa3 100644 --- a/server/src/com/cloud/host/dao/HostDaoImpl.java +++ b/server/src/com/cloud/host/dao/HostDaoImpl.java @@ -77,6 +77,7 @@ public class HostDaoImpl extends GenericDaoBase implements HostDao protected final SearchBuilder SequenceSearch; protected final SearchBuilder DirectlyConnectedSearch; protected final SearchBuilder UnmanagedDirectConnectSearch; + protected final SearchBuilder UnmanagedExternalNetworkApplianceSearch; protected final SearchBuilder MaintenanceCountSearch; protected final SearchBuilder ClusterSearch; protected final SearchBuilder ConsoleProxyHostSearch; @@ -200,7 +201,14 @@ public class HostDaoImpl extends GenericDaoBase implements HostDao UnmanagedDirectConnectSearch.cp(); */ UnmanagedDirectConnectSearch.done(); - + + UnmanagedExternalNetworkApplianceSearch = createSearchBuilder(); + UnmanagedExternalNetworkApplianceSearch.and("resource", UnmanagedExternalNetworkApplianceSearch.entity().getResource(), SearchCriteria.Op.NNULL); + UnmanagedExternalNetworkApplianceSearch.and("server", UnmanagedExternalNetworkApplianceSearch.entity().getManagementServerId(), SearchCriteria.Op.NULL); + UnmanagedExternalNetworkApplianceSearch.and("types", UnmanagedExternalNetworkApplianceSearch.entity().getType(), SearchCriteria.Op.IN); + UnmanagedExternalNetworkApplianceSearch.and("lastPinged", UnmanagedExternalNetworkApplianceSearch.entity().getLastPinged(), SearchCriteria.Op.LTEQ); + UnmanagedExternalNetworkApplianceSearch.done(); + _statusAttr = _allAttributes.get("status"); _msIdAttr = _allAttributes.get("managementServerId"); _pingTimeAttr = _allAttributes.get("lastPinged"); @@ -256,6 +264,14 @@ public class HostDaoImpl extends GenericDaoBase implements HostDao sc.setParameters("lastPinged", lastPingSecondsAfter); return search(sc, new Filter(HostVO.class, "id", true, 0L, limit)); + } + + @Override + public List findExternalNetworkAppliancesToLoad(long lastPingSecondsAfter) { + SearchCriteria sc = UnmanagedExternalNetworkApplianceSearch.create(); + sc.setParameters("types", new Object[]{Type.ExternalFirewall, Type.ExternalLoadBalancer}); + sc.setParameters("lastPinged", lastPingSecondsAfter); + return search(sc, null); } @Override