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); + } } }