From 3cc37ed3fb550912d278ca0e7565d31120a47ccd Mon Sep 17 00:00:00 2001 From: frank Date: Wed, 9 Nov 2011 14:36:14 -0800 Subject: [PATCH] refine the logic seraching ssvm when generate firewall configuration --- server/src/com/cloud/host/dao/HostDao.java | 4 ++- .../src/com/cloud/host/dao/HostDaoImpl.java | 13 ++++++++- .../SecondaryStorageManagerImpl.java | 27 +++++-------------- 3 files changed, 21 insertions(+), 23 deletions(-) mode change 100644 => 100755 server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java diff --git a/server/src/com/cloud/host/dao/HostDao.java b/server/src/com/cloud/host/dao/HostDao.java index 6dba59a2904..17f540c0402 100755 --- a/server/src/com/cloud/host/dao/HostDao.java +++ b/server/src/com/cloud/host/dao/HostDao.java @@ -178,5 +178,7 @@ public interface HostDao extends GenericDao { List listByInAllStatus(Type type, Long clusterId, Long podId, long dcId); - List listByClusterStatus(long clusterId, Status status); + List listByClusterStatus(long clusterId, Status status); + + List listSecondaryStorageVMInUpAndConnecting(long dcId); } diff --git a/server/src/com/cloud/host/dao/HostDaoImpl.java b/server/src/com/cloud/host/dao/HostDaoImpl.java index e4e9ab3f540..00a04864e45 100755 --- a/server/src/com/cloud/host/dao/HostDaoImpl.java +++ b/server/src/com/cloud/host/dao/HostDaoImpl.java @@ -146,7 +146,7 @@ public class HostDaoImpl extends GenericDaoBase implements HostDao SecondaryStorageVMSearch = createSearchBuilder(); SecondaryStorageVMSearch.and("type", SecondaryStorageVMSearch.entity().getType(), SearchCriteria.Op.EQ); SecondaryStorageVMSearch.and("dc", SecondaryStorageVMSearch.entity().getDataCenterId(), SearchCriteria.Op.EQ); - SecondaryStorageVMSearch.and("status", SecondaryStorageVMSearch.entity().getStatus(), SearchCriteria.Op.EQ); + SecondaryStorageVMSearch.and("status", SecondaryStorageVMSearch.entity().getStatus(), SearchCriteria.Op.IN); SecondaryStorageVMSearch.done(); TypeDcStatusSearch = createSearchBuilder(); @@ -801,6 +801,17 @@ public class HostDaoImpl extends GenericDaoBase implements HostDao return listBy(sc); } + + @Override + public List listSecondaryStorageVMInUpAndConnecting(long dcId) { + SearchCriteria sc = SecondaryStorageVMSearch.create(); + sc.setParameters("type", Type.SecondaryStorageVM); + sc.setParameters("status", Status.Up, Status.Connecting); + sc.setParameters("dc", dcId); + + return listBy(sc); + } + @Override public List listByType(Type type) { SearchCriteria sc = TypeSearch.create(); diff --git a/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java b/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java old mode 100644 new mode 100755 index d18aecf8c28..bd0fab62fd8 --- a/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java +++ b/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java @@ -376,37 +376,22 @@ public class SecondaryStorageManagerImpl implements SecondaryStorageVmManager, V return false; } - List alreadyRunning = _secStorageVmDao.getSecStorageVmListInStates(SecondaryStorageVm.Role.templateProcessor, State.Running, State.Migrating, State.Starting); - String copyPort = _useSSlCopy? "443" : Integer.toString(TemplateConstants.DEFAULT_TMPLT_COPY_PORT); SecStorageFirewallCfgCommand cpc = new SecStorageFirewallCfgCommand(); SecStorageFirewallCfgCommand thiscpc = new SecStorageFirewallCfgCommand(); thiscpc.addPortConfig(thisSecStorageVm.getPublicIpAddress(), copyPort, true, TemplateConstants.DEFAULT_TMPLT_COPY_INTF); - for (SecondaryStorageVmVO ssVm : alreadyRunning) { - if ( ssVm.getDataCenterIdToDeployIn() == zoneId ) { - continue; - } - if (ssVm.getPublicIpAddress() != null) { - cpc.addPortConfig(ssVm.getPublicIpAddress(), copyPort, true, TemplateConstants.DEFAULT_TMPLT_COPY_INTF); - } - if ( ssVm.getState() != State.Running ) { - continue; - } - String instanceName = ssVm.getInstanceName(); - HostVO host = _hostDao.findByName(instanceName); - if ( host == null ) { - continue; - } - Answer answer = _agentMgr.easySend(host.getId(), thiscpc); + + List ssvms = _hostDao.listSecondaryStorageVMInUpAndConnecting(zoneId); + for (HostVO ssvm : ssvms) { + Answer answer = _agentMgr.easySend(ssvm.getId(), thiscpc); if (answer != null && answer.getResult()) { if (s_logger.isDebugEnabled()) { - s_logger.debug("Successfully programmed firewall rules into " + ssVm.getHostName()); + s_logger.debug("Successfully programmed firewall rules into " + ssvm.getName()); } } else { if (s_logger.isDebugEnabled()) { - s_logger.debug("failed to program firewall rules into secondary storage vm : " + ssVm.getHostName()); + s_logger.debug("failed to program firewall rules into secondary storage vm : " + ssvm.getName()); } - return false; } }