You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by bf...@apache.org on 2013/04/25 20:08:21 UTC
[03/43] git commit: updated refs/heads/master to 5ce2890
Instance wizard: clean up JS formatting
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/9d5c3756
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/9d5c3756
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/9d5c3756
Branch: refs/heads/master
Commit: 9d5c375678fd7477361b8f6aaab914ba682e4cf8
Parents: e0692b3
Author: Brian Federle <br...@citrix.com>
Authored: Tue Apr 9 14:52:06 2013 -0700
Committer: Brian Federle <br...@citrix.com>
Committed: Tue Apr 9 14:52:06 2013 -0700
----------------------------------------------------------------------
ui/scripts/instanceWizard.js | 890 ++++++++++++++++++------------------
1 files changed, 445 insertions(+), 445 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9d5c3756/ui/scripts/instanceWizard.js
----------------------------------------------------------------------
diff --git a/ui/scripts/instanceWizard.js b/ui/scripts/instanceWizard.js
index e1aeafd..277719c 100644
--- a/ui/scripts/instanceWizard.js
+++ b/ui/scripts/instanceWizard.js
@@ -68,475 +68,475 @@
// Data providers for each wizard step
steps: [
-
- // Step 1: Setup
- function(args) {
- if(args.initArgs.pluginForm != null && args.initArgs.pluginForm.name == "vpcTierInstanceWizard") { //from VPC Tier chart
- //populate only one zone to the dropdown, the zone which the VPC is under.
- zoneObjs = [{
- id: args.context.vpc[0].zoneid,
- name: args.context.vpc[0].zonename,
- networktype: 'Advanced'
- }];
- args.response.success({ data: {zones: zoneObjs}});
- }
- else { //from Instance page
- $.ajax({
- url: createURL("listZones&available=true"),
- dataType: "json",
- async: false,
- success: function(json) {
- zoneObjs = json.listzonesresponse.zone;
- args.response.success({ data: {zones: zoneObjs}});
- }
- });
- }
- },
-
- // Step 2: Select template
- function(args) {
- $(zoneObjs).each(function(){
- if(this.id == args.currentData.zoneid) {
- selectedZoneObj = this;
- return false; //break the $.each() loop
- }
- });
- if(selectedZoneObj == null) {
- alert("error: can't find matched zone object");
- return;
- }
-
- $.ajax({
- url: createURL("listHypervisors&zoneid="+args.currentData.zoneid),
- dataType: "json",
- async: false,
- success: function(json) {
- hypervisorObjs = json.listhypervisorsresponse.hypervisor;
- }
- });
-
- //***** get templates/ISOs (begin) *****
- var selectedTemplate = args.currentData['select-template'];
- if (selectedTemplate == 'select-template') {
- var hypervisorArray = [];
- $(hypervisorObjs).each(function(index, item) {
- hypervisorArray.push(item.name);
- });
-
- $.ajax({
- url: createURL("listTemplates&templatefilter=featured&zoneid="+args.currentData.zoneid),
- dataType: "json",
- async: false,
- success: function(json) {
- if(json.listtemplatesresponse.template == null) {
- featuredTemplateObjs = null;
- }
- else {
- featuredTemplateObjs = $.grep(json.listtemplatesresponse.template, function(item, index) {
- if($.inArray(item.hypervisor, hypervisorArray) > -1)
- return true;
- });
- }
- }
- });
- $.ajax({
- url: createURL("listTemplates&templatefilter=community&zoneid="+args.currentData.zoneid),
- dataType: "json",
- async: false,
- success: function(json) {
- if(json.listtemplatesresponse.template == null) {
- communityTemplateObjs = null;
- }
- else {
- communityTemplateObjs = $.grep(json.listtemplatesresponse.template, function(item, index) {
- if($.inArray(item.hypervisor, hypervisorArray) > -1)
- return true;
- });
- }
- }
- });
- $.ajax({
- url: createURL("listTemplates&templatefilter=selfexecutable&zoneid="+args.currentData.zoneid),
- dataType: "json",
- async: false,
- success: function(json) {
- if(json.listtemplatesresponse.template == null) {
- myTemplateObjs = null;
- }
- else {
- myTemplateObjs = $.grep(json.listtemplatesresponse.template, function(item, index) {
- if($.inArray(item.hypervisor, hypervisorArray) > -1)
- return true;
- });
- }
- }
- });
- } else if (selectedTemplate == 'select-iso') {
- $.ajax({
- url: createURL("listIsos&isofilter=featured&zoneid=" + args.currentData.zoneid + "&bootable=true"),
- dataType: "json",
- async: false,
- success: function(json) {
- if(json.listisosresponse.iso == null) {
- featuredIsoObjs = null;
- }
- else {
- featuredIsoObjs = json.listisosresponse.iso;
- }
- }
- });
- $.ajax({
- url: createURL("listIsos&isofilter=community&zoneid=" + args.currentData.zoneid + "&bootable=true"),
- dataType: "json",
- async: false,
- success: function(json) {
- if(json.listisosresponse.iso == null) {
- communityIsoObjs = null;
- }
- else {
- communityIsoObjs = json.listisosresponse.iso;
- }
+
+ // Step 1: Setup
+ function(args) {
+ if(args.initArgs.pluginForm != null && args.initArgs.pluginForm.name == "vpcTierInstanceWizard") { //from VPC Tier chart
+ //populate only one zone to the dropdown, the zone which the VPC is under.
+ zoneObjs = [{
+ id: args.context.vpc[0].zoneid,
+ name: args.context.vpc[0].zonename,
+ networktype: 'Advanced'
+ }];
+ args.response.success({ data: {zones: zoneObjs}});
+ }
+ else { //from Instance page
+ $.ajax({
+ url: createURL("listZones&available=true"),
+ dataType: "json",
+ async: false,
+ success: function(json) {
+ zoneObjs = json.listzonesresponse.zone;
+ args.response.success({ data: {zones: zoneObjs}});
+ }
+ });
+ }
+ },
+
+ // Step 2: Select template
+ function(args) {
+ $(zoneObjs).each(function(){
+ if(this.id == args.currentData.zoneid) {
+ selectedZoneObj = this;
+ return false; //break the $.each() loop
}
});
+ if(selectedZoneObj == null) {
+ alert("error: can't find matched zone object");
+ return;
+ }
+
$.ajax({
- url: createURL("listIsos&isofilter=selfexecutable&zoneid=" + args.currentData.zoneid + "&bootable=true"),
+ url: createURL("listHypervisors&zoneid="+args.currentData.zoneid),
dataType: "json",
async: false,
success: function(json) {
- if(json.listisosresponse.iso == null) {
- myIsoObjs = null;
- }
- else {
- myIsoObjs = json.listisosresponse.iso;
- }
+ hypervisorObjs = json.listhypervisorsresponse.hypervisor;
}
});
- }
- //***** get templates/ISOs (end) *****
+ //***** get templates/ISOs (begin) *****
+ var selectedTemplate = args.currentData['select-template'];
+ if (selectedTemplate == 'select-template') {
+ var hypervisorArray = [];
+ $(hypervisorObjs).each(function(index, item) {
+ hypervisorArray.push(item.name);
+ });
- var templatesObj = {};
- if (selectedTemplate == 'select-template') {
- templatesObj = {
- featuredtemplates: featuredTemplateObjs,
- communitytemplates: communityTemplateObjs,
- mytemplates: myTemplateObjs
- }
- } else if (selectedTemplate == 'select-iso') {
- templatesObj = {
- featuredisos: featuredIsoObjs,
- communityisos: communityIsoObjs,
- myisos: myIsoObjs
- }
- }
- args.response.success({
- hypervisor: {
- idField: 'name',
- nameField: 'name'
- },
- data: {
- templates: templatesObj,
- hypervisors: hypervisorObjs
+ $.ajax({
+ url: createURL("listTemplates&templatefilter=featured&zoneid="+args.currentData.zoneid),
+ dataType: "json",
+ async: false,
+ success: function(json) {
+ if(json.listtemplatesresponse.template == null) {
+ featuredTemplateObjs = null;
+ }
+ else {
+ featuredTemplateObjs = $.grep(json.listtemplatesresponse.template, function(item, index) {
+ if($.inArray(item.hypervisor, hypervisorArray) > -1)
+ return true;
+ });
+ }
+ }
+ });
+ $.ajax({
+ url: createURL("listTemplates&templatefilter=community&zoneid="+args.currentData.zoneid),
+ dataType: "json",
+ async: false,
+ success: function(json) {
+ if(json.listtemplatesresponse.template == null) {
+ communityTemplateObjs = null;
+ }
+ else {
+ communityTemplateObjs = $.grep(json.listtemplatesresponse.template, function(item, index) {
+ if($.inArray(item.hypervisor, hypervisorArray) > -1)
+ return true;
+ });
+ }
+ }
+ });
+ $.ajax({
+ url: createURL("listTemplates&templatefilter=selfexecutable&zoneid="+args.currentData.zoneid),
+ dataType: "json",
+ async: false,
+ success: function(json) {
+ if(json.listtemplatesresponse.template == null) {
+ myTemplateObjs = null;
+ }
+ else {
+ myTemplateObjs = $.grep(json.listtemplatesresponse.template, function(item, index) {
+ if($.inArray(item.hypervisor, hypervisorArray) > -1)
+ return true;
+ });
+ }
+ }
+ });
+ } else if (selectedTemplate == 'select-iso') {
+ $.ajax({
+ url: createURL("listIsos&isofilter=featured&zoneid=" + args.currentData.zoneid + "&bootable=true"),
+ dataType: "json",
+ async: false,
+ success: function(json) {
+ if(json.listisosresponse.iso == null) {
+ featuredIsoObjs = null;
+ }
+ else {
+ featuredIsoObjs = json.listisosresponse.iso;
+ }
+ }
+ });
+ $.ajax({
+ url: createURL("listIsos&isofilter=community&zoneid=" + args.currentData.zoneid + "&bootable=true"),
+ dataType: "json",
+ async: false,
+ success: function(json) {
+ if(json.listisosresponse.iso == null) {
+ communityIsoObjs = null;
+ }
+ else {
+ communityIsoObjs = json.listisosresponse.iso;
+ }
+ }
+ });
+ $.ajax({
+ url: createURL("listIsos&isofilter=selfexecutable&zoneid=" + args.currentData.zoneid + "&bootable=true"),
+ dataType: "json",
+ async: false,
+ success: function(json) {
+ if(json.listisosresponse.iso == null) {
+ myIsoObjs = null;
+ }
+ else {
+ myIsoObjs = json.listisosresponse.iso;
+ }
+ }
+ });
}
- });
- },
+ //***** get templates/ISOs (end) *****
- // Step 3: Service offering
- function(args) {
- if(args.currentData["select-template"] == "select-template") {
- if(featuredTemplateObjs != null && featuredTemplateObjs.length > 0) {
- for(var i=0; i < featuredTemplateObjs.length; i++) {
- if(featuredTemplateObjs[i].id == args.currentData.templateid) {
- selectedTemplateObj = featuredTemplateObjs[i];
- break;
- }
+
+ var templatesObj = {};
+ if (selectedTemplate == 'select-template') {
+ templatesObj = {
+ featuredtemplates: featuredTemplateObjs,
+ communitytemplates: communityTemplateObjs,
+ mytemplates: myTemplateObjs
+ }
+ } else if (selectedTemplate == 'select-iso') {
+ templatesObj = {
+ featuredisos: featuredIsoObjs,
+ communityisos: communityIsoObjs,
+ myisos: myIsoObjs
}
}
- if(selectedTemplateObj == null) {
- if(communityTemplateObjs != null && communityTemplateObjs.length > 0) {
- for(var i=0; i < communityTemplateObjs.length; i++) {
- if(communityTemplateObjs[i].id == args.currentData.templateid) {
- selectedTemplateObj = communityTemplateObjs[i];
+ args.response.success({
+ hypervisor: {
+ idField: 'name',
+ nameField: 'name'
+ },
+ data: {
+ templates: templatesObj,
+ hypervisors: hypervisorObjs
+ }
+ });
+ },
+
+ // Step 3: Service offering
+ function(args) {
+ if(args.currentData["select-template"] == "select-template") {
+ if(featuredTemplateObjs != null && featuredTemplateObjs.length > 0) {
+ for(var i=0; i < featuredTemplateObjs.length; i++) {
+ if(featuredTemplateObjs[i].id == args.currentData.templateid) {
+ selectedTemplateObj = featuredTemplateObjs[i];
break;
}
}
}
- }
- if(selectedTemplateObj == null) {
- if(myTemplateObjs != null && myTemplateObjs.length > 0) {
- for(var i=0; i < myTemplateObjs.length; i++) {
- if(myTemplateObjs[i].id == args.currentData.templateid) {
- selectedTemplateObj = myTemplateObjs[i];
- break;
+ if(selectedTemplateObj == null) {
+ if(communityTemplateObjs != null && communityTemplateObjs.length > 0) {
+ for(var i=0; i < communityTemplateObjs.length; i++) {
+ if(communityTemplateObjs[i].id == args.currentData.templateid) {
+ selectedTemplateObj = communityTemplateObjs[i];
+ break;
+ }
}
}
}
- }
- if(selectedTemplateObj == null)
- alert("unable to find matched template object");
- else
- selectedHypervisor = selectedTemplateObj.hypervisor;
- }
- else { //(args.currentData["select-template"] == "select-iso"
- selectedHypervisor = args.currentData.hypervisorid;
- }
-
- $.ajax({
- url: createURL("listServiceOfferings&issystem=false"),
- dataType: "json",
- async: true,
- success: function(json) {
- serviceOfferingObjs = json.listserviceofferingsresponse.serviceoffering;
- args.response.success({
- data: {serviceOfferings: serviceOfferingObjs}
- });
- }
- });
- },
-
- // Step 4: Data disk offering
- function(args) {
- var isRequred = (args.currentData["select-template"] == "select-iso"? true: false);
- $.ajax({
- url: createURL("listDiskOfferings"),
- dataType: "json",
- async: true,
- success: function(json) {
- diskOfferingObjs = json.listdiskofferingsresponse.diskoffering;
- args.response.success({
- required: isRequred,
- customFlag: 'iscustomized', // Field determines if custom slider is shown
- data: {diskOfferings: diskOfferingObjs}
- });
- }
- });
- },
-
- // Step 5: Network
- function(args) {
- if(diskOfferingObjs != null && diskOfferingObjs.length > 0) {
- for(var i=0; i < diskOfferingObjs.length; i++) {
- if(diskOfferingObjs[i].id == args.currentData.diskofferingid) {
- selectedDiskOfferingObj = diskOfferingObjs[i];
- break;
- }
- }
- }
-
- if (selectedZoneObj.networktype == "Advanced") { //Advanced zone. Show network list.
- var $networkStep = $(".step.network:visible .nothing-to-select");
- var $networkStepContainer = $('.step.network:visible');
-
- if(args.initArgs.pluginForm != null && args.initArgs.pluginForm.name == "vpcTierInstanceWizard") { //from VPC Tier chart
- step5ContainerType = 'nothing-to-select';
- $networkStep.find("#from_instance_page_1").hide();
- $networkStep.find("#from_instance_page_2").hide();
- $networkStep.find("#from_vpc_tier").text("tier " + args.context.networks[0].name);
- $networkStep.find("#from_vpc_tier").show();
- } else { //from Instance page
- if(selectedZoneObj.securitygroupsenabled != true) { // Advanced SG-disabled zone
- step5ContainerType = 'select-network';
- $networkStep.find("#from_instance_page_1").show();
- $networkStep.find("#from_instance_page_2").show();
- $networkStep.find("#from_vpc_tier").text("");
- $networkStep.find("#from_vpc_tier").hide();
- $networkStepContainer.removeClass('next-use-security-groups');
- } else { // Advanced SG-enabled zone
- step5ContainerType = 'select-advanced-sg';
- }
-
- if ($networkStepContainer.hasClass('next-use-security-groups')) {
- $networkStepContainer.removeClass('repeat next-use-security-groups loaded');
- step5ContainerType = 'select-security-group';
- }
- }
- }
- else { //Basic zone. Show securigy group list or nothing(when no SecurityGroup service in guest network)
- var includingSecurityGroupService = false;
- $.ajax({
- url: createURL("listNetworks&trafficType=Guest&zoneId=" + selectedZoneObj.id),
- dataType: "json",
- async: false,
- success: function(json) {
- //basic zone should have only one guest network returned in this API call
- var items = json.listnetworksresponse.network;
- if(items != null && items.length > 0) {
- var networkObj = items[0]; //basic zone has only one guest network
- var serviceObjArray = networkObj.service;
- for(var k = 0; k < serviceObjArray.length; k++) {
- if(serviceObjArray[k].name == "SecurityGroup") {
- includingSecurityGroupService = true;
+ if(selectedTemplateObj == null) {
+ if(myTemplateObjs != null && myTemplateObjs.length > 0) {
+ for(var i=0; i < myTemplateObjs.length; i++) {
+ if(myTemplateObjs[i].id == args.currentData.templateid) {
+ selectedTemplateObj = myTemplateObjs[i];
break;
}
}
}
}
- });
-
- if(includingSecurityGroupService == false || selectedHypervisor == "VMware") {
- step5ContainerType = 'nothing-to-select';
+ if(selectedTemplateObj == null)
+ alert("unable to find matched template object");
+ else
+ selectedHypervisor = selectedTemplateObj.hypervisor;
}
- else {
- step5ContainerType = 'select-security-group';
+ else { //(args.currentData["select-template"] == "select-iso"
+ selectedHypervisor = args.currentData.hypervisorid;
}
- }
- //step5ContainerType = 'nothing-to-select'; //for testing only, comment it out before checking in
- if(step5ContainerType == 'select-network' || step5ContainerType == 'select-advanced-sg') {
- var defaultNetworkArray = [], optionalNetworkArray = [];
- var networkData = {
- zoneId: args.currentData.zoneid,
- canusefordeploy: true
- };
-
- if(selectedZoneObj.networktype == 'Advanced' && selectedZoneObj.securitygroupsenabled == true) {
- $.extend(networkData, {
- type: 'Shared'
- });
- }
-
- if (!(cloudStack.context.projects && cloudStack.context.projects[0])) {
- networkData.domainid = g_domainid;
- networkData.account = g_account;
- }
-
- var vpcObjs;
-
- //listVPCs without account/domainid/listAll parameter will return only VPCs belonging to the current login. That's what should happen in Instances page's VM Wizard.
- //i.e. If the current login is root-admin, do not show VPCs belonging to regular-user/domain-admin in Instances page's VM Wizard.
- $.ajax({
- url: createURL('listVPCs'),
- async: false,
- success: function(json) {
- vpcObjs = json.listvpcsresponse.vpc ? json.listvpcsresponse.vpc : [];
- }
- });
-
- var networkObjsToPopulate = [];
$.ajax({
- url: createURL('listNetworks'),
- data: networkData,
- async: false,
+ url: createURL("listServiceOfferings&issystem=false"),
+ dataType: "json",
+ async: true,
success: function(json) {
- networkObjs = json.listnetworksresponse.network ? json.listnetworksresponse.network : [];
- if(networkObjs.length > 0) {
- for(var i = 0; i < networkObjs.length; i++) {
- var networkObj = networkObjs[i];
- var includingSecurityGroup = false;
- var serviceObjArray = networkObj.service;
- for(var k = 0; k < serviceObjArray.length; k++) {
- if(serviceObjArray[k].name == "SecurityGroup") {
- networkObjs[i].type = networkObjs[i].type + ' (sg)';
- includingSecurityGroup = true;
- break;
- }
- }
-
- if (networkObj.vpcid) {
- networkObj._singleSelect = true;
- }
-
- //for Advanced SG-enabled zone, list only SG network offerings
- if(selectedZoneObj.networktype == 'Advanced' && selectedZoneObj.securitygroupsenabled == true) {
- if(includingSecurityGroup == false)
- continue; //skip to next network offering
- }
- networkObjsToPopulate.push(networkObj);
- }
- }
+ serviceOfferingObjs = json.listserviceofferingsresponse.serviceoffering;
+ args.response.success({
+ data: {serviceOfferings: serviceOfferingObjs}
+ });
}
});
-
+ },
+
+ // Step 4: Data disk offering
+ function(args) {
+ var isRequred = (args.currentData["select-template"] == "select-iso"? true: false);
$.ajax({
- url: createURL("listNetworkOfferings"),
+ url: createURL("listDiskOfferings"),
dataType: "json",
- data: {
- forvpc: false,
- zoneid: args.currentData.zoneid,
- guestiptype: 'Isolated',
- supportedServices: 'SourceNat',
- specifyvlan: false,
- state: 'Enabled'
- },
- async: false,
+ async: true,
success: function(json) {
- networkOfferingObjs = json.listnetworkofferingsresponse.networkoffering;
+ diskOfferingObjs = json.listdiskofferingsresponse.diskoffering;
+ args.response.success({
+ required: isRequred,
+ customFlag: 'iscustomized', // Field determines if custom slider is shown
+ data: {diskOfferings: diskOfferingObjs}
+ });
}
});
- //get network offerings (end) ***
-
- $networkStepContainer.removeClass('repeat next-use-security-groups');
+ },
+
+ // Step 6: Network
+ function(args) {
+ if(diskOfferingObjs != null && diskOfferingObjs.length > 0) {
+ for(var i=0; i < diskOfferingObjs.length; i++) {
+ if(diskOfferingObjs[i].id == args.currentData.diskofferingid) {
+ selectedDiskOfferingObj = diskOfferingObjs[i];
+ break;
+ }
+ }
+ }
- if (step5ContainerType == 'select-advanced-sg') {
- $networkStepContainer.addClass('repeat next-use-security-groups');
+ if (selectedZoneObj.networktype == "Advanced") { //Advanced zone. Show network list.
+ var $networkStep = $(".step.network:visible .nothing-to-select");
+ var $networkStepContainer = $('.step.network:visible');
+
+ if(args.initArgs.pluginForm != null && args.initArgs.pluginForm.name == "vpcTierInstanceWizard") { //from VPC Tier chart
+ step5ContainerType = 'nothing-to-select';
+ $networkStep.find("#from_instance_page_1").hide();
+ $networkStep.find("#from_instance_page_2").hide();
+ $networkStep.find("#from_vpc_tier").text("tier " + args.context.networks[0].name);
+ $networkStep.find("#from_vpc_tier").show();
+ } else { //from Instance page
+ if(selectedZoneObj.securitygroupsenabled != true) { // Advanced SG-disabled zone
+ step5ContainerType = 'select-network';
+ $networkStep.find("#from_instance_page_1").show();
+ $networkStep.find("#from_instance_page_2").show();
+ $networkStep.find("#from_vpc_tier").text("");
+ $networkStep.find("#from_vpc_tier").hide();
+ $networkStepContainer.removeClass('next-use-security-groups');
+ } else { // Advanced SG-enabled zone
+ step5ContainerType = 'select-advanced-sg';
+ }
+
+ if ($networkStepContainer.hasClass('next-use-security-groups')) {
+ $networkStepContainer.removeClass('repeat next-use-security-groups loaded');
+ step5ContainerType = 'select-security-group';
+ }
+ }
+ }
+ else { //Basic zone. Show securigy group list or nothing(when no SecurityGroup service in guest network)
+ var includingSecurityGroupService = false;
+ $.ajax({
+ url: createURL("listNetworks&trafficType=Guest&zoneId=" + selectedZoneObj.id),
+ dataType: "json",
+ async: false,
+ success: function(json) {
+ //basic zone should have only one guest network returned in this API call
+ var items = json.listnetworksresponse.network;
+ if(items != null && items.length > 0) {
+ var networkObj = items[0]; //basic zone has only one guest network
+ var serviceObjArray = networkObj.service;
+ for(var k = 0; k < serviceObjArray.length; k++) {
+ if(serviceObjArray[k].name == "SecurityGroup") {
+ includingSecurityGroupService = true;
+ break;
+ }
+ }
+ }
+ }
+ });
- // Add guest network is disabled
- $networkStepContainer.find('.select-network').addClass('no-add-network');
- } else {
- $networkStepContainer.find('.select-network').removeClass('no-add-network');
+ if(includingSecurityGroupService == false || selectedHypervisor == "VMware") {
+ step5ContainerType = 'nothing-to-select';
+ }
+ else {
+ step5ContainerType = 'select-security-group';
+ }
}
- args.response.success({
- type: 'select-network',
- data: {
- networkObjs: networkObjsToPopulate,
- securityGroups: [],
- networkOfferings: networkOfferingObjs,
- vpcs: vpcObjs
+ //step5ContainerType = 'nothing-to-select'; //for testing only, comment it out before checking in
+ if(step5ContainerType == 'select-network' || step5ContainerType == 'select-advanced-sg') {
+ var defaultNetworkArray = [], optionalNetworkArray = [];
+ var networkData = {
+ zoneId: args.currentData.zoneid,
+ canusefordeploy: true
+ };
+
+ if(selectedZoneObj.networktype == 'Advanced' && selectedZoneObj.securitygroupsenabled == true) {
+ $.extend(networkData, {
+ type: 'Shared'
+ });
+ }
+
+ if (!(cloudStack.context.projects && cloudStack.context.projects[0])) {
+ networkData.domainid = g_domainid;
+ networkData.account = g_account;
}
- });
- }
- else if(step5ContainerType == 'select-security-group') {
- var securityGroupArray = [];
- var data = {
- domainid: g_domainid,
- account: g_account
- };
+ var vpcObjs;
- $.ajax({
- url: createURL("listSecurityGroups"),
- dataType: "json",
- async: false,
- data: cloudStack.context.projects ? {} : data,
- success: function(json) {
- var items = json.listsecuritygroupsresponse.securitygroup;
- if (items != null && items.length > 0) {
- for (var i = 0; i < items.length; i++) {
- securityGroupArray.push(items[i]);
- }
+ //listVPCs without account/domainid/listAll parameter will return only VPCs belonging to the current login. That's what should happen in Instances page's VM Wizard.
+ //i.e. If the current login is root-admin, do not show VPCs belonging to regular-user/domain-admin in Instances page's VM Wizard.
+ $.ajax({
+ url: createURL('listVPCs'),
+ async: false,
+ success: function(json) {
+ vpcObjs = json.listvpcsresponse.vpc ? json.listvpcsresponse.vpc : [];
}
- }
- });
- args.response.success({
- type: 'select-security-group',
- data: {
- networkObjs: [],
- securityGroups: securityGroupArray,
- networkOfferings: [],
- vpcs: []
- }
- });
- }
+ });
+
+ var networkObjsToPopulate = [];
+ $.ajax({
+ url: createURL('listNetworks'),
+ data: networkData,
+ async: false,
+ success: function(json) {
+ networkObjs = json.listnetworksresponse.network ? json.listnetworksresponse.network : [];
+ if(networkObjs.length > 0) {
+ for(var i = 0; i < networkObjs.length; i++) {
+ var networkObj = networkObjs[i];
+ var includingSecurityGroup = false;
+ var serviceObjArray = networkObj.service;
+ for(var k = 0; k < serviceObjArray.length; k++) {
+ if(serviceObjArray[k].name == "SecurityGroup") {
+ networkObjs[i].type = networkObjs[i].type + ' (sg)';
+ includingSecurityGroup = true;
+ break;
+ }
+ }
+
+ if (networkObj.vpcid) {
+ networkObj._singleSelect = true;
+ }
+
+ //for Advanced SG-enabled zone, list only SG network offerings
+ if(selectedZoneObj.networktype == 'Advanced' && selectedZoneObj.securitygroupsenabled == true) {
+ if(includingSecurityGroup == false)
+ continue; //skip to next network offering
+ }
+ networkObjsToPopulate.push(networkObj);
+ }
+ }
+ }
+ });
+
+ $.ajax({
+ url: createURL("listNetworkOfferings"),
+ dataType: "json",
+ data: {
+ forvpc: false,
+ zoneid: args.currentData.zoneid,
+ guestiptype: 'Isolated',
+ supportedServices: 'SourceNat',
+ specifyvlan: false,
+ state: 'Enabled'
+ },
+ async: false,
+ success: function(json) {
+ networkOfferingObjs = json.listnetworkofferingsresponse.networkoffering;
+ }
+ });
+ //get network offerings (end) ***
- else if(step5ContainerType == 'nothing-to-select') {
- args.response.success({
- type: 'nothing-to-select',
- data: {
- networkObjs: [],
- securityGroups: [],
- networkOfferings: [],
- vpcs: []
+ $networkStepContainer.removeClass('repeat next-use-security-groups');
+
+ if (step5ContainerType == 'select-advanced-sg') {
+ $networkStepContainer.addClass('repeat next-use-security-groups');
+
+ // Add guest network is disabled
+ $networkStepContainer.find('.select-network').addClass('no-add-network');
+ } else {
+ $networkStepContainer.find('.select-network').removeClass('no-add-network');
}
- });
- }
- },
+ args.response.success({
+ type: 'select-network',
+ data: {
+ networkObjs: networkObjsToPopulate,
+ securityGroups: [],
+ networkOfferings: networkOfferingObjs,
+ vpcs: vpcObjs
+ }
+ });
+ }
- // Step 6: Review
- function(args) {
- return false;
- }
+ else if(step5ContainerType == 'select-security-group') {
+ var securityGroupArray = [];
+ var data = {
+ domainid: g_domainid,
+ account: g_account
+ };
+
+ $.ajax({
+ url: createURL("listSecurityGroups"),
+ dataType: "json",
+ async: false,
+ data: cloudStack.context.projects ? {} : data,
+ success: function(json) {
+ var items = json.listsecuritygroupsresponse.securitygroup;
+ if (items != null && items.length > 0) {
+ for (var i = 0; i < items.length; i++) {
+ securityGroupArray.push(items[i]);
+ }
+ }
+ }
+ });
+ args.response.success({
+ type: 'select-security-group',
+ data: {
+ networkObjs: [],
+ securityGroups: securityGroupArray,
+ networkOfferings: [],
+ vpcs: []
+ }
+ });
+ }
+
+ else if(step5ContainerType == 'nothing-to-select') {
+ args.response.success({
+ type: 'nothing-to-select',
+ data: {
+ networkObjs: [],
+ securityGroups: [],
+ networkOfferings: [],
+ vpcs: []
+ }
+ });
+ }
+
+ },
+
+ // Step 6: Review
+ function(args) {
+ return false;
+ }
],
action: function(args) {
// Create a new VM!!!!
@@ -638,12 +638,12 @@
if(checkedSecurityGroupIdArray.length > 0)
array1.push("&securitygroupids=" + checkedSecurityGroupIdArray.join(","));
-
+
if(selectedZoneObj.networktype == "Advanced" && selectedZoneObj.securitygroupsenabled == true) { // Advanced SG-enabled zone
var array2 = [];
var myNetworks = $('.multi-wizard:visible form').data('my-networks'); //widget limitation: If using an advanced security group zone, get the guest networks like this
var defaultNetworkId = $('.multi-wizard:visible form').find('input[name=defaultNetwork]:checked').val();
-
+
var checkedNetworkIdArray;
if(typeof(myNetworks) == "object" && myNetworks.length != null) { //myNetworks is an array of string, e.g. ["203", "202"],
checkedNetworkIdArray = myNetworks;
@@ -703,30 +703,30 @@
var vmid = json.deployvirtualmachineresponse.id;
args.response.success(
{_custom:
- {jobId: jid,
- getUpdatedItem: function(json) {
- var item = json.queryasyncjobresultresponse.jobresult.virtualmachine;
- if (item.password != null)
- alert("Password of new VM " + item.displayname + " is " + item.password);
- return item;
- },
- getActionFilter: function() {
- return cloudStack.actionFilter.vmActionFilter;
- },
- getUpdatedItemWhenAsyncJobFails: function() {
- var item;
- $.ajax({
- url: createURL("listVirtualMachines&id="+vmid),
- dataType: "json",
- async: false,
- success: function(json) {
- item = json.listvirtualmachinesresponse.virtualmachine[0];
- }
- });
- return item;
- }
- }
- }
+ {jobId: jid,
+ getUpdatedItem: function(json) {
+ var item = json.queryasyncjobresultresponse.jobresult.virtualmachine;
+ if (item.password != null)
+ alert("Password of new VM " + item.displayname + " is " + item.password);
+ return item;
+ },
+ getActionFilter: function() {
+ return cloudStack.actionFilter.vmActionFilter;
+ },
+ getUpdatedItemWhenAsyncJobFails: function() {
+ var item;
+ $.ajax({
+ url: createURL("listVirtualMachines&id="+vmid),
+ dataType: "json",
+ async: false,
+ success: function(json) {
+ item = json.listvirtualmachinesresponse.virtualmachine[0];
+ }
+ });
+ return item;
+ }
+ }
+ }
);
},
error: function(XMLHttpResponse) {