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

svn-commits at proxmox.com svn-commits at proxmox.com
Fri Mar 18 13:56:36 CET 2011


Author: dietmar
Date: 2011-03-18 13:56:36 +0100 (Fri, 18 Mar 2011)
New Revision: 5727

Modified:
   pve-manager/pve2/lib/PVE/API2/Cluster.pm
   pve-manager/pve2/www/manager/StatusPanel.js
Log:
mplement cluster task view - first try


Modified: pve-manager/pve2/lib/PVE/API2/Cluster.pm
===================================================================
--- pve-manager/pve2/lib/PVE/API2/Cluster.pm	2011-03-18 10:20:36 UTC (rev 5726)
+++ pve-manager/pve2/lib/PVE/API2/Cluster.pm	2011-03-18 12:56:36 UTC (rev 5727)
@@ -241,7 +241,7 @@
 	my $rpcenv = PVE::RPCEnvironment::get();
 	my $user = $rpcenv->get_user();
 
-	my $tlist = PVE::RPCEnvironment::active_workers();
+	my $tlist = PVE::Cluster::get_tasklist();
 
 	my $res = [];
 

Modified: pve-manager/pve2/www/manager/StatusPanel.js
===================================================================
--- pve-manager/pve2/www/manager/StatusPanel.js	2011-03-18 10:20:36 UTC (rev 5726)
+++ pve-manager/pve2/www/manager/StatusPanel.js	2011-03-18 12:56:36 UTC (rev 5727)
@@ -55,6 +55,88 @@
     }
 });
 
+
+PVE.ClusterTasks = Ext.extend(Ext.grid.GridPanel, {
+
+    initComponent : function() {
+	var self = this;
+
+	var fields = [ 
+	    { name: 'starttime', type : 'date', dateFormat: 'timestamp' }, 
+	    { name: 'endtime', type : 'date', dateFormat: 'timestamp' }, 
+	    { name: 'pid', type: 'int' },
+	    'node', 'upid', 'user', 'status', 'type'];
+
+	// fixme: use/define a storage which append new values, but
+	// defer removing old values until a maximum numer of entries 
+	// is reached
+	var taskstore = new PVE.data.UpdateStore({
+	    itype: 'tasks',
+	    autoDestroy: true,
+	    url: '/api2/json/cluster/tasks',
+	    idProperty: 'upid',
+	    fields: fields
+	});
+
+	Ext.apply(self, {
+	    store: taskstore,
+	    border: false,
+	    startUpdate: function() { taskstore.startUpdate(); },
+	    stopUpdate: function() { taskstore.stopUpdate(); },
+	    columnSort: false,
+	    autoExpandColumn: 'status',
+	    viewConfig: {
+		getRowClass: function(record, index) {
+		    var status = record.get('status');
+
+		    if (status && status != 'OK') 
+			return "x-form-invalid";
+		}
+	    },
+	    columns: [
+		{ header: "Start Time", dataIndex: 'starttime',
+		  width: 100,
+		  renderer: function(value) { return value.format("M d H:i:s"); }
+		},
+		{ header: "End Time", dataIndex: 'endtime',
+		  width: 100,
+		  renderer: function(value, metaData, record) {
+		      if (record.data.pid) {
+			  metaData.css =  "x-grid-row-loading";
+			  return "";
+		      }
+		      return value.format("M d H:i:s"); 
+		  }
+		},
+		{ header: "Node", dataIndex: 'node',
+		  width: 100
+		},
+		{ header: "User", dataIndex: 'user',
+		  width: 150
+		},
+		{ id: 'desc', header: "Description", dataIndex: 'upid', 
+		  width: 400
+
+		},
+		{ id: 'status', header: "Status", dataIndex: 'status', 
+		  width: 200,
+		  renderer: function(value, metaData, record) { 
+		      if (record.data.pid) {
+			  metaData.css =  "x-grid-row-loading";
+			  return "";
+		      }
+		      if (value == 'OK')
+			  return 'OK';
+		      // metaData.attr = 'style="color:red;"'; 
+		      return "ERROR: " + value;
+		  }
+		}
+	    ]});
+
+	PVE.ClusterTasks.superclass.initComponent.call(self);
+    }
+});
+
 PVE.StatusPanel = Ext.extend(Ext.Panel, {
 
     initComponent : function() {
@@ -69,6 +151,7 @@
 	var cllogview = new PVE.LogViewer({ 
 	    url: '/api2/json/cluster/log',
 	});
+	var tasklist = new PVE.ClusterTasks();
 
 	self.items = {
 	    xtype: 'tabpanel',
@@ -104,7 +187,16 @@
 		    }
  		},
 		{
-                    title: 'Task list'
+                    title: 'Task list',
+		    items: tasklist,
+		    listeners: {
+			show: function() {
+			    tasklist.startUpdate();
+			},
+			hide: function() {
+			    tasklist.stopUpdate();
+			}
+		    }
 		}
 	    ]
  	};	



More information about the pve-devel mailing list