mirror of https://github.com/apache/cloudstack.git
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
This commit is contained in:
parent
60eea3bb1a
commit
9f801d1f3a
|
|
@ -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");
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
|
||||
|
|
|
|||
|
|
@ -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");
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
gwRules._privateIpDao = _privateIpDao;
|
||||
gwRules._networkACLMgr = _networkACLMgr;
|
||||
gwRules._nicProfileHelper = _nicProfileHelper;
|
||||
gwRules._networkDao = _networkDao;
|
||||
|
||||
return gwRules;
|
||||
public NetworkACLManager getNetworkACLMgr() {
|
||||
return _networkACLMgr;
|
||||
}
|
||||
}
|
||||
|
||||
public NetworkHelper getNetworkHelper() {
|
||||
return _networkHelper;
|
||||
}
|
||||
|
||||
public NicProfileHelper getNicProfileHelper() {
|
||||
return _nicProfileHelper;
|
||||
}
|
||||
}
|
||||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
|
|
|
|||
|
|
@ -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()) {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
@ -74,9 +75,17 @@ public class BasicNetworkVisitor extends NetworkTopologyVisitor {
|
|||
@Inject
|
||||
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();
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
Loading…
Reference in New Issue