From b8f67f0249b8421a3f4208b4273f84307ea7865c Mon Sep 17 00:00:00 2001 From: Alena Prokharchyk Date: Tue, 19 Jun 2012 14:10:15 -0700 Subject: [PATCH] Vpc: fixed the network shutdown happening as a part of GC thread for VPC networks --- server/src/com/cloud/network/NetworkManagerImpl.java | 7 ++++++- .../router/VpcVirtualNetworkApplianceManagerImpl.java | 2 +- server/src/com/cloud/vm/VirtualMachineManagerImpl.java | 5 +++++ server/src/com/cloud/vm/dao/DomainRouterDaoImpl.java | 4 +++- 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/server/src/com/cloud/network/NetworkManagerImpl.java b/server/src/com/cloud/network/NetworkManagerImpl.java index 56603298130..ab83a66a598 100755 --- a/server/src/com/cloud/network/NetworkManagerImpl.java +++ b/server/src/com/cloud/network/NetworkManagerImpl.java @@ -2244,7 +2244,12 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag @Override public NicProfile releaseNic(VirtualMachineProfile vmProfile, NetworkVO network, URI broadcastUri) throws ConcurrentOperationException, ResourceUnavailableException { - NicVO nic = _nicDao.findByInstanceIdNetworkIdAndBroadcastUri(network.getId(), vmProfile.getId(), broadcastUri.toString()); + NicVO nic = null; + if (broadcastUri != null) { + nic = _nicDao.findByInstanceIdNetworkIdAndBroadcastUri(network.getId(), vmProfile.getId(), broadcastUri.toString()); + } else { + nic = _nicDao.findByInstanceIdAndNetworkId(network.getId(), vmProfile.getId()); + } releaseNic(vmProfile, nic, network); NicProfile profile = new NicProfile(nic, network, nic.getBroadcastUri(), nic.getIsolationUri(), null, diff --git a/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java b/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java index 899faf78704..a15d6c69426 100644 --- a/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java +++ b/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java @@ -504,7 +504,7 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian boolean result = true; Nic nic = _nicDao.findByInstanceIdAndNetworkId(network.getId(), router.getId()); - long guestVlanTag = Long.parseLong(nic.getBroadcastUri().getHost()); + long guestVlanTag = Long.parseLong(network.getBroadcastUri().getHost()); String brd = NetUtils.long2Ip(NetUtils.ip2Long(guestNic.getIp4Address()) | ~NetUtils.ip2Long(guestNic.getNetmask())); Integer priority = null; diff --git a/server/src/com/cloud/vm/VirtualMachineManagerImpl.java b/server/src/com/cloud/vm/VirtualMachineManagerImpl.java index 06699aee022..08013ed8d8a 100755 --- a/server/src/com/cloud/vm/VirtualMachineManagerImpl.java +++ b/server/src/com/cloud/vm/VirtualMachineManagerImpl.java @@ -2457,6 +2457,11 @@ public class VirtualMachineManagerImpl implements VirtualMachineManager, Listene if (nicVO != null) { nic = _networkMgr.getNicProfile(vm, network.getId()); } + } else { + NicVO nicVO = _nicsDao.findByInstanceIdAndNetworkId(network.getId(), vm.getId()); + if (nicVO != null) { + nic = _networkMgr.getNicProfile(vm, network.getId()); + } } if (nic == null) { diff --git a/server/src/com/cloud/vm/dao/DomainRouterDaoImpl.java b/server/src/com/cloud/vm/dao/DomainRouterDaoImpl.java index f0257ac12d7..b423a89078c 100755 --- a/server/src/com/cloud/vm/dao/DomainRouterDaoImpl.java +++ b/server/src/com/cloud/vm/dao/DomainRouterDaoImpl.java @@ -264,7 +264,9 @@ public class DomainRouterDaoImpl extends GenericDaoBase im if (guestNetworks != null && !guestNetworks.isEmpty()) { // 2) add router to the network for (Network guestNetwork : guestNetworks) { - addRouterToGuestNetwork(router, guestNetwork); + if (!isRouterPartOfGuestNetwork(router.getId(), guestNetwork.getId())) { + addRouterToGuestNetwork(router, guestNetwork); + } } }