From b20808d223f1d1be3537f315a347dbe8d1409eca Mon Sep 17 00:00:00 2001 From: Edison Su Date: Fri, 25 Feb 2011 20:58:12 -0500 Subject: [PATCH] minor fix --- .../consoleproxy/ConsoleProxyManagerImpl.java | 2 +- .../security/SecurityGroupManager.java | 2 ++ .../security/SecurityGroupManagerImpl.java | 24 ++++++++++++++++--- .../SecondaryStorageManagerImpl.java | 2 +- server/src/com/cloud/vm/UserVmManager.java | 5 ---- .../src/com/cloud/vm/UserVmManagerImpl.java | 13 +--------- 6 files changed, 26 insertions(+), 22 deletions(-) diff --git a/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java b/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java index c05f766fc9d..570bbcb7cae 100644 --- a/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java +++ b/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java @@ -1433,7 +1433,7 @@ public class ConsoleProxyManagerImpl implements ConsoleProxyManager, ConsoleProx DataCenter dc = dest.getDataCenter(); List nics = profile.getNics(); for (NicProfile nic : nics) { - if ((nic.getTrafficType() == TrafficType.Public && dc.getNetworkType() == NetworkType.Advanced) || (nic.getTrafficType() == TrafficType.Guest && dc.getNetworkType() == NetworkType.Basic)) { + if ((nic.getTrafficType() == TrafficType.Public && dc.getNetworkType() == NetworkType.Advanced) || (nic.getTrafficType() == TrafficType.Guest && (dc.getNetworkType() == NetworkType.Basic || dc.isSecurityGroupEnabled()))) { proxy.setPublicIpAddress(nic.getIp4Address()); proxy.setPublicNetmask(nic.getNetmask()); proxy.setPublicMacAddress(nic.getMacAddress()); diff --git a/server/src/com/cloud/network/security/SecurityGroupManager.java b/server/src/com/cloud/network/security/SecurityGroupManager.java index 10a9aa6934b..e9bbb280d38 100644 --- a/server/src/com/cloud/network/security/SecurityGroupManager.java +++ b/server/src/com/cloud/network/security/SecurityGroupManager.java @@ -45,4 +45,6 @@ public interface SecurityGroupManager { public String getSecurityGroupsNamesForVm(long vmId); public List getSecurityGroupsForVm(long vmId); + + public boolean isVmSecurityGroupEnabled(Long vmId); } diff --git a/server/src/com/cloud/network/security/SecurityGroupManagerImpl.java b/server/src/com/cloud/network/security/SecurityGroupManagerImpl.java index 0f1c5a1e463..9eddec5beac 100644 --- a/server/src/com/cloud/network/security/SecurityGroupManagerImpl.java +++ b/server/src/com/cloud/network/security/SecurityGroupManagerImpl.java @@ -57,6 +57,10 @@ import com.cloud.exception.InvalidParameterValueException; import com.cloud.exception.OperationTimedoutException; import com.cloud.exception.PermissionDeniedException; import com.cloud.exception.ResourceInUseException; +import com.cloud.hypervisor.Hypervisor.HypervisorType; +import com.cloud.network.Network; +import com.cloud.network.NetworkManager; +import com.cloud.network.dao.NetworkDao; import com.cloud.network.security.SecurityGroupWorkVO.Step; import com.cloud.network.security.dao.IngressRuleDao; import com.cloud.network.security.dao.SecurityGroupDao; @@ -84,6 +88,8 @@ import com.cloud.utils.db.Transaction; import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.utils.fsm.StateListener; import com.cloud.utils.net.NetUtils; +import com.cloud.vm.NicProfile; +import com.cloud.vm.NicVO; import com.cloud.vm.UserVmManager; import com.cloud.vm.UserVmVO; import com.cloud.vm.VMInstanceVO; @@ -91,7 +97,9 @@ import com.cloud.vm.VirtualMachine; import com.cloud.vm.VirtualMachine.Event; import com.cloud.vm.VirtualMachine.State; import com.cloud.vm.VirtualMachineManager; +import com.cloud.vm.dao.NicDao; import com.cloud.vm.dao.UserVmDao; +import com.cloud.vm.dao.VMInstanceDao; @Local(value={SecurityGroupManager.class, SecurityGroupService.class}) public class SecurityGroupManagerImpl implements SecurityGroupManager, SecurityGroupService, Manager, StateListener { @@ -110,6 +118,8 @@ public class SecurityGroupManagerImpl implements SecurityGroupManager, SecurityG @Inject AgentManager _agentMgr; @Inject VirtualMachineManager _itMgr; @Inject UserVmManager _userVmMgr; + @Inject VMInstanceDao _vmDao; + @Inject NetworkManager _networkMgr; ScheduledExecutorService _executorPool; ScheduledExecutorService _cleanupExecutor; @@ -1307,8 +1317,16 @@ public class SecurityGroupManagerImpl implements SecurityGroupManager, SecurityG return true; } - - private boolean isVmSecurityGroupEnabled(Long vmId) { - return _userVmMgr.isVmSecurityGroupEnabled(vmId); + + @Override + public boolean isVmSecurityGroupEnabled(Long vmId) { + VirtualMachine vm = _vmDao.findById(vmId); + List nics = _networkMgr.getNicProfiles(vm); + for (NicProfile nic : nics) { + if (nic.isSecurityGroupEnabled() && vm.getHypervisorType() != HypervisorType.VMware) { + return true; + } + } + return false; } } diff --git a/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java b/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java index d2456ed5cb8..14347841453 100644 --- a/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java +++ b/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java @@ -1043,7 +1043,7 @@ public class SecondaryStorageManagerImpl implements SecondaryStorageVmManager, V List nics = profile.getNics(); for (NicProfile nic : nics) { if ((nic.getTrafficType() == TrafficType.Public && dc.getNetworkType() == NetworkType.Advanced) - || (nic.getTrafficType() == TrafficType.Guest && dc.getNetworkType() == NetworkType.Basic)) { + || (nic.getTrafficType() == TrafficType.Guest && (dc.getNetworkType() == NetworkType.Basic || dc.isSecurityGroupEnabled()))) { secVm.setPublicIpAddress(nic.getIp4Address()); secVm.setPublicNetmask(nic.getNetmask()); secVm.setPublicMacAddress(nic.getMacAddress()); diff --git a/server/src/com/cloud/vm/UserVmManager.java b/server/src/com/cloud/vm/UserVmManager.java index f4304f3c788..75d6a15d0f4 100644 --- a/server/src/com/cloud/vm/UserVmManager.java +++ b/server/src/com/cloud/vm/UserVmManager.java @@ -87,9 +87,4 @@ public interface UserVmManager extends VirtualMachineGuru{ * @return List of UserVMs. */ List searchForUserVMs(Criteria c); - - boolean isVmSecurityGroupEnabled(Long vmId); - - - } diff --git a/server/src/com/cloud/vm/UserVmManagerImpl.java b/server/src/com/cloud/vm/UserVmManagerImpl.java index ba136e20086..7ade9afe88d 100755 --- a/server/src/com/cloud/vm/UserVmManagerImpl.java +++ b/server/src/com/cloud/vm/UserVmManagerImpl.java @@ -2678,16 +2678,5 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, Manager return _vmDao.search(sc, searchFilter); } - @Override - public boolean isVmSecurityGroupEnabled(Long vmId) { - List nics = _nicDao.listByVmId(vmId); - UserVmVO vm = _vmDao.findById(vmId); - for (NicVO nic : nics) { - Network network = _networkDao.findById(nic.getNetworkId()); - if (network != null && network.isSecurityGroupEnabled() && vm.getHypervisorType() != HypervisorType.VMware) { - return true; - } - } - return false; - } + }