From 3fd36b716020733fda88296f8b91e1322a17af15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Mart=C3=ADn?= Date: Mon, 18 Jul 2016 15:55:21 +0200 Subject: [PATCH] Feature #4620: Show PCI NICs in template instantiate --- .../templates-tab/form-panels/instantiate.js | 43 ++++++++++++++++++- src/sunstone/public/app/utils/nics-section.js | 30 ++++++++++--- .../public/app/utils/nics-section/dd.hbs | 4 ++ 3 files changed, 71 insertions(+), 6 deletions(-) diff --git a/src/sunstone/public/app/tabs/templates-tab/form-panels/instantiate.js b/src/sunstone/public/app/tabs/templates-tab/form-panels/instantiate.js index a4056c8afc..5d1b8943cd 100644 --- a/src/sunstone/public/app/tabs/templates-tab/form-panels/instantiate.js +++ b/src/sunstone/public/app/tabs/templates-tab/form-panels/instantiate.js @@ -124,6 +124,8 @@ define(function(require) { } function _submitWizard(context) { + var that = this; + if (!this.selected_nodes || this.selected_nodes.length == 0) { Notifier.notifyError(Locale.tr("No template selected")); Sunstone.hideFormPanelLoading(this.tabId); @@ -160,11 +162,50 @@ define(function(require) { tmp_json.DISK = disks; } - var nics = NicsSection.retrieve($(".nicsContext" + template_id, context)); + var networks = NicsSection.retrieve($(".nicsContext" + template_id, context)); + + var nics = []; + var pcis = []; + + $.each(networks, function(){ + if (this.TYPE == "NIC"){ + pcis.push(this); + }else{ + nics.push(this); + } + }); + if (nics.length > 0) { tmp_json.NIC = nics; } + // Replace PCIs of type nic only + var original_tmpl = that.template_objects[index].VMTEMPLATE; + + var regular_pcis = []; + + if(original_tmpl.TEMPLATE.PCI != undefined){ + var original_pcis; + + if ($.isArray(original_tmpl.TEMPLATE.PCI)){ + original_pcis = original_tmpl.TEMPLATE.PCI; + } else if (!$.isEmptyObject(original_tmpl.TEMPLATE.PCI)){ + original_pcis = [original_tmpl.TEMPLATE.PCI]; + } + + $.each(original_pcis, function(){ + if(this.TYPE != "NIC"){ + regular_pcis.push(this); + } + }); + } + + pcis = pcis.concat(regular_pcis); + + if (pcis.length > 0) { + tmp_json.PCI = pcis; + } + capacityContext = $(".capacityContext" + template_id, context); $.extend(tmp_json, CapacityInputs.retrieveChanges(capacityContext)); diff --git a/src/sunstone/public/app/utils/nics-section.js b/src/sunstone/public/app/utils/nics-section.js index 9acf186020..6a7ecea7bd 100644 --- a/src/sunstone/public/app/utils/nics-section.js +++ b/src/sunstone/public/app/utils/nics-section.js @@ -55,11 +55,28 @@ define(function(require) { try { if (OpenNebulaTemplate.isNetworkChangeEnabled(template_json)) { var template_nic = template_json.VMTEMPLATE.TEMPLATE.NIC - var nics = [] - if ($.isArray(template_nic)) - nics = template_nic - else if (!$.isEmptyObject(template_nic)) - nics = [template_nic] + + var nics = []; + + if ($.isArray(template_nic)){ + nics = template_nic; + } else if (!$.isEmptyObject(template_nic)){ + nics = [template_nic]; + } + + var pcis = []; + + if ($.isArray(template_json.VMTEMPLATE.TEMPLATE.PCI)){ + pcis = template_json.VMTEMPLATE.TEMPLATE.PCI; + } else if (!$.isEmptyObject(template_json.VMTEMPLATE.TEMPLATE.PCI)){ + pcis = [template_json.VMTEMPLATE.TEMPLATE.PCI]; + } + + $.each(pcis, function(){ + if(this.TYPE == "NIC"){ + nics.push(this); + } + }); _generate_provision_network_accordion( $(".provision_network_selector", context), options); @@ -68,6 +85,8 @@ define(function(require) { var opt = $.extend({}, options); opt.nic = nic; + opt.pci = (nic.TYPE == "NIC"); + _generate_provision_network_table( $(".provision_nic_accordion", context), opt); @@ -160,6 +179,7 @@ define(function(require) { * - management {bool}: true to show the * management checkbox * - securityGroups {bool}: true to select SGs + * - pci {bool}: true if this is a PCI interface */ function _generate_provision_network_table(context, options) { context.off(); diff --git a/src/sunstone/public/app/utils/nics-section/dd.hbs b/src/sunstone/public/app/utils/nics-section/dd.hbs index f07c56791e..22d3b5e0ee 100644 --- a/src/sunstone/public/app/utils/nics-section/dd.hbs +++ b/src/sunstone/public/app/utils/nics-section/dd.hbs @@ -2,7 +2,11 @@ + {{#if options.pci}} +  {{tr "PCI interface"}}  + {{else}}  {{tr "Interface"}}  + {{/if}} {{#if options.nic}} {{#if options.nic.NETWORK}}