mirror of
https://github.com/OpenNebula/one.git
synced 2025-03-22 18:50:08 +03:00
Feature #862, task #884: Add update properties dialog to VMs view with permissions settings. Fix small problems with vnets.
This commit is contained in:
parent
094cf5a466
commit
cb10c15522
@ -51,6 +51,7 @@ module OpenNebulaJSON
|
||||
when "unpublish" then self.unpublish
|
||||
when "update" then self.update(action_hash['params'])
|
||||
when "chown" then self.chown(action_hash['params'])
|
||||
when "chmod" then self.chmod_octet(action_hash['params'])
|
||||
when "chtype" then self.chtype(action_hash['params'])
|
||||
else
|
||||
error_msg = "#{action_hash['perform']} action not " <<
|
||||
@ -71,6 +72,10 @@ module OpenNebulaJSON
|
||||
super(params['owner_id'].to_i,params['group_id'].to_i)
|
||||
end
|
||||
|
||||
def chmod_octet(params=Hash.new)
|
||||
super(params['octet'])
|
||||
end
|
||||
|
||||
def chtype(params=Hash.new)
|
||||
super(params['type'])
|
||||
end
|
||||
|
@ -42,11 +42,12 @@ module OpenNebulaJSON
|
||||
end
|
||||
|
||||
rc = case action_hash['perform']
|
||||
when "publish" then self.publish
|
||||
when "unpublish" then self.unpublish
|
||||
when "update" then self.update(action_hash['params'])
|
||||
when "chown" then self.chown(action_hash['params'])
|
||||
when "instantiate" then self.instantiate(action_hash['params'])
|
||||
when "publish" then self.publish
|
||||
when "unpublish" then self.unpublish
|
||||
when "update" then self.update(action_hash['params'])
|
||||
when "chown" then self.chown(action_hash['params'])
|
||||
when "chmod" then self.chmod_octet(action_hash['octet'])
|
||||
when "instantiate" then self.instantiate(action_hash['params'])
|
||||
else
|
||||
error_msg = "#{action_hash['perform']} action not " <<
|
||||
" available for this resource"
|
||||
@ -62,6 +63,10 @@ module OpenNebulaJSON
|
||||
super(params['owner_id'].to_i,params['group_id'].to_i)
|
||||
end
|
||||
|
||||
def chmod_octet(params=Hash.new)
|
||||
super(params['octet'])
|
||||
end
|
||||
|
||||
def instantiate(params=Hash.new)
|
||||
super(params['vm_name'])
|
||||
end
|
||||
|
@ -65,6 +65,7 @@ module OpenNebulaJSON
|
||||
when "reboot" then self.reboot
|
||||
when "resubmit" then self.resubmit
|
||||
when "chown" then self.chown(action_hash['params'])
|
||||
when "chmod" then self.chmod_octet(action_hash['params'])
|
||||
else
|
||||
error_msg = "#{action_hash['perform']} action not " <<
|
||||
" available for this resource"
|
||||
@ -95,5 +96,9 @@ module OpenNebulaJSON
|
||||
def chown(params=Hash.new)
|
||||
super(params['owner_id'].to_i,params['group_id'].to_i)
|
||||
end
|
||||
|
||||
def chmod_octet(params=Hash.new)
|
||||
super(params['octet'])
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -565,6 +565,13 @@ var OpenNebula = {
|
||||
"chgrp" : function(params){
|
||||
OpenNebula.Action.chgrp(params,OpenNebula.VM.resource);
|
||||
},
|
||||
"chmod" : function(params){
|
||||
var action_obj = params.data.extra_param;
|
||||
OpenNebula.Action.simple_action(params,
|
||||
OpenNebula.VM.resource,
|
||||
"chmod",
|
||||
action_obj);
|
||||
},
|
||||
"shutdown": function(params){
|
||||
OpenNebula.Action.simple_action(params,OpenNebula.VM.resource,"shutdown");
|
||||
},
|
||||
@ -742,6 +749,13 @@ var OpenNebula = {
|
||||
"chgrp" : function(params){
|
||||
OpenNebula.Action.chgrp(params,OpenNebula.Image.resource);
|
||||
},
|
||||
"chmod" : function(params){
|
||||
var action_obj = params.data.extra_param;
|
||||
OpenNebula.Action.simple_action(params,
|
||||
OpenNebula.Image.resource,
|
||||
"chmod",
|
||||
action_obj);
|
||||
},
|
||||
"update": function(params){
|
||||
var action_obj = {"template_raw" : params.data.extra_param };
|
||||
OpenNebula.Action.simple_action(params,
|
||||
@ -800,6 +814,13 @@ var OpenNebula = {
|
||||
"chgrp" : function(params){
|
||||
OpenNebula.Action.chgrp(params,OpenNebula.Template.resource);
|
||||
},
|
||||
"chmod" : function(params){
|
||||
var action_obj = params.data.extra_param;
|
||||
OpenNebula.Action.simple_action(params,
|
||||
OpenNebula.Template.resource,
|
||||
"chmod",
|
||||
action_obj);
|
||||
},
|
||||
"update" : function(params){
|
||||
var action_obj = {"template_raw" : params.data.extra_param };
|
||||
OpenNebula.Action.simple_action(params,
|
||||
|
@ -92,6 +92,54 @@ var create_vm_tmpl ='<form id="create_vm_form" action="">\
|
||||
</fieldset>\
|
||||
</form>';
|
||||
|
||||
var update_vm_tmpl =
|
||||
'<form action="javascript:alert(\'js error!\');">\
|
||||
<h3 style="margin-bottom:10px;">'+tr("Please, choose and modify the virtual machine you want to update")+':</h3>\
|
||||
<fieldset style="border-top:none;">\
|
||||
<label for="vm_template_update_select">'+tr("Select a VM")+':</label>\
|
||||
<select id="vm_template_update_select" name="vm_template_update_select"></select>\
|
||||
<div class="clear"></div>\
|
||||
<div>\
|
||||
<table class="permissions_table" style="padding:0 10px;">\
|
||||
<thead><tr>\
|
||||
<td style="width:130px">'+tr("Permissions")+':</td>\
|
||||
<td style="width:40px;text-align:center;">'+tr("Use")+'</td>\
|
||||
<td style="width:40px;text-align:center;">'+tr("Manage")+'</td>\
|
||||
<td style="width:40px;text-align:center;">'+tr("Admin")+'</td></tr></thead>\
|
||||
<tr>\
|
||||
<td>'+tr("Owner")+'</td>\
|
||||
<td style="text-align:center"><input type="checkbox" name="vm_owner_u" class="owner_u" /></td>\
|
||||
<td style="text-align:center"><input type="checkbox" name="vm_owner_m" class="owner_m" /></td>\
|
||||
<td style="text-align:center"><input type="checkbox" name="vm_owner_a" class="owner_a" /></td>\
|
||||
</tr>\
|
||||
<tr>\
|
||||
<td>'+tr("Group")+'</td>\
|
||||
<td style="text-align:center"><input type="checkbox" name="vm_owner_u" class="group_u" /></td>\
|
||||
<td style="text-align:center"><input type="checkbox" name="vm_owner_m" class="group_m" /></td>\
|
||||
<td style="text-align:center"><input type="checkbox" name="vm_owner_a" class="group_a" /></td>\
|
||||
</tr>\
|
||||
<tr>\
|
||||
<td>'+tr("Other")+'</td>\
|
||||
<td style="text-align:center"><input type="checkbox" name="vm_owner_u" class="other_u" /></td>\
|
||||
<td style="text-align:center"><input type="checkbox" name="vm_owner_m" class="other_m" /></td>\
|
||||
<td style="text-align:center"><input type="checkbox" name="vm_owner_a" class="other_a" /></td>\
|
||||
</tr>\
|
||||
</table>\
|
||||
</div>\
|
||||
<!-- <label for="vnet_template_update_textarea">'+tr("Template")+':</label>\
|
||||
<div class="clear"></div>\
|
||||
<textarea id="vnet_template_update_textarea" style="width:100%; height:14em;"></textarea>\
|
||||
-->\
|
||||
</fieldset>\
|
||||
<fieldset>\
|
||||
<div class="form_buttons">\
|
||||
<button class="button" id="vm_template_update_button" value="VM.update_template">\
|
||||
'+tr("Update")+'\
|
||||
</button>\
|
||||
</div>\
|
||||
</fieldset>\
|
||||
</form>';
|
||||
|
||||
var vmachine_list_json = {};
|
||||
var dataTable_vMachines;
|
||||
var $create_vm_dialog;
|
||||
@ -115,6 +163,11 @@ var vm_actions = {
|
||||
call: popUpCreateVMDialog,
|
||||
},
|
||||
|
||||
"VM.update_dialog" : {
|
||||
type: "custom",
|
||||
call: popUpVMTemplateUpdateDialog
|
||||
},
|
||||
|
||||
"VM.list" : {
|
||||
type: "list",
|
||||
call: OpenNebula.VM.list,
|
||||
@ -373,7 +426,23 @@ var vm_actions = {
|
||||
elements: vmElements,
|
||||
error: onError,
|
||||
notify: true
|
||||
}
|
||||
},
|
||||
"VM.fetch_permissions" : {
|
||||
type: "single",
|
||||
call: OpenNebula.VM.show,
|
||||
callback : function(request, vm_json){
|
||||
var dialog = $('#vm_template_update_dialog form');
|
||||
var vm = vm_json.VM;
|
||||
setPermissionsTable(vm,dialog);
|
||||
},
|
||||
error: onError
|
||||
},
|
||||
"VM.chmod" : {
|
||||
type: "single",
|
||||
call: OpenNebula.VM.chmod,
|
||||
error: onError,
|
||||
notify: true
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
@ -391,6 +460,12 @@ var vm_buttons = {
|
||||
alwaysActive: true
|
||||
},
|
||||
|
||||
"VM.update_dialog" : {
|
||||
type: "action",
|
||||
text: tr("Update properties"),
|
||||
alwaysActive: true
|
||||
},
|
||||
|
||||
"VM.chown" : {
|
||||
type: "confirm_with_select",
|
||||
text: tr("Change owner"),
|
||||
@ -673,7 +748,21 @@ function updateVMInfo(request,vm){
|
||||
<tr>\
|
||||
<td class="key_td">'+tr("Deploy ID")+'</td>\
|
||||
<td class="value_td">'+(typeof(vm_info.DEPLOY_ID) == "object" ? "-" : vm_info.DEPLOY_ID)+'</td>\
|
||||
</tr></tbody>\
|
||||
</tr>\
|
||||
<tr><td></td><td></td></tr>\
|
||||
<tr>\
|
||||
<td class="key_td">'+tr("Owner permissions")+'</td>\
|
||||
<td class="value_td">'+ownerPermStr(vm_info)+'</td>\
|
||||
</tr>\
|
||||
<tr>\
|
||||
<td class="key_td">'+tr("Group permissions")+'</td>\
|
||||
<td class="value_td">'+groupPermStr(vm_info)+'</td>\
|
||||
</tr>\
|
||||
<tr>\
|
||||
<td class="key_td">'+tr("Other permissions")+'</td>\
|
||||
<td class="value_td">'+otherPermStr(vm_info)+'</td>\
|
||||
</tr>\
|
||||
</tbody>\
|
||||
</table>\
|
||||
<table id="vm_monitoring_table" class="info_table">\
|
||||
<thead>\
|
||||
@ -922,7 +1011,100 @@ function saveasDisksCallback(req,response){
|
||||
//introduce options in the right tab
|
||||
$('#saveas_tabs #saveas_tab_'+id+' #vm_disk_id',$saveas_vm_dialog).html(select);
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
function setupVMTemplateUpdateDialog(){
|
||||
//Append to DOM
|
||||
dialogs_context.append('<div id="vm_template_update_dialog" title="'+tr("Update VM properties")+'"></div>');
|
||||
var dialog = $('#vm_template_update_dialog',dialogs_context);
|
||||
|
||||
//Put HTML in place
|
||||
dialog.html(update_vm_tmpl);
|
||||
|
||||
var height = Math.floor($(window).height()*0.8); //set height to a percentage of the window
|
||||
|
||||
//Convert into jQuery
|
||||
dialog.dialog({
|
||||
autoOpen:false,
|
||||
width:500,
|
||||
modal:true,
|
||||
height:height,
|
||||
resizable:true,
|
||||
});
|
||||
|
||||
$('button',dialog).button();
|
||||
|
||||
$('#vm_template_update_select',dialog).change(function(){
|
||||
var id = $(this).val();
|
||||
$('.permissions_table input',dialog).removeAttr('checked');
|
||||
$('.permissions_table',dialog).removeAttr('update');
|
||||
if (id && id.length){
|
||||
var dialog = $('#vm_template_update_dialog');
|
||||
Sunstone.runAction("VM.fetch_permissions",id);
|
||||
};
|
||||
});
|
||||
|
||||
$('.permissions_table input',dialog).change(function(){
|
||||
$(this).parents('table').attr('update','update');
|
||||
});
|
||||
|
||||
$('form',dialog).submit(function(){
|
||||
var dialog = $(this);
|
||||
var id = $('#vm_template_update_select',dialog).val();
|
||||
if (!id || !id.length) {
|
||||
$(this).parents('#vm_template_update_dialog').dialog('close');
|
||||
return false;
|
||||
};
|
||||
|
||||
var permissions = $('.permissions_table',dialog);
|
||||
if (permissions.attr('update')){
|
||||
var perms = {
|
||||
octet : buildOctet(permissions)
|
||||
};
|
||||
Sunstone.runAction("VM.chmod",id,perms);
|
||||
};
|
||||
|
||||
$(this).parents('#vm_template_update_dialog').dialog('close');
|
||||
return false;
|
||||
});
|
||||
};
|
||||
|
||||
function popUpVMTemplateUpdateDialog(){
|
||||
var select = makeSelectOptions(dataTable_vMachines,
|
||||
1,//id_col
|
||||
4,//name_col
|
||||
[],
|
||||
[]
|
||||
);
|
||||
var sel_elems = getSelectedNodes(dataTable_vMachines);
|
||||
|
||||
|
||||
var dialog = $('#vm_template_update_dialog');
|
||||
$('#vm_template_update_select',dialog).html(select);
|
||||
$('#vm_template_update_textarea',dialog).val("");
|
||||
$('.permissions_table input',dialog).removeAttr('checked');
|
||||
$('.permissions_table',dialog).removeAttr('update');
|
||||
|
||||
if (sel_elems.length >= 1){ //several items in the list are selected
|
||||
//grep them
|
||||
var new_select= sel_elems.length > 1? '<option value="">Please select</option>' : "";
|
||||
$('option','<select>'+select+'</select>').each(function(){
|
||||
var val = $(this).val();
|
||||
if ($.inArray(val,sel_elems) >= 0){
|
||||
new_select+='<option value="'+val+'">'+$(this).text()+'</option>';
|
||||
};
|
||||
});
|
||||
$('#vm_template_update_select',dialog).html(new_select);
|
||||
if (sel_elems.length == 1) {
|
||||
$('#vm_template_update_select option',dialog).attr('selected','selected');
|
||||
$('#vm_template_update_select',dialog).trigger("change");
|
||||
};
|
||||
};
|
||||
|
||||
dialog.dialog('open');
|
||||
return false;
|
||||
};
|
||||
|
||||
//Prepares autorefresh
|
||||
function setVMAutorefresh(){
|
||||
@ -1083,10 +1265,10 @@ $(document).ready(function(){
|
||||
{ "sWidth": "150px", "aTargets": [5,9] },
|
||||
{ "sWidth": "100px", "aTargets": [2,3] }
|
||||
],
|
||||
"oLanguage": (datatable_lang != "") ?
|
||||
{
|
||||
sUrl: "locale/"+lang+"/"+datatable_lang
|
||||
} : ""
|
||||
"oLanguage": (datatable_lang != "") ?
|
||||
{
|
||||
sUrl: "locale/"+lang+"/"+datatable_lang
|
||||
} : ""
|
||||
});
|
||||
|
||||
dataTable_vMachines.fnClearTable();
|
||||
@ -1096,6 +1278,7 @@ $(document).ready(function(){
|
||||
Sunstone.runAction("VM.list");
|
||||
|
||||
setupCreateVMDialog();
|
||||
setupVMTemplateUpdateDialog();
|
||||
setupSaveasDialog();
|
||||
setVMAutorefresh();
|
||||
setupVNC();
|
||||
|
@ -872,7 +872,7 @@ function popUpCreateVnetDialog() {
|
||||
|
||||
function setupVNetTemplateUpdateDialog(){
|
||||
//Append to DOM
|
||||
dialogs_context.append('<div id="vnet_template_update_dialog" title="'+tr("Update network template")+'"></div>');
|
||||
dialogs_context.append('<div id="vnet_template_update_dialog" title="'+tr("Update network properties")+'"></div>');
|
||||
var dialog = $('#vnet_template_update_dialog',dialogs_context);
|
||||
|
||||
//Put HTML in place
|
||||
@ -893,9 +893,10 @@ function setupVNetTemplateUpdateDialog(){
|
||||
|
||||
$('#vnet_template_update_select',dialog).change(function(){
|
||||
var id = $(this).val();
|
||||
$('.permissions_table input',dialog).removeAttr('checked')
|
||||
$('.permissions_table',dialog).removeAttr('update');
|
||||
if (id && id.length){
|
||||
var dialog = $('#vnet_template_update_dialog');
|
||||
$('.permissions_table input',dialog).removeAttr('checked')
|
||||
$('#vnet_template_update_textarea',dialog).val(tr("Loading")+"...");
|
||||
|
||||
Sunstone.runAction("Network.fetch_permissions",id);
|
||||
@ -914,11 +915,11 @@ function setupVNetTemplateUpdateDialog(){
|
||||
var new_template = $('#vnet_template_update_textarea',dialog).val();
|
||||
var id = $('#vnet_template_update_select',dialog).val();
|
||||
if (!id || !id.length) {
|
||||
dialog.dialog('close');
|
||||
$(this).parents('#vnet_template_update_dialog').dialog('close');
|
||||
return false;
|
||||
};
|
||||
|
||||
var permissions = $('.permissions_table');
|
||||
var permissions = $('.permissions_table',dialog);
|
||||
if (permissions.attr('update')){
|
||||
var perms = {
|
||||
octet : buildOctet(permissions)
|
||||
@ -945,7 +946,8 @@ function popUpVNetTemplateUpdateDialog(){
|
||||
var dialog = $('#vnet_template_update_dialog');
|
||||
$('#vnet_template_update_select',dialog).html(select);
|
||||
$('#vnet_template_update_textarea',dialog).val("");
|
||||
$('.permissions_table input',dialog).removeAttr('checked')
|
||||
$('.permissions_table input',dialog).removeAttr('checked');
|
||||
$('.permissions_table',dialog).removeAttr('update');
|
||||
|
||||
if (sel_elems.length >= 1){ //several items in the list are selected
|
||||
//grep them
|
||||
@ -960,8 +962,7 @@ function popUpVNetTemplateUpdateDialog(){
|
||||
if (sel_elems.length == 1) {
|
||||
$('#vnet_template_update_select option',dialog).attr('selected','selected');
|
||||
$('#vnet_template_update_select',dialog).trigger("change");
|
||||
}
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
dialog.dialog('open');
|
||||
|
Loading…
x
Reference in New Issue
Block a user