From d7f90116fcf1bd9a6bf716a2f48bf076fba1da20 Mon Sep 17 00:00:00 2001 From: Brian Federle Date: Wed, 15 Feb 2012 16:30:54 -0800 Subject: [PATCH] bug 13743: New zone wizard step -- configure storage traffic For an advanced zone, with the storage traffic type assigned to a network, add a new step to configure the IP ranges of the storage traffic type. --- ui/index.jsp | 52 ++ ui/scripts/ui-custom/zoneWizard.js | 42 ++ ui/scripts/zoneWizard.js | 958 +++++++++++++++++++++++++++++ 3 files changed, 1052 insertions(+) diff --git a/ui/index.jsp b/ui/index.jsp index e65c2e465ef..1e0e701bdfd 100644 --- a/ui/index.jsp +++ b/ui/index.jsp @@ -490,11 +490,19 @@ zone-wizard-step-id="setupPhysicalNetwork" zone-wizard-prefilter="setupPhysicalNetwork">
@@ -591,11 +599,19 @@ zone-wizard-form="basicPhysicalNetwork" zone-wizard-prefilter="addNetscalerDevice">
@@ -608,11 +624,19 @@
@@ -626,11 +650,19 @@
@@ -647,11 +679,19 @@ zone-wizard-step-id="configureGuestTraffic" zone-wizard-prefilter="configureGuestTraffic">
@@ -667,6 +707,7 @@
+ +
+ Traffic between CloudStack's internal resources, including any components that communicate with the Management Server, such as hosts and CloudStack system VMs. Please configure storage traffic here. +>>>>>>> 5c06960... bug 13743: New zone wizard step -- configure storage traffic
diff --git a/ui/scripts/ui-custom/zoneWizard.js b/ui/scripts/ui-custom/zoneWizard.js index 3a727149234..f1dc1a06eaf 100644 --- a/ui/scripts/ui-custom/zoneWizard.js +++ b/ui/scripts/ui-custom/zoneWizard.js @@ -121,7 +121,10 @@ var $storageTrafficItem = $(storageTrafficItem); var storageTrafficData = {}; var fields = [ +<<<<<<< HEAD 'gateway', +======= +>>>>>>> 5c06960... bug 13743: New zone wizard step -- configure storage traffic 'netmask', 'vlanid', 'startip', @@ -648,7 +651,18 @@ // Remove network action $physicalNetworkItem.find('.button.remove.physical-network').click(function() { +<<<<<<< HEAD physicalNetwork.remove($physicalNetworkItem); +======= + $physicalNetworkItem.find('li.traffic-type-draggable').each(function() { + var trafficTypeID = $(this).attr('traffic-type-id'); + + physicalNetwork.assignTrafficType(trafficTypeID, $physicalNetworkItem.prev()); + }); + + $physicalNetworkItem.find('li.traffic-type-draggable.clone').remove(); + physicalNetwork.update($physicalNetworkItem.parent().find('.multi')); +>>>>>>> 5c06960... bug 13743: New zone wizard step -- configure storage traffic }); $physicalNetworkItem.addClass('disabled'); // Since there are no traffic types yet @@ -831,11 +845,19 @@ var makeMessage = function(message, isError) { var $li = $('
  • ') +<<<<<<< HEAD .addClass(!isError ? 'loading' : 'info') .append( $('').addClass('icon').html(' '), $('').addClass('text').html(message) ); +======= + .addClass(!isError ? 'loading' : 'info') + .append( + $('').addClass('icon').html(' '), + $('').addClass('text').html(message) + ); +>>>>>>> 5c06960... bug 13743: New zone wizard step -- configure storage traffic var $launchContainer = $launchStep.find('.launch-container'); $launchStep.find('ul').append($li); @@ -845,7 +867,11 @@ if (isError) { $li.prev().addClass('error'); } +<<<<<<< HEAD +======= + +>>>>>>> 5c06960... bug 13743: New zone wizard step -- configure storage traffic }; args.action({ @@ -1207,6 +1233,22 @@ drop: function(event, ui) { physicalNetwork.unassignTrafficType(ui.draggable); +<<<<<<< HEAD +======= + if (!physicalNetwork.isTrafficTypeClone(ui.draggable)) { + if ($.inArray(trafficTypeID, physicalNetwork.requiredTrafficTypes) == -1) { + physicalNetwork.unassignTrafficType(trafficTypeID, $wizard); + } else { + physicalNetwork.assignTrafficType( + trafficTypeID, + $wizard.find('.select-container.multi:first') + ); + } + } else if (!ui.draggable.closest('.traffic-types-drag-area').size()) { + ui.draggable.remove(); + } + +>>>>>>> 5c06960... bug 13743: New zone wizard step -- configure storage traffic return true; } }); diff --git a/ui/scripts/zoneWizard.js b/ui/scripts/zoneWizard.js index c1fa5a33795..e5abac69c7f 100644 --- a/ui/scripts/zoneWizard.js +++ b/ui/scripts/zoneWizard.js @@ -11,6 +11,7 @@ // // Automatically generated by addcopyright.py at 04/03/2012 (function(cloudStack, $) { +<<<<<<< HEAD var selectedNetworkOfferingHavingSG = false; var selectedNetworkOfferingHavingEIP = false; var selectedNetworkOfferingHavingELB = false; @@ -50,6 +51,13 @@ return trafficLabelStr; }; +======= + var networkOfferingObjs = []; + var selectedNetworkOfferingHavingSG = false; + var selectedNetworkOfferingHavingEIP = false; + var selectedNetworkOfferingHavingELB = false; + var returnedPublicVlanIpRanges = []; //public VlanIpRanges returned by API +>>>>>>> 5c06960... bug 13743: New zone wizard step -- configure storage traffic cloudStack.zoneWizard = { // Return required traffic types, for configure physical network screen @@ -173,6 +181,53 @@ action: function(args) { multiEditData = $.grep(multiEditData, function(item) { return item.index != args.context.multiRule[0].index; +<<<<<<< HEAD +======= + }); + args.response.success(); + } + } + }, + dataProvider: function(args) { + args.response.success({ + data: multiEditData + }); + } + }); + }, + + storageTrafficIPRange: function(args) { + var multiEditData = []; + var totalIndex = 0; + + return $('
    ').multiEdit({ + context: args.context, + noSelect: true, + fields: { + 'netmask': { edit: true, label: 'Netmask' }, + 'vlanid': { edit: true, label: 'VLAN', isOptional: true }, + 'startip': { edit: true, label: 'Start IP' }, + 'endip': { edit: true, label: 'End IP' }, + 'add-rule': { label: 'Add', addButton: true } + }, + add: { + label: 'Add', + action: function(args) { + multiEditData.push($.extend(args.data, { + index: totalIndex + })); + + totalIndex++; + args.response.success(); + } + }, + actions: { + destroy: { + label: 'Remove Rule', + action: function(args) { + multiEditData = $.grep(multiEditData, function(item) { + return item.index != args.context.multiRule[0].index; +>>>>>>> 5c06960... bug 13743: New zone wizard step -- configure storage traffic }); args.response.success(); } @@ -186,6 +241,7 @@ }); } }, +<<<<<<< HEAD preFilters: { addNetscalerDevice: function(args) { //add Netscaler @@ -196,6 +252,37 @@ } else { isShown= false; $('.conditional.netscaler').hide(); +======= + + preFilters: { + addPublicNetwork: function(args) { + var isShown; + if(args.data['network-model'] == 'Basic') { + if(selectedNetworkOfferingHavingSG == true && selectedNetworkOfferingHavingEIP == true && selectedNetworkOfferingHavingELB == true) { + $('.conditional.elb').show(); + isShown = true; + } + else { + $('.conditional.elb').hide(); + isShown = false; + } + } + else { //args.data['network-model'] == 'Advanced' + $('.conditional.elb').hide(); + isShown = true; + } + return isShown; + }, + + addNetscalerDevice: function(args) { //add Netscaler + var isShown; + if(args.data['network-model'] == 'Basic' && (selectedNetworkOfferingHavingSG == true && selectedNetworkOfferingHavingEIP == true && selectedNetworkOfferingHavingELB == true)) { + isShown = true; + $('.conditional.elb').show(); + } else { + isShown= false; + $('.conditional.elb').hide(); +>>>>>>> 5c06960... bug 13743: New zone wizard step -- configure storage traffic } return isShown; }, @@ -242,6 +329,7 @@ }, configureStorageTraffic: function(args) { +<<<<<<< HEAD return $.grep(args.groupedData.physicalNetworks, function(network) { return $.inArray('storage', network.trafficTypes) > -1; }).length; @@ -277,12 +365,35 @@ return (!configurationUseLocalStorage); } +======= + return args.data['network-model'] == 'Advanced' && + $.grep(args.groupedData.physicalNetworks, function(network) { + return $.inArray('storage', network.trafficTypes) > -1; + }).length; + }, + + addHost: function(args) { + return (args.groupedData.cluster.hypervisor != "VMware"); + } +>>>>>>> 5c06960... bug 13743: New zone wizard step -- configure storage traffic }, forms: { zone: { preFilter: function(args) { var $form = args.$form; +<<<<<<< HEAD +======= + + if (args.data['network-model'] == 'Basic') { + args.$form.find('[rel=networkOfferingId]').show(); + args.$form.find('[rel=guestcidraddress]').hide(); + } + else { //args.data['network-model'] == 'Advanced' + args.$form.find('[rel=networkOfferingId]').hide(); + args.$form.find('[rel=guestcidraddress]').show(); + } +>>>>>>> 5c06960... bug 13743: New zone wizard step -- configure storage traffic if (args.data['network-model'] == 'Basic') { args.$form.find('[rel=networkOfferingId]').show(); @@ -317,12 +428,20 @@ desc: 'message.tooltip.internal.dns.1' }, internaldns2: { +<<<<<<< HEAD label: 'label.internal.dns.2', desc: 'message.tooltip.internal.dns.2' }, hypervisor: { label: 'label.hypervisor', validation: { required: true }, +======= + label: 'Internal DNS 2', + desc: 'Name of a DNS server for use by CloudStack\'s internal system VMs in the zone. The private IP address for the pods must have a route to this server.' + }, + networkOfferingId: { + label: 'Network Offering', +>>>>>>> 5c06960... bug 13743: New zone wizard step -- configure storage traffic select: function(args) { $.ajax({ url: createURL('listHypervisors'), @@ -344,6 +463,7 @@ }); } }); +<<<<<<< HEAD } }, networkOfferingId: { @@ -440,6 +560,46 @@ } }); +======= + args.$select.change(function(){ + //reset when different network offering is selected + selectedNetworkOfferingHavingSG = false; + selectedNetworkOfferingHavingEIP = false; + selectedNetworkOfferingHavingELB = false; + + var selectedNetworkOfferingId = $(this).val(); + + $(networkOfferingObjs).each(function(){ + if(this.id == selectedNetworkOfferingId) { + selectedNetworkOfferingObj = this; + return false; //break $.each() loop + } + }); + + $(selectedNetworkOfferingObj.service).each(function(){ + var thisService = this; + if(thisService.name == "SecurityGroup") { + selectedNetworkOfferingHavingSG = true; + } + else if(thisService.name == "StaticNat") { + $(thisService.capability).each(function(){ + if(this.name == "ElasticIp" && this.value == "true") { + selectedNetworkOfferingHavingEIP = true; + return false; //break $.each() loop + } + }); + } + else if(thisService.name == "Lb") { + $(thisService.capability).each(function(){ + if(this.name == "ElasticLb" && this.value == "true") { + selectedNetworkOfferingHavingELB = true; + return false; //break $.each() loop + } + }); + } + }); + }); +>>>>>>> 5c06960... bug 13743: New zone wizard step -- configure storage traffic } }, networkdomain: { @@ -451,10 +611,22 @@ defaultValue: '10.1.1.0/24', validation: { required: false } }, +<<<<<<< HEAD ispublic: { isReverse: true, isBoolean: true, label: 'label.public', +======= + guestcidraddress: { + label: 'Guest CIDR', + defaultValue: '10.1.1.0/24', + validation: { required: false } + }, + ispublic: { + isReverse: true, + isBoolean: true, + label: 'Public', +>>>>>>> 5c06960... bug 13743: New zone wizard step -- configure storage traffic isChecked: true //checked by default (public zone) }, domain: { @@ -513,6 +685,7 @@ }, basicPhysicalNetwork: { //"Netscaler" now +<<<<<<< HEAD preFilter: cloudStack.preFilter.addLoadBalancerDevice, fields: { ip: { @@ -527,6 +700,21 @@ }, networkdevicetype: { label: 'label.type', +======= + fields: { + ip: { + label: 'IP address' + }, + username: { + label: 'Username' + }, + password: { + label: 'Password', + isPassword: true + }, + networkdevicetype: { + label: 'Type', +>>>>>>> 5c06960... bug 13743: New zone wizard step -- configure storage traffic select: function(args) { var items = []; items.push({id: "NetscalerMPXLoadBalancer", description: "NetScaler MPX LoadBalancer"}); @@ -536,6 +724,7 @@ } }, publicinterface: { +<<<<<<< HEAD label: 'label.public.interface' }, privateinterface: { @@ -553,6 +742,34 @@ capacity: { label: 'label.capacity', validation: { required: false, number: true } +======= + label: 'Public interface' + }, + privateinterface: { + label: 'Private interface' + }, + numretries: { + label: 'Number of retries', + defaultValue: '2' + }, + inline: { + label: 'Mode', + select: function(args) { + var items = []; + items.push({id: "false", description: "side by side"}); + items.push({id: "true", description: "inline"}); + args.response.success({data: items}); + } + }, + capacity: { + label: 'Capacity', + validation: { required: false, number: true } + }, + dedicated: { + label: 'Dedicated', + isBoolean: true, + isChecked: false +>>>>>>> 5c06960... bug 13743: New zone wizard step -- configure storage traffic } } }, @@ -601,10 +818,17 @@ fields: { //Basic (start) +<<<<<<< HEAD guestGateway: { label: 'label.guest.gateway' }, guestNetmask: { label: 'label.guest.netmask' }, guestStartIp: { label: 'label.guest.start.ip' }, guestEndIp: { label: 'label.guest.end.ip' }, +======= + guestGateway: { label: 'Guest gateway' }, + guestNetmask: { label: 'Guest netmask' }, + guestStartIp: { label: 'Guest start IP' }, + guestEndIp: { label: 'Guest end IP' }, +>>>>>>> 5c06960... bug 13743: New zone wizard step -- configure storage traffic //Basic (end) //Advanced (start) @@ -991,6 +1215,8 @@ //$('li[input_group="clvm"]', $dialogAddPool).hide(); $form.find('[rel=volumegroup]').hide(); +<<<<<<< HEAD +======= //$('li[input_group="vmfs"]', $dialogAddPool).hide(); $form.find('[rel=vCenterDataCenter]').hide(); $form.find('[rel=vCenterDataStore]').hide(); @@ -1011,10 +1237,34 @@ //$('li[input_group="clvm"]', $dialogAddPool).show(); $form.find('[rel=volumegroup]').css('display', 'inline-block'); +>>>>>>> 5c06960... bug 13743: New zone wizard step -- configure storage traffic //$('li[input_group="vmfs"]', $dialogAddPool).hide(); $form.find('[rel=vCenterDataCenter]').hide(); $form.find('[rel=vCenterDataStore]').hide(); } +<<<<<<< HEAD + else if($(this).val() == "clvm") { + //$("#add_pool_server_container", $dialogAddPool).hide(); + $form.find('[rel=server]').hide(); + //$dialogAddPool.find("#add_pool_nfs_server").val("localhost"); + $form.find('[rel=server]').find(".value").find("input").val("localhost"); + + //$('li[input_group="nfs"]', $dialogAddPool).hide(); + $form.find('[rel=path]').hide(); + + //$('li[input_group="iscsi"]', $dialogAddPool).hide(); + $form.find('[rel=iqn]').hide(); + $form.find('[rel=lun]').hide(); + + //$('li[input_group="clvm"]', $dialogAddPool).show(); + $form.find('[rel=volumegroup]').css('display', 'inline-block'); + + //$('li[input_group="vmfs"]', $dialogAddPool).hide(); + $form.find('[rel=vCenterDataCenter]').hide(); + $form.find('[rel=vCenterDataStore]').hide(); + } +======= +>>>>>>> 5c06960... bug 13743: New zone wizard step -- configure storage traffic else if(protocol == "vmfs") { //$dialogAddPool.find("#add_pool_server_container").show(); $form.find('[rel=server]').css('display', 'block'); @@ -1105,9 +1355,15 @@ //clvm volumegroup: { +<<<<<<< HEAD label: 'label.volgroup', validation: { required: true }, isHidden: true +======= + label: 'Volume Group', + validation: { required: false }, // Primary storage is not required. User can use local storage instead of primary storage. + isHidden: true +>>>>>>> 5c06960... bug 13743: New zone wizard step -- configure storage traffic }, //vmfs @@ -1155,8 +1411,13 @@ var data = args.data; var stepFns = { +<<<<<<< HEAD addZone: function() { message(dictionary['message.creating.zone']); +======= + addZone: function() { + message('Creating zone'); +>>>>>>> 5c06960... bug 13743: New zone wizard step -- configure storage traffic var array1 = []; var networkType = args.data.zone.networkType; //"Basic", "Advanced" @@ -1180,11 +1441,17 @@ if (internaldns2 != null && internaldns2.length > 0) array1.push("&internaldns2=" + todb(internaldns2)); +<<<<<<< HEAD if(args.data.pluginFrom == null) { //from zone wizard, not from quick instsaller(args.data.pluginFrom != null && args.data.pluginFrom.name == 'installWizard') who doesn't have public checkbox if(args.data.zone.ispublic == null) //public checkbox in zone wizard is unchecked array1.push("&domainid=" + args.data.zone.domain); } +======= + if(args.data.zone.ispublic == null) //public checkbox is unchecked + array1.push("&domainid=" + args.data.zone.domain); + +>>>>>>> 5c06960... bug 13743: New zone wizard step -- configure storage traffic if(args.data.zone.networkdomain != null && args.data.zone.networkdomain.length > 0) array1.push("&domain=" + todb(args.data.zone.networkdomain)); @@ -1207,7 +1474,11 @@ }, addPhysicalNetworks: function(args) { +<<<<<<< HEAD message(dictionary['message.creating.physical.networks']); +======= + message('Creating physical network(s)'); +>>>>>>> 5c06960... bug 13743: New zone wizard step -- configure storage traffic var returnedPhysicalNetworks = []; @@ -1215,6 +1486,7 @@ var requestedTrafficTypeCount = 2; //request guest traffic type, management traffic type if(selectedNetworkOfferingHavingSG == true && selectedNetworkOfferingHavingEIP == true && selectedNetworkOfferingHavingELB == true) requestedTrafficTypeCount++; //request public traffic type +<<<<<<< HEAD //Basic zone has only one physical network var array1 = []; @@ -1229,6 +1501,11 @@ $.ajax({ url: createURL("createPhysicalNetwork&zoneid=" + args.data.returnedZone.id + array1.join("")), +======= + + $.ajax({ + url: createURL("createPhysicalNetwork&zoneid=" + args.data.returnedZone.id + "&name=PhysicalNetworkInBasicZone"), +>>>>>>> 5c06960... bug 13743: New zone wizard step -- configure storage traffic dataType: "json", success: function(json) { var jobId = json.createphysicalnetworkresponse.jobid; @@ -1246,11 +1523,18 @@ $("body").stopTime(timerKey); if (result.jobstatus == 1) { var returnedBasicPhysicalNetwork = result.jobresult.physicalnetwork; +<<<<<<< HEAD var label = returnedBasicPhysicalNetwork.id + trafficLabelParam('guest', data); var returnedTrafficTypes = []; $.ajax({ url: createURL("addTrafficType&trafficType=Guest&physicalnetworkid=" + label), +======= + + var returnedTrafficTypes = []; + + $.ajax({ + url: createURL("addTrafficType&trafficType=Guest&physicalnetworkid=" + returnedBasicPhysicalNetwork.id), dataType: "json", success: function(json) { var jobId = json.addtraffictyperesponse.jobid; @@ -1280,6 +1564,52 @@ } } else if (result.jobstatus == 2) { + alert("Failed to add Guest traffic type to basic zone. Error: " + fromdb(result.jobresult.errortext)); + } + } + }, + error: function(XMLHttpResponse) { + var errorMsg = parseXMLHttpResponse(XMLHttpResponse); + alert("Failed to add Guest traffic type to basic zone. Error: " + errorMsg); + } + }); + }); + } + }); + + $.ajax({ + url: createURL("addTrafficType&trafficType=Management&physicalnetworkid=" + returnedBasicPhysicalNetwork.id), +>>>>>>> 5c06960... bug 13743: New zone wizard step -- configure storage traffic + dataType: "json", + success: function(json) { + var jobId = json.addtraffictyperesponse.jobid; + var timerKey = "addTrafficTypeJob_" + jobId; + $("body").everyTime(2000, timerKey, function() { + $.ajax({ + url: createURL("queryAsyncJobResult&jobid=" + jobId), + dataType: "json", + success: function(json) { + var result = json.queryasyncjobresultresponse; + if (result.jobstatus == 0) { + return; //Job has not completed + } + else { + $("body").stopTime(timerKey); + if (result.jobstatus == 1) { + returnedTrafficTypes.push(result.jobresult.traffictype); + + if(returnedTrafficTypes.length == requestedTrafficTypeCount) { //all requested traffic types have been added + returnedBasicPhysicalNetwork.returnedTrafficTypes = returnedTrafficTypes; + + stepFns.configurePhysicalNetwork({ + data: $.extend(args.data, { + returnedBasicPhysicalNetwork: returnedBasicPhysicalNetwork + }) + }); + } + } + else if (result.jobstatus == 2) { +<<<<<<< HEAD alert("Failed to add Guest traffic type to basic zone. Error: " + _s(result.jobresult.errortext)); } } @@ -1327,6 +1657,9 @@ } else if (result.jobstatus == 2) { alert("Failed to add Management traffic type to basic zone. Error: " + _s(result.jobresult.errortext)); +======= + alert("Failed to add Management traffic type to basic zone. Error: " + fromdb(result.jobresult.errortext)); +>>>>>>> 5c06960... bug 13743: New zone wizard step -- configure storage traffic } } }, @@ -1339,6 +1672,7 @@ } }); +<<<<<<< HEAD // Storage traffic if (data.physicalNetworks && $.inArray('storage', data.physicalNetworks[0].trafficTypes) > -1) { @@ -1392,6 +1726,11 @@ label = trafficLabelParam('public', data); $.ajax({ url: createURL("addTrafficType&trafficType=Public&physicalnetworkid=" + returnedBasicPhysicalNetwork.id + label), +======= + if(selectedNetworkOfferingHavingSG == true && selectedNetworkOfferingHavingEIP == true && selectedNetworkOfferingHavingELB == true) { + $.ajax({ + url: createURL("addTrafficType&trafficType=Public&physicalnetworkid=" + returnedBasicPhysicalNetwork.id), +>>>>>>> 5c06960... bug 13743: New zone wizard step -- configure storage traffic dataType: "json", success: function(json) { var jobId = json.addtraffictyperesponse.jobid; @@ -1421,7 +1760,11 @@ } } else if (result.jobstatus == 2) { +<<<<<<< HEAD alert("Failed to add Public traffic type to basic zone. Error: " + _s(result.jobresult.errortext)); +======= + alert("Failed to add Public traffic type to basic zone. Error: " + fromdb(result.jobresult.errortext)); +>>>>>>> 5c06960... bug 13743: New zone wizard step -- configure storage traffic } } }, @@ -1436,7 +1779,11 @@ } } else if (result.jobstatus == 2) { +<<<<<<< HEAD alert("createPhysicalNetwork failed. Error: " + _s(result.jobresult.errortext)); +======= + alert("createPhysicalNetwork failed. Error: " + fromdb(result.jobresult.errortext)); +>>>>>>> 5c06960... bug 13743: New zone wizard step -- configure storage traffic } } }, @@ -1450,6 +1797,7 @@ }); } else if(args.data.zone.networkType == "Advanced") { +<<<<<<< HEAD $(args.data.physicalNetworks).each(function(index) { var thisPhysicalNetwork = this; var array1 = []; @@ -1458,6 +1806,12 @@ array1.push("&isolationmethods=" + todb(thisPhysicalNetwork.isolationMethod)); $.ajax({ url: createURL("createPhysicalNetwork&zoneid=" + args.data.returnedZone.id + array1.join("")), +======= + $(args.data.physicalNetworks).each(function(){ + var thisPhysicalNetwork = this; + $.ajax({ + url: createURL("createPhysicalNetwork&zoneid=" + args.data.returnedZone.id + "&name=" + todb(thisPhysicalNetwork.name)), +>>>>>>> 5c06960... bug 13743: New zone wizard step -- configure storage traffic dataType: "json", success: function(json) { var jobId = json.createphysicalnetworkresponse.jobid; @@ -1478,6 +1832,7 @@ returnedPhysicalNetwork.originalId = thisPhysicalNetwork.id; var returnedTrafficTypes = []; +<<<<<<< HEAD var label; // Traffic type label $(thisPhysicalNetwork.trafficTypes).each(function(){ var thisTrafficType = this; @@ -1501,6 +1856,22 @@ $.ajax({ url: createURL(apiCmd + label), +======= + $(thisPhysicalNetwork.trafficTypes).each(function(){ + var thisTrafficType = this; + var apiCmd = "addTrafficType&physicalnetworkid=" + returnedPhysicalNetwork.id; + if(thisTrafficType == "public") + apiCmd += "&trafficType=Public"; + else if(thisTrafficType == "management") + apiCmd += "&trafficType=Management"; + else if(thisTrafficType == "guest") + apiCmd += "&trafficType=Guest"; + else if(thisTrafficType == "storage") + apiCmd += "&trafficType=Storage"; + + $.ajax({ + url: createURL(apiCmd), +>>>>>>> 5c06960... bug 13743: New zone wizard step -- configure storage traffic dataType: "json", success: function(json) { var jobId = json.addtraffictyperesponse.jobid; @@ -1533,7 +1904,11 @@ } } else if (result.jobstatus == 2) { +<<<<<<< HEAD alert(apiCmd + " failed. Error: " + _s(result.jobresult.errortext)); +======= + alert(apiCmd + " failed. Error: " + fromdb(result.jobresult.errortext)); +>>>>>>> 5c06960... bug 13743: New zone wizard step -- configure storage traffic } } }, @@ -1548,7 +1923,11 @@ }); } else if (result.jobstatus == 2) { +<<<<<<< HEAD alert("createPhysicalNetwork failed. Error: " + _s(result.jobresult.errortext)); +======= + alert("createPhysicalNetwork failed. Error: " + fromdb(result.jobresult.errortext)); +>>>>>>> 5c06960... bug 13743: New zone wizard step -- configure storage traffic } } }, @@ -1562,6 +1941,7 @@ }); }); } +<<<<<<< HEAD }, //afterCreateZonePhysicalNetworkTrafficTypes: enable physical network, enable virtual router element, enable network service provider @@ -1975,6 +2355,441 @@ addNetscalerDevice: function(args) { message(dictionary['message.adding.Netscaler.device']); +======= + }, + + //afterCreateZonePhysicalNetworkTrafficTypes: enable physical network, enable virtual router element, enable network service provider + configurePhysicalNetwork: function(args) { + message('Configuring physical network(s)'); + + if(args.data.zone.networkType == "Basic") { + $.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() { + $.ajax({ + url: createURL("queryAsyncJobResult&jobId=" + json.updatephysicalnetworkresponse.jobid), + dataType: "json", + success: function(json) { + var result = json.queryasyncjobresultresponse; + if (result.jobstatus == 0) { + return; //Job has not completed + } + else { + $("body").stopTime(updatePhysicalNetworkTimer); + if (result.jobstatus == 1) { + //alert("updatePhysicalNetwork succeeded."); + + // get network service provider ID of Virtual Router + var virtualRouterProviderId; + $.ajax({ + url: createURL("listNetworkServiceProviders&name=VirtualRouter&physicalNetworkId=" + args.data.returnedBasicPhysicalNetwork.id), + dataType: "json", + async: false, + success: function(json) { + var items = json.listnetworkserviceprovidersresponse.networkserviceprovider; + if(items != null && items.length > 0) { + virtualRouterProviderId = items[0].id; + } + } + }); + if(virtualRouterProviderId == null) { + alert("error: listNetworkServiceProviders API doesn't return VirtualRouter provider ID"); + return; + } + + var virtualRouterElementId; + $.ajax({ + url: createURL("listVirtualRouterElements&nspid=" + virtualRouterProviderId), + dataType: "json", + async: false, + success: function(json) { + var items = json.listvirtualrouterelementsresponse.virtualrouterelement; + if(items != null && items.length > 0) { + virtualRouterElementId = items[0].id; + } + } + }); + if(virtualRouterElementId == null) { + alert("error: listVirtualRouterElements API doesn't return Virtual Router Element Id"); + return; + } + + $.ajax({ + 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() { + $.ajax({ + url: createURL("queryAsyncJobResult&jobId=" + json.configurevirtualrouterelementresponse.jobid), + dataType: "json", + success: function(json) { + var result = json.queryasyncjobresultresponse; + if (result.jobstatus == 0) { + return; //Job has not completed + } + else { + $("body").stopTime(configureVirtualRouterElementTimer); + if (result.jobstatus == 1) { + //alert("configureVirtualRouterElement succeeded."); + + $.ajax({ + 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() { + $.ajax({ + url: createURL("queryAsyncJobResult&jobId=" + json.updatenetworkserviceproviderresponse.jobid), + dataType: "json", + success: function(json) { + var result = json.queryasyncjobresultresponse; + if (result.jobstatus == 0) { + return; //Job has not completed + } + else { + $("body").stopTime(updateNetworkServiceProviderTimer); + if (result.jobstatus == 1) { + //alert("Virtual Router Provider is enabled"); + + if(selectedNetworkOfferingHavingSG == true) { //need to Enable security group provider first + // get network service provider ID of Security Group + var securityGroupProviderId; + $.ajax({ + url: createURL("listNetworkServiceProviders&name=SecurityGroupProvider&physicalNetworkId=" + args.data.returnedBasicPhysicalNetwork.id), + dataType: "json", + async: false, + success: function(json) { + var items = json.listnetworkserviceprovidersresponse.networkserviceprovider; + if(items != null && items.length > 0) { + securityGroupProviderId = items[0].id; + } + } + }); + if(securityGroupProviderId == null) { + alert("error: listNetworkServiceProviders API doesn't return security group provider ID"); + return; + } + + $.ajax({ + 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() { + $.ajax({ + url: createURL("queryAsyncJobResult&jobId=" + json.updatenetworkserviceproviderresponse.jobid), + dataType: "json", + success: function(json) { + var result = json.queryasyncjobresultresponse; + if (result.jobstatus == 0) { + return; //Job has not completed + } + else { + $("body").stopTime(updateNetworkServiceProviderTimer); + if (result.jobstatus == 1) { //Security group provider has been enabled successfully + //"ElasticIP + ElasticLB" + if(selectedNetworkOfferingHavingEIP == true && selectedNetworkOfferingHavingELB == true) { //inside "selectedNetworkOfferingHavingSG == true" section + //add netscaler provider (start) + $.ajax({ + 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() { + $.ajax({ + url: createURL("queryAsyncJobResult&jobId=" + json.addnetworkserviceproviderresponse.jobid), + dataType: "json", + success: function(json) { + var result = json.queryasyncjobresultresponse; + if (result.jobstatus == 0) { + return; //Job has not completed + } + else { + $("body").stopTime(addNetworkServiceProviderTimer); + if (result.jobstatus == 1) { + args.data.returnedNetscalerProvider = result.jobresult.networkserviceprovider; + + stepFns.addNetscalerDevice({ + data: args.data + }); + } + else if (result.jobstatus == 2) { + alert("addNetworkServiceProvider&name=Netscaler failed. Error: " + fromdb(result.jobresult.errortext)); + } + } + }, + error: function(XMLHttpResponse) { + var errorMsg = parseXMLHttpResponse(XMLHttpResponse); + alert("addNetworkServiceProvider&name=Netscaler failed. Error: " + errorMsg); + } + }); + }); + } + }); + //add netscaler provider (end) + } + else { //no "ElasticIP + ElasticLB" + //create a guest network for basic zone + var array2 = []; + array2.push("&zoneid=" + args.data.returnedZone.id); + array2.push("&name=guestNetworkForBasicZone"); + array2.push("&displaytext=guestNetworkForBasicZone"); + array2.push("&networkofferingid=" + args.data.zone.networkOfferingId); + $.ajax({ + url: createURL("createNetwork" + array2.join("")), + dataType: "json", + async: false, + success: function(json) { + //basic zone has only one physical network => addPod() will be called only once => so don't need to double-check before calling addPod() + stepFns.addPod({ + data: $.extend(args.data, { + returnedGuestNetwork: json.createnetworkresponse.network + }) + }); + } + }); + } + } + else if (result.jobstatus == 2) { + alert("failed to enable security group provider. Error: " + fromdb(result.jobresult.errortext)); + } + } + }, + error: function(XMLHttpResponse) { + var errorMsg = parseXMLHttpResponse(XMLHttpResponse); + alert("failed to enable security group provider. Error: " + errorMsg); + } + }); + }); + } + }); + } + else { //selectedNetworkOfferingHavingSG == false + //create a guest network for basic zone + var array2 = []; + array2.push("&zoneid=" + args.data.returnedZone.id); + array2.push("&name=guestNetworkForBasicZone"); + array2.push("&displaytext=guestNetworkForBasicZone"); + array2.push("&networkofferingid=" + args.data.zone.networkOfferingId); + $.ajax({ + url: createURL("createNetwork" + array2.join("")), + dataType: "json", + async: false, + success: function(json) { + //basic zone has only one physical network => addPod() will be called only once => so don't need to double-check before calling addPod() + stepFns.addPod({ + data: $.extend(args.data, { + returnedGuestNetwork: json.createnetworkresponse.network + }) + }); + } + }); + } + } + else if (result.jobstatus == 2) { + alert("failed to enable Virtual Router Provider. Error: " + fromdb(result.jobresult.errortext)); + } + } + }, + error: function(XMLHttpResponse) { + var errorMsg = parseXMLHttpResponse(XMLHttpResponse); + alert("failed to enable Virtual Router Provider. Error: " + errorMsg); + } + }); + }); + } + }); + } + else if (result.jobstatus == 2) { + alert("configureVirtualRouterElement failed. Error: " + fromdb(result.jobresult.errortext)); + } + } + }, + error: function(XMLHttpResponse) { + var errorMsg = parseXMLHttpResponse(XMLHttpResponse); + alert("configureVirtualRouterElement failed. Error: " + errorMsg); + } + }); + }); + } + }); + } + else if (result.jobstatus == 2) { + alert("updatePhysicalNetwork failed. Error: " + fromdb(result.jobresult.errortext)); + } + } + }, + error: function(XMLHttpResponse) { + var errorMsg = parseXMLHttpResponse(XMLHttpResponse); + alert("updatePhysicalNetwork failed. Error: " + errorMsg); + } + }); + }); + } + }); + } + else if(args.data.zone.networkType == "Advanced") { + $(args.data.returnedPhysicalNetworks).each(function(){ + var thisPhysicalNetwork = this; + $.ajax({ + 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() { + $.ajax({ + url: createURL("queryAsyncJobResult&jobId="+jobId), + dataType: "json", + success: function(json) { + var result = json.queryasyncjobresultresponse; + if (result.jobstatus == 0) { + return; //Job has not completed + } + else { + $("body").stopTime(timerKey); + if (result.jobstatus == 1) { + //alert("updatePhysicalNetwork succeeded."); + + // get network service provider ID of Virtual Router + var virtualRouterProviderId; + $.ajax({ + url: createURL("listNetworkServiceProviders&name=VirtualRouter&physicalNetworkId=" + thisPhysicalNetwork.id), + dataType: "json", + async: false, + success: function(json) { + var items = json.listnetworkserviceprovidersresponse.networkserviceprovider; + if(items != null && items.length > 0) { + virtualRouterProviderId = items[0].id; + } + } + }); + if(virtualRouterProviderId == null) { + alert("error: listNetworkServiceProviders API doesn't return VirtualRouter provider ID"); + return; + } + + var virtualRouterElementId; + $.ajax({ + url: createURL("listVirtualRouterElements&nspid=" + virtualRouterProviderId), + dataType: "json", + async: false, + success: function(json) { + var items = json.listvirtualrouterelementsresponse.virtualrouterelement; + if(items != null && items.length > 0) { + virtualRouterElementId = items[0].id; + } + } + }); + if(virtualRouterElementId == null) { + alert("error: listVirtualRouterElements API doesn't return Virtual Router Element Id"); + return; + } + + $.ajax({ + url: createURL("configureVirtualRouterElement&enabled=true&id=" + virtualRouterElementId), + dataType: "json", + async: false, + success: function(json) { + var jobId = json.configurevirtualrouterelementresponse.jobid; + var timerKey = "configureVirtualRouterElementJob_"+jobId; + $("body").everyTime(2000, timerKey, function() { + $.ajax({ + url: createURL("queryAsyncJobResult&jobId="+jobId), + dataType: "json", + success: function(json) { + var result = json.queryasyncjobresultresponse; + if (result.jobstatus == 0) { + return; //Job has not completed + } + else { + $("body").stopTime(timerKey); + 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() { + $.ajax({ + url: createURL("queryAsyncJobResult&jobId="+jobId), + dataType: "json", + success: function(json) { + var result = json.queryasyncjobresultresponse; + if (result.jobstatus == 0) { + return; //Job has not completed + } + else { + $("body").stopTime(timerKey); + 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 + stepFns.addPod({ + data: args.data + }); + } + } + else if (result.jobstatus == 2) { + alert("failed to enable Virtual Router Provider. Error: " + fromdb(result.jobresult.errortext)); + } + } + }, + error: function(XMLHttpResponse) { + var errorMsg = parseXMLHttpResponse(XMLHttpResponse); + alert("updateNetworkServiceProvider failed. Error: " + errorMsg); + } + }); + }); + } + }); + } + else if (result.jobstatus == 2) { + alert("configureVirtualRouterElement failed. Error: " + fromdb(result.jobresult.errortext)); + } + } + }, + error: function(XMLHttpResponse) { + var errorMsg = parseXMLHttpResponse(XMLHttpResponse); + alert("configureVirtualRouterElement failed. Error: " + errorMsg); + } + }); + }); + } + }); + } + else if (result.jobstatus == 2) { + alert("updatePhysicalNetwork failed. Error: " + fromdb(result.jobresult.errortext)); + } + } + }, + error: function(XMLHttpResponse) { + var errorMsg = parseXMLHttpResponse(XMLHttpResponse); + alert("updatePhysicalNetwork failed. Error: " + errorMsg); + } + }); + }); + } + }); + }); + } + }, + + addNetscalerDevice: function(args) { + message('Adding Netscaler device'); +>>>>>>> 5c06960... bug 13743: New zone wizard step -- configure storage traffic var array1 = []; array1.push("&physicalnetworkid=" + args.data.returnedBasicPhysicalNetwork.id); @@ -2100,6 +2915,7 @@ } else { $("body").stopTime(updateNetworkServiceProviderTimer); +<<<<<<< HEAD if(result.jobstatus == 1) { stepFns.addGuestNetwork({ data: args.data @@ -2107,6 +2923,35 @@ } else if(result.jobstatus == 2) { alert("failed to enable Netscaler provider. Error: " + _s(result.jobresult.errortext)); +======= + if(result.jobstatus == 1) { + //create a guest network for basic zone + var array2 = []; + array2.push("&zoneid=" + args.data.returnedZone.id); + array2.push("&name=guestNetworkForBasicZone"); + array2.push("&displaytext=guestNetworkForBasicZone"); + array2.push("&networkofferingid=" + args.data.zone.networkOfferingId); + $.ajax({ + url: createURL("createNetwork" + array2.join("")), + dataType: "json", + async: false, + success: function(json) { + //basic zone has only one physical network => addPod() will be called only once => so don't need to double-check before calling addPod() + stepFns.addPod({ + data: $.extend(args.data, { + returnedGuestNetwork: json.createnetworkresponse.network + }) + }); + }, + error: function(XMLHttpResponse) { + var errorMsg = parseXMLHttpResponse(XMLHttpResponse); + alert("failed to create a guest network for basic zone. Error: " + errorMsg); + } + }); + } + else if(result.jobstatus == 2) { + alert("failed to enable Netscaler provider. Error: " + fromdb(result.jobresult.errortext)); +>>>>>>> 5c06960... bug 13743: New zone wizard step -- configure storage traffic } } } @@ -2120,7 +2965,11 @@ }); } else if(result.jobstatus == 2) { //addNetscalerLoadBalancer failed +<<<<<<< HEAD error('addNetscalerDevice', _s(result.jobresult.errortext), { fn: 'addNetscalerDevice', args: args }); +======= + error('addNetscalerDevice', fromdb(result.jobresult.errortext), { fn: 'addNetscalerDevice', args: args }); +>>>>>>> 5c06960... bug 13743: New zone wizard step -- configure storage traffic } } } @@ -2133,6 +2982,7 @@ } }); }, +<<<<<<< HEAD addGuestNetwork: function(args) { //create a guest network for basic zone message(dictionary['message.creating.guest.network']); @@ -2163,6 +3013,11 @@ addPod: function(args) { message(dictionary['message.creating.pod']); +======= + + addPod: function(args) { + message('Creating pod'); +>>>>>>> 5c06960... bug 13743: New zone wizard step -- configure storage traffic var array3 = []; array3.push("&zoneId=" + args.data.returnedZone.id); @@ -2196,8 +3051,12 @@ configurePublicTraffic: function(args) { if((args.data.zone.networkType == "Basic" && (selectedNetworkOfferingHavingSG == true && selectedNetworkOfferingHavingEIP == true && selectedNetworkOfferingHavingELB == true)) ||(args.data.zone.networkType == "Advanced")) { +<<<<<<< HEAD message(dictionary['message.configuring.public.traffic']); +======= + message('Configuring public traffic'); +>>>>>>> 5c06960... bug 13743: New zone wizard step -- configure storage traffic var stopNow = false; @@ -2262,6 +3121,7 @@ }); } else { //basic zone without public traffic type , skip to next step +<<<<<<< HEAD if (data.physicalNetworks && $.inArray('storage', data.physicalNetworks[0].trafficTypes) > -1) { stepFns.configureStorageTraffic({ data: args.data @@ -2271,6 +3131,11 @@ data: args.data }); } +======= + stepFns.configureGuestTraffic({ + data: args.data + }); +>>>>>>> 5c06960... bug 13743: New zone wizard step -- configure storage traffic } }, @@ -2284,11 +3149,20 @@ var targetNetwork = $.grep(args.data.physicalNetworks, function(net) { return $.inArray('storage', net.trafficTypes) > -1; }); +<<<<<<< HEAD if (!targetNetwork.length) { return complete({}); } message(dictionary['message.configuring.storage.traffic']); +======= + if (args.data.zone.networkType == 'Basic' || + !targetNetwork.length) { + return complete({}); + } + + message('Configuring storage traffic'); +>>>>>>> 5c06960... bug 13743: New zone wizard step -- configure storage traffic var storageIPRanges = args.data.storageTraffic; var tasks = []; @@ -2367,7 +3241,11 @@ }, configureGuestTraffic: function(args) { +<<<<<<< HEAD message(dictionary['message.configuring.guest.traffic']); +======= + message('Configuring guest traffic'); +>>>>>>> 5c06960... bug 13743: New zone wizard step -- configure storage traffic if(args.data.returnedZone.networktype == "Basic") { //create an VlanIpRange for guest network in basic zone var array1 = []; @@ -2452,7 +3330,11 @@ } } else if(result.jobstatus == 2){ +<<<<<<< HEAD alert("error: " + _s(result.jobresult.errortext)); +======= + alert("error: " + fromdb(result.jobresult.errortext)); +>>>>>>> 5c06960... bug 13743: New zone wizard step -- configure storage traffic } } }, @@ -2470,11 +3352,15 @@ }, addCluster: function(args) { +<<<<<<< HEAD message(dictionary['message.creating.cluster']); // Have cluster use zone's hypervisor args.data.cluster.hypervisor = args.data.zone.hypervisor ? args.data.zone.hypervisor : args.data.cluster.hypervisor; +======= + message('Creating cluster'); +>>>>>>> 5c06960... bug 13743: New zone wizard step -- configure storage traffic var array1 = []; array1.push("&zoneId=" + args.data.returnedZone.id); @@ -2522,7 +3408,11 @@ }) }); } +<<<<<<< HEAD else { +======= + else { //args.groupedData.cluster.hypervisor == "VMware", skip add host step +>>>>>>> 5c06960... bug 13743: New zone wizard step -- configure storage traffic stepFns.addPrimaryStorage({ data: $.extend(args.data, { returnedCluster: json.addclusterresponse.cluster[0] @@ -2538,12 +3428,17 @@ }, addHost: function(args) { +<<<<<<< HEAD message(dictionary['message.adding.host']); +======= + message('Adding host'); +>>>>>>> 5c06960... bug 13743: New zone wizard step -- configure storage traffic var array1 = []; array1.push("&zoneid=" + args.data.returnedZone.id); array1.push("&podid=" + args.data.returnedPod.id); array1.push("&clusterid=" + args.data.returnedCluster.id); +<<<<<<< HEAD array1.push("&hypervisor=" + todb(args.data.returnedCluster.hypervisortype)); var clustertype = args.data.returnedCluster.clustertype; array1.push("&clustertype=" + todb(clustertype)); @@ -2571,6 +3466,48 @@ array1.push("&agentpassword=" + todb(args.data.host.agentPassword)); } +======= + array1.push("&hypervisor=" + todb(args.data.cluster.hypervisor)); + var clustertype = args.data.returnedCluster.clustertype; + array1.push("&clustertype=" + todb(clustertype)); + array1.push("&hosttags=" + todb(args.data.host.hosttags)); + + if(args.data.cluster.hypervisor == "VMware") { + array1.push("&username="); + array1.push("&password="); + var hostname = args.data.host.vcenterHost; + var url; + if(hostname.indexOf("http://")==-1) + url = "http://" + hostname; + else + url = hostname; + array1.push("&url=" + todb(url)); + } + else { + array1.push("&username=" + todb(args.data.host.username)); + array1.push("&password=" + todb(args.data.host.password)); + + var hostname = args.data.host.hostname; + + var url; + if(hostname.indexOf("http://")==-1) + url = "http://" + hostname; + else + url = hostname; + array1.push("&url="+todb(url)); + + if (args.data.cluster.hypervisor == "BareMetal") { + array1.push("&cpunumber=" + todb(args.data.host.baremetalCpuCores)); + array1.push("&cpuspeed=" + todb(args.data.host.baremetalCpu)); + array1.push("&memory=" + todb(args.data.host.baremetalMemory)); + array1.push("&hostmac=" + todb(args.data.host.baremetalMAC)); + } + else if(args.data.cluster.hypervisor == "Ovm") { + array1.push("&agentusername=" + todb(args.data.host.agentUsername)); + array1.push("&agentpassword=" + todb(args.data.host.agentPassword)); + } + } +>>>>>>> 5c06960... bug 13743: New zone wizard step -- configure storage traffic $.ajax({ url: createURL("addHost" + array1.join("")), @@ -2589,15 +3526,25 @@ }); }, +<<<<<<< HEAD addPrimaryStorage: function(args) { if(configurationUseLocalStorage == true) { //use local storage, don't need primary storage. So, skip this step. +======= + addPrimaryStorage: function(args) { + var server = args.data.primaryStorage.server; + if(server == null || server.length == 0) { +>>>>>>> 5c06960... bug 13743: New zone wizard step -- configure storage traffic stepFns.addSecondaryStorage({ data: args.data }); return; } +<<<<<<< HEAD message(dictionary['message.creating.primary.storage']); +======= + message('Creating primary storage'); +>>>>>>> 5c06960... bug 13743: New zone wizard step -- configure storage traffic var array1 = []; array1.push("&zoneid=" + args.data.returnedZone.id); @@ -2605,7 +3552,10 @@ array1.push("&clusterid=" + args.data.returnedCluster.id); array1.push("&name=" + todb(args.data.primaryStorage.name)); +<<<<<<< HEAD var server = args.data.primaryStorage.server; +======= +>>>>>>> 5c06960... bug 13743: New zone wizard step -- configure storage traffic var url = null; if (args.data.primaryStorage.protocol == "nfs") { //var path = trim($thisDialog.find("#add_pool_path").val()); @@ -2688,7 +3638,11 @@ }, addSecondaryStorage: function(args) { +<<<<<<< HEAD message(dictionary['message.creating.secondary.storage']); +======= + message('Creating secondary storage'); +>>>>>>> 5c06960... bug 13743: New zone wizard step -- configure storage traffic var nfs_server = args.data.secondaryStorage.nfsServer; var path = args.data.secondaryStorage.path; @@ -2713,7 +3667,11 @@ }; var complete = function(args) { +<<<<<<< HEAD message(dictionary['message.Zone.creation.complete']); +======= + message('Zone creation complete!'); +>>>>>>> 5c06960... bug 13743: New zone wizard step -- configure storage traffic success(args); };