+/*global Proxmox*/
Ext.define('pmg-cluster', {
extend: 'Ext.data.Model',
fields: [
'type', 'name', 'ip', 'hostrsapubkey', 'rootrsapubkey',
'fingerprint', { type: 'integer', name: 'cid' },
{ type: 'boolean', name: 'insync' },
- 'memory', 'loadavg', 'uptime', 'rootfs', 'conn_error'
+ 'memory', 'loadavg', 'uptime', 'rootfs', 'conn_error', 'level',
+ { type: 'number', name: 'memory_per',
+ calculate: function(data) {
+ var mem = data.memory;
+ return Ext.isObject(mem) ? mem.used/mem.total : 0;
+ }
+ },
+ { type: 'number', name: 'rootfs_per',
+ calculate: function(data) {
+ var du = data.rootfs;
+ return Ext.isObject(du) ? du.used/du.total : 0;
+ }
+ }
],
proxy: {
type: 'proxmox',
- url: "/api2/json/config/cluster/nodes"
+ url: "/api2/json/config/cluster/status"
},
idProperty: 'cid'
});
{
xtype: 'component',
border: false,
- padding: 10,
+ padding: '10 10 10 10',
html: gettext("Please use the 'Join' button on the node you want to add, using the following IP address and fingerprint.")
},
{
]
});
+/*jslint confusion: true*/
+/* bind is a function and object */
Ext.define('PMG.ClusterAdministration', {
extend: 'Ext.tab.Panel',
xtype: 'pmgClusterAdministration',
init: function(view) {
view.store.on('load', this.onLoad, this);
+ Proxmox.Utils.monStoreErrors(view, view.getStore());
},
- onLoad: function(store, records) {
+ onLoad: function(store, records, success) {
var vm = this.getViewModel();
+ if (!success || !records) {
+ return;
+ }
vm.set('nodecount', records.length);
var master = null;
},
{
header: gettext('State'),
- width: 80,
+ width: 100,
renderer: function(value, metaData, record) {
var d = record.data;
var state = 'active';
- if (!d.insync) state = 'syncing';
+ if (!d.insync) {
+ state = 'syncing';
+ }
if (d.conn_error) {
metaData.tdCls = 'x-form-invalid-field';
var html = '<p>' + Ext.htmlEncode(d.conn_error) + '</p>';
},
dataIndex: 'insync'
},
+ {
+ header: gettext('Subscription'),
+ width: 120,
+ renderer: Proxmox.Utils.format_subscription_level,
+ dataIndex: 'level'
+ },
{
header: gettext('Uptime'),
- width: 100,
+ width: 150,
renderer: Proxmox.Utils.render_uptime,
dataIndex: 'uptime'
},
if (Ext.isArray(value)) {
return value[0];
}
- return value;
+ return value.toString();
},
dataIndex: 'loadavg'
},
{
- header: gettext('RAM usage'),
- renderer: function(value) {
- if (Ext.isObject(value)) {
- return (value.used*100/value.total).toFixed(2) + '%';
- }
- return value;
+ xtype: 'widgetcolumn',
+ widget: {
+ xtype: 'progressbarwidget',
+ textTpl: '{value:percent}'
},
- dataIndex: 'memory'
+ header: gettext('RAM usage'),
+ dataIndex: 'memory_per'
},
{
- header: gettext('HD space') + '(root)',
- renderer: function(value) {
- if (Ext.isObject(value)) {
- return (value.used*100/value.total).toFixed(2) + '%';
- }
- return value;
+ xtype: 'widgetcolumn',
+ widget: {
+ xtype: 'progressbarwidget',
+ textTpl: '{value:percent}'
},
- dataIndex: 'rootfs'
+ header: gettext('HD space'),
+ dataIndex: 'rootfs_per'
}
]
}