]> git.proxmox.com Git - pve-manager.git/blobdiff - www/manager6/ceph/FS.js
update shipped appliance info index
[pve-manager.git] / www / manager6 / ceph / FS.js
index 3b8e1cafa9c8c1faf6a34c2288b255fe8777965f..d93aacd1b02053cefb2ee6819919d7f55f7498d8 100644 (file)
@@ -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',
     });
 });