mirror of https://github.com/apache/cloudstack.git
CS-15534: Mark VPN connection as Disconnected when rebootRouter
This commit is contained in:
parent
6e571d28df
commit
4dddd76e95
|
|
@ -39,8 +39,6 @@ import com.cloud.network.Site2SiteVpnConnection;
|
|||
import com.cloud.network.Site2SiteVpnGateway;
|
||||
import com.cloud.network.VirtualRouterProvider.VirtualRouterProviderType;
|
||||
import com.cloud.network.dao.IPAddressDao;
|
||||
import com.cloud.network.dao.Site2SiteCustomerGatewayDao;
|
||||
import com.cloud.network.dao.Site2SiteVpnConnectionDao;
|
||||
import com.cloud.network.dao.Site2SiteVpnGatewayDao;
|
||||
import com.cloud.network.router.VirtualRouter;
|
||||
import com.cloud.network.router.VirtualRouter.Role;
|
||||
|
|
@ -74,15 +72,10 @@ public class VpcVirtualRouterElement extends VirtualRouterElement implements Vpc
|
|||
@Inject
|
||||
VpcVirtualNetworkApplianceManager _vpcRouterMgr;
|
||||
@Inject
|
||||
Site2SiteCustomerGatewayDao _customerGatewayDao;
|
||||
@Inject
|
||||
Site2SiteVpnGatewayDao _vpnGatewayDao;
|
||||
@Inject
|
||||
Site2SiteVpnConnectionDao _vpnConnectionDao;
|
||||
@Inject
|
||||
IPAddressDao _ipAddressDao;
|
||||
|
||||
|
||||
private static final Map<Service, Map<Capability, String>> capabilities = setCapabilities();
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@ import com.cloud.agent.api.PlugNicAnswer;
|
|||
import com.cloud.agent.api.PlugNicCommand;
|
||||
import com.cloud.agent.api.SetupGuestNetworkAnswer;
|
||||
import com.cloud.agent.api.SetupGuestNetworkCommand;
|
||||
import com.cloud.agent.api.StopAnswer;
|
||||
import com.cloud.agent.api.UnPlugNicAnswer;
|
||||
import com.cloud.agent.api.UnPlugNicCommand;
|
||||
import com.cloud.agent.api.check.CheckSshCommand;
|
||||
|
|
@ -73,6 +74,7 @@ import com.cloud.network.PhysicalNetworkServiceProvider;
|
|||
import com.cloud.network.PublicIpAddress;
|
||||
import com.cloud.network.Site2SiteCustomerGatewayVO;
|
||||
import com.cloud.network.Site2SiteVpnConnection;
|
||||
import com.cloud.network.Site2SiteVpnConnectionVO;
|
||||
import com.cloud.network.Site2SiteVpnGatewayVO;
|
||||
import com.cloud.network.VirtualRouterProvider;
|
||||
import com.cloud.network.VirtualRouterProvider.VirtualRouterProviderType;
|
||||
|
|
@ -81,6 +83,7 @@ import com.cloud.network.addr.PublicIp;
|
|||
import com.cloud.network.dao.FirewallRulesDao;
|
||||
import com.cloud.network.dao.IPAddressDao;
|
||||
import com.cloud.network.dao.PhysicalNetworkDao;
|
||||
import com.cloud.network.dao.Site2SiteVpnConnectionDao;
|
||||
import com.cloud.network.dao.Site2SiteVpnGatewayDao;
|
||||
import com.cloud.network.rules.FirewallRule;
|
||||
import com.cloud.network.vpc.NetworkACLManager;
|
||||
|
|
@ -96,6 +99,7 @@ import com.cloud.network.vpc.Dao.PrivateIpDao;
|
|||
import com.cloud.network.vpc.Dao.StaticRouteDao;
|
||||
import com.cloud.network.vpc.Dao.VpcDao;
|
||||
import com.cloud.network.vpc.Dao.VpcOfferingDao;
|
||||
import com.cloud.network.vpn.Site2SiteVpnManager;
|
||||
import com.cloud.offerings.NetworkOfferingVO;
|
||||
import com.cloud.user.Account;
|
||||
import com.cloud.utils.Pair;
|
||||
|
|
@ -144,7 +148,11 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian
|
|||
@Inject
|
||||
Site2SiteVpnGatewayDao _vpnGatewayDao;
|
||||
@Inject
|
||||
Site2SiteVpnConnectionDao _vpnConnectionDao;
|
||||
@Inject
|
||||
FirewallRulesDao _firewallDao;
|
||||
@Inject
|
||||
Site2SiteVpnManager _s2sVpnMgr;
|
||||
|
||||
@Override
|
||||
public List<DomainRouterVO> deployVirtualRouterInVpc(Vpc vpc, DeployDestination dest, Account owner,
|
||||
|
|
@ -817,9 +825,7 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian
|
|||
createStaticRouteCommands(staticRouteProfiles, router, cmds);
|
||||
}
|
||||
|
||||
//5) REISSUE VPN CONNECTION
|
||||
|
||||
//6) REPROGRAM GUEST NETWORK
|
||||
//5) REPROGRAM GUEST NETWORK
|
||||
boolean reprogramGuestNtwks = true;
|
||||
if (profile.getParameter(Param.ReProgramGuestNetworks) != null
|
||||
&& (Boolean) profile.getParameter(Param.ReProgramGuestNetworks) == false) {
|
||||
|
|
@ -1053,11 +1059,11 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian
|
|||
|
||||
protected boolean applySite2SiteVpn(boolean isCreate, VirtualRouter router, Site2SiteVpnConnection conn) throws ResourceUnavailableException {
|
||||
Commands cmds = new Commands(OnError.Continue);
|
||||
createApplySite2SiteVpnCommands(conn, isCreate, router, cmds);
|
||||
createSite2SiteVpnCfgCommands(conn, isCreate, router, cmds);
|
||||
return sendCommandsToRouter(router, cmds);
|
||||
}
|
||||
|
||||
private void createApplySite2SiteVpnCommands(Site2SiteVpnConnection conn, boolean isCreate, VirtualRouter router, Commands cmds) {
|
||||
private void createSite2SiteVpnCfgCommands(Site2SiteVpnConnection conn, boolean isCreate, VirtualRouter router, Commands cmds) {
|
||||
Site2SiteCustomerGatewayVO gw = _s2sCustomerGatewayDao.findById(conn.getCustomerGatewayId());
|
||||
Site2SiteVpnGatewayVO vpnGw = _s2sVpnGatewayDao.findById(conn.getVpnGatewayId());
|
||||
IpAddress ip = _ipAddressDao.findById(vpnGw.getAddrId());
|
||||
|
|
@ -1271,4 +1277,12 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian
|
|||
new Pair<Map<String, PublicIpAddress>, Map<String, PublicIpAddress>>(nicsToPlug, nicsToUnplug);
|
||||
return nicsToChange;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void finalizeStop(VirtualMachineProfile<DomainRouterVO> profile, StopAnswer answer) {
|
||||
super.finalizeStop(profile, answer);
|
||||
//Mark VPN connections as Disconnected
|
||||
DomainRouterVO router = profile.getVirtualMachine();
|
||||
_s2sVpnMgr.markDisconnectVpnConnByVpc(router.getVpcId());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,4 +3,5 @@ package com.cloud.network.vpn;
|
|||
public interface Site2SiteVpnManager extends Site2SiteVpnService {
|
||||
boolean cleanupVpnConnectionByVpc(long vpcId);
|
||||
boolean cleanupVpnGatewayByVpc(long vpcId);
|
||||
void markDisconnectVpnConnByVpc(long vpcId);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -409,4 +409,18 @@ public class Site2SiteVpnManagerImpl implements Site2SiteVpnManager, Manager {
|
|||
doDeleteVpnGateway(gw.getId());
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void markDisconnectVpnConnByVpc(long vpcId) {
|
||||
List<Site2SiteVpnConnectionVO> conns = _vpnConnectionDao.listByVpcId(vpcId);
|
||||
for (Site2SiteVpnConnectionVO conn : conns) {
|
||||
if (conn == null) {
|
||||
continue;
|
||||
}
|
||||
if (conn.getState() == Site2SiteVpnConnection.State.Connected) {
|
||||
conn.setState(Site2SiteVpnConnection.State.Disconnected);
|
||||
_vpnConnectionDao.persist(conn);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue