]> git.proxmox.com Git - pve-manager.git/blobdiff - www/manager6/data/ResourceStore.js
gui: add lock to resource store and tree
[pve-manager.git] / www / manager6 / data / ResourceStore.js
index c757a4627f8982f3170b31c3252db94d039e11e1..233d8ce1d439566dec2381e4e47f2c351202a061 100644 (file)
@@ -1,13 +1,43 @@
 Ext.define('PVE.data.ResourceStore', {
-    extend: 'PVE.data.UpdateStore',
+    extend: 'Proxmox.data.UpdateStore',
     singleton: true,
 
     findVMID: function(vmid) {
        var me = this, i;
-       
+
        return (me.findExact('vmid', parseInt(vmid, 10)) >= 0);
     },
+
+    // returns the cached data from all nodes
+    getNodes: function() {
+       var me = this;
+
+       var nodes = [];
+       me.each(function(record) {
+           if (record.get('type') == "node") {
+               nodes.push( record.getData() );
+           }
+       });
+
+       return nodes;
+    },
+
+    storageIsShared: function(storage_path) {
+       var me = this;
+
+       var index = me.findExact('id', storage_path);
+
+       return me.getAt(index).data.shared;
+    },
+
+    guestNode: function(vmid) {
+       var me = this;
+
+       var index = me.findExact('vmid', parseInt(vmid, 10));
+
+       return me.getAt(index).data.node;
+    },
+
     constructor: function(config) {
        // fixme: how to avoid those warnings
        /*jslint confusion: true */
@@ -23,7 +53,7 @@ Ext.define('PVE.data.ResourceStore', {
                renderer: PVE.Utils.render_resource_type,
                sortable: true,
                hideable: false,
-               width: 80
+               width: 100
            },
            id: {
                header: 'ID',
@@ -35,15 +65,11 @@ Ext.define('PVE.data.ResourceStore', {
            running: {
                header: gettext('Online'),
                type: 'boolean',
-               renderer: PVE.Utils.format_boolean,
+               renderer: Proxmox.Utils.format_boolean,
                hidden: true,
                convert: function(value, record) {
                    var info = record.data;
-                   if (info.type === 'qemu' || info.type === 'lxc' || info.type === 'node') {
-                       return (Ext.isNumeric(info.uptime) && (info.uptime > 0));
-                   } else {
-                       return false;
-                   }
+                   return (Ext.isNumeric(info.uptime) && (info.uptime > 0));
                }
            },
            text: {
@@ -59,20 +85,18 @@ Ext.define('PVE.data.ResourceStore', {
                        return value;
                    }
 
-                   if (info.type === 'node') {
-                       text = info.node;
-                   } else if (info.type === 'pool') {
-                       text = info.pool;
-                   } else if (info.type === 'storage') {
-                       text = info.storage + ' (' + info.node + ')';
-                   } else if (info.type === 'qemu' || info.type === 'lxc') {
+                   if (Ext.isNumeric(info.vmid) && info.vmid > 0) {
                        text = String(info.vmid);
                        if (info.name) {
                            text += " (" + info.name + ')';
                        }
-                   } else {
-                       text = info.id;
+                   } else { // node, pool, storage
+                       text = info[info.type] || info.id;
+                       if (info.node && info.type !== 'node') {
+                           text += " (" + info.node + ")";
+                       }
                    }
+
                    return text;
                }
            },
@@ -94,7 +118,17 @@ Ext.define('PVE.data.ResourceStore', {
                type: 'integer',
                renderer: PVE.Utils.render_disk_usage,
                sortable: true,
-               width: 100
+               width: 100,
+               hidden: true
+           },
+           diskuse: {
+               header: gettext('Disk usage') + " %",
+               type: 'number',
+               sortable: true,
+               renderer: PVE.Utils.render_disk_usage_percent,
+               width: 100,
+               calculate: PVE.Utils.calculate_disk_usage,
+               sortType: 'asFloat'
            },
            maxdisk: {
                header: gettext('Disk size'),
@@ -109,6 +143,16 @@ Ext.define('PVE.data.ResourceStore', {
                type: 'integer',
                renderer: PVE.Utils.render_mem_usage,
                sortable: true,
+               hidden: true,
+               width: 100
+           },
+           memuse: {
+               header: gettext('Memory usage') + " %",
+               type: 'number',
+               renderer: PVE.Utils.render_mem_usage_percent,
+               calculate: PVE.Utils.calculate_mem_usage,
+               sortType: 'asFloat',
+               sortable: true,
                width: 100
            },
            maxmem: {
@@ -138,7 +182,7 @@ Ext.define('PVE.data.ResourceStore', {
                type: 'integer',
                hidden: true,
                sortable: true,
-               renderer: PVE.Utils.format_size,
+               renderer: Proxmox.Utils.format_size,
                width: 100
            },
            diskwrite: {
@@ -146,7 +190,7 @@ Ext.define('PVE.data.ResourceStore', {
                type: 'integer',
                hidden: true,
                sortable: true,
-               renderer: PVE.Utils.format_size,
+               renderer: Proxmox.Utils.format_size,
                width: 100
            },
            netin: {
@@ -154,7 +198,7 @@ Ext.define('PVE.data.ResourceStore', {
                type: 'integer',
                hidden: true,
                sortable: true,
-               renderer: PVE.Utils.format_size,
+               renderer: Proxmox.Utils.format_size,
                width: 100
            },
            netout: {
@@ -162,7 +206,7 @@ Ext.define('PVE.data.ResourceStore', {
                type: 'integer',
                hidden: true,
                sortable: true,
-               renderer: PVE.Utils.format_size,
+               renderer: Proxmox.Utils.format_size,
                width: 100
            },
            template: {
@@ -175,10 +219,10 @@ Ext.define('PVE.data.ResourceStore', {
            uptime: {
                header: gettext('Uptime'),
                type: 'integer',
-               renderer: PVE.Utils.render_uptime,
+               renderer: Proxmox.Utils.render_uptime,
                sortable: true,
                width: 110
-           }, 
+           },
            node: {
                header: gettext('Node'),
                type: 'string',
@@ -199,26 +243,55 @@ Ext.define('PVE.data.ResourceStore', {
                hidden: true,
                sortable: true,
                width: 110
+           },
+           hastate: {
+               header: gettext('HA State'),
+               type: 'string',
+               defaultValue: 'unmanaged',
+               hidden: true,
+               sortable: true
+           },
+           status: {
+               header: gettext('Status'),
+               type: 'string',
+               hidden: true,
+               sortable: true,
+               width: 110
+           },
+           lock: {
+               header: gettext('Lock'),
+               type: 'string',
+               hidden: true,
+               sortable: true,
+               width: 110
            }
        };
 
        var fields = [];
        var fieldNames = [];
        Ext.Object.each(field_defaults, function(key, value) {
-           if (!Ext.isDefined(value.convert)) {
-               fields.push({name: key, type: value.type});
-               fieldNames.push(key);
-           } else if (key === 'text' || key === 'running') { 
-               fields.push({name: key, type: value.type, convert: value.convert});
-               fieldNames.push(key);
-           }           
+           var field = {name: key, type: value.type};
+           if (Ext.isDefined(value.convert)) {
+               field.convert = value.convert;
+           }
+
+           if (Ext.isDefined(value.calculate)) {
+               field.calculate = value.calculate;
+           }
+
+           if (Ext.isDefined(value.defaultValue)) {
+               field.defaultValue = value.defaultValue;
+           }
+
+           fields.push(field);
+           fieldNames.push(key);
        });
 
        Ext.define('PVEResources', {
            extend: "Ext.data.Model",
            fields: fields,
            proxy: {
-               type: 'pve',
+               type: 'proxmox',
                url: '/api2/json/cluster/resources'
            }
        });
@@ -232,7 +305,7 @@ Ext.define('PVE.data.ResourceStore', {
        Ext.apply(config, {
            storeid: 'PVEResources',
            model: 'PVEResources',
-           defaultColums: function() {
+           defaultColumns: function() {
                var res = [];
                Ext.Object.each(field_defaults, function(field, info) {
                    var fi = Ext.apply({ dataIndex: field }, info);