ui: tape: add single snapshot restore
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
This commit is contained in:
		
				
					committed by
					
						
						Dietmar Maurer
					
				
			
			
				
	
			
			
			
						parent
						
							0ecdaa0dc0
						
					
				
				
					commit
					68b102269f
				
			@ -16,6 +16,38 @@ Ext.define('PBS.TapeManagement.BackupOverview', {
 | 
			
		||||
	    }).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) {
 | 
			
		||||
	    let me = this;
 | 
			
		||||
	    let view = me.getView();
 | 
			
		||||
@ -149,6 +181,7 @@ Ext.define('PBS.TapeManagement.BackupOverview', {
 | 
			
		||||
		    entry.text = entry.snapshot;
 | 
			
		||||
		    entry.leaf = true;
 | 
			
		||||
		    entry.children = [];
 | 
			
		||||
		    entry.restoreid = `${entry.store}:${entry.snapshot}`;
 | 
			
		||||
		    let iconCls = PBS.Utils.get_type_icon_cls(entry.snapshot);
 | 
			
		||||
		    if (iconCls !== '') {
 | 
			
		||||
			entry.iconCls = `fa ${iconCls}`;
 | 
			
		||||
@ -262,6 +295,14 @@ Ext.define('PBS.TapeManagement.BackupOverview', {
 | 
			
		||||
	    parentXType: 'treepanel',
 | 
			
		||||
	    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: [
 | 
			
		||||
 | 
			
		||||
@ -10,6 +10,18 @@ Ext.define('PBS.TapeManagement.TapeRestoreWindow', {
 | 
			
		||||
    showTaskViewer: 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: {
 | 
			
		||||
	labelWidth: 120,
 | 
			
		||||
    },
 | 
			
		||||
@ -33,6 +45,10 @@ Ext.define('PBS.TapeManagement.TapeRestoreWindow', {
 | 
			
		||||
		}
 | 
			
		||||
		delete values.mapping;
 | 
			
		||||
 | 
			
		||||
		if (me.up('window').list !== undefined) {
 | 
			
		||||
		    values.snapshots = me.up('window').list;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		values.store = datastores.join(',');
 | 
			
		||||
 | 
			
		||||
		return values;
 | 
			
		||||
@ -55,6 +71,15 @@ Ext.define('PBS.TapeManagement.TapeRestoreWindow', {
 | 
			
		||||
			value: '{uuid}',
 | 
			
		||||
		    },
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
		    xtype: 'displayfield',
 | 
			
		||||
		    fieldLabel: gettext('Snapshot(s)'),
 | 
			
		||||
		    submitValue: false,
 | 
			
		||||
		    cbind: {
 | 
			
		||||
			hidden: '{!isSingle}',
 | 
			
		||||
			value: '{listText}',
 | 
			
		||||
		    },
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
		    xtype: 'pbsDriveSelector',
 | 
			
		||||
		    fieldLabel: gettext('Drive'),
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user