]>
Commit | Line | Data |
---|---|---|
1665b840 FE |
1 | Ext.define('PVE.storage.BackupView', { |
2 | extend: 'PVE.storage.ContentView', | |
3 | ||
4 | alias: 'widget.pveStorageBackupView', | |
5 | ||
1665b840 FE |
6 | initComponent: function() { |
7 | var me = this; | |
8 | ||
9 | var nodename = me.nodename = me.pveSelNode.data.node; | |
10 | if (!nodename) { | |
11 | throw "no node name specified"; | |
12 | } | |
13 | ||
14 | var storage = me.storage = me.pveSelNode.data.storage; | |
15 | if (!storage) { | |
16 | throw "no storage ID specified"; | |
17 | } | |
18 | ||
19 | me.content = 'backup'; | |
20 | ||
21 | var sm = me.sm = Ext.create('Ext.selection.RowModel', {}); | |
22 | ||
23 | var reload = function() { | |
24 | me.store.load(); | |
25 | }; | |
26 | ||
e969d187 FE |
27 | let pruneButton = Ext.create('Proxmox.button.Button', { |
28 | text: gettext('Prune group'), | |
29 | disabled: true, | |
30 | selModel: sm, | |
31 | setBackupGroup: function(backup) { | |
32 | if (backup) { | |
33 | let name = backup.text; | |
34 | let vmid = backup.vmid; | |
35 | let format = backup.format; | |
36 | ||
37 | let vmtype; | |
38 | if (name.startsWith('vzdump-lxc-') || format === "pbs-ct") { | |
39 | vmtype = 'lxc'; | |
40 | } else if (name.startsWith('vzdump-qemu-') || format === "pbs-vm") { | |
41 | vmtype = 'qemu'; | |
42 | } | |
43 | ||
44 | if (vmid && vmtype) { | |
45 | this.setText(gettext('Prune group') + ` ${vmtype}/${vmid}`); | |
46 | this.vmid = vmid; | |
47 | this.vmtype = vmtype; | |
48 | this.setDisabled(false); | |
49 | return; | |
50 | } | |
51 | } | |
52 | this.setText(gettext('Prune group')); | |
53 | this.vmid = null; | |
54 | this.vmtype = null; | |
55 | this.setDisabled(true); | |
56 | }, | |
57 | handler: function(b, e, rec) { | |
58 | let win = Ext.create('PVE.window.Prune', { | |
59 | nodename: nodename, | |
60 | storage: storage, | |
61 | backup_id: this.vmid, | |
62 | backup_type: this.vmtype, | |
63 | }); | |
64 | win.show(); | |
65 | win.on('destroy', reload); | |
66 | }, | |
67 | }); | |
68 | ||
69 | me.on('selectionchange', function(model, srecords, eOpts) { | |
70 | if (srecords.length === 1) { | |
71 | pruneButton.setBackupGroup(srecords[0].data); | |
72 | } else { | |
73 | pruneButton.setBackupGroup(null); | |
74 | } | |
75 | }); | |
76 | ||
1665b840 FE |
77 | me.tbar = [ |
78 | { | |
79 | xtype: 'proxmoxButton', | |
80 | text: gettext('Restore'), | |
81 | selModel: sm, | |
82 | disabled: true, | |
1665b840 FE |
83 | handler: function(b, e, rec) { |
84 | var vmtype; | |
85 | if (PVE.Utils.volume_is_qemu_backup(rec.data.volid, rec.data.format)) { | |
86 | vmtype = 'qemu'; | |
87 | } else if (PVE.Utils.volume_is_lxc_backup(rec.data.volid, rec.data.format)) { | |
88 | vmtype = 'lxc'; | |
89 | } else { | |
90 | return; | |
91 | } | |
92 | ||
93 | var win = Ext.create('PVE.window.Restore', { | |
94 | nodename: nodename, | |
95 | volid: rec.data.volid, | |
96 | volidText: PVE.Utils.render_storage_content(rec.data.volid, {}, rec), | |
f6710aac | 97 | vmtype: vmtype, |
1665b840 FE |
98 | }); |
99 | win.show(); | |
100 | win.on('destroy', reload); | |
f6710aac | 101 | }, |
1665b840 FE |
102 | }, |
103 | { | |
104 | xtype: 'proxmoxButton', | |
105 | text: gettext('Show Configuration'), | |
106 | disabled: true, | |
107 | selModel: sm, | |
f6710aac | 108 | handler: function(b, e, rec) { |
1665b840 FE |
109 | var win = Ext.create('PVE.window.BackupConfig', { |
110 | volume: rec.data.volid, | |
f6710aac | 111 | pveSelNode: me.pveSelNode, |
1665b840 FE |
112 | }); |
113 | ||
114 | win.show(); | |
f6710aac | 115 | }, |
1665b840 | 116 | }, |
e969d187 | 117 | pruneButton, |
1665b840 FE |
118 | ]; |
119 | ||
a4b87129 TL |
120 | if (me.pluginType === 'pbs') { |
121 | me.extraColumns = { | |
122 | encrypted: { | |
123 | header: gettext('Encrypted'), | |
124 | dataIndex: 'encrypted', | |
125 | renderer: PVE.Utils.render_backup_encryption, | |
126 | }, | |
127 | verification: { | |
128 | header: gettext('Verify State'), | |
129 | dataIndex: 'verification', | |
130 | renderer: PVE.Utils.render_backup_verification, | |
f6710aac | 131 | }, |
a4b87129 TL |
132 | }; |
133 | } | |
134 | ||
1665b840 FE |
135 | me.callParent(); |
136 | }, | |
137 | }); |