From a00c21686f36fa23ec4a2bb2097d806020af64b0 Mon Sep 17 00:00:00 2001 From: Jessica Wang Date: Thu, 21 Jun 2012 12:13:41 -0700 Subject: [PATCH] (1) CS-15057: Remove jquery.timer.js from source code. Replace it with native JavaScript functions. (2) CS-14604: cloudstack 3.0 UI - Add Zone Wizard - skip Guest Traffic step if OVS tunnel manager is enabled. (3) CS-15311: cloudstack 3.0 UI - Add Zone Wizard - add physical network step - no isolation method dropdown if network type is Basic. (4) CS-14769: Don't pass subdomainaccess param when scope=project. (5) CS-15157: cloudstack 3.0 UI - infrastructure page - physical network - network service providers - reset nspMap before populating listNetworkServiceProviders response to nspMap. --- ui/index.jsp | 1 - ui/lib/jquery.timers.js | 138 --------- ui/scripts/system.js | 101 ++++--- ui/scripts/ui-custom/physicalResources.js | 7 +- ui/scripts/zoneWizard.js | 327 ++++++++++++---------- 5 files changed, 229 insertions(+), 345 deletions(-) delete mode 100644 ui/lib/jquery.timers.js diff --git a/ui/index.jsp b/ui/index.jsp index bf026407444..3c377eaef02 100644 --- a/ui/index.jsp +++ b/ui/index.jsp @@ -1584,7 +1584,6 @@ - diff --git a/ui/lib/jquery.timers.js b/ui/lib/jquery.timers.js deleted file mode 100644 index bb51157d405..00000000000 --- a/ui/lib/jquery.timers.js +++ /dev/null @@ -1,138 +0,0 @@ -/** - * jQuery.timers - Timer abstractions for jQuery - * Written by Blair Mitchelmore (blair DOT mitchelmore AT gmail DOT com) - * Licensed under the WTFPL (http://sam.zoy.org/wtfpl/). - * Date: 2009/10/16 - * - * @author Blair Mitchelmore - * @version 1.2 - * - **/ - -jQuery.fn.extend({ - everyTime: function(interval, label, fn, times) { - return this.each(function() { - jQuery.timer.add(this, interval, label, fn, times); - }); - }, - oneTime: function(interval, label, fn) { - return this.each(function() { - jQuery.timer.add(this, interval, label, fn, 1); - }); - }, - stopTime: function(label, fn) { - return this.each(function() { - jQuery.timer.remove(this, label, fn); - }); - } -}); - -jQuery.extend({ - timer: { - global: [], - guid: 1, - dataKey: "jQuery.timer", - regex: /^([0-9]+(?:\.[0-9]*)?)\s*(.*s)?$/, - powers: { - // Yeah this is major overkill... - 'ms': 1, - 'cs': 10, - 'ds': 100, - 's': 1000, - 'das': 10000, - 'hs': 100000, - 'ks': 1000000 - }, - timeParse: function(value) { - if (value == undefined || value == null) - return null; - var result = this.regex.exec(jQuery.trim(value.toString())); - if (result[2]) { - var num = parseFloat(result[1]); - var mult = this.powers[result[2]] || 1; - return num * mult; - } else { - return value; - } - }, - add: function(element, interval, label, fn, times) { - var counter = 0; - - if (jQuery.isFunction(label)) { - if (!times) - times = fn; - fn = label; - label = interval; - } - - interval = jQuery.timer.timeParse(interval); - - if (typeof interval != 'number' || isNaN(interval) || interval < 0) - return; - - if (typeof times != 'number' || isNaN(times) || times < 0) - times = 0; - - times = times || 0; - - var timers = jQuery.data(element, this.dataKey) || jQuery.data(element, this.dataKey, {}); - - if (!timers[label]) - timers[label] = {}; - - fn.timerID = fn.timerID || this.guid++; - - var handler = function() { - if ((++counter > times && times !== 0) || fn.call(element, counter) === false) - jQuery.timer.remove(element, label, fn); - }; - - handler.timerID = fn.timerID; - - if (!timers[label][fn.timerID]) - timers[label][fn.timerID] = window.setInterval(handler,interval); - - this.global.push( element ); - - }, - remove: function(element, label, fn) { - var timers = jQuery.data(element, this.dataKey), ret; - - if ( timers ) { - - if (!label) { - for ( label in timers ) - this.remove(element, label, fn); - } else if ( timers[label] ) { - if ( fn ) { - if ( fn.timerID ) { - window.clearInterval(timers[label][fn.timerID]); - delete timers[label][fn.timerID]; - } - } else { - for ( var fn in timers[label] ) { - window.clearInterval(timers[label][fn]); - delete timers[label][fn]; - } - } - - for ( ret in timers[label] ) break; - if ( !ret ) { - ret = null; - delete timers[label]; - } - } - - for ( ret in timers ) break; - if ( !ret ) - jQuery.removeData(element, this.dataKey); - } - } - } -}); - -jQuery(window).bind("unload", function() { - jQuery.each(jQuery.timer.global, function(index, item) { - jQuery.timer.remove(item); - }); -}); diff --git a/ui/scripts/system.js b/ui/scripts/system.js index 33b541dfc09..3e022d2c22c 100644 --- a/ui/scripts/system.js +++ b/ui/scripts/system.js @@ -1349,7 +1349,7 @@ } else if($form.find('.form-item[rel=projectId]').css("display") != "none") { //project-specific array1.push("&projectid=" + args.data.projectId); - array1.push("&acltype=account"); + array1.push("&acltype=account"); } else { //domain-specific array1.push("&acltype=domain"); @@ -1822,7 +1822,7 @@ notification: { poll: pollAsyncJobResult } - } + } } }, dataProvider: function(args) { @@ -2484,9 +2484,8 @@ dataType: "json", async: true, success: function(json) { - var jobId = json.addnetworkserviceproviderresponse.jobid; - var timerKey = "addNetworkServiceProviderJob_"+jobId; - $("body").everyTime(2000, timerKey, function() { + var jobId = json.addnetworkserviceproviderresponse.jobid; + var addNetscalerProviderIntervalID = setInterval(function() { $.ajax({ url: createURL("queryAsyncJobResult&jobId="+jobId), dataType: "json", @@ -2496,7 +2495,7 @@ return; //Job has not completed } else { - $("body").stopTime(timerKey); + clearInterval(addNetscalerProviderIntervalID); if (result.jobstatus == 1) { nspMap["netscaler"] = result.jobresult.networkserviceprovider; addExternalLoadBalancer(args, selectedPhysicalNetworkObj, "addNetscalerLoadBalancer", "addnetscalerloadbalancerresponse", "netscalerloadbalancer"); @@ -2511,7 +2510,7 @@ alert("addNetworkServiceProvider&name=Netscaler failed. Error: " + errorMsg); } }); - }); + }, 3000); } }); } @@ -2713,9 +2712,8 @@ dataType: "json", async: true, success: function(json) { - var jobId = json.addnetworkserviceproviderresponse.jobid; - var timerKey = "addNetworkServiceProviderJob_"+jobId; - $("body").everyTime(2000, timerKey, function() { + var jobId = json.addnetworkserviceproviderresponse.jobid; + var addF5ProviderIntervalID = setInterval(function() { $.ajax({ url: createURL("queryAsyncJobResult&jobId="+jobId), dataType: "json", @@ -2725,7 +2723,7 @@ return; //Job has not completed } else { - $("body").stopTime(timerKey); + clearInterval(addF5ProviderIntervalID); if (result.jobstatus == 1) { nspMap["f5"] = json.queryasyncjobresultresponse.jobresult.networkserviceprovider; addExternalLoadBalancer(args, selectedPhysicalNetworkObj, "addF5LoadBalancer", "addf5bigiploadbalancerresponse"); @@ -2740,7 +2738,7 @@ alert("addNetworkServiceProvider&name=F5BigIpfailed. Error: " + errorMsg); } }); - }); + }, 3000); } }); } @@ -2962,8 +2960,7 @@ async: true, success: function(json) { var jobId = json.addnetworkserviceproviderresponse.jobid; - var timerKey = "addNetworkServiceProviderJob_"+jobId; - $("body").everyTime(2000, timerKey, function() { + var addJuniperSRXProviderIntervalID = setInterval(function() { $.ajax({ url: createURL("queryAsyncJobResult&jobId="+jobId), dataType: "json", @@ -2973,7 +2970,7 @@ return; //Job has not completed } else { - $("body").stopTime(timerKey); + clearInterval(addJuniperSRXProviderIntervalID); if (result.jobstatus == 1) { nspMap["srx"] = json.queryasyncjobresultresponse.jobresult.networkserviceprovider; addExternalFirewall(args, selectedPhysicalNetworkObj, "addSrxFirewall", "addsrxfirewallresponse", "srxfirewall"); @@ -2988,7 +2985,7 @@ alert("addNetworkServiceProvider&name=JuniperSRX failed. Error: " + errorMsg); } }); - }); + }, 3000); } }); } @@ -5120,9 +5117,8 @@ dataType: "json", async: true, success: function(json) { - var jobId = json.addnetworkserviceproviderresponse.jobid; - var timerKey = "addNetworkServiceProviderJob_"+jobId; - $("body").everyTime(2000, timerKey, function() { + var jobId = json.addnetworkserviceproviderresponse.jobid; + var addNetscalerProviderIntervalID = setInterval(function() { $.ajax({ url: createURL("queryAsyncJobResult&jobId="+jobId), dataType: "json", @@ -5132,7 +5128,7 @@ return; //Job has not completed } else { - $("body").stopTime(timerKey); + clearInterval(addNetscalerProviderIntervalID); if (result.jobstatus == 1) { nspMap["netscaler"] = result.jobresult.networkserviceprovider; addExternalLoadBalancer(args, selectedPhysicalNetworkObj, "addNetscalerLoadBalancer", "addnetscalerloadbalancerresponse", "netscalerloadbalancer"); @@ -5147,7 +5143,7 @@ alert("addNetworkServiceProvider&name=Netscaler failed. Error: " + errorMsg); } }); - }); + }, 3000); } }); } @@ -5314,8 +5310,7 @@ async: true, success: function(json) { var jobId = json.addnetworkserviceproviderresponse.jobid; - var timerKey = "addNetworkServiceProviderJob_"+jobId; - $("body").everyTime(2000, timerKey, function() { + var addF5ProviderIntervalID = setInterval(function() { $.ajax({ url: createURL("queryAsyncJobResult&jobId="+jobId), dataType: "json", @@ -5325,7 +5320,7 @@ return; //Job has not completed } else { - $("body").stopTime(timerKey); + clearInterval(addF5ProviderIntervalID); if (result.jobstatus == 1) { nspMap["f5"] = json.queryasyncjobresultresponse.jobresult.networkserviceprovider; addExternalLoadBalancer(args, selectedPhysicalNetworkObj, "addF5LoadBalancer", "addf5bigiploadbalancerresponse", "f5loadbalancer"); @@ -5340,7 +5335,7 @@ alert("addNetworkServiceProvider&name=F5BigIpfailed. Error: " + errorMsg); } }); - }); + }, 3000); } }); } @@ -5524,8 +5519,7 @@ async: true, success: function(json) { var jobId = json.addnetworkserviceproviderresponse.jobid; - var timerKey = "addNetworkServiceProviderJob_"+jobId; - $("body").everyTime(2000, timerKey, function() { + var addJuniperSRXProviderIntervalID = setInterval(function() { $.ajax({ url: createURL("queryAsyncJobResult&jobId="+jobId), dataType: "json", @@ -5535,7 +5529,7 @@ return; //Job has not completed } else { - $("body").stopTime(timerKey); + clearInterval(addJuniperSRXProviderIntervalID); if (result.jobstatus == 1) { nspMap["srx"] = json.queryasyncjobresultresponse.jobresult.networkserviceprovider; addExternalFirewall(args, selectedPhysicalNetworkObj, "addSrxFirewall", "addsrxfirewallresponse", "srxfirewall"); @@ -5550,7 +5544,7 @@ alert("addNetworkServiceProvider&name=JuniperSRX failed. Error: " + errorMsg); } }); - }); + }, 3000); } }); } @@ -6227,9 +6221,11 @@ array1.push("&username=" + todb(args.data.vCenterUsername)); array1.push("&password=" + todb(args.data.vCenterPassword)); - array1.push('&vsmipaddress=' + args.data.vsmipaddress); - array1.push('&vsmusername=' + args.data.vsmusername); - array1.push('&vsmpassword=' + args.data.vsmpassword); + if (args.data.vsmipaddress) { + array1.push('&vsmipaddress=' + args.data.vsmipaddress); + array1.push('&vsmusername=' + args.data.vsmusername); + array1.push('&vsmpassword=' + args.data.vsmpassword); + } var hostname = args.data.vCenterHost; var dcName = args.data.vCenterDatacenter; @@ -6491,7 +6487,7 @@ id: 'vSwitches', fields: { vsmdeviceid: { label: 'label.name' }, - vsmdevicestate: { label: 'label.state' } + vsmdevicestate: { label: 'label.state',indicator:{ 'Enabled': 'on' } } }, detailView: { actions: { @@ -6517,6 +6513,8 @@ {jobId: jid} } ); + //args.context.vSwitches[0].vsmdevicestate = item.allocationstate; + //addExtraPropertiesToClusterObject(item); args.response.success({ actionFilter: nexusActionfilter, data:item @@ -6553,6 +6551,8 @@ {jobId: jid} } ); + //args.context.vSwitches[0].vsmdevicestate = item.allocationstate; + //addExtraPropertiesToClusterObject(item); args.response.success({ actionFilter: nexusActionfilter, data:item @@ -6602,7 +6602,7 @@ vsmctrlvlanid: { label: 'label.vsmctrlvlanid' }, vsmpktvlanid: { label: 'label.vsmpktvlanid' }, vsmstoragevlanid: { label: 'label.vsmstoragevlanid' }, - vsmdevicestate: { label: 'label.state' } + vsmdevicestate: { label: 'label.state', indicator: { 'Enabled': 'on' } } }, dataProvider: function(args) { @@ -6631,10 +6631,11 @@ url: createURL("listCiscoNexusVSMs&clusterid=" + args.context.clusters[0].id), dataType: "json", success: function(json) { - var item = json.listcisconexusvsmscmdresponse.cisconexusvsm; + var item = json.listcisconexusvsmscmdresponse.cisconexusvsm; args.response.success({ actionFilter: nexusActionfilter, data: item + }); }, error: function(json) { @@ -8596,8 +8597,7 @@ dataType: "json", success: function(json) { var jobId = json.updatephysicalnetworkresponse.jobid; - var timerKey = "updatePhysicalNetworkJob_"+jobId; - $("body").everyTime(2000, timerKey, function() { + var enablePhysicalNetworkIntervalID = setInterval(function() { $.ajax({ url: createURL("queryAsyncJobResult&jobId="+jobId), dataType: "json", @@ -8607,7 +8607,7 @@ return; //Job has not completed } else { - $("body").stopTime(timerKey); + clearInterval(enablePhysicalNetworkIntervalID); if (result.jobstatus == 1) { //alert("updatePhysicalNetwork succeeded."); @@ -8652,8 +8652,7 @@ async: false, success: function(json) { var jobId = json.configurevirtualrouterelementresponse.jobid; - var timerKey = "configureVirtualRouterElementJob_"+jobId; - $("body").everyTime(2000, timerKey, function() { + var enableVirtualRouterElementIntervalID = setInterval(function() { $.ajax({ url: createURL("queryAsyncJobResult&jobId="+jobId), dataType: "json", @@ -8663,7 +8662,7 @@ return; //Job has not completed } else { - $("body").stopTime(timerKey); + clearInterval(enableVirtualRouterElementIntervalID); if (result.jobstatus == 1) { //alert("configureVirtualRouterElement succeeded."); @@ -8673,8 +8672,7 @@ async: false, success: function(json) { var jobId = json.updatenetworkserviceproviderresponse.jobid; - var timerKey = "updateNetworkServiceProviderJob_"+jobId; - $("body").everyTime(2000, timerKey, function() { + var enableVirtualRouterProviderIntervalID = setInterval(function() { $.ajax({ url: createURL("queryAsyncJobResult&jobId="+jobId), dataType: "json", @@ -8684,7 +8682,7 @@ return; //Job has not completed } else { - $("body").stopTime(timerKey); + clearInterval(enableVirtualRouterProviderIntervalID); if (result.jobstatus == 1) { //alert("Virtual Router Provider is enabled"); @@ -8714,8 +8712,7 @@ async: false, success: function(json) { var jobId = json.updatenetworkserviceproviderresponse.jobid; - var timerKey = "updateNetworkServiceProviderJob_"+jobId; - $("body").everyTime(2000, timerKey, function() { + var enableSecurityGroupProviderIntervalID = setInterval(function() { $.ajax({ url: createURL("queryAsyncJobResult&jobId="+jobId), dataType: "json", @@ -8725,7 +8722,7 @@ return; //Job has not completed } else { - $("body").stopTime(timerKey); + clearInterval(enableSecurityGroupProviderIntervalID); if (result.jobstatus == 1) { //alert("Security group provider is enabled"); @@ -8777,7 +8774,7 @@ alert("updateNetworkServiceProvider failed. Error: " + errorMsg); } }); - }); + }, 3000); } }); } @@ -8858,7 +8855,7 @@ alert("updateNetworkServiceProvider failed. Error: " + errorMsg); } }); - }); + }, 3000); } }); } @@ -8872,7 +8869,7 @@ alert("configureVirtualRouterElement failed. Error: " + errorMsg); } }); - }); + }, 3000); } }); } @@ -8886,7 +8883,7 @@ alert("updatePhysicalNetwork failed. Error: " + errorMsg); } }); - }); + }, 3000); } }); }; @@ -9163,6 +9160,8 @@ dataType: "json", async: false, success: function(json) { + nspMap = {}; //reset + var items = json.listnetworkserviceprovidersresponse.networkserviceprovider; if(items != null) { for(var i = 0; i < items.length; i++) { diff --git a/ui/scripts/ui-custom/physicalResources.js b/ui/scripts/ui-custom/physicalResources.js index 8acdec60188..e531c7b783a 100644 --- a/ui/scripts/ui-custom/physicalResources.js +++ b/ui/scripts/ui-custom/physicalResources.js @@ -82,8 +82,7 @@ dataType: 'json', success: function(json) { var jid = json.uploadcustomcertificateresponse.jobid; - var timerKey = "uploadcustomcertificatejob_" + jid; - $("body").everyTime(2000, timerKey, function() { + var uploadCustomCertificateIntervalID = setInterval(function() { $.ajax({ url: createURL("queryAsyncJobResult&jobId=" + jid), dataType: "json", @@ -93,7 +92,7 @@ return; //Job has not completed } else { - $("body").stopTime(timerKey); + clearInterval(uploadCustomCertificateIntervalID); if (result.jobstatus == 1) { cloudStack.dialog.notice({ message: 'Update SSL Certiciate succeeded' }); } @@ -108,7 +107,7 @@ $loading.remove(); } }); - }); + }, 3000); }, error: function(XMLHttpResponse) { cloudStack.dialog.notice({ message: 'Failed to update SSL Certificate. ' + parseXMLHttpResponse(XMLHttpResponse) }); diff --git a/ui/scripts/zoneWizard.js b/ui/scripts/zoneWizard.js index d6d1d9f0144..5843001dce4 100644 --- a/ui/scripts/zoneWizard.js +++ b/ui/scripts/zoneWizard.js @@ -17,6 +17,7 @@ var selectedNetworkOfferingHavingNetscaler = false; var returnedPublicVlanIpRanges = []; //public VlanIpRanges returned by API var configurationUseLocalStorage = false; + var skipGuestTrafficStep = false; // Makes URL string for traffic label var trafficLabelParam = function(trafficTypeID, data, physicalNetworkID) { @@ -241,15 +242,35 @@ if (args.data['network-model'] == 'Basic') { $('.setup-guest-traffic').addClass('basic'); $('.setup-guest-traffic').removeClass('advanced'); - } else { + skipGuestTrafficStep = false; //set value + } + else { $('.setup-guest-traffic').removeClass('basic'); $('.setup-guest-traffic').addClass('advanced'); + + //skip the step if OVS tunnel manager is enabled + skipGuestTrafficStep = false; //reset it before ajax call + $.ajax({ + url: createURL('listConfigurations'), + data: { + name: 'sdn.ovs.controller' + }, + dataType: "json", + async: false, + success: function(json) { + var items = json.listconfigurationsresponse.configuration; //2 entries returned: 'sdn.ovs.controller', 'sdn.ovs.controller.default.label' + $(items).each(function(){ + if(this.name == 'sdn.ovs.controller') { + if(this.value == 'true' || this.value == true) { + skipGuestTrafficStep = true; + } + return false; //break each loop + } + }); + } + }); } - - return args.data['network-model'] == 'Basic' || - $.grep(args.groupedData.physicalNetworks, function(network) { - return $.inArray('guest', network.trafficTypes) > -1; - }).length; + return !skipGuestTrafficStep; }, configureStorageTraffic: function(args) { @@ -339,17 +360,19 @@ url: createURL('listHypervisors'), async: false, data: { listAll: true }, - success: function(json) { + success: function(json) { + var items = json.listhypervisorsresponse.hypervisor; + var array1 = []; + if(items != null) { + for(var i = 0; i < items.length; i++) { + if(items[i].name == "XenServer") + array1.unshift({id: items[i].name, description: items[i].name}); + else + array1.push({id: items[i].name, description: items[i].name}); + } + } args.response.success({ - data: $.map( - json.listhypervisorsresponse.hypervisor, - function(hypervisor) { - return { - id: hypervisor.name, - description: hypervisor.name - }; - } - ) + data: array1 }); } }); @@ -1269,7 +1292,7 @@ var returnedPhysicalNetworks = []; - if(args.data.zone.networkType == "Basic") { + if(args.data.zone.networkType == "Basic") { //Basic zone *** var requestedTrafficTypeCount = 2; //request guest traffic type, management traffic type if(selectedNetworkOfferingHavingSG == true && selectedNetworkOfferingHavingEIP == true && selectedNetworkOfferingHavingELB == true) requestedTrafficTypeCount++; //request public traffic type @@ -1277,9 +1300,7 @@ //Basic zone has only one physical network var array1 = []; if("physicalNetworks" in args.data) { //from add-zone-wizard - array1.push("&name=" + todb(args.data.physicalNetworks[0].name)); - if(args.data.physicalNetworks[0].isolationMethod != null && args.data.physicalNetworks[0].isolationMethod.length > 0) - array1.push("&isolationmethods=" + todb(args.data.physicalNetworks[0].isolationMethod)); + array1.push("&name=" + todb(args.data.physicalNetworks[0].name)); } else { //from quick-install-wizard array1.push("&name=PhysicalNetworkInBasicZone"); @@ -1289,9 +1310,8 @@ url: createURL("createPhysicalNetwork&zoneid=" + args.data.returnedZone.id + array1.join("")), dataType: "json", success: function(json) { - var jobId = json.createphysicalnetworkresponse.jobid; - var timerKey = "createPhysicalNetworkJob_" + jobId; - $("body").everyTime(2000, timerKey, function(){ + var jobId = json.createphysicalnetworkresponse.jobid; + var createPhysicalNetworkIntervalID = setInterval(function() { $.ajax({ url: createURL("queryAsyncJobResult&jobid=" + jobId), dataType: "json", @@ -1300,8 +1320,9 @@ if (result.jobstatus == 0) { return; //Job has not completed } - else { - $("body").stopTime(timerKey); + else { + clearInterval(createPhysicalNetworkIntervalID); + if (result.jobstatus == 1) { var returnedBasicPhysicalNetwork = result.jobresult.physicalnetwork; var label = returnedBasicPhysicalNetwork.id + trafficLabelParam('guest', data); @@ -1311,9 +1332,8 @@ url: createURL("addTrafficType&trafficType=Guest&physicalnetworkid=" + label), dataType: "json", success: function(json) { - var jobId = json.addtraffictyperesponse.jobid; - var timerKey = "addTrafficTypeJob_" + jobId; - $("body").everyTime(2000, timerKey, function() { + var jobId = json.addtraffictyperesponse.jobid; + var addGuestTrafficTypeIntervalID = setInterval(function() { $.ajax({ url: createURL("queryAsyncJobResult&jobid=" + jobId), dataType: "json", @@ -1322,8 +1342,9 @@ if (result.jobstatus == 0) { return; //Job has not completed } - else { - $("body").stopTime(timerKey); + else { + clearInterval(addGuestTrafficTypeIntervalID); + if (result.jobstatus == 1) { returnedTrafficTypes.push(result.jobresult.traffictype); @@ -1346,8 +1367,8 @@ var errorMsg = parseXMLHttpResponse(XMLHttpResponse); alert("Failed to add Guest traffic type to basic zone. Error: " + errorMsg); } - }); - }); + }); + }, 3000); } }); @@ -1357,9 +1378,8 @@ url: createURL("addTrafficType&trafficType=Management&physicalnetworkid=" + returnedBasicPhysicalNetwork.id + label), dataType: "json", success: function(json) { - var jobId = json.addtraffictyperesponse.jobid; - var timerKey = "addTrafficTypeJob_" + jobId; - $("body").everyTime(2000, timerKey, function() { + var jobId = json.addtraffictyperesponse.jobid; + var addManagementTrafficTypeIntervalID = setInterval(function() { $.ajax({ url: createURL("queryAsyncJobResult&jobid=" + jobId), dataType: "json", @@ -1368,8 +1388,9 @@ if (result.jobstatus == 0) { return; //Job has not completed } - else { - $("body").stopTime(timerKey); + else { + clearInterval(addManagementTrafficTypeIntervalID); + if (result.jobstatus == 1) { returnedTrafficTypes.push(result.jobresult.traffictype); @@ -1392,8 +1413,8 @@ var errorMsg = parseXMLHttpResponse(XMLHttpResponse); alert("Failed to add Management traffic type to basic zone. Error: " + errorMsg); } - }); - }); + }); + }, 3000); } }); @@ -1405,9 +1426,8 @@ url: createURL('addTrafficType&physicalnetworkid=' + returnedBasicPhysicalNetwork.id + '&trafficType=Storage' + label), dataType: "json", success: function(json) { - var jobId = json.addtraffictyperesponse.jobid; - var timerKey = "addTrafficTypeJob_" + jobId; - $("body").everyTime(2000, timerKey, function() { + var jobId = json.addtraffictyperesponse.jobid; + var addStorageTrafficTypeIntervalID = setInterval(function() { $.ajax({ url: createURL("queryAsyncJobResult&jobid=" + jobId), dataType: "json", @@ -1416,8 +1436,9 @@ if (result.jobstatus == 0) { return; //Job has not completed } - else { - $("body").stopTime(timerKey); + else { + clearInterval(addStorageTrafficTypeIntervalID); + if (result.jobstatus == 1) { returnedTrafficTypes.push(result.jobresult.traffictype); @@ -1440,8 +1461,8 @@ var errorMsg = parseXMLHttpResponse(XMLHttpResponse); alert("Failed to add Management traffic type to basic zone. Error: " + errorMsg); } - }); - }); + }); + }, 3000); } }); } @@ -1452,9 +1473,8 @@ url: createURL("addTrafficType&trafficType=Public&physicalnetworkid=" + returnedBasicPhysicalNetwork.id + label), dataType: "json", success: function(json) { - var jobId = json.addtraffictyperesponse.jobid; - var timerKey = "addTrafficTypeJob_" + jobId; - $("body").everyTime(2000, timerKey, function() { + var jobId = json.addtraffictyperesponse.jobid; + var addPublicTrafficTypeIntervalID = setInterval(function() { $.ajax({ url: createURL("queryAsyncJobResult&jobid=" + jobId), dataType: "json", @@ -1463,8 +1483,9 @@ if (result.jobstatus == 0) { return; //Job has not completed } - else { - $("body").stopTime(timerKey); + else { + clearInterval(addPublicTrafficTypeIntervalID); + if (result.jobstatus == 1) { returnedTrafficTypes.push(result.jobresult.traffictype); @@ -1487,8 +1508,8 @@ var errorMsg = parseXMLHttpResponse(XMLHttpResponse); alert("Failed to add Public traffic type to basic zone. Error: " + errorMsg); } - }); - }); + }); + }, 3000); } }); } @@ -1502,8 +1523,9 @@ var errorMsg = parseXMLHttpResponse(XMLHttpResponse); alert("createPhysicalNetwork failed. Error: " + errorMsg); } - }); - }); + }); + }, 3000); + } }); } @@ -1518,9 +1540,8 @@ url: createURL("createPhysicalNetwork&zoneid=" + args.data.returnedZone.id + array1.join("")), dataType: "json", success: function(json) { - var jobId = json.createphysicalnetworkresponse.jobid; - var timerKey = "createPhysicalNetworkJob_" + jobId; - $("body").everyTime(2000, timerKey, function(){ + var jobId = json.createphysicalnetworkresponse.jobid; + var createPhysicalNetworkIntervalID = setInterval(function() { $.ajax({ url: createURL("queryAsyncJobResult&jobid=" + jobId), dataType: "json", @@ -1529,8 +1550,9 @@ if (result.jobstatus == 0) { return; //Job has not completed } - else { - $("body").stopTime(timerKey); + else { + clearInterval(createPhysicalNetworkIntervalID); + if (result.jobstatus == 1) { var returnedPhysicalNetwork = result.jobresult.physicalnetwork; returnedPhysicalNetwork.originalId = thisPhysicalNetwork.id; @@ -1561,9 +1583,8 @@ url: createURL(apiCmd + label), dataType: "json", success: function(json) { - var jobId = json.addtraffictyperesponse.jobid; - var timerKey = "addTrafficTypeJob_" + jobId; - $("body").everyTime(2000, timerKey, function() { + var jobId = json.addtraffictyperesponse.jobid; + var addTrafficTypeIntervalID = setInterval(function() { $.ajax({ url: createURL("queryAsyncJobResult&jobid=" + jobId), dataType: "json", @@ -1572,8 +1593,9 @@ if (result.jobstatus == 0) { return; //Job has not completed } - else { - $("body").stopTime(timerKey); + else { + clearInterval(addTrafficTypeIntervalID); + if (result.jobstatus == 1) { returnedTrafficTypes.push(result.jobresult.traffictype); @@ -1599,8 +1621,8 @@ var errorMsg = parseXMLHttpResponse(XMLHttpResponse); alert(apiCmd + " failed. Error: " + errorMsg); } - }); - }); + }); + }, 3000); } }); }); @@ -1614,8 +1636,8 @@ var errorMsg = parseXMLHttpResponse(XMLHttpResponse); alert("createPhysicalNetwork failed. Error: " + errorMsg); } - }); - }); + }); + }, 3000); } }); }); @@ -1630,10 +1652,8 @@ $.ajax({ url: createURL("updatePhysicalNetwork&state=Enabled&id=" + args.data.returnedBasicPhysicalNetwork.id), dataType: "json", - success: function(json) { - //var jobId = json.updatephysicalnetworkresponse.jobid; - var updatePhysicalNetworkTimer = "updatePhysicalNetworkJob_" + json.updatephysicalnetworkresponse.jobid; - $("body").everyTime(2000, updatePhysicalNetworkTimer, function() { + success: function(json) { + var enablePhysicalNetworkIntervalID = setInterval(function() { $.ajax({ url: createURL("queryAsyncJobResult&jobId=" + json.updatephysicalnetworkresponse.jobid), dataType: "json", @@ -1642,8 +1662,9 @@ if (result.jobstatus == 0) { return; //Job has not completed } - else { - $("body").stopTime(updatePhysicalNetworkTimer); + else { + clearInterval(enablePhysicalNetworkIntervalID); + if (result.jobstatus == 1) { //alert("updatePhysicalNetwork succeeded."); @@ -1686,10 +1707,8 @@ url: createURL("configureVirtualRouterElement&enabled=true&id=" + virtualRouterElementId), dataType: "json", async: false, - success: function(json) { - //var jobId = json.configurevirtualrouterelementresponse.jobid; - var configureVirtualRouterElementTimer = "configureVirtualRouterElementJob_" + json.configurevirtualrouterelementresponse.jobid; - $("body").everyTime(2000, configureVirtualRouterElementTimer, function() { + success: function(json) { + var enableVirtualRouterElementIntervalID = setInterval(function() { $.ajax({ url: createURL("queryAsyncJobResult&jobId=" + json.configurevirtualrouterelementresponse.jobid), dataType: "json", @@ -1698,8 +1717,9 @@ if (result.jobstatus == 0) { return; //Job has not completed } - else { - $("body").stopTime(configureVirtualRouterElementTimer); + else { + clearInterval(enableVirtualRouterElementIntervalID); + if (result.jobstatus == 1) { //alert("configureVirtualRouterElement succeeded."); @@ -1707,10 +1727,8 @@ url: createURL("updateNetworkServiceProvider&state=Enabled&id=" + virtualRouterProviderId), dataType: "json", async: false, - success: function(json) { - //var jobId = json.updatenetworkserviceproviderresponse.jobid; - var updateNetworkServiceProviderTimer = "updateNetworkServiceProviderJob_" + json.updatenetworkserviceproviderresponse.jobid; - $("body").everyTime(2000, updateNetworkServiceProviderTimer, function() { + success: function(json) { + var enableVirtualRouterProviderIntervalID = setInterval(function() { $.ajax({ url: createURL("queryAsyncJobResult&jobId=" + json.updatenetworkserviceproviderresponse.jobid), dataType: "json", @@ -1719,8 +1737,9 @@ if (result.jobstatus == 0) { return; //Job has not completed } - else { - $("body").stopTime(updateNetworkServiceProviderTimer); + else { + clearInterval(enableVirtualRouterProviderIntervalID); + if (result.jobstatus == 1) { //alert("Virtual Router Provider is enabled"); @@ -1752,9 +1771,8 @@ url: createURL("updateNetworkServiceProvider&state=Enabled&id=" + securityGroupProviderId), dataType: "json", async: false, - success: function(json) { - var updateNetworkServiceProviderTimer = "asyncJob_" + json.updatenetworkserviceproviderresponse.jobid; - $("body").everyTime(2000, updateNetworkServiceProviderTimer, function() { + success: function(json) { + var enableSecurityGroupProviderIntervalID = setInterval(function() { $.ajax({ url: createURL("queryAsyncJobResult&jobId=" + json.updatenetworkserviceproviderresponse.jobid), dataType: "json", @@ -1763,8 +1781,9 @@ if (result.jobstatus == 0) { return; //Job has not completed } - else { - $("body").stopTime(updateNetworkServiceProviderTimer); + else { + clearInterval(enableSecurityGroupProviderIntervalID); + if (result.jobstatus == 1) { //Security group provider has been enabled successfully stepFns.addNetscalerProvider({ data: args.data @@ -1779,8 +1798,8 @@ var errorMsg = parseXMLHttpResponse(XMLHttpResponse); alert("failed to enable security group provider. Error: " + errorMsg); } - }); - }); + }); + }, 3000); } }); } @@ -1799,8 +1818,8 @@ var errorMsg = parseXMLHttpResponse(XMLHttpResponse); alert("failed to enable Virtual Router Provider. Error: " + errorMsg); } - }); - }); + }); + }, 3000); } }); } @@ -1813,8 +1832,8 @@ var errorMsg = parseXMLHttpResponse(XMLHttpResponse); alert("configureVirtualRouterElement failed. Error: " + errorMsg); } - }); - }); + }); + }, 3000); } }); } @@ -1827,8 +1846,8 @@ var errorMsg = parseXMLHttpResponse(XMLHttpResponse); alert("updatePhysicalNetwork failed. Error: " + errorMsg); } - }); - }); + }); + }, 3000); } }); } @@ -1839,9 +1858,8 @@ url: createURL("updatePhysicalNetwork&state=Enabled&id=" + thisPhysicalNetwork.id), dataType: "json", success: function(json) { - var jobId = json.updatephysicalnetworkresponse.jobid; - var timerKey = "updatePhysicalNetworkJob_"+jobId; - $("body").everyTime(2000, timerKey, function() { + var jobId = json.updatephysicalnetworkresponse.jobid; + var enablePhysicalNetworkIntervalID = setInterval(function() { $.ajax({ url: createURL("queryAsyncJobResult&jobId="+jobId), dataType: "json", @@ -1850,8 +1868,9 @@ if (result.jobstatus == 0) { return; //Job has not completed } - else { - $("body").stopTime(timerKey); + else { + clearInterval(enablePhysicalNetworkIntervalID); + if (result.jobstatus == 1) { //alert("updatePhysicalNetwork succeeded."); @@ -1895,9 +1914,8 @@ dataType: "json", async: false, success: function(json) { - var jobId = json.configurevirtualrouterelementresponse.jobid; - var timerKey = "configureVirtualRouterElementJob_"+jobId; - $("body").everyTime(2000, timerKey, function() { + var jobId = json.configurevirtualrouterelementresponse.jobid; + var enableVirtualRouterElementIntervalID = setInterval(function() { $.ajax({ url: createURL("queryAsyncJobResult&jobId="+jobId), dataType: "json", @@ -1906,17 +1924,17 @@ if (result.jobstatus == 0) { return; //Job has not completed } - else { - $("body").stopTime(timerKey); + else { + clearInterval(enableVirtualRouterElementIntervalID); + if (result.jobstatus == 1) { //configureVirtualRouterElement succeeded $.ajax({ url: createURL("updateNetworkServiceProvider&state=Enabled&id=" + virtualRouterProviderId), dataType: "json", async: false, success: function(json) { - var jobId = json.updatenetworkserviceproviderresponse.jobid; - var timerKey = "updateNetworkServiceProviderJob_"+jobId; - $("body").everyTime(2000, timerKey, function() { + var jobId = json.updatenetworkserviceproviderresponse.jobid; + var enableVirtualRouterProviderIntervalID = setInterval(function() { $.ajax({ url: createURL("queryAsyncJobResult&jobId="+jobId), dataType: "json", @@ -1925,8 +1943,9 @@ if (result.jobstatus == 0) { return; //Job has not completed } - else { - $("body").stopTime(timerKey); + else { + clearInterval(enableVirtualRouterProviderIntervalID); + if (result.jobstatus == 1) { //Virtual Router Provider has been enabled successfully advZoneConfiguredPhysicalNetworkCount++; if(advZoneConfiguredPhysicalNetworkCount == args.data.returnedPhysicalNetworks.length) { //not call addPod() until all physical networks get configured @@ -1944,8 +1963,8 @@ var errorMsg = parseXMLHttpResponse(XMLHttpResponse); alert("updateNetworkServiceProvider failed. Error: " + errorMsg); } - }); - }); + }); + }, 3000); } }); } @@ -1958,8 +1977,8 @@ var errorMsg = parseXMLHttpResponse(XMLHttpResponse); alert("configureVirtualRouterElement failed. Error: " + errorMsg); } - }); - }); + }); + }, 3000); } }); } @@ -1972,8 +1991,8 @@ var errorMsg = parseXMLHttpResponse(XMLHttpResponse); alert("updatePhysicalNetwork failed. Error: " + errorMsg); } - }); - }); + }); + }, 3000); } }); }); @@ -1988,9 +2007,8 @@ url: createURL("addNetworkServiceProvider&name=Netscaler&physicalnetworkid=" + args.data.returnedBasicPhysicalNetwork.id), dataType: "json", async: false, - success: function(json) { - var addNetworkServiceProviderTimer = "asyncJob_" + json.addnetworkserviceproviderresponse.jobid; - $("body").everyTime(2000, addNetworkServiceProviderTimer, function() { + success: function(json) { + var addNetscalerProviderIntervalID = setInterval(function() { $.ajax({ url: createURL("queryAsyncJobResult&jobId=" + json.addnetworkserviceproviderresponse.jobid), dataType: "json", @@ -1999,8 +2017,9 @@ if (result.jobstatus == 0) { return; //Job has not completed } - else { - $("body").stopTime(addNetworkServiceProviderTimer); + else { + clearInterval(addNetscalerProviderIntervalID); + if (result.jobstatus == 1) { args.data.returnedNetscalerProvider = result.jobresult.networkserviceprovider; stepFns.addNetscalerDevice({ @@ -2018,8 +2037,8 @@ } }); }); - } - }); + } + }, 3000); //add netscaler provider (end) } else { //selectedNetworkOfferingHavingNetscaler == false @@ -2125,9 +2144,8 @@ $.ajax({ url: createURL("addNetscalerLoadBalancer" + array1.join("")), dataType: "json", - success: function(json) { - var addNetscalerLoadBalancerTimer = "asyncJob_" + json.addnetscalerloadbalancerresponse.jobid; - $("body").everyTime(2000, addNetscalerLoadBalancerTimer, function() { + success: function(json) { + var addNetscalerLoadBalancerIntervalID = setInterval(function() { $.ajax({ url: createURL("queryAsyncJobResult&jobid=" + json.addnetscalerloadbalancerresponse.jobid), dataType: "json", @@ -2136,18 +2154,17 @@ if(result.jobstatus == 0) { return; } - else { - $("body").stopTime(addNetscalerLoadBalancerTimer); + else { + clearInterval(addNetscalerLoadBalancerIntervalID); + if(result.jobstatus == 1) { args.data.returnedNetscalerProvider.returnedNetscalerloadbalancer = result.jobresult.netscalerloadbalancer; $.ajax({ url: createURL("updateNetworkServiceProvider&state=Enabled&id=" + args.data.returnedNetscalerProvider.id), dataType: "json", - success: function(json) { - var updateNetworkServiceProviderTimer = "asyncJob_" + json.updatenetworkserviceproviderresponse.jobid; - - $("body").everyTime(2000, updateNetworkServiceProviderTimer, function() { + success: function(json) { + var enableNetscalerProviderIntervalID = setInterval(function() { $.ajax({ url: createURL("queryAsyncJobResult&jobid=" + json.updatenetworkserviceproviderresponse.jobid), dataType: "json", @@ -2156,8 +2173,9 @@ if(result.jobstatus == 0) { return; } - else { - $("body").stopTime(updateNetworkServiceProviderTimer); + else { + clearInterval(enableNetscalerProviderIntervalID); + if(result.jobstatus == 1) { stepFns.addGuestNetwork({ data: args.data @@ -2168,8 +2186,8 @@ } } } - }); - }); + }); + }, 3000); }, error: function(XMLHttpResponse) { var errorMsg = parseXMLHttpResponse(XMLHttpResponse); @@ -2182,8 +2200,8 @@ } } } - }); - }); + }); + }, 3000); }, error: function(XMLHttpResponse) { var errorMsg = parseXMLHttpResponse(XMLHttpResponse); @@ -2424,7 +2442,14 @@ return true; }, - configureGuestTraffic: function(args) { + configureGuestTraffic: function(args) { + if(skipGuestTrafficStep == true) { + stepFns.addCluster({ + data: args.data + }); + return; + } + message(dictionary['message.configuring.guest.traffic']); if(args.data.returnedZone.networktype == "Basic") { //create an VlanIpRange for guest network in basic zone @@ -2488,9 +2513,8 @@ url: createURL("updatePhysicalNetwork&id=" + returnedId + "&vlan=" + todb(vlan)), dataType: "json", success: function(json) { - var jobId = json.updatephysicalnetworkresponse.jobid; - var timerKey = "asyncJob_" + jobId; - $("body").everyTime(2000, timerKey, function(){ + var jobId = json.updatephysicalnetworkresponse.jobid; + var updatePhysicalNetworkVlanIntervalID = setInterval(function() { $.ajax({ url: createURL("queryAsyncJobResult&jobid=" + jobId), dataType: "json", @@ -2499,8 +2523,9 @@ if(result.jobstatus == 0) { return; } - else { - $("body").stopTime(timerKey); + else { + clearInterval(updatePhysicalNetworkVlanIntervalID); + if(result.jobstatus == 1) { updatedCount++; if(updatedCount == physicalNetworksHavingGuestIncludingVlan.length) { @@ -2518,8 +2543,8 @@ var errorMsg = parseXMLHttpResponse(XMLHttpResponse); error('configureGuestTraffic', errorMsg, { fn: 'configureGuestTraffic', args: args }); } - }); - }); + }); + }, 3000); } }); });