]> 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 a648ebdc1cd68ba2da89ea32b2ce323db9a6eb42..233d8ce1d439566dec2381e4e47f2c351202a061 100644 (file)
@@ -1,5 +1,5 @@
 Ext.define('PVE.data.ResourceStore', {
-    extend: 'PVE.data.UpdateStore',
+    extend: 'Proxmox.data.UpdateStore',
     singleton: true,
 
     findVMID: function(vmid) {
@@ -22,6 +22,22 @@ Ext.define('PVE.data.ResourceStore', {
        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 */
@@ -49,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: {
@@ -73,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;
                }
            },
@@ -172,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: {
@@ -180,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: {
@@ -188,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: {
@@ -196,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: {
@@ -209,7 +219,7 @@ 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
            },
@@ -237,32 +247,51 @@ Ext.define('PVE.data.ResourceStore', {
            hastate: {
                header: gettext('HA State'),
                type: 'string',
-               defaultValue: '',
+               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) && !Ext.isDefined(value.calculate)) {
-               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);
-           } else {
-               value.name = key;
-               fields.push(value);
+           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'
            }
        });