diff --git a/server/src/com/cloud/agent/manager/AgentManagerImpl.java b/server/src/com/cloud/agent/manager/AgentManagerImpl.java index c9a2d848838..6a7b664c628 100755 --- a/server/src/com/cloud/agent/manager/AgentManagerImpl.java +++ b/server/src/com/cloud/agent/manager/AgentManagerImpl.java @@ -383,7 +383,7 @@ public class AgentManagerImpl implements AgentManager, HandlerFactory, Manager { public Answer sendToSecStorage(HostVO ssHost, Command cmd) { if( ssHost.getType() == Host.Type.LocalSecondaryStorage ) { return easySend(ssHost.getId(), cmd); - } else if ( ssHost.getType() == Host.Type.SecondaryStorage) { + } else if ( ssHost.getType() == Host.Type.SecondaryStorage || ssHost.getType() == Host.Type.SecondaryStorageVM) { return sendToSSVM(ssHost.getDataCenterId(), cmd); } else { String msg = "do not support Secondary Storage type " + ssHost.getType(); @@ -407,7 +407,7 @@ public class AgentManagerImpl implements AgentManager, HandlerFactory, Manager { private void sendToSSVM(final long dcId, final Command cmd, final Listener listener) throws AgentUnavailableException { - List ssAHosts = _ssvmMgr.listUpSecondaryStorageVmHost(dcId); + List ssAHosts = _ssvmMgr.listUpAndConnectingSecondaryStorageVmHost(dcId); if (ssAHosts == null || ssAHosts.isEmpty() ) { throw new AgentUnavailableException("No ssvm host found", -1); } @@ -417,7 +417,7 @@ public class AgentManagerImpl implements AgentManager, HandlerFactory, Manager { } private Answer sendToSSVM(final long dcId, final Command cmd) { - List ssAHosts = _ssvmMgr.listUpSecondaryStorageVmHost(dcId); + List ssAHosts = _ssvmMgr.listUpAndConnectingSecondaryStorageVmHost(dcId); if (ssAHosts == null || ssAHosts.isEmpty() ) { return new Answer(cmd, false, "can not find secondary storage VM agent for data center " + dcId); } diff --git a/server/src/com/cloud/ha/AbstractInvestigatorImpl.java b/server/src/com/cloud/ha/AbstractInvestigatorImpl.java index b27869021d5..e95efa016be 100755 --- a/server/src/com/cloud/ha/AbstractInvestigatorImpl.java +++ b/server/src/com/cloud/ha/AbstractInvestigatorImpl.java @@ -75,7 +75,7 @@ public abstract class AbstractInvestigatorImpl implements Investigator { // Host.status is up and Host.type is routing protected List findHostByPod(long podId, Long excludeHostId) { - SearchCriteriaService sc = SearchCriteria2.create(HostVO.class); + SearchCriteriaService sc = SearchCriteria2.create(HostVO.class, Long.class); sc.addAnd(sc.getEntity().getType(), Op.EQ, Type.Routing); sc.addAnd(sc.getEntity().getPodId(), Op.EQ, podId); sc.addAnd(sc.getEntity().getStatus(), Op.EQ, Status.Up); diff --git a/server/src/com/cloud/storage/download/DownloadMonitorImpl.java b/server/src/com/cloud/storage/download/DownloadMonitorImpl.java index c808feaf822..bfbc2970705 100755 --- a/server/src/com/cloud/storage/download/DownloadMonitorImpl.java +++ b/server/src/com/cloud/storage/download/DownloadMonitorImpl.java @@ -521,7 +521,7 @@ public class DownloadMonitorImpl implements DownloadMonitor { } long sserverId = ssHost.getId(); long zoneId = ssHost.getDataCenterId(); - if (!(ssHost.getType() == Host.Type.SecondaryStorage || ssHost.getType() == Host.Type.LocalSecondaryStorage)) { + if (!(ssHost.getType() == Host.Type.SecondaryStorage || ssHost.getType() == Host.Type.LocalSecondaryStorage || ssHost.getType() == Host.Type.SecondaryStorageVM)) { s_logger.warn("Huh? Agent id " + sserverId + " is not secondary storage host"); return; } diff --git a/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java b/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java index a71b7e6b168..0a48b6b9d8e 100755 --- a/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java +++ b/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java @@ -1272,7 +1272,7 @@ public class SecondaryStorageManagerImpl implements SecondaryStorageVmManager, V @Override public HostVO findSecondaryStorageHost(long dcId) { SearchCriteriaService sc = SearchCriteria2.create(HostVO.class); - sc.addAnd(sc.getEntity().getType(), Op.EQ, Host.Type.SecondaryStorage); + sc.addAnd(sc.getEntity().getType(), Op.IN, Host.Type.SecondaryStorage, Host.Type.SecondaryStorageVM); sc.addAnd(sc.getEntity().getDataCenterId(), Op.EQ, dcId); List storageHosts = sc.list(); if (storageHosts == null || storageHosts.size() < 1) { @@ -1286,7 +1286,7 @@ public class SecondaryStorageManagerImpl implements SecondaryStorageVmManager, V @Override public List listSecondaryStorageHostsInAllZones() { SearchCriteriaService sc = SearchCriteria2.create(HostVO.class); - sc.addAnd(sc.getEntity().getType(), Op.EQ, Host.Type.SecondaryStorage); + sc.addAnd(sc.getEntity().getType(), Op.IN, Host.Type.SecondaryStorage, Host.Type.SecondaryStorageVM); return sc.list(); } @@ -1294,7 +1294,7 @@ public class SecondaryStorageManagerImpl implements SecondaryStorageVmManager, V public List listSecondaryStorageHostsInOneZone(long dataCenterId) { SearchCriteriaService sc = SearchCriteria2.create(HostVO.class); sc.addAnd(sc.getEntity().getDataCenterId(), Op.EQ, dataCenterId); - sc.addAnd(sc.getEntity().getType(), Op.EQ, Host.Type.SecondaryStorage); + sc.addAnd(sc.getEntity().getType(), Op.IN, Host.Type.SecondaryStorage, Host.Type.SecondaryStorageVM); return sc.list(); } @@ -1310,15 +1310,15 @@ public class SecondaryStorageManagerImpl implements SecondaryStorageVmManager, V public List listAllTypesSecondaryStorageHostsInOneZone(long dataCenterId) { SearchCriteriaService sc = SearchCriteria2.create(HostVO.class); sc.addAnd(sc.getEntity().getDataCenterId(), Op.EQ, dataCenterId); - sc.addAnd(sc.getEntity().getType(), Op.IN, Host.Type.LocalSecondaryStorage, Host.Type.SecondaryStorage); + sc.addAnd(sc.getEntity().getType(), Op.IN, Host.Type.LocalSecondaryStorage, Host.Type.SecondaryStorage, Host.Type.SecondaryStorageVM); return sc.list(); } @Override - public List listUpSecondaryStorageVmHost(long dcId) { + public List listUpAndConnectingSecondaryStorageVmHost(long dcId) { SearchCriteriaService sc = SearchCriteria2.create(HostVO.class); sc.addAnd(sc.getEntity().getDataCenterId(), Op.EQ, dcId); - sc.addAnd(sc.getEntity().getStatus(), Op.EQ, com.cloud.host.Status.Up); + sc.addAnd(sc.getEntity().getStatus(), Op.IN, com.cloud.host.Status.Up, com.cloud.host.Status.Connecting); sc.addAnd(sc.getEntity().getType(), Op.EQ, Host.Type.SecondaryStorageVM); return sc.list(); } @@ -1329,7 +1329,7 @@ public class SecondaryStorageManagerImpl implements SecondaryStorageVmManager, V return ssHost; } else if ( ssHost.getType() == Host.Type.SecondaryStorage) { Long dcId = ssHost.getDataCenterId(); - List ssAHosts = listUpSecondaryStorageVmHost(dcId); + List ssAHosts = listUpAndConnectingSecondaryStorageVmHost(dcId); if (ssAHosts == null || ssAHosts.isEmpty() ) { return null; } diff --git a/server/src/com/cloud/storage/secondary/SecondaryStorageVmManager.java b/server/src/com/cloud/storage/secondary/SecondaryStorageVmManager.java index 4c35a5675bc..fbaccaf9d1f 100755 --- a/server/src/com/cloud/storage/secondary/SecondaryStorageVmManager.java +++ b/server/src/com/cloud/storage/secondary/SecondaryStorageVmManager.java @@ -52,6 +52,6 @@ public interface SecondaryStorageVmManager extends Manager { public List listSecondaryStorageHostsInOneZone(long dataCenterId); public List listLocalSecondaryStorageHostsInOneZone(long dataCenterId); public List listAllTypesSecondaryStorageHostsInOneZone(long dataCenterId); - public List listUpSecondaryStorageVmHost(long dcId); + public List listUpAndConnectingSecondaryStorageVmHost(long dcId); public HostVO pickSsvmHost(HostVO ssHost); }