cloudstack-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From d...@apache.org
Subject [38/50] [abbrv] git commit: updated refs/heads/vpc-refactor to a8cb7c1
Date Fri, 03 Oct 2014 11:12:16 GMT
making sure the instance variable _router in the Rules is being used instead of the parameter

Conflicts:
	server/src/com/cloud/network/router/NetworkHelperImpl.java


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/3ba8599e
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/3ba8599e
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/3ba8599e

Branch: refs/heads/vpc-refactor
Commit: 3ba8599ed6f679a848c97c247926333079930543
Parents: 961e715
Author: Wilder Rodrigues <wrodrigues@schubergphilis.com>
Authored: Tue Sep 2 11:05:23 2014 +0200
Committer: Wilder Rodrigues <wrodrigues@schubergphilis.com>
Committed: Fri Oct 3 06:21:28 2014 +0200

----------------------------------------------------------------------
 .../network/router/CommandSetupHelper.java      |  41 +--
 .../com/cloud/network/router/NetworkHelper.java |  20 +-
 .../cloud/network/router/NetworkHelperImpl.java | 281 ++++++++++---------
 3 files changed, 170 insertions(+), 172 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3ba8599e/server/src/com/cloud/network/router/CommandSetupHelper.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/router/CommandSetupHelper.java b/server/src/com/cloud/network/router/CommandSetupHelper.java
index 798bcfb..92a3bb1 100644
--- a/server/src/com/cloud/network/router/CommandSetupHelper.java
+++ b/server/src/com/cloud/network/router/CommandSetupHelper.java
@@ -176,6 +176,7 @@ public class CommandSetupHelper {
 
     @Inject
     private RouterControlHelper _routerControlHelper;
+
     @Autowired
     @Qualifier("networkHelper")
     protected NetworkHelper _networkHelper;
@@ -195,7 +196,7 @@ public class CommandSetupHelper {
         final List<VpnUser> addUsers = new ArrayList<VpnUser>();
         final List<VpnUser> removeUsers = new ArrayList<VpnUser>();
         for (final VpnUser user : users) {
-            if ((user.getState() == VpnUser.State.Add) || (user.getState() == VpnUser.State.Active)) {
+            if (user.getState() == VpnUser.State.Add || user.getState() == VpnUser.State.Active) {
                 addUsers.add(user);
             } else if (user.getState() == VpnUser.State.Revoke) {
                 removeUsers.add(user);
@@ -218,7 +219,7 @@ public class CommandSetupHelper {
         final DataCenterVO dcVo = _dcDao.findById(router.getDataCenterId());
         final Nic defaultNic = findGatewayIp(vm.getId());
         String gatewayIp = defaultNic.getGateway();
-        if ((gatewayIp != null) && !gatewayIp.equals(nic.getGateway())) {
+        if (gatewayIp != null && !gatewayIp.equals(nic.getGateway())) {
             gatewayIp = "0.0.0.0";
         }
         dhcpCommand.setDefaultRouter(gatewayIp);
@@ -290,7 +291,7 @@ public class CommandSetupHelper {
         // We don't support VR to be inline currently
         final boolean inline = false;
         for (final LoadBalancingRule rule : rules) {
-            final boolean revoked = (rule.getState().equals(FirewallRule.State.Revoke));
+            final boolean revoked = rule.getState().equals(FirewallRule.State.Revoke);
             final String protocol = rule.getProtocol();
             final String algorithm = rule.getAlgorithm();
             final String uuid = rule.getUuid();
@@ -392,7 +393,7 @@ public class CommandSetupHelper {
         Boolean defaultEgressPolicy = false;
         if (rules != null) {
             if (rules.size() > 0) {
-                if ((rules.get(0).getTrafficType() == FirewallRule.TrafficType.Egress) && (rules.get(0).getType() == FirewallRule.FirewallRuleType.System)) {
+                if (rules.get(0).getTrafficType() == FirewallRule.TrafficType.Egress && rules.get(0).getType() == FirewallRule.FirewallRuleType.System) {
                     systemRule = String.valueOf(FirewallRule.FirewallRuleType.System);
                 }
             }
@@ -407,7 +408,7 @@ public class CommandSetupHelper {
                     final NetworkVO network = _networkDao.findById(guestNetworkId);
                     final NetworkOfferingVO offering = _networkOfferingDao.findById(network.getNetworkOfferingId());
                     defaultEgressPolicy = offering.getEgressDefaultPolicy();
-                    assert (rule.getSourceIpAddressId() == null) : "ipAddressId should be null for egress firewall rule. ";
+                    assert rule.getSourceIpAddressId() == null : "ipAddressId should be null for egress firewall rule. ";
                     final FirewallRuleTO ruleTO = new FirewallRuleTO(rule, null, "", Purpose.Firewall, traffictype, defaultEgressPolicy);
                     rulesTO.add(ruleTO);
                 }
@@ -435,7 +436,7 @@ public class CommandSetupHelper {
         Boolean defaultEgressPolicy = false;
         if (rules != null) {
             if (rules.size() > 0) {
-                if ((rules.get(0).getTrafficType() == FirewallRule.TrafficType.Egress) && (rules.get(0).getType() == FirewallRule.FirewallRuleType.System)) {
+                if (rules.get(0).getTrafficType() == FirewallRule.TrafficType.Egress && rules.get(0).getType() == FirewallRule.FirewallRuleType.System) {
                     systemRule = String.valueOf(FirewallRule.FirewallRuleType.System);
                 }
             }
@@ -450,7 +451,7 @@ public class CommandSetupHelper {
                     final NetworkVO network = _networkDao.findById(guestNetworkId);
                     final NetworkOfferingVO offering = _networkOfferingDao.findById(network.getNetworkOfferingId());
                     defaultEgressPolicy = offering.getEgressDefaultPolicy();
-                    assert (rule.getSourceIpAddressId() == null) : "ipAddressId should be null for egress firewall rule. ";
+                    assert rule.getSourceIpAddressId() == null : "ipAddressId should be null for egress firewall rule. ";
                     final FirewallRuleTO ruleTO = new FirewallRuleTO(rule, null, "", Purpose.Firewall, traffictype, defaultEgressPolicy);
                     rulesTO.add(ruleTO);
                 }
@@ -485,7 +486,7 @@ public class CommandSetupHelper {
             }
             // domR doesn't support release for sourceNat IP address; so reset
             // the state
-            if (ipAddress.isSourceNat() && (ipAddress.getState() == IpAddress.State.Releasing)) {
+            if (ipAddress.isSourceNat() && ipAddress.getState() == IpAddress.State.Releasing) {
                 ipAddress.setState(IpAddress.State.Allocated);
             }
             ipList.add(ipAddress);
@@ -510,7 +511,7 @@ public class CommandSetupHelper {
                 public int compare(final PublicIpAddress o1, final PublicIpAddress o2) {
                     final boolean s1 = o1.isSourceNat();
                     final boolean s2 = o2.isSourceNat();
-                    return (s1 ^ s2) ? ((s1 ^ true) ? 1 : -1) : 0;
+                    return s1 ^ s2 ? s1 ^ true ? 1 : -1 : 0;
                 }
             });
 
@@ -524,7 +525,7 @@ public class CommandSetupHelper {
 
             for (final PublicIpAddress ipAddr : ipAddrList) {
 
-                final boolean add = (ipAddr.getState() == IpAddress.State.Releasing ? false : true);
+                final boolean add = ipAddr.getState() == IpAddress.State.Releasing ? false : true;
                 boolean sourceNat = ipAddr.isSourceNat();
                 /* enable sourceNAT for the first ip of the public interface */
                 if (firstIP) {
@@ -538,7 +539,7 @@ public class CommandSetupHelper {
                 // first public nic's MAC
                 // We cannot depends on first ip because we need to deal with
                 // first ip of other nics
-                if (!ipAddr.isSourceNat() && (ipAddr.getVlanId() != 0)) {
+                if (!ipAddr.isSourceNat() && ipAddr.getVlanId() != 0) {
                     vifMacAddress = NetUtils.generateMacOnIncrease(baseMac, ipAddr.getVlanId());
                 } else {
                     vifMacAddress = ipAddr.getMacAddress();
@@ -605,7 +606,7 @@ public class CommandSetupHelper {
         final DataCenterVO dcVo = _dcDao.findById(router.getDataCenterId());
 
         // password should be set only on default network element
-        if ((password != null) && nic.isDefaultNic()) {
+        if (password != null && nic.isDefaultNic()) {
             final String encodedPassword = PasswordGenerator.rot13(password);
             final SavePasswordCommand cmd = new SavePasswordCommand(encodedPassword, nic.getIp4Address(), profile.getVirtualMachine().getHostName(),
                     _networkModel.getExecuteInSeqNtwkElmtCmd());
@@ -641,8 +642,8 @@ public class CommandSetupHelper {
     }
 
     public void createStaticRouteCommands(final List<StaticRouteProfile> staticRoutes, final VirtualRouter router, final Commands cmds) {
-        final SetStaticRouteCommand cmd = new SetStaticRouteCommand(staticRoutes);
-        cmd.setAccessDetail(NetworkElementCommand.ROUTER_IP, _networkHelper.getRouterControlIp(router.getId()));
+        SetStaticRouteCommand cmd = new SetStaticRouteCommand(staticRoutes);
+        cmd.setAccessDetail(NetworkElementCommand.ROUTER_IP, _routerControlHelper.getRouterControlIp(router.getId()));
         cmd.setAccessDetail(NetworkElementCommand.ROUTER_NAME, router.getInstanceName());
         final DataCenterVO dcVo = _dcDao.findById(router.getDataCenterId());
         cmd.setAccessDetail(NetworkElementCommand.ZONE_NETWORK_TYPE, dcVo.getNetworkType().toString());
@@ -660,7 +661,7 @@ public class CommandSetupHelper {
         final String cidr = network.getCidr();
 
         final RemoteAccessVpnCfgCommand startVpnCmd = new RemoteAccessVpnCfgCommand(isCreate, ip.getAddress().addr(), vpn.getLocalIp(), vpn.getIpRange(),
-                vpn.getIpsecPresharedKey(), (vpn.getVpcId() != null));
+                vpn.getIpsecPresharedKey(), vpn.getVpcId() != null);
         startVpnCmd.setLocalCidr(cidr);
         startVpnCmd.setAccessDetail(NetworkElementCommand.ROUTER_IP, _routerControlHelper.getRouterControlIp(router.getId()));
         startVpnCmd.setAccessDetail(NetworkElementCommand.ROUTER_NAME, router.getInstanceName());
@@ -675,7 +676,7 @@ public class CommandSetupHelper {
         final DataCenterVO dc = _dcDao.findById(router.getDataCenterId());
         for (final UserVmVO vm : vms) {
             boolean createVmData = true;
-            if ((dc.getNetworkType() == NetworkType.Basic) && (router.getPodIdToDeployIn().longValue() != vm.getPodIdToDeployIn().longValue())) {
+            if (dc.getNetworkType() == NetworkType.Basic && router.getPodIdToDeployIn().longValue() != vm.getPodIdToDeployIn().longValue()) {
                 createVmData = false;
             }
 
@@ -694,7 +695,7 @@ public class CommandSetupHelper {
         final DataCenterVO dc = _dcDao.findById(router.getDataCenterId());
         for (final UserVmVO vm : vms) {
             boolean createDhcp = true;
-            if ((dc.getNetworkType() == NetworkType.Basic) && (router.getPodIdToDeployIn().longValue() != vm.getPodIdToDeployIn().longValue())
+            if (dc.getNetworkType() == NetworkType.Basic && router.getPodIdToDeployIn().longValue() != vm.getPodIdToDeployIn().longValue()
                     && _dnsBasicZoneUpdates.equalsIgnoreCase("pod")) {
                 createDhcp = false;
             }
@@ -737,7 +738,7 @@ public class CommandSetupHelper {
             }
             // VR doesn't support release for sourceNat IP address; so reset the
             // state
-            if (ipAddress.isSourceNat() && (ipAddress.getState() == IpAddress.State.Releasing)) {
+            if (ipAddress.isSourceNat() && ipAddress.getState() == IpAddress.State.Releasing) {
                 ipAddress.setState(IpAddress.State.Allocated);
             }
             ipList.add(ipAddress);
@@ -755,7 +756,7 @@ public class CommandSetupHelper {
             int i = 0;
 
             for (final PublicIpAddress ipAddr : ipAddrList) {
-                final boolean add = (ipAddr.getState() == IpAddress.State.Releasing ? false : true);
+                final boolean add = ipAddr.getState() == IpAddress.State.Releasing ? false : true;
 
                 final String macAddress = vlanMacAddress.get(BroadcastDomainType.getValue(BroadcastDomainType.fromString(ipAddr.getVlanTag())));
 
@@ -978,7 +979,7 @@ public class CommandSetupHelper {
         }
 
         final DataCenter dc = _dcDao.findById(_networkModel.getNetwork(defaultNic.getNetworkId()).getDataCenterId());
-        final boolean isZoneBasic = (dc.getNetworkType() == NetworkType.Basic);
+        final boolean isZoneBasic = dc.getNetworkType() == NetworkType.Basic;
 
         // find domR's nic in the network
         NicVO domrDefaultNic;

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3ba8599e/server/src/com/cloud/network/router/NetworkHelper.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/router/NetworkHelper.java b/server/src/com/cloud/network/router/NetworkHelper.java
index 635e56c..59338f7 100644
--- a/server/src/com/cloud/network/router/NetworkHelper.java
+++ b/server/src/com/cloud/network/router/NetworkHelper.java
@@ -37,17 +37,13 @@ import com.cloud.vm.VirtualMachineProfile.Param;
 
 public interface NetworkHelper {
 
-    public abstract String getRouterControlIp(long routerId);
-
-    public abstract String getRouterIpInNetwork(long networkId, long instanceId);
-
     public abstract boolean sendCommandsToRouter(VirtualRouter router,
             Commands cmds) throws AgentUnavailableException;
 
     public abstract void handleSingleWorkingRedundantRouter(
             List<? extends VirtualRouter> connectedRouters,
             List<? extends VirtualRouter> disconnectedRouters, String reason)
-            throws ResourceUnavailableException;
+                    throws ResourceUnavailableException;
 
     public abstract int getRealPriority(DomainRouterVO router);
 
@@ -68,19 +64,19 @@ public interface NetworkHelper {
 
     public abstract List<DomainRouterVO> startRouters(
             RouterDeploymentDefinition routerDeploymentDefinition)
-            throws StorageUnavailableException, InsufficientCapacityException,
-            ConcurrentOperationException, ResourceUnavailableException;
+                    throws StorageUnavailableException, InsufficientCapacityException,
+                    ConcurrentOperationException, ResourceUnavailableException;
 
     public abstract DomainRouterVO startVirtualRouter(DomainRouterVO router,
             User user, Account caller, Map<Param, Object> params)
-            throws StorageUnavailableException, InsufficientCapacityException,
-            ConcurrentOperationException, ResourceUnavailableException;
+                    throws StorageUnavailableException, InsufficientCapacityException,
+                    ConcurrentOperationException, ResourceUnavailableException;
 
     public abstract DomainRouterVO deployRouter(
             RouterDeploymentDefinition routerDeploymentDefinition,
             boolean startRouter)
-            throws InsufficientAddressCapacityException,
-            InsufficientServerCapacityException, InsufficientCapacityException,
-            StorageUnavailableException, ResourceUnavailableException;
+                    throws InsufficientAddressCapacityException,
+                    InsufficientServerCapacityException, InsufficientCapacityException,
+                    StorageUnavailableException, ResourceUnavailableException;
 
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3ba8599e/server/src/com/cloud/network/router/NetworkHelperImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/router/NetworkHelperImpl.java b/server/src/com/cloud/network/router/NetworkHelperImpl.java
index fd1fc17..6c695d5 100644
--- a/server/src/com/cloud/network/router/NetworkHelperImpl.java
+++ b/server/src/com/cloud/network/router/NetworkHelperImpl.java
@@ -30,6 +30,7 @@ import javax.inject.Inject;
 
 import org.apache.cloudstack.engine.orchestration.service.NetworkOrchestrationService;
 import org.apache.cloudstack.framework.config.ConfigKey;
+import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
 import org.apache.log4j.Logger;
 import org.cloud.network.router.deployment.RouterDeploymentDefinition;
 
@@ -40,6 +41,7 @@ import com.cloud.agent.api.routing.NetworkElementCommand;
 import com.cloud.agent.api.to.NicTO;
 import com.cloud.agent.manager.Commands;
 import com.cloud.alert.AlertManager;
+import com.cloud.configuration.Config;
 import com.cloud.dc.ClusterVO;
 import com.cloud.dc.DataCenter;
 import com.cloud.dc.Pod;
@@ -66,12 +68,10 @@ import com.cloud.network.Network;
 import com.cloud.network.NetworkModel;
 import com.cloud.network.Networks.BroadcastDomainType;
 import com.cloud.network.Networks.IsolationType;
-import com.cloud.network.Networks.TrafficType;
 import com.cloud.network.VirtualNetworkApplianceService;
 import com.cloud.network.addr.PublicIp;
 import com.cloud.network.dao.IPAddressDao;
 import com.cloud.network.dao.NetworkDao;
-import com.cloud.network.dao.NetworkVO;
 import com.cloud.network.dao.UserIpv6AddressDao;
 import com.cloud.network.router.VirtualRouter.RedundantState;
 import com.cloud.network.router.VirtualRouter.Role;
@@ -101,7 +101,7 @@ import com.cloud.vm.VirtualMachineProfile.Param;
 import com.cloud.vm.dao.DomainRouterDao;
 import com.cloud.vm.dao.NicDao;
 
-@Local(value = {NetworkHelper.class})
+@Local(value = { NetworkHelper.class })
 public class NetworkHelperImpl implements NetworkHelper {
 
     private static final Logger s_logger = Logger.getLogger(NetworkHelperImpl.class);
@@ -143,6 +143,10 @@ public class NetworkHelperImpl implements NetworkHelper {
     @Inject
     private UserIpv6AddressDao _ipv6Dao;
     @Inject
+    private RouterControlHelper _routerControlHelper;
+    @Inject
+    private ConfigurationDao _configDao;
+    @Inject
     protected NetworkOrchestrationService _networkMgr;
 
     protected final Map<HypervisorType, ConfigKey<String>> hypervisorsMap = new HashMap<>();
@@ -157,43 +161,8 @@ public class NetworkHelperImpl implements NetworkHelper {
     }
 
     @Override
-    public String getRouterControlIp(final long routerId) {
-        String routerControlIpAddress = null;
-        final List<NicVO> nics = _nicDao.listByVmId(routerId);
-        for (final NicVO n : nics) {
-            final NetworkVO nc = _networkDao.findById(n.getNetworkId());
-            if (nc != null && nc.getTrafficType() == TrafficType.Control) {
-                routerControlIpAddress = n.getIp4Address();
-                // router will have only one control ip
-                break;
-            }
-        }
-
-        if (routerControlIpAddress == null) {
-            s_logger.warn("Unable to find router's control ip in its attached NICs!. routerId: " + routerId);
-            final DomainRouterVO router = _routerDao.findById(routerId);
-            return router.getPrivateIpAddress();
-        }
-
-        return routerControlIpAddress;
-    }
-
-    /* (non-Javadoc)
-     * @see com.cloud.network.router.NetworkHelper#getRouterIpInNetwork(long, long)
-     */
-    @Override
-    public String getRouterIpInNetwork(final long networkId, final long instanceId) {
-        return _nicDao.getIpAddress(networkId, instanceId);
-    }
-
-
-    //    @Override
-    /* (non-Javadoc)
-     * @see com.cloud.network.router.NetworkHelper#sendCommandsToRouter(com.cloud.network.router.VirtualRouter, com.cloud.agent.manager.Commands)
-     */
-    @Override
     public boolean sendCommandsToRouter(final VirtualRouter router, final Commands cmds) throws AgentUnavailableException {
-        if(!checkRouterVersion(router)){
+        if (!checkRouterVersion(router)) {
             s_logger.debug("Router requires upgrade. Unable to send command to router:" + router.getId() + ", router template version : " + router.getTemplateVersion()
                     + ", minimal required version : " + VirtualNetworkApplianceService.MinVRVersion);
             throw new CloudRuntimeException("Unable to send command. Upgrade in progress. Please contact administrator.");
@@ -222,8 +191,8 @@ public class NetworkHelperImpl implements NetworkHelper {
     }
 
     @Override
-    public void handleSingleWorkingRedundantRouter(final List<? extends VirtualRouter> connectedRouters, final List<? extends VirtualRouter> disconnectedRouters, final String reason)
-            throws ResourceUnavailableException {
+    public void handleSingleWorkingRedundantRouter(final List<? extends VirtualRouter> connectedRouters, final List<? extends VirtualRouter> disconnectedRouters,
+            final String reason) throws ResourceUnavailableException {
         if (connectedRouters.isEmpty() || disconnectedRouters.isEmpty()) {
             return;
         }
@@ -240,28 +209,26 @@ public class NetworkHelperImpl implements NetworkHelper {
                     .getDataCenterId());
         }
 
-        final DomainRouterVO connectedRouter = (DomainRouterVO)connectedRouters.get(0);
-        DomainRouterVO disconnectedRouter = (DomainRouterVO)disconnectedRouters.get(0);
+        final DomainRouterVO connectedRouter = (DomainRouterVO) connectedRouters.get(0);
+        DomainRouterVO disconnectedRouter = (DomainRouterVO) disconnectedRouters.get(0);
 
         if (s_logger.isDebugEnabled()) {
             s_logger.debug("About to stop the router " + disconnectedRouter.getInstanceName() + " due to: " + reason);
         }
         final String title = "Virtual router " + disconnectedRouter.getInstanceName() + " would be stopped after connecting back, due to " + reason;
-        final String context =
-                "Virtual router (name: " + disconnectedRouter.getInstanceName() + ", id: " + disconnectedRouter.getId() +
-                ") would be stopped after connecting back, due to: " + reason;
-        _alertMgr.sendAlert(AlertManager.AlertType.ALERT_TYPE_DOMAIN_ROUTER, disconnectedRouter.getDataCenterId(), disconnectedRouter.getPodIdToDeployIn(), title,
-                context);
+        final String context = "Virtual router (name: " + disconnectedRouter.getInstanceName() + ", id: " + disconnectedRouter.getId()
+                + ") would be stopped after connecting back, due to: " + reason;
+        _alertMgr.sendAlert(AlertManager.AlertType.ALERT_TYPE_DOMAIN_ROUTER, disconnectedRouter.getDataCenterId(), disconnectedRouter.getPodIdToDeployIn(), title, context);
         disconnectedRouter.setStopPending(true);
         disconnectedRouter = _routerDao.persist(disconnectedRouter);
 
         final int connRouterPR = getRealPriority(connectedRouter);
         final int disconnRouterPR = getRealPriority(disconnectedRouter);
         if (connRouterPR < disconnRouterPR) {
-            //connRouterPR < disconnRouterPR, they won't equal at any time
+            // connRouterPR < disconnRouterPR, they won't equal at any time
             if (!connectedRouter.getIsPriorityBumpUp()) {
                 final BumpUpPriorityCommand command = new BumpUpPriorityCommand();
-                command.setAccessDetail(NetworkElementCommand.ROUTER_IP, getRouterControlIp(connectedRouter.getId()));
+                command.setAccessDetail(NetworkElementCommand.ROUTER_IP, _routerControlHelper.getRouterControlIp(connectedRouter.getId()));
                 command.setAccessDetail(NetworkElementCommand.ROUTER_NAME, connectedRouter.getInstanceName());
                 final Answer answer = _agentMgr.easySend(connectedRouter.getHostId(), command);
                 if (!answer.getResult()) {
@@ -274,8 +241,11 @@ public class NetworkHelperImpl implements NetworkHelper {
         }
     }
 
-    /* (non-Javadoc)
-     * @see com.cloud.network.router.NetworkHelper#getRealPriority(com.cloud.vm.DomainRouterVO)
+    /*
+     * (non-Javadoc)
+     * 
+     * @see com.cloud.network.router.NetworkHelper#getRealPriority(com.cloud.vm.
+     * DomainRouterVO)
      */
     @Override
     public int getRealPriority(final DomainRouterVO router) {
@@ -286,9 +256,13 @@ public class NetworkHelperImpl implements NetworkHelper {
         return priority;
     }
 
-    //    @Override
-    /* (non-Javadoc)
-     * @see com.cloud.network.router.NetworkHelper#getNicTO(com.cloud.network.router.VirtualRouter, java.lang.Long, java.lang.String)
+    // @Override
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * com.cloud.network.router.NetworkHelper#getNicTO(com.cloud.network.router
+     * .VirtualRouter, java.lang.Long, java.lang.String)
      */
     @Override
     public NicTO getNicTO(final VirtualRouter router, final Long networkId, final String broadcastUri) {
@@ -297,9 +271,12 @@ public class NetworkHelperImpl implements NetworkHelper {
         return _itMgr.toNicTO(nicProfile, router.getHypervisorType());
     }
 
-    //    @Override
-    /* (non-Javadoc)
-     * @see com.cloud.network.router.NetworkHelper#destroyRouter(long, com.cloud.user.Account, java.lang.Long)
+    // @Override
+    /*
+     * (non-Javadoc)
+     * 
+     * @see com.cloud.network.router.NetworkHelper#destroyRouter(long,
+     * com.cloud.user.Account, java.lang.Long)
      */
     @Override
     public VirtualRouter destroyRouter(final long routerId, final Account caller, final Long callerUserId) throws ResourceUnavailableException, ConcurrentOperationException {
@@ -320,24 +297,27 @@ public class NetworkHelperImpl implements NetworkHelper {
         return router;
     }
 
-    /* (non-Javadoc)
-     * @see com.cloud.network.router.NetworkHelper#checkRouterVersion(com.cloud.network.router.VirtualRouter)
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * com.cloud.network.router.NetworkHelper#checkRouterVersion(com.cloud.network
+     * .router.VirtualRouter)
      */
-    //    @Override
+    // @Override
     @Override
     public boolean checkRouterVersion(final VirtualRouter router) {
-        if(!VirtualNetworkApplianceManagerImpl.routerVersionCheckEnabled.value()){
-            //Router version check is disabled.
+        if (!VirtualNetworkApplianceManagerImpl.routerVersionCheckEnabled.value()) {
+            // Router version check is disabled.
             return true;
         }
-        if(router.getTemplateVersion() == null){
+        if (router.getTemplateVersion() == null) {
             return false;
         }
         final String trimmedVersion = Version.trimRouterVersion(router.getTemplateVersion());
         return Version.compare(trimmedVersion, VirtualNetworkApplianceService.MinVRVersion) >= 0;
     }
 
-
     protected DomainRouterVO start(DomainRouterVO router, final User user, final Account caller, final Map<Param, Object> params, final DeploymentPlan planToDeploy)
             throws StorageUnavailableException, InsufficientCapacityException, ConcurrentOperationException, ResourceUnavailableException {
         s_logger.debug("Starting router " + router);
@@ -351,7 +331,8 @@ public class NetworkHelperImpl implements NetworkHelper {
             router.setStopPending(false);
             router = _routerDao.persist(router);
         }
-        // We don't want the failure of VPN Connection affect the status of router, so we try to make connection
+        // We don't want the failure of VPN Connection affect the status of
+        // router, so we try to make connection
         // only after router start successfully
         final Long vpcId = router.getVpcId();
         if (vpcId != null) {
@@ -388,14 +369,16 @@ public class NetworkHelperImpl implements NetworkHelper {
         return null;
     }
 
-
-    //    @Override
-    /* (non-Javadoc)
-     * @see com.cloud.network.router.NetworkHelper#startRouters(org.cloud.network.router.deployment.RouterDeploymentDefinition)
+    // @Override
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * com.cloud.network.router.NetworkHelper#startRouters(org.cloud.network
+     * .router.deployment.RouterDeploymentDefinition)
      */
     @Override
-    public List<DomainRouterVO> startRouters(final RouterDeploymentDefinition routerDeploymentDefinition)
-            throws StorageUnavailableException, InsufficientCapacityException,
+    public List<DomainRouterVO> startRouters(final RouterDeploymentDefinition routerDeploymentDefinition) throws StorageUnavailableException, InsufficientCapacityException,
             ConcurrentOperationException, ResourceUnavailableException {
 
         List<DomainRouterVO> runningRouters = new ArrayList<DomainRouterVO>();
@@ -411,8 +394,7 @@ public class NetworkHelperImpl implements NetworkHelper {
             }
             if (!skip) {
                 if (state != State.Running) {
-                    router = startVirtualRouter(router, _accountMgr.getSystemUser(), _accountMgr.getSystemAccount(),
-                            routerDeploymentDefinition.getParams());
+                    router = startVirtualRouter(router, _accountMgr.getSystemUser(), _accountMgr.getSystemAccount(), routerDeploymentDefinition.getParams());
                 }
                 if (router != null) {
                     runningRouters.add(router);
@@ -422,14 +404,18 @@ public class NetworkHelperImpl implements NetworkHelper {
         return runningRouters;
     }
 
-    //    @Override
-    /* (non-Javadoc)
-     * @see com.cloud.network.router.NetworkHelper#startVirtualRouter(com.cloud.vm.DomainRouterVO, com.cloud.user.User, com.cloud.user.Account, java.util.Map)
+    // @Override
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * com.cloud.network.router.NetworkHelper#startVirtualRouter(com.cloud.vm
+     * .DomainRouterVO, com.cloud.user.User, com.cloud.user.Account,
+     * java.util.Map)
      */
     @Override
     public DomainRouterVO startVirtualRouter(final DomainRouterVO router, final User user, final Account caller, final Map<Param, Object> params)
-            throws StorageUnavailableException, InsufficientCapacityException,
-            ConcurrentOperationException, ResourceUnavailableException {
+            throws StorageUnavailableException, InsufficientCapacityException, ConcurrentOperationException, ResourceUnavailableException {
 
         if (router.getRole() != Role.VIRTUAL_ROUTER || !router.getIsRedundantRouter()) {
             return start(router, user, caller, params, null);
@@ -441,7 +427,8 @@ public class NetworkHelperImpl implements NetworkHelper {
         }
 
         //
-        // If another thread has already requested a VR start, there is a transition period for VR to transit from
+        // If another thread has already requested a VR start, there is a
+        // transition period for VR to transit from
         // Starting to Running, there exist a race conditioning window here
         // We will wait until VR is up or fail
         if (router.getState() == State.Starting) {
@@ -452,7 +439,7 @@ public class NetworkHelperImpl implements NetworkHelper {
         DomainRouterVO result = null;
         assert router.getIsRedundantRouter();
         final List<Long> networkIds = _routerDao.getRouterNetworks(router.getId());
-        //Not support VPC now
+        // Not support VPC now
         if (networkIds.size() > 1) {
             throw new ResourceUnavailableException("Unable to support more than one guest network for redundant router now!", DataCenter.class, router.getDataCenterId());
         }
@@ -462,9 +449,9 @@ public class NetworkHelperImpl implements NetworkHelper {
             for (final DomainRouterVO rrouter : routerList) {
                 if (rrouter.getHostId() != null && rrouter.getIsRedundantRouter() && rrouter.getState() == State.Running) {
                     if (routerToBeAvoid != null) {
-                        throw new ResourceUnavailableException("Try to start router " + router.getInstanceName() + "(" + router.getId() + ")" +
-                                ", but there are already two redundant routers with IP " + router.getPublicIpAddress() + ", they are " + rrouter.getInstanceName() + "(" +
-                                rrouter.getId() + ") and " + routerToBeAvoid.getInstanceName() + "(" + routerToBeAvoid.getId() + ")", DataCenter.class,
+                        throw new ResourceUnavailableException("Try to start router " + router.getInstanceName() + "(" + router.getId() + ")"
+                                + ", but there are already two redundant routers with IP " + router.getPublicIpAddress() + ", they are " + rrouter.getInstanceName() + "("
+                                + rrouter.getId() + ") and " + routerToBeAvoid.getInstanceName() + "(" + routerToBeAvoid.getId() + ")", DataCenter.class,
                                 rrouter.getDataCenterId());
                     }
                     routerToBeAvoid = rrouter;
@@ -508,18 +495,34 @@ public class NetworkHelperImpl implements NetworkHelper {
         return result;
     }
 
+    protected String retrieveTemplateName(HypervisorType hType, final long datacenterId) {
+        if (hType == HypervisorType.BareMetal) {
+            String peerHvType = _configDao.getValue(Config.BaremetalPeerHypervisorType.key());
+            if (peerHvType == null) {
+                throw new CloudRuntimeException(String.format("To use baremetal in advanced networking, you must set %s to type of hypervisor(e.g XenServer)"
+                        + " that exists in the same zone with baremetal host. That hyperivsor is used to spring up virtual router for baremetal instance",
+                        Config.BaremetalPeerHypervisorType.key()));
+            }
+
+            hType = HypervisorType.getType(peerHvType);
+            if (HypervisorType.XenServer != hType && HypervisorType.KVM != hType && HypervisorType.VMware != hType) {
+                throw new CloudRuntimeException(String.format("Baremetal only supports peer hypervisor(XenServer/KVM/VMWare) right now, you specified %s", peerHvType));
+            }
+        }
+
+        return hypervisorsMap.get(hType).valueIn(datacenterId);
+    }
+
     @Override
-    public DomainRouterVO deployRouter(final RouterDeploymentDefinition routerDeploymentDefinition,
-            final boolean startRouter)
-                    throws InsufficientAddressCapacityException,
-                    InsufficientServerCapacityException, InsufficientCapacityException,
-                    StorageUnavailableException, ResourceUnavailableException {
+    public DomainRouterVO deployRouter(final RouterDeploymentDefinition routerDeploymentDefinition, final boolean startRouter) throws InsufficientAddressCapacityException,
+            InsufficientServerCapacityException, InsufficientCapacityException, StorageUnavailableException, ResourceUnavailableException {
 
         final ServiceOfferingVO routerOffering = _serviceOfferingDao.findById(routerDeploymentDefinition.getOfferingId());
         final Account owner = routerDeploymentDefinition.getOwner();
 
         // Router is the network element, we don't know the hypervisor type yet.
-        // Try to allocate the domR twice using diff hypervisors, and when failed both times, throw the exception up
+        // Try to allocate the domR twice using diff hypervisors, and when
+        // failed both times, throw the exception up
         final List<HypervisorType> hypervisors = getHypervisors(routerDeploymentDefinition);
 
         int allocateRetry = 0;
@@ -530,13 +533,11 @@ public class NetworkHelperImpl implements NetworkHelper {
             try {
                 final long id = _routerDao.getNextInSequence(Long.class, "id");
                 if (s_logger.isDebugEnabled()) {
-                    s_logger.debug(String.format(
-                            "Allocating the VR with id=%s in datacenter %s with the hypervisor type %s",
-                            id, routerDeploymentDefinition.getDest().getDataCenter(), hType));
+                    s_logger.debug(String.format("Allocating the VR with id=%s in datacenter %s with the hypervisor type %s", id, routerDeploymentDefinition.getDest()
+                            .getDataCenter(), hType));
                 }
 
-                String templateName = hypervisorsMap.get(hType)
-                        .valueIn(routerDeploymentDefinition.getDest().getDataCenter().getId());
+                String templateName = retrieveTemplateName(hType, routerDeploymentDefinition.getDest().getDataCenter().getId());
                 final VMTemplateVO template = _templateDao.findRoutingTemplate(hType, templateName);
 
                 if (template == null) {
@@ -545,18 +546,21 @@ public class NetworkHelperImpl implements NetworkHelper {
                 }
 
                 boolean offerHA = routerOffering.getOfferHA();
-                /* We don't provide HA to redundant router VMs, admin should own it all, and redundant router themselves are HA */
+                /*
+                 * We don't provide HA to redundant router VMs, admin should own
+                 * it all, and redundant router themselves are HA
+                 */
                 if (routerDeploymentDefinition.isRedundant()) {
                     offerHA = false;
                 }
 
-                // routerDeploymentDefinition.getVpc().getId() ==> do not use VPC because it is not a VPC offering.
+                // routerDeploymentDefinition.getVpc().getId() ==> do not use
+                // VPC because it is not a VPC offering.
                 Long vpcId = routerDeploymentDefinition.getVpc() != null ? routerDeploymentDefinition.getVpc().getId() : null;
 
-                router = new DomainRouterVO(id, routerOffering.getId(), routerDeploymentDefinition.getVirtualProvider().getId(),
-                        VirtualMachineName.getRouterName(id, VirtualNetworkStatus.instance), template.getId(), template.getHypervisorType(),
-                        template.getGuestOSId(), owner.getDomainId(), owner.getId(), routerDeploymentDefinition.isRedundant(), 0,
-                        false, RedundantState.UNKNOWN, offerHA, false, vpcId);
+                router = new DomainRouterVO(id, routerOffering.getId(), routerDeploymentDefinition.getVirtualProvider().getId(), VirtualMachineName.getRouterName(id,
+                        VirtualNetworkStatus.instance), template.getId(), template.getHypervisorType(), template.getGuestOSId(), owner.getDomainId(), owner.getId(),
+                        routerDeploymentDefinition.isRedundant(), 0, false, RedundantState.UNKNOWN, offerHA, false, vpcId);
 
                 router.setDynamicallyScalable(template.isDynamicallyScalable());
                 router.setRole(Role.VIRTUAL_ROUTER);
@@ -592,7 +596,7 @@ public class NetworkHelperImpl implements NetworkHelper {
                     startRetry++;
                 }
             } else {
-                //return stopped router
+                // return stopped router
                 return router;
             }
         }
@@ -601,15 +605,15 @@ public class NetworkHelperImpl implements NetworkHelper {
     }
 
     protected void filterSupportedHypervisors(final List<HypervisorType> hypervisors) {
-        // For non vpc we keep them all assuming all types in the list are supported
+        // For non vpc we keep them all assuming all types in the list are
+        // supported
     }
 
     protected String getNoHypervisorsErrMsgDetails() {
         return "";
     }
 
-    protected List<HypervisorType> getHypervisors(final RouterDeploymentDefinition routerDeploymentDefinition)
-            throws InsufficientServerCapacityException {
+    protected List<HypervisorType> getHypervisors(final RouterDeploymentDefinition routerDeploymentDefinition) throws InsufficientServerCapacityException {
         final DeployDestination dest = routerDeploymentDefinition.getDest();
         List<HypervisorType> hypervisors = new ArrayList<HypervisorType>();
 
@@ -624,7 +628,7 @@ public class NetworkHelperImpl implements NetworkHelper {
             if (defaults != HypervisorType.None) {
                 hypervisors.add(defaults);
             } else {
-                //if there is no default hypervisor, get it from the cluster
+                // if there is no default hypervisor, get it from the cluster
                 hypervisors = _resourceMgr.getSupportedHypervisorTypes(dest.getDataCenter().getId(), true, routerDeploymentDefinition.getPlan().getPodId());
             }
         }
@@ -633,19 +637,18 @@ public class NetworkHelperImpl implements NetworkHelper {
 
         if (hypervisors.isEmpty()) {
             if (routerDeploymentDefinition.getPodId() != null) {
-                throw new InsufficientServerCapacityException(
-                        "Unable to create virtual router, there are no clusters in the pod." + getNoHypervisorsErrMsgDetails(),
-                        Pod.class, routerDeploymentDefinition.getPodId());
+                throw new InsufficientServerCapacityException("Unable to create virtual router, there are no clusters in the pod." + getNoHypervisorsErrMsgDetails(), Pod.class,
+                        routerDeploymentDefinition.getPodId());
             }
-            throw new InsufficientServerCapacityException(
-                    "Unable to create virtual router, there are no clusters in the zone." + getNoHypervisorsErrMsgDetails(),
+            throw new InsufficientServerCapacityException("Unable to create virtual router, there are no clusters in the zone." + getNoHypervisorsErrMsgDetails(),
                     DataCenter.class, dest.getDataCenter().getId());
         }
         return hypervisors;
     }
 
     /*
-     * Ovm won't support any system. So we have to choose a partner cluster in the same pod to start domain router for us
+     * Ovm won't support any system. So we have to choose a partner cluster in
+     * the same pod to start domain router for us
      */
     protected HypervisorType getClusterToStartDomainRouterForOvm(final long podId) {
         final List<ClusterVO> clusters = _clusterDao.listByPodId(podId);
@@ -667,24 +670,19 @@ public class NetworkHelperImpl implements NetworkHelper {
             }
         }
 
-        final String errMsg =
-                new StringBuilder("Cannot find an available cluster in Pod ")
-        .append(podId)
-        .append(" to start domain router for Ovm. \n Ovm won't support any system vm including domain router, ")
-        .append("please make sure you have a cluster with hypervisor type of any of xenserver/KVM/Vmware in the same pod")
-        .append(" with Ovm cluster. And there is at least one host in UP status in that cluster.")
-        .toString();
+        final String errMsg = new StringBuilder("Cannot find an available cluster in Pod ").append(podId)
+                .append(" to start domain router for Ovm. \n Ovm won't support any system vm including domain router, ")
+                .append("please make sure you have a cluster with hypervisor type of any of xenserver/KVM/Vmware in the same pod")
+                .append(" with Ovm cluster. And there is at least one host in UP status in that cluster.").toString();
         throw new CloudRuntimeException(errMsg);
     }
 
+    public LinkedHashMap<Network, List<? extends NicProfile>> createRouterNetworks(final RouterDeploymentDefinition routerDeploymentDefinition)
+            throws ConcurrentOperationException, InsufficientAddressCapacityException {
 
-    public LinkedHashMap<Network, List<? extends NicProfile>> createRouterNetworks(
-            final RouterDeploymentDefinition routerDeploymentDefinition)
-                    throws ConcurrentOperationException, InsufficientAddressCapacityException {
-
-        //Form networks
+        // Form networks
         LinkedHashMap<Network, List<? extends NicProfile>> networks = new LinkedHashMap<Network, List<? extends NicProfile>>(3);
-        //1) Guest network
+        // 1) Guest network
         boolean hasGuestNetwork = false;
         if (routerDeploymentDefinition.getGuestNetwork() != null) {
             s_logger.debug("Adding nic for Virtual Router in Guest network " + routerDeploymentDefinition.getGuestNetwork());
@@ -693,30 +691,32 @@ public class NetworkHelperImpl implements NetworkHelper {
                 final Nic placeholder = _networkModel.getPlaceholderNicForRouter(routerDeploymentDefinition.getGuestNetwork(), routerDeploymentDefinition.getPodId());
                 if (routerDeploymentDefinition.getGuestNetwork().getCidr() != null) {
                     if (placeholder != null && placeholder.getIp4Address() != null) {
-                        s_logger.debug("Requesting ipv4 address " + placeholder.getIp4Address() + " stored in placeholder nic for the network " + routerDeploymentDefinition.getGuestNetwork());
+                        s_logger.debug("Requesting ipv4 address " + placeholder.getIp4Address() + " stored in placeholder nic for the network "
+                                + routerDeploymentDefinition.getGuestNetwork());
                         defaultNetworkStartIp = placeholder.getIp4Address();
                     } else {
                         final String startIp = _networkModel.getStartIpAddress(routerDeploymentDefinition.getGuestNetwork().getId());
                         if (startIp != null && _ipAddressDao.findByIpAndSourceNetworkId(routerDeploymentDefinition.getGuestNetwork().getId(), startIp).getAllocatedTime() == null) {
                             defaultNetworkStartIp = startIp;
                         } else if (s_logger.isDebugEnabled()) {
-                            s_logger.debug("First ipv4 " + startIp + " in network id=" + routerDeploymentDefinition.getGuestNetwork().getId() +
-                                    " is already allocated, can't use it for domain router; will get random ip address from the range");
+                            s_logger.debug("First ipv4 " + startIp + " in network id=" + routerDeploymentDefinition.getGuestNetwork().getId()
+                                    + " is already allocated, can't use it for domain router; will get random ip address from the range");
                         }
                     }
                 }
 
                 if (routerDeploymentDefinition.getGuestNetwork().getIp6Cidr() != null) {
                     if (placeholder != null && placeholder.getIp6Address() != null) {
-                        s_logger.debug("Requesting ipv6 address " + placeholder.getIp6Address() + " stored in placeholder nic for the network " + routerDeploymentDefinition.getGuestNetwork());
+                        s_logger.debug("Requesting ipv6 address " + placeholder.getIp6Address() + " stored in placeholder nic for the network "
+                                + routerDeploymentDefinition.getGuestNetwork());
                         defaultNetworkStartIpv6 = placeholder.getIp6Address();
                     } else {
                         final String startIpv6 = _networkModel.getStartIpv6Address(routerDeploymentDefinition.getGuestNetwork().getId());
                         if (startIpv6 != null && _ipv6Dao.findByNetworkIdAndIp(routerDeploymentDefinition.getGuestNetwork().getId(), startIpv6) == null) {
                             defaultNetworkStartIpv6 = startIpv6;
                         } else if (s_logger.isDebugEnabled()) {
-                            s_logger.debug("First ipv6 " + startIpv6 + " in network id=" + routerDeploymentDefinition.getGuestNetwork().getId() +
-                                    " is already allocated, can't use it for domain router; will get random ipv6 address from the range");
+                            s_logger.debug("First ipv6 " + startIpv6 + " in network id=" + routerDeploymentDefinition.getGuestNetwork().getId()
+                                    + " is already allocated, can't use it for domain router; will get random ipv6 address from the range");
                         }
                     }
                 }
@@ -743,17 +743,17 @@ public class NetworkHelperImpl implements NetworkHelper {
             hasGuestNetwork = true;
         }
 
-        //2) Control network
+        // 2) Control network
         s_logger.debug("Adding nic for Virtual Router in Control network ");
         List<? extends NetworkOffering> offerings = _networkModel.getSystemAccountNetworkOfferings(NetworkOffering.SystemControlNetwork);
         NetworkOffering controlOffering = offerings.get(0);
-        Network controlConfig = _networkMgr.setupNetwork(VirtualNetworkStatus.account, controlOffering, routerDeploymentDefinition.getPlan(),
-                null, null, false).get(0);
+        Network controlConfig = _networkMgr.setupNetwork(VirtualNetworkStatus.account, controlOffering, routerDeploymentDefinition.getPlan(), null, null, false).get(0);
         networks.put(controlConfig, new ArrayList<NicProfile>());
-        //3) Public network
+        // 3) Public network
         if (routerDeploymentDefinition.isPublicNetwork()) {
             s_logger.debug("Adding nic for Virtual Router in Public network ");
-            //if source nat service is supported by the network, get the source nat ip address
+            // if source nat service is supported by the network, get the source
+            // nat ip address
             final NicProfile defaultNic = new NicProfile();
             defaultNic.setDefaultNic(true);
             final PublicIp sourceNatIp = routerDeploymentDefinition.getSourceNatIP();
@@ -776,10 +776,11 @@ public class NetworkHelperImpl implements NetworkHelper {
                 defaultNic.setDeviceId(2);
             }
             final NetworkOffering publicOffering = _networkModel.getSystemAccountNetworkOfferings(NetworkOffering.SystemPublicNetwork).get(0);
-            final List<? extends Network> publicNetworks = _networkMgr.setupNetwork(VirtualNetworkStatus.account, publicOffering,
-                    routerDeploymentDefinition.getPlan(), null, null, false);
+            final List<? extends Network> publicNetworks = _networkMgr.setupNetwork(VirtualNetworkStatus.account, publicOffering, routerDeploymentDefinition.getPlan(), null,
+                    null, false);
             final String publicIp = defaultNic.getIp4Address();
-            // We want to use the identical MAC address for RvR on public interface if possible
+            // We want to use the identical MAC address for RvR on public
+            // interface if possible
             final NicVO peerNic = _nicDao.findByIp4AddressAndNetworkId(publicIp, publicNetworks.get(0).getId());
             if (peerNic != null) {
                 s_logger.info("Use same MAC as previous RvR, the MAC is " + peerNic.getMacAddress());
@@ -790,4 +791,4 @@ public class NetworkHelperImpl implements NetworkHelper {
 
         return networks;
     }
-}
\ No newline at end of file
+}


Mime
View raw message