diff --git a/src/sunstone/models/sunstone_vmrc.rb b/src/sunstone/models/sunstone_vmrc.rb index 865665cc4e..21ee237a80 100644 --- a/src/sunstone/models/sunstone_vmrc.rb +++ b/src/sunstone/models/sunstone_vmrc.rb @@ -162,7 +162,10 @@ class SunstoneVMRC file.write('https://' + data[:host] + ':' + data[:port].to_s) file.close - [200, { :data => data }.to_json] + info = SunstoneVMHelper.get_remote_info(vm_resource) + encode_info = Base64.encode64(info.to_json) + + [200, { :data => data, :info => encode_info }.to_json] end private diff --git a/src/sunstone/public/app/opennebula/vm.js b/src/sunstone/public/app/opennebula/vm.js index d852d724e8..1b9465e0d3 100644 --- a/src/sunstone/public/app/opennebula/vm.js +++ b/src/sunstone/public/app/opennebula/vm.js @@ -613,8 +613,7 @@ define(function(require) { var callback = params.success; var callback_error = params.error; var id = params.data.id; - var typeConnection = params.data.extra_param.type; - var vm_name = params.data.extra_param.vm_name; + var typeConnection = params.data.extra_param; var resource = RESOURCE; var request = OpenNebulaHelper.request(resource, null, params.data); @@ -623,7 +622,6 @@ define(function(require) { type: "POST", dataType: "json", success: function(response) { - response.vm_name = vm_name; return callback ? callback(request, response) : null; }, error: function(response) { @@ -816,11 +814,26 @@ define(function(require) { "isSPICESupported": isSPICESupported, "isWFileSupported": isWFileSupported, "hasConnection": hasConnection, + "promiseGetVm" : _promiseGetVm, "getName": function(id){ return OpenNebulaAction.getName(id, RESOURCE); } }; + function _promiseGetVm({ id, success, async = true } = {}) { + return $.ajax({ + url: 'vm/' + id, + type: 'GET', + success: function(response) { + if (typeof success === 'function') { + var vm = response ? response[RESOURCE] : undefined; + success(vm); + } + }, + async: async + }); + } + function retrieveLastHistoryRecord(element) { if (element.HISTORY_RECORDS && element.HISTORY_RECORDS.HISTORY) { var history = element.HISTORY_RECORDS.HISTORY; @@ -1095,10 +1108,11 @@ define(function(require) { function isVMRCSupported(element = {}) { var actionEnabled = Config.isTabActionEnabled('vms-tab', 'VM.startvmrc') - var vmrcSupported = graphicSupported(element, 'vrmc') - var isVCenter = + var vmrcSupported = graphicSupported(element, 'vnc') + var isVCenter = Boolean( element.USER_TEMPLATE && String(element.USER_TEMPLATE.HYPERVISOR).toLowerCase() === 'vcenter' + ) return actionEnabled && vmrcSupported && isVCenter } diff --git a/src/sunstone/public/app/tabs/oneflow-services-tab/panels/roles.js b/src/sunstone/public/app/tabs/oneflow-services-tab/panels/roles.js index ed891fb5c9..8e4832b584 100644 --- a/src/sunstone/public/app/tabs/oneflow-services-tab/panels/roles.js +++ b/src/sunstone/public/app/tabs/oneflow-services-tab/panels/roles.js @@ -220,24 +220,24 @@ define(function(require) { var ips = "", actions = ""; function successCallback (data) { - if (data.VM && data.VM.ID === id) { + if (data && data.ID === id) { var ready = "" if (ready_status_gate) { - ready = (data.VM.USER_TEMPLATE && data.VM.USER_TEMPLATE.READY == "YES") + ready = (data.USER_TEMPLATE && data.USER_TEMPLATE.READY == "YES") ? '' : '' } - ips = OpenNebulaVM.ipsStr(data.VM, { forceGroup: true }); + ips = OpenNebulaVM.ipsStr(data, { forceGroup: true }); - actions = VMRemoteActions.renderActionsHtml(data.VM); + actions = VMRemoteActions.renderActionsHtml(data); } roleVms[index] = rowInfoRoleVm(ready, id, name, uname, gname, ips, actions); } - promises.push(promiseVmInfo(id, successCallback)) + promises.push(OpenNebulaVM.promiseGetVm({ id, success: successCallback })) }) } @@ -282,15 +282,6 @@ define(function(require) { ]; } - function promiseVmInfo(id, success) { - return $.ajax({ - url: "vm/" + id, - type: "GET", - dataType: "json", - success: success - }) - } - function _roleSetup(context, role) { var that = this diff --git a/src/sunstone/public/app/tabs/vms-tab/actions.js b/src/sunstone/public/app/tabs/vms-tab/actions.js index 2c9d676996..fe92900221 100644 --- a/src/sunstone/public/app/tabs/vms-tab/actions.js +++ b/src/sunstone/public/app/tabs/vms-tab/actions.js @@ -348,10 +348,8 @@ define(function(require) { "VM.guac_vnc" : { type: "custom", call: function() { - $.each(Sunstone.getDataTable(TAB_ID).elements(), function(index, elem) { - var vm_name = OpenNebulaVM.getName(elem); - var extra_param = {type: 'vnc', 'vm_name': vm_name } - Sunstone.runAction("VM.startguac_action", elem, extra_param); + $.each(Sunstone.getDataTable(TAB_ID).elements(), function(_, elem) { + Sunstone.runAction("VM.startguac_action", elem, 'vnc'); }); }, error: function(req, resp) { @@ -361,10 +359,8 @@ define(function(require) { "VM.guac_rdp" : { type: "custom", call: function() { - $.each(Sunstone.getDataTable(TAB_ID).elements(), function(index, elem) { - var vm_name = OpenNebulaVM.getName(elem); - var extra_param = {type: 'rdp', 'vm_name': vm_name } - Sunstone.runAction("VM.startguac_action", elem, extra_param); + $.each(Sunstone.getDataTable(TAB_ID).elements(), function(_, elem) { + Sunstone.runAction("VM.startguac_action", elem, 'rdp'); }); }, error: function(req, resp) { @@ -374,10 +370,8 @@ define(function(require) { "VM.guac_ssh" : { type: "custom", call: function() { - $.each(Sunstone.getDataTable(TAB_ID).elements(), function(index, elem) { - var vm_name = OpenNebulaVM.getName(elem); - var extra_param = {type: 'ssh', 'vm_name': vm_name } - Sunstone.runAction("VM.startguac_action", elem, extra_param); + $.each(Sunstone.getDataTable(TAB_ID).elements(), function(_, elem) { + Sunstone.runAction("VM.startguac_action", elem, 'ssh'); }); }, error: function(req, resp) { @@ -387,7 +381,7 @@ define(function(require) { "VM.startguac_action" : { type: "single", call: OpenNebulaVM.guac, - callback: function(request, response) { + callback: function(_, response) { var dialog = Sunstone.getDialog(GUAC_DIALOG_ID); dialog.setElement(response); dialog.show(); diff --git a/src/sunstone/public/app/tabs/vms-tab/dialogs/vmrc.js b/src/sunstone/public/app/tabs/vms-tab/dialogs/vmrc.js index 0b3dab2b5b..58ced7e1cd 100644 --- a/src/sunstone/public/app/tabs/vms-tab/dialogs/vmrc.js +++ b/src/sunstone/public/app/tabs/vms-tab/dialogs/vmrc.js @@ -63,8 +63,6 @@ define(function(require) { } function _setup(context) { - var that = this; - $("#open_in_a_new_window", context).on("click", function() { var dialog = Sunstone.getDialog(DIALOG_ID); dialog.hide(); diff --git a/src/sunstone/public/app/tabs/vms-tab/dialogs/vmrc/html.hbs b/src/sunstone/public/app/tabs/vms-tab/dialogs/vmrc/html.hbs index 506a79256c..ff272b791f 100644 --- a/src/sunstone/public/app/tabs/vms-tab/dialogs/vmrc/html.hbs +++ b/src/sunstone/public/app/tabs/vms-tab/dialogs/vmrc/html.hbs @@ -15,7 +15,7 @@ {{! -------------------------------------------------------------------------- }}