From 7825e8226002d5a61271b95f8872be4c4e195790 Mon Sep 17 00:00:00 2001 From: Jessica Wang Date: Thu, 19 Jul 2012 15:36:23 -0700 Subject: [PATCH] cloudstack 3.0 UI - VPC - site to site VPN - add new section "Customer Gateway". --- ui/scripts/vpc.js | 959 ++++++++++++++++++++++++---------------------- 1 file changed, 509 insertions(+), 450 deletions(-) diff --git a/ui/scripts/vpc.js b/ui/scripts/vpc.js index 40828b16f46..ff575407a55 100644 --- a/ui/scripts/vpc.js +++ b/ui/scripts/vpc.js @@ -664,448 +664,534 @@ }; } }, - siteToSiteVPN: {//start siteToSiteVPN - type: 'select', + siteToSiteVPN: { title: 'site-to-site VPN', - listView: { - id: 'siteToSiteVpn', - label: 'site-to-site VPN', - fields: { - publicip: { label: 'label.ip.address' }, - gateway: { label: 'label.gateway' }, - cidrlist: { label: 'CIDR list' }, - ipsecpsk: { label: 'IPsec Preshared-Key' }, - ikepolicy: { label: 'IKE policy' }, - esppolicy: { label: 'ESP policy' } - }, - dataProvider: function(args) { - var array1 = []; - if(args.filterBy != null) { - if(args.filterBy.search != null && args.filterBy.search.by != null && args.filterBy.search.value != null) { - switch(args.filterBy.search.by) { - case "name": - if(args.filterBy.search.value.length > 0) - array1.push("&keyword=" + args.filterBy.search.value); - break; - } - } - } - $.ajax({ - url: createURL("listVpnConnections&listAll=true&page=" + args.page + "&pagesize=" + pageSize + array1.join("")), - data: { - vpcid: args.context.vpc[0].id - }, - success: function(json) { - var items = json.listvpnconnectionsresponse.vpnconnection; - args.response.success({data:items}); - } - }); + id: 'siteToSiteVpn', + sectionSelect: { + preFilter: function(args) { + return ["vpnCustomerGateway", "vpnConnection"]; + //return ["vpnConnection"]; }, + label: 'label.select-view' + }, + sections: { - actions: { - add: { - label: 'add site-to-site VPN', - messages: { - notification: function(args) { - return 'add site-to-site VPN'; - } + vpnCustomerGateway: { + type: 'select', + title: 'Customer Gateway', + listView: { + id: 'vpnCustomerGateway', + label: 'Customer Gateway', + fields: { + publicip: { label: 'label.ip.address' }, + account: { label: 'label.account' }, + domain: { label: 'label.domain' } }, - createForm: { - title: 'add site-to-site VPN', - fields: { - publicipid: { - label: 'label.ip.address', - select: function(args) { - $.ajax({ - url: createURL('listPublicIpAddresses'), - dataType: 'json', - data: { - vpcid: args.context.vpc[0].id - }, - async: true, - success: function(json) { - var items = []; - var objs = json.listpublicipaddressesresponse.publicipaddress; - if(objs != null && objs.length > 0) { - for(var i = 0; i < objs.length; i++) { - items.push({id: objs[i].id, description: objs[i].ipaddress}); - } - } - args.response.success({data: items}); - } - }); - }, - validation: { required: true } - }, - gateway: { - label: 'label.gateway', - validation: { required: true } - }, - cidrlist: { - label: 'CIDR list', - validation: { required: true } - }, - ipsecpsk: { - label: 'IPsec Preshared-Key', - validation: { required: true } - }, - ikepolicy: { - label: 'IKE policy', - select: function(args) { - var items = []; - items.push({id: '3des-md5', description: '3des-md5'}); - items.push({id: 'aes-md5', description: 'aes-md5'}); - items.push({id: 'aes128-md5', description: 'aes128-md5'}); - items.push({id: 'des-md5', description: 'des-md5'}); - items.push({id: '3des-sha1', description: '3des-sha1'}); - items.push({id: 'aes-sha1', description: 'aes-sha1'}); - items.push({id: 'aes128-sha1', description: 'aes128-sha1'}); - items.push({id: 'des-sha1', description: 'des-sha1'}); - args.response.success({data: items}); - } - }, - esppolicy: { - label: 'ESP policy', - select: function(args) { - var items = []; - items.push({id: '3des-md5', description: '3des-md5'}); - items.push({id: 'aes-md5', description: 'aes-md5'}); - items.push({id: 'aes128-md5', description: 'aes128-md5'}); - items.push({id: 'des-md5', description: 'des-md5'}); - items.push({id: '3des-sha1', description: '3des-sha1'}); - items.push({id: 'aes-sha1', description: 'aes-sha1'}); - items.push({id: 'aes128-sha1', description: 'aes128-sha1'}); - items.push({id: 'des-sha1', description: 'des-sha1'}); - args.response.success({data: items}); - } - }, - lifetime: { - label: 'Lifetime (second)', - defaultValue: '86400', - validation: { required: false, number: true } - } - } - }, - action: function(args) { - var createVpnCustomerGatewayAndVpnConnection = function(vpngatewayid) { - $.ajax({ - url: createURL('createVpnCustomerGateway'), - data: { - gateway: args.data.gateway, - cidrlist: args.data.cidrlist, - ipsecpsk: args.data.ipsecpsk, - ikepolicy: args.data.ikepolicy, - esppolicy: args.data.esppolicy, - lifetime: args.data.lifetime - }, - dataType: 'json', - success: function(json) { - var jid = json.createvpncustomergatewayresponse.jobid; - var createvpncustomergatewayIntervalID = 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(createvpncustomergatewayIntervalID); - 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) { - //remove loading image on table row - var $listviewTable = $("div.list-view div.data-table table.body tbody"); - var $tr1 = $listviewTable.find("tr.loading").removeClass("loading"); - $tr1.find("td div.loading").removeClass("loading"); - - var item = result.jobresult.vpnconnection; - $tr1.find("td.publicip span").text(item.publicip); - - cloudStack.dialog.notice({ message: "site-to-site VPN is created successfully." }); - } - else if (result.jobstatus == 2) { - $.removeTableRowInAction(); - cloudStack.dialog.notice({ message: _s(result.jobresult.errortext) }); - } - } - }, - error: function(XMLHttpResponse) { - $.removeTableRowInAction(); - cloudStack.dialog.notice({ message: parseXMLHttpResponse(XMLHttpResponse) }); - } - }); - }, 3000); - } - }); - } - else if (result.jobstatus == 2) { - $.removeTableRowInAction(); - cloudStack.dialog.notice({ message: _s(result.jobresult.errortext) }); - } - } - }, - error: function(XMLHttpResponse) { - $.removeTableRowInAction(); - cloudStack.dialog.notice({ message: parseXMLHttpResponse(XMLHttpResponse) }); - } - }); - }, 3000); - } - }); - } - - var vpngatewayid; - $.ajax({ - url: createURL('listVpnGateways'), - data: { - vpcid: args.context.vpc[0].id - }, - async: false, - success: function(json) { - var items = json.listvpngatewaysresponse.vpngateway; - if(items != null && items.length > 0) { - vpngatewayid = items[0].id; + dataProvider: function(args) { + var array1 = []; + if(args.filterBy != null) { + if(args.filterBy.search != null && args.filterBy.search.by != null && args.filterBy.search.value != null) { + switch(args.filterBy.search.by) { + case "name": + if(args.filterBy.search.value.length > 0) + array1.push("&keyword=" + args.filterBy.search.value); + break; } } - }); - - if(vpngatewayid == null) { - $.ajax({ - url: createURL('createVpnGateway'), - data: { - publicipid: args.data.publicipid - }, - success: function(json) { - var jid = json.createvpngatewayresponse.jobid; - var createvpngatewayIntervalID = 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(createvpngatewayIntervalID); - if (result.jobstatus == 1) { - var obj = result.jobresult.vpngateway; - vpngatewayid = obj.id; - createVpnCustomerGatewayAndVpnConnection(vpngatewayid); - } - else if (result.jobstatus == 2) { - $.removeTableRowInAction(); - cloudStack.dialog.notice({ message: _s(result.jobresult.errortext) }); - } - } - }, - error: function(XMLHttpResponse) { - $.removeTableRowInAction(); - cloudStack.dialog.notice({ message: parseXMLHttpResponse(XMLHttpResponse) }); - } - }); - }, 3000); + } + $.ajax({ + url: createURL("listVpnGateways&listAll=true&page=" + args.page + "&pagesize=" + pageSize + array1.join("")), + data: { + vpcid: args.context.vpc[0].id + }, + async: false, + success: function(json) { + var items = json.listvpngatewaysresponse.vpngateway; + args.response.success({data: items}); + } + }); + }, + detailView: { + name: 'label.details', + tabs: { + details: { + title: 'label.details', + fields: [ + { + publicip: { label: 'label.ip.address' } + }, + { + account: { label: 'label.account' }, + domain: { label: 'label.domain' }, + id: { label: 'label.id' } + } + ], + dataProvider: function(args) { + $.ajax({ + url: createURL("listVpnGateways"), + data: { + id: args.context.vpnCustomerGateway[0].id + }, + async: true, + success: function(json) { + var item = json.listvpngatewaysresponse.vpngateway[0]; + args.response.success({data: item}); + } + }); } - }); - } - else { //vpngatewayid != null - createVpnCustomerGatewayAndVpnConnection(vpngatewayid); - } - } + } + } + } } }, - detailView: { - name: 'label.details', - tabs: { - details: { - title: 'label.details', - fields: [ - { - id: { label: 'label.id' }, - - //s2svpngatewayid: { label: 'VPN gateway ID' }, - publicip: { label: 'label.ip.address' }, - - //s2scustomergatewayid: { label: 'Customer gateway ID' }, - gateway: { label: 'label.gateway' }, - cidrlist: { label: 'CIDR list' }, - ipsecpsk: { label: 'IPsec Preshared-Key' }, - ikepolicy: { label: 'IKE policy' }, - esppolicy: { label: 'ESP policy' }, - lifetime: { label: 'Lifetime (second)' }, - - created: { label: 'label.date', converter: cloudStack.converters.toLocalDate } - } - ], - dataProvider: function(args) { - $.ajax({ - url: createURL("listVpnConnections&id=" + args.context.siteToSiteVpn[0].id), - dataType: "json", - async: true, - success: function(json) { - var item = json.listvpnconnectionsresponse.vpnconnection[0]; - args.response.success({data: item}); + + //??? + + vpnConnection: { + type: 'select', + title: 'VPN Connection', + listView: { + id: 'vpnConnection', + label: 'VPN Connection', + fields: { + publicip: { label: 'label.ip.address' }, + gateway: { label: 'label.gateway' }, + cidrlist: { label: 'CIDR list' }, + ipsecpsk: { label: 'IPsec Preshared-Key' }, + ikepolicy: { label: 'IKE policy' }, + esppolicy: { label: 'ESP policy' } + }, + dataProvider: function(args) { + var array1 = []; + if(args.filterBy != null) { + if(args.filterBy.search != null && args.filterBy.search.by != null && args.filterBy.search.value != null) { + switch(args.filterBy.search.by) { + case "name": + if(args.filterBy.search.value.length > 0) + array1.push("&keyword=" + args.filterBy.search.value); + break; + } + } + } + $.ajax({ + url: createURL("listVpnConnections&listAll=true&page=" + args.page + "&pagesize=" + pageSize + array1.join("")), + data: { + vpcid: args.context.vpc[0].id + }, + success: function(json) { + var items = json.listvpnconnectionsresponse.vpnconnection; + args.response.success({data:items}); + } + }); + }, + + actions: { + add: { + label: 'add VPN Connection', + messages: { + notification: function(args) { + return 'add VPN Connection'; } - }); - } - } - }, - actions: { - restart: { - label: 'Reset VPN connection', - messages: { - confirm: function(args) { - return 'Please confirm that you want to reset VPN connection' ; }, - notification: function(args) { - return 'Reset VPN connection'; - } - }, - action: function(args) { - $.ajax({ - url: createURL("resetVpnConnection"), - data: { - id: args.context.siteToSiteVpn[0].id - }, - dataType: "json", - async: true, - success: function(json) { - var jid = json.resetvpnconnectionresponse.jobid; - args.response.success( - {_custom: - { - jobId: jid, - getUpdatedItem: function(json) { - return json.queryasyncjobresultresponse.jobresult.vpnconnection; - } - } + createForm: { + title: 'add VPN Connection', + fields: { + publicipid: { + label: 'label.ip.address', + select: function(args) { + $.ajax({ + url: createURL('listPublicIpAddresses'), + dataType: 'json', + data: { + vpcid: args.context.vpc[0].id + }, + async: true, + success: function(json) { + var items = []; + var objs = json.listpublicipaddressesresponse.publicipaddress; + if(objs != null && objs.length > 0) { + for(var i = 0; i < objs.length; i++) { + items.push({id: objs[i].id, description: objs[i].ipaddress}); + } + } + args.response.success({data: items}); + } + }); + }, + validation: { required: true } + }, + gateway: { + label: 'label.gateway', + validation: { required: true } + }, + cidrlist: { + label: 'CIDR list', + validation: { required: true } + }, + ipsecpsk: { + label: 'IPsec Preshared-Key', + validation: { required: true } + }, + ikepolicy: { + label: 'IKE policy', + select: function(args) { + var items = []; + items.push({id: '3des-md5', description: '3des-md5'}); + items.push({id: 'aes-md5', description: 'aes-md5'}); + items.push({id: 'aes128-md5', description: 'aes128-md5'}); + items.push({id: 'des-md5', description: 'des-md5'}); + items.push({id: '3des-sha1', description: '3des-sha1'}); + items.push({id: 'aes-sha1', description: 'aes-sha1'}); + items.push({id: 'aes128-sha1', description: 'aes128-sha1'}); + items.push({id: 'des-sha1', description: 'des-sha1'}); + args.response.success({data: items}); } - ); + }, + esppolicy: { + label: 'ESP policy', + select: function(args) { + var items = []; + items.push({id: '3des-md5', description: '3des-md5'}); + items.push({id: 'aes-md5', description: 'aes-md5'}); + items.push({id: 'aes128-md5', description: 'aes128-md5'}); + items.push({id: 'des-md5', description: 'des-md5'}); + items.push({id: '3des-sha1', description: '3des-sha1'}); + items.push({id: 'aes-sha1', description: 'aes-sha1'}); + items.push({id: 'aes128-sha1', description: 'aes128-sha1'}); + items.push({id: 'des-sha1', description: 'des-sha1'}); + args.response.success({data: items}); + } + }, + lifetime: { + label: 'Lifetime (second)', + defaultValue: '86400', + validation: { required: false, number: true } + } } - }); - }, - notification: { - poll: pollAsyncJobResult + }, + action: function(args) { + var createVpnCustomerGatewayAndVpnConnection = function(vpngatewayid) { + $.ajax({ + url: createURL('createVpnCustomerGateway'), + data: { + gateway: args.data.gateway, + cidrlist: args.data.cidrlist, + ipsecpsk: args.data.ipsecpsk, + ikepolicy: args.data.ikepolicy, + esppolicy: args.data.esppolicy, + lifetime: args.data.lifetime + }, + dataType: 'json', + success: function(json) { + var jid = json.createvpncustomergatewayresponse.jobid; + var createvpncustomergatewayIntervalID = 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(createvpncustomergatewayIntervalID); + 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) { + //remove loading image on table row + var $listviewTable = $("div.list-view div.data-table table.body tbody"); + var $tr1 = $listviewTable.find("tr.loading").removeClass("loading"); + $tr1.find("td div.loading").removeClass("loading"); + + var item = result.jobresult.vpnconnection; + $tr1.find("td.publicip span").text(item.publicip); + + cloudStack.dialog.notice({ message: "site-to-site VPN is created successfully." }); + } + else if (result.jobstatus == 2) { + $.removeTableRowInAction(); + cloudStack.dialog.notice({ message: _s(result.jobresult.errortext) }); + } + } + }, + error: function(XMLHttpResponse) { + $.removeTableRowInAction(); + cloudStack.dialog.notice({ message: parseXMLHttpResponse(XMLHttpResponse) }); + } + }); + }, 3000); + } + }); + } + else if (result.jobstatus == 2) { + $.removeTableRowInAction(); + cloudStack.dialog.notice({ message: _s(result.jobresult.errortext) }); + } + } + }, + error: function(XMLHttpResponse) { + $.removeTableRowInAction(); + cloudStack.dialog.notice({ message: parseXMLHttpResponse(XMLHttpResponse) }); + } + }); + }, 3000); + } + }); + } + + var vpngatewayid; + $.ajax({ + url: createURL('listVpnGateways'), + data: { + vpcid: args.context.vpc[0].id + }, + async: false, + success: function(json) { + var items = json.listvpngatewaysresponse.vpngateway; + if(items != null && items.length > 0) { + vpngatewayid = items[0].id; + } + } + }); + + if(vpngatewayid == null) { + $.ajax({ + url: createURL('createVpnGateway'), + data: { + vpcid: args.context.vpc[0].id + }, + success: function(json) { + var jid = json.createvpngatewayresponse.jobid; + var createvpngatewayIntervalID = 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(createvpngatewayIntervalID); + if (result.jobstatus == 1) { + var obj = result.jobresult.vpngateway; + vpngatewayid = obj.id; + createVpnCustomerGatewayAndVpnConnection(vpngatewayid); + } + else if (result.jobstatus == 2) { + $.removeTableRowInAction(); + cloudStack.dialog.notice({ message: _s(result.jobresult.errortext) }); + } + } + }, + error: function(XMLHttpResponse) { + $.removeTableRowInAction(); + cloudStack.dialog.notice({ message: parseXMLHttpResponse(XMLHttpResponse) }); + } + }); + }, 3000); + } + }); + } + else { //vpngatewayid != null + createVpnCustomerGatewayAndVpnConnection(vpngatewayid); + } + } } }, - - remove: { - label: 'delete site-to-site VPN', - messages: { - confirm: function(args) { - return 'Please confirm that you want to delete this site-to-site VPN'; - }, - notification: function(args) { - return 'delete site-to-site VPN'; + + detailView: { + name: 'label.details', + tabs: { + details: { + title: 'label.details', + fields: [ + { + id: { label: 'label.id' }, + + //s2svpngatewayid: { label: 'VPN gateway ID' }, + publicip: { label: 'label.ip.address' }, + + //s2scustomergatewayid: { label: 'Customer gateway ID' }, + gateway: { label: 'label.gateway' }, + cidrlist: { label: 'CIDR list' }, + ipsecpsk: { label: 'IPsec Preshared-Key' }, + ikepolicy: { label: 'IKE policy' }, + esppolicy: { label: 'ESP policy' }, + lifetime: { label: 'Lifetime (second)' }, + + created: { label: 'label.date', converter: cloudStack.converters.toLocalDate } + } + ], + dataProvider: function(args) { + $.ajax({ + url: createURL("listVpnConnections&id=" + args.context.vpnConnection[0].id), + dataType: "json", + async: true, + success: function(json) { + var item = json.listvpnconnectionsresponse.vpnconnection[0]; + args.response.success({data: item}); + } + }); + } } }, - action: function(args) { - $.ajax({ - url: createURL("deleteVpnConnection"), - dataType: "json", - data: { - id: args.context.siteToSiteVpn[0].id + actions: { + restart: { + label: 'Reset VPN connection', + messages: { + confirm: function(args) { + return 'Please confirm that you want to reset VPN connection' ; + }, + notification: function(args) { + return 'Reset VPN connection'; + } }, - async: true, - success: function(json) { - var jid = json.deletevpnconnectionresponse.jobid; - var deleteVpnConnectionIntervalID = 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(deleteVpnConnectionIntervalID); - if (result.jobstatus == 1) { - $.ajax({ - url: createURL("deleteVpnCustomerGateway"), - dataType: "json", - data: { - id: args.context.siteToSiteVpn[0].s2scustomergatewayid - }, - async: true, - success: function(json) { - var jid = json.deletecustomergatewayresponse.jobid; - var deleteVpnCustomerGatewayIntervalID = 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(deleteVpnCustomerGatewayIntervalID); - if (result.jobstatus == 1) { - $("div.detail-view div.loading-overlay").remove(); - cloudStack.dialog.notice({ message: "site-to-site VPN has been deleted." }); - $.removeDetailViewAndTableRow(); - } - else if (result.jobstatus == 2) { - $("div.detail-view div.loading-overlay").remove(); - cloudStack.dialog.notice({ message: _s(result.jobresult.errortext) }); - } - } - }, - error: function(XMLHttpResponse) { - $("div.detail-view div.loading-overlay").remove(); - cloudStack.dialog.notice({ message: parseXMLHttpResponse(XMLHttpResponse) }); - } - }); - }, 3000); - } - }); - } - else if (result.jobstatus == 2) { - $("div.detail-view div.loading-overlay").remove(); - cloudStack.dialog.notice({ message: _s(result.jobresult.errortext) }); + action: function(args) { + $.ajax({ + url: createURL("resetVpnConnection"), + data: { + id: args.context.vpnConnection[0].id + }, + dataType: "json", + async: true, + success: function(json) { + var jid = json.resetvpnconnectionresponse.jobid; + args.response.success( + {_custom: + { + jobId: jid, + getUpdatedItem: function(json) { + return json.queryasyncjobresultresponse.jobresult.vpnconnection; + } } } - }, - error: function(XMLHttpResponse) { - $("div.detail-view div.loading-overlay").remove(); - cloudStack.dialog.notice({ message: parseXMLHttpResponse(XMLHttpResponse) }); - } - }); - }, 3000); + ); + } + }); + }, + notification: { + poll: pollAsyncJobResult } - }); - } - } - } + }, + + remove: { + label: 'delete site-to-site VPN', + messages: { + confirm: function(args) { + return 'Please confirm that you want to delete this site-to-site VPN'; + }, + notification: function(args) { + return 'delete site-to-site VPN'; + } + }, + action: function(args) { + $.ajax({ + url: createURL("deleteVpnConnection"), + dataType: "json", + data: { + id: args.context.vpnConnection[0].id + }, + async: true, + success: function(json) { + var jid = json.deletevpnconnectionresponse.jobid; + var deleteVpnConnectionIntervalID = 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(deleteVpnConnectionIntervalID); + if (result.jobstatus == 1) { + $.ajax({ + url: createURL("deleteVpnCustomerGateway"), + dataType: "json", + data: { + id: args.context.vpnConnection[0].s2scustomergatewayid + }, + async: true, + success: function(json) { + var jid = json.deletecustomergatewayresponse.jobid; + var deleteVpnCustomerGatewayIntervalID = 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(deleteVpnCustomerGatewayIntervalID); + if (result.jobstatus == 1) { + $("div.detail-view div.loading-overlay").remove(); + cloudStack.dialog.notice({ message: "site-to-site VPN has been deleted." }); + $.removeDetailViewAndTableRow(); + } + else if (result.jobstatus == 2) { + $("div.detail-view div.loading-overlay").remove(); + cloudStack.dialog.notice({ message: _s(result.jobresult.errortext) }); + } + } + }, + error: function(XMLHttpResponse) { + $("div.detail-view div.loading-overlay").remove(); + cloudStack.dialog.notice({ message: parseXMLHttpResponse(XMLHttpResponse) }); + } + }); + }, 3000); + } + }); + } + else if (result.jobstatus == 2) { + $("div.detail-view div.loading-overlay").remove(); + cloudStack.dialog.notice({ message: _s(result.jobresult.errortext) }); + } + } + }, + error: function(XMLHttpResponse) { + $("div.detail-view div.loading-overlay").remove(); + cloudStack.dialog.notice({ message: parseXMLHttpResponse(XMLHttpResponse) }); + } + }); + }, 3000); + } + }); + } + } + } + } + } } - } + } }, tiers: { @@ -1724,29 +1810,7 @@ ); } } - } - //??? - - /* - name: 'Tier details', - tabs: { - details: { - title: 'Details', - fields: [ - { id: { label: 'ID' }}, - { - name: { label: 'Name' }, - cidr: { label: 'CIDR' } - } - ], - dataProvider: function(args) { - args.response.success({ - data: args.context.networks[0] - }); - } - } - } - */ + } }, //duplicate from cloudStack.sections.network.sections.networks.listView.detailView (begin) actionPreFilter: function(args) { @@ -1781,9 +1845,8 @@ if(json.listnetworksresponse.network != null && json.listnetworksresponse.network.length > 0) networkSupportingLbExists = true; else - networkSupportingLbExists = false; + networkSupportingLbExists = false; - //??? $.ajax({ url: createURL('listNetworkOfferings'), data: { @@ -1824,13 +1887,9 @@ }) }); } - }); - //??? + }); } - }); - - - + }); } }, gateway: {