'+
@@ -635,10 +677,13 @@ var provision_content = provision_user_info +
provision_create_vm +
provision_info_vm +
provision_list_vms +
- provision_list_templates ;
+ provision_list_templates;
-var provision_tab = {
- list_header: '

'+
+if (Config.isTabPanelEnabled("provision-tab", "users")) {
+ provision_content += provision_list_users;
+}
+
+var provision_header = '

'+
'
'+
''+
'- '+
@@ -649,8 +694,18 @@ var provision_tab = {
'
'+
'- '+
'
'+tr("Templates")+''+
- ' '+
- '
'+
+ ' ';
+
+
+if (Config.isTabPanelEnabled("provision-tab", "users")) {
+ provision_header += '
'+
+ ' '+
+ '- '+
+ '
'+tr('Users')+''+
+ ' '
+}
+
+provision_header += '
'+
' '+
'- '+
'
'+config['display_name']+''+
@@ -667,7 +722,10 @@ var provision_tab = {
''+
' '+
'
'+
- '',
+ ''
+
+var provision_tab = {
+ list_header: provision_header,
content: provision_content
};
@@ -962,6 +1020,13 @@ function show_provision_vm_list(timeout) {
update_provision_vms_datatable(provision_vms_datatable, timeout);
}
+function show_provision_user_list(timeout) {
+ $(".section_content").hide();
+ $("#provision_list_users").fadeIn();
+
+ update_provision_users_datatable(provision_users_datatable, timeout);
+}
+
function show_provision_template_list(timeout) {
$(".section_content").hide();
$("#provision_list_templates").fadeIn();
@@ -1062,6 +1127,45 @@ function update_provision_networks_datatable(datatable) {
});
}
+function update_provision_users_datatable(datatable, timeout) {
+ datatable.html('
'+
+ ''+
+ ''+
+ ''+
+ ''+
+ '
'+
+ '
'+
+ ''+
+ ''+
+ '
');
+
+ setTimeout( function(){
+ OpenNebula.User.list({
+ timeout: true,
+ success: function (request, item_list, quotas_list){
+ datatable.fnClearTable(true);
+ if (item_list.length == 0) {
+ datatable.html('
'+
+ ''+
+ ''+
+ ''+
+ ''+
+ '
'+
+ '
'+
+ ''+
+ tr("The list of users is empty")+
+ ''+
+ '
');
+ } else {
+ provision_quotas_list = quotas_list;
+ datatable.fnAddData(item_list);
+ }
+ },
+ error: onError
+ })
+ }, timeout );
+}
+
function update_provision_vms_datatable(datatable, timeout) {
datatable.html('
'+
'
'+
@@ -1099,7 +1203,6 @@ function update_provision_vms_datatable(datatable, timeout) {
})
}, timeout );
}
-
// @params
// data: and VM object
// Example: data.ID
@@ -2140,6 +2243,151 @@ $(document).ready(function(){
show_provision_vm_list(0);
});
+ //
+ // List Users
+ //
+
+ provision_users_datatable = $('#provision_users_table').dataTable({
+ "iDisplayLength": 6,
+ "sDom" : '<"H">t<"F"lp>',
+ "aLengthMenu": [[6, 12, 36, 72], [6, 12, 36, 72]],
+ "aaSorting" : [[0, "desc"]],
+ "aoColumnDefs": [
+ { "bVisible": false, "aTargets": ["all"]}
+ ],
+ "aoColumns": [
+ { "mDataProp": "USER.ID" },
+ { "mDataProp": "USER.NAME" }
+ ],
+ "fnPreDrawCallback": function (oSettings) {
+ // create a thumbs container if it doesn't exist. put it in the dataTables_scrollbody div
+ if (this.$('tr', {"filter": "applied"} ).length == 0) {
+ this.html(''+
+ ''+
+ ''+
+ ''+
+ ''+
+ '
'+
+ '
'+
+ ''+
+ tr("The list of users is empty")+
+ ''+
+ '
');
+ } else {
+ $("#provision_users_table").html('');
+ }
+
+ return true;
+ },
+ "fnRowCallback": function( nRow, aData, iDisplayIndex, iDisplayIndexFull ) {
+ var data = aData.USER;
+ //var state = get_provision_vm_state(data);
+ var vms = "";
+ var memory = "";
+ var cpu = "";
+
+ // Inject the VM user quota. This info is returned separately in the
+ // pool info call, but the userElementArray expects it inside the USER,
+ // as it is returned by the individual info call
+ var q = provision_quotas_list[data.ID];
+
+ var quotas_html = ''+
+ ''+
+ ''+
+ ''+
+ ''+
+ ''+tr("No quotas defined")+'';
+
+
+ if (q != undefined){
+ var quota = q.QUOTAS;
+
+ if (!$.isEmptyObject(quota.VM_QUOTA)){
+ quotas_html = "";
+ quotas_html += ''+tr("Running VMs")+'';
+ quotas_html += '';
+ quotas_html += quotaBar(
+ quota.VM_QUOTA.VM.VMS_USED,
+ quota.VM_QUOTA.VM.VMS,
+ default_user_quotas.VM_QUOTA.VM.VMS);
+ quotas_html += '';
+
+ quotas_html += ''+tr("Memory")+'';
+ quotas_html += '';
+ quotas_html += quotaBarMB(
+ quota.VM_QUOTA.VM.MEMORY_USED,
+ quota.VM_QUOTA.VM.MEMORY,
+ default_user_quotas.VM_QUOTA.VM.MEMORY);
+ quotas_html += '';
+
+ quotas_html += ''+tr("CPU")+'';
+ quotas_html += '';
+ quotas_html += quotaBarFloat(
+ quota.VM_QUOTA.VM.CPU_USED,
+ quota.VM_QUOTA.VM.CPU,
+ default_user_quotas.VM_QUOTA.VM.CPU);
+ quotas_html += '';
+ }
+ }
+
+
+ $("#provision_users_ul").append(''+
+ ''+
+ '- '+
+ ''+ data.NAME + ''+
+ '
'+
+ //'- '+
+ // ' '+
+ // 'x'+data.TEMPLATE.CPU+' - '+
+ // ((data.TEMPLATE.MEMORY > 1000) ?
+ // (Math.floor(data.TEMPLATE.MEMORY/1024)+'GB') :
+ // (data.TEMPLATE.MEMORY+'MB'))+
+ //'
'+
+ quotas_html +
+ //'- '+
+ // memory +
+ //'
'+
+ //'- '+
+ // cpu +
+ //'
'+
+ //'- '+
+ // ''+
+ // _format_date(data.STIME)+
+ // ''+
+ // ' '+
+ // state.str+
+ // ''+
+ //'
'+
+ //'- '+
+ // ''+
+ //'
'+
+ '
'+
+ '');
+
+ return nRow;
+ }
+ });
+
+ update_provision_users_datatable(provision_users_datatable);
+
+ $('#provision_list_users_search').keyup(function(){
+ provision_users_datatable.fnFilter( $(this).val() );
+ })
+
+ $('#provision_list_users_search').change(function(){
+ provision_users_datatable.fnFilter( $(this).val() );
+ })
+
+ $("#provision_users_list_button").on("click", function(){
+ OpenNebula.Helper.clear_cache("USER");
+ show_provision_user_list(0);
+ });
+
+ $("#provision_list_users").on("click", "#provision_users_list_refresh_button", function(){
+ OpenNebula.Helper.clear_cache("USER");
+ show_provision_user_list(0);
+ });
+
//
// Info VM
//