1
0
mirror of https://github.com/OpenNebula/one.git synced 2025-03-27 10:50:10 +03:00

Add quota information to the configuration panel

This commit is contained in:
Daniel Molina 2013-04-12 17:20:27 +02:00
parent e48873fd9e
commit 23eec04e0b
7 changed files with 399 additions and 628 deletions

View File

@ -824,69 +824,7 @@ var OpenNebula = {
dataType: "json",
success: function(response){
// Get the default group quotas
default_group_quotas = response.GROUP_POOL.DEFAULT_GROUP_QUOTAS;
// Initialize the VM_QUOTA to unlimited if it does not exist
if ($.isEmptyObject(default_group_quotas.VM_QUOTA)){
default_group_quotas.VM_QUOTA = {
"VM" : {
"VMS" : "0",
"MEMORY" : "0",
"CPU" : "0"
}
}
}
// Replace the DATASTORE array with a map
var ds_quotas = [];
if ($.isArray(default_group_quotas.DATASTORE_QUOTA.DATASTORE))
ds_quotas = default_group_quotas.DATASTORE_QUOTA.DATASTORE;
else if (default_group_quotas.DATASTORE_QUOTA.DATASTORE)
ds_quotas = [default_group_quotas.DATASTORE_QUOTA.DATASTORE];
delete default_group_quotas.DATASTORE_QUOTA;
default_group_quotas.DATASTORE_QUOTA = {};
for (var i=0; i < ds_quotas.length; i++){
default_group_quotas.DATASTORE_QUOTA[ds_quotas[i].ID] = ds_quotas[i]
}
// Replace the IMAGE array with a map
var img_quotas = [];
if ($.isArray(default_group_quotas.IMAGE_QUOTA.IMAGE))
img_quotas = default_group_quotas.IMAGE_QUOTA.IMAGE;
else if (default_group_quotas.IMAGE_QUOTA.IMAGE)
img_quotas = [default_group_quotas.IMAGE_QUOTA.IMAGE];
delete default_group_quotas.IMAGE_QUOTA;
default_group_quotas.IMAGE_QUOTA = {};
for (var i=0; i < img_quotas.length; i++){
default_group_quotas.IMAGE_QUOTA[img_quotas[i].ID] = img_quotas[i]
}
// Replace the NETWORK array with a map
var net_quotas = [];
if ($.isArray(default_group_quotas.NETWORK_QUOTA.NETWORK))
net_quotas = default_group_quotas.NETWORK_QUOTA.NETWORK;
else if (default_group_quotas.NETWORK_QUOTA.NETWORK)
net_quotas = [default_group_quotas.NETWORK_QUOTA.NETWORK];
delete default_group_quotas.NETWORK_QUOTA;
default_group_quotas.NETWORK_QUOTA = {};
for (var i=0; i < net_quotas.length; i++){
default_group_quotas.NETWORK_QUOTA[net_quotas[i].ID] = net_quotas[i]
}
default_group_quotas = Quotas.default_quotas(response.GROUP_POOL.DEFAULT_GROUP_QUOTAS);
var list = OpenNebula.Helper.pool(resource,response)
return callback ?
@ -936,70 +874,7 @@ var OpenNebula = {
data: {timeout: timeout},
dataType: "json",
success: function(response){
// Get the default user quotas
default_user_quotas = response.USER_POOL.DEFAULT_USER_QUOTAS;
// Initialize the VM_QUOTA to unlimited if it does not exist
if ($.isEmptyObject(default_user_quotas.VM_QUOTA)){
default_user_quotas.VM_QUOTA = {
"VM" : {
"VMS" : "0",
"MEMORY" : "0",
"CPU" : "0"
}
}
}
// Replace the DATASTORE array with a map
var ds_quotas = [];
if ($.isArray(default_user_quotas.DATASTORE_QUOTA.DATASTORE))
ds_quotas = default_user_quotas.DATASTORE_QUOTA.DATASTORE;
else if (default_user_quotas.DATASTORE_QUOTA.DATASTORE)
ds_quotas = [default_user_quotas.DATASTORE_QUOTA.DATASTORE];
delete default_user_quotas.DATASTORE_QUOTA;
default_user_quotas.DATASTORE_QUOTA = {};
for (var i=0; i < ds_quotas.length; i++){
default_user_quotas.DATASTORE_QUOTA[ds_quotas[i].ID] = ds_quotas[i]
}
// Replace the IMAGE array with a map
var img_quotas = [];
if ($.isArray(default_user_quotas.IMAGE_QUOTA.IMAGE))
img_quotas = default_user_quotas.IMAGE_QUOTA.IMAGE;
else if (default_user_quotas.IMAGE_QUOTA.IMAGE)
img_quotas = [default_user_quotas.IMAGE_QUOTA.IMAGE];
delete default_user_quotas.IMAGE_QUOTA;
default_user_quotas.IMAGE_QUOTA = {};
for (var i=0; i < img_quotas.length; i++){
default_user_quotas.IMAGE_QUOTA[img_quotas[i].ID] = img_quotas[i]
}
// Replace the NETWORK array with a map
var net_quotas = [];
if ($.isArray(default_user_quotas.NETWORK_QUOTA.NETWORK))
net_quotas = default_user_quotas.NETWORK_QUOTA.NETWORK;
else if (default_user_quotas.NETWORK_QUOTA.NETWORK)
net_quotas = [default_user_quotas.NETWORK_QUOTA.NETWORK];
delete default_user_quotas.NETWORK_QUOTA;
default_user_quotas.NETWORK_QUOTA = {};
for (var i=0; i < net_quotas.length; i++){
default_user_quotas.NETWORK_QUOTA[net_quotas[i].ID] = net_quotas[i]
}
default_user_quotas = Quotas.default_quotas(response.USER_POOL.DEFAULT_USER_QUOTAS);
var list = OpenNebula.Helper.pool(resource,response)
return callback ?

View File

@ -68,12 +68,10 @@ var config_tab_content =
<div class="reveal-body">\
<form id="config_form">\
<div class="row">\
<div class="six columns">\
<div class="row">\
<div class="eight columns">\
<div class="six columns">\
<label class="right inline" for="lang_sel" >' + tr("Language") + ':</label>\
</div>\
<div class="four columns">\
<div class="six columns">\
<select id="lang_sel">\
<option value="ca">'+tr("Catalan")+'</option>\
<option value="zh_TW">'+tr("Chinese (TW)")+'</option>\
@ -93,23 +91,31 @@ var config_tab_content =
</div>\
</div>\
<div class="row">\
<div class="eight columns">\
<div class="six columns">\
<label class="right inline" for="view_sel" >' + tr("Views") + ':</label>\
</div>\
<div class="four columns">\
<div class="six columns">\
<select id="view_sel">\
</select>\
</div>\
</div>\
<div class="row">\
<div class="eight columns">\
<div class="six columns">\
<label class="right inline" for="wss_checkbox" >' + tr("Secure websockets connection") + ':</label>\
</div>\
<div class="four columns">\
<div class="six columns">\
<input id="wss_checkbox" type="checkbox" value="yes" />\
</div>\
</div>\
</div>\
<div class="row">\
<div class="six columns">\
<div id="user_quotas">\
</div>\
</div>\
<div class="six columns">\
<div id="group_quotas">\
</div>\
</div>\
</div>\
<div class="reveal-footer">\
<hr>\
@ -130,7 +136,7 @@ function setupConfigDialog() {
var dialog = $config_dialog;
dialog.html(config_tab_content);
dialog.addClass("reveal-modal large max-height");
dialog.addClass("reveal-modal xlarge max-height");
setupTips(dialog);
@ -198,4 +204,52 @@ function tr(str){
$(document).ready(function(){
setupConfigDialog();
$("span.user-login a.configuration").click(function(){
OpenNebula.User.show({
data : {
id: uid
},
success: function(request,user_json){
var info = user_json.USER;
var default_user_quotas = Quotas.default_quotas(info.DEFAULT_USER_QUOTAS)
var quotas_tab_html = Quotas.vms(info, default_user_quotas);
quotas_tab_html += Quotas.cpu(info, default_user_quotas);
quotas_tab_html += Quotas.memory(info, default_user_quotas);
quotas_tab_html += Quotas.image(info, default_user_quotas);
quotas_tab_html += Quotas.network(info, default_user_quotas);
quotas_tab_html += Quotas.datastore(info, default_user_quotas);
$("#user_quotas").html('<div class="row graph_legend">\
<h3 class="subheader"><small>'+tr("USER QUOTAS")+ ' ('+ info.ID +':'+ info.NAME + ')</small></h3>\
</div>'+
quotas_tab_html);
}
});
OpenNebula.Group.show({
data : {
id: gid
},
success: function(request,group_json){
var info = group_json.GROUP;
var default_group_quotas = Quotas.default_quotas(info.DEFAULT_GROUP_QUOTAS)
var quotas_tab_html = Quotas.vms(info, default_group_quotas);
quotas_tab_html += Quotas.cpu(info, default_group_quotas);
quotas_tab_html += Quotas.memory(info, default_group_quotas);
quotas_tab_html += Quotas.image(info, default_group_quotas);
quotas_tab_html += Quotas.network(info, default_group_quotas);
quotas_tab_html += Quotas.datastore(info, default_group_quotas);
$("#group_quotas").html('<div class="row graph_legend">\
<h3 class="subheader"><small>'+tr("GROUP QUOTAS")+ ' ('+ info.ID +':'+ info.NAME + ')</small></h3>\
</div>'+
quotas_tab_html);
}
});
$config_dialog.reveal();
});
});

View File

@ -543,193 +543,15 @@ function updateGroupsView(request, group_list){
function updateGroupInfo(request,group){
var info = group.GROUP;
var quotas_tab_html = '<div class="">';
if (!$.isEmptyObject(info.VM_QUOTA)){
var vms_bar = quotaBar(
info.VM_QUOTA.VM.VMS_USED,
info.VM_QUOTA.VM.VMS,
default_user_quotas.VM_QUOTA.VM.VMS);
var memory_bar = quotaBarMB(
info.VM_QUOTA.VM.MEMORY_USED,
info.VM_QUOTA.VM.MEMORY,
default_user_quotas.VM_QUOTA.VM.MEMORY);
var cpu_bar = quotaBarFloat(
info.VM_QUOTA.VM.CPU_USED,
info.VM_QUOTA.VM.CPU,
default_user_quotas.VM_QUOTA.VM.CPU);
quotas_tab_html +=
'<div class="six columns">\
<table class="twelve extended_table">\
<thead>\
<tr>\
<th>'+tr("VMs")+'</th>\
<th>'+tr("Memory")+'</th>\
<th>'+tr("CPU")+'</th>\
</tr>\
</thead>\
<tbody>\
<tr>\
<td style="height:25px">'+vms_bar+'</td>\
<td>'+memory_bar+'</td>\
<td>'+cpu_bar+'</td>\
</tr>\
</tbody>\
</table>\
</div>'
}
if (!$.isEmptyObject(info.DATASTORE_QUOTA)){
quotas_tab_html +=
'<div class="six columns">\
<table class="twelve datatable extended_table">\
<thead>\
<tr>\
<th style="width:24%">'+tr("Datastore ID")+'</th>\
<th style="width:38%">'+tr("Images")+'</th>\
<th style="width:38%">'+tr("Size")+'</th>\
</tr>\
</thead>\
<tbody>';
var ds_quotas = [];
if ($.isArray(info.DATASTORE_QUOTA.DATASTORE))
ds_quotas = info.DATASTORE_QUOTA.DATASTORE;
else if (info.DATASTORE_QUOTA.DATASTORE.ID)
ds_quotas = [info.DATASTORE_QUOTA.DATASTORE];
for (var i=0; i < ds_quotas.length; i++){
var default_ds_quotas = default_user_quotas.DATASTORE_QUOTA[ds_quotas[i].ID]
if (default_ds_quotas == undefined){
default_ds_quotas = {
"IMAGES" : "0",
"SIZE" : "0"
}
}
var img_bar = quotaBar(
ds_quotas[i].IMAGES_USED,
ds_quotas[i].IMAGES,
default_ds_quotas.IMAGES);
var size_bar = quotaBarMB(
ds_quotas[i].SIZE_USED,
ds_quotas[i].SIZE,
default_ds_quotas.SIZE);
quotas_tab_html +=
'<tr>\
<td>'+ds_quotas[i].ID+'</td>\
<td>'+img_bar+'</td>\
<td>'+size_bar+'</td>\
</tr>';
}
quotas_tab_html +=
'</tbody>\
</table>\
</div>';
}
if (!$.isEmptyObject(info.IMAGE_QUOTA)){
quotas_tab_html +=
'<div class="six columns">\
<table class="twelve datatable extended_table">\
<thead>\
<tr>\
<th>'+tr("Image ID")+'</th>\
<th>'+tr("Running VMs")+'</th>\
</tr>\
</thead>\
<tbody>';
var img_quotas = [];
if ($.isArray(info.IMAGE_QUOTA.IMAGE))
img_quotas = info.IMAGE_QUOTA.IMAGE;
else if (info.IMAGE_QUOTA.IMAGE.ID)
img_quotas = [info.IMAGE_QUOTA.IMAGE];
for (var i=0; i < img_quotas.length; i++){
var default_img_quotas = default_user_quotas.IMAGE_QUOTA[img_quotas[i].ID]
if (default_img_quotas == undefined){
default_img_quotas = {
"RVMS" : "0"
}
}
var rvms_bar = quotaBar(
img_quotas[i].RVMS_USED,
img_quotas[i].RVMS,
default_img_quotas.RVMS);
quotas_tab_html +=
'<tr>\
<td>'+img_quotas[i].ID+'</td>\
<td>'+rvms_bar+'</td>\
</tr>';
}
quotas_tab_html +=
'</tbody>\
</table>\
</div>';
}
if (!$.isEmptyObject(info.NETWORK_QUOTA)){
quotas_tab_html +=
'<div class="six columns">\
<table class="twelve datatable extended_table">\
<thead>\
<tr>\
<th>'+tr("Network ID")+'</th>\
<th>'+tr("Leases")+'</th>\
</tr>\
</thead>\
<tbody>';
var net_quotas = [];
if ($.isArray(info.NETWORK_QUOTA.NETWORK))
net_quotas = info.NETWORK_QUOTA.NETWORK;
else if (info.NETWORK_QUOTA.NETWORK.ID)
net_quotas = [info.NETWORK_QUOTA.NETWORK];
for (var i=0; i < net_quotas.length; i++){
var default_net_quotas = default_user_quotas.NETWORK_QUOTA[net_quotas[i].ID]
if (default_net_quotas == undefined){
default_net_quotas = {
"LEASES" : "0"
}
}
var leases_bar = quotaBar(
net_quotas[i].LEASES_USED,
net_quotas[i].LEASES,
default_net_quotas.LEASES);
quotas_tab_html +=
'<tr>\
<td>'+net_quotas[i].ID+'</td>\
<td>'+leases_bar+'</td>\
</tr>';
}
quotas_tab_html +=
'</tbody>\
</table></div>\
</div>';
}
var default_group_quotas = Quotas.default_quotas(info.DEFAULT_GROUP_QUOTAS);
var quotas_tab_html = '<div class="four columns">' + Quotas.vms(info, default_group_quotas) + '</div>';
quotas_tab_html += '<div class="four columns">' + Quotas.cpu(info, default_group_quotas) + '</div>';
quotas_tab_html += '<div class="four columns">' + Quotas.memory(info, default_group_quotas) + '</div>';
quotas_tab_html += '<br><br>';
quotas_tab_html += '<div class="six columns">' + Quotas.image(info, default_group_quotas) + '</div>';
quotas_tab_html += '<div class="six columns">' + Quotas.network(info, default_group_quotas) + '</div>';
quotas_tab_html += '<br><br>';
quotas_tab_html += '<div class="twelve columns">' + Quotas.datastore(info, default_group_quotas) + '</div>';
var quotas_tab = {
title : tr("Quotas"),

View File

@ -726,7 +726,7 @@ function updateUsersView(request,users_list){
};
function updateUserInfo(request,user){
var user_info = user.USER;
var info = user.USER;
var info_tab = {
title : tr("User information"),
@ -735,331 +735,52 @@ function updateUserInfo(request,user){
<div class="six columns">\
<table id="info_user_table" class="twelve datatable extended_table">\
<thead>\
<tr><th colspan="2">' + tr("User") + ' - '+user_info.NAME+'</th><th></th></tr>\
<tr><th colspan="2">' + tr("User") + ' - '+info.NAME+'</th><th></th></tr>\
</thead>\
<tbody>\
<tr>\
<td class="key_td">' + tr("ID") + '</td>\
<td class="value_td">'+user_info.ID+'</td>\
<td class="value_td">'+info.ID+'</td>\
<td></td>\
</tr>\
<tr>' +
insert_group_dropdown("User",user_info.ID,user_info.GNAME,user_info.GID) +
insert_group_dropdown("User",info.ID,info.GNAME,info.GID) +
'</tr>\
<tr>\
<td class="key_td">' + tr("Authentication driver") + '</td>\
<td class="value_td">'+user_info.AUTH_DRIVER+'</td>\
<td class="value_td">'+info.AUTH_DRIVER+'</td>\
<td></td>\
</tr>\
</tbody>\
</table>\
</div>\
<div class="six columns">' +
insert_extended_template_table(user_info.TEMPLATE,
insert_extended_template_table(info.TEMPLATE,
"User",
user_info.ID,
info.ID,
tr("Configuration Attributes")) +
'</div>\
</div>'
};
var quotas_tab_html = '<div class="">';
quotas_tab_html += '<div class="six columns">'
if (!$.isEmptyObject(user_info.VM_QUOTA)){
var vms_bar = quotaBar(
user_info.VM_QUOTA.VM.VMS_USED,
user_info.VM_QUOTA.VM.VMS,
default_user_quotas.VM_QUOTA.VM.VMS);
var memory_bar = quotaBarMB(
user_info.VM_QUOTA.VM.MEMORY_USED,
user_info.VM_QUOTA.VM.MEMORY,
default_user_quotas.VM_QUOTA.VM.MEMORY);
var cpu_bar = quotaBarFloat(
user_info.VM_QUOTA.VM.CPU_USED,
user_info.VM_QUOTA.VM.CPU,
default_user_quotas.VM_QUOTA.VM.CPU);
quotas_tab_html +=
'<table class="twelve datatable extended_table">\
<thead>\
<tr>\
<th>'+tr("VMs")+'</th>\
</tr>\
</thead>\
<tbody>\
<tr>\
<td style="height:25px">'+vms_bar+'</td>\
</tr>\
</tbody>\
</table>\
<table class="twelve datatable extended_table">\
<thead>\
<tr>\
<th>'+tr("CPU")+'</th>\
</tr>\
</thead>\
<tbody>\
<tr>\
<td style="height:25px">'+cpu_bar+'</td>\
</tr>\
</tbody>\
</table>\
<table class="twelve datatable extended_table">\
<thead>\
<tr>\
<th>'+tr("Memory")+'</th>\
</tr>\
</thead>\
<tbody>\
<tr>\
<td style="height:25px">'+memory_bar+'</td>\
</tr>\
</tbody>\
</table>'
}
if (!$.isEmptyObject(user_info.DATASTORE_QUOTA)){
quotas_tab_html +=
'<table class="twelve datatable extended_table">\
<thead>\
<tr>\
<th style="width:26%">'+tr("Datastore ID")+'</th>\
<th style="width:37%">'+tr("Images")+'</th>\
<th style="width:37%">'+tr("Size")+'</th>\
</tr>\
</thead>\
<tbody>';
var ds_quotas = [];
if ($.isArray(user_info.DATASTORE_QUOTA.DATASTORE))
ds_quotas = user_info.DATASTORE_QUOTA.DATASTORE;
else if (user_info.DATASTORE_QUOTA.DATASTORE.ID)
ds_quotas = [user_info.DATASTORE_QUOTA.DATASTORE];
for (var i=0; i < ds_quotas.length; i++){
var default_ds_quotas = default_user_quotas.DATASTORE_QUOTA[ds_quotas[i].ID]
if (default_ds_quotas == undefined){
default_ds_quotas = {
"IMAGES" : "0",
"SIZE" : "0"
}
}
var img_bar = quotaBar(
ds_quotas[i].IMAGES_USED,
ds_quotas[i].IMAGES,
default_ds_quotas.IMAGES);
var size_bar = quotaBarMB(
ds_quotas[i].SIZE_USED,
ds_quotas[i].SIZE,
default_ds_quotas.SIZE);
quotas_tab_html +=
'<tr>\
<td>'+ds_quotas[i].ID+'</td>\
<td>'+img_bar+'</td>\
<td>'+size_bar+'</td>\
</tr>';
}
quotas_tab_html +=
'</tbody>\
</table>';
}
quotas_tab_html += '</div>'
quotas_tab_html += '<div class="six columns">'
if (!$.isEmptyObject(user_info.IMAGE_QUOTA)){
quotas_tab_html +=
'<table class="twelve datatable extended_table">\
<thead>\
<tr>\
<th style="width:26%">'+tr("Image ID")+'</th>\
<th style="width:74%">'+tr("Running VMs")+'</th>\
</tr>\
</thead>\
<tbody>';
var img_quotas = [];
if ($.isArray(user_info.IMAGE_QUOTA.IMAGE))
img_quotas = user_info.IMAGE_QUOTA.IMAGE;
else if (user_info.IMAGE_QUOTA.IMAGE.ID)
img_quotas = [user_info.IMAGE_QUOTA.IMAGE];
for (var i=0; i < img_quotas.length; i++){
var default_img_quotas = default_user_quotas.IMAGE_QUOTA[img_quotas[i].ID]
if (default_img_quotas == undefined){
default_img_quotas = {
"RVMS" : "0"
}
}
var rvms_bar = quotaBar(
img_quotas[i].RVMS_USED,
img_quotas[i].RVMS,
default_img_quotas.RVMS);
quotas_tab_html +=
'<tr>\
<td>'+img_quotas[i].ID+'</td>\
<td>'+rvms_bar+'</td>\
</tr>';
}
quotas_tab_html +=
'</tbody>\
</table>';
}
if (!$.isEmptyObject(user_info.NETWORK_QUOTA)){
quotas_tab_html +=
'<table class="twelve datatable extended_table">\
<thead>\
<tr>\
<th style="width:26%">'+tr("Network ID")+'</th>\
<th style="width:74%">'+tr("Leases")+'</th>\
</tr>\
</thead>\
<tbody>';
var net_quotas = [];
if ($.isArray(user_info.NETWORK_QUOTA.NETWORK))
net_quotas = user_info.NETWORK_QUOTA.NETWORK;
else if (user_info.NETWORK_QUOTA.NETWORK.ID)
net_quotas = [user_info.NETWORK_QUOTA.NETWORK];
for (var i=0; i < net_quotas.length; i++){
var default_net_quotas = default_user_quotas.NETWORK_QUOTA[net_quotas[i].ID]
if (default_net_quotas == undefined){
default_net_quotas = {
"LEASES" : "0"
}
}
var leases_bar = quotaBar(
net_quotas[i].LEASES_USED,
net_quotas[i].LEASES,
default_net_quotas.LEASES);
quotas_tab_html +=
'<tr>\
<td>'+net_quotas[i].ID+'</td>\
<td>'+leases_bar+'</td>\
</tr>';
}
quotas_tab_html +=
'</tbody>\
</table></div>';
}
quotas_tab_html += '</div>'
var default_user_quotas = Quotas.default_quotas(info.DEFAULT_USER_QUOTAS)
var quotas_tab_html = '<div class="four columns">' + Quotas.vms(info, default_user_quotas) + '</div>';
quotas_tab_html += '<div class="four columns">' + Quotas.cpu(info, default_user_quotas) + '</div>';
quotas_tab_html += '<div class="four columns">' + Quotas.memory(info, default_user_quotas) + '</div>';
quotas_tab_html += '<br><br>';
quotas_tab_html += '<div class="six columns">' + Quotas.image(info, default_user_quotas) + '</div>';
quotas_tab_html += '<div class="six columns">' + Quotas.network(info, default_user_quotas) + '</div>';
quotas_tab_html += '<br><br>';
quotas_tab_html += '<div class="twelve columns">' + Quotas.datastore(info, default_user_quotas) + '</div>';
var quotas_tab = {
title : tr("Quotas"),
content : quotas_tab_html
};
// var acct_tab = {
// title : tr("Historical usages"),
// content : '<div><table class="info_table" style="margin-bottom:0;width:100%">\
// <tr>\
// <td class="key_td"><label for="from">'+tr('From / to')+'</label></td>\
// <td class="value_td">\
// <input style="width: 7em" type="text" id="user_acct_from" name="from"/>\
// <input style="width: 7em" type="text" id="user_acct_to" name="to"/>\
// <button id="user_acct_date_ok">'+tr("Update")+'</button>\
// </td>\
// </tr>\
//<!--\
// <tr>\
// <td class="key_td"><label for="from">'+tr('Meters')+'</label></td>\
// <td class="value_td">\
// <select style="width:173px" id="user_acct_meter1" name="meter1">\
// </select>\
// <select style="width:173px" id="user_acct_meter2" name="meter2">\
// </select>\
// </td>\
// </tr>\
//-->\
//</table></div>' + generateMonitoringDivs(user_acct_graphs, "user_acct_")
// };
Sunstone.updateInfoPanelTab("user_info_panel","user_info_tab",info_tab);
Sunstone.updateInfoPanelTab("user_info_panel","user_quotas_tab",quotas_tab);
//Sunstone.updateInfoPanelTab("user_info_panel","user_acct_tab",acct_tab);
Sunstone.popUpInfoPanel("user_info_panel", 'users-tab');
//Enable datepicker
//var info_dialog = $('div#user_acct_tab');
//$("#user_acct_from", info_dialog).datepicker({
// defaultDate: "-1d",
// changeMonth: true,
// numberOfMonths: 1,
// dateFormat: "dd/mm/yy",
// defaultDate: '-1',
// onSelect: function( selectedDate ) {
// $( "#user_acct_to", info_dialog).datepicker("option",
// "minDate",
// selectedDate );
// }
//});
//$("#user_acct_from", info_dialog).datepicker('setDate', '-1');
//
//$("#user_acct_to", info_dialog).datepicker({
// defaultDate: "0",
// changeMonth: true,
// numberOfMonths: 1,
// dateFormat: "dd/mm/yy",
// maxDate: '+1',
// onSelect: function( selectedDate ) {
// $( "#user_acct_from", info_dialog).datepicker( "option",
// "maxDate",
// selectedDate );
// }
//});
//$("#user_acct_to", info_dialog).datepicker('setDate', 'Now');
//
////Listen to set date button
//$('button#user_acct_date_ok', info_dialog).click(function(){
// var from = $("#user_acct_from", info_dialog).val();
// var to = $("#user_acct_to", info_dialog).val();
//
// var start = $.datepicker.parseDate('dd/mm/yy', from)
// if (start){
// start = start.getTime();
// start = Math.floor(start / 1000);
// }
//
// var end = $.datepicker.parseDate('dd/mm/yy', to);
// if (end){
// end = end.getTime();
// end = Math.floor(end / 1000);
// }
//
// loadAccounting('User', user_info.ID, user_acct_graphs,
// { start : start, end: end });
// return false;
//});
//
////preload acct
//loadAccounting('User', user_info.ID, user_acct_graphs);
};
// Prepare the user creation dialog

View File

@ -1629,7 +1629,7 @@ function printActionsTable(vm_info)
new_action.ID = parseInt(max_id) + 1;
new_action.ACTION = $("#select_new_action").val();
var epoch_str = new Date(time_value);
console.log(epoch_str)
new_action.TIME = parseInt(epoch_str.getTime())/1000;
vm_info.USER_TEMPLATE.SCHED_ACTION.push(new_action);

View File

@ -196,7 +196,7 @@ function tableCheckboxesListener(dataTable){
}
else
{
$(this).parents('tr').children().removeClass('markrowchecked');
$(this).parents('tr').children().removeClass('markrowchecked');
$(this).parents('tr').children().removeClass('markrowselected');
}
@ -210,7 +210,7 @@ function updateView(item_list,dataTable){
var selected_row_id = $($('td.markrowselected',dataTable.fnGetNodes())[1]).html();
var checked_row_ids = new Array();
$.each($(dataTable.fnGetNodes()), function(){
$.each($(dataTable.fnGetNodes()), function(){
if($('td.markrowchecked',this).length!=0)
{
checked_row_ids.push($($('td',$(this))[1]).html());
@ -1148,6 +1148,310 @@ function setPermissionsTable(resource,context){
$('.other_a',context).attr('checked','checked');
};
var Quotas = {
"vms" : function(info, default_quotas){
if (!$.isEmptyObject(info.VM_QUOTA)){
var vms_bar = quotaBar(
info.VM_QUOTA.VM.VMS_USED,
info.VM_QUOTA.VM.VMS,
default_quotas.VM_QUOTA.VM.VMS);
var quotas_tab_html =
'<table class="twelve datatable extended_table">\
<thead>\
<tr>\
<th>'+tr("VMs")+'</th>\
</tr>\
</thead>\
<tbody>\
<tr>\
<td style="height:25px">'+vms_bar+'</td>\
</tr>\
</tbody>\
</table>'
return quotas_tab_html;
} else {
return '';
}
},
"cpu" : function(info, default_quotas){
if (!$.isEmptyObject(info.VM_QUOTA)){
var cpu_bar = quotaBarFloat(
info.VM_QUOTA.VM.CPU_USED,
info.VM_QUOTA.VM.CPU,
default_quotas.VM_QUOTA.VM.CPU);
var quotas_tab_html =
'<table class="twelve datatable extended_table">\
<thead>\
<tr>\
<th>'+tr("CPU")+'</th>\
</tr>\
</thead>\
<tbody>\
<tr>\
<td style="height:25px">'+cpu_bar+'</td>\
</tr>\
</tbody>\
</table>'
return quotas_tab_html;
} else {
return '';
}
},
"memory" : function(info, default_quotas){
if (!$.isEmptyObject(info.VM_QUOTA)){
var memory_bar = quotaBarMB(
info.VM_QUOTA.VM.MEMORY_USED,
info.VM_QUOTA.VM.MEMORY,
default_quotas.VM_QUOTA.VM.MEMORY);
var quotas_tab_html =
'<table class="twelve datatable extended_table">\
<thead>\
<tr>\
<th>'+tr("Memory")+'</th>\
</tr>\
</thead>\
<tbody>\
<tr>\
<td style="height:25px">'+memory_bar+'</td>\
</tr>\
</tbody>\
</table>'
return quotas_tab_html;
} else {
return '';
}
},
"datastore" : function(info, default_quotas) {
if (!$.isEmptyObject(info.DATASTORE_QUOTA)){
var quotas_tab_html =
'<table class="twelve datatable extended_table">\
<thead>\
<tr>\
<th style="width:26%">'+tr("Datastore ID")+'</th>\
<th style="width:37%">'+tr("Images")+'</th>\
<th style="width:37%">'+tr("Size")+'</th>\
</tr>\
</thead>\
<tbody>';
var ds_quotas = [];
if ($.isArray(info.DATASTORE_QUOTA.DATASTORE))
ds_quotas = info.DATASTORE_QUOTA.DATASTORE;
else if (info.DATASTORE_QUOTA.DATASTORE.ID)
ds_quotas = [info.DATASTORE_QUOTA.DATASTORE];
for (var i=0; i < ds_quotas.length; i++){
var default_ds_quotas = default_quotas.DATASTORE_QUOTA[ds_quotas[i].ID]
if (default_ds_quotas == undefined){
default_ds_quotas = {
"IMAGES" : "0",
"SIZE" : "0"
}
}
var img_bar = quotaBar(
ds_quotas[i].IMAGES_USED,
ds_quotas[i].IMAGES,
default_ds_quotas.IMAGES);
var size_bar = quotaBarMB(
ds_quotas[i].SIZE_USED,
ds_quotas[i].SIZE,
default_ds_quotas.SIZE);
quotas_tab_html +=
'<tr>\
<td>'+ds_quotas[i].ID+'</td>\
<td>'+img_bar+'</td>\
<td>'+size_bar+'</td>\
</tr>';
}
quotas_tab_html +=
'</tbody>\
</table>';
return quotas_tab_html;
} else {
return '';
}
},
"image" : function(info, default_quotas) {
if (!$.isEmptyObject(info.IMAGE_QUOTA)){
var quotas_tab_html =
'<table class="twelve datatable extended_table">\
<thead>\
<tr>\
<th style="width:26%">'+tr("Image ID")+'</th>\
<th style="width:74%">'+tr("Running VMs")+'</th>\
</tr>\
</thead>\
<tbody>';
var img_quotas = [];
if ($.isArray(info.IMAGE_QUOTA.IMAGE))
img_quotas = info.IMAGE_QUOTA.IMAGE;
else if (info.IMAGE_QUOTA.IMAGE.ID)
img_quotas = [info.IMAGE_QUOTA.IMAGE];
for (var i=0; i < img_quotas.length; i++){
var default_img_quotas = default_quotas.IMAGE_QUOTA[img_quotas[i].ID]
if (default_img_quotas == undefined){
default_img_quotas = {
"RVMS" : "0"
}
}
var rvms_bar = quotaBar(
img_quotas[i].RVMS_USED,
img_quotas[i].RVMS,
default_img_quotas.RVMS);
quotas_tab_html +=
'<tr>\
<td>'+img_quotas[i].ID+'</td>\
<td>'+rvms_bar+'</td>\
</tr>';
}
quotas_tab_html +=
'</tbody>\
</table>';
return quotas_tab_html;
} else {
return '';
}
},
"network" : function(info, default_quotas){
if (!$.isEmptyObject(info.NETWORK_QUOTA)){
var quotas_tab_html =
'<table class="twelve datatable extended_table">\
<thead>\
<tr>\
<th style="width:26%">'+tr("Network ID")+'</th>\
<th style="width:74%">'+tr("Leases")+'</th>\
</tr>\
</thead>\
<tbody>';
var net_quotas = [];
if ($.isArray(info.NETWORK_QUOTA.NETWORK))
net_quotas = info.NETWORK_QUOTA.NETWORK;
else if (info.NETWORK_QUOTA.NETWORK.ID)
net_quotas = [info.NETWORK_QUOTA.NETWORK];
for (var i=0; i < net_quotas.length; i++){
var default_net_quotas = default_quotas.NETWORK_QUOTA[net_quotas[i].ID]
if (default_net_quotas == undefined){
default_net_quotas = {
"LEASES" : "0"
}
}
var leases_bar = quotaBar(
net_quotas[i].LEASES_USED,
net_quotas[i].LEASES,
default_net_quotas.LEASES);
quotas_tab_html +=
'<tr>\
<td>'+net_quotas[i].ID+'</td>\
<td>'+leases_bar+'</td>\
</tr>';
}
quotas_tab_html +=
'</tbody>\
</table></div>';
return quotas_tab_html;
} else {
return '';
}
},
"default_quotas" : function(default_quotas){
// Initialize the VM_QUOTA to unlimited if it does not exist
if ($.isEmptyObject(default_quotas.VM_QUOTA)){
default_quotas.VM_QUOTA = {
"VM" : {
"VMS" : "0",
"MEMORY" : "0",
"CPU" : "0"
}
}
}
// Replace the DATASTORE array with a map
var ds_quotas = [];
if ($.isArray(default_quotas.DATASTORE_QUOTA.DATASTORE))
ds_quotas = default_quotas.DATASTORE_QUOTA.DATASTORE;
else if (default_quotas.DATASTORE_QUOTA.DATASTORE)
ds_quotas = [default_quotas.DATASTORE_QUOTA.DATASTORE];
delete default_quotas.DATASTORE_QUOTA;
default_quotas.DATASTORE_QUOTA = {};
for (var i=0; i < ds_quotas.length; i++){
default_quotas.DATASTORE_QUOTA[ds_quotas[i].ID] = ds_quotas[i]
}
// Replace the IMAGE array with a map
var img_quotas = [];
if ($.isArray(default_quotas.IMAGE_QUOTA.IMAGE))
img_quotas = default_quotas.IMAGE_QUOTA.IMAGE;
else if (default_quotas.IMAGE_QUOTA.IMAGE)
img_quotas = [default_quotas.IMAGE_QUOTA.IMAGE];
delete default_quotas.IMAGE_QUOTA;
default_quotas.IMAGE_QUOTA = {};
for (var i=0; i < img_quotas.length; i++){
default_quotas.IMAGE_QUOTA[img_quotas[i].ID] = img_quotas[i]
}
// Replace the NETWORK array with a map
var net_quotas = [];
if ($.isArray(default_quotas.NETWORK_QUOTA.NETWORK))
net_quotas = default_quotas.NETWORK_QUOTA.NETWORK;
else if (default_quotas.NETWORK_QUOTA.NETWORK)
net_quotas = [default_quotas.NETWORK_QUOTA.NETWORK];
delete default_quotas.NETWORK_QUOTA;
default_quotas.NETWORK_QUOTA = {};
for (var i=0; i < net_quotas.length; i++){
default_quotas.NETWORK_QUOTA[net_quotas[i].ID] = net_quotas[i]
}
return default_quotas;
}
}
// Sets up a dialog to edit and update user and group quotas
// Called from user/group plugins
function setupQuotasDialog(dialog){

View File

@ -124,7 +124,7 @@ var Sunstone = {
var tabs = SunstoneCfg["info_panels"][panel_name];
var tab=null;
var active=false;
console.log(selected_tab)
for (panel_tab_name in tabs){
if (Config.isTabPanelEnabled(selected_tab, panel_tab_name) == false) {
continue;
@ -461,11 +461,6 @@ function setLogin(){
}
return false;
});
$("span.user-login a.configuration").click(function(){
$config_dialog.reveal();
});
}
//returns whether we are Sunstone, or oZones