diff --git a/src/sunstone/public/app/opennebula/vm.js b/src/sunstone/public/app/opennebula/vm.js index eeb3819ccf..697ed7e86d 100644 --- a/src/sunstone/public/app/opennebula/vm.js +++ b/src/sunstone/public/app/opennebula/vm.js @@ -897,16 +897,31 @@ define(function(require) { // returns true if the RDP button should be enabled function isRDPSupported(element) { var rtn = false; - if(element.TEMPLATE && element.TEMPLATE.NIC){ - if(!Array.isArray(element.TEMPLATE.NIC)){ - element.TEMPLATE.NIC = [element.TEMPLATE.NIC]; + + if(element.TEMPLATE && element.TEMPLATE.NIC) { + var template = element.TEMPLATE; + + rtn = hasRDP(template.NIC) + + if (!rtn && template.NIC_ALIAS) { + rtn = hasRDP(template.NIC_ALIAS) } - element.TEMPLATE.NIC.some(function(nic) { - rtn = nic.RDP && nic.RDP == "YES" - }) } return rtn; } + function hasRDP(nics) { + var activated = false; + nics = Array.isArray(nics) ? nics : [nics]; + + $.each(nics, function(_, nic) { + if (nic.RDP && String(nic.RDP).toLowerCase() === "yes") { + activated = true; + } + }); + + return activated; + } + return VM; }); diff --git a/src/sunstone/public/app/tabs/vms-tab/actions.js b/src/sunstone/public/app/tabs/vms-tab/actions.js index 7ad3741913..b8c9d4b5be 100644 --- a/src/sunstone/public/app/tabs/vms-tab/actions.js +++ b/src/sunstone/public/app/tabs/vms-tab/actions.js @@ -177,9 +177,19 @@ define(function(require) { call: function() { var vm = Sunstone.getElementRightInfo(TAB_ID); - if (vm && vm.NAME && vm.TEMPLATE && vm.TEMPLATE.NIC && Array.isArray(vm.TEMPLATE.NIC)) { + if (vm && vm.NAME && vm.TEMPLATE && vm.TEMPLATE.NIC) { var name = vm.NAME; - var nic = vm.TEMPLATE.NIC.find(n => n.RDP === "YES"); + var nics = vm.TEMPLATE.NIC; + nics = Array.isArray(nics) ? vm.TEMPLATE.NIC : [vm.TEMPLATE.NIC]; + + // append nic_alias in nics + if (vm.TEMPLATE.NIC_ALIAS) { + var alias = vm.TEMPLATE.NIC_ALIAS; + alias = Array.isArray(alias) ? alias : [alias]; + nics = $.merge(alias, nics) + } + + var nic = nics.find(n => n.RDP && String(n.RDP).toUpperCase() === "YES"); var ip = nic && nic.IP ? nic.IP : ''; var credentials = {}; @@ -187,12 +197,12 @@ define(function(require) { var context = vm.TEMPLATE.CONTEXT; for (var prop in context) { var propUpperCase = String(prop).toUpperCase(); - (propUpperCase === "USERNAME" || propUpperCase === "PASSWORD") + (propUpperCase === "USERNAME" || propUpperCase === "PASSWORD") && (credentials[propUpperCase] = context[prop]); } } - nic && Rdp.downloadFile(ip, name, credentials); + nic && Rdp.downloadFile(ip, name, credentials); } else { Notifier.notifyError(Locale.tr("RDP file error")); return false;