From df7e2ea50b15f66b792d10426a9f18cd59aaf0ac Mon Sep 17 00:00:00 2001 From: Jorge Lobo <47326048+jloboescalona2@users.noreply.github.com> Date: Mon, 24 Feb 2020 18:08:06 +0100 Subject: [PATCH] Bug 4132: RDP in fenced vnet mapping (#4242) * add rdp * fix mapping networks * fix ip in button RDP vm info --- .../public/app/tabs/vms-tab/actions.js | 13 +++++-- .../public/app/tabs/vms-tab/datatable.js | 11 ++++++ .../tabs/vms-tab/utils/datatable-common.js | 36 ++++++++++++++++--- .../public/app/tabs/vms-tab/utils/mapips.js | 10 +++--- src/sunstone/public/app/utils/leases.js | 3 +- src/sunstone/views/index.erb | 4 +-- 6 files changed, 60 insertions(+), 17 deletions(-) diff --git a/src/sunstone/public/app/tabs/vms-tab/actions.js b/src/sunstone/public/app/tabs/vms-tab/actions.js index 0de9fb0770..e30dce750e 100644 --- a/src/sunstone/public/app/tabs/vms-tab/actions.js +++ b/src/sunstone/public/app/tabs/vms-tab/actions.js @@ -24,6 +24,7 @@ define(function(require) { var Vnc = require('utils/vnc'); var Spice = require('utils/spice'); var Rdp = require('utils/rdp'); + var mapips = require('./utils/mapips'); var TAB_ID = require('./tabId'); var CREATE_DIALOG_ID = require('./form-panels/create/formPanelId'); @@ -177,21 +178,27 @@ define(function(require) { call: function() { var vm = Sunstone.getElementRightInfo(TAB_ID); - if (vm && vm.NAME && vm.TEMPLATE && Array.isArray(vm.TEMPLATE.NIC)) { + if (vm && vm.NAME && vm.TEMPLATE && vm.TEMPLATE.NIC && Array.isArray(vm.TEMPLATE.NIC)) { var name = vm.NAME; var nic = vm.TEMPLATE.NIC.find(n => n.RDP === "YES"); + var ip = nic && nic.IP ? nic.IP : ''; var credentials = {}; if (vm.TEMPLATE.CONTEXT) { var context = vm.TEMPLATE.CONTEXT; - for (var prop in context) { var propUpperCase = String(prop).toUpperCase(); (propUpperCase === "USERNAME" || propUpperCase === "PASSWORD") && (credentials[propUpperCase] = context[prop]); } + var pblc = vm.TEMPLATE.CONTEXT.MAP_PUBLIC; + var prvt = vm.TEMPLATE.CONTEXT.MAP_PRIVATE; + var mapp = new mapips(pblc, prvt); + var foundip = mapp.renderPublicIp(ip); + ip = foundip || ip } - nic && Rdp.downloadFile(nic.IP, name, credentials); + + nic && Rdp.downloadFile(ip, name, credentials); } else { Notifier.notifyError(Locale.tr("RDP file error")); return false; diff --git a/src/sunstone/public/app/tabs/vms-tab/datatable.js b/src/sunstone/public/app/tabs/vms-tab/datatable.js index 5adf98f19a..17d4b57547 100644 --- a/src/sunstone/public/app/tabs/vms-tab/datatable.js +++ b/src/sunstone/public/app/tabs/vms-tab/datatable.js @@ -31,6 +31,8 @@ define(function(require) { var Notifier = require('utils/notifier'); var DashboardUtils = require('utils/dashboard'); var SearchDropdown = require('hbs!./datatable/search'); + var Rdp = require('utils/rdp'); + var TemplateUtils = require('utils/template-utils'); /* CONSTANTS @@ -170,6 +172,15 @@ define(function(require) { TabDataTable.prototype.initialize.call(this, opts); + //download file RDP + $('#' + this.dataTableId).on("click", '.download_rdp', function(e){ + e.stopPropagation(); + var ip = $(this).attr("ip"); + var credential = TemplateUtils.stringToTemplate( $(this).attr("credential") ); + var name = $(this).attr("name"); + Rdp.downloadFile(ip, name, credential); + }); + $('#' + this.dataTableId).on("click", '.vnc', function() { var vmId = $(this).attr('vm_id'); diff --git a/src/sunstone/public/app/tabs/vms-tab/utils/datatable-common.js b/src/sunstone/public/app/tabs/vms-tab/utils/datatable-common.js index 72ff5fb067..11e1265103 100644 --- a/src/sunstone/public/app/tabs/vms-tab/utils/datatable-common.js +++ b/src/sunstone/public/app/tabs/vms-tab/utils/datatable-common.js @@ -100,6 +100,7 @@ define(function(require) { var render = ''; if( element && + element.NAME && element.TEMPLATE && element.TEMPLATE.CONTEXT && element.TEMPLATE.CONTEXT.MAP_PRIVATE && @@ -107,16 +108,28 @@ define(function(require) { element.TEMPLATE.NIC && config && config.system_config && - config.system_config.extended_vm_info && - config.system_config.mapped_ips + config.system_config.get_extended_vm_info && + config.system_config.get_extended_vm_info !== 'false' && + config.system_config.mapped_ips && + config.system_config.mapped_ips !== 'false' ){ var nics = element.TEMPLATE.NIC; - var pblc = element.TEMPLATE.CONTEXT.MAP_PUBLIC; - var prvt = element.TEMPLATE.CONTEXT.MAP_PRIVATE; + var credentials = {}; + var context = element.TEMPLATE.CONTEXT; + var pblc = element.TEMPLATE.CONTEXT.MAP_PUBLIC; //"10.0.0.0/8"; + var prvt = element.TEMPLATE.CONTEXT.MAP_PRIVATE; //"192.168.0.0/16"; var renderTitle = true; if (!$.isArray(nics)){ nics = [nics]; } + + //find RDP CREDENTIALS + for (var prop in context) { + var propUpperCase = String(prop).toUpperCase(); + (propUpperCase === "USERNAME" || propUpperCase === "PASSWORD") + && (credentials[propUpperCase] = context[prop]); + } + var mapp = new mapips(pblc, prvt); nics.forEach(function(nic){ if(nic && nic.IP){ @@ -126,7 +139,20 @@ define(function(require) { render = $('
').append($('