ui: ceph: service list: eslint fixes and code cleanup

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
This commit is contained in:
Thomas Lamprecht 2021-04-24 18:44:39 +02:00
parent 261bb63356
commit fb792310d1

View File

@ -5,10 +5,9 @@ Ext.define('PVE.CephCreateService', {
showProgress: true, showProgress: true,
setNode: function(nodename) { setNode: function(nodename) {
var me = this; let me = this;
me.nodename = nodename; me.nodename = nodename;
me.url = "/nodes/" + nodename + "/ceph/" + me.type + "/" + nodename; me.url = `/nodes/${nodename}/ceph/${me.type}/${nodename}`;
}, },
method: 'POST', method: 'POST',
@ -23,24 +22,22 @@ Ext.define('PVE.CephCreateService', {
allowBlank: false, allowBlank: false,
listeners: { listeners: {
change: function(f, value) { change: function(f, value) {
var me = this.up('pveCephCreateService'); let view = this.up('pveCephCreateService');
me.setNode(value); view.setNode(value);
}, },
}, },
}, },
], ],
initComponent: function() { initComponent: function() {
var me = this; let me = this;
if (!me.nodename) { if (!me.nodename) {
throw "no node name specified"; throw "no node name specified";
} }
if (!me.type) { if (!me.type) {
throw "no type specified"; throw "no type specified";
} }
me.setNode(me.nodename); me.setNode(me.nodename);
me.callParent(); me.callParent();
@ -66,25 +63,21 @@ Ext.define('PVE.node.CephServiceList', {
xclass: 'Ext.app.ViewController', xclass: 'Ext.app.ViewController',
render_version: function(value, metadata, rec) { render_version: function(value, metadata, rec) {
let me = this.getView(); let view = this.getView();
let host = rec.data.host; let host = rec.data.host, nodev = [0];
let icon = ""; if (view.nodeversions[host] !== undefined) {
let v = value; nodev = view.nodeversions[host].version.parts;
let nodev = [0];
if (me.nodeversions[host] !== undefined) {
nodev = me.nodeversions[host].version.parts;
} }
let maxv = me.maxversion;
if (PVE.Utils.compare_ceph_versions(maxv, nodev) > 0) { let icon = '';
if (PVE.Utils.compare_ceph_versions(view.maxversion, nodev) > 0) {
icon = PVE.Utils.get_ceph_icon_html('HEALTH_UPGRADE'); icon = PVE.Utils.get_ceph_icon_html('HEALTH_UPGRADE');
} else if (PVE.Utils.compare_ceph_versions(nodev, v) > 0) { } else if (PVE.Utils.compare_ceph_versions(nodev, value) > 0) {
icon = PVE.Utils.get_ceph_icon_html('HEALTH_OLD'); icon = PVE.Utils.get_ceph_icon_html('HEALTH_OLD');
} else if (me.mixedversions) { } else if (view.mixedversions) {
icon = PVE.Utils.get_ceph_icon_html('HEALTH_OK'); icon = PVE.Utils.get_ceph_icon_html('HEALTH_OK');
} }
return icon + value;
return icon + v;
}, },
getMaxVersions: function(store, records, success) { getMaxVersions: function(store, records, success) {
@ -97,7 +90,7 @@ Ext.define('PVE.node.CephServiceList', {
view.nodeversions = records[0].data.node; view.nodeversions = records[0].data.node;
view.maxversion = []; view.maxversion = [];
view.mixedversions = false; view.mixedversions = false;
for (const [nodename, data] of Object.entries(view.nodeversions)) { for (const [_nodename, data] of Object.entries(view.nodeversions)) {
let res = PVE.Utils.compare_ceph_versions(data.version.parts, view.maxversion); let res = PVE.Utils.compare_ceph_versions(data.version.parts, view.maxversion);
if (res !== 0 && view.maxversion.length > 0) { if (res !== 0 && view.maxversion.length > 0) {
view.mixedversions = true; view.mixedversions = true;
@ -123,24 +116,23 @@ Ext.define('PVE.node.CephServiceList', {
view.versionsstore = Ext.create('Proxmox.data.UpdateStore', { view.versionsstore = Ext.create('Proxmox.data.UpdateStore', {
autoStart: true, autoStart: true,
interval: 10000, interval: 10000,
storeid: 'ceph-versions-' + view.type + '-list' + view.nodename, storeid: `ceph-versions-${view.type}-list${view.nodename}`,
proxy: { proxy: {
type: 'proxmox', type: 'proxmox',
url: "/api2/json/cluster/ceph/metadata?scope=versions", url: "/api2/json/cluster/ceph/metadata?scope=versions",
}, },
}); });
view.versionsstore.on('load', this.getMaxVersions, this); view.versionsstore.on('load', this.getMaxVersions, this);
view.on('destroy', view.versionsstore.stopUpdate); view.on('destroy', view.versionsstore.stopUpdate);
view.rstore = Ext.create('Proxmox.data.UpdateStore', { view.rstore = Ext.create('Proxmox.data.UpdateStore', {
autoStart: true, autoStart: true,
interval: 3000, interval: 3000,
storeid: 'ceph-' + view.type + '-list' + view.nodename, storeid: `ceph-${view.type}-list${view.nodename}`,
model: 'ceph-service-list', model: 'ceph-service-list',
proxy: { proxy: {
type: 'proxmox', type: 'proxmox',
url: "/api2/json/nodes/" + view.nodename + "/ceph/" + view.type, url: `/api2/json/nodes/${view.nodename}/ceph/${view.type}`,
}, },
}); });
@ -160,68 +152,58 @@ Ext.define('PVE.node.CephServiceList', {
}, },
service_cmd: function(rec, cmd) { service_cmd: function(rec, cmd) {
var view = this.getView(); let view = this.getView();
if (!rec.data.host) { if (!rec.data.host) {
Ext.Msg.alert(gettext('Error'), "entry has no host"); Ext.Msg.alert(gettext('Error'), "entry has no host");
return; return;
} }
Proxmox.Utils.API2Request({ Proxmox.Utils.API2Request({
url: "/nodes/" + rec.data.host + "/ceph/" + cmd, url: `/nodes/${rec.data.host}/ceph/${cmd}`,
method: 'POST', method: 'POST',
params: { service: view.type + '.' + rec.data.name }, params: { service: view.type + '.' + rec.data.name },
success: function(response, options) { success: function(response, options) {
var upid = response.result.data; Ext.create('Proxmox.window.TaskProgress', {
var win = Ext.create('Proxmox.window.TaskProgress', { autoShow: true,
upid: upid, upid: response.result.data,
taskDone: function() { taskDone: () => view.rstore.load(),
view.rstore.load();
},
});
win.show();
},
failure: function(response, opts) {
Ext.Msg.alert(gettext('Error'), response.htmlStatus);
},
}); });
}, },
onChangeService: function(btn) { failure: (response, _opts) => Ext.Msg.alert(gettext('Error'), response.htmlStatus),
var me = this; });
var view = this.getView(); },
var cmd = btn.action; onChangeService: function(button) {
var rec = view.getSelection()[0]; let me = this;
me.service_cmd(rec, cmd); let record = me.getView().getSelection()[0];
me.service_cmd(record, button.action);
}, },
showSyslog: function() { showSyslog: function() {
var view = this.getView(); let view = this.getView();
var rec = view.getSelection()[0]; let rec = view.getSelection()[0];
var servicename = 'ceph-' + view.type + '@' + rec.data.name; let service = `ceph-${view.type}@${rec.data.name}`;
var url = "/api2/extjs/nodes/" + rec.data.host + "/syslog?service=" + encodeURIComponent(servicename); Ext.create('Ext.window.Window', {
var win = Ext.create('Ext.window.Window', { title: `${gettext('Syslog')}: ${service}`,
title: gettext('Syslog') + ': ' + servicename, autoShow: true,
modal: true, modal: true,
width: 800, width: 800,
height: 400, height: 400,
layout: 'fit', layout: 'fit',
items: [{ items: [{
xtype: 'proxmoxLogView', xtype: 'proxmoxLogView',
url: url, url: `/api2/extjs/nodes/${rec.data.host}/syslog?service=${encodeURIComponent(service)}`,
log_select_timespan: 1, log_select_timespan: 1,
}], }],
}); });
win.show();
}, },
onCreate: function() { onCreate: function() {
var view = this.getView(); let view = this.getView();
var win = Ext.create('PVE.CephCreateService', { Ext.create('PVE.CephCreateService', {
autoShow: true, autoShow: true,
nodename: view.nodename, nodename: view.nodename,
subject: view.getTitle(), subject: view.getTitle(),
type: view.type, type: view.type,
taskDone: function() { taskDone: () => view.rstore.load(),
view.rstore.load();
},
}); });
}, },
}, },
@ -233,10 +215,7 @@ Ext.define('PVE.node.CephServiceList', {
iconCls: 'fa fa-play', iconCls: 'fa fa-play',
action: 'start', action: 'start',
disabled: true, disabled: true,
enableFn: function(rec) { enableFn: rec => rec.data.state === 'stopped' || rec.data.state === 'unknown',
return rec.data.state === 'stopped' ||
rec.data.state === 'unknown';
},
handler: 'onChangeService', handler: 'onChangeService',
}, },
{ {
@ -244,9 +223,7 @@ Ext.define('PVE.node.CephServiceList', {
text: gettext('Stop'), text: gettext('Stop'),
iconCls: 'fa fa-stop', iconCls: 'fa fa-stop',
action: 'stop', action: 'stop',
enableFn: function(rec) { enableFn: rec => rec.data.state !== 'stopped',
return rec.data.state !== 'stopped';
},
disabled: true, disabled: true,
handler: 'onChangeService', handler: 'onChangeService',
}, },
@ -256,9 +233,7 @@ Ext.define('PVE.node.CephServiceList', {
iconCls: 'fa fa-refresh', iconCls: 'fa fa-refresh',
action: 'restart', action: 'restart',
disabled: true, disabled: true,
enableFn: function(rec) { enableFn: rec => rec.data.state !== 'stopped',
return rec.data.state !== 'stopped';
},
handler: 'onChangeService', handler: 'onChangeService',
}, },
'-', '-',
@ -271,27 +246,24 @@ Ext.define('PVE.node.CephServiceList', {
text: gettext('Destroy'), text: gettext('Destroy'),
xtype: 'proxmoxStdRemoveButton', xtype: 'proxmoxStdRemoveButton',
getUrl: function(rec) { getUrl: function(rec) {
var view = this.up('grid'); let view = this.up('grid');
if (!rec.data.host) { if (!rec.data.host) {
Ext.Msg.alert(gettext('Error'), "entry has no host"); Ext.Msg.alert(gettext('Error'), "entry has no host, cannot build API url");
return; return '';
} }
return "/nodes/" + rec.data.host + "/ceph/" + view.type + "/" + rec.data.name; return `/nodes/${rec.data.host}/ceph/${view.type}/${rec.data.name}`;
}, },
callback: function(options, success, response) { callback: function(options, success, response) {
var view = this.up('grid'); let view = this.up('grid');
if (!success) { if (!success) {
Ext.Msg.alert(gettext('Error'), response.htmlStatus); Ext.Msg.alert(gettext('Error'), response.htmlStatus);
return; return;
} }
var upid = response.result.data; Ext.create('Proxmox.window.TaskProgress', {
var win = Ext.create('Proxmox.window.TaskProgress', { autoShow: true,
upid: upid, upid: response.result.data,
taskDone: function() { taskDone: () => view.rstore.load(),
view.rstore.load();
},
}); });
win.show();
}, },
}, },
'-', '-',
@ -347,7 +319,7 @@ Ext.define('PVE.node.CephServiceList', {
], ],
initComponent: function() { initComponent: function() {
var me = this; let me = this;
if (me.additionalColumns) { if (me.additionalColumns) {
me.columns = me.columns.concat(me.additionalColumns); me.columns = me.columns.concat(me.additionalColumns);
@ -359,12 +331,19 @@ Ext.define('PVE.node.CephServiceList', {
}, function() { }, function() {
Ext.define('ceph-service-list', { Ext.define('ceph-service-list', {
extend: 'Ext.data.Model', extend: 'Ext.data.Model',
fields: ['addr', 'name', 'rank', 'host', 'quorum', 'state', fields: [
'ceph_version', 'ceph_version_short', 'addr',
'name',
'rank',
'host',
'quorum',
'state',
'ceph_version',
'ceph_version_short',
{ {
type: 'string', name: 'version', calculate: function(data) { type: 'string',
return PVE.Utils.parse_ceph_version(data); name: 'version',
}, calculate: data => PVE.Utils.parse_ceph_version(data),
}, },
], ],
idProperty: 'name', idProperty: 'name',