diff --git a/api/src/com/cloud/network/router/VirtualRouter.java b/api/src/com/cloud/network/router/VirtualRouter.java index 1bc2250902d..620e8e280e3 100755 --- a/api/src/com/cloud/network/router/VirtualRouter.java +++ b/api/src/com/cloud/network/router/VirtualRouter.java @@ -25,8 +25,7 @@ import com.cloud.vm.VirtualMachine; */ public interface VirtualRouter extends VirtualMachine { public enum Role { - DHCP_FIREWALL_LB_PASSWD_USERDATA, - DHCP_USERDATA, LB + VIRTUAL_ROUTER, LB } Role getRole(); boolean getIsRedundantRouter(); diff --git a/core/src/com/cloud/vm/DomainRouterVO.java b/core/src/com/cloud/vm/DomainRouterVO.java index b34bf0d15f7..b341a37f28a 100755 --- a/core/src/com/cloud/vm/DomainRouterVO.java +++ b/core/src/com/cloud/vm/DomainRouterVO.java @@ -72,7 +72,7 @@ public class DomainRouterVO extends VMInstanceVO implements VirtualRouter { @Column(name="role") @Enumerated(EnumType.STRING) - private Role role = Role.DHCP_FIREWALL_LB_PASSWD_USERDATA; + private Role role = Role.VIRTUAL_ROUTER; @Column(name="template_version") private String templateVersion; diff --git a/server/src/com/cloud/network/element/VirtualRouterElement.java b/server/src/com/cloud/network/element/VirtualRouterElement.java index 51c02ca3566..dd3f83b890c 100644 --- a/server/src/com/cloud/network/element/VirtualRouterElement.java +++ b/server/src/com/cloud/network/element/VirtualRouterElement.java @@ -157,7 +157,7 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl @Override public boolean applyFWRules(Network config, List rules) throws ResourceUnavailableException { if (canHandle(config, Service.Firewall)) { - List routers = _routerDao.listByNetworkAndRole(config.getId(), Role.DHCP_FIREWALL_LB_PASSWD_USERDATA); + List routers = _routerDao.listByNetworkAndRole(config.getId(), Role.VIRTUAL_ROUTER); if (routers == null || routers.isEmpty()) { s_logger.debug("Virtual router elemnt doesn't need to apply firewall rules on the backend; virtual router doesn't exist in the network " + config.getId()); return true; @@ -176,7 +176,7 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl @Override public boolean applyLBRules(Network network, List rules) throws ResourceUnavailableException { if (canHandle(network, Service.Lb)) { - List routers = _routerDao.listByNetworkAndRole(network.getId(), Role.DHCP_FIREWALL_LB_PASSWD_USERDATA); + List routers = _routerDao.listByNetworkAndRole(network.getId(), Role.VIRTUAL_ROUTER); if (routers == null || routers.isEmpty()) { s_logger.debug("Virtual router elemnt doesn't need to apply firewall rules on the backend; virtual router doesn't exist in the network " + network.getId()); return true; @@ -196,7 +196,7 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl @Override public String[] applyVpnUsers(RemoteAccessVpn vpn, List users) throws ResourceUnavailableException{ Network network = _networksDao.findById(vpn.getNetworkId()); - List routers = _routerDao.listByNetworkAndRole(network.getId(), Role.DHCP_FIREWALL_LB_PASSWD_USERDATA); + List routers = _routerDao.listByNetworkAndRole(network.getId(), Role.VIRTUAL_ROUTER); if (routers == null || routers.isEmpty()) { s_logger.debug("Virtual router elemnt doesn't need to apply vpn users on the backend; virtual router doesn't exist in the network " + network.getId()); return null; @@ -212,7 +212,7 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl @Override public boolean startVpn(Network network, RemoteAccessVpn vpn) throws ResourceUnavailableException { - List routers = _routerDao.listByNetworkAndRole(network.getId(), Role.DHCP_FIREWALL_LB_PASSWD_USERDATA); + List routers = _routerDao.listByNetworkAndRole(network.getId(), Role.VIRTUAL_ROUTER); if (routers == null || routers.isEmpty()) { s_logger.debug("Virtual router elemnt doesn't need stop vpn on the backend; virtual router doesn't exist in the network " + network.getId()); return true; @@ -228,7 +228,7 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl @Override public boolean stopVpn(Network network, RemoteAccessVpn vpn) throws ResourceUnavailableException { - List routers = _routerDao.listByNetworkAndRole(network.getId(), Role.DHCP_FIREWALL_LB_PASSWD_USERDATA); + List routers = _routerDao.listByNetworkAndRole(network.getId(), Role.VIRTUAL_ROUTER); if (routers == null || routers.isEmpty()) { s_logger.debug("Virtual router elemnt doesn't need stop vpn on the backend; virtual router doesn't exist in the network " + network.getId()); return true; @@ -246,7 +246,7 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl public boolean applyIps(Network network, List ipAddress) throws ResourceUnavailableException { if (canHandle(network, Service.Firewall)) { - List routers = _routerDao.listByNetworkAndRole(network.getId(), Role.DHCP_FIREWALL_LB_PASSWD_USERDATA); + List routers = _routerDao.listByNetworkAndRole(network.getId(), Role.VIRTUAL_ROUTER); if (routers == null || routers.isEmpty()) { s_logger.debug("Virtual router elemnt doesn't need to associate ip addresses on the backend; virtual router doesn't exist in the network " + network.getId()); return true; @@ -313,7 +313,7 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl @Override public boolean applyStaticNats(Network config, List rules) throws ResourceUnavailableException { if (canHandle(config, Service.StaticNat)) { - List routers = _routerDao.listByNetworkAndRole(config.getId(), Role.DHCP_FIREWALL_LB_PASSWD_USERDATA); + List routers = _routerDao.listByNetworkAndRole(config.getId(), Role.VIRTUAL_ROUTER); if (routers == null || routers.isEmpty()) { s_logger.debug("Virtual router elemnt doesn't need to apply static nat on the backend; virtual router doesn't exist in the network " + config.getId()); return true; @@ -327,7 +327,7 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl @Override public boolean shutdown(Network network, ReservationContext context, boolean cleanup) throws ConcurrentOperationException, ResourceUnavailableException { - List routers = _routerDao.listByNetworkAndRole(network.getId(), Role.DHCP_FIREWALL_LB_PASSWD_USERDATA); + List routers = _routerDao.listByNetworkAndRole(network.getId(), Role.VIRTUAL_ROUTER); if (routers == null || routers.isEmpty()) { return true; } @@ -349,7 +349,7 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl @Override public boolean destroy(Network config) throws ConcurrentOperationException, ResourceUnavailableException{ - List routers = _routerDao.listByNetworkAndRole(config.getId(), Role.DHCP_FIREWALL_LB_PASSWD_USERDATA); + List routers = _routerDao.listByNetworkAndRole(config.getId(), Role.VIRTUAL_ROUTER); if (routers == null || routers.isEmpty()) { return true; } @@ -363,7 +363,7 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl @Override public boolean savePassword(Network network, NicProfile nic, VirtualMachineProfile vm) throws ResourceUnavailableException{ - List routers = _routerDao.listByNetworkAndRole(network.getId(), Role.DHCP_FIREWALL_LB_PASSWD_USERDATA); + List routers = _routerDao.listByNetworkAndRole(network.getId(), Role.VIRTUAL_ROUTER); if (routers == null || routers.isEmpty()) { s_logger.trace("Can't find dhcp element in network " + network.getId()); return true; @@ -409,7 +409,7 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl @Override public boolean applyPFRules(Network network, List rules) throws ResourceUnavailableException { if (canHandle(network, Service.PortForwarding)) { - List routers = _routerDao.listByNetworkAndRole(network.getId(), Role.DHCP_FIREWALL_LB_PASSWD_USERDATA); + List routers = _routerDao.listByNetworkAndRole(network.getId(), Role.VIRTUAL_ROUTER); if (routers == null || routers.isEmpty()) { s_logger.debug("Virtual router elemnt doesn't need to apply firewall rules on the backend; virtual router doesn't exist in the network " + network.getId()); return true; @@ -494,20 +494,20 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl List routers; if (publicNetwork) { - routers = _routerDao.listByNetworkAndRole(network.getId(), Role.DHCP_FIREWALL_LB_PASSWD_USERDATA); + routers = _routerDao.listByNetworkAndRole(network.getId(), Role.VIRTUAL_ROUTER); } else { Long podId = dest.getPod().getId(); if (isPodBased) { - routers = _routerDao.listByNetworkAndPodAndRole(network.getId(), podId, Role.DHCP_USERDATA); + routers = _routerDao.listByNetworkAndPodAndRole(network.getId(), podId, Role.VIRTUAL_ROUTER); } else { - routers = _routerDao.listByNetworkAndRole(network.getId(), Role.DHCP_USERDATA); + routers = _routerDao.listByNetworkAndRole(network.getId(), Role.VIRTUAL_ROUTER); } } //for Basic zone, add all Running routers - we have to send Dhcp/vmData/password info to them when network.dns.basiczone.updates is set to "all" Long podId = dest.getPod().getId(); if (isPodBased && _routerMgr.getDnsBasicZoneUpdate().equalsIgnoreCase("all")) { - List allRunningRoutersOutsideThePod = _routerDao.findByNetworkOutsideThePod(network.getId(), podId, State.Running, Role.DHCP_USERDATA); + List allRunningRoutersOutsideThePod = _routerDao.findByNetworkOutsideThePod(network.getId(), podId, State.Running, Role.VIRTUAL_ROUTER); routers.addAll(allRunningRoutersOutsideThePod); } @@ -542,20 +542,20 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl List routers; if (publicNetwork) { - routers = _routerDao.listByNetworkAndRole(network.getId(), Role.DHCP_FIREWALL_LB_PASSWD_USERDATA); + routers = _routerDao.listByNetworkAndRole(network.getId(), Role.VIRTUAL_ROUTER); } else { Long podId = dest.getPod().getId(); if (isPodBased) { - routers = _routerDao.listByNetworkAndPodAndRole(network.getId(), podId, Role.DHCP_USERDATA); + routers = _routerDao.listByNetworkAndPodAndRole(network.getId(), podId, Role.VIRTUAL_ROUTER); } else { - routers = _routerDao.listByNetworkAndRole(network.getId(), Role.DHCP_USERDATA); + routers = _routerDao.listByNetworkAndRole(network.getId(), Role.VIRTUAL_ROUTER); } } //for Basic zone, add all Running routers - we have to send Dhcp/vmData/password info to them when network.dns.basiczone.updates is set to "all" Long podId = dest.getPod().getId(); if (isPodBased && _routerMgr.getDnsBasicZoneUpdate().equalsIgnoreCase("all")) { - List allRunningRoutersOutsideThePod = _routerDao.findByNetworkOutsideThePod(network.getId(), podId, State.Running, Role.DHCP_USERDATA); + List allRunningRoutersOutsideThePod = _routerDao.findByNetworkOutsideThePod(network.getId(), podId, State.Running, Role.VIRTUAL_ROUTER); routers.addAll(allRunningRoutersOutsideThePod); } diff --git a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java index 542f464f41e..6d1eb914982 100755 --- a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java +++ b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java @@ -917,7 +917,7 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian continue; } checkedNetwork.add(networkId); - List checkingRouters = _routerDao.listByNetworkAndRole(networkId, Role.DHCP_FIREWALL_LB_PASSWD_USERDATA); + List checkingRouters = _routerDao.listByNetworkAndRole(networkId, Role.VIRTUAL_ROUTER); if (checkingRouters.size() != 2) { continue; } @@ -1043,14 +1043,14 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian } List routers; if (publicNetwork) { - routers = _routerDao.listByNetworkAndRole(guestNetwork.getId(), Role.DHCP_FIREWALL_LB_PASSWD_USERDATA); + routers = _routerDao.listByNetworkAndRole(guestNetwork.getId(), Role.VIRTUAL_ROUTER); } else { Long podId = dest.getPod().getId(); if (isPodBased) { - routers = _routerDao.listByNetworkAndPodAndRole(guestNetwork.getId(), podId, Role.DHCP_USERDATA); + routers = _routerDao.listByNetworkAndPodAndRole(guestNetwork.getId(), podId, Role.VIRTUAL_ROUTER); plan = new DataCenterDeployment(dcId, podId, null, null, null, null); } else { - routers = _routerDao.listByNetworkAndRole(guestNetwork.getId(), Role.DHCP_USERDATA); + routers = _routerDao.listByNetworkAndRole(guestNetwork.getId(), Role.VIRTUAL_ROUTER); plan = new DataCenterDeployment(dcId); } } @@ -1175,9 +1175,7 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian router = new DomainRouterVO(id, routerOffering.getId(), vrProvider.getId(), VirtualMachineName.getRouterName(id, _instance), template.getId(), template.getHypervisorType(), template.getGuestOSId(), owner.getDomainId(), owner.getId(), guestNetwork.getId(), isRedundant, 0, false, RedundantState.UNKNOWN, routerOffering.getOfferHA(), false); - if (!publicNetwork) { - router.setRole(Role.DHCP_USERDATA); - } + router.setRole(Role.VIRTUAL_ROUTER); router = _itMgr.allocate(router, template, routerOffering, networks, plan, null, owner); break; } catch (InsufficientCapacityException ex) { @@ -1213,7 +1211,7 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian private DomainRouterVO startVirtualRouter(DomainRouterVO router, User user, Account caller, Map params) throws StorageUnavailableException, InsufficientCapacityException, ConcurrentOperationException, ResourceUnavailableException { - if (router.getRole() == Role.DHCP_USERDATA || !router.getIsRedundantRouter()) { + if (router.getRole() == Role.VIRTUAL_ROUTER || !router.getIsRedundantRouter()) { return this.start(router, user, caller, params, null); } @@ -1500,7 +1498,12 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian { _disable_rp_filter = false; } - if (router.getRole() == Role.DHCP_USERDATA) { + + boolean publicNetwork = false; + if (_networkMgr.isProviderSupportedInNetwork(network.getId(), Service.SourceNat, Provider.VirtualRouter)) { + publicNetwork = true; + } + if (!publicNetwork) { type = "dhcpsrvr"; } else { type = "router"; @@ -1516,7 +1519,7 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian boolean isRedundant = router.getIsRedundantRouter(); if (isRedundant) { buf.append(" redundant_router=1"); - List routers = _routerDao.listByNetworkAndRole(network.getId(), Role.DHCP_FIREWALL_LB_PASSWD_USERDATA); + List routers = _routerDao.listByNetworkAndRole(network.getId(), Role.VIRTUAL_ROUTER); try { int priority = getUpdatedPriority(network, routers, router); router.setPriority(priority); @@ -1710,8 +1713,7 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian throw new CloudRuntimeException("Cannot find related provider of virtual router provider: " + vrProvider.getType().toString()); } - // The commands should be sent for domR only, skip for DHCP - if (router.getRole() == VirtualRouter.Role.DHCP_FIREWALL_LB_PASSWD_USERDATA && reprogramNetwork) { + if (reprogramNetwork) { s_logger.debug("Resending ipAssoc, port forwarding, load balancing rules as a part of Virtual router start"); long networkId = router.getNetworkId(); long ownerId = router.getAccountId(); diff --git a/server/src/com/cloud/vm/dao/DomainRouterDaoImpl.java b/server/src/com/cloud/vm/dao/DomainRouterDaoImpl.java index 37315e3e27b..8bfe371c329 100755 --- a/server/src/com/cloud/vm/dao/DomainRouterDaoImpl.java +++ b/server/src/com/cloud/vm/dao/DomainRouterDaoImpl.java @@ -126,7 +126,7 @@ public class DomainRouterDaoImpl extends GenericDaoBase im SearchCriteria sc = AllFieldsSearch.create(); sc.setParameters("account", accountId); sc.setParameters("dc", dcId); - sc.setParameters("role", Role.DHCP_FIREWALL_LB_PASSWD_USERDATA); + sc.setParameters("role", Role.VIRTUAL_ROUTER); return listBy(sc); }