listeners: {
change: function(f, value) {
this.up('pveCephCreateFS').setFSName(value);
- }
+ },
},
submitValue: false, // already encoded in apicall URL
- emptyText: 'cephfs'
+ emptyText: 'cephfs',
},
{
xtype: 'proxmoxintegerfield',
emptyText: 128,
minValue: 8,
maxValue: 32768,
- allowBlank: false
+ allowBlank: false,
},
{
xtype: 'proxmoxcheckbox',
tag: 'div',
'data-qtip': gettext('Add the new CephFS to the cluster storage configuration.'),
},
- }
+ },
],
- initComponent : function() {
+ initComponent: function() {
var me = this;
if (!me.nodename) {
me.setFSName();
me.callParent();
- }
+ },
});
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: [
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: [
{
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',
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',
});
});