fixing nic plug unplug rule Conflicts: server/src/org/apache/cloudstack/network/topology/BasicNetworkVisitor.java
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/00e3af45 Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/00e3af45 Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/00e3af45 Branch: refs/heads/vpc-refactor Commit: 00e3af45847e2aa7b51c90d97391176632f03976 Parents: bb66060 Author: wrodrigues <wrodrig...@schubergphilis.com> Authored: Mon Aug 25 20:35:07 2014 +0200 Committer: Wilder Rodrigues <wrodrig...@schubergphilis.com> Committed: Fri Oct 3 06:21:28 2014 +0200 ---------------------------------------------------------------------- .../network/router/CommandSetupHelper.java | 259 ++++++++++--------- .../cloud/network/rules/NicPlugInOutRules.java | 99 +++---- .../network/topology/BasicNetworkVisitor.java | 10 +- 3 files changed, 190 insertions(+), 178 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/00e3af45/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 124ed54..798bcfb 100644 --- a/server/src/com/cloud/network/router/CommandSetupHelper.java +++ b/server/src/com/cloud/network/router/CommandSetupHelper.java @@ -195,7 +195,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); @@ -213,12 +213,12 @@ public class CommandSetupHelper { } 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 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())) { + if ((gatewayIp != null) && !gatewayIp.equals(nic.getGateway())) { gatewayIp = "0.0.0.0"; } dhcpCommand.setDefaultRouter(gatewayIp); @@ -269,8 +269,8 @@ public class CommandSetupHelper { 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() + "}"); + s_logger.trace("configDnsMasq : adding ip {" + DhcpTO.getGateway() + ", " + DhcpTO.getNetmask() + ", " + DhcpTO.getRouterIp() + ", " + DhcpTO.getStartIpOfSubnet() + + "}"); } ipList.add(DhcpTO); ipAliasVO.setVmId(router.getId()); @@ -307,13 +307,15 @@ public class CommandSetupHelper { if (router instanceof DomainRouterVO) { final DomainRouterVO domr = _routerDao.findById(router.getId()); routerPublicIp = domr.getPublicIpAddress(); + if (routerPublicIp == null) { + routerPublicIp = router.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 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) { @@ -322,9 +324,8 @@ public class CommandSetupHelper { 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()); + 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()); @@ -340,7 +341,7 @@ public class CommandSetupHelper { } public void createApplyPortForwardingRulesCommands(final List<? extends PortForwardingRule> rules, final VirtualRouter router, final Commands cmds, final long guestNetworkId) { - List<PortForwardingRuleTO> rulesTO = new ArrayList<PortForwardingRuleTO>(); + final List<PortForwardingRuleTO> rulesTO = new ArrayList<PortForwardingRuleTO>(); if (rules != null) { for (final PortForwardingRule rule : rules) { final IpAddress sourceIp = _networkModel.getIp(rule.getSourceIpAddressId()); @@ -367,7 +368,7 @@ public class CommandSetupHelper { } public void createApplyStaticNatRulesCommands(final List<? extends StaticNatRule> rules, final VirtualRouter router, final Commands cmds, final long guestNetworkId) { - List<StaticNatRuleTO> rulesTO = new ArrayList<StaticNatRuleTO>(); + final List<StaticNatRuleTO> rulesTO = new ArrayList<StaticNatRuleTO>(); if (rules != null) { for (final StaticNatRule rule : rules) { final IpAddress sourceIp = _networkModel.getIp(rule.getSourceIpAddressId()); @@ -386,17 +387,17 @@ public class CommandSetupHelper { } public void createApplyFirewallRulesCommands(final List<? extends FirewallRule> rules, final VirtualRouter router, final Commands cmds, final long guestNetworkId) { - List<FirewallRuleTO> rulesTO = new ArrayList<FirewallRuleTO>(); + final 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) { + 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); + _rulesDao.loadSourceCidrs((FirewallRuleVO) rule); final FirewallRule.TrafficType traffictype = rule.getTrafficType(); if (traffictype == FirewallRule.TrafficType.Ingress) { final IpAddress sourceIp = _networkModel.getIp(rule.getSourceIpAddressId()); @@ -429,17 +430,17 @@ public class CommandSetupHelper { } public void createFirewallRulesCommands(final List<? extends FirewallRule> rules, final VirtualRouter router, final Commands cmds, final long guestNetworkId) { - List<FirewallRuleTO> rulesTO = new ArrayList<FirewallRuleTO>(); + final 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) { + 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); + _rulesDao.loadSourceCidrs((FirewallRuleVO) rule); final FirewallRule.TrafficType traffictype = rule.getTrafficType(); if (traffictype == FirewallRule.TrafficType.Ingress) { final IpAddress sourceIp = _networkModel.getIp(rule.getSourceIpAddressId()); @@ -473,7 +474,8 @@ public class CommandSetupHelper { 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.. + // 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(); @@ -481,8 +483,9 @@ public class CommandSetupHelper { 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) { + // 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); @@ -531,22 +534,26 @@ public class CommandSetupHelper { 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) { + // 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()); + 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*/ + /* + * send the firstIP = true for the first Add, this is to create + * primary on interface + */ if (!firstIP || add) { firstIP = false; } @@ -562,28 +569,29 @@ public class CommandSetupHelper { } } - 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>(); + public void createNetworkACLsCommands(final List<? extends NetworkACLItem> rules, final VirtualRouter router, final Commands cmds, final long guestNetworkId, + final boolean privateGateway) { + final List<NetworkACLTO> rulesTO = new ArrayList<NetworkACLTO>(); String guestVlan = null; - Network guestNtwk = _networkDao.findById(guestNetworkId); - URI uri = guestNtwk.getBroadcastUri(); + final Network guestNtwk = _networkDao.findById(guestNetworkId); + final 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()); + for (final NetworkACLItem rule : rules) { + final NetworkACLTO ruleTO = new NetworkACLTO(rule, guestVlan, rule.getTrafficType()); rulesTO.add(ruleTO); } } - SetNetworkACLCommand cmd = new SetNetworkACLCommand(rulesTO, _networkHelper.getNicTO(router, guestNetworkId, null)); + final 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()); + final 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)); @@ -593,14 +601,14 @@ public class CommandSetupHelper { } 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 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()) { + if ((password != null) && nic.isDefaultNic()) { final String encodedPassword = PasswordGenerator.rot13(password); - final SavePasswordCommand cmd = - new SavePasswordCommand(encodedPassword, nic.getIp4Address(), profile.getVirtualMachine().getHostName(), _networkModel.getExecuteInSeqNtwkElmtCmd()); + 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()); @@ -612,12 +620,12 @@ public class CommandSetupHelper { } public void createApplyStaticNatCommands(final List<? extends StaticNat> rules, final VirtualRouter router, final Commands cmds, final long guestNetworkId) { - List<StaticNatRuleTO> rulesTO = new ArrayList<StaticNatRuleTO>(); + final List<StaticNatRuleTO> rulesTO = new ArrayList<StaticNatRuleTO>(); if (rules != null) { for (final StaticNat rule : rules) { final IpAddress sourceIp = _networkModel.getIp(rule.getSourceIpAddressId()); - final StaticNatRuleTO ruleTO = - new StaticNatRuleTO(0, sourceIp.getAddress().addr(), null, null, rule.getDestIpAddress(), null, null, null, rule.isForRevoke(), false); + final StaticNatRuleTO ruleTO = new StaticNatRuleTO(0, sourceIp.getAddress().addr(), null, null, rule.getDestIpAddress(), null, null, null, rule.isForRevoke(), + false); rulesTO.add(ruleTO); } } @@ -633,10 +641,10 @@ public class CommandSetupHelper { } public void createStaticRouteCommands(final List<StaticRouteProfile> staticRoutes, final VirtualRouter router, final Commands cmds) { - SetStaticRouteCommand cmd = new SetStaticRouteCommand(staticRoutes); + final SetStaticRouteCommand cmd = new SetStaticRouteCommand(staticRoutes); cmd.setAccessDetail(NetworkElementCommand.ROUTER_IP, _networkHelper.getRouterControlIp(router.getId())); cmd.setAccessDetail(NetworkElementCommand.ROUTER_NAME, router.getInstanceName()); - DataCenterVO dcVo = _dcDao.findById(router.getDataCenterId()); + final DataCenterVO dcVo = _dcDao.findById(router.getDataCenterId()); cmd.setAccessDetail(NetworkElementCommand.ZONE_NETWORK_TYPE, dcVo.getNetworkType().toString()); cmds.addCommand(cmd); } @@ -649,10 +657,10 @@ public class CommandSetupHelper { final IpAddress ip = _networkModel.getIp(vpn.getServerAddressId()); final Network network = _networkDao.findById(vpn.getNetworkId()); - String cidr = network.getCidr(); + final String cidr = network.getCidr(); - final RemoteAccessVpnCfgCommand startVpnCmd = - new RemoteAccessVpnCfgCommand(isCreate, ip.getAddress().addr(), vpn.getLocalIp(), vpn.getIpRange(), vpn.getIpsecPresharedKey(), (vpn.getVpcId() != null)); + final RemoteAccessVpnCfgCommand startVpnCmd = new RemoteAccessVpnCfgCommand(isCreate, ip.getAddress().addr(), vpn.getLocalIp(), vpn.getIpRange(), + vpn.getIpsecPresharedKey(), (vpn.getVpcId() != null)); startVpnCmd.setLocalCidr(cidr); startVpnCmd.setAccessDetail(NetworkElementCommand.ROUTER_IP, _routerControlHelper.getRouterControlIp(router.getId())); startVpnCmd.setAccessDetail(NetworkElementCommand.ROUTER_NAME, router.getInstanceName()); @@ -667,7 +675,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; } @@ -686,8 +694,8 @@ 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() && - _dnsBasicZoneUpdates.equalsIgnoreCase("pod")) { + if ((dc.getNetworkType() == NetworkType.Basic) && (router.getPodIdToDeployIn().longValue() != vm.getPodIdToDeployIn().longValue()) + && _dnsBasicZoneUpdates.equalsIgnoreCase("pod")) { createDhcp = false; } if (createDhcp) { @@ -718,40 +726,41 @@ public class CommandSetupHelper { 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>>(); + // 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) { - String vlanTag = ipAddress.getVlanTag(); + final 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) { + // 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(); + for (final Map.Entry<String, ArrayList<PublicIpAddress>> vlanAndIp : vlanIpMap.entrySet()) { + final 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()); + final Integer networkRate = _networkModel.getNetworkRate(ipAddrList.get(0).getNetworkId(), router.getId()); + final Network network = _networkModel.getNetwork(ipAddrList.get(0).getNetworkId()); - IpAddressTO[] ipsToSend = new IpAddressTO[ipAddrList.size()]; + final IpAddressTO[] ipsToSend = new IpAddressTO[ipAddrList.size()]; int i = 0; for (final PublicIpAddress ipAddr : ipAddrList) { - boolean add = (ipAddr.getState() == IpAddress.State.Releasing ? false : true); + final boolean add = (ipAddr.getState() == IpAddress.State.Releasing ? false : true); - String macAddress = vlanMacAddress.get(BroadcastDomainType.getValue(BroadcastDomainType.fromString(ipAddr.getVlanTag()))); + final 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()); + final 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)); @@ -761,71 +770,71 @@ public class CommandSetupHelper { addSourceNat = add; } } - IpAssocVpcCommand cmd = new IpAssocVpcCommand(ipsToSend); + final IpAssocVpcCommand cmd = new IpAssocVpcCommand(ipsToSend); cmd.setAccessDetail(NetworkElementCommand.ROUTER_IP, _routerControlHelper.getRouterControlIp(router.getId())); cmd.setAccessDetail(NetworkElementCommand.ROUTER_GUEST_IP, _routerControlHelper.getRouterIpInNetwork(ipAddrList.get(0).getNetworkId(), router.getId())); cmd.setAccessDetail(NetworkElementCommand.ROUTER_NAME, router.getInstanceName()); - DataCenterVO dcVo = _dcDao.findById(router.getDataCenterId()); + final DataCenterVO dcVo = _dcDao.findById(router.getDataCenterId()); cmd.setAccessDetail(NetworkElementCommand.ZONE_NETWORK_TYPE, dcVo.getNetworkType().toString()); cmds.addCommand("IPAssocVpcCommand", cmd); } - //set source nat ip + // set source nat ip if (sourceNatIpAdd != null) { - IpAddressTO sourceNatIp = sourceNatIpAdd.first(); - SetSourceNatCommand cmd = new SetSourceNatCommand(sourceNatIp, addSourceNat); + final IpAddressTO sourceNatIp = sourceNatIpAdd.first(); + final SetSourceNatCommand cmd = new SetSourceNatCommand(sourceNatIp, addSourceNat); cmd.setAccessDetail(NetworkElementCommand.ROUTER_IP, _routerControlHelper.getRouterControlIp(router.getId())); cmd.setAccessDetail(NetworkElementCommand.ROUTER_NAME, router.getInstanceName()); - DataCenterVO dcVo = _dcDao.findById(router.getDataCenterId()); + final DataCenterVO dcVo = _dcDao.findById(router.getDataCenterId()); cmd.setAccessDetail(NetworkElementCommand.ZONE_NETWORK_TYPE, dcVo.getNetworkType().toString()); cmds.addCommand("SetSourceNatCommand", cmd); } } public void createStaticRouteCommands(final List<StaticRouteProfile> staticRoutes, final DomainRouterVO router, final Commands cmds) { - SetStaticRouteCommand cmd = new SetStaticRouteCommand(staticRoutes); + final SetStaticRouteCommand cmd = new SetStaticRouteCommand(staticRoutes); cmd.setAccessDetail(NetworkElementCommand.ROUTER_IP, _routerControlHelper.getRouterControlIp(router.getId())); cmd.setAccessDetail(NetworkElementCommand.ROUTER_NAME, router.getInstanceName()); - DataCenterVO dcVo = _dcDao.findById(router.getDataCenterId()); + final DataCenterVO dcVo = _dcDao.findById(router.getDataCenterId()); cmd.setAccessDetail(NetworkElementCommand.ZONE_NETWORK_TYPE, dcVo.getNetworkType().toString()); cmds.addCommand(cmd); } public 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()); + final Site2SiteCustomerGatewayVO gw = _s2sCustomerGatewayDao.findById(conn.getCustomerGatewayId()); + final Site2SiteVpnGatewayVO vpnGw = _s2sVpnGatewayDao.findById(conn.getVpnGatewayId()); + final IpAddress ip = _ipAddressDao.findById(vpnGw.getAddrId()); + final Vpc vpc = _vpcDao.findById(ip.getVpcId()); + final String localPublicIp = ip.getAddress().toString(); + final String localGuestCidr = vpc.getCidr(); + final String localPublicGateway = _vlanDao.findById(ip.getVlanId()).getVlanGateway(); + final String peerGatewayIp = gw.getGatewayIp(); + final String peerGuestCidrList = gw.getGuestCidrList(); + final String ipsecPsk = gw.getIpsecPsk(); + final String ikePolicy = gw.getIkePolicy(); + final String espPolicy = gw.getEspPolicy(); + final Long ikeLifetime = gw.getIkeLifetime(); + final Long espLifetime = gw.getEspLifetime(); + final Boolean dpd = gw.getDpd(); + + final Site2SiteVpnCfgCommand cmd = new Site2SiteVpnCfgCommand(isCreate, localPublicIp, localPublicGateway, localGuestCidr, peerGatewayIp, peerGuestCidrList, ikePolicy, + espPolicy, ipsecPsk, ikeLifetime, espLifetime, dpd, conn.isPassive()); cmd.setAccessDetail(NetworkElementCommand.ROUTER_IP, _routerControlHelper.getRouterControlIp(router.getId())); cmd.setAccessDetail(NetworkElementCommand.ROUTER_IP, _routerControlHelper.getRouterControlIp(router.getId())); cmd.setAccessDetail(NetworkElementCommand.ROUTER_NAME, router.getInstanceName()); - DataCenterVO dcVo = _dcDao.findById(router.getDataCenterId()); + final DataCenterVO dcVo = _dcDao.findById(router.getDataCenterId()); cmd.setAccessDetail(NetworkElementCommand.ZONE_NETWORK_TYPE, dcVo.getNetworkType().toString()); cmds.addCommand("applyS2SVpn", cmd); } public 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>>(); + // 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<PrivateIpAddress>> vlanIpMap = new HashMap<String, ArrayList<PrivateIpAddress>>(); for (final PrivateIpAddress ipAddress : ips) { - String vlanTag = ipAddress.getBroadcastUri(); + final String vlanTag = ipAddress.getBroadcastUri(); ArrayList<PrivateIpAddress> ipList = vlanIpMap.get(vlanTag); if (ipList == null) { ipList = new ArrayList<PrivateIpAddress>(); @@ -835,27 +844,26 @@ public class CommandSetupHelper { vlanIpMap.put(vlanTag, ipList); } - for (Map.Entry<String, ArrayList<PrivateIpAddress>> vlanAndIp : vlanIpMap.entrySet()) { - List<PrivateIpAddress> ipAddrList = vlanAndIp.getValue(); - IpAddressTO[] ipsToSend = new IpAddressTO[ipAddrList.size()]; + for (final Map.Entry<String, ArrayList<PrivateIpAddress>> vlanAndIp : vlanIpMap.entrySet()) { + final List<PrivateIpAddress> ipAddrList = vlanAndIp.getValue(); + final 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); + final Network network = _networkModel.getNetwork(ipAddr.getNetworkId()); + final 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); + final IpAssocVpcCommand cmd = new IpAssocVpcCommand(ipsToSend); cmd.setAccessDetail(NetworkElementCommand.ROUTER_IP, _routerControlHelper.getRouterControlIp(router.getId())); cmd.setAccessDetail(NetworkElementCommand.ROUTER_GUEST_IP, _routerControlHelper.getRouterIpInNetwork(ipAddrList.get(0).getNetworkId(), router.getId())); cmd.setAccessDetail(NetworkElementCommand.ROUTER_NAME, router.getInstanceName()); - DataCenterVO dcVo = _dcDao.findById(router.getDataCenterId()); + final DataCenterVO dcVo = _dcDao.findById(router.getDataCenterId()); cmd.setAccessDetail(NetworkElementCommand.ZONE_NETWORK_TYPE, dcVo.getNetworkType().toString()); cmds.addCommand("IPAssocVpcCommand", cmd); @@ -863,31 +871,31 @@ public class CommandSetupHelper { } public SetupGuestNetworkCommand createSetupGuestNetworkCommand(final VirtualRouter router, final boolean add, final NicProfile guestNic) { - Network network = _networkModel.getNetwork(guestNic.getNetworkId()); + final 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); + final boolean dnsProvided = _networkModel.isProviderSupportServiceInNetwork(network.getId(), Service.Dns, Provider.VPCVirtualRouter); + final boolean dhcpProvided = _networkModel.isProviderSupportServiceInNetwork(network.getId(), Service.Dhcp, Provider.VPCVirtualRouter); - boolean setupDns = dnsProvided || dhcpProvided; + final 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())); + final Nic nic = _nicDao.findByNtwkIdAndInstanceId(network.getId(), router.getId()); + final String networkDomain = network.getNetworkDomain(); + final String dhcpRange = getGuestDhcpRange(guestNic, network, _entityMgr.findById(DataCenter.class, network.getDataCenterId())); - NicProfile nicProfile = _networkModel.getNicProfile(router, nic.getNetworkId(), null); + final NicProfile nicProfile = _networkModel.getNicProfile(router, nic.getNetworkId(), null); - SetupGuestNetworkCommand setupCmd = - new SetupGuestNetworkCommand(dhcpRange, networkDomain, false, null, defaultDns1, defaultDns2, add, _itMgr.toNicTO(nicProfile, router.getHypervisorType())); + final 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())); + final String brd = NetUtils.long2Ip(NetUtils.ip2Long(guestNic.getIp4Address()) | ~NetUtils.ip2Long(guestNic.getNetmask())); setupCmd.setAccessDetail(NetworkElementCommand.ROUTER_IP, _routerControlHelper.getRouterControlIp(router.getId())); setupCmd.setAccessDetail(NetworkElementCommand.ROUTER_GUEST_IP, _routerControlHelper.getRouterIpInNetwork(network.getId(), router.getId())); @@ -896,15 +904,16 @@ public class CommandSetupHelper { setupCmd.setAccessDetail(NetworkElementCommand.ROUTER_NAME, router.getInstanceName()); if (network.getBroadcastDomainType() == BroadcastDomainType.Vlan) { - long guestVlanTag = Long.parseLong(BroadcastDomainType.Vlan.getValueFrom(network.getBroadcastUri())); + final long guestVlanTag = Long.parseLong(BroadcastDomainType.Vlan.getValueFrom(network.getBroadcastUri())); setupCmd.setAccessDetail(NetworkElementCommand.GUEST_VLAN_TAG, String.valueOf(guestVlanTag)); } return setupCmd; } - private VmDataCommand generateVmDataCommand(final VirtualRouter router, final String vmPrivateIpAddress, final String userData, final String serviceOffering, final String zoneName, - final String guestIpAddress, final String vmName, final String vmInstanceName, final long vmId, final String vmUuid, final String publicKey, final long guestNetworkId) { + private VmDataCommand generateVmDataCommand(final VirtualRouter router, final String vmPrivateIpAddress, final String userData, final String serviceOffering, + final String zoneName, final String guestIpAddress, final String vmName, final String vmInstanceName, final long vmId, final String vmUuid, final String publicKey, + final long guestNetworkId) { final VmDataCommand cmd = new VmDataCommand(vmPrivateIpAddress, vmName, _networkModel.getExecuteInSeqNtwkElmtCmd()); cmd.setAccessDetail(NetworkElementCommand.ROUTER_IP, _routerControlHelper.getRouterControlIp(router.getId())); @@ -958,7 +967,7 @@ public class CommandSetupHelper { private NicVO findDefaultDnsIp(final long userVmId) { final NicVO defaultNic = _nicDao.findDefaultNicForVM(userVmId); - //check if DNS provider is the domR + // check if DNS provider is the domR if (!_networkModel.isProviderSupportServiceInNetwork(defaultNic.getNetworkId(), Service.Dns, Provider.VirtualRouter)) { return null; } @@ -971,7 +980,7 @@ public class CommandSetupHelper { final DataCenter dc = _dcDao.findById(_networkModel.getNetwork(defaultNic.getNetworkId()).getDataCenterId()); final boolean isZoneBasic = (dc.getNetworkType() == NetworkType.Basic); - //find domR's nic in the network + // find domR's nic in the network NicVO domrDefaultNic; if (isZoneBasic) { domrDefaultNic = _nicDao.findByNetworkIdTypeAndGateway(defaultNic.getNetworkId(), VirtualMachine.Type.DomainRouter, defaultNic.getGateway()); @@ -983,7 +992,7 @@ public class CommandSetupHelper { protected String getGuestDhcpRange(final NicProfile guestNic, final Network guestNetwork, final DataCenter dc) { String dhcpRange = null; - //setup dhcp range + // setup dhcp range if (dc.getNetworkType() == NetworkType.Basic) { final long cidrSize = NetUtils.getCidrSize(guestNic.getNetmask()); final String cidr = NetUtils.getCidrSubNet(guestNic.getGateway(), cidrSize); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/00e3af45/server/src/com/cloud/network/rules/NicPlugInOutRules.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/rules/NicPlugInOutRules.java b/server/src/com/cloud/network/rules/NicPlugInOutRules.java index b96e2b1..8cab97b 100644 --- a/server/src/com/cloud/network/rules/NicPlugInOutRules.java +++ b/server/src/com/cloud/network/rules/NicPlugInOutRules.java @@ -60,32 +60,33 @@ public class NicPlugInOutRules extends RuleApplier { @Override public boolean accept(final NetworkTopologyVisitor visitor, final VirtualRouter router) throws ResourceUnavailableException { + _router = router; - Pair<Map<String, PublicIpAddress>, Map<String, PublicIpAddress>> nicsToChange = getNicsToChangeOnRouter(_ipAddresses, router); - Map<String, PublicIpAddress> nicsToPlug = nicsToChange.first(); - Map<String, PublicIpAddress> nicsToUnplug = nicsToChange.second(); + final Pair<Map<String, PublicIpAddress>, Map<String, PublicIpAddress>> nicsToChange = getNicsToChangeOnRouter(_ipAddresses, router); + final Map<String, PublicIpAddress> nicsToPlug = nicsToChange.first(); + final Map<String, PublicIpAddress> nicsToUnplug = nicsToChange.second(); - //1) Unplug the nics - for (Entry<String, PublicIpAddress> entry : nicsToUnplug.entrySet()) { + // 1) Unplug the nics + for (final Entry<String, PublicIpAddress> entry : nicsToUnplug.entrySet()) { Network publicNtwk = null; try { publicNtwk = _networkModel.getNetwork(entry.getValue().getNetworkId()); - URI broadcastUri = BroadcastDomainType.Vlan.toUri(entry.getKey()); + final URI broadcastUri = BroadcastDomainType.Vlan.toUri(entry.getKey()); _itMgr.removeVmFromNetwork(router, publicNtwk, broadcastUri); - } catch (ConcurrentOperationException e) { + } catch (final ConcurrentOperationException e) { s_logger.warn("Failed to remove router " + router + " from vlan " + entry.getKey() + " in public network " + publicNtwk + " due to ", e); return false; } } _netUsageCommands = new Commands(Command.OnError.Continue); - VpcVO vpc = _vpcDao.findById(router.getVpcId()); + final VpcVO vpc = _vpcDao.findById(router.getVpcId()); - //2) Plug the nics - for (String vlanTag : nicsToPlug.keySet()) { - PublicIpAddress ip = nicsToPlug.get(vlanTag); - //have to plug the nic(s) - NicProfile defaultNic = new NicProfile(); + // 2) Plug the nics + for (final String vlanTag : nicsToPlug.keySet()) { + final PublicIpAddress ip = nicsToPlug.get(vlanTag); + // have to plug the nic(s) + final NicProfile defaultNic = new NicProfile(); if (ip.isSourceNat()) { defaultNic.setDefaultNic(true); } @@ -102,9 +103,9 @@ public class NicPlugInOutRules extends RuleApplier { try { publicNtwk = _networkModel.getNetwork(ip.getNetworkId()); publicNic = _itMgr.addVmToNetwork(router, publicNtwk, defaultNic); - } catch (ConcurrentOperationException e) { + } catch (final ConcurrentOperationException e) { s_logger.warn("Failed to add router " + router + " to vlan " + vlanTag + " in public network " + publicNtwk + " due to ", e); - } catch (InsufficientCapacityException e) { + } catch (final InsufficientCapacityException e) { s_logger.warn("Failed to add router " + router + " to vlan " + vlanTag + " in public network " + publicNtwk + " due to ", e); } finally { if (publicNic == null) { @@ -112,22 +113,22 @@ public class NicPlugInOutRules extends RuleApplier { return false; } } - //Create network usage commands. Send commands to router after IPAssoc - NetworkUsageCommand netUsageCmd = - new NetworkUsageCommand(router.getPrivateIpAddress(), router.getInstanceName(), true, defaultNic.getIp4Address(), vpc.getCidr()); + // Create network usage commands. Send commands to router after + // IPAssoc + final NetworkUsageCommand netUsageCmd = new NetworkUsageCommand(router.getPrivateIpAddress(), router.getInstanceName(), true, defaultNic.getIp4Address(), + vpc.getCidr()); _netUsageCommands.addCommand(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); } } - // The visit will be done from the AdvancedNetworkTopology, after the VpcIpAssociation is done. + // The visit will be done from the AdvancedNetworkTopology, after the + // VpcIpAssociation is done. return true; } @@ -139,24 +140,24 @@ public class NicPlugInOutRules extends RuleApplier { return _netUsageCommands; } - private 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 + private 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>(); + final Map<String, PublicIpAddress> nicsToPlug = new HashMap<String, PublicIpAddress>(); + final Map<String, PublicIpAddress> nicsToUnplug = new HashMap<String, PublicIpAddress>(); - //find out nics to unplug - for (PublicIpAddress ip : publicIps) { - long publicNtwkId = ip.getNetworkId(); + // find out nics to unplug + for (final PublicIpAddress ip : publicIps) { + final 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.Releasing) { - Nic nic = _nicDao.findByIp4AddressAndNetworkIdAndInstanceId(publicNtwkId, router.getId(), ip.getAddress().addr()); + final Nic nic = _nicDao.findByIp4AddressAndNetworkIdAndInstanceId(publicNtwkId, router.getId(), ip.getAddress().addr()); if (nic != null) { nicsToUnplug.put(ip.getVlanTag(), ip); s_logger.debug("Need to unplug the nic for ip=" + ip + "; vlan=" + ip.getVlanTag() + " in public network id =" + publicNtwkId); @@ -164,27 +165,29 @@ public class NicPlugInOutRules extends RuleApplier { } } - //find out nics to plug - for (PublicIpAddress ip : publicIps) { - URI broadcastUri = BroadcastDomainType.Vlan.toUri(ip.getVlanTag()); - long publicNtwkId = ip.getNetworkId(); + // find out nics to plug + for (final PublicIpAddress ip : publicIps) { + final URI broadcastUri = BroadcastDomainType.Vlan.toUri(ip.getVlanTag()); + final 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 nic = _nicDao.findByNetworkIdInstanceIdAndBroadcastUri(publicNtwkId, router.getId(), broadcastUri.toString()); + 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 + final Nic nic = _nicDao.findByNetworkIdInstanceIdAndBroadcastUri(publicNtwkId, router.getId(), broadcastUri.toString()); - if (nic == null && nicsToPlug.get(ip.getVlanTag()) == null) { + if ((nic == null) && (nicsToPlug.get(ip.getVlanTag()) == null)) { nicsToPlug.put(ip.getVlanTag(), ip); s_logger.debug("Need to plug the nic for ip=" + ip + "; vlan=" + ip.getVlanTag() + " in public network id =" + publicNtwkId); } else { - PublicIpAddress nicToUnplug = nicsToUnplug.get(ip.getVlanTag()); + final PublicIpAddress nicToUnplug = nicsToUnplug.get(ip.getVlanTag()); if (nicToUnplug != null) { - NicVO nicVO = _nicDao.findByIp4AddressAndNetworkIdAndInstanceId(publicNtwkId, router.getId(), nicToUnplug.getAddress().addr()); + final NicVO nicVO = _nicDao.findByIp4AddressAndNetworkIdAndInstanceId(publicNtwkId, router.getId(), nicToUnplug.getAddress().addr()); nicVO.setIp4Address(ip.getAddress().addr()); _nicDao.update(nicVO.getId(), nicVO); s_logger.debug("Updated the nic " + nicVO + " with the new ip address " + ip.getAddress().addr()); @@ -194,8 +197,8 @@ public class NicPlugInOutRules extends RuleApplier { } } - Pair<Map<String, PublicIpAddress>, Map<String, PublicIpAddress>> nicsToChange = - new Pair<Map<String, PublicIpAddress>, Map<String, PublicIpAddress>>(nicsToPlug, nicsToUnplug); + final Pair<Map<String, PublicIpAddress>, Map<String, PublicIpAddress>> nicsToChange = new Pair<Map<String, PublicIpAddress>, Map<String, PublicIpAddress>>(nicsToPlug, + nicsToUnplug); return nicsToChange; } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/00e3af45/server/src/org/apache/cloudstack/network/topology/BasicNetworkVisitor.java ---------------------------------------------------------------------- diff --git a/server/src/org/apache/cloudstack/network/topology/BasicNetworkVisitor.java b/server/src/org/apache/cloudstack/network/topology/BasicNetworkVisitor.java index 987e23e..a3ef1ee 100644 --- a/server/src/org/apache/cloudstack/network/topology/BasicNetworkVisitor.java +++ b/server/src/org/apache/cloudstack/network/topology/BasicNetworkVisitor.java @@ -55,9 +55,9 @@ import com.cloud.network.rules.StaticRoutesRules; import com.cloud.network.rules.UserdataPwdRules; import com.cloud.network.rules.UserdataToRouterRules; import com.cloud.network.rules.VpcIpAssociationRules; -import com.cloud.network.rules.VpnRules; import com.cloud.storage.VMTemplateVO; import com.cloud.utils.exception.CloudRuntimeException; +import com.cloud.vm.DomainRouterVO; import com.cloud.vm.NicVO; import com.cloud.vm.UserVmVO; import com.cloud.vm.VirtualMachineProfile; @@ -92,7 +92,7 @@ public class BasicNetworkVisitor extends NetworkTopologyVisitor { @Override public boolean visit(final LoadBalancingRules loadbalancing) throws ResourceUnavailableException { final Network network = loadbalancing.getNetwork(); - final VirtualRouter router = loadbalancing.getRouter(); + final DomainRouterVO router = (DomainRouterVO) loadbalancing.getRouter(); final List<LoadBalancingRule> rules = loadbalancing.getRules(); final Commands cmds = new Commands(Command.OnError.Continue); @@ -237,9 +237,9 @@ public class BasicNetworkVisitor extends NetworkTopologyVisitor { } @Override - public boolean visit(final VpnRules vpn) throws ResourceUnavailableException { - VirtualRouter router = vpn.getRouter(); - List<? extends VpnUser> users = vpn.getUsers(); + public boolean visit(final BasicVpnRules vpnRules) throws ResourceUnavailableException { + final VirtualRouter router = vpnRules.getRouter(); + final List<? extends VpnUser> users = vpnRules.getUsers(); final Commands cmds = new Commands(Command.OnError.Continue); _commandSetupHelper.createApplyVpnUsersCommand(users, router, cmds);