[pve-devel] r5384 - in pve-manager/pve2: . lib/PVE/API2 www/manager

svn-commits at proxmox.com svn-commits at proxmox.com
Thu Jan 13 14:18:55 CET 2011


Author: dietmar
Date: 2011-01-13 14:18:54 +0100 (Thu, 13 Jan 2011)
New Revision: 5384

Added:
   pve-manager/pve2/www/manager/StatusPanel.js
Modified:
   pve-manager/pve2/ChangeLog
   pve-manager/pve2/lib/PVE/API2/Cluster.pm
   pve-manager/pve2/www/manager/Makefile.am
   pve-manager/pve2/www/manager/PVECache.js
   pve-manager/pve2/www/manager/PVEUtils.js
   pve-manager/pve2/www/manager/Workspace.js
Log:
	* www/manager/StatusPanel.js: a simple log viewer.



Modified: pve-manager/pve2/ChangeLog
===================================================================
--- pve-manager/pve2/ChangeLog	2011-01-13 09:35:08 UTC (rev 5383)
+++ pve-manager/pve2/ChangeLog	2011-01-13 13:18:54 UTC (rev 5384)
@@ -1,3 +1,7 @@
+2011-01-13  root  <root at maui.maurer-it.com>
+
+	* www/manager/StatusPanel.js: a simple log viewer.
+
 2011-01-12  root  <root at maui.maurer-it.com>
 
 	* lib/PVE/Makefile.am: do not install outdated files

Modified: pve-manager/pve2/lib/PVE/API2/Cluster.pm
===================================================================
--- pve-manager/pve2/lib/PVE/API2/Cluster.pm	2011-01-13 09:35:08 UTC (rev 5383)
+++ pve-manager/pve2/lib/PVE/API2/Cluster.pm	2011-01-13 13:18:54 UTC (rev 5384)
@@ -5,6 +5,7 @@
 
 use PVE::SafeSyslog;
 use PVE::Cluster;
+use JSON;
 
 use Data::Dumper; # fixme: remove
 
@@ -12,6 +13,7 @@
 use JSON;
 
 use PVE::RESTHandler;
+use PVE::RPCEnvironment;
 
 use base qw(PVE::RESTHandler);
 
@@ -68,4 +70,43 @@
 	return $result;
     }});
 
+__PACKAGE__->register_method({
+    name => 'log', 
+    path => 'log', 
+    method => 'GET',
+    description => "Read cluster log",
+    parameters => {
+    	additionalProperties => 0,
+	properties => {
+	    max => {
+		type => 'integer',
+		description => "Maximum number of entries.",
+		optional => 1,
+		minimum => 1,
+	    }
+	},
+    },
+    returns => {
+	type => 'array',
+	items => {
+	    type => "object",
+	    properties => {},
+	},
+    },
+    code => sub {
+	my ($param) = @_;
+
+	my $rpcenv = PVE::RPCEnvironment::get();
+
+	my $max = $param->{max} || 0;
+	my $user = $rpcenv->get_user();
+
+	my $res = decode_json(PVE::Cluster::get_cluster_log($user, $max));
+
+	# fixme: can we avoid that?
+	my $list = [ reverse @{$res->{data}} ];
+
+	return $list;
+    }});
+
 1;

Modified: pve-manager/pve2/www/manager/Makefile.am
===================================================================
--- pve-manager/pve2/www/manager/Makefile.am	2011-01-13 09:35:08 UTC (rev 5383)
+++ pve-manager/pve2/www/manager/Makefile.am	2011-01-13 13:18:54 UTC (rev 5384)
@@ -12,6 +12,7 @@
 	data/SearchStore.js				\
 	grid/ObjectView.js				\
 	PVECache.js 					\
+	StatusPanel.js 					\
 	Workspace.js 					\
 	window/ModalDialog.js				\
 	window/LoginWindow.js				\

Modified: pve-manager/pve2/www/manager/PVECache.js
===================================================================
--- pve-manager/pve2/www/manager/PVECache.js	2011-01-13 09:35:08 UTC (rev 5383)
+++ pve-manager/pve2/www/manager/PVECache.js	2011-01-13 13:18:54 UTC (rev 5384)
@@ -61,6 +61,25 @@
   
 	}(),
 
+	cllogstore:  function(){
+
+	    var fields = [ 
+		{ name:	'time', type : 'date', dateFormat: 'timestamp' }, 
+		{ name: 'pri', type: 'int' },
+		{ name: 'pid', type: 'int' },
+		'node', 'user', 'tag', 'msg' ];
+
+	    var store = new  PVE.data.UpdateStore({
+		itype: 'storage',
+		autoDestroy: false,
+		url: '/api2/json/cluster/log',
+		fields: fields
+	    });
+
+	    return store;
+  
+	}(),
+
 	dummy: "ignore me"
     };
 

Modified: pve-manager/pve2/www/manager/PVEUtils.js
===================================================================
--- pve-manager/pve2/www/manager/PVEUtils.js	2011-01-13 09:35:08 UTC (rev 5383)
+++ pve-manager/pve2/www/manager/PVEUtils.js	2011-01-13 13:18:54 UTC (rev 5384)
@@ -14,6 +14,18 @@
 
 PVE.Utils = function() {
 
+    var log_severity_hash = {
+	0: "panic",
+	1: "alert",
+	2: "critical",
+	3: "error",
+	4: "warning",
+	5: "notice",
+	6: "info",
+	7: "debug"
+    };
+
+
     var utils = {
 
 	authOK: function() {
@@ -142,6 +154,11 @@
 	    return cta.join(', ');
 	},
 
+	render_serverity: function (value) {
+
+	    return log_severity_hash[value] || value;
+	},
+			  
 	render_cpu: function(value, metaData, record, rowIndex, colIndex, store) {
 
 	    var cpu = value;

Added: pve-manager/pve2/www/manager/StatusPanel.js
===================================================================
--- pve-manager/pve2/www/manager/StatusPanel.js	                        (rev 0)
+++ pve-manager/pve2/www/manager/StatusPanel.js	2011-01-13 13:18:54 UTC (rev 5384)
@@ -0,0 +1,73 @@
+Ext.ns("PVE");
+
+PVE.StatusPanel = Ext.extend(Ext.Panel, {
+
+    initComponent : function() {
+	var self = this;
+
+	self.title = "Realtime logfile viewer";
+	self.layout = 'fit';
+
+	var clstore = PVE.Cache.cllogstore;
+	clstore.startUpdate();
+
+	var cllogview = new Ext.list.ListView({
+	    store: clstore,
+	    columnSort: false,
+	    columns: [
+		{ header: "Time", width: 0.10, dataIndex: 'time',
+		  tpl: '{time:date("M d H:i:s")}'
+		},
+		{ header: "Node", width: 0.05, dataIndex: 'node' },
+		{ header: "Tag", width: 0.05, dataIndex: 'tag' },
+		{ header: "PID", width: 0.05, dataIndex: 'pid' },
+		{ header: "User", width: 0.05, dataIndex: 'user' },
+		{ header: "Severity", width: 0.05, dataIndex: 'pri',
+		  tpl: '{[ PVE.Utils.render_serverity(values.pri) ]}'
+		},
+		{ header: "Message", dataIndex: 'msg' }
+	    ]});
+
+	var move_to_end = true;
+
+	clstore.on("load", function() {
+	    if (move_to_end) {
+		move_to_end = false;
+		var count = clstore.getCount();
+		if (count) {
+		    var item = cllogview.getNode(count - 1);
+		    if (item) 
+			Ext.fly(item).scrollIntoView(cllogview.innerBody.dom.parentNode);
+		}
+	    }
+	});
+
+	self.items = {
+	    xtype: 'tabpanel',
+ 	    border: false,
+	    tabPosition: 'bottom',
+            activeTab: 0,
+
+	    defaults: { layout: 'fit' },
+
+	    items: [
+		{
+                    title: 'Cluster Log',
+		    items: cllogview
+ 		},
+		{
+                    title: 'System Log'
+		},
+		{
+                    title: 'Task list'
+		}
+	    ]
+ 	};	
+
+	PVE.StatusPanel.superclass.initComponent.call(self);
+
+    }
+});
+
+Ext.reg('pveStatusPanel', PVE.StatusPanel);
+

Modified: pve-manager/pve2/www/manager/Workspace.js
===================================================================
--- pve-manager/pve2/www/manager/Workspace.js	2011-01-13 09:35:08 UTC (rev 5383)
+++ pve-manager/pve2/www/manager/Workspace.js	2011-01-13 13:18:54 UTC (rev 5384)
@@ -50,11 +50,12 @@
 		    collapsible: true
 		},
 		{
+		    xtype: 'pveStatusPanel',
 		    region:'south',
-		    margins:'0 0 5 0',
-		    split:true,
-		    height: 100,
-		    html: 'just a test status'
+		    margins:'0 0 0 0',
+	    	    height: 200,       
+		    collapsible: true,
+		    split:true
 		}
 	    ]
 	});



More information about the pve-devel mailing list