Skip to content

Commit a2b2d45

Browse files
committed
Conditionally show select SG step
Only show select security group step if at least one guest network with SecurityGroup service is selected.
1 parent 6f90a86 commit a2b2d45

2 files changed

Lines changed: 40 additions & 3 deletions

File tree

ui/scripts/instanceWizard.js

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
// under the License.
1717

1818
(function($, cloudStack) {
19-
var zoneObjs, hypervisorObjs, featuredTemplateObjs, communityTemplateObjs, myTemplateObjs, featuredIsoObjs, community;
19+
var zoneObjs, hypervisorObjs, featuredTemplateObjs, communityTemplateObjs, myTemplateObjs, featuredIsoObjs, community, networkObjs;
2020
var selectedZoneObj, selectedTemplateObj, selectedHypervisor, selectedDiskOfferingObj;
2121
var step5ContainerType = 'nothing-to-select'; //'nothing-to-select', 'select-network', 'select-security-group'
2222

@@ -40,6 +40,33 @@
4040
!data.vpcid;
4141
},
4242

43+
// Runs when advanced SG-enabled zone is run, before
44+
// the security group step
45+
//
46+
// -- if it returns false, then 'Select Security Group' is skipped.
47+
//
48+
advSGFilter: function(args) {
49+
var selectedNetworks;
50+
51+
if ($.isArray(args.data['my-networks'])) {
52+
selectedNetworks = $(args.data['my-networks']).map(function(index, myNetwork) {
53+
return $.grep(networkObjs, function(networkObj) {
54+
return networkObj.id == myNetwork;
55+
});
56+
});
57+
} else {
58+
selectedNetworks = $.grep(networkObjs, function(networkObj) {
59+
return networkObj.id == args.data['my-networks'];
60+
});
61+
}
62+
63+
return $.grep(selectedNetworks, function(network) {
64+
return $.grep(network.service, function(service) {
65+
return service.name == 'SecurityGroup';
66+
}).length;
67+
}).length;
68+
},
69+
4370
// Data providers for each wizard step
4471
steps: [
4572

@@ -347,7 +374,7 @@
347374
networkData.account = g_account;
348375
}
349376

350-
var networkObjs, vpcObjs;
377+
var vpcObjs;
351378

352379
//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.
353380
//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.
@@ -365,7 +392,7 @@
365392
async: false,
366393
success: function(json) {
367394
networkObjs = json.listnetworksresponse.network ? json.listnetworksresponse.network : [];
368-
395+
369396
if(networkObjs.length > 0) {
370397
for(var i = 0; i < networkObjs.length; i++) {
371398
var networkObj = networkObjs[i];

ui/scripts/ui-custom/instanceWizard.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -821,6 +821,16 @@
821821
cloudStack.dialog.notice({ message: 'message.step.4.continue' });
822822
return false;
823823
}
824+
825+
if ($activeStep.hasClass('next-use-security-groups')) {
826+
var advSGFilter = args.advSGFilter({
827+
data: cloudStack.serializeForm($form)
828+
});
829+
830+
if (!advSGFilter) {
831+
showStep(6);
832+
}
833+
}
824834
}
825835

826836
//step 6 - review (spcifiy displyname, group as well)

0 commit comments

Comments
 (0)