]> git.proxmox.com Git - pve-manager.git/blobdiff - www/manager6/ceph/Pool.js
ui: eslint: fix various spacing related issues
[pve-manager.git] / www / manager6 / ceph / Pool.js
index 100e6777d77c621dfe1a7badd17a17ae1978bdfa..5dabd4e67a9a75c971f3fff573fd88fcd9c20371 100644 (file)
@@ -1,5 +1,5 @@
 Ext.define('PVE.CephCreatePool', {
-    extend: 'PVE.window.Edit',
+    extend: 'Proxmox.window.Edit',
     alias: 'widget.pveCephCreatePool',
 
     showProgress: true,
@@ -13,7 +13,7 @@ Ext.define('PVE.CephCreatePool', {
            xtype: 'textfield',
            fieldLabel: gettext('Name'),
            name: 'name',
-           allowBlank: false
+           allowBlank: false,
        },
        {
            xtype: 'proxmoxintegerfield',
@@ -22,7 +22,7 @@ Ext.define('PVE.CephCreatePool', {
            value: 3,
            minValue: 1,
            maxValue: 7,
-           allowBlank: false
+           allowBlank: false,
        },
        {
            xtype: 'proxmoxintegerfield',
@@ -31,31 +31,49 @@ Ext.define('PVE.CephCreatePool', {
            value: 2,
            minValue: 1,
            maxValue: 7,
-           allowBlank: false
+           allowBlank: false,
        },
        {
            xtype: 'pveCephRuleSelector',
            fieldLabel: 'Crush Rule', // do not localize
            name: 'crush_rule',
-           allowBlank: false
+           allowBlank: false,
+       },
+       {
+           xtype: 'proxmoxKVComboBox',
+           fieldLabel: 'PG Autoscale Mode', // do not localize
+           name: 'pg_autoscale_mode',
+           comboItems: [
+               ['warn', 'warn'],
+               ['on', 'on'],
+               ['off', 'off'],
+           ],
+           value: 'warn',
+           allowBlank: false,
+           autoSelect: false,
        },
        {
            xtype: 'proxmoxintegerfield',
            fieldLabel: 'pg_num',
            name: 'pg_num',
-           value: 64,
+           value: 128,
            minValue: 8,
            maxValue: 32768,
-           allowBlank: false
+           allowBlank: true,
+           emptyText: gettext('Autoscale'),
        },
        {
-           xtype: 'pvecheckbox',
-           fieldLabel: gettext('Add Storages'),
-           name: 'add_storages'
-       }
+           xtype: 'proxmoxcheckbox',
+           fieldLabel: gettext('Add as Storage'),
+           value: true,
+           name: 'add_storages',
+           autoEl: {
+               tag: 'div',
+                'data-qtip': gettext('Add the new pool to the cluster storage configuration.'),
+           },
+       },
     ],
-    initComponent : function() {
-        /*jslint confusion: true */
+    initComponent: function() {
         var me = this;
 
        if (!me.nodename) {
@@ -65,12 +83,12 @@ Ext.define('PVE.CephCreatePool', {
         Ext.apply(me, {
            url: "/nodes/" + me.nodename + "/ceph/pools",
            defaults: {
-               nodename: me.nodename
-           }
+               nodename: me.nodename,
+           },
         });
 
         me.callParent();
-    }
+    },
 });
 
 Ext.define('PVE.node.CephPoolList', {
@@ -78,69 +96,87 @@ Ext.define('PVE.node.CephPoolList', {
     alias: 'widget.pveNodeCephPoolList',
 
     onlineHelp: 'chapter_pveceph',
+
     stateful: true,
     stateId: 'grid-ceph-pools',
     bufferedRenderer: false,
-    features: [ { ftype: 'summary'} ],
+
+    features: [{ ftype: 'summary' }],
+
     columns: [
        {
            header: gettext('Name'),
-           width: 100,
+           width: 120,
            sortable: true,
-           dataIndex: 'pool_name'
+           dataIndex: 'pool_name',
        },
        {
            header: gettext('Size') + '/min',
-           width: 80,
-           sortable: false,
+           width: 100,
+           align: 'right',
            renderer: function(v, meta, rec) {
                return v + '/' + rec.data.min_size;
            },
-           dataIndex: 'size'
+           dataIndex: 'size',
        },
        {
-           header: 'pg_num',
-           width: 100,
-           sortable: false,
-           dataIndex: 'pg_num'
-       },
-       {
-           header: 'rule',
-           width: 50,
-           sortable: false,
-           dataIndex: 'crush_rule'
+           text: 'Placement Groups',
+           columns: [
+               {
+                   text: '# of PGs', // pg_num',
+                   width: 150,
+                   align: 'right',
+                   dataIndex: 'pg_num',
+               },
+               {
+                   text: gettext('Autoscale'),
+                   width: 140,
+                   align: 'right',
+                   dataIndex: 'pg_autoscale_mode',
+               },
+           ],
        },
        {
-           header: 'rule_name',
-           width: 50,
-           sortable: false,
-           dataIndex: 'crush_rule_name'
+           text: 'CRUSH Rule',
+           columns: [
+               {
+                   text: 'ID',
+                   align: 'right',
+                   width: 50,
+                   dataIndex: 'crush_rule',
+               },
+               {
+                   text: gettext('Name'),
+                   width: 150,
+                   dataIndex: 'crush_rule_name',
+               },
+           ],
        },
        {
-           header: gettext('Used'),
+           text: gettext('Used'),
            columns: [
                {
-                   header: '%',
-                   width: 80,
+                   text: '%',
+                   width: 100,
                    sortable: true,
                    align: 'right',
-                   renderer: Ext.util.Format.numberRenderer('0.00'),
+                   renderer: function(val) {
+                       return Ext.util.Format.percent(val, '0.00');
+                   },
                    dataIndex: 'percent_used',
-                   summaryType: 'sum',
-                   summaryRenderer: Ext.util.Format.numberRenderer('0.00')
                },
                {
-                   header: gettext('Total'),
+                   text: gettext('Total'),
                    width: 100,
                    sortable: true,
                    renderer: PVE.Utils.render_size,
                    align: 'right',
                    dataIndex: 'bytes_used',
                    summaryType: 'sum',
-                   summaryRenderer: PVE.Utils.render_size
-               }
-           ]
-       }
+                   summaryRenderer: PVE.Utils.render_size,
+               },
+           ],
+       },
     ],
     initComponent: function() {
         var me = this;
@@ -157,29 +193,39 @@ Ext.define('PVE.node.CephPoolList', {
            storeid: 'ceph-pool-list' + nodename,
            model: 'ceph-pool-list',
            proxy: {
-                type: 'pve',
-                url: "/api2/json/nodes/" + nodename + "/ceph/pools"
-           }
+                type: 'proxmox',
+                url: "/api2/json/nodes/" + nodename + "/ceph/pools",
+           },
        });
 
-       var store = Ext.create('PVE.data.DiffStore', { rstore: rstore });
+       var store = Ext.create('Proxmox.data.DiffStore', { rstore: rstore });
 
-       PVE.Utils.monStoreErrors(me, rstore);
+       var regex = new RegExp("not (installed|initialized)", "i");
+       PVE.Utils.handleStoreErrorOrMask(me, rstore, regex, function(me, error) {
+           me.store.rstore.stopUpdate();
+           PVE.Utils.showCephInstallOrMask(me, error.statusText, nodename,
+               function(win) {
+                   me.mon(win, 'cephInstallWindowClosed', function() {
+                       me.store.rstore.startUpdate();
+                   });
+               },
+           );
+       });
 
        var create_btn = new Ext.Button({
            text: gettext('Create'),
            handler: function() {
                var win = Ext.create('PVE.CephCreatePool', {
-                    nodename: nodename
+                    nodename: nodename,
                });
                win.show();
                win.on('destroy', function() {
                    rstore.load();
                });
-           }
+           },
        });
 
-       var destroy_btn = Ext.create('PVE.button.Button', {
+       var destroy_btn = Ext.create('Proxmox.button.Button', {
            text: gettext('Destroy'),
            selModel: sm,
            disabled: true,
@@ -196,43 +242,42 @@ Ext.define('PVE.node.CephPoolList', {
                    showProgress: true,
                    url: base_url,
                    params: {
-                       remove_storages: 1
+                       remove_storages: 1,
                    },
-                   item: { type: 'CephPool', id: rec.data.pool_name }
+                   item: { type: 'CephPool', id: rec.data.pool_name },
                }).show();
                win.on('destroy', function() {
                    rstore.load();
                });
-           }
+           },
        });
 
        Ext.apply(me, {
            store: store,
            selModel: sm,
-           tbar: [ create_btn, destroy_btn ],
+           tbar: [create_btn, destroy_btn],
            listeners: {
-               activate: rstore.startUpdate,
-               destroy: rstore.stopUpdate
-           }
+               activate: () => rstore.startUpdate(),
+               destroy: () => rstore.stopUpdate(),
+           },
        });
 
        me.callParent();
-    }
+    },
 }, function() {
-
     Ext.define('ceph-pool-list', {
        extend: 'Ext.data.Model',
-       fields: [ 'pool_name',
-                 { name: 'pool', type: 'integer'},
-                 { name: 'size', type: 'integer'},
-                 { name: 'min_size', type: 'integer'},
-                 { name: 'pg_num', type: 'integer'},
-                 { name: 'bytes_used', type: 'integer'},
-                 { name: 'percent_used', type: 'number'},
-                 { name: 'crush_rule', type: 'integer'},
-                 { name: 'crush_rule_name', type: 'string'}
+       fields: ['pool_name',
+                 { name: 'pool', type: 'integer' },
+                 { name: 'size', type: 'integer' },
+                 { name: 'min_size', type: 'integer' },
+                 { name: 'pg_num', type: 'integer' },
+                 { name: 'bytes_used', type: 'integer' },
+                 { name: 'percent_used', type: 'number' },
+                 { name: 'crush_rule', type: 'integer' },
+                 { name: 'crush_rule_name', type: 'string' },
                ],
-       idProperty: 'pool_name'
+       idProperty: 'pool_name',
     });
 });
 
@@ -257,24 +302,24 @@ Ext.define('PVE.form.CephRuleSelector', {
            fields: ['name'],
            sorters: 'name',
            proxy: {
-               type: 'pve',
-               url: '/api2/json/nodes/' + me.nodename + '/ceph/rules'
-           }
+               type: 'proxmox',
+               url: '/api2/json/nodes/' + me.nodename + '/ceph/rules',
+           },
        });
 
        Ext.apply(me, {
-           store: store
+           store: store,
        });
 
        me.callParent();
 
        store.load({
-           callback: function(rec, op, success){
+           callback: function(rec, op, success) {
                if (success && rec.length > 0) {
                    me.select(rec[0]);
                }
-           }
+           },
        });
-    }
+    },
 
 });