ui: tape: add single snapshot restore
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
This commit is contained in:
parent
0ecdaa0dc0
commit
68b102269f
|
@ -16,6 +16,38 @@ Ext.define('PBS.TapeManagement.BackupOverview', {
|
||||||
}).show();
|
}).show();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
restoreSingle: function(button, record) {
|
||||||
|
let me = this;
|
||||||
|
let view = me.getView();
|
||||||
|
let selection = view.getSelection();
|
||||||
|
if (!selection || selection.length < 1) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
let node = selection[0];
|
||||||
|
if (node.data.restoreid === undefined) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
let restoreid = node.data.restoreid;
|
||||||
|
let mediaset = node.data.text;
|
||||||
|
let uuid = node.data['media-set-uuid'];
|
||||||
|
let datastores = [node.data.store];
|
||||||
|
|
||||||
|
Ext.create('PBS.TapeManagement.TapeRestoreWindow', {
|
||||||
|
mediaset,
|
||||||
|
uuid,
|
||||||
|
list: [
|
||||||
|
restoreid,
|
||||||
|
],
|
||||||
|
datastores,
|
||||||
|
listeners: {
|
||||||
|
destroy: function() {
|
||||||
|
me.reload();
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}).show();
|
||||||
|
},
|
||||||
|
|
||||||
restore: function(button, record) {
|
restore: function(button, record) {
|
||||||
let me = this;
|
let me = this;
|
||||||
let view = me.getView();
|
let view = me.getView();
|
||||||
|
@ -149,6 +181,7 @@ Ext.define('PBS.TapeManagement.BackupOverview', {
|
||||||
entry.text = entry.snapshot;
|
entry.text = entry.snapshot;
|
||||||
entry.leaf = true;
|
entry.leaf = true;
|
||||||
entry.children = [];
|
entry.children = [];
|
||||||
|
entry.restoreid = `${entry.store}:${entry.snapshot}`;
|
||||||
let iconCls = PBS.Utils.get_type_icon_cls(entry.snapshot);
|
let iconCls = PBS.Utils.get_type_icon_cls(entry.snapshot);
|
||||||
if (iconCls !== '') {
|
if (iconCls !== '') {
|
||||||
entry.iconCls = `fa ${iconCls}`;
|
entry.iconCls = `fa ${iconCls}`;
|
||||||
|
@ -262,6 +295,14 @@ Ext.define('PBS.TapeManagement.BackupOverview', {
|
||||||
parentXType: 'treepanel',
|
parentXType: 'treepanel',
|
||||||
enableFn: (rec) => !!rec.data['media-set-uuid'],
|
enableFn: (rec) => !!rec.data['media-set-uuid'],
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
xtype: 'proxmoxButton',
|
||||||
|
disabled: true,
|
||||||
|
text: gettext('Restore Snapshot'),
|
||||||
|
handler: 'restoreSingle',
|
||||||
|
parentXType: 'treepanel',
|
||||||
|
enableFn: (rec) => !!rec.data.restoreid,
|
||||||
|
},
|
||||||
],
|
],
|
||||||
|
|
||||||
columns: [
|
columns: [
|
||||||
|
|
|
@ -10,6 +10,18 @@ Ext.define('PBS.TapeManagement.TapeRestoreWindow', {
|
||||||
showTaskViewer: true,
|
showTaskViewer: true,
|
||||||
isCreate: true,
|
isCreate: true,
|
||||||
|
|
||||||
|
cbindData: function(config) {
|
||||||
|
let me = this;
|
||||||
|
me.isSingle = false;
|
||||||
|
me.listText = "";
|
||||||
|
if (me.list !== undefined) {
|
||||||
|
me.isSingle = true;
|
||||||
|
me.listText = me.list.join('<br>');
|
||||||
|
me.title = gettext('Restore Snapshot');
|
||||||
|
}
|
||||||
|
return {};
|
||||||
|
},
|
||||||
|
|
||||||
defaults: {
|
defaults: {
|
||||||
labelWidth: 120,
|
labelWidth: 120,
|
||||||
},
|
},
|
||||||
|
@ -33,6 +45,10 @@ Ext.define('PBS.TapeManagement.TapeRestoreWindow', {
|
||||||
}
|
}
|
||||||
delete values.mapping;
|
delete values.mapping;
|
||||||
|
|
||||||
|
if (me.up('window').list !== undefined) {
|
||||||
|
values.snapshots = me.up('window').list;
|
||||||
|
}
|
||||||
|
|
||||||
values.store = datastores.join(',');
|
values.store = datastores.join(',');
|
||||||
|
|
||||||
return values;
|
return values;
|
||||||
|
@ -55,6 +71,15 @@ Ext.define('PBS.TapeManagement.TapeRestoreWindow', {
|
||||||
value: '{uuid}',
|
value: '{uuid}',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
xtype: 'displayfield',
|
||||||
|
fieldLabel: gettext('Snapshot(s)'),
|
||||||
|
submitValue: false,
|
||||||
|
cbind: {
|
||||||
|
hidden: '{!isSingle}',
|
||||||
|
value: '{listText}',
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
xtype: 'pbsDriveSelector',
|
xtype: 'pbsDriveSelector',
|
||||||
fieldLabel: gettext('Drive'),
|
fieldLabel: gettext('Drive'),
|
||||||
|
|
Loading…
Reference in New Issue