diff --git a/src/sunstone/public/app/tabs/provision-tab/vms/info.hbs b/src/sunstone/public/app/tabs/provision-tab/vms/info.hbs index 67f11e33ad..63f526f360 100644 --- a/src/sunstone/public/app/tabs/provision-tab/vms/info.hbs +++ b/src/sunstone/public/app/tabs/provision-tab/vms/info.hbs @@ -39,6 +39,14 @@ +
  • + +
  • +
  • + +
  • diff --git a/src/sunstone/public/app/tabs/provision-tab/vms/list.js b/src/sunstone/public/app/tabs/provision-tab/vms/list.js index 693e12ae60..6aff36fae8 100644 --- a/src/sunstone/public/app/tabs/provision-tab/vms/list.js +++ b/src/sunstone/public/app/tabs/provision-tab/vms/list.js @@ -329,9 +329,11 @@ define(function(require) { $(".provision_save_as_template_confirm_button_disabled", context).hide(); } - if (OpenNebula.VM.isVNCSupported(data) || - OpenNebula.VM.isSPICESupported(data)) { + $(".provision_rdp_button", context).toggle(Boolean(OpenNebulaVM.isRDPSupported(data))); + $(".provision_wfile_button", context).toggle(Boolean(OpenNebulaVM.isWFileSupported(data))); + if (OpenNebulaVM.isVNCSupported(data) || + OpenNebulaVM.isSPICESupported(data)) { $(".provision_vnc_button", context).show(); $(".provision_vnc_button_disabled", context).hide(); }else{ @@ -755,25 +757,56 @@ define(function(require) { return false; }); + context.on("click", ".provision_rdp_button", function() { + var vm = $(".provision_info_vm", context).data("vm") || {}; + var rdp = OpenNebulaVM.isRDPSupported(vm) || {}; + + var username, password; + if (vm.TEMPLATE && vm.TEMPLATE.CONTEXT) { + var context = vm.TEMPLATE.CONTEXT; + for (var prop in context) { + var propUpperCase = String(prop).toUpperCase(); + (propUpperCase === "USERNAME") && (username = context[prop]); + (propUpperCase === "PASSWORD") && (password = context[prop]); + } + } + + Sunstone.runAction("VM.save_rdp", JSON.parse(JSON.stringify({ + name: vm.NAME, + ip: rdp.IP, + username: username, + password: password, + }))); + }); + + context.on("click", ".provision_wfile_button", function() { + var vm_id = $(".provision_info_vm", context).attr("vm_id") || ''; + var vm = $(".provision_info_vm", context).data("vm") || {}; + var wFile = OpenNebulaVM.isWFileSupported(vm) || {}; + + ("VM.save_virt_viewer_action", vm.ID, wFile); + Sunstone.runAction("VM.save_virt_viewer_action", vm_id, wFile); + }); + context.on("click", ".provision_vnc_button", function(){ var button = $(this); button.attr("disabled", "disabled"); var vm_id = $(".provision_info_vm", context).attr("vm_id"); var vm_data = $(".provision_info_vm", context).data("vm"); - OpenNebula.VM.vnc({ + OpenNebulaVM.vnc({ data : { id: vm_id }, success: function(request, response){ - if (OpenNebula.VM.isVNCSupported(vm_data)) { + if (OpenNebulaVM.isVNCSupported(vm_data)) { var dialog = Sunstone.getDialog(VNC_DIALOG_ID); dialog.setElement(response); dialog.show(); button.removeAttr("disabled"); - } else if (OpenNebula.VM.isSPICESupported(vm_data)) { + } else if (OpenNebulaVM.isSPICESupported(vm_data)) { var dialog = Sunstone.getDialog(SPICE_DIALOG_ID); dialog.setElement(response); dialog.show(); diff --git a/src/sunstone/public/scss/_provision.scss b/src/sunstone/public/scss/_provision.scss index 7a53310bd8..a697f6a6fe 100644 --- a/src/sunstone/public/scss/_provision.scss +++ b/src/sunstone/public/scss/_provision.scss @@ -136,4 +136,17 @@ .running-color { color: $running-color; +} + +.menu.provision_action_icons { + display: flex; + flex-wrap: wrap; + + li { + margin: 0.5em 0; + } + + .provision_rdp_button { + font-weight: normal; + } } \ No newline at end of file