diff --git a/api/src/main/java/com/cloud/network/Site2SiteVpnConnection.java b/api/src/main/java/com/cloud/network/Site2SiteVpnConnection.java index cfc439abcd8f..994df875f7d3 100644 --- a/api/src/main/java/com/cloud/network/Site2SiteVpnConnection.java +++ b/api/src/main/java/com/cloud/network/Site2SiteVpnConnection.java @@ -24,7 +24,7 @@ public interface Site2SiteVpnConnection extends ControlledEntity, InternalIdentity, Displayable { enum State { - Pending, Connected, Disconnected, Error, + Pending, Connecting, Connected, Disconnected, Error, } @Override diff --git a/server/src/main/java/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java b/server/src/main/java/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java index 28855db83407..28fff8ea7a92 100644 --- a/server/src/main/java/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java +++ b/server/src/main/java/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java @@ -817,7 +817,8 @@ protected void updateSite2SiteVpnConnectionState(final List rout } final List ipList = new ArrayList(); for (final Site2SiteVpnConnectionVO conn : conns) { - if (conn.getState() != Site2SiteVpnConnection.State.Connected && conn.getState() != Site2SiteVpnConnection.State.Disconnected) { + if (conn.getState() != Site2SiteVpnConnection.State.Connected && conn.getState() != Site2SiteVpnConnection.State.Disconnected + && conn.getState() != Site2SiteVpnConnection.State.Connecting) { continue; } final Site2SiteCustomerGateway gw = _s2sCustomerGatewayDao.findById(conn.getCustomerGatewayId()); @@ -853,7 +854,7 @@ protected void updateSite2SiteVpnConnectionState(final List rout throw new CloudRuntimeException("Unable to acquire lock for site to site vpn connection id " + conn.getId()); } try { - if (conn.getState() != Site2SiteVpnConnection.State.Connected && conn.getState() != Site2SiteVpnConnection.State.Disconnected) { + if (conn.getState() != Site2SiteVpnConnection.State.Connected && conn.getState() != Site2SiteVpnConnection.State.Disconnected && conn.getState() != Site2SiteVpnConnection.State.Connecting) { continue; } final Site2SiteVpnConnection.State oldState = conn.getState(); diff --git a/server/src/main/java/com/cloud/network/vpn/Site2SiteVpnManagerImpl.java b/server/src/main/java/com/cloud/network/vpn/Site2SiteVpnManagerImpl.java index 63fcacc6ccd2..5b444c292a67 100644 --- a/server/src/main/java/com/cloud/network/vpn/Site2SiteVpnManagerImpl.java +++ b/server/src/main/java/com/cloud/network/vpn/Site2SiteVpnManagerImpl.java @@ -347,7 +347,7 @@ public Site2SiteVpnConnection startVpnConnection(long id) throws ResourceUnavail if (conn.isPassive()) { conn.setState(State.Disconnected); } else { - conn.setState(State.Connected); + conn.setState(State.Connecting); } _vpnConnectionDao.persist(conn); return conn; @@ -530,7 +530,7 @@ private void setupVpnConnection(Account caller, Long vpnCustomerGwIp) { continue; } try { - if (conn.getState() == State.Connected || conn.getState() == State.Error) { + if (conn.getState() == State.Connected || conn.getState() == State.Connecting || conn.getState() == State.Error) { stopVpnConnection(conn.getId()); } startVpnConnection(conn.getId()); @@ -608,7 +608,8 @@ public Site2SiteVpnConnection resetVpnConnection(ResetVpnConnectionCmd cmd) thro if (conn.getState() == State.Pending) { conn.setState(State.Disconnected); } - if (conn.getState() == State.Connected || conn.getState() == State.Error || conn.getState() == State.Disconnected) { + if (conn.getState() == State.Connected || conn.getState() == State.Error + || conn.getState() == State.Disconnected || conn.getState() == State.Connecting) { stopVpnConnection(id); } startVpnConnection(id); @@ -795,7 +796,7 @@ public void markDisconnectVpnConnByVpc(long vpcId) { throw new CloudRuntimeException("Unable to acquire lock on " + conn); } try { - if (conn.getState() == Site2SiteVpnConnection.State.Connected) { + if (conn.getState() == Site2SiteVpnConnection.State.Connected || conn.getState() == Site2SiteVpnConnection.State.Connecting) { conn.setState(Site2SiteVpnConnection.State.Disconnected); _vpnConnectionDao.persist(conn); } diff --git a/test/integration/smoke/test_vpc_vpn.py b/test/integration/smoke/test_vpc_vpn.py index 26b1daf946f0..485aec643ca7 100644 --- a/test/integration/smoke/test_vpc_vpn.py +++ b/test/integration/smoke/test_vpc_vpn.py @@ -618,7 +618,7 @@ def test_01_vpc_site2site_vpn(self): self.logger.debug("Network %s created in VPC %s" % (ntwk2.id, vpc2.id)) vm1 = None - # Deploy a vm in network 2 + # Deploy a vm in network 1 try: vm1 = VirtualMachine.create(self.apiclient, services=self.services["virtual_machine"], templateid=self.template.id, @@ -990,7 +990,7 @@ def test_01_redundant_vpc_site2site_vpn(self): self.cleanup.append(ntwk2) self.logger.debug("Network %s created in VPC %s" % (ntwk2.id, vpc2.id)) - # Deploy a vm in network 2 + # Deploy a vm in network 1 vm1 = None try: vm1 = VirtualMachine.create(self.apiclient, services=self.services["virtual_machine"], @@ -1370,7 +1370,7 @@ def test_01_vpc_site2site_vpn_multiple_options(self): self.logger.debug("Network %s created in VPC %s" % (ntwk2.id, vpc2.id)) vm1 = None - # Deploy a vm in network 2 + # Deploy a vm in network 1 try: vm1 = VirtualMachine.create(self.apiclient, services=self.services["virtual_machine"], templateid=self.template.id,