diff --git a/src/cloud/occi/lib/ui/public/js/occi.js b/src/cloud/occi/lib/ui/public/js/occi.js index b91c2dda6e..bdceef2429 100644 --- a/src/cloud/occi/lib/ui/public/js/occi.js +++ b/src/cloud/occi/lib/ui/public/js/occi.js @@ -500,6 +500,19 @@ var OCCI = { }, "startvnc" : function(params){ OCCI.VM.vnc(params,"startvnc"); + }, + + "attachdisk" : function(params){ + var action_obj = {"disk_template": params.data.extra_param}; + OCCI.Action.simple_action(params,OCCI.VM.resource, + "attachdisk", + params.data.extra_param); + }, + "detachdisk" : function(params){ + // extra param is disk id + var action_obj = '' + OCCI.Action.simple_action(params,OCCI.VM.resource, + "detachdisk", action_obj); } /* "monitor" : function(params){ diff --git a/src/cloud/occi/lib/ui/public/js/plugins/compute.js b/src/cloud/occi/lib/ui/public/js/plugins/compute.js index 05441efcf9..ed11ac8e09 100644 --- a/src/cloud/occi/lib/ui/public/js/plugins/compute.js +++ b/src/cloud/occi/lib/ui/public/js/plugins/compute.js @@ -241,14 +241,6 @@ var vm_actions = { notify: true }, - "VM.saveasmultiple" : { - type: "custom", - call: function(){ - var elems = vmElements(); - popUpSaveasDialog(elems); - } - }, - "VM.saveas" : { type: "single", call: OCCI.VM.saveas, @@ -256,13 +248,6 @@ var vm_actions = { error:onError }, - "VM.saveas_disks" : { - type: "single", - call: OCCI.VM.show, - callback: saveasDisksCallback, - error: onError - }, - "VM.getInstanceTypes" : { type: "list", call: OCCI.Instance_type.list, @@ -286,6 +271,26 @@ var vm_actions = { callback: vncCallback, error: onError, notify: true + }, + + "VM.attachdisk" : { + type: "single", + call: OCCI.VM.attachdisk, + callback: updateVMachineElement, + error: onError, + notify: true + }, + + "VM.detachdisk" : { + type: "single", + call: OCCI.VM.detachdisk, + callback: function(req,res){ + setTimeout(function(req,res){ + Sunstone.runAction("VM.show", req.request.data[0][0]) + },1000,req); + }, + error: onError, + notify: true } /* @@ -382,8 +387,8 @@ var vm_info_panel = { title: tr("Compute resource"), content: "" }, - "vm_disks_tab" : { - title: tr("Disks"), + "vm_hotplugging_tab" : { + title: tr("Disks & Hotplugging"), content: "" }, "vm_networks_tab" : { @@ -464,6 +469,11 @@ function updateVMachineElement(request, vm_json){ var id = vm_json.COMPUTE.ID; var element = vMachineElementArray(vm_json); updateSingleElement(element,dataTable_vMachines,'#vm_'+id) + + //we update this too, even if it is not shown. + var $hotplugging_tab = $('div#vm_info_panel div#vm_hotplugging_tab'); + $('#hotplugging_form', + $hotplugging_tab).replaceWith(printDisks(vm_json.COMPUTE)); } // Callback to delete a single element from the list @@ -562,47 +572,9 @@ function updateVMInfo(request,vm){ \ - \ - \ - \ - '); - - dialog.dialog({ - autoOpen:false, - width:600, - modal:true, - height:350, - resizable:true - }); - - $('#saveas_vm_form',dialog).submit(function(){ - var elems = $('#saveas_tabs div.saveas_tab',this); - var args = []; - $.each(elems,function(){ - var id = $('#vm_id',this).text(); - var disk_id = $('#vm_disk_id',this).val(); - var image_name = $('#image_name',this).val(); - - if (!id.length || !disk_id.length || !image_name.length) { - notifyError(tr("Skipping VM ")+id+". "+ - tr("No disk id or image name specified")); - } - else { - var obj = { - disk_id : disk_id, - image_name : image_name - }; - args.push(id); - Sunstone.runAction("VM.saveas",id,obj); - } - }); - if (args.length > 0){ - notifySubmit("VM.saveas",args); - } - - $saveas_vm_dialog.dialog('close'); - return false; - }); - - $('#vm_saveas_cancel',dialog).click(function(){ - $saveas_vm_dialog.dialog('close'); - return false; - }); - -} - -function popUpSaveasDialog(elems){ - var dialog = $saveas_vm_dialog; - $('#saveas_tabs',dialog).tabs('destroy'); - $('#saveas_tabs',dialog).empty(); - $('#saveas_tabs',dialog).html(''); - - $.each(elems,function(){ - var li = '
  • VM '+this+'
  • ' - $('#saveas_tabs ul',dialog).append(li); - var tab = '
    \ -
    '+tr("Saveas for VM with ID")+' '+this+'
    \ -
    \ -
    \ - \ - \ -
    \ -
    \ - \ - \ -
    \ -
    \ -
    '; - $('#saveas_tabs',dialog).append(tab); - Sunstone.runAction("VM.saveas_disks",this); - }); - $('#saveas_tabs',dialog).tabs(); - $('button',dialog).button(); - dialog.dialog('open'); -} - -function saveasDisksCallback(req,response){ - var vm_info = response.COMPUTE; - var id=vm_info.ID; - var select=""; - - var gen_option = function(id, name, source){ - if (name){ - return ''; - } - else { - return ''; - } - } - - var disks = vm_info.DISK; - if (!disks) { select = '';} - else if (disks.constructor == Array) //several disks - { - for (var i=0;i