Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@

public interface Site2SiteVpnConnection extends ControlledEntity, InternalIdentity, Displayable {
enum State {
Pending, Connected, Disconnected, Error,
Pending, Connecting, Connected, Disconnected, Error,
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -817,7 +817,8 @@ protected void updateSite2SiteVpnConnectionState(final List<DomainRouterVO> rout
}
final List<String> ipList = new ArrayList<String>();
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());
Expand Down Expand Up @@ -853,7 +854,7 @@ protected void updateSite2SiteVpnConnectionState(final List<DomainRouterVO> 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();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there any FSM or logic that ensures that connections don't get stuck in the new Connecting state?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nope but the additions to VirtualNetworkApplianceManagerImpl.java and Site2SiteVpnManagerImpl.java take care of it

}
_vpnConnectionDao.persist(conn);
return conn;
Expand Down Expand Up @@ -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());
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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);
}
Expand Down
6 changes: 3 additions & 3 deletions test/integration/smoke/test_vpc_vpn.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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"],
Expand Down Expand Up @@ -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,
Expand Down