ui: datastore content: make verify-all more flexible

allow to specify the namespace, max_depth and also the re-verify/skip
behavior.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
This commit is contained in:
Thomas Lamprecht 2022-05-11 14:28:33 +02:00
parent d83ce0d0c7
commit bc4af01559
3 changed files with 94 additions and 24 deletions

View File

@ -76,6 +76,7 @@ JSSRC= \
window/Settings.js \ window/Settings.js \
window/TokenEdit.js \ window/TokenEdit.js \
window/VerifyJobEdit.js \ window/VerifyJobEdit.js \
window/VerifyAll.js \
window/ZFSCreate.js \ window/ZFSCreate.js \
dashboard/DataStoreStatistics.js \ dashboard/DataStoreStatistics.js \
dashboard/LongestTasks.js \ dashboard/LongestTasks.js \

View File

@ -361,26 +361,14 @@ Ext.define('PBS.DataStoreContent', {
}, },
verifyAll: function() { verifyAll: function() {
var view = this.getView(); let me = this;
let view = me.getView();
let params = {}; Ext.create('PBS.window.VerifyAll', {
if (view.namespace && view.namespace !== '') { taskDone: () => me.reload(),
params['backup-ns'] = view.namespace; // TODO backend?! autoShow: true,
} datastore: view.datastore,
namespace: view.namespace,
Proxmox.Utils.API2Request({
url: `/admin/datastore/${view.datastore}/verify`,
params,
method: 'POST',
failure: function(response) {
Ext.Msg.alert(gettext('Error'), response.htmlStatus);
},
success: function(response, options) {
Ext.create('Proxmox.window.TaskViewer', {
autoShow: true,
upid: response.result.data,
});
},
}); });
}, },
@ -393,17 +381,13 @@ Ext.define('PBS.DataStoreContent', {
Ext.create('Proxmox.window.Edit', { Ext.create('Proxmox.window.Edit', {
title: `Prune Datastore '${view.datastore}'`, title: `Prune Datastore '${view.datastore}'`,
onlineHelp: 'maintenance_pruning', onlineHelp: 'maintenance_pruning',
method: 'POST', method: 'POST',
submitText: "Prune", submitText: "Prune",
autoShow: true, autoShow: true,
isCreate: true, isCreate: true,
showTaskViewer: true, showTaskViewer: true,
taskDone: () => me.reload(), taskDone: () => me.reload(),
url: `/api2/extjs/admin/datastore/${view.datastore}/prune-datastore`, url: `/api2/extjs/admin/datastore/${view.datastore}/prune-datastore`,
items: [ items: [
{ {
xtype: 'pbsPruneInputPanel', xtype: 'pbsPruneInputPanel',
@ -1089,7 +1073,6 @@ Ext.define('PBS.DataStoreContent', {
{ {
xtype: 'proxmoxButton', xtype: 'proxmoxButton',
text: gettext('Verify All'), text: gettext('Verify All'),
confirmMsg: gettext('Do you want to verify all snapshots now?'),
handler: 'verifyAll', handler: 'verifyAll',
}, },
{ {

86
www/window/VerifyAll.js Normal file
View File

@ -0,0 +1,86 @@
Ext.define('PBS.window.VerifyAll', {
extend: 'Proxmox.window.Edit',
alias: 'widget.pbsVerifyAll',
mixins: ['Proxmox.Mixin.CBind'],
onlineHelp: 'maintenance_verification',
method: 'POST',
cbind: {
title: `Verify Datastore '{datastore}'`,
url: `/admin/datastore/{datastore}/verify`,
},
submitText: gettext('Verify'),
isCreate: true,
showTaskViewer: true,
showReset: false,
defaultFocus: 'submitbutton',
width: 450,
items: [
{
xtype: 'inputpanel',
viewModel: {
data: { ignoreVerified: true },
},
onGetValues: values => {
if (!values['backup-ns'] || values['backup-ns'] === '') {
delete values['backup-ns'];
}
return values;
},
items: [
{
xtype: 'pbsNamespaceSelector',
name: 'backup-ns',
fieldLabel: gettext('Namespace'),
cbind: {
datastore: '{datastore}',
value: '{namespace}',
},
},
{
xtype: 'pbsNamespaceMaxDepth',
name: 'max-depth',
deleteEmpty: false,
},
{
xtype: 'fieldcontainer',
layout: 'hbox',
fieldLabel: gettext('Skip Verified'),
items: [
{
xtype: 'proxmoxcheckbox',
name: 'ignore-verified',
uncheckedValue: false,
value: true,
bind: {
value: '{ignoreVerified}',
},
},
{
xtype: 'pbsVerifyOutdatedAfter',
name: 'outdated-after',
fieldLabel: gettext('Re-Verify After'),
padding: '0 0 0 5',
bind: {
disabled: '{!ignoreVerified}',
},
flex: 1,
},
{
xtype: 'displayfield',
name: 'unit',
submitValue: false,
padding: '0 0 0 5',
value: gettext('days'),
bind: {
disabled: '{!ignoreVerified}',
},
},
],
},
],
},
],
});