Changing the way the DAOs were being injected in the RuleApplier; Making code clearer and simple.
Conflicts: server/src/com/cloud/network/rules/PrivateGatewayRules.java server/src/com/cloud/network/rules/VirtualNetworkApplianceFactory.java server/src/org/apache/cloudstack/network/topology/BasicNetworkTopology.java server/src/org/apache/cloudstack/network/topology/NetworkTopologyVisitor.java Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/9f801d1f Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/9f801d1f Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/9f801d1f Branch: refs/heads/master Commit: 9f801d1f3a6ca78b8497ab6786005154614d6b44 Parents: 60eea3b Author: Wilder Rodrigues <wrodrig...@schubergphilis.com> Authored: Tue Sep 9 17:09:29 2014 +0200 Committer: wilderrodrigues <wrodrig...@schubergphilis.com> Committed: Tue Oct 14 15:08:12 2014 +0200 ---------------------------------------------------------------------- .../cloud/network/rules/AdvancedVpnRules.java | 4 +- .../com/cloud/network/rules/DhcpEntryRules.java | 12 +- .../src/com/cloud/network/rules/DhcpRules.java | 9 +- .../cloud/network/rules/DhcpSubNetRules.java | 52 +++-- .../com/cloud/network/rules/FirewallRules.java | 20 +- .../cloud/network/rules/LoadBalancingRules.java | 20 +- .../cloud/network/rules/NicPlugInOutRules.java | 48 +++-- .../network/rules/PasswordToRouterRules.java | 8 +- .../network/rules/PrivateGatewayRules.java | 41 ++-- .../com/cloud/network/rules/RuleApplier.java | 47 +--- .../network/rules/SshKeyToRouterRules.java | 16 +- .../cloud/network/rules/UserdataPwdRules.java | 10 +- .../network/rules/UserdataToRouterRules.java | 10 +- .../rules/VirtualNetworkApplianceFactory.java | 212 ++++--------------- .../network/rules/VpcIpAssociationRules.java | 4 +- .../topology/AdvancedNetworkTopology.java | 20 +- .../topology/AdvancedNetworkVisitor.java | 4 +- .../network/topology/BasicNetworkTopology.java | 26 ++- .../network/topology/BasicNetworkVisitor.java | 9 + .../topology/NetworkTopologyVisitor.java | 8 +- 20 files changed, 260 insertions(+), 320 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9f801d1f/server/src/com/cloud/network/rules/AdvancedVpnRules.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/rules/AdvancedVpnRules.java b/server/src/com/cloud/network/rules/AdvancedVpnRules.java index f7cb361..d97ffb6 100644 --- a/server/src/com/cloud/network/rules/AdvancedVpnRules.java +++ b/server/src/com/cloud/network/rules/AdvancedVpnRules.java @@ -28,6 +28,7 @@ import com.cloud.network.RemoteAccessVpn; import com.cloud.network.VpnUser; import com.cloud.network.router.VirtualRouter; import com.cloud.network.vpc.Vpc; +import com.cloud.network.vpc.dao.VpcDao; import com.cloud.vm.VirtualMachine.State; public class AdvancedVpnRules extends BasicVpnRules { @@ -45,7 +46,8 @@ public class AdvancedVpnRules extends BasicVpnRules { public boolean accept(final NetworkTopologyVisitor visitor, final VirtualRouter router) throws ResourceUnavailableException { _router = router; - Vpc vpc = _vpcDao.findById(_remoteAccessVpn.getVpcId()); + VpcDao vpcDao = visitor.getVirtualNetworkApplianceFactory().getVpcDao(); + Vpc vpc = vpcDao.findById(_remoteAccessVpn.getVpcId()); if (_router.getState() != State.Running) { s_logger.warn("Failed to add/remove Remote Access VPN users: router not in running state"); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9f801d1f/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 b7a7bd3..991813c 100644 --- a/server/src/com/cloud/network/rules/DhcpEntryRules.java +++ b/server/src/com/cloud/network/rules/DhcpEntryRules.java @@ -27,6 +27,8 @@ import com.cloud.vm.NicProfile; import com.cloud.vm.NicVO; import com.cloud.vm.UserVmVO; import com.cloud.vm.VirtualMachineProfile; +import com.cloud.vm.dao.NicDao; +import com.cloud.vm.dao.UserVmDao; public class DhcpEntryRules extends RuleApplier { @@ -49,9 +51,13 @@ public class DhcpEntryRules extends RuleApplier { public boolean accept(final NetworkTopologyVisitor visitor, final VirtualRouter router) throws ResourceUnavailableException { _router = router; - _userVM = _userVmDao.findById(_profile.getId()); - _userVmDao.loadDetails(_userVM); - _nicVo = _nicDao.findById(_nic.getId()); + UserVmDao userVmDao = visitor.getVirtualNetworkApplianceFactory().getUserVmDao(); + _userVM = userVmDao.findById(_profile.getId()); + + userVmDao.loadDetails(_userVM); + + NicDao nicDao = visitor.getVirtualNetworkApplianceFactory().getNicDao(); + _nicVo = nicDao.findById(_nic.getId()); return visitor.visit(this); } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9f801d1f/server/src/com/cloud/network/rules/DhcpRules.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/rules/DhcpRules.java b/server/src/com/cloud/network/rules/DhcpRules.java index 655d430..5e8cf9e 100644 --- a/server/src/com/cloud/network/rules/DhcpRules.java +++ b/server/src/com/cloud/network/rules/DhcpRules.java @@ -22,6 +22,8 @@ import org.apache.cloudstack.network.topology.NetworkTopologyVisitor; import com.cloud.agent.api.PvlanSetupCommand; import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.Network; +import com.cloud.network.NetworkModel; +import com.cloud.network.dao.NetworkDao; import com.cloud.network.router.VirtualRouter; import com.cloud.vm.NicProfile; @@ -48,8 +50,11 @@ public class DhcpRules extends RuleApplier { op = "delete"; } - final Network network = _networkDao.findById(_nic.getNetworkId()); - final String networkTag = _networkModel.getNetworkTag(_router.getHypervisorType(), network); + NetworkDao networkDao = visitor.getVirtualNetworkApplianceFactory().getNetworkDao(); + final Network network = networkDao.findById(_nic.getNetworkId()); + + NetworkModel networkModel = visitor.getVirtualNetworkApplianceFactory().getNetworkModel(); + final String networkTag = networkModel.getNetworkTag(_router.getHypervisorType(), network); _setupCommand = PvlanSetupCommand.createDhcpSetup(op, _nic.getBroadCastUri(), networkTag, _router.getInstanceName(), _nic.getMacAddress(), _nic.getIp4Address()); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9f801d1f/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 0bbcfcc..ac69479 100644 --- a/server/src/com/cloud/network/rules/DhcpSubNetRules.java +++ b/server/src/com/cloud/network/rules/DhcpSubNetRules.java @@ -28,12 +28,17 @@ import com.cloud.dc.DataCenter; import com.cloud.dc.DataCenter.NetworkType; import com.cloud.dc.Vlan; import com.cloud.dc.VlanVO; +import com.cloud.dc.dao.DataCenterDao; +import com.cloud.dc.dao.HostPodDao; +import com.cloud.dc.dao.VlanDao; import com.cloud.exception.InsufficientAddressCapacityException; import com.cloud.exception.ResourceUnavailableException; +import com.cloud.network.IpAddressManager; import com.cloud.network.Network; import com.cloud.network.Network.GuestType; import com.cloud.network.Networks.TrafficType; import com.cloud.network.addr.PublicIp; +import com.cloud.network.dao.IPAddressDao; import com.cloud.network.router.VirtualRouter; import com.cloud.user.Account; import com.cloud.utils.db.Transaction; @@ -47,7 +52,10 @@ import com.cloud.vm.NicVO; import com.cloud.vm.UserVmVO; import com.cloud.vm.VirtualMachine; import com.cloud.vm.VirtualMachineProfile; +import com.cloud.vm.dao.NicDao; +import com.cloud.vm.dao.NicIpAliasDao; import com.cloud.vm.dao.NicIpAliasVO; +import com.cloud.vm.dao.UserVmDao; public class DhcpSubNetRules extends RuleApplier { @@ -70,11 +78,13 @@ public class DhcpSubNetRules extends RuleApplier { public boolean accept(final NetworkTopologyVisitor visitor, final VirtualRouter router) throws ResourceUnavailableException { _router = router; - final UserVmVO vm = _userVmDao.findById(_profile.getId()); - _userVmDao.loadDetails(vm); + UserVmDao userVmDao = visitor.getVirtualNetworkApplianceFactory().getUserVmDao(); + final UserVmVO vm = userVmDao.findById(_profile.getId()); + userVmDao.loadDetails(vm); + NicDao nicDao = visitor.getVirtualNetworkApplianceFactory().getNicDao(); // check if this is not the primary subnet. - final NicVO domr_guest_nic = _nicDao.findByInstanceIdAndIpAddressAndVmtype(_router.getId(), _nicDao.getIpAddress(_nic.getNetworkId(), _router.getId()), + final NicVO domrGuestNic = nicDao.findByInstanceIdAndIpAddressAndVmtype(_router.getId(), nicDao.getIpAddress(_nic.getNetworkId(), _router.getId()), VirtualMachine.Type.DomainRouter); // check if the router ip address and the vm ip address belong to same // subnet. @@ -82,8 +92,9 @@ public class DhcpSubNetRules extends RuleApplier { // create one. // This should happen only in case of Basic and Advanced SG enabled // networks. - if (!NetUtils.sameSubnet(domr_guest_nic.getIp4Address(), _nic.getIp4Address(), _nic.getNetmask())) { - final List<NicIpAliasVO> aliasIps = _nicIpAliasDao.listByNetworkIdAndState(domr_guest_nic.getNetworkId(), NicIpAlias.state.active); + if (!NetUtils.sameSubnet(domrGuestNic.getIp4Address(), _nic.getIp4Address(), _nic.getNetmask())) { + final NicIpAliasDao nicIpAliasDao = visitor.getVirtualNetworkApplianceFactory().getNicIpAliasDao(); + final List<NicIpAliasVO> aliasIps = nicIpAliasDao.listByNetworkIdAndState(domrGuestNic.getNetworkId(), NicIpAlias.state.active); boolean ipInVmsubnet = false; for (final NicIpAliasVO alias : aliasIps) { // check if any of the alias ips belongs to the Vm's subnet. @@ -94,22 +105,27 @@ public class DhcpSubNetRules extends RuleApplier { } PublicIp routerPublicIP = null; - final DataCenter dc = _dcDao.findById(_router.getDataCenterId()); + DataCenterDao dcDao = visitor.getVirtualNetworkApplianceFactory().getDcDao(); + final DataCenter dc = dcDao.findById(_router.getDataCenterId()); if (ipInVmsubnet == false) { try { - if ((_network.getTrafficType() == TrafficType.Guest) && (_network.getGuestType() == GuestType.Shared)) { - _podDao.findById(vm.getPodIdToDeployIn()); + if (_network.getTrafficType() == TrafficType.Guest && _network.getGuestType() == GuestType.Shared) { + HostPodDao podDao = visitor.getVirtualNetworkApplianceFactory().getPodDao(); + podDao.findById(vm.getPodIdToDeployIn()); final Account caller = CallContext.current().getCallingAccount(); - final List<VlanVO> vlanList = _vlanDao.listVlansByNetworkIdAndGateway(_network.getId(), _nic.getGateway()); + + VlanDao vlanDao = visitor.getVirtualNetworkApplianceFactory().getVlanDao(); + final List<VlanVO> vlanList = vlanDao.listVlansByNetworkIdAndGateway(_network.getId(), _nic.getGateway()); final List<Long> vlanDbIdList = new ArrayList<Long>(); for (final VlanVO vlan : vlanList) { vlanDbIdList.add(vlan.getId()); } + IpAddressManager ipAddrMgr = visitor.getVirtualNetworkApplianceFactory().getIpAddrMgr(); if (dc.getNetworkType() == NetworkType.Basic) { - routerPublicIP = _ipAddrMgr.assignPublicIpAddressFromVlans(_router.getDataCenterId(), vm.getPodIdToDeployIn(), caller, Vlan.VlanType.DirectAttached, + routerPublicIP = ipAddrMgr.assignPublicIpAddressFromVlans(_router.getDataCenterId(), vm.getPodIdToDeployIn(), caller, Vlan.VlanType.DirectAttached, vlanDbIdList, _nic.getNetworkId(), null, false); } else { - routerPublicIP = _ipAddrMgr.assignPublicIpAddressFromVlans(_router.getDataCenterId(), null, caller, Vlan.VlanType.DirectAttached, vlanDbIdList, + routerPublicIP = ipAddrMgr.assignPublicIpAddressFromVlans(_router.getDataCenterId(), null, caller, Vlan.VlanType.DirectAttached, vlanDbIdList, _nic.getNetworkId(), null, false); } @@ -121,21 +137,23 @@ public class DhcpSubNetRules extends RuleApplier { return false; } // this means we did not create an IP alias on the router. - _nicAlias = new NicIpAliasVO(domr_guest_nic.getId(), _routerAliasIp, _router.getId(), CallContext.current().getCallingAccountId(), _network.getDomainId(), + _nicAlias = new NicIpAliasVO(domrGuestNic.getId(), _routerAliasIp, _router.getId(), CallContext.current().getCallingAccountId(), _network.getDomainId(), _nic.getNetworkId(), _nic.getGateway(), _nic.getNetmask()); - _nicAlias.setAliasCount((routerPublicIP.getIpMacAddress())); - _nicIpAliasDao.persist(_nicAlias); + _nicAlias.setAliasCount(routerPublicIP.getIpMacAddress()); + nicIpAliasDao.persist(_nicAlias); final boolean result = visitor.visit(this); if (result == false) { - final NicIpAliasVO ipAliasVO = _nicIpAliasDao.findByInstanceIdAndNetworkId(_network.getId(), _router.getId()); + final NicIpAliasVO ipAliasVO = nicIpAliasDao.findByInstanceIdAndNetworkId(_network.getId(), _router.getId()); final PublicIp routerPublicIPFinal = routerPublicIP; Transaction.execute(new TransactionCallbackNoReturn() { @Override public void doInTransactionWithoutResult(final TransactionStatus status) { - _nicIpAliasDao.expunge(ipAliasVO.getId()); - _ipAddressDao.unassignIpAddress(routerPublicIPFinal.getId()); + nicIpAliasDao.expunge(ipAliasVO.getId()); + + IPAddressDao ipAddressDao = visitor.getVirtualNetworkApplianceFactory().getIpAddressDao(); + ipAddressDao.unassignIpAddress(routerPublicIPFinal.getId()); } }); throw new CloudRuntimeException("failed to configure ip alias on the router as a part of dhcp config"); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9f801d1f/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 668f403..b36ce81 100644 --- a/server/src/com/cloud/network/rules/FirewallRules.java +++ b/server/src/com/cloud/network/rules/FirewallRules.java @@ -24,12 +24,15 @@ import org.apache.cloudstack.network.topology.NetworkTopologyVisitor; import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.Network; +import com.cloud.network.NetworkModel; +import com.cloud.network.dao.LoadBalancerDao; import com.cloud.network.dao.LoadBalancerVO; import com.cloud.network.lb.LoadBalancingRule; import com.cloud.network.lb.LoadBalancingRule.LbDestination; import com.cloud.network.lb.LoadBalancingRule.LbHealthCheckPolicy; import com.cloud.network.lb.LoadBalancingRule.LbSslCert; import com.cloud.network.lb.LoadBalancingRule.LbStickinessPolicy; +import com.cloud.network.lb.LoadBalancingRulesManager; import com.cloud.network.router.VirtualRouter; import com.cloud.network.rules.FirewallRule.Purpose; import com.cloud.network.rules.LoadBalancerContainer.Scheme; @@ -54,15 +57,20 @@ public class FirewallRules extends RuleApplier { _purpose = _rules.get(0).getPurpose(); if (_purpose == Purpose.LoadBalancing) { + LoadBalancerDao loadBalancerDao = visitor.getVirtualNetworkApplianceFactory().getLoadBalancerDao(); // for load balancer we have to resend all lb rules for the network - final List<LoadBalancerVO> lbs = _loadBalancerDao.listByNetworkIdAndScheme(_network.getId(), Scheme.Public); + final List<LoadBalancerVO> lbs = loadBalancerDao.listByNetworkIdAndScheme(_network.getId(), Scheme.Public); _loadbalancingRules = new ArrayList<LoadBalancingRule>(); + + LoadBalancingRulesManager lbMgr = visitor.getVirtualNetworkApplianceFactory().getLbMgr(); + NetworkModel networkModel = visitor.getVirtualNetworkApplianceFactory().getNetworkModel(); + for (final LoadBalancerVO lb : lbs) { - final List<LbDestination> dstList = _lbMgr.getExistingDestinations(lb.getId()); - final List<LbStickinessPolicy> policyList = _lbMgr.getStickinessPolicies(lb.getId()); - final List<LbHealthCheckPolicy> hcPolicyList = _lbMgr.getHealthCheckPolicies(lb.getId()); - final LbSslCert sslCert = _lbMgr.getLbSslCert(lb.getId()); - final Ip sourceIp = _networkModel.getPublicIpAddress(lb.getSourceIpAddressId()).getAddress(); + final List<LbDestination> dstList = lbMgr.getExistingDestinations(lb.getId()); + final List<LbStickinessPolicy> policyList = lbMgr.getStickinessPolicies(lb.getId()); + final List<LbHealthCheckPolicy> hcPolicyList = lbMgr.getHealthCheckPolicies(lb.getId()); + final LbSslCert sslCert = lbMgr.getLbSslCert(lb.getId()); + final Ip sourceIp = networkModel.getPublicIpAddress(lb.getSourceIpAddressId()).getAddress(); final LoadBalancingRule loadBalancing = new LoadBalancingRule(lb, dstList, policyList, hcPolicyList, sourceIp, sslCert, lb.getLbProtocol()); _loadbalancingRules.add(loadBalancing); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9f801d1f/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 d6e762f..62c8b3b 100644 --- a/server/src/com/cloud/network/rules/LoadBalancingRules.java +++ b/server/src/com/cloud/network/rules/LoadBalancingRules.java @@ -23,12 +23,15 @@ import org.apache.cloudstack.network.topology.NetworkTopologyVisitor; import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.Network; +import com.cloud.network.NetworkModel; +import com.cloud.network.dao.LoadBalancerDao; import com.cloud.network.dao.LoadBalancerVO; import com.cloud.network.lb.LoadBalancingRule; import com.cloud.network.lb.LoadBalancingRule.LbDestination; import com.cloud.network.lb.LoadBalancingRule.LbHealthCheckPolicy; import com.cloud.network.lb.LoadBalancingRule.LbSslCert; import com.cloud.network.lb.LoadBalancingRule.LbStickinessPolicy; +import com.cloud.network.lb.LoadBalancingRulesManager; import com.cloud.network.router.VirtualRouter; import com.cloud.network.rules.LoadBalancerContainer.Scheme; import com.cloud.utils.net.Ip; @@ -46,18 +49,23 @@ public class LoadBalancingRules extends RuleApplier { public boolean accept(final NetworkTopologyVisitor visitor, final VirtualRouter router) throws ResourceUnavailableException { _router = router; + LoadBalancerDao loadBalancerDao = visitor.getVirtualNetworkApplianceFactory().getLoadBalancerDao(); // For load balancer we have to resend all lb rules for the network - final List<LoadBalancerVO> lbs = _loadBalancerDao.listByNetworkIdAndScheme(_network.getId(), Scheme.Public); + final List<LoadBalancerVO> lbs = loadBalancerDao.listByNetworkIdAndScheme(_network.getId(), Scheme.Public); // We are cleaning it before because all the rules have to be sent to // the router. _rules.clear(); + + LoadBalancingRulesManager lbMgr = visitor.getVirtualNetworkApplianceFactory().getLbMgr(); + NetworkModel networkModel = visitor.getVirtualNetworkApplianceFactory().getNetworkModel(); for (final LoadBalancerVO lb : lbs) { - final List<LbDestination> dstList = _lbMgr.getExistingDestinations(lb.getId()); - final List<LbStickinessPolicy> policyList = _lbMgr.getStickinessPolicies(lb.getId()); - final List<LbHealthCheckPolicy> hcPolicyList = _lbMgr.getHealthCheckPolicies(lb.getId()); - final LbSslCert sslCert = _lbMgr.getLbSslCert(lb.getId()); - final Ip sourceIp = _networkModel.getPublicIpAddress(lb.getSourceIpAddressId()).getAddress(); + + final List<LbDestination> dstList = lbMgr.getExistingDestinations(lb.getId()); + final List<LbStickinessPolicy> policyList = lbMgr.getStickinessPolicies(lb.getId()); + final List<LbHealthCheckPolicy> hcPolicyList = lbMgr.getHealthCheckPolicies(lb.getId()); + final LbSslCert sslCert = lbMgr.getLbSslCert(lb.getId()); + final Ip sourceIp = networkModel.getPublicIpAddress(lb.getSourceIpAddressId()).getAddress(); final LoadBalancingRule loadBalancing = new LoadBalancingRule(lb, dstList, policyList, hcPolicyList, sourceIp, sslCert, lb.getLbProtocol()); _rules.add(loadBalancing); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9f801d1f/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 c20d07e..121be90 100644 --- a/server/src/com/cloud/network/rules/NicPlugInOutRules.java +++ b/server/src/com/cloud/network/rules/NicPlugInOutRules.java @@ -34,16 +34,22 @@ import com.cloud.exception.InsufficientCapacityException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.IpAddress; import com.cloud.network.Network; +import com.cloud.network.NetworkModel; import com.cloud.network.Networks.BroadcastDomainType; import com.cloud.network.Networks.IsolationType; import com.cloud.network.PublicIpAddress; import com.cloud.network.router.VirtualRouter; +import com.cloud.network.vpc.VpcManager; import com.cloud.network.vpc.VpcVO; +import com.cloud.network.vpc.dao.VpcDao; import com.cloud.user.UserStatisticsVO; +import com.cloud.user.dao.UserStatisticsDao; import com.cloud.utils.Pair; import com.cloud.vm.Nic; import com.cloud.vm.NicProfile; import com.cloud.vm.NicVO; +import com.cloud.vm.VirtualMachineManager; +import com.cloud.vm.dao.NicDao; public class NicPlugInOutRules extends RuleApplier { @@ -62,17 +68,20 @@ public class NicPlugInOutRules extends RuleApplier { public boolean accept(final NetworkTopologyVisitor visitor, final VirtualRouter router) throws ResourceUnavailableException { _router = router; - Pair<Map<String, PublicIpAddress>, Map<String, PublicIpAddress>> nicsToChange = getNicsToChangeOnRouter(_ipAddresses); + Pair<Map<String, PublicIpAddress>, Map<String, PublicIpAddress>> nicsToChange = getNicsToChangeOnRouter(visitor); + Map<String, PublicIpAddress> nicsToPlug = nicsToChange.first(); Map<String, PublicIpAddress> nicsToUnplug = nicsToChange.second(); + NetworkModel networkModel = visitor.getVirtualNetworkApplianceFactory().getNetworkModel(); + VirtualMachineManager itMgr = visitor.getVirtualNetworkApplianceFactory().getItMgr(); // 1) Unplug the nics for (Entry<String, PublicIpAddress> entry : nicsToUnplug.entrySet()) { Network publicNtwk = null; try { - publicNtwk = _networkModel.getNetwork(entry.getValue().getNetworkId()); + publicNtwk = networkModel.getNetwork(entry.getValue().getNetworkId()); URI broadcastUri = BroadcastDomainType.Vlan.toUri(entry.getKey()); - _itMgr.removeVmFromNetwork(_router, publicNtwk, broadcastUri); + itMgr.removeVmFromNetwork(_router, publicNtwk, broadcastUri); } catch (ConcurrentOperationException e) { s_logger.warn("Failed to remove router " + _router + " from vlan " + entry.getKey() + " in public network " + publicNtwk + " due to ", e); return false; @@ -80,7 +89,8 @@ public class NicPlugInOutRules extends RuleApplier { } _netUsageCommands = new Commands(Command.OnError.Continue); - VpcVO vpc = _vpcDao.findById(_router.getVpcId()); + VpcDao vpcDao = visitor.getVirtualNetworkApplianceFactory().getVpcDao(); + VpcVO vpc = vpcDao.findById(_router.getVpcId()); // 2) Plug the nics for (String vlanTag : nicsToPlug.keySet()) { @@ -101,8 +111,8 @@ public class NicPlugInOutRules extends RuleApplier { NicProfile publicNic = null; Network publicNtwk = null; try { - publicNtwk = _networkModel.getNetwork(ip.getNetworkId()); - publicNic = _itMgr.addVmToNetwork(_router, publicNtwk, defaultNic); + publicNtwk = networkModel.getNetwork(ip.getNetworkId()); + publicNic = itMgr.addVmToNetwork(_router, publicNtwk, defaultNic); } catch (ConcurrentOperationException e) { s_logger.warn("Failed to add router " + _router + " to vlan " + vlanTag + " in public network " + publicNtwk + " due to ", e); } catch (InsufficientCapacityException e) { @@ -117,12 +127,14 @@ public class NicPlugInOutRules extends RuleApplier { // IPAssoc 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(), + + UserStatisticsDao userStatsDao = visitor.getVirtualNetworkApplianceFactory().getUserStatsDao(); + 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()); - _userStatsDao.persist(stats); + userStatsDao.persist(stats); } } @@ -139,24 +151,26 @@ public class NicPlugInOutRules extends RuleApplier { return _netUsageCommands; } - private Pair<Map<String, PublicIpAddress>, Map<String, PublicIpAddress>> getNicsToChangeOnRouter(final List<? extends PublicIpAddress> publicIps) { + private Pair<Map<String, PublicIpAddress>, Map<String, PublicIpAddress>> getNicsToChangeOnRouter(final NetworkTopologyVisitor visitor) { // 1) check which nics need to be plugged/unplugged and plug/unplug them final Map<String, PublicIpAddress> nicsToPlug = new HashMap<String, PublicIpAddress>(); final Map<String, PublicIpAddress> nicsToUnplug = new HashMap<String, PublicIpAddress>(); + VpcManager vpcMgr = visitor.getVirtualNetworkApplianceFactory().getVpcMgr(); + NicDao nicDao = visitor.getVirtualNetworkApplianceFactory().getNicDao(); // find out nics to unplug - for (PublicIpAddress ip : publicIps) { + for (PublicIpAddress ip : _ipAddresses) { long publicNtwkId = ip.getNetworkId(); // if ip is not associated to any network, and there are no firewall // rules, release it on the backend - if (!_vpcMgr.isIpAllocatedToVpc(ip)) { + 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()); + 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); @@ -165,20 +179,20 @@ public class NicPlugInOutRules extends RuleApplier { } // find out nics to plug - for (PublicIpAddress ip : publicIps) { + for (PublicIpAddress ip : _ipAddresses) { 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 (!_vpcMgr.isIpAllocatedToVpc(ip)) { + 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()); + Nic nic = nicDao.findByNetworkIdInstanceIdAndBroadcastUri(publicNtwkId, _router.getId(), broadcastUri.toString()); if (nic == null && nicsToPlug.get(ip.getVlanTag()) == null) { nicsToPlug.put(ip.getVlanTag(), ip); @@ -186,9 +200,9 @@ public class NicPlugInOutRules extends RuleApplier { } else { final PublicIpAddress nicToUnplug = nicsToUnplug.get(ip.getVlanTag()); if (nicToUnplug != null) { - NicVO nicVO = _nicDao.findByIp4AddressAndNetworkIdAndInstanceId(publicNtwkId, _router.getId(), nicToUnplug.getAddress().addr()); + NicVO nicVO = nicDao.findByIp4AddressAndNetworkIdAndInstanceId(publicNtwkId, _router.getId(), nicToUnplug.getAddress().addr()); nicVO.setIp4Address(ip.getAddress().addr()); - _nicDao.update(nicVO.getId(), nicVO); + nicDao.update(nicVO.getId(), nicVO); s_logger.debug("Updated the nic " + nicVO + " with the new ip address " + ip.getAddress().addr()); nicsToUnplug.remove(ip.getVlanTag()); } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9f801d1f/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 8395c10..6c46ab6 100644 --- a/server/src/com/cloud/network/rules/PasswordToRouterRules.java +++ b/server/src/com/cloud/network/rules/PasswordToRouterRules.java @@ -26,6 +26,8 @@ import com.cloud.vm.NicProfile; import com.cloud.vm.NicVO; import com.cloud.vm.UserVmVO; import com.cloud.vm.VirtualMachineProfile; +import com.cloud.vm.dao.NicDao; +import com.cloud.vm.dao.UserVmDao; public class PasswordToRouterRules extends RuleApplier { @@ -45,9 +47,11 @@ public class PasswordToRouterRules extends RuleApplier { public boolean accept(final NetworkTopologyVisitor visitor, final VirtualRouter router) throws ResourceUnavailableException { _router = router; - _userVmDao.loadDetails((UserVmVO)profile.getVirtualMachine()); + UserVmDao userVmDao = visitor.getVirtualNetworkApplianceFactory().getUserVmDao(); + userVmDao.loadDetails((UserVmVO) profile.getVirtualMachine()); // for basic zone, send vm data/password information only to the router in the same pod - nicVo = _nicDao.findById(nic.getId()); + NicDao nicDao = visitor.getVirtualNetworkApplianceFactory().getNicDao(); + nicVo = nicDao.findById(nic.getId()); return visitor.visit(this); } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9f801d1f/server/src/com/cloud/network/rules/PrivateGatewayRules.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/rules/PrivateGatewayRules.java b/server/src/com/cloud/network/rules/PrivateGatewayRules.java index a1e1c5c..476a617 100644 --- a/server/src/com/cloud/network/rules/PrivateGatewayRules.java +++ b/server/src/com/cloud/network/rules/PrivateGatewayRules.java @@ -23,10 +23,16 @@ import org.apache.log4j.Logger; import com.cloud.exception.ConcurrentOperationException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.Network; +import com.cloud.network.NetworkModel; +import com.cloud.network.dao.NetworkDao; +import com.cloud.network.router.NetworkHelper; +import com.cloud.network.router.NicProfileHelper; import com.cloud.network.router.VirtualRouter; +import com.cloud.network.vpc.NetworkACLManager; import com.cloud.network.vpc.PrivateGateway; import com.cloud.network.vpc.PrivateIpVO; import com.cloud.vm.NicProfile; +import com.cloud.vm.VirtualMachineManager; public class PrivateGatewayRules extends RuleApplier { @@ -48,14 +54,19 @@ public class PrivateGatewayRules extends RuleApplier { boolean result = false; try { - _network = _networkModel.getNetwork(_privateGateway.getNetworkId()); - NicProfile requested = _vpcNetworkHelper.createPrivateNicProfileForGateway(_privateGateway); + NetworkModel networkModel = visitor.getVirtualNetworkApplianceFactory().getNetworkModel(); + _network = networkModel.getNetwork(_privateGateway.getNetworkId()); - if (!_networkHelper.checkRouterVersion(_router)) { + NicProfileHelper nicProfileHelper = visitor.getVirtualNetworkApplianceFactory().getNicProfileHelper(); + NicProfile requested = nicProfileHelper.createPrivateNicProfileForGateway(_privateGateway); + + NetworkHelper networkHelper = visitor.getVirtualNetworkApplianceFactory().getNetworkHelper(); + if (!networkHelper.checkRouterVersion(_router)) { s_logger.warn("Router requires upgrade. Unable to send command to router: " + _router.getId()); return false; } - _nicProfile = _itMgr.addVmToNetwork(_router, _network, requested); + VirtualMachineManager itMgr = visitor.getVirtualNetworkApplianceFactory().getItMgr(); + _nicProfile = itMgr.addVmToNetwork(_router, _network, requested); // setup source nat if (_nicProfile != null) { @@ -89,32 +100,34 @@ public class PrivateGatewayRules extends RuleApplier { return _nicProfile; } - public PrivateIpVO retrivePrivateIP() { - PrivateIpVO ipVO = _privateIpDao.findByIpAndSourceNetworkId(_nicProfile.getNetworkId(), _nicProfile.getIp4Address()); + public PrivateIpVO retrivePrivateIP(final NetworkTopologyVisitor visitor) { + PrivateIpVO ipVO = visitor.getVirtualNetworkApplianceFactory().getPrivateIpDao().findByIpAndSourceNetworkId(_nicProfile.getNetworkId(), _nicProfile.getIp4Address()); return ipVO; } - public Network retrievePrivateNetwork() { + public Network retrievePrivateNetwork(final NetworkTopologyVisitor visitor) { // This network might be the same we have already as an instance in the // RuleApplier super class. // Just doing this here, but will double check is remove if it's not // needed. - Network network = _networkDao.findById(_nicProfile.getNetworkId()); + NetworkDao networkDao = visitor.getVirtualNetworkApplianceFactory().getNetworkDao(); + Network network = networkDao.findById(_nicProfile.getNetworkId()); return network; } protected boolean destroyPrivateGateway(final NetworkTopologyVisitor visitor) throws ConcurrentOperationException, ResourceUnavailableException { - if (!_networkModel.isVmPartOfNetwork(_router.getId(), _privateGateway.getNetworkId())) { + NetworkModel networkModel = visitor.getVirtualNetworkApplianceFactory().getNetworkModel(); + if (!networkModel.isVmPartOfNetwork(_router.getId(), _privateGateway.getNetworkId())) { s_logger.debug("Router doesn't have nic for gateway " + _privateGateway + " so no need to removed it"); return true; } - Network privateNetwork = _networkModel.getNetwork(_privateGateway.getNetworkId()); + Network privateNetwork = networkModel.getNetwork(_privateGateway.getNetworkId()); s_logger.debug("Releasing private ip for gateway " + _privateGateway + " from " + _router); - _nicProfile = _networkModel.getNicProfile(_router, privateNetwork.getId(), null); + _nicProfile = networkModel.getNicProfile(_router, privateNetwork.getId(), null); boolean result = visitor.visit(this); if (!result) { s_logger.warn("Failed to release private ip for gateway " + _privateGateway + " on router " + _router); @@ -122,13 +135,15 @@ public class PrivateGatewayRules extends RuleApplier { } // revoke network acl on the private gateway. - if (!_networkACLMgr.revokeACLItemsForPrivateGw(_privateGateway)) { + NetworkACLManager networkACLMgr = visitor.getVirtualNetworkApplianceFactory().getNetworkACLMgr(); + if (!networkACLMgr.revokeACLItemsForPrivateGw(_privateGateway)) { s_logger.debug("Failed to delete network acl items on " + _privateGateway + " from router " + _router); return false; } s_logger.debug("Removing router " + _router + " from private network " + privateNetwork + " as a part of delete private gateway"); - result = result && _itMgr.removeVmFromNetwork(_router, privateNetwork, null); + VirtualMachineManager itMgr = visitor.getVirtualNetworkApplianceFactory().getItMgr(); + result = result && itMgr.removeVmFromNetwork(_router, privateNetwork, null); s_logger.debug("Private gateawy " + _privateGateway + " is removed from router " + _router); return result; } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9f801d1f/server/src/com/cloud/network/rules/RuleApplier.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/rules/RuleApplier.java b/server/src/com/cloud/network/rules/RuleApplier.java index 4c399ed..cbeb27e 100644 --- a/server/src/com/cloud/network/rules/RuleApplier.java +++ b/server/src/com/cloud/network/rules/RuleApplier.java @@ -19,63 +19,19 @@ package com.cloud.network.rules; import org.apache.cloudstack.network.topology.NetworkTopologyVisitor; -import com.cloud.dc.dao.DataCenterDao; -import com.cloud.dc.dao.HostPodDao; -import com.cloud.dc.dao.VlanDao; import com.cloud.exception.ResourceUnavailableException; -import com.cloud.network.IpAddressManager; import com.cloud.network.Network; -import com.cloud.network.NetworkModel; -import com.cloud.network.dao.IPAddressDao; -import com.cloud.network.dao.LoadBalancerDao; -import com.cloud.network.dao.NetworkDao; -import com.cloud.network.lb.LoadBalancingRulesManager; -import com.cloud.network.router.NetworkHelper; -import com.cloud.network.router.NicProfileHelper; import com.cloud.network.router.VirtualRouter; -import com.cloud.network.vpc.NetworkACLManager; -import com.cloud.network.vpc.VpcManager; -import com.cloud.network.vpc.dao.PrivateIpDao; -import com.cloud.network.vpc.dao.VpcDao; -import com.cloud.storage.dao.VMTemplateDao; -import com.cloud.user.dao.UserStatisticsDao; -import com.cloud.vm.VirtualMachineManager; -import com.cloud.vm.dao.NicDao; -import com.cloud.vm.dao.NicIpAliasDao; -import com.cloud.vm.dao.UserVmDao; public abstract class RuleApplier { - protected NetworkModel _networkModel; - protected LoadBalancingRulesManager _lbMgr; - protected LoadBalancerDao _loadBalancerDao; - protected NicDao _nicDao; - protected DataCenterDao _dcDao; - protected UserVmDao _userVmDao; - protected VMTemplateDao _templateDao; - protected NetworkDao _networkDao; - protected UserStatisticsDao _userStatsDao; - protected VpcDao _vpcDao; - protected NicIpAliasDao _nicIpAliasDao; - protected HostPodDao _podDao; - protected VlanDao _vlanDao; - protected IPAddressDao _ipAddressDao; - protected PrivateIpDao _privateIpDao; - protected VpcManager _vpcMgr; - protected VirtualMachineManager _itMgr; - protected IpAddressManager _ipAddrMgr; - protected NetworkACLManager _networkACLMgr; protected Network _network; protected VirtualRouter _router; - protected NetworkHelper _networkHelper; - protected NicProfileHelper _nicProfileHelper; public RuleApplier(final Network network) { _network = network; } - public abstract boolean accept(NetworkTopologyVisitor visitor, VirtualRouter router) throws ResourceUnavailableException; - public Network getNetwork() { return _network; } @@ -83,4 +39,7 @@ public abstract class RuleApplier { public VirtualRouter getRouter() { return _router; } + + public abstract boolean accept(NetworkTopologyVisitor visitor, VirtualRouter router) throws ResourceUnavailableException; + } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9f801d1f/server/src/com/cloud/network/rules/SshKeyToRouterRules.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/rules/SshKeyToRouterRules.java b/server/src/com/cloud/network/rules/SshKeyToRouterRules.java index 4e4b8ba..9a924e1 100644 --- a/server/src/com/cloud/network/rules/SshKeyToRouterRules.java +++ b/server/src/com/cloud/network/rules/SshKeyToRouterRules.java @@ -23,10 +23,13 @@ import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.Network; import com.cloud.network.router.VirtualRouter; import com.cloud.storage.VMTemplateVO; +import com.cloud.storage.dao.VMTemplateDao; import com.cloud.vm.NicProfile; import com.cloud.vm.NicVO; import com.cloud.vm.UserVmVO; import com.cloud.vm.VirtualMachineProfile; +import com.cloud.vm.dao.NicDao; +import com.cloud.vm.dao.UserVmDao; public class SshKeyToRouterRules extends RuleApplier { @@ -49,12 +52,17 @@ public class SshKeyToRouterRules extends RuleApplier { @Override public boolean accept(final NetworkTopologyVisitor visitor, final VirtualRouter router) throws ResourceUnavailableException { _router = router; - _userVM = _userVmDao.findById(_profile.getVirtualMachine().getId()); - _userVmDao.loadDetails(_userVM); - _nicVo = _nicDao.findById(_nic.getId()); + UserVmDao userVmDao = visitor.getVirtualNetworkApplianceFactory().getUserVmDao(); + _userVM = userVmDao.findById(_profile.getVirtualMachine().getId()); + + userVmDao.loadDetails(_userVM); + + NicDao nicDao = visitor.getVirtualNetworkApplianceFactory().getNicDao(); + _nicVo = nicDao.findById(_nic.getId()); // for basic zone, send vm data/password information only to the router in the same pod - _template = _templateDao.findByIdIncludingRemoved(_profile.getTemplateId()); + VMTemplateDao templateDao = visitor.getVirtualNetworkApplianceFactory().getTemplateDao(); + _template = templateDao.findByIdIncludingRemoved(_profile.getTemplateId()); return visitor.visit(this); } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9f801d1f/server/src/com/cloud/network/rules/UserdataPwdRules.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/rules/UserdataPwdRules.java b/server/src/com/cloud/network/rules/UserdataPwdRules.java index 9d7ef15..62774d4 100644 --- a/server/src/com/cloud/network/rules/UserdataPwdRules.java +++ b/server/src/com/cloud/network/rules/UserdataPwdRules.java @@ -27,6 +27,8 @@ import com.cloud.vm.NicProfile; import com.cloud.vm.NicVO; import com.cloud.vm.UserVmVO; import com.cloud.vm.VirtualMachineProfile; +import com.cloud.vm.dao.NicDao; +import com.cloud.vm.dao.UserVmDao; public class UserdataPwdRules extends RuleApplier { @@ -49,11 +51,13 @@ public class UserdataPwdRules extends RuleApplier { public boolean accept(final NetworkTopologyVisitor visitor, final VirtualRouter router) throws ResourceUnavailableException { _router = router; - _userVM = _userVmDao.findById(_profile.getId()); - _userVmDao.loadDetails(_userVM); + UserVmDao userVmDao = visitor.getVirtualNetworkApplianceFactory().getUserVmDao(); + _userVM = userVmDao.findById(_profile.getId()); + userVmDao.loadDetails(_userVM); //for basic zone, send vm data/password information only to the router in the same pod - _nicVo = _nicDao.findById(_nic.getId()); + NicDao nicDao = visitor.getVirtualNetworkApplianceFactory().getNicDao(); + _nicVo = nicDao.findById(_nic.getId()); return visitor.visit(this); } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9f801d1f/server/src/com/cloud/network/rules/UserdataToRouterRules.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/rules/UserdataToRouterRules.java b/server/src/com/cloud/network/rules/UserdataToRouterRules.java index 477342d..e47dc7f 100644 --- a/server/src/com/cloud/network/rules/UserdataToRouterRules.java +++ b/server/src/com/cloud/network/rules/UserdataToRouterRules.java @@ -26,6 +26,8 @@ import com.cloud.vm.NicProfile; import com.cloud.vm.NicVO; import com.cloud.vm.UserVmVO; import com.cloud.vm.VirtualMachineProfile; +import com.cloud.vm.dao.NicDao; +import com.cloud.vm.dao.UserVmDao; public class UserdataToRouterRules extends RuleApplier { @@ -46,11 +48,13 @@ public class UserdataToRouterRules extends RuleApplier { public boolean accept(final NetworkTopologyVisitor visitor, final VirtualRouter router) throws ResourceUnavailableException { _router = router; - _userVM = _userVmDao.findById(_profile.getVirtualMachine().getId()); - _userVmDao.loadDetails(_userVM); + UserVmDao userVmDao = visitor.getVirtualNetworkApplianceFactory().getUserVmDao(); + _userVM = userVmDao.findById(_profile.getVirtualMachine().getId()); + userVmDao.loadDetails(_userVM); // for basic zone, send vm data/password information only to the router in the same pod - _nicVo = _nicDao.findById(_nic.getId()); + NicDao nicDao = visitor.getVirtualNetworkApplianceFactory().getNicDao(); + _nicVo = nicDao.findById(_nic.getId()); return visitor.visit(this); } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9f801d1f/server/src/com/cloud/network/rules/VirtualNetworkApplianceFactory.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/rules/VirtualNetworkApplianceFactory.java b/server/src/com/cloud/network/rules/VirtualNetworkApplianceFactory.java index 5a551f0..e775fb1 100644 --- a/server/src/com/cloud/network/rules/VirtualNetworkApplianceFactory.java +++ b/server/src/com/cloud/network/rules/VirtualNetworkApplianceFactory.java @@ -16,39 +16,26 @@ // under the License. package com.cloud.network.rules; -import java.util.List; - import javax.inject.Inject; import com.cloud.dc.dao.DataCenterDao; import com.cloud.dc.dao.HostPodDao; import com.cloud.dc.dao.VlanDao; -import com.cloud.deploy.DeployDestination; import com.cloud.network.IpAddressManager; -import com.cloud.network.Network; import com.cloud.network.NetworkModel; -import com.cloud.network.PublicIpAddress; -import com.cloud.network.RemoteAccessVpn; -import com.cloud.network.VpnUser; import com.cloud.network.dao.IPAddressDao; import com.cloud.network.dao.LoadBalancerDao; import com.cloud.network.dao.NetworkDao; -import com.cloud.network.lb.LoadBalancingRule; import com.cloud.network.lb.LoadBalancingRulesManager; import com.cloud.network.router.NetworkHelper; import com.cloud.network.router.NicProfileHelper; -import com.cloud.network.vpc.NetworkACLItem; import com.cloud.network.vpc.NetworkACLManager; -import com.cloud.network.vpc.PrivateGateway; -import com.cloud.network.vpc.StaticRouteProfile; import com.cloud.network.vpc.VpcManager; import com.cloud.network.vpc.dao.PrivateIpDao; import com.cloud.network.vpc.dao.VpcDao; import com.cloud.storage.dao.VMTemplateDao; import com.cloud.user.dao.UserStatisticsDao; -import com.cloud.vm.NicProfile; import com.cloud.vm.VirtualMachineManager; -import com.cloud.vm.VirtualMachineProfile; import com.cloud.vm.dao.NicDao; import com.cloud.vm.dao.NicIpAliasDao; import com.cloud.vm.dao.UserVmDao; @@ -98,196 +85,87 @@ public class VirtualNetworkApplianceFactory { @Inject private NicProfileHelper _nicProfileHelper; - public LoadBalancingRules createLoadBalancingRules(final Network network, final List<LoadBalancingRule> rules) { - LoadBalancingRules lbRules = new LoadBalancingRules(network, rules); - - initBeans(lbRules); - - return lbRules; + public NetworkModel getNetworkModel() { + return _networkModel; } - public FirewallRules createFirewallRules(final Network network, final List<? extends FirewallRule> rules) { - FirewallRules fwRules = new FirewallRules(network, rules); - - initBeans(fwRules); - - fwRules._networkDao = _networkDao; - - return fwRules; + public LoadBalancingRulesManager getLbMgr() { + return _lbMgr; } - public StaticNatRules createStaticNatRules(final Network network, final List<? extends StaticNat> rules) { - StaticNatRules natRules = new StaticNatRules(network, rules); - - initBeans(natRules); - - return natRules; + public LoadBalancerDao getLoadBalancerDao() { + return _loadBalancerDao; } - private void initBeans(final RuleApplier applier) { - applier._networkModel = _networkModel; - applier._dcDao = _dcDao; - applier._lbMgr = _lbMgr; - applier._loadBalancerDao = _loadBalancerDao; - applier._nicDao = _nicDao; - applier._itMgr = _itMgr; - applier._networkHelper = _networkHelper; + public NicDao getNicDao() { + return _nicDao; } - public IpAssociationRules createIpAssociationRules(final Network network, final List<? extends PublicIpAddress> ipAddresses) { - IpAssociationRules ipAssociationRules = new IpAssociationRules(network, ipAddresses); - - initBeans(ipAssociationRules); - - ipAssociationRules._networkDao = _networkDao; - - return ipAssociationRules; + public VirtualMachineManager getItMgr() { + return _itMgr; } - public VpcIpAssociationRules createVpcIpAssociationRules(final Network network, final List<? extends PublicIpAddress> ipAddresses) { - VpcIpAssociationRules ipAssociationRules = new VpcIpAssociationRules(network, ipAddresses); - - initBeans(ipAssociationRules); - - ipAssociationRules._networkDao = _networkDao; - - return ipAssociationRules; + public DataCenterDao getDcDao() { + return _dcDao; } - public VpnRules createVpnRules(final Network network, final List<? extends VpnUser> users) { - VpnRules vpnRules = new VpnRules(network, users); - - initBeans(vpnRules); - - return vpnRules; + public UserVmDao getUserVmDao() { + return _userVmDao; } - public PasswordToRouterRules createPasswordToRouterRules(final Network network, final NicProfile nic, final VirtualMachineProfile profile) { - PasswordToRouterRules routerRules = new PasswordToRouterRules(network, nic, profile); - - initBeans(routerRules); - - routerRules._userVmDao = _userVmDao; - - return routerRules; + public UserStatisticsDao getUserStatsDao() { + return _userStatsDao; } - public SshKeyToRouterRules createSshKeyToRouterRules(final Network network, final NicProfile nic, final VirtualMachineProfile profile, final String sshKey) { - SshKeyToRouterRules sshKeyToRouterRules = new SshKeyToRouterRules(network, nic, profile, sshKey); - - initBeans(sshKeyToRouterRules); - - sshKeyToRouterRules._userVmDao = _userVmDao; - sshKeyToRouterRules._templateDao = _templateDao; - - return sshKeyToRouterRules; + public VpcDao getVpcDao() { + return _vpcDao; } - public UserdataToRouterRules createUserdataToRouterRules(final Network network, final NicProfile nic, final VirtualMachineProfile profile) { - UserdataToRouterRules userdataRules = new UserdataToRouterRules(network, nic, profile); - - initBeans(userdataRules); - - userdataRules._userVmDao = _userVmDao; - userdataRules._templateDao = _templateDao; - - return userdataRules; + public VpcManager getVpcMgr() { + return _vpcMgr; } - public UserdataPwdRules createUserdataPwdRules(final Network network, final NicProfile nic, final VirtualMachineProfile profile, final DeployDestination destination) { - UserdataPwdRules userdataRules = new UserdataPwdRules(network, nic, profile, destination); - - initBeans(userdataRules); - - userdataRules._userVmDao = _userVmDao; - userdataRules._templateDao = _templateDao; - - return userdataRules; + public VMTemplateDao getTemplateDao() { + return _templateDao; } - public DhcpEntryRules createDhcpEntryRules(final Network network, final NicProfile nic, final VirtualMachineProfile profile, final DeployDestination destination) { - DhcpEntryRules dhcpRules = new DhcpEntryRules(network, nic, profile, destination); - - initBeans(dhcpRules); - - dhcpRules._userVmDao = _userVmDao; - dhcpRules._networkDao = _networkDao; - - return dhcpRules; + public NetworkDao getNetworkDao() { + return _networkDao; } - public NicPlugInOutRules createNicPluInOutRules(final Network network, final List<? extends PublicIpAddress> ipAddresses) { - NicPlugInOutRules nicPlug = new NicPlugInOutRules(network, ipAddresses); - - initBeans(nicPlug); - - nicPlug._vpcDao = _vpcDao; - nicPlug._userStatsDao = _userStatsDao; - nicPlug._vpcMgr = _vpcMgr; - - return nicPlug; + public NicIpAliasDao getNicIpAliasDao() { + return _nicIpAliasDao; } - public NetworkAclsRules createNetworkAclRules(final Network network, final List<? extends NetworkACLItem> rules, final boolean isPrivateGateway) { - NetworkAclsRules networkAclsRules = new NetworkAclsRules(network, rules, isPrivateGateway); - - initBeans(networkAclsRules); - - return networkAclsRules; + public HostPodDao getPodDao() { + return _podDao; } - public DhcpSubNetRules createDhcpSubNetRules(final Network network, final NicProfile nic, final VirtualMachineProfile profile) { - DhcpSubNetRules subNetRules = new DhcpSubNetRules(network, nic, profile); - - initBeans(subNetRules); - - subNetRules._vpcDao = _vpcDao; - subNetRules._userVmDao = _userVmDao; - subNetRules._podDao = _podDao; - subNetRules._vlanDao = _vlanDao; - subNetRules._nicIpAliasDao = _nicIpAliasDao; - subNetRules._ipAddrMgr = _ipAddrMgr; - subNetRules._ipAddressDao = _ipAddressDao; - - return subNetRules; + public VlanDao getVlanDao() { + return _vlanDao; } - public DhcpPvlanRules createDhcpPvlanRules(final boolean isAddPvlan, final NicProfile nic) { - DhcpPvlanRules pvlanRules = new DhcpPvlanRules(isAddPvlan, nic); - - initBeans(pvlanRules); - - pvlanRules._networkDao = _networkDao; - - return pvlanRules; + public IPAddressDao getIpAddressDao() { + return _ipAddressDao; } - public StaticRoutesRules createStaticRoutesRules(final List<StaticRouteProfile> staticRoutes) { - StaticRoutesRules routesRules = new StaticRoutesRules(staticRoutes); - initBeans(routesRules); - - return routesRules; + public PrivateIpDao getPrivateIpDao() { + return _privateIpDao; } - public AdvancedVpnRules createAdvancedVpnRules(final RemoteAccessVpn remoteAccessVpn, final List<? extends VpnUser> users) { - AdvancedVpnRules vpnRules = new AdvancedVpnRules(remoteAccessVpn, users); - - initBeans(vpnRules); - vpnRules._vpcDao = _vpcDao; - - return vpnRules; + public IpAddressManager getIpAddrMgr() { + return _ipAddrMgr; } - public PrivateGatewayRules createPrivateGatewayRules(final PrivateGateway gateway) { - PrivateGatewayRules gwRules = new PrivateGatewayRules(gateway); - - initBeans(gwRules); + public NetworkACLManager getNetworkACLMgr() { + return _networkACLMgr; + } - gwRules._privateIpDao = _privateIpDao; - gwRules._networkACLMgr = _networkACLMgr; - gwRules._nicProfileHelper = _nicProfileHelper; - gwRules._networkDao = _networkDao; + public NetworkHelper getNetworkHelper() { + return _networkHelper; + } - return gwRules; + public NicProfileHelper getNicProfileHelper() { + return _nicProfileHelper; } -} +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9f801d1f/server/src/com/cloud/network/rules/VpcIpAssociationRules.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/rules/VpcIpAssociationRules.java b/server/src/com/cloud/network/rules/VpcIpAssociationRules.java index bd5e6da..4f4a440 100644 --- a/server/src/com/cloud/network/rules/VpcIpAssociationRules.java +++ b/server/src/com/cloud/network/rules/VpcIpAssociationRules.java @@ -33,6 +33,7 @@ import com.cloud.network.PublicIpAddress; import com.cloud.network.router.VirtualRouter; import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.vm.Nic; +import com.cloud.vm.dao.NicDao; public class VpcIpAssociationRules extends RuleApplier { @@ -56,9 +57,10 @@ public class VpcIpAssociationRules extends RuleApplier { _vlanMacAddress = new HashMap<String, String>(); _ipsToSend = new ArrayList<PublicIpAddress>(); + NicDao nicDao = visitor.getVirtualNetworkApplianceFactory().getNicDao(); for (PublicIpAddress ipAddr : _ipAddresses) { String broadcastURI = BroadcastDomainType.Vlan.toUri(ipAddr.getVlanTag()).toString(); - Nic nic = _nicDao.findByNetworkIdInstanceIdAndBroadcastUri(ipAddr.getNetworkId(), _router.getId(), broadcastURI); + Nic nic = nicDao.findByNetworkIdInstanceIdAndBroadcastUri(ipAddr.getNetworkId(), _router.getId(), broadcastURI); String macAddress = null; if (nic == null) { http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9f801d1f/server/src/org/apache/cloudstack/network/topology/AdvancedNetworkTopology.java ---------------------------------------------------------------------- diff --git a/server/src/org/apache/cloudstack/network/topology/AdvancedNetworkTopology.java b/server/src/org/apache/cloudstack/network/topology/AdvancedNetworkTopology.java index 053de7a..b9e3ad6 100644 --- a/server/src/org/apache/cloudstack/network/topology/AdvancedNetworkTopology.java +++ b/server/src/org/apache/cloudstack/network/topology/AdvancedNetworkTopology.java @@ -71,7 +71,7 @@ public class AdvancedNetworkTopology extends BasicNetworkTopology { s_logger.debug("APPLYING ADVANCED VPN USERS RULES"); - AdvancedVpnRules routesRules = _virtualNetworkApplianceFactory.createAdvancedVpnRules(remoteAccessVpn, users); + AdvancedVpnRules routesRules = new AdvancedVpnRules(remoteAccessVpn, users); boolean agentResult = routesRules.accept(_advancedVisitor, router); @@ -95,7 +95,7 @@ public class AdvancedNetworkTopology extends BasicNetworkTopology { return true; } - StaticRoutesRules routesRules = _virtualNetworkApplianceFactory.createStaticRoutesRules(staticRoutes); + StaticRoutesRules routesRules = new StaticRoutesRules(staticRoutes); boolean result = true; for (VirtualRouter router : routers) { @@ -124,7 +124,7 @@ public class AdvancedNetworkTopology extends BasicNetworkTopology { return false; } - DhcpPvlanRules pvlanRules = _virtualNetworkApplianceFactory.createDhcpPvlanRules(isAddPvlan, nic); + DhcpPvlanRules pvlanRules = new DhcpPvlanRules(isAddPvlan, nic); return pvlanRules.accept(_advancedVisitor, router); } @@ -142,7 +142,7 @@ public class AdvancedNetworkTopology extends BasicNetworkTopology { throw new ResourceUnavailableException("Unable to assign ip addresses, domR is not in right state " + router.getState(), DataCenter.class, network.getDataCenterId()); } - DhcpSubNetRules subNetRules = _virtualNetworkApplianceFactory.createDhcpSubNetRules(network, nic, profile); + DhcpSubNetRules subNetRules = new DhcpSubNetRules(network, nic, profile); return subNetRules.accept(_advancedVisitor, router); } @@ -151,7 +151,7 @@ public class AdvancedNetworkTopology extends BasicNetworkTopology { public boolean setupPrivateGateway(final PrivateGateway gateway, final VirtualRouter router) throws ConcurrentOperationException, ResourceUnavailableException { s_logger.debug("SETUP PRIVATE GATEWAY RULES"); - PrivateGatewayRules routesRules = _virtualNetworkApplianceFactory.createPrivateGatewayRules(gateway); + PrivateGatewayRules routesRules = new PrivateGatewayRules(gateway); return routesRules.accept(_advancedVisitor, router); } @@ -167,7 +167,7 @@ public class AdvancedNetworkTopology extends BasicNetworkTopology { final boolean failWhenDisconnect = false; final Long podId = null; - UserdataPwdRules pwdRules = _virtualNetworkApplianceFactory.createUserdataPwdRules(network, nic, profile, dest); + UserdataPwdRules pwdRules = new UserdataPwdRules(network, nic, profile, dest); return applyRules(network, routers, typeString, isPodLevelException, podId, failWhenDisconnect, new RuleApplierWrapper<RuleApplier>(pwdRules)); } @@ -183,7 +183,7 @@ public class AdvancedNetworkTopology extends BasicNetworkTopology { final boolean isPodLevelException = false; final boolean failWhenDisconnect = false; - DhcpEntryRules dhcpRules = _virtualNetworkApplianceFactory.createDhcpEntryRules(network, nic, profile, dest); + DhcpEntryRules dhcpRules = new DhcpEntryRules(network, nic, profile, dest); return applyRules(network, routers, typeString, isPodLevelException, podId, failWhenDisconnect, new RuleApplierWrapper<RuleApplier>(dhcpRules)); } @@ -211,10 +211,10 @@ public class AdvancedNetworkTopology extends BasicNetworkTopology { final boolean failWhenDisconnect = false; final Long podId = null; - NicPlugInOutRules nicPlugInOutRules = _virtualNetworkApplianceFactory.createNicPluInOutRules(network, ipAddresses); + NicPlugInOutRules nicPlugInOutRules = new NicPlugInOutRules(network, ipAddresses); nicPlugInOutRules.accept(_advancedVisitor, router); - VpcIpAssociationRules ipAssociationRules = _virtualNetworkApplianceFactory.createVpcIpAssociationRules(network, ipAddresses); + VpcIpAssociationRules ipAssociationRules = new VpcIpAssociationRules(network, ipAddresses); boolean result = applyRules(network, routers, typeString, isPodLevelException, podId, failWhenDisconnect, new RuleApplierWrapper<RuleApplier>(ipAssociationRules)); if (result) { @@ -240,7 +240,7 @@ public class AdvancedNetworkTopology extends BasicNetworkTopology { final boolean failWhenDisconnect = false; final Long podId = null; - NetworkAclsRules aclsRules = _virtualNetworkApplianceFactory.createNetworkAclRules(network, rules, isPrivateGateway); + NetworkAclsRules aclsRules = new NetworkAclsRules(network, rules, isPrivateGateway); return applyRules(network, routers, typeString, isPodLevelException, podId, failWhenDisconnect, new RuleApplierWrapper<RuleApplier>(aclsRules)); } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9f801d1f/server/src/org/apache/cloudstack/network/topology/AdvancedNetworkVisitor.java ---------------------------------------------------------------------- diff --git a/server/src/org/apache/cloudstack/network/topology/AdvancedNetworkVisitor.java b/server/src/org/apache/cloudstack/network/topology/AdvancedNetworkVisitor.java index 7d08813..0e265a3 100644 --- a/server/src/org/apache/cloudstack/network/topology/AdvancedNetworkVisitor.java +++ b/server/src/org/apache/cloudstack/network/topology/AdvancedNetworkVisitor.java @@ -137,8 +137,8 @@ public class AdvancedNetworkVisitor extends BasicNetworkVisitor { if (router.getState() == State.Running) { - PrivateIpVO ipVO = privateGW.retrivePrivateIP(); - Network network = privateGW.retrievePrivateNetwork(); + PrivateIpVO ipVO = privateGW.retrivePrivateIP(this); + Network network = privateGW.retrievePrivateNetwork(this); String netmask = NetUtils.getCidrNetmask(network.getCidr()); PrivateIpAddress ip = new PrivateIpAddress(ipVO, network.getBroadcastUri().toString(), network.getGateway(), netmask, nicProfile.getMacAddress()); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9f801d1f/server/src/org/apache/cloudstack/network/topology/BasicNetworkTopology.java ---------------------------------------------------------------------- diff --git a/server/src/org/apache/cloudstack/network/topology/BasicNetworkTopology.java b/server/src/org/apache/cloudstack/network/topology/BasicNetworkTopology.java index 8560d36..d35e7f3 100644 --- a/server/src/org/apache/cloudstack/network/topology/BasicNetworkTopology.java +++ b/server/src/org/apache/cloudstack/network/topology/BasicNetworkTopology.java @@ -58,7 +58,6 @@ import com.cloud.network.rules.StaticNat; import com.cloud.network.rules.StaticNatRules; import com.cloud.network.rules.UserdataPwdRules; import com.cloud.network.rules.UserdataToRouterRules; -import com.cloud.network.rules.VirtualNetworkApplianceFactory; import com.cloud.network.rules.VpnRules; import com.cloud.network.vpc.NetworkACLItem; import com.cloud.network.vpc.PrivateGateway; @@ -77,9 +76,6 @@ public class BasicNetworkTopology implements NetworkTopology { private static final Logger s_logger = Logger.getLogger(BasicNetworkTopology.class); - @Inject - protected VirtualNetworkApplianceFactory _virtualNetworkApplianceFactory; - @Autowired @Qualifier("basicNetworkVisitor") protected BasicNetworkVisitor _basicVisitor; @@ -160,7 +156,7 @@ public class BasicNetworkTopology implements NetworkTopology { final boolean failWhenDisconnect = false; - DhcpEntryRules dhcpRules = _virtualNetworkApplianceFactory.createDhcpEntryRules(network, nic, profile, dest); + DhcpEntryRules dhcpRules = new DhcpEntryRules(network, nic, profile, dest); return applyRules(network, routers, typeString, isPodLevelException, podId, failWhenDisconnect, new RuleApplierWrapper<RuleApplier>(dhcpRules)); } @@ -182,7 +178,7 @@ public class BasicNetworkTopology implements NetworkTopology { final boolean failWhenDisconnect = false; - UserdataPwdRules pwdRules = _virtualNetworkApplianceFactory.createUserdataPwdRules(network, nic, profile, dest); + UserdataPwdRules pwdRules = new UserdataPwdRules(network, nic, profile, dest); return applyRules(network, routers, typeString, isPodLevelException, podId, failWhenDisconnect, new RuleApplierWrapper<RuleApplier>(pwdRules)); } @@ -203,7 +199,7 @@ public class BasicNetworkTopology implements NetworkTopology { final boolean failWhenDisconnect = false; final Long podId = null; - LoadBalancingRules loadBalancingRules = _virtualNetworkApplianceFactory.createLoadBalancingRules(network, rules); + LoadBalancingRules loadBalancingRules = new LoadBalancingRules(network, rules); return applyRules(network, routers, typeString, isPodLevelException, podId, failWhenDisconnect, new RuleApplierWrapper<RuleApplier>(loadBalancingRules)); } @@ -223,7 +219,7 @@ public class BasicNetworkTopology implements NetworkTopology { final boolean failWhenDisconnect = false; final Long podId = null; - FirewallRules firewallRules = _virtualNetworkApplianceFactory.createFirewallRules(network, rules); + FirewallRules firewallRules = new FirewallRules(network, rules); return applyRules(network, routers, typeString, isPodLevelException, podId, failWhenDisconnect, new RuleApplierWrapper<RuleApplier>(firewallRules)); } @@ -242,7 +238,7 @@ public class BasicNetworkTopology implements NetworkTopology { final boolean failWhenDisconnect = false; final Long podId = null; - StaticNatRules natRules = _virtualNetworkApplianceFactory.createStaticNatRules(network, rules); + StaticNatRules natRules = new StaticNatRules(network, rules); return applyRules(network, routers, typeString, isPodLevelException, podId, failWhenDisconnect, new RuleApplierWrapper<RuleApplier>(natRules)); } @@ -262,7 +258,7 @@ public class BasicNetworkTopology implements NetworkTopology { final boolean failWhenDisconnect = false; final Long podId = null; - IpAssociationRules ipAddresses = _virtualNetworkApplianceFactory.createIpAssociationRules(network, ipAddress); + IpAssociationRules ipAddresses = new IpAssociationRules(network, ipAddress); return applyRules(network, routers, typeString, isPodLevelException, podId, failWhenDisconnect, new RuleApplierWrapper<RuleApplier>(ipAddresses)); } @@ -276,6 +272,7 @@ public class BasicNetworkTopology implements NetworkTopology { s_logger.debug("APPLYING VPN RULES"); + BasicVpnRules vpnRules = new BasicVpnRules(network, users); boolean agentResults = true; for (final DomainRouterVO router : routers) { @@ -319,7 +316,7 @@ public class BasicNetworkTopology implements NetworkTopology { final boolean failWhenDisconnect = false; final Long podId = null; - PasswordToRouterRules routerRules = _virtualNetworkApplianceFactory.createPasswordToRouterRules(network, nic, profile); + PasswordToRouterRules routerRules = new PasswordToRouterRules(network, nic, profile); return applyRules(network, routers, typeString, isPodLevelException, podId, failWhenDisconnect, new RuleApplierWrapper<RuleApplier>(routerRules)); } @@ -334,7 +331,7 @@ public class BasicNetworkTopology implements NetworkTopology { final boolean failWhenDisconnect = false; final Long podId = null; - SshKeyToRouterRules keyToRouterRules = _virtualNetworkApplianceFactory.createSshKeyToRouterRules(network, nic, profile, sshPublicKey); + SshKeyToRouterRules keyToRouterRules = new SshKeyToRouterRules(network, nic, profile, sshPublicKey); return applyRules(network, routers, typeString, isPodLevelException, podId, failWhenDisconnect, new RuleApplierWrapper<RuleApplier>(keyToRouterRules)); } @@ -349,7 +346,7 @@ public class BasicNetworkTopology implements NetworkTopology { final boolean failWhenDisconnect = false; final Long podId = null; - UserdataToRouterRules userdataToRouterRules = _virtualNetworkApplianceFactory.createUserdataToRouterRules(network, nic, profile); + UserdataToRouterRules userdataToRouterRules = new UserdataToRouterRules(network, nic, profile); return applyRules(network, routers, typeString, isPodLevelException, podId, failWhenDisconnect, new RuleApplierWrapper<RuleApplier>(userdataToRouterRules)); } @@ -420,7 +417,8 @@ public class BasicNetworkTopology implements NetworkTopology { if (!connectedRouters.isEmpty()) { // Shouldn't we include this check inside the method? if (!isZoneBasic && !disconnectedRouters.isEmpty() && disconnectedRouters.get(0).getIsRedundantRouter()) { - // These disconnected redundant virtual routers are out of sync now, stop them for synchronization + // These disconnected redundant virtual routers are out of sync + // now, stop them for synchronization _networkHelper.handleSingleWorkingRedundantRouter(connectedRouters, disconnectedRouters, msg); } } else if (!disconnectedRouters.isEmpty()) { http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9f801d1f/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 a3ef1ee..db0b6e5 100644 --- a/server/src/org/apache/cloudstack/network/topology/BasicNetworkVisitor.java +++ b/server/src/org/apache/cloudstack/network/topology/BasicNetworkVisitor.java @@ -54,6 +54,7 @@ import com.cloud.network.rules.StaticNatRules; import com.cloud.network.rules.StaticRoutesRules; import com.cloud.network.rules.UserdataPwdRules; import com.cloud.network.rules.UserdataToRouterRules; +import com.cloud.network.rules.VirtualNetworkApplianceFactory; import com.cloud.network.rules.VpcIpAssociationRules; import com.cloud.storage.VMTemplateVO; import com.cloud.utils.exception.CloudRuntimeException; @@ -75,9 +76,17 @@ public class BasicNetworkVisitor extends NetworkTopologyVisitor { protected NetworkHelper _networkGeneralHelper; @Inject + protected VirtualNetworkApplianceFactory _virtualNetworkApplianceFactory; + + @Inject protected CommandSetupHelper _commandSetupHelper; @Override + public VirtualNetworkApplianceFactory getVirtualNetworkApplianceFactory() { + return _virtualNetworkApplianceFactory; + } + + @Override public boolean visit(final StaticNatRules nat) throws ResourceUnavailableException { final Network network = nat.getNetwork(); final VirtualRouter router = nat.getRouter(); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9f801d1f/server/src/org/apache/cloudstack/network/topology/NetworkTopologyVisitor.java ---------------------------------------------------------------------- diff --git a/server/src/org/apache/cloudstack/network/topology/NetworkTopologyVisitor.java b/server/src/org/apache/cloudstack/network/topology/NetworkTopologyVisitor.java index c4f3af5..621ec8a 100644 --- a/server/src/org/apache/cloudstack/network/topology/NetworkTopologyVisitor.java +++ b/server/src/org/apache/cloudstack/network/topology/NetworkTopologyVisitor.java @@ -32,16 +32,13 @@ import com.cloud.network.rules.StaticNatRules; import com.cloud.network.rules.StaticRoutesRules; import com.cloud.network.rules.UserdataPwdRules; import com.cloud.network.rules.UserdataToRouterRules; +import com.cloud.network.rules.VirtualNetworkApplianceFactory; import com.cloud.network.rules.VpcIpAssociationRules; import com.cloud.network.rules.VpnRules; public abstract class NetworkTopologyVisitor { - protected final NetworkTopology networkTopology; - - public NetworkTopologyVisitor(final NetworkTopology networkTopology) { - this.networkTopology = networkTopology; - } + public abstract VirtualNetworkApplianceFactory getVirtualNetworkApplianceFactory(); public abstract boolean visit(StaticNatRules nat) throws ResourceUnavailableException; @@ -74,5 +71,6 @@ public abstract class NetworkTopologyVisitor { public abstract boolean visit(DhcpSubNetRules subnet) throws ResourceUnavailableException; public abstract boolean visit(NicPlugInOutRules nicPlugInOutRules) throws ResourceUnavailableException; + public abstract boolean visit(StaticRoutesRules staticRoutesRules) throws ResourceUnavailableException; } \ No newline at end of file