http://git-wip-us.apache.org/repos/asf/cloudstack/blob/bc90ce08/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java b/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java index a7edfe3..abb4849 100644 --- a/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java +++ b/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java @@ -16,7 +16,6 @@ // under the License. package com.cloud.network.router; - import java.net.URI; import java.util.ArrayList; import java.util.HashMap; @@ -39,17 +38,8 @@ import com.cloud.agent.api.PlugNicCommand; import com.cloud.agent.api.SetupGuestNetworkCommand; import com.cloud.agent.api.routing.AggregationControlCommand; import com.cloud.agent.api.routing.AggregationControlCommand.Action; -import com.cloud.agent.api.routing.IpAssocVpcCommand; -import com.cloud.agent.api.routing.NetworkElementCommand; -import com.cloud.agent.api.routing.SetNetworkACLCommand; -import com.cloud.agent.api.routing.SetSourceNatCommand; -import com.cloud.agent.api.routing.SetStaticRouteCommand; -import com.cloud.agent.api.routing.Site2SiteVpnCfgCommand; -import com.cloud.agent.api.to.IpAddressTO; -import com.cloud.agent.api.to.NetworkACLTO; import com.cloud.agent.manager.Commands; import com.cloud.dc.DataCenter; -import com.cloud.dc.DataCenterVO; import com.cloud.deploy.DeployDestination; import com.cloud.exception.AgentUnavailableException; import com.cloud.exception.ConcurrentOperationException; @@ -67,13 +57,9 @@ import com.cloud.network.RemoteAccessVpn; import com.cloud.network.Site2SiteVpnConnection; import com.cloud.network.VirtualRouterProvider; import com.cloud.network.VpcVirtualNetworkApplianceService; -import com.cloud.network.VpnUser; import com.cloud.network.addr.PublicIp; import com.cloud.network.dao.IPAddressVO; import com.cloud.network.dao.RemoteAccessVpnVO; -import com.cloud.network.dao.Site2SiteCustomerGatewayVO; -import com.cloud.network.dao.Site2SiteVpnGatewayVO; -import com.cloud.network.vpc.NetworkACLItem; import com.cloud.network.vpc.NetworkACLItemDao; import com.cloud.network.vpc.NetworkACLItemVO; import com.cloud.network.vpc.NetworkACLManager; @@ -91,7 +77,6 @@ import com.cloud.network.vpc.dao.StaticRouteDao; import com.cloud.network.vpc.dao.VpcDao; import com.cloud.network.vpc.dao.VpcGatewayDao; import com.cloud.network.vpn.Site2SiteVpnManager; -import com.cloud.user.Account; import com.cloud.user.UserStatisticsVO; import com.cloud.utils.Pair; import com.cloud.utils.db.EntityManager; @@ -109,7 +94,7 @@ import com.cloud.vm.VirtualMachineProfile.Param; import com.cloud.vm.dao.VMInstanceDao; @Component -@Local(value = {VpcVirtualNetworkApplianceManager.class, VpcVirtualNetworkApplianceService.class}) +@Local(value = { VpcVirtualNetworkApplianceManager.class, VpcVirtualNetworkApplianceService.class }) public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplianceManagerImpl implements VpcVirtualNetworkApplianceManager { private static final Logger s_logger = Logger.getLogger(VpcVirtualNetworkApplianceManagerImpl.class); @@ -134,9 +119,6 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian @Inject private EntityManager _entityMgr; - @Inject - private NicProfileHelper nicProfileHelper; - @Override public boolean configure(final String name, final Map<String, Object> params) throws ConfigurationException { _itMgr.registerGuru(VirtualMachine.Type.DomainRouter, this); @@ -151,7 +133,7 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian return false; } - //Add router to the Guest network + // Add router to the Guest network boolean result = true; try { @@ -159,16 +141,15 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian _routerDao.addRouterToGuestNetwork(router, network); NicProfile guestNic = _itMgr.addVmToNetwork(router, network, null); - //2) setup guest network + // 2) setup guest network if (guestNic != null) { result = setupVpcGuestNetwork(network, router, true, guestNic); } else { s_logger.warn("Failed to add router " + router + " to guest network " + network); result = false; } - //3) apply networking rules - if (result && params.get(Param.ReProgramGuestNetworks) != null - && (Boolean) params.get(Param.ReProgramGuestNetworks) == true) { + // 3) apply networking rules + if (result && params.get(Param.ReProgramGuestNetworks) != null && (Boolean) params.get(Param.ReProgramGuestNetworks) == true) { sendNetworkRulesToRouter(router.getId(), network.getId()); } } catch (Exception ex) { @@ -192,7 +173,7 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian @Override public boolean removeVpcRouterFromGuestNetwork(final VirtualRouter router, final Network network, final boolean isRedundant) throws ConcurrentOperationException, - ResourceUnavailableException { + ResourceUnavailableException { if (network.getTrafficType() != TrafficType.Guest) { s_logger.warn("Network " + network + " is not of type " + TrafficType.Guest); return false; @@ -200,7 +181,7 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian boolean result = true; try { - //Check if router is a part of the Guest network + // Check if router is a part of the Guest network if (!_networkModel.isVmPartOfNetwork(router.getId(), network.getId())) { s_logger.debug("Router " + router + " is not a part of the Guest network " + network); return result; @@ -223,11 +204,11 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian } protected boolean setupVpcGuestNetwork(final Network network, final VirtualRouter router, final boolean add, final NicProfile guestNic) throws ConcurrentOperationException, - ResourceUnavailableException { + ResourceUnavailableException { boolean result = true; if (router.getState() == State.Running) { - SetupGuestNetworkCommand setupCmd = createSetupGuestNetworkCommand(router, add, guestNic); + SetupGuestNetworkCommand setupCmd = _commandSetupHelper.createSetupGuestNetworkCommand(router, add, guestNic); Commands cmds = new Commands(Command.OnError.Stop); cmds.addCommand("setupguestnetwork", setupCmd); @@ -245,119 +226,8 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian return true; } else { s_logger.warn("Unable to setup guest network on virtual router " + router + " is not in the right state " + router.getState()); - throw new ResourceUnavailableException("Unable to setup guest network on the backend," + " virtual router " + router + " is not in the right state", - DataCenter.class, router.getDataCenterId()); - } - } - - protected SetupGuestNetworkCommand createSetupGuestNetworkCommand(final VirtualRouter router, final boolean add, final NicProfile guestNic) { - Network network = _networkModel.getNetwork(guestNic.getNetworkId()); - - String defaultDns1 = null; - String defaultDns2 = null; - - boolean dnsProvided = _networkModel.isProviderSupportServiceInNetwork(network.getId(), Service.Dns, Provider.VPCVirtualRouter); - boolean dhcpProvided = _networkModel.isProviderSupportServiceInNetwork(network.getId(), Service.Dhcp, Provider.VPCVirtualRouter); - - boolean setupDns = dnsProvided || dhcpProvided; - - if (setupDns) { - defaultDns1 = guestNic.getDns1(); - defaultDns2 = guestNic.getDns2(); - } - - Nic nic = _nicDao.findByNtwkIdAndInstanceId(network.getId(), router.getId()); - String networkDomain = network.getNetworkDomain(); - String dhcpRange = getGuestDhcpRange(guestNic, network, _entityMgr.findById(DataCenter.class, network.getDataCenterId())); - - NicProfile nicProfile = _networkModel.getNicProfile(router, nic.getNetworkId(), null); - - SetupGuestNetworkCommand setupCmd = - new SetupGuestNetworkCommand(dhcpRange, networkDomain, false, null, defaultDns1, defaultDns2, add, _itMgr.toNicTO(nicProfile, router.getHypervisorType())); - - String brd = NetUtils.long2Ip(NetUtils.ip2Long(guestNic.getIp4Address()) | ~NetUtils.ip2Long(guestNic.getNetmask())); - setupCmd.setAccessDetail(NetworkElementCommand.ROUTER_IP, getRouterControlIp(router.getId())); - setupCmd.setAccessDetail(NetworkElementCommand.ROUTER_GUEST_IP, getRouterIpInNetwork(network.getId(), router.getId())); - - setupCmd.setAccessDetail(NetworkElementCommand.GUEST_NETWORK_GATEWAY, network.getGateway()); - setupCmd.setAccessDetail(NetworkElementCommand.GUEST_BRIDGE, brd); - setupCmd.setAccessDetail(NetworkElementCommand.ROUTER_NAME, router.getInstanceName()); - - if (network.getBroadcastDomainType() == BroadcastDomainType.Vlan) { - long guestVlanTag = Long.parseLong(BroadcastDomainType.Vlan.getValueFrom(network.getBroadcastUri())); - setupCmd.setAccessDetail(NetworkElementCommand.GUEST_VLAN_TAG, String.valueOf(guestVlanTag)); - } - - return setupCmd; - } - - private void createVpcAssociatePublicIPCommands(final VirtualRouter router, final List<? extends PublicIpAddress> ips, final Commands cmds, - final Map<String, String> vlanMacAddress) { - - Pair<IpAddressTO, Long> sourceNatIpAdd = null; - Boolean addSourceNat = null; - // Ensure that in multiple vlans case we first send all ip addresses of vlan1, then all ip addresses of vlan2, etc.. - Map<String, ArrayList<PublicIpAddress>> vlanIpMap = new HashMap<String, ArrayList<PublicIpAddress>>(); - for (final PublicIpAddress ipAddress : ips) { - String vlanTag = ipAddress.getVlanTag(); - ArrayList<PublicIpAddress> ipList = vlanIpMap.get(vlanTag); - if (ipList == null) { - ipList = new ArrayList<PublicIpAddress>(); - } - //VR doesn't support release for sourceNat IP address; so reset the state - if (ipAddress.isSourceNat() && ipAddress.getState() == IpAddress.State.Releasing) { - ipAddress.setState(IpAddress.State.Allocated); - } - ipList.add(ipAddress); - vlanIpMap.put(vlanTag, ipList); - } - - for (Map.Entry<String, ArrayList<PublicIpAddress>> vlanAndIp : vlanIpMap.entrySet()) { - List<PublicIpAddress> ipAddrList = vlanAndIp.getValue(); - - // Get network rate - required for IpAssoc - Integer networkRate = _networkModel.getNetworkRate(ipAddrList.get(0).getNetworkId(), router.getId()); - Network network = _networkModel.getNetwork(ipAddrList.get(0).getNetworkId()); - - IpAddressTO[] ipsToSend = new IpAddressTO[ipAddrList.size()]; - int i = 0; - - for (final PublicIpAddress ipAddr : ipAddrList) { - boolean add = ipAddr.getState() == IpAddress.State.Releasing ? false : true; - - String macAddress = vlanMacAddress.get(BroadcastDomainType.getValue(BroadcastDomainType.fromString(ipAddr.getVlanTag()))); - - IpAddressTO ip = - new IpAddressTO(ipAddr.getAccountId(), ipAddr.getAddress().addr(), add, false, ipAddr.isSourceNat(), ipAddr.getVlanTag(), ipAddr.getGateway(), - ipAddr.getNetmask(), macAddress, networkRate, ipAddr.isOneToOneNat()); - - ip.setTrafficType(network.getTrafficType()); - ip.setNetworkName(_networkModel.getNetworkTag(router.getHypervisorType(), network)); - ipsToSend[i++] = ip; - if (ipAddr.isSourceNat()) { - sourceNatIpAdd = new Pair<IpAddressTO, Long>(ip, ipAddr.getNetworkId()); - addSourceNat = add; - } - } - IpAssocVpcCommand cmd = new IpAssocVpcCommand(ipsToSend); - cmd.setAccessDetail(NetworkElementCommand.ROUTER_IP, getRouterControlIp(router.getId())); - cmd.setAccessDetail(NetworkElementCommand.ROUTER_GUEST_IP, getRouterIpInNetwork(ipAddrList.get(0).getNetworkId(), router.getId())); - cmd.setAccessDetail(NetworkElementCommand.ROUTER_NAME, router.getInstanceName()); - DataCenterVO dcVo = _dcDao.findById(router.getDataCenterId()); - cmd.setAccessDetail(NetworkElementCommand.ZONE_NETWORK_TYPE, dcVo.getNetworkType().toString()); - - cmds.addCommand("IPAssocVpcCommand", cmd); - } - - //set source nat ip - if (sourceNatIpAdd != null) { - IpAddressTO sourceNatIp = sourceNatIpAdd.first(); - SetSourceNatCommand cmd = new SetSourceNatCommand(sourceNatIp, addSourceNat); - cmd.setAccessDetail(NetworkElementCommand.ROUTER_IP, getRouterControlIp(router.getId())); - cmd.setAccessDetail(NetworkElementCommand.ROUTER_NAME, router.getInstanceName()); - DataCenterVO dcVo = _dcDao.findById(router.getDataCenterId()); - cmd.setAccessDetail(NetworkElementCommand.ZONE_NETWORK_TYPE, dcVo.getNetworkType().toString()); - cmds.addCommand("SetSourceNatCommand", cmd); + throw new ResourceUnavailableException("Unable to setup guest network on the backend," + " virtual router " + router + " is not in the right state", DataCenter.class, + router.getDataCenterId()); } } @@ -368,12 +238,12 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian if (vr.getVpcId() != null) { String defaultDns1 = null; String defaultDns2 = null; - //remove public and guest nics as we will plug them later + // remove public and guest nics as we will plug them later Iterator<NicProfile> it = profile.getNics().iterator(); while (it.hasNext()) { NicProfile nic = it.next(); if (nic.getTrafficType() == TrafficType.Public || nic.getTrafficType() == TrafficType.Guest) { - //save dns information + // save dns information if (nic.getTrafficType() == TrafficType.Public) { defaultDns1 = nic.getDns1(); defaultDns2 = nic.getDns2(); @@ -383,7 +253,7 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian } } - //add vpc cidr/dns/networkdomain to the boot load args + // add vpc cidr/dns/networkdomain to the boot load args StringBuilder buf = profile.getBootArgsBuilder(); Vpc vpc = _entityMgr.findById(Vpc.class, vr.getVpcId()); buf.append(" vpccidr=" + vpc.getCidr() + " domain=" + vpc.getNetworkDomain()); @@ -397,36 +267,6 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian return super.finalizeVirtualMachineProfile(profile, dest, context); } - private void createNetworkACLsCommands(final List<? extends NetworkACLItem> rules, final VirtualRouter router, final Commands cmds, final long guestNetworkId, final boolean privateGateway) { - List<NetworkACLTO> rulesTO = new ArrayList<NetworkACLTO>(); - String guestVlan = null; - Network guestNtwk = _networkDao.findById(guestNetworkId); - URI uri = guestNtwk.getBroadcastUri(); - if (uri != null) { - guestVlan = BroadcastDomainType.getValue(uri); - } - - if (rules != null) { - for (NetworkACLItem rule : rules) { - NetworkACLTO ruleTO = new NetworkACLTO(rule, guestVlan, rule.getTrafficType()); - rulesTO.add(ruleTO); - } - } - - SetNetworkACLCommand cmd = new SetNetworkACLCommand(rulesTO, _nwHelper.getNicTO(router, guestNetworkId, null)); - cmd.setAccessDetail(NetworkElementCommand.ROUTER_IP, getRouterControlIp(router.getId())); - cmd.setAccessDetail(NetworkElementCommand.ROUTER_GUEST_IP, getRouterIpInNetwork(guestNetworkId, router.getId())); - cmd.setAccessDetail(NetworkElementCommand.GUEST_VLAN_TAG, guestVlan); - cmd.setAccessDetail(NetworkElementCommand.ROUTER_NAME, router.getInstanceName()); - DataCenterVO dcVo = _dcDao.findById(router.getDataCenterId()); - cmd.setAccessDetail(NetworkElementCommand.ZONE_NETWORK_TYPE, dcVo.getNetworkType().toString()); - if (privateGateway) { - cmd.setAccessDetail(NetworkElementCommand.VPC_PRIVATE_GATEWAY, String.valueOf(VpcGateway.Type.Private)); - } - - cmds.addCommand(cmd); - } - @Override public boolean finalizeCommandsOnStart(final Commands cmds, final VirtualMachineProfile profile) { DomainRouterVO router = _routerDao.findById(profile.getId()); @@ -436,7 +276,7 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian return super.finalizeCommandsOnStart(cmds, profile); } - //1) FORM SSH CHECK COMMAND + // 1) FORM SSH CHECK COMMAND NicProfile controlNic = getControlNic(profile); if (controlNic == null) { s_logger.error("Control network doesn't exist for the router " + router); @@ -445,7 +285,7 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian finalizeSshAndVersionAndNetworkUsageOnStart(cmds, profile, router, controlNic); - //2) FORM PLUG NIC COMMANDS + // 2) FORM PLUG NIC COMMANDS List<Pair<Nic, Network>> guestNics = new ArrayList<Pair<Nic, Network>>(); List<Pair<Nic, Network>> publicNics = new ArrayList<Pair<Nic, Network>>(); Map<String, String> vlanMacAddress = new HashMap<String, String>(); @@ -466,9 +306,9 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian List<Command> usageCmds = new ArrayList<Command>(); - //3) PREPARE PLUG NIC COMMANDS + // 3) PREPARE PLUG NIC COMMANDS try { - //add VPC router to public networks + // add VPC router to public networks List<PublicIp> sourceNat = new ArrayList<PublicIp>(1); for (Pair<Nic, Network> nicNtwk : publicNics) { Nic publicNic = nicNtwk.first(); @@ -487,44 +327,41 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian _routerDao.update(routerVO.getId(), routerVO); } } - PlugNicCommand plugNicCmd = - new PlugNicCommand(_nwHelper.getNicTO(router, publicNic.getNetworkId(), publicNic.getBroadcastUri().toString()), router.getInstanceName(), router.getType()); + PlugNicCommand plugNicCmd = new PlugNicCommand(_nwHelper.getNicTO(router, publicNic.getNetworkId(), publicNic.getBroadcastUri().toString()), + router.getInstanceName(), router.getType()); cmds.addCommand(plugNicCmd); VpcVO vpc = _vpcDao.findById(router.getVpcId()); - NetworkUsageCommand netUsageCmd = - new NetworkUsageCommand(router.getPrivateIpAddress(), router.getInstanceName(), true, publicNic.getIp4Address(), vpc.getCidr()); + NetworkUsageCommand netUsageCmd = new NetworkUsageCommand(router.getPrivateIpAddress(), router.getInstanceName(), true, publicNic.getIp4Address(), vpc.getCidr()); usageCmds.add(netUsageCmd); - UserStatisticsVO stats = - _userStatsDao.findBy(router.getAccountId(), router.getDataCenterId(), publicNtwk.getId(), publicNic.getIp4Address(), router.getId(), router.getType() - .toString()); + UserStatisticsVO stats = _userStatsDao.findBy(router.getAccountId(), router.getDataCenterId(), publicNtwk.getId(), publicNic.getIp4Address(), router.getId(), + router.getType().toString()); if (stats == null) { - stats = - new UserStatisticsVO(router.getAccountId(), router.getDataCenterId(), publicNic.getIp4Address(), router.getId(), router.getType().toString(), - publicNtwk.getId()); + stats = new UserStatisticsVO(router.getAccountId(), router.getDataCenterId(), publicNic.getIp4Address(), router.getId(), router.getType().toString(), + publicNtwk.getId()); _userStatsDao.persist(stats); } } // create ip assoc for source nat if (!sourceNat.isEmpty()) { - createVpcAssociatePublicIPCommands(router, sourceNat, cmds, vlanMacAddress); + _commandSetupHelper.createVpcAssociatePublicIPCommands(router, sourceNat, cmds, vlanMacAddress); } - //add VPC router to guest networks + // add VPC router to guest networks for (Pair<Nic, Network> nicNtwk : guestNics) { Nic guestNic = nicNtwk.first(); - //plug guest nic + // plug guest nic PlugNicCommand plugNicCmd = new PlugNicCommand(_nwHelper.getNicTO(router, guestNic.getNetworkId(), null), router.getInstanceName(), router.getType()); cmds.addCommand(plugNicCmd); if (!_networkModel.isPrivateGateway(guestNic.getNetworkId())) { - //set guest network + // set guest network VirtualMachine vm = _vmDao.findById(router.getId()); NicProfile nicProfile = _networkModel.getNicProfile(vm, guestNic.getNetworkId(), null); - SetupGuestNetworkCommand setupCmd = createSetupGuestNetworkCommand(router, true, nicProfile); + SetupGuestNetworkCommand setupCmd = _commandSetupHelper.createSetupGuestNetworkCommand(router, true, nicProfile); cmds.addCommand(setupCmd); } else { - //set private network + // set private network PrivateIpVO ipVO = _privateIpDao.findByIpAndSourceNetworkId(guestNic.getNetworkId(), guestNic.getIp4Address()); Network network = _networkDao.findById(guestNic.getNetworkId()); BroadcastDomainType.getValue(network.getBroadcastUri()); @@ -533,17 +370,17 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian List<PrivateIpAddress> privateIps = new ArrayList<PrivateIpAddress>(1); privateIps.add(ip); - createVpcAssociatePrivateIPCommands(router, privateIps, cmds, true); + _commandSetupHelper.createVpcAssociatePrivateIPCommands(router, privateIps, cmds, true); Long privateGwAclId = _vpcGatewayDao.getNetworkAclIdForPrivateIp(ipVO.getVpcId(), ipVO.getNetworkId(), ipVO.getIpAddress()); if (privateGwAclId != null) { - //set network acl on private gateway + // set network acl on private gateway List<NetworkACLItemVO> networkACLs = _networkACLItemDao.listByACL(privateGwAclId); - s_logger.debug("Found " + networkACLs.size() + " network ACLs to apply as a part of VPC VR " + router + " start for private gateway ip = " + - ipVO.getIpAddress()); + s_logger.debug("Found " + networkACLs.size() + " network ACLs to apply as a part of VPC VR " + router + " start for private gateway ip = " + + ipVO.getIpAddress()); - createNetworkACLsCommands(networkACLs, router, cmds, ipVO.getNetworkId(), true); + _commandSetupHelper.createNetworkACLsCommands(networkACLs, router, cmds, ipVO.getNetworkId(), true); } } } @@ -552,7 +389,7 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian return false; } - //4) RE-APPLY ALL STATIC ROUTE RULES + // 4) RE-APPLY ALL STATIC ROUTE RULES List<? extends StaticRoute> routes = _staticRouteDao.listByVpcId(router.getVpcId()); List<StaticRouteProfile> staticRouteProfiles = new ArrayList<StaticRouteProfile>(routes.size()); Map<Long, VpcGateway> gatewayMap = new HashMap<Long, VpcGateway>(); @@ -567,18 +404,18 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian s_logger.debug("Found " + staticRouteProfiles.size() + " static routes to apply as a part of vpc route " + router + " start"); if (!staticRouteProfiles.isEmpty()) { - createStaticRouteCommands(staticRouteProfiles, router, cmds); + _commandSetupHelper.createStaticRouteCommands(staticRouteProfiles, router, cmds); } - //5) RE-APPLY ALL REMOTE ACCESS VPNs + // 5) RE-APPLY ALL REMOTE ACCESS VPNs RemoteAccessVpnVO vpn = _vpnDao.findByAccountAndVpc(router.getAccountId(), router.getVpcId()); if (vpn != null) { - createApplyVpnCommands(true, vpn, router, cmds); + _commandSetupHelper.createApplyVpnCommands(true, vpn, router, cmds); } - //6) REPROGRAM GUEST NETWORK + // 6) REPROGRAM GUEST NETWORK boolean reprogramGuestNtwks = true; - if (profile.getParameter(Param.ReProgramGuestNetworks) != null && (Boolean)profile.getParameter(Param.ReProgramGuestNetworks) == false) { + if (profile.getParameter(Param.ReProgramGuestNetworks) != null && (Boolean) profile.getParameter(Param.ReProgramGuestNetworks) == false) { reprogramGuestNtwks = false; } @@ -593,8 +430,8 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian for (Pair<Nic, Network> nicNtwk : guestNics) { Nic guestNic = nicNtwk.first(); - AggregationControlCommand startCmd = new AggregationControlCommand(Action.Start, router.getInstanceName(), controlNic.getIp4Address(), - getRouterIpInNetwork(guestNic.getNetworkId(), router.getId())); + AggregationControlCommand startCmd = new AggregationControlCommand(Action.Start, router.getInstanceName(), controlNic.getIp4Address(), getRouterIpInNetwork( + guestNic.getNetworkId(), router.getId())); cmds.addCommand(startCmd); if (reprogramGuestNtwks) { finalizeIpAssocForNetwork(cmds, router, provider, guestNic.getNetworkId(), vlanMacAddress); @@ -602,12 +439,12 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian } finalizeUserDataAndDhcpOnStart(cmds, router, provider, guestNic.getNetworkId()); - AggregationControlCommand finishCmd = new AggregationControlCommand(Action.Finish, router.getInstanceName(), controlNic.getIp4Address(), - getRouterIpInNetwork(guestNic.getNetworkId(), router.getId())); + AggregationControlCommand finishCmd = new AggregationControlCommand(Action.Finish, router.getInstanceName(), controlNic.getIp4Address(), getRouterIpInNetwork( + guestNic.getNetworkId(), router.getId())); cmds.addCommand(finishCmd); } - //Add network usage commands + // Add network usage commands cmds.addCommands(usageCmds); return true; @@ -622,17 +459,14 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian if (_networkModel.isProviderSupportServiceInNetwork(guestNetworkId, Service.NetworkACL, Provider.VPCVirtualRouter)) { List<NetworkACLItemVO> networkACLs = _networkACLMgr.listNetworkACLItems(guestNetworkId); if (networkACLs != null && !networkACLs.isEmpty()) { - s_logger.debug("Found " + networkACLs.size() + " network ACLs to apply as a part of VPC VR " + router + " start for guest network id=" + - guestNetworkId); - createNetworkACLsCommands(networkACLs, router, cmds, guestNetworkId, false); + s_logger.debug("Found " + networkACLs.size() + " network ACLs to apply as a part of VPC VR " + router + " start for guest network id=" + guestNetworkId); + _commandSetupHelper.createNetworkACLsCommands(networkACLs, router, cmds, guestNetworkId, false); } } } } - - protected boolean sendNetworkRulesToRouter(final long routerId, final long networkId) - throws ResourceUnavailableException { + protected boolean sendNetworkRulesToRouter(final long routerId, final long networkId) throws ResourceUnavailableException { DomainRouterVO router = _routerDao.findById(routerId); Commands cmds = new Commands(OnError.Continue); @@ -667,9 +501,9 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian List<PrivateIpAddress> privateIps = new ArrayList<PrivateIpAddress>(1); privateIps.add(ip); Commands cmds = new Commands(Command.OnError.Stop); - createVpcAssociatePrivateIPCommands(router, privateIps, cmds, add); + _commandSetupHelper.createVpcAssociatePrivateIPCommands(router, privateIps, cmds, add); - try{ + try { if (_nwHelper.sendCommandsToRouter(router, cmds)) { s_logger.debug("Successfully applied ip association for ip " + ip + " in vpc network " + network); return true; @@ -677,8 +511,8 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian s_logger.warn("Failed to associate ip address " + ip + " in vpc network " + network); return false; } - }catch (Exception ex) { - s_logger.warn("Failed to send " + (add ?"add ":"delete ") + " private network " + network + " commands to rotuer "); + } catch (Exception ex) { + s_logger.warn("Failed to send " + (add ? "add " : "delete ") + " private network " + network + " commands to rotuer "); return false; } } else if (router.getState() == State.Stopped || router.getState() == State.Stopping) { @@ -709,7 +543,7 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian return false; } - //revoke network acl on the private gateway. + // revoke network acl on the private gateway. if (!_networkACLMgr.revokeACLItemsForPrivateGw(gateway)) { s_logger.debug("Failed to delete network acl items on " + gateway + " from router " + router); return false; @@ -722,7 +556,8 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian } @Override - protected void finalizeIpAssocForNetwork(final Commands cmds, final VirtualRouter router, final Provider provider, final Long guestNetworkId, final Map<String, String> vlanMacAddress) { + protected void finalizeIpAssocForNetwork(final Commands cmds, final VirtualRouter router, final Provider provider, final Long guestNetworkId, + final Map<String, String> vlanMacAddress) { if (router.getVpcId() == null) { super.finalizeIpAssocForNetwork(cmds, router, provider, guestNetworkId, vlanMacAddress); @@ -734,24 +569,10 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian if (publicIps != null && !publicIps.isEmpty()) { s_logger.debug("Found " + publicIps.size() + " ip(s) to apply as a part of domR " + router + " start."); // Re-apply public ip addresses - should come before PF/LB/VPN - createVpcAssociatePublicIPCommands(router, publicIps, cmds, vlanMacAddress); + _commandSetupHelper.createVpcAssociatePublicIPCommands(router, publicIps, cmds, vlanMacAddress); } } - /** - * @param staticRoutes - * @param router - * @param cmds - */ - private void createStaticRouteCommands(final List<StaticRouteProfile> staticRoutes, final DomainRouterVO router, final Commands cmds) { - SetStaticRouteCommand cmd = new SetStaticRouteCommand(staticRoutes); - cmd.setAccessDetail(NetworkElementCommand.ROUTER_IP, getRouterControlIp(router.getId())); - cmd.setAccessDetail(NetworkElementCommand.ROUTER_NAME, router.getInstanceName()); - DataCenterVO dcVo = _dcDao.findById(router.getDataCenterId()); - cmd.setAccessDetail(NetworkElementCommand.ZONE_NETWORK_TYPE, dcVo.getNetworkType().toString()); - cmds.addCommand(cmd); - } - @Override public boolean startSite2SiteVpn(final Site2SiteVpnConnection conn, final VirtualRouter router) throws ResourceUnavailableException { if (router.getState() != State.Running) { @@ -776,92 +597,22 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian protected boolean applySite2SiteVpn(final boolean isCreate, final VirtualRouter router, final Site2SiteVpnConnection conn) throws ResourceUnavailableException { Commands cmds = new Commands(Command.OnError.Continue); - createSite2SiteVpnCfgCommands(conn, isCreate, router, cmds); + _commandSetupHelper.createSite2SiteVpnCfgCommands(conn, isCreate, router, cmds); return _nwHelper.sendCommandsToRouter(router, cmds); } - private void createSite2SiteVpnCfgCommands(final Site2SiteVpnConnection conn, final boolean isCreate, final VirtualRouter router, final Commands cmds) { - Site2SiteCustomerGatewayVO gw = _s2sCustomerGatewayDao.findById(conn.getCustomerGatewayId()); - Site2SiteVpnGatewayVO vpnGw = _s2sVpnGatewayDao.findById(conn.getVpnGatewayId()); - IpAddress ip = _ipAddressDao.findById(vpnGw.getAddrId()); - Vpc vpc = _vpcDao.findById(ip.getVpcId()); - String localPublicIp = ip.getAddress().toString(); - String localGuestCidr = vpc.getCidr(); - String localPublicGateway = _vlanDao.findById(ip.getVlanId()).getVlanGateway(); - String peerGatewayIp = gw.getGatewayIp(); - String peerGuestCidrList = gw.getGuestCidrList(); - String ipsecPsk = gw.getIpsecPsk(); - String ikePolicy = gw.getIkePolicy(); - String espPolicy = gw.getEspPolicy(); - Long ikeLifetime = gw.getIkeLifetime(); - Long espLifetime = gw.getEspLifetime(); - Boolean dpd = gw.getDpd(); - - Site2SiteVpnCfgCommand cmd = - new Site2SiteVpnCfgCommand(isCreate, localPublicIp, localPublicGateway, localGuestCidr, peerGatewayIp, peerGuestCidrList, ikePolicy, espPolicy, ipsecPsk, - ikeLifetime, espLifetime, dpd, conn.isPassive()); - cmd.setAccessDetail(NetworkElementCommand.ROUTER_IP, getRouterControlIp(router.getId())); - cmd.setAccessDetail(NetworkElementCommand.ROUTER_IP, getRouterControlIp(router.getId())); - cmd.setAccessDetail(NetworkElementCommand.ROUTER_NAME, router.getInstanceName()); - DataCenterVO dcVo = _dcDao.findById(router.getDataCenterId()); - cmd.setAccessDetail(NetworkElementCommand.ZONE_NETWORK_TYPE, dcVo.getNetworkType().toString()); - cmds.addCommand("applyS2SVpn", cmd); - } - - private void createVpcAssociatePrivateIPCommands(final VirtualRouter router, final List<PrivateIpAddress> ips, final Commands cmds, final boolean add) { - - // Ensure that in multiple vlans case we first send all ip addresses of vlan1, then all ip addresses of vlan2, etc.. - Map<String, ArrayList<PrivateIpAddress>> vlanIpMap = new HashMap<String, ArrayList<PrivateIpAddress>>(); - for (final PrivateIpAddress ipAddress : ips) { - String vlanTag = ipAddress.getBroadcastUri(); - ArrayList<PrivateIpAddress> ipList = vlanIpMap.get(vlanTag); - if (ipList == null) { - ipList = new ArrayList<PrivateIpAddress>(); - } - - ipList.add(ipAddress); - vlanIpMap.put(vlanTag, ipList); - } - - for (Map.Entry<String, ArrayList<PrivateIpAddress>> vlanAndIp : vlanIpMap.entrySet()) { - List<PrivateIpAddress> ipAddrList = vlanAndIp.getValue(); - IpAddressTO[] ipsToSend = new IpAddressTO[ipAddrList.size()]; - int i = 0; - - for (final PrivateIpAddress ipAddr : ipAddrList) { - Network network = _networkModel.getNetwork(ipAddr.getNetworkId()); - IpAddressTO ip = - new IpAddressTO(Account.ACCOUNT_ID_SYSTEM, ipAddr.getIpAddress(), add, false, ipAddr.getSourceNat(), ipAddr.getBroadcastUri(), ipAddr.getGateway(), - ipAddr.getNetmask(), ipAddr.getMacAddress(), null, false); - - ip.setTrafficType(network.getTrafficType()); - ip.setNetworkName(_networkModel.getNetworkTag(router.getHypervisorType(), network)); - ipsToSend[i++] = ip; - - } - IpAssocVpcCommand cmd = new IpAssocVpcCommand(ipsToSend); - cmd.setAccessDetail(NetworkElementCommand.ROUTER_IP, getRouterControlIp(router.getId())); - cmd.setAccessDetail(NetworkElementCommand.ROUTER_GUEST_IP, getRouterIpInNetwork(ipAddrList.get(0).getNetworkId(), router.getId())); - cmd.setAccessDetail(NetworkElementCommand.ROUTER_NAME, router.getInstanceName()); - DataCenterVO dcVo = _dcDao.findById(router.getDataCenterId()); - cmd.setAccessDetail(NetworkElementCommand.ZONE_NETWORK_TYPE, dcVo.getNetworkType().toString()); - - cmds.addCommand("IPAssocVpcCommand", cmd); - } - } - - protected Pair<Map<String, PublicIpAddress>, Map<String, PublicIpAddress>> getNicsToChangeOnRouter(final List<? extends PublicIpAddress> publicIps, - final VirtualRouter router) { - //1) check which nics need to be plugged/unplugged and plug/unplug them + protected Pair<Map<String, PublicIpAddress>, Map<String, PublicIpAddress>> getNicsToChangeOnRouter(final List<? extends PublicIpAddress> publicIps, final VirtualRouter router) { + // 1) check which nics need to be plugged/unplugged and plug/unplug them Map<String, PublicIpAddress> nicsToPlug = new HashMap<String, PublicIpAddress>(); Map<String, PublicIpAddress> nicsToUnplug = new HashMap<String, PublicIpAddress>(); - //find out nics to unplug + // find out nics to unplug for (PublicIpAddress ip : publicIps) { long publicNtwkId = ip.getNetworkId(); - //if ip is not associated to any network, and there are no firewall rules, release it on the backend + // if ip is not associated to any network, and there are no firewall + // rules, release it on the backend if (!_vpcMgr.isIpAllocatedToVpc(ip)) { ip.setState(IpAddress.State.Releasing); } @@ -875,18 +626,20 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian } } - //find out nics to plug + // find out nics to plug for (PublicIpAddress ip : publicIps) { URI broadcastUri = BroadcastDomainType.Vlan.toUri(ip.getVlanTag()); long publicNtwkId = ip.getNetworkId(); - //if ip is not associated to any network, and there are no firewall rules, release it on the backend + // if ip is not associated to any network, and there are no firewall + // rules, release it on the backend if (!_vpcMgr.isIpAllocatedToVpc(ip)) { ip.setState(IpAddress.State.Releasing); } if (ip.getState() == IpAddress.State.Allocated || ip.getState() == IpAddress.State.Allocating) { - //nic has to be plugged only when there are no nics for this vlan tag exist on VR + // nic has to be plugged only when there are no nics for this + // vlan tag exist on VR Nic nic = _nicDao.findByNetworkIdInstanceIdAndBroadcastUri(publicNtwkId, router.getId(), broadcastUri.toString()); if (nic == null && nicsToPlug.get(ip.getVlanTag()) == null) { @@ -905,15 +658,15 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian } } - Pair<Map<String, PublicIpAddress>, Map<String, PublicIpAddress>> nicsToChange = - new Pair<Map<String, PublicIpAddress>, Map<String, PublicIpAddress>>(nicsToPlug, nicsToUnplug); + Pair<Map<String, PublicIpAddress>, Map<String, PublicIpAddress>> nicsToChange = new Pair<Map<String, PublicIpAddress>, Map<String, PublicIpAddress>>(nicsToPlug, + nicsToUnplug); return nicsToChange; } @Override public void finalizeStop(final VirtualMachineProfile profile, final Answer answer) { super.finalizeStop(profile, answer); - //Mark VPN connections as Disconnected + // Mark VPN connections as Disconnected DomainRouterVO router = _routerDao.findById(profile.getId()); Long vpcId = router.getVpcId(); if (vpcId != null) { @@ -937,45 +690,6 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian } @Override - public String[] applyVpnUsers(final RemoteAccessVpn vpn, final List<? extends VpnUser> users, final VirtualRouter router) throws ResourceUnavailableException { - Vpc vpc = _vpcDao.findById(vpn.getVpcId()); - - if (router.getState() != State.Running) { - s_logger.warn("Failed to add/remove Remote Access VPN users: router not in running state"); - throw new ResourceUnavailableException("Failed to add/remove Remote Access VPN users: router not in running state: " + router.getState(), DataCenter.class, - vpc.getZoneId()); - } - - Commands cmds = new Commands(Command.OnError.Continue); - - createApplyVpnUsersCommand(users, router, cmds); - - // Currently we receive just one answer from the agent. In the future we have to parse individual answers and set - // results accordingly - boolean agentResult = _nwHelper.sendCommandsToRouter(router, cmds); - - String[] result = new String[users.size()]; - for (int i = 0; i < result.length; i++) { - if (agentResult) { - result[i] = null; - } else { - result[i] = String.valueOf(agentResult); - } - } - - return result; - } - - @Override - protected String getVpnCidr(final RemoteAccessVpn vpn) { - if (vpn.getVpcId() == null) { - return super.getVpnCidr(vpn); - } - Vpc vpc = _vpcDao.findById(vpn.getVpcId()); - return vpc.getCidr(); - } - - @Override public boolean startRemoteAccessVpn(final RemoteAccessVpn vpn, final VirtualRouter router) throws ResourceUnavailableException { if (router.getState() != State.Running) { s_logger.warn("Unable to apply remote access VPN configuration, virtual router is not in the right state " + router.getState()); @@ -984,7 +698,7 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian } Commands cmds = new Commands(Command.OnError.Stop); - createApplyVpnCommands(true, vpn, router, cmds); + _commandSetupHelper.createApplyVpnCommands(true, vpn, router, cmds); try { _agentMgr.send(router.getHostId(), cmds); @@ -994,17 +708,17 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian } Answer answer = cmds.getAnswer("users"); if (!answer.getResult()) { - s_logger.error("Unable to start vpn: unable add users to vpn in zone " + router.getDataCenterId() + " for account " + vpn.getAccountId() + " on domR: " + - router.getInstanceName() + " due to " + answer.getDetails()); - throw new ResourceUnavailableException("Unable to start vpn: Unable to add users to vpn in zone " + router.getDataCenterId() + " for account " + - vpn.getAccountId() + " on domR: " + router.getInstanceName() + " due to " + answer.getDetails(), DataCenter.class, router.getDataCenterId()); + s_logger.error("Unable to start vpn: unable add users to vpn in zone " + router.getDataCenterId() + " for account " + vpn.getAccountId() + " on domR: " + + router.getInstanceName() + " due to " + answer.getDetails()); + throw new ResourceUnavailableException("Unable to start vpn: Unable to add users to vpn in zone " + router.getDataCenterId() + " for account " + vpn.getAccountId() + + " on domR: " + router.getInstanceName() + " due to " + answer.getDetails(), DataCenter.class, router.getDataCenterId()); } answer = cmds.getAnswer("startVpn"); if (!answer.getResult()) { - s_logger.error("Unable to start vpn in zone " + router.getDataCenterId() + " for account " + vpn.getAccountId() + " on domR: " + router.getInstanceName() + - " due to " + answer.getDetails()); - throw new ResourceUnavailableException("Unable to start vpn in zone " + router.getDataCenterId() + " for account " + vpn.getAccountId() + " on domR: " + - router.getInstanceName() + " due to " + answer.getDetails(), DataCenter.class, router.getDataCenterId()); + s_logger.error("Unable to start vpn in zone " + router.getDataCenterId() + " for account " + vpn.getAccountId() + " on domR: " + router.getInstanceName() + " due to " + + answer.getDetails()); + throw new ResourceUnavailableException("Unable to start vpn in zone " + router.getDataCenterId() + " for account " + vpn.getAccountId() + " on domR: " + + router.getInstanceName() + " due to " + answer.getDetails(), DataCenter.class, router.getDataCenterId()); } return true; @@ -1016,7 +730,7 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian if (router.getState() == State.Running) { Commands cmds = new Commands(Command.OnError.Continue); - createApplyVpnCommands(false, vpn, router, cmds); + _commandSetupHelper.createApplyVpnCommands(false, vpn, router, cmds); result = result && _nwHelper.sendCommandsToRouter(router, cmds); } else if (router.getState() == State.Stopped) { s_logger.debug("Router " + router + " is in Stopped state, not sending deleteRemoteAccessVpn command to it"); @@ -1025,7 +739,6 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian throw new ResourceUnavailableException("Failed to delete remote access VPN: domR is not in right state " + router.getState(), DataCenter.class, router.getDataCenterId()); } - return true; } }
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/bc90ce08/server/src/com/cloud/network/rules/DhcpEntryRules.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/rules/DhcpEntryRules.java b/server/src/com/cloud/network/rules/DhcpEntryRules.java index 2bfa4e6..b7a7bd3 100644 --- a/server/src/com/cloud/network/rules/DhcpEntryRules.java +++ b/server/src/com/cloud/network/rules/DhcpEntryRules.java @@ -19,20 +19,10 @@ package com.cloud.network.rules; import org.apache.cloudstack.network.topology.NetworkTopologyVisitor; -import com.cloud.agent.api.routing.DhcpEntryCommand; -import com.cloud.agent.api.routing.NetworkElementCommand; -import com.cloud.agent.manager.Commands; -import com.cloud.dc.DataCenterVO; import com.cloud.deploy.DeployDestination; import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.Network; -import com.cloud.network.Network.Provider; -import com.cloud.network.Network.Service; import com.cloud.network.router.VirtualRouter; -import com.cloud.offering.NetworkOffering; -import com.cloud.uservm.UserVm; -import com.cloud.utils.net.NetUtils; -import com.cloud.vm.Nic; import com.cloud.vm.NicProfile; import com.cloud.vm.NicVO; import com.cloud.vm.UserVmVO; @@ -77,58 +67,4 @@ public class DhcpEntryRules extends RuleApplier { public UserVmVO getUserVM() { return _userVM; } - - public DeployDestination getDestination() { - return _destination; - } - - public void createDhcpEntryCommand(final VirtualRouter router, final UserVm vm, final NicVO nic, final Commands cmds) { - final DhcpEntryCommand dhcpCommand = new DhcpEntryCommand(nic.getMacAddress(), nic.getIp4Address(), vm.getHostName(), nic.getIp6Address(), - _networkModel.getExecuteInSeqNtwkElmtCmd()); - final DataCenterVO dcVo = _dcDao.findById(router.getDataCenterId()); - final Nic defaultNic = findGatewayIp(vm.getId()); - String gatewayIp = defaultNic.getGateway(); - if (gatewayIp != null && !gatewayIp.equals(nic.getGateway())) { - gatewayIp = "0.0.0.0"; - } - dhcpCommand.setDefaultRouter(gatewayIp); - dhcpCommand.setIp6Gateway(nic.getIp6Gateway()); - String ipaddress = null; - final NicVO domrDefaultNic = findDefaultDnsIp(vm.getId()); - if (domrDefaultNic != null) { - ipaddress = domrDefaultNic.getIp4Address(); - } - dhcpCommand.setDefaultDns(ipaddress); - dhcpCommand.setDuid(NetUtils.getDuidLL(nic.getMacAddress())); - dhcpCommand.setDefault(nic.isDefaultNic()); - - dhcpCommand.setAccessDetail(NetworkElementCommand.ROUTER_IP, _routerControlHelper.getRouterControlIp(router.getId())); - dhcpCommand.setAccessDetail(NetworkElementCommand.ROUTER_NAME, router.getInstanceName()); - dhcpCommand.setAccessDetail(NetworkElementCommand.ROUTER_GUEST_IP, _routerControlHelper.getRouterIpInNetwork(nic.getNetworkId(), router.getId())); - dhcpCommand.setAccessDetail(NetworkElementCommand.ZONE_NETWORK_TYPE, dcVo.getNetworkType().toString()); - - cmds.addCommand("dhcp", dhcpCommand); - } - - private NicVO findGatewayIp(final long userVmId) { - final NicVO defaultNic = _nicDao.findDefaultNicForVM(userVmId); - return defaultNic; - } - - private NicVO findDefaultDnsIp(final long userVmId) { - final NicVO defaultNic = _nicDao.findDefaultNicForVM(userVmId); - - // check if DNS provider is the domR - if (!_networkModel.isProviderSupportServiceInNetwork(defaultNic.getNetworkId(), Service.Dns, Provider.VirtualRouter)) { - return null; - } - - final NetworkOffering offering = _networkOfferingDao.findById(_networkDao.findById(defaultNic.getNetworkId()).getNetworkOfferingId()); - if (offering.getRedundantRouter()) { - return findGatewayIp(userVmId); - } - - return null; - } - } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/cloudstack/blob/bc90ce08/server/src/com/cloud/network/rules/DhcpSubNetRules.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/rules/DhcpSubNetRules.java b/server/src/com/cloud/network/rules/DhcpSubNetRules.java index e10a92a..37b3857 100644 --- a/server/src/com/cloud/network/rules/DhcpSubNetRules.java +++ b/server/src/com/cloud/network/rules/DhcpSubNetRules.java @@ -24,15 +24,8 @@ import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.network.topology.NetworkTopologyVisitor; import org.apache.log4j.Logger; -import com.cloud.agent.api.routing.CreateIpAliasCommand; -import com.cloud.agent.api.routing.DnsMasqConfigCommand; -import com.cloud.agent.api.routing.IpAliasTO; -import com.cloud.agent.api.routing.NetworkElementCommand; -import com.cloud.agent.api.to.DhcpTO; -import com.cloud.agent.manager.Commands; import com.cloud.dc.DataCenter; import com.cloud.dc.DataCenter.NetworkType; -import com.cloud.dc.DataCenterVO; import com.cloud.dc.Vlan; import com.cloud.dc.VlanVO; import com.cloud.exception.InsufficientAddressCapacityException; @@ -165,48 +158,4 @@ public class DhcpSubNetRules extends RuleApplier { public String getRouterAliasIp() { return _routerAliasIp; } - - public void createIpAlias(final VirtualRouter router, final List<IpAliasTO> ipAliasTOs, final Long networkid, final Commands cmds) { - - final String routerip = _routerControlHelper.getRouterIpInNetwork(networkid, router.getId()); - final DataCenterVO dcVo = _dcDao.findById(router.getDataCenterId()); - final CreateIpAliasCommand ipaliasCmd = new CreateIpAliasCommand(routerip, ipAliasTOs); - ipaliasCmd.setAccessDetail(NetworkElementCommand.ROUTER_IP, _routerControlHelper.getRouterControlIp(router.getId())); - ipaliasCmd.setAccessDetail(NetworkElementCommand.ROUTER_NAME, router.getInstanceName()); - ipaliasCmd.setAccessDetail(NetworkElementCommand.ROUTER_GUEST_IP, routerip); - ipaliasCmd.setAccessDetail(NetworkElementCommand.ZONE_NETWORK_TYPE, dcVo.getNetworkType().toString()); - - cmds.addCommand("ipalias", ipaliasCmd); - } - - public void configDnsMasq(final VirtualRouter router, final Network network, final Commands cmds) { - final DataCenterVO dcVo = _dcDao.findById(router.getDataCenterId()); - final List<NicIpAliasVO> ipAliasVOList = _nicIpAliasDao.listByNetworkIdAndState(network.getId(), NicIpAlias.state.active); - final List<DhcpTO> ipList = new ArrayList<DhcpTO>(); - - final NicVO router_guest_nic = _nicDao.findByNtwkIdAndInstanceId(network.getId(), router.getId()); - final String cidr = NetUtils.getCidrFromGatewayAndNetmask(router_guest_nic.getGateway(), router_guest_nic.getNetmask()); - final String[] cidrPair = cidr.split("\\/"); - final String cidrAddress = cidrPair[0]; - final long cidrSize = Long.parseLong(cidrPair[1]); - final String startIpOfSubnet = NetUtils.getIpRangeStartIpFromCidr(cidrAddress, cidrSize); - - ipList.add(new DhcpTO(router_guest_nic.getIp4Address(), router_guest_nic.getGateway(), router_guest_nic.getNetmask(), startIpOfSubnet)); - for (final NicIpAliasVO ipAliasVO : ipAliasVOList) { - final DhcpTO DhcpTO = new DhcpTO(ipAliasVO.getIp4Address(), ipAliasVO.getGateway(), ipAliasVO.getNetmask(), ipAliasVO.getStartIpOfSubnet()); - if (s_logger.isTraceEnabled()) { - s_logger.trace("configDnsMasq : adding ip {" + DhcpTO.getGateway() + ", " + DhcpTO.getNetmask() + ", " + DhcpTO.getRouterIp() + ", " + - DhcpTO.getStartIpOfSubnet() + "}"); - } - ipList.add(DhcpTO); - ipAliasVO.setVmId(router.getId()); - } - _dcDao.findById(router.getDataCenterId()); - final DnsMasqConfigCommand dnsMasqConfigCmd = new DnsMasqConfigCommand(ipList); - dnsMasqConfigCmd.setAccessDetail(NetworkElementCommand.ROUTER_IP, _routerControlHelper.getRouterControlIp(router.getId())); - dnsMasqConfigCmd.setAccessDetail(NetworkElementCommand.ROUTER_NAME, router.getInstanceName()); - dnsMasqConfigCmd.setAccessDetail(NetworkElementCommand.ROUTER_GUEST_IP, _routerControlHelper.getRouterIpInNetwork(network.getId(), router.getId())); - dnsMasqConfigCmd.setAccessDetail(NetworkElementCommand.ZONE_NETWORK_TYPE, dcVo.getNetworkType().toString()); - cmds.addCommand("dnsMasqConfig", dnsMasqConfigCmd); - } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/cloudstack/blob/bc90ce08/server/src/com/cloud/network/rules/FirewallRules.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/rules/FirewallRules.java b/server/src/com/cloud/network/rules/FirewallRules.java index 33e3c98..668f403 100644 --- a/server/src/com/cloud/network/rules/FirewallRules.java +++ b/server/src/com/cloud/network/rules/FirewallRules.java @@ -22,24 +22,9 @@ import java.util.List; import org.apache.cloudstack.network.topology.NetworkTopologyVisitor; -import com.cloud.agent.api.routing.LoadBalancerConfigCommand; -import com.cloud.agent.api.routing.NetworkElementCommand; -import com.cloud.agent.api.routing.SetFirewallRulesCommand; -import com.cloud.agent.api.routing.SetPortForwardingRulesCommand; -import com.cloud.agent.api.routing.SetPortForwardingRulesVpcCommand; -import com.cloud.agent.api.routing.SetStaticNatRulesCommand; -import com.cloud.agent.api.to.FirewallRuleTO; -import com.cloud.agent.api.to.LoadBalancerTO; -import com.cloud.agent.api.to.PortForwardingRuleTO; -import com.cloud.agent.api.to.StaticNatRuleTO; -import com.cloud.agent.manager.Commands; -import com.cloud.configuration.Config; -import com.cloud.dc.DataCenterVO; import com.cloud.exception.ResourceUnavailableException; -import com.cloud.network.IpAddress; import com.cloud.network.Network; import com.cloud.network.dao.LoadBalancerVO; -import com.cloud.network.dao.NetworkVO; import com.cloud.network.lb.LoadBalancingRule; import com.cloud.network.lb.LoadBalancingRule.LbDestination; import com.cloud.network.lb.LoadBalancingRule.LbHealthCheckPolicy; @@ -48,12 +33,7 @@ import com.cloud.network.lb.LoadBalancingRule.LbStickinessPolicy; import com.cloud.network.router.VirtualRouter; import com.cloud.network.rules.FirewallRule.Purpose; import com.cloud.network.rules.LoadBalancerContainer.Scheme; -import com.cloud.offering.NetworkOffering; -import com.cloud.offerings.NetworkOfferingVO; import com.cloud.utils.net.Ip; -import com.cloud.vm.DomainRouterVO; -import com.cloud.vm.Nic; -import com.cloud.vm.NicProfile; public class FirewallRules extends RuleApplier { @@ -103,150 +83,4 @@ public class FirewallRules extends RuleApplier { public Purpose getPurpose() { return _purpose; } - - public void createApplyLoadBalancingRulesCommands(final List<LoadBalancingRule> rules, final VirtualRouter router, final Commands cmds, final long guestNetworkId) { - - final LoadBalancerTO[] lbs = new LoadBalancerTO[rules.size()]; - int i = 0; - // 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 String protocol = rule.getProtocol(); - final String algorithm = rule.getAlgorithm(); - final String uuid = rule.getUuid(); - - final String srcIp = rule.getSourceIp().addr(); - final int srcPort = rule.getSourcePortStart(); - final List<LbDestination> destinations = rule.getDestinations(); - final List<LbStickinessPolicy> stickinessPolicies = rule.getStickinessPolicies(); - final LoadBalancerTO lb = new LoadBalancerTO(uuid, srcIp, srcPort, protocol, algorithm, revoked, false, inline, destinations, stickinessPolicies); - lbs[i++] = lb; - } - String routerPublicIp = null; - - if (router instanceof DomainRouterVO) { - final DomainRouterVO domr = _routerDao.findById(router.getId()); - routerPublicIp = domr.getPublicIpAddress(); - } - - final Network guestNetwork = _networkModel.getNetwork(guestNetworkId); - final Nic nic = _nicDao.findByNtwkIdAndInstanceId(guestNetwork.getId(), router.getId()); - final NicProfile nicProfile = - new NicProfile(nic, guestNetwork, nic.getBroadcastUri(), nic.getIsolationUri(), _networkModel.getNetworkRate(guestNetwork.getId(), router.getId()), - _networkModel.isSecurityGroupSupportedInNetwork(guestNetwork), _networkModel.getNetworkTag(router.getHypervisorType(), guestNetwork)); - final NetworkOffering offering = _networkOfferingDao.findById(guestNetwork.getNetworkOfferingId()); - String maxconn = null; - if (offering.getConcurrentConnections() == null) { - maxconn = _configDao.getValue(Config.NetworkLBHaproxyMaxConn.key()); - } else { - maxconn = offering.getConcurrentConnections().toString(); - } - - final LoadBalancerConfigCommand cmd = - new LoadBalancerConfigCommand(lbs, routerPublicIp, _routerControlHelper.getRouterIpInNetwork(guestNetworkId, router.getId()), router.getPrivateIpAddress(), _itMgr.toNicTO( - nicProfile, router.getHypervisorType()), router.getVpcId(), maxconn, offering.isKeepAliveEnabled()); - - cmd.lbStatsVisibility = _configDao.getValue(Config.NetworkLBHaproxyStatsVisbility.key()); - cmd.lbStatsUri = _configDao.getValue(Config.NetworkLBHaproxyStatsUri.key()); - cmd.lbStatsAuth = _configDao.getValue(Config.NetworkLBHaproxyStatsAuth.key()); - cmd.lbStatsPort = _configDao.getValue(Config.NetworkLBHaproxyStatsPort.key()); - - cmd.setAccessDetail(NetworkElementCommand.ROUTER_IP, _routerControlHelper.getRouterControlIp(router.getId())); - cmd.setAccessDetail(NetworkElementCommand.ROUTER_GUEST_IP, _routerControlHelper.getRouterIpInNetwork(guestNetworkId, 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()); - cmds.addCommand(cmd); - - } - - public void createApplyPortForwardingRulesCommands(final List<? extends PortForwardingRule> rules, final VirtualRouter router, final Commands cmds, final long guestNetworkId) { - List<PortForwardingRuleTO> rulesTO = new ArrayList<PortForwardingRuleTO>(); - if (rules != null) { - for (final PortForwardingRule rule : rules) { - final IpAddress sourceIp = _networkModel.getIp(rule.getSourceIpAddressId()); - final PortForwardingRuleTO ruleTO = new PortForwardingRuleTO(rule, null, sourceIp.getAddress().addr()); - rulesTO.add(ruleTO); - } - } - - SetPortForwardingRulesCommand cmd = null; - - if (router.getVpcId() != null) { - cmd = new SetPortForwardingRulesVpcCommand(rulesTO); - } else { - cmd = new SetPortForwardingRulesCommand(rulesTO); - } - - cmd.setAccessDetail(NetworkElementCommand.ROUTER_IP, _routerControlHelper.getRouterControlIp(router.getId())); - cmd.setAccessDetail(NetworkElementCommand.ROUTER_GUEST_IP, _routerControlHelper.getRouterIpInNetwork(guestNetworkId, 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()); - - cmds.addCommand(cmd); - } - - public void createApplyStaticNatRulesCommands(final List<? extends StaticNatRule> rules, final VirtualRouter router, final Commands cmds, final long guestNetworkId) { - List<StaticNatRuleTO> rulesTO = new ArrayList<StaticNatRuleTO>(); - if (rules != null) { - for (final StaticNatRule rule : rules) { - final IpAddress sourceIp = _networkModel.getIp(rule.getSourceIpAddressId()); - final StaticNatRuleTO ruleTO = new StaticNatRuleTO(rule, null, sourceIp.getAddress().addr(), rule.getDestIpAddress()); - rulesTO.add(ruleTO); - } - } - - final SetStaticNatRulesCommand cmd = new SetStaticNatRulesCommand(rulesTO, router.getVpcId()); - cmd.setAccessDetail(NetworkElementCommand.ROUTER_IP, _routerControlHelper.getRouterControlIp(router.getId())); - cmd.setAccessDetail(NetworkElementCommand.ROUTER_GUEST_IP, _routerControlHelper.getRouterIpInNetwork(guestNetworkId, 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()); - cmds.addCommand(cmd); - } - - public void createApplyFirewallRulesCommands(final List<? extends FirewallRule> rules, final VirtualRouter router, final Commands cmds, final long guestNetworkId) { - List<FirewallRuleTO> rulesTO = new ArrayList<FirewallRuleTO>(); - String systemRule = null; - 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) { - systemRule = String.valueOf(FirewallRule.FirewallRuleType.System); - } - } - for (final FirewallRule rule : rules) { - _rulesDao.loadSourceCidrs((FirewallRuleVO)rule); - final FirewallRule.TrafficType traffictype = rule.getTrafficType(); - if (traffictype == FirewallRule.TrafficType.Ingress) { - final IpAddress sourceIp = _networkModel.getIp(rule.getSourceIpAddressId()); - final FirewallRuleTO ruleTO = new FirewallRuleTO(rule, null, sourceIp.getAddress().addr(), Purpose.Firewall, traffictype); - rulesTO.add(ruleTO); - } else if (rule.getTrafficType() == FirewallRule.TrafficType.Egress) { - 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. "; - final FirewallRuleTO ruleTO = new FirewallRuleTO(rule, null, "", Purpose.Firewall, traffictype, defaultEgressPolicy); - rulesTO.add(ruleTO); - } - } - } - - final SetFirewallRulesCommand cmd = new SetFirewallRulesCommand(rulesTO); - cmd.setAccessDetail(NetworkElementCommand.ROUTER_IP, _routerControlHelper.getRouterControlIp(router.getId())); - cmd.setAccessDetail(NetworkElementCommand.ROUTER_GUEST_IP, _routerControlHelper.getRouterIpInNetwork(guestNetworkId, 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()); - if (systemRule != null) { - cmd.setAccessDetail(NetworkElementCommand.FIREWALL_EGRESS_DEFAULT, systemRule); - } else { - cmd.setAccessDetail(NetworkElementCommand.FIREWALL_EGRESS_DEFAULT, String.valueOf(defaultEgressPolicy)); - } - - cmds.addCommand(cmd); - } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/cloudstack/blob/bc90ce08/server/src/com/cloud/network/rules/IpAssociationRules.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/rules/IpAssociationRules.java b/server/src/com/cloud/network/rules/IpAssociationRules.java index 60becd2..90209c7 100644 --- a/server/src/com/cloud/network/rules/IpAssociationRules.java +++ b/server/src/com/cloud/network/rules/IpAssociationRules.java @@ -17,29 +17,14 @@ package com.cloud.network.rules; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.HashMap; import java.util.List; -import java.util.Map; import org.apache.cloudstack.network.topology.NetworkTopologyVisitor; -import com.cloud.agent.api.routing.IpAssocCommand; -import com.cloud.agent.api.routing.NetworkElementCommand; -import com.cloud.agent.api.to.IpAddressTO; -import com.cloud.agent.manager.Commands; -import com.cloud.dc.DataCenterVO; import com.cloud.exception.ResourceUnavailableException; -import com.cloud.network.IpAddress; import com.cloud.network.Network; -import com.cloud.network.Networks.TrafficType; import com.cloud.network.PublicIpAddress; -import com.cloud.network.dao.NetworkVO; import com.cloud.network.router.VirtualRouter; -import com.cloud.utils.net.NetUtils; -import com.cloud.vm.NicVO; public class IpAssociationRules extends RuleApplier { @@ -60,95 +45,4 @@ public class IpAssociationRules extends RuleApplier { public List<? extends PublicIpAddress> getIpAddresses() { return _ipAddresses; } - - public void createAssociateIPCommands(final VirtualRouter router, final List<? extends PublicIpAddress> ips, final Commands cmds, final long vmId) { - - // Ensure that in multiple vlans case we first send all ip addresses of vlan1, then all ip addresses of vlan2, etc.. - final Map<String, ArrayList<PublicIpAddress>> vlanIpMap = new HashMap<String, ArrayList<PublicIpAddress>>(); - for (final PublicIpAddress ipAddress : ips) { - final String vlanTag = ipAddress.getVlanTag(); - ArrayList<PublicIpAddress> ipList = vlanIpMap.get(vlanTag); - if (ipList == null) { - ipList = new ArrayList<PublicIpAddress>(); - } - //domR doesn't support release for sourceNat IP address; so reset the state - if (ipAddress.isSourceNat() && ipAddress.getState() == IpAddress.State.Releasing) { - ipAddress.setState(IpAddress.State.Allocated); - } - ipList.add(ipAddress); - vlanIpMap.put(vlanTag, ipList); - } - - final List<NicVO> nics = _nicDao.listByVmId(router.getId()); - String baseMac = null; - for (final NicVO nic : nics) { - final NetworkVO nw = _networkDao.findById(nic.getNetworkId()); - if (nw.getTrafficType() == TrafficType.Public) { - baseMac = nic.getMacAddress(); - break; - } - } - - for (final Map.Entry<String, ArrayList<PublicIpAddress>> vlanAndIp : vlanIpMap.entrySet()) { - final List<PublicIpAddress> ipAddrList = vlanAndIp.getValue(); - // Source nat ip address should always be sent first - Collections.sort(ipAddrList, new Comparator<PublicIpAddress>() { - @Override - 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; - } - }); - - // Get network rate - required for IpAssoc - final Integer networkRate = _networkModel.getNetworkRate(ipAddrList.get(0).getNetworkId(), router.getId()); - final Network network = _networkModel.getNetwork(ipAddrList.get(0).getNetworkId()); - - final IpAddressTO[] ipsToSend = new IpAddressTO[ipAddrList.size()]; - int i = 0; - boolean firstIP = true; - - for (final PublicIpAddress ipAddr : ipAddrList) { - - 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) { - sourceNat = true; - } - final String vlanId = ipAddr.getVlanTag(); - final String vlanGateway = ipAddr.getGateway(); - final String vlanNetmask = ipAddr.getNetmask(); - String vifMacAddress = null; - // For non-source nat IP, set the mac to be something based on 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) { - vifMacAddress = NetUtils.generateMacOnIncrease(baseMac, ipAddr.getVlanId()); - } else { - vifMacAddress = ipAddr.getMacAddress(); - } - - final IpAddressTO ip = - new IpAddressTO(ipAddr.getAccountId(), ipAddr.getAddress().addr(), add, firstIP, sourceNat, vlanId, vlanGateway, vlanNetmask, vifMacAddress, - networkRate, ipAddr.isOneToOneNat()); - - ip.setTrafficType(network.getTrafficType()); - ip.setNetworkName(_networkModel.getNetworkTag(router.getHypervisorType(), network)); - ipsToSend[i++] = ip; - /* send the firstIP = true for the first Add, this is to create primary on interface*/ - if (!firstIP || add) { - firstIP = false; - } - } - final IpAssocCommand cmd = new IpAssocCommand(ipsToSend); - cmd.setAccessDetail(NetworkElementCommand.ROUTER_IP, _routerControlHelper.getRouterControlIp(router.getId())); - cmd.setAccessDetail(NetworkElementCommand.ROUTER_GUEST_IP, _routerControlHelper.getRouterIpInNetwork(ipAddrList.get(0).getAssociatedWithNetworkId(), 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()); - - cmds.addCommand("IPAssocCommand", cmd); - } - } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/cloudstack/blob/bc90ce08/server/src/com/cloud/network/rules/LoadBalancingRules.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/rules/LoadBalancingRules.java b/server/src/com/cloud/network/rules/LoadBalancingRules.java index ff760ab..d6e762f 100644 --- a/server/src/com/cloud/network/rules/LoadBalancingRules.java +++ b/server/src/com/cloud/network/rules/LoadBalancingRules.java @@ -21,12 +21,6 @@ import java.util.List; import org.apache.cloudstack.network.topology.NetworkTopologyVisitor; -import com.cloud.agent.api.routing.LoadBalancerConfigCommand; -import com.cloud.agent.api.routing.NetworkElementCommand; -import com.cloud.agent.api.to.LoadBalancerTO; -import com.cloud.agent.manager.Commands; -import com.cloud.configuration.Config; -import com.cloud.dc.DataCenterVO; import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.Network; import com.cloud.network.dao.LoadBalancerVO; @@ -37,11 +31,7 @@ import com.cloud.network.lb.LoadBalancingRule.LbSslCert; import com.cloud.network.lb.LoadBalancingRule.LbStickinessPolicy; import com.cloud.network.router.VirtualRouter; import com.cloud.network.rules.LoadBalancerContainer.Scheme; -import com.cloud.offering.NetworkOffering; import com.cloud.utils.net.Ip; -import com.cloud.vm.DomainRouterVO; -import com.cloud.vm.Nic; -import com.cloud.vm.NicProfile; public class LoadBalancingRules extends RuleApplier { @@ -79,57 +69,4 @@ public class LoadBalancingRules extends RuleApplier { public List<LoadBalancingRule> getRules() { return _rules; } - - public void createApplyLoadBalancingRulesCommands(final List<LoadBalancingRule> rules, final VirtualRouter router, final Commands cmds, final long guestNetworkId) { - final LoadBalancerTO[] lbs = new LoadBalancerTO[rules.size()]; - int i = 0; - // 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 String protocol = rule.getProtocol(); - final String algorithm = rule.getAlgorithm(); - final String uuid = rule.getUuid(); - - final String srcIp = rule.getSourceIp().addr(); - final int srcPort = rule.getSourcePortStart(); - final List<LbDestination> destinations = rule.getDestinations(); - final List<LbStickinessPolicy> stickinessPolicies = rule.getStickinessPolicies(); - final LoadBalancerTO lb = new LoadBalancerTO(uuid, srcIp, srcPort, protocol, algorithm, revoked, false, inline, destinations, stickinessPolicies); - lbs[i++] = lb; - } - String routerPublicIp = null; - - if (router instanceof DomainRouterVO) { - final DomainRouterVO domr = _routerDao.findById(router.getId()); - routerPublicIp = domr.getPublicIpAddress(); - } - - final Network guestNetwork = _networkModel.getNetwork(guestNetworkId); - final Nic nic = _nicDao.findByNtwkIdAndInstanceId(guestNetwork.getId(), router.getId()); - final NicProfile nicProfile = new NicProfile(nic, guestNetwork, nic.getBroadcastUri(), nic.getIsolationUri(), _networkModel.getNetworkRate(guestNetwork.getId(), - router.getId()), _networkModel.isSecurityGroupSupportedInNetwork(guestNetwork), _networkModel.getNetworkTag(router.getHypervisorType(), guestNetwork)); - final NetworkOffering offering = _networkOfferingDao.findById(guestNetwork.getNetworkOfferingId()); - String maxconn = null; - if (offering.getConcurrentConnections() == null) { - maxconn = _configDao.getValue(Config.NetworkLBHaproxyMaxConn.key()); - } else { - maxconn = offering.getConcurrentConnections().toString(); - } - - final LoadBalancerConfigCommand cmd = new LoadBalancerConfigCommand(lbs, routerPublicIp, _routerControlHelper.getRouterIpInNetwork(guestNetworkId, router.getId()), - router.getPrivateIpAddress(), _itMgr.toNicTO(nicProfile, router.getHypervisorType()), router.getVpcId(), maxconn, offering.isKeepAliveEnabled()); - - cmd.lbStatsVisibility = _configDao.getValue(Config.NetworkLBHaproxyStatsVisbility.key()); - cmd.lbStatsUri = _configDao.getValue(Config.NetworkLBHaproxyStatsUri.key()); - cmd.lbStatsAuth = _configDao.getValue(Config.NetworkLBHaproxyStatsAuth.key()); - cmd.lbStatsPort = _configDao.getValue(Config.NetworkLBHaproxyStatsPort.key()); - - cmd.setAccessDetail(NetworkElementCommand.ROUTER_IP, _routerControlHelper.getRouterControlIp(router.getId())); - cmd.setAccessDetail(NetworkElementCommand.ROUTER_GUEST_IP, _routerControlHelper.getRouterIpInNetwork(guestNetworkId, 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()); - cmds.addCommand(cmd); - } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/cloudstack/blob/bc90ce08/server/src/com/cloud/network/rules/NetworkAclsRules.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/rules/NetworkAclsRules.java b/server/src/com/cloud/network/rules/NetworkAclsRules.java index 4c0c71a..20acb9d 100644 --- a/server/src/com/cloud/network/rules/NetworkAclsRules.java +++ b/server/src/com/cloud/network/rules/NetworkAclsRules.java @@ -17,23 +17,14 @@ package com.cloud.network.rules; -import java.net.URI; -import java.util.ArrayList; import java.util.List; import org.apache.cloudstack.network.topology.NetworkTopologyVisitor; -import com.cloud.agent.api.routing.NetworkElementCommand; -import com.cloud.agent.api.routing.SetNetworkACLCommand; -import com.cloud.agent.api.to.NetworkACLTO; -import com.cloud.agent.manager.Commands; -import com.cloud.dc.DataCenterVO; import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.Network; -import com.cloud.network.Networks.BroadcastDomainType; import com.cloud.network.router.VirtualRouter; import com.cloud.network.vpc.NetworkACLItem; -import com.cloud.network.vpc.VpcGateway; public class NetworkAclsRules extends RuleApplier { @@ -60,34 +51,4 @@ public class NetworkAclsRules extends RuleApplier { public boolean isPrivateGateway() { return _isPrivateGateway; } - - public void createNetworkACLsCommands(final List<? extends NetworkACLItem> rules, final VirtualRouter router, final Commands cmds, final long guestNetworkId, final boolean privateGateway) { - List<NetworkACLTO> rulesTO = new ArrayList<NetworkACLTO>(); - String guestVlan = null; - Network guestNtwk = _networkDao.findById(guestNetworkId); - URI uri = guestNtwk.getBroadcastUri(); - if (uri != null) { - guestVlan = BroadcastDomainType.getValue(uri); - } - - if (rules != null) { - for (NetworkACLItem rule : rules) { - NetworkACLTO ruleTO = new NetworkACLTO(rule, guestVlan, rule.getTrafficType()); - rulesTO.add(ruleTO); - } - } - - SetNetworkACLCommand cmd = new SetNetworkACLCommand(rulesTO, _networkHelper.getNicTO(router, guestNetworkId, null)); - cmd.setAccessDetail(NetworkElementCommand.ROUTER_IP, _routerControlHelper.getRouterControlIp(router.getId())); - cmd.setAccessDetail(NetworkElementCommand.ROUTER_GUEST_IP, _routerControlHelper.getRouterIpInNetwork(guestNetworkId, router.getId())); - cmd.setAccessDetail(NetworkElementCommand.GUEST_VLAN_TAG, guestVlan); - cmd.setAccessDetail(NetworkElementCommand.ROUTER_NAME, router.getInstanceName()); - DataCenterVO dcVo = _dcDao.findById(router.getDataCenterId()); - cmd.setAccessDetail(NetworkElementCommand.ZONE_NETWORK_TYPE, dcVo.getNetworkType().toString()); - if (privateGateway) { - cmd.setAccessDetail(NetworkElementCommand.VPC_PRIVATE_GATEWAY, String.valueOf(VpcGateway.Type.Private)); - } - - cmds.addCommand(cmd); - } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/cloudstack/blob/bc90ce08/server/src/com/cloud/network/rules/PasswordToRouterRules.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/rules/PasswordToRouterRules.java b/server/src/com/cloud/network/rules/PasswordToRouterRules.java index e6a27b7..8395c10 100644 --- a/server/src/com/cloud/network/rules/PasswordToRouterRules.java +++ b/server/src/com/cloud/network/rules/PasswordToRouterRules.java @@ -19,14 +19,9 @@ package com.cloud.network.rules; import org.apache.cloudstack.network.topology.NetworkTopologyVisitor; -import com.cloud.agent.api.routing.NetworkElementCommand; -import com.cloud.agent.api.routing.SavePasswordCommand; -import com.cloud.agent.manager.Commands; -import com.cloud.dc.DataCenterVO; import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.Network; import com.cloud.network.router.VirtualRouter; -import com.cloud.utils.PasswordGenerator; import com.cloud.vm.NicProfile; import com.cloud.vm.NicVO; import com.cloud.vm.UserVmVO; @@ -48,7 +43,7 @@ public class PasswordToRouterRules extends RuleApplier { @Override public boolean accept(final NetworkTopologyVisitor visitor, final VirtualRouter router) throws ResourceUnavailableException { - this._router = router; + _router = router; _userVmDao.loadDetails((UserVmVO)profile.getVirtualMachine()); // for basic zone, send vm data/password information only to the router in the same pod @@ -57,25 +52,6 @@ public class PasswordToRouterRules extends RuleApplier { return visitor.visit(this); } - public void createPasswordCommand(final VirtualRouter router, final VirtualMachineProfile profile, final NicVO nic, final Commands cmds) { - final String password = (String)profile.getParameter(VirtualMachineProfile.Param.VmPassword); - final DataCenterVO dcVo = _dcDao.findById(router.getDataCenterId()); - - // password should be set only on default network element - if (password != null && nic.isDefaultNic()) { - final String encodedPassword = PasswordGenerator.rot13(password); - final SavePasswordCommand cmd = - new SavePasswordCommand(encodedPassword, nic.getIp4Address(), profile.getVirtualMachine().getHostName(), _networkModel.getExecuteInSeqNtwkElmtCmd()); - cmd.setAccessDetail(NetworkElementCommand.ROUTER_IP, _routerControlHelper.getRouterControlIp(router.getId())); - cmd.setAccessDetail(NetworkElementCommand.ROUTER_GUEST_IP, _routerControlHelper.getRouterIpInNetwork(nic.getNetworkId(), router.getId())); - cmd.setAccessDetail(NetworkElementCommand.ROUTER_NAME, router.getInstanceName()); - cmd.setAccessDetail(NetworkElementCommand.ZONE_NETWORK_TYPE, dcVo.getNetworkType().toString()); - - cmds.addCommand("password", cmd); - } - - } - public VirtualMachineProfile getProfile() { return profile; }