From 8d2e41abd1e8997e38c7b4f53905611a40b7b8b0 Mon Sep 17 00:00:00 2001 From: Sheng Yang Date: Tue, 19 Jul 2011 14:46:48 -0700 Subject: [PATCH] bug 10429: Enable redundant virtual router for 2.2.9 status 10429: resolved fixed --- .../com/cloud/network/element/VirtualRouterElement.java | 8 ++++++-- .../router/VirtualNetworkApplianceManagerImpl.java | 6 +++--- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/server/src/com/cloud/network/element/VirtualRouterElement.java b/server/src/com/cloud/network/element/VirtualRouterElement.java index 1b691d3f855..f4d9927c5a6 100644 --- a/server/src/com/cloud/network/element/VirtualRouterElement.java +++ b/server/src/com/cloud/network/element/VirtualRouterElement.java @@ -26,6 +26,7 @@ import javax.ejb.Local; import org.apache.log4j.Logger; import com.cloud.configuration.ConfigurationManager; +import com.cloud.configuration.dao.ConfigurationDao; import com.cloud.dc.DataCenter; import com.cloud.deploy.DeployDestination; import com.cloud.exception.ConcurrentOperationException; @@ -83,6 +84,7 @@ public class VirtualRouterElement extends DhcpElement implements NetworkElement @Inject LoadBalancerDao _lbDao; @Inject AccountManager _accountMgr; @Inject HostDao _hostDao; + @Inject ConfigurationDao _configDao; private boolean canHandle(GuestIpType ipType, DataCenter dc) { String provider = dc.getGatewayProvider(); @@ -95,13 +97,14 @@ public class VirtualRouterElement extends DhcpElement implements NetworkElement @Override public boolean implement(Network guestConfig, NetworkOffering offering, DeployDestination dest, ReservationContext context) throws ResourceUnavailableException, ConcurrentOperationException, InsufficientCapacityException { + boolean isRedundant = _configDao.getValue("network.redundantrouter").equals("true"); if (!canHandle(guestConfig.getGuestType(), dest.getDataCenter())) { return false; } Map params = new HashMap(1); params.put(VirtualMachineProfile.Param.RestartNetwork, true); - _routerMgr.deployVirtualRouter(guestConfig, dest, context.getAccount(), params, false); + _routerMgr.deployVirtualRouter(guestConfig, dest, context.getAccount(), params, isRedundant); return true; } @@ -110,13 +113,14 @@ public class VirtualRouterElement extends DhcpElement implements NetworkElement @Override public boolean prepare(Network network, NicProfile nic, VirtualMachineProfile vm, DeployDestination dest, ReservationContext context) throws ConcurrentOperationException, InsufficientCapacityException, ResourceUnavailableException { if (canHandle(network.getGuestType(), dest.getDataCenter())) { + boolean isRedundant = _configDao.getValue("network.redundantrouter").equals("true"); if (vm.getType() != VirtualMachine.Type.User) { return false; } @SuppressWarnings("unchecked") VirtualMachineProfile uservm = (VirtualMachineProfile)vm; - List routers = _routerMgr.deployVirtualRouter(network, dest, uservm.getOwner(), uservm.getParameters(), false); + List routers = _routerMgr.deployVirtualRouter(network, dest, uservm.getOwner(), uservm.getParameters(), isRedundant); List rets = _routerMgr.addVirtualMachineIntoNetwork(network, nic, uservm, dest, context, routers); return (rets != null) && (!rets.isEmpty()); } else { diff --git a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java index 5ebc7ac5f8d..6756da07781 100755 --- a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java +++ b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java @@ -1116,8 +1116,8 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian buf.append(" template=domP type=" + type); buf.append(" name=").append(profile.getHostName()); - NetworkOffering offering = _networkOfferingDao.findById(network.getNetworkOfferingId()); - if (false) { + boolean isRedundant = _configDao.getValue("network.redundantrouter").equals("true"); + if (isRedundant) { buf.append(" redundant_router=1"); } NicProfile controlNic = null; @@ -1172,7 +1172,7 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian } controlNic = nic; - } else if (nic.getTrafficType() == TrafficType.Guest && false) { + } else if (nic.getTrafficType() == TrafficType.Guest && isRedundant) { Network net = _networkMgr.getNetwork(nic.getNetworkId()); buf.append(" guestgw=").append(net.getGateway()); String brd = NetUtils.long2Ip(NetUtils.ip2Long(nic.getIp4Address()) | ~NetUtils.ip2Long(nic.getNetmask()));