ui: utils: add function for parsing maintenance mode

...since the same code is used is more than one place

Signed-off-by: Hannes Laimer <h.laimer@proxmox.com>
This commit is contained in:
Hannes Laimer 2022-04-26 06:23:34 +00:00 committed by Thomas Lamprecht
parent fbd6f54f39
commit 1b7479c968
3 changed files with 17 additions and 15 deletions

View File

@ -640,13 +640,22 @@ Ext.define('PBS.Utils', {
return `${icon} ${value}`;
},
// FIXME: this "parser" is brittle and relies on the order the arguments will appear in
parseMaintenanceMode: function(mode) {
let [type, message] = mode.split(/,(.+)/);
type = type.split("=").pop();
message = message ? message.split("=")[1]
.replace(/^"(.*)"$/, '$1')
.replaceAll('\\"', '"') : null;
return [type, message];
},
renderMaintenance: function(mode, activeTasks) {
if (!mode) {
return gettext('None');
}
// FIXME: this "parser" is brittle and relies on the order the arguments will appear in
let [type, message] = mode.split(",");
type = type.split("=").pop();
let [type, message] = PBS.Utils.parseMaintenanceMode(mode);
const conflictingTasks = activeTasks.write + (type === 'offline' ? activeTasks.read : 0);
@ -659,7 +668,7 @@ Ext.define('PBS.Utils', {
}
if (message) {
extra += ` (${message.split("=").pop()})`;
extra += ` ("${message}")`;
}
let modeText = Proxmox.Utils.unknownText;

View File

@ -49,12 +49,9 @@ Ext.define('PBS.DataStoreInfo', {
success: function(response) {
const config = response.result.data;
if (config['maintenance-mode']) {
const [_type, msg] = config['maintenance-mode'].split(/,(.+)/);
const message = msg ? ': ' + msg.split("=")[1]
.replace(/^"(.*)"$/, '$1')
.replaceAll('\\"', '"') : '';
const [_type, msg] = PBS.Utils.parseMaintenanceMode(config['maintenance-mode']);
me.view.el.mask(
`${gettext('Datastore is in maintenance mode')}${message}`,
`${gettext('Datastore is in maintenance mode')}${msg ? ': ' + msg : ''}`,
'fa pbs-maintenance-mask',
);
} else {

View File

@ -62,14 +62,10 @@ Ext.define('PBS.window.MaintenanceOptions', {
'maintenance-msg': '',
};
if (values['maintenance-mode']) {
let [type, message] = values['maintenance-mode'].split(/,(.+)/);
type = type.split("=").pop();
message = message ? message.split("=")[1]
.replace(/^"(.*)"$/, '$1')
.replaceAll('\\"', '"') : '';
const [type, message] = PBS.Utils.parseMaintenanceMode(values['maintenance-mode']);
options = {
'maintenance-type': type,
'maintenance-msg': message,
'maintenance-msg': message ?? '',
};
}