From 2fef12e3accf2e4ba502ffc47ce33bdeaea271a0 Mon Sep 17 00:00:00 2001 From: alena Date: Tue, 9 Aug 2011 15:22:29 -0700 Subject: [PATCH] Fixed the bug when domR was re-created as a part of implement() method in network gurus with sourceNatIp address belonging to incorrect user (System user instead of network owner). Conflicts: server/src/com/cloud/network/element/DhcpElement.java server/src/com/cloud/network/element/VirtualRouterElement.java --- server/src/com/cloud/network/element/DhcpElement.java | 9 ++++++--- .../cloud/network/element/VirtualRouterElement.java | 10 ++++++---- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/server/src/com/cloud/network/element/DhcpElement.java b/server/src/com/cloud/network/element/DhcpElement.java index f4f82a5ea58..93e2ecb2bb4 100644 --- a/server/src/com/cloud/network/element/DhcpElement.java +++ b/server/src/com/cloud/network/element/DhcpElement.java @@ -47,6 +47,7 @@ import com.cloud.network.router.VirtualRouter; import com.cloud.network.rules.FirewallRule; import com.cloud.network.vpn.PasswordResetElement; import com.cloud.offering.NetworkOffering; +import com.cloud.user.AccountManager; import com.cloud.uservm.UserVm; import com.cloud.utils.component.AdapterBase; import com.cloud.utils.component.Inject; @@ -75,6 +76,7 @@ public class DhcpElement extends AdapterBase implements NetworkElement, Password @Inject DomainRouterDao _routerDao; @Inject ConfigurationManager _configMgr; @Inject HostPodDao _podDao; + @Inject AccountManager _accountMgr; private boolean canHandle(GuestIpType ipType, DeployDestination dest, TrafficType trafficType) { DataCenter dc = dest.getDataCenter(); @@ -102,7 +104,7 @@ public class DhcpElement extends AdapterBase implements NetworkElement, Password Map params = new HashMap(1); params.put(VirtualMachineProfile.Param.RestartNetwork, true); - _routerMgr.deployDhcp(network, dest, context.getAccount(), params); + _routerMgr.deployDhcp(network, dest, _accountMgr.getAccount(network.getAccountId()), params); return true; } @@ -118,8 +120,9 @@ public class DhcpElement extends AdapterBase implements NetworkElement, Password VirtualMachineProfile uservm = (VirtualMachineProfile)vm; Map params = new HashMap(1); params.put(VirtualMachineProfile.Param.RestartNetwork, true); - List routers = _routerMgr.deployDhcp(network, dest, uservm.getOwner(), uservm.getParameters()); - List rets = _routerMgr.addVirtualMachineIntoNetwork(network, nic, uservm, dest, context, routers); + + List routers = _routerMgr.deployDhcp(network, dest, _accountMgr.getAccount(network.getAccountId()), uservm.getParameters()); + List rets = _routerMgr.addVirtualMachineIntoNetwork(network, nic, uservm, dest, context, routers); return (rets != null) && (!rets.isEmpty()); } else { return false; diff --git a/server/src/com/cloud/network/element/VirtualRouterElement.java b/server/src/com/cloud/network/element/VirtualRouterElement.java index 11faafb97d0..a7be23e66eb 100644 --- a/server/src/com/cloud/network/element/VirtualRouterElement.java +++ b/server/src/com/cloud/network/element/VirtualRouterElement.java @@ -83,7 +83,6 @@ public class VirtualRouterElement extends DhcpElement implements NetworkElement, @Inject UserVmDao _userVmDao; @Inject DomainRouterDao _routerDao; @Inject LoadBalancerDao _lbDao; - @Inject AccountManager _accountMgr; @Inject HostDao _hostDao; private boolean canHandle(GuestIpType ipType, DataCenter dc) { @@ -103,8 +102,9 @@ public class VirtualRouterElement extends DhcpElement implements NetworkElement, Map params = new HashMap(1); params.put(VirtualMachineProfile.Param.RestartNetwork, true); - _routerMgr.deployVirtualRouter(guestConfig, dest, context.getAccount(), params, offering.getRedundantRouter()); - + + _routerMgr.deployVirtualRouter(guestConfig, dest, _accountMgr.getAccount(guestConfig.getAccountId()), params, offering.getRedundantRouter()); + return true; } @@ -118,9 +118,11 @@ public class VirtualRouterElement extends DhcpElement implements NetworkElement, @SuppressWarnings("unchecked") VirtualMachineProfile uservm = (VirtualMachineProfile)vm; + NetworkOffering offering = _networkOfferingDao.findById(network.getNetworkOfferingId()); - List routers = _routerMgr.deployVirtualRouter(network, dest, uservm.getOwner(), uservm.getParameters(), offering.getRedundantRouter()); + List routers = _routerMgr.deployVirtualRouter(network, dest, _accountMgr.getAccount(network.getAccountId()), uservm.getParameters(), offering.getRedundantRouter()); List rets = _routerMgr.addVirtualMachineIntoNetwork(network, nic, uservm, dest, context, routers); + return (rets != null) && (!rets.isEmpty()); } else { return false;