From e07ec3cd2cea274c00f6271eba40931fa8e7be1e Mon Sep 17 00:00:00 2001 From: Jessica Wang Date: Fri, 29 Jun 2012 14:55:26 -0700 Subject: [PATCH] cloudstack 3.0: (1) API - CreateVpnConnection API, ListVpnConnections API: set object name for API response. (2) UI - Add site-to-site VPN dialog - call CreateVpnConnection API after CreateVpnCustomerGateway API returns success. --- .../api/commands/ListVpnConnectionsCmd.java | 4 +- .../src/com/cloud/api/ApiResponseHelper.java | 1 + ui/scripts/network.js | 41 ++++++++++++++++++- 3 files changed, 44 insertions(+), 2 deletions(-) diff --git a/api/src/com/cloud/api/commands/ListVpnConnectionsCmd.java b/api/src/com/cloud/api/commands/ListVpnConnectionsCmd.java index 0b5e69d8c0d..e942bc4226f 100644 --- a/api/src/com/cloud/api/commands/ListVpnConnectionsCmd.java +++ b/api/src/com/cloud/api/commands/ListVpnConnectionsCmd.java @@ -65,7 +65,9 @@ public class ListVpnConnectionsCmd extends BaseListProjectAndAccountResourcesCmd List connResponses = new ArrayList(); if (conns != null && !conns.isEmpty()) { for (Site2SiteVpnConnection conn : conns) { - connResponses.add(_responseGenerator.createSite2SiteVpnConnectionResponse(conn)); + Site2SiteVpnConnectionResponse site2SiteVpnConnectonRes = _responseGenerator.createSite2SiteVpnConnectionResponse(conn); + site2SiteVpnConnectonRes.setObjectName("vpnconnection"); + connResponses.add(site2SiteVpnConnectonRes); } } response.setResponses(connResponses); diff --git a/server/src/com/cloud/api/ApiResponseHelper.java b/server/src/com/cloud/api/ApiResponseHelper.java index 1491ac5ec07..9016e457928 100755 --- a/server/src/com/cloud/api/ApiResponseHelper.java +++ b/server/src/com/cloud/api/ApiResponseHelper.java @@ -3649,6 +3649,7 @@ public class ApiResponseHelper implements ResponseGenerator { response.setCustomerGatewayId(result.getCustomerGatewayId()); response.setCreated(result.getCreated()); response.setRemoved(result.getRemoved()); + response.setObjectName("vpnconnection"); return response; } } diff --git a/ui/scripts/network.js b/ui/scripts/network.js index 5446d10bc6b..1833ff34d9a 100644 --- a/ui/scripts/network.js +++ b/ui/scripts/network.js @@ -3356,7 +3356,46 @@ if (result.jobstatus == 1) { var obj = result.jobresult.vpncustomergateway; var vpncustomergatewayid = obj.id; - //??? + //??? + $.ajax({ + url: createURL('createVpnConnection'), + data: { + s2svpngatewayid: vpngatewayid, + s2scustomergatewayid: vpncustomergatewayid + }, + dataType: 'json', + success: function(json) { + var jid = json.createvpnconnectionresponse.jobid; + var createvpnconnectionIntervalID = setInterval(function() { + $.ajax({ + url: createURL("queryAsyncJobResult&jobid=" + jid), + dataType: "json", + success: function(json) { + var result = json.queryasyncjobresultresponse; + if (result.jobstatus == 0) { + return; //Job has not completed + } + else { + clearInterval(createvpnconnectionIntervalID); + if (result.jobstatus == 1) { + debugger; + var obj = result.jobresult.vpnconnection; + + } + else if (result.jobstatus == 2) { + alert("Failed to create VPN connection. Error: " + _s(result.jobresult.errortext)); + } + } + }, + error: function(XMLHttpResponse) { + var errorMsg = parseXMLHttpResponse(XMLHttpResponse); + alert("Failed to create VPN connection. Error: " + errorMsg); + } + }); + }, 3000); + } + }); + //??? } else if (result.jobstatus == 2) { alert("Failed to create VPN customer gateway. Error: " + _s(result.jobresult.errortext));