X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=www%2Fmanager6%2Fceph%2FFS.js;h=e9815355facc0a2020ab574fc1ed3128d6046754;hb=refs%2Fheads%2Fmaster;hp=3b8e1cafa9c8c1faf6a34c2288b255fe8777965f;hpb=3bbce3b8cd50643c1379be5c764bcf3024416a0b;p=pve-manager.git diff --git a/www/manager6/ceph/FS.js b/www/manager6/ceph/FS.js index 3b8e1caf..d93aacd1 100644 --- a/www/manager6/ceph/FS.js +++ b/www/manager6/ceph/FS.js @@ -28,10 +28,10 @@ Ext.define('PVE.CephCreateFS', { listeners: { change: function(f, value) { this.up('pveCephCreateFS').setFSName(value); - } + }, }, submitValue: false, // already encoded in apicall URL - emptyText: 'cephfs' + emptyText: 'cephfs', }, { xtype: 'proxmoxintegerfield', @@ -41,7 +41,7 @@ Ext.define('PVE.CephCreateFS', { emptyText: 128, minValue: 8, maxValue: 32768, - allowBlank: false + allowBlank: false, }, { xtype: 'proxmoxcheckbox', @@ -52,10 +52,10 @@ Ext.define('PVE.CephCreateFS', { tag: 'div', 'data-qtip': gettext('Add the new CephFS to the cluster storage configuration.'), }, - } + }, ], - initComponent : function() { + initComponent: function() { var me = this; if (!me.nodename) { @@ -64,7 +64,7 @@ Ext.define('PVE.CephCreateFS', { me.setFSName(); me.callParent(); - } + }, }); Ext.define('PVE.NodeCephFSPanel', { @@ -79,21 +79,20 @@ Ext.define('PVE.NodeCephFSPanel', { defaults: { border: false, cbind: { - nodename: '{nodename}' - } + nodename: '{nodename}', + }, }, viewModel: { parent: null, data: { - cephfsConfigured: false, - mdsCount: 0 + mdsCount: 0, }, formulas: { canCreateFS: function(get) { - return (!get('cephfsConfigured') && get('mdsCount') > 0); - } - } + return get('mdsCount') > 0; + }, + }, }, items: [ @@ -112,54 +111,33 @@ Ext.define('PVE.NodeCephFSPanel', { storeid: 'pve-ceph-fs', proxy: { type: 'proxmox', - url: '/api2/json/nodes/' + view.nodename + '/ceph/fs' + url: `/api2/json/nodes/${view.nodename}/ceph/fs`, }, - model: 'pve-ceph-fs' + model: 'pve-ceph-fs', }); view.setStore(Ext.create('Proxmox.data.DiffStore', { rstore: view.rstore, sorters: { property: 'name', - order: 'DESC' - } + direction: 'ASC', + }, })); - var regex = new RegExp("not (installed|initialized)", "i"); - PVE.Utils.handleStoreErrorOrMask(view, view.rstore, regex, function(me, error){ - me.rstore.stopUpdate(); - PVE.Utils.showCephInstallOrMask(me.ownerCt, error.statusText, view.nodename, - function(win){ - me.mon(win, 'cephInstallWindowClosed', function(){ - me.rstore.startUpdate(); - }); - } - ); - }); - view.rstore.on('load', this.onLoad, this); - view.on('destroy', view.rstore.stopUpdate); + // manages the "install ceph?" overlay + PVE.Utils.monitor_ceph_installed(view, view.rstore, view.nodename, true); + view.on('destroy', () => view.rstore.stopUpdate()); }, onCreate: function() { - var view = this.getView(); + let view = this.getView(); view.rstore.stopUpdate(); - var win = Ext.create('PVE.CephCreateFS', { + Ext.create('PVE.CephCreateFS', { autoShow: true, nodename: view.nodename, listeners: { - destroy: function() { - view.rstore.startUpdate(); - } - } + destroy: () => view.rstore.startUpdate(), + }, }); }, - - onLoad: function(store, records, success) { - var vm = this.getViewModel(); - if (!(success && records && records.length > 0)) { - vm.set('cephfsConfigured', false); - return; - } - vm.set('cephfsConfigured', true); - } }, tbar: [ { @@ -167,34 +145,33 @@ Ext.define('PVE.NodeCephFSPanel', { reference: 'createButton', handler: 'onCreate', bind: { - // only one CephFS per Ceph cluster makes sense for now - disabled: '{!canCreateFS}' - } - } + disabled: '{!canCreateFS}', + }, + }, ], columns: [ { header: gettext('Name'), flex: 1, - dataIndex: 'name' + dataIndex: 'name', }, { - header: 'Data Pool', + header: gettext('Data Pool'), flex: 1, - dataIndex: 'data_pool' + dataIndex: 'data_pool', }, { - header: 'Metadata Pool', + header: gettext('Metadata Pool'), flex: 1, - dataIndex: 'metadata_pool' - } + dataIndex: 'metadata_pool', + }, ], cbind: { - nodename: '{nodename}' - } + nodename: '{nodename}', + }, }, { - xtype: 'pveNodeCephServiceList', + xtype: 'pveNodeCephMDSList', title: gettext('Metadata Servers'), stateId: 'grid-ceph-mds', type: 'mds', @@ -204,21 +181,27 @@ Ext.define('PVE.NodeCephFSPanel', { vm.set('mdsCount', 0); return; } - vm.set('mdsCount', records.length); + let count = 0; + for (const mds of records) { + if (mds.data.state === 'up:standby') { + count++; + } + } + vm.set('mdsCount', count); }, cbind: { - nodename: '{nodename}' - } - } - ] + nodename: '{nodename}', + }, + }, + ], }, function() { Ext.define('pve-ceph-fs', { extend: 'Ext.data.Model', - fields: [ 'name', 'data_pool', 'metadata_pool' ], + fields: ['name', 'data_pool', 'metadata_pool'], proxy: { type: 'proxmox', - url: "/api2/json/nodes/localhost/ceph/fs" + url: "/api2/json/nodes/localhost/ceph/fs", }, - idProperty: 'name' + idProperty: 'name', }); });