mirror of
https://git.proxmox.com/git/pve-manager
synced 2025-07-27 09:59:33 +00:00
ui: ceph: service list: eslint fixes and code cleanup
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
This commit is contained in:
parent
261bb63356
commit
fb792310d1
@ -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);
|
|
||||||
},
|
},
|
||||||
|
failure: (response, _opts) => Ext.Msg.alert(gettext('Error'), response.htmlStatus),
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
onChangeService: function(btn) {
|
onChangeService: function(button) {
|
||||||
var me = this;
|
let me = this;
|
||||||
var view = this.getView();
|
let record = me.getView().getSelection()[0];
|
||||||
var cmd = btn.action;
|
me.service_cmd(record, button.action);
|
||||||
var rec = view.getSelection()[0];
|
|
||||||
me.service_cmd(rec, cmd);
|
|
||||||
},
|
},
|
||||||
|
|
||||||
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,13 +331,20 @@ 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',
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user