]>
Commit | Line | Data |
---|---|---|
f5e17f15 FE |
1 | Ext.define('PVE.storage.ImageView', { |
2 | extend: 'PVE.storage.ContentView', | |
3 | ||
4 | alias: 'widget.pveStorageImageView', | |
5 | ||
6 | initComponent: function() { | |
7 | var me = this; | |
8 | ||
9 | var nodename = me.nodename = me.pveSelNode.data.node; | |
10 | if (!me.nodename) { | |
11 | throw "no node name specified"; | |
12 | } | |
13 | ||
14 | var storage = me.storage = me.pveSelNode.data.storage; | |
15 | if (!me.storage) { | |
16 | throw "no storage ID specified"; | |
17 | } | |
18 | ||
91a47a76 | 19 | if (!me.content || (me.content !== 'images' && me.content !== 'rootdir')) { |
f5e17f15 FE |
20 | throw "content needs to be either 'images' or 'rootdir'"; |
21 | } | |
22 | ||
23 | var sm = me.sm = Ext.create('Ext.selection.RowModel', {}); | |
24 | ||
25 | var reload = function() { | |
26 | me.store.load(); | |
8058410f | 27 | }; |
f5e17f15 FE |
28 | |
29 | me.tbar = [ | |
30 | { | |
31 | xtype: 'proxmoxButton', | |
32 | selModel: sm, | |
33 | text: gettext('Remove'), | |
34 | disabled: true, | |
35 | handler: function(btn, event, rec) { | |
f09f1c27 | 36 | let url = `/nodes/${nodename}/storage/${storage}/content/${rec.data.volid}`; |
f5e17f15 FE |
37 | var vmid = rec.data.vmid; |
38 | ||
39 | var store = PVE.data.ResourceStore; | |
40 | ||
41 | if (vmid && store.findVMID(vmid)) { | |
42 | var guest_node = store.guestNode(vmid); | |
43 | var storage_path = 'storage/' + nodename + '/' + storage; | |
44 | ||
45 | // allow to delete local backed images if a VMID exists on another node. | |
91a47a76 | 46 | if (store.storageIsShared(storage_path) || guest_node === nodename) { |
f5e17f15 FE |
47 | var msg = Ext.String.format( |
48 | gettext("Cannot remove image, a guest with VMID '{0}' exists!"), vmid); | |
49 | msg += '<br />' + gettext("You can delete the image from the guest's hardware pane"); | |
50 | ||
51 | Ext.Msg.show({ | |
52 | title: gettext('Cannot remove disk image.'), | |
53 | icon: Ext.Msg.ERROR, | |
f6710aac | 54 | msg: msg, |
f5e17f15 FE |
55 | }); |
56 | return; | |
57 | } | |
58 | } | |
b9635c9b | 59 | var win = Ext.create('Proxmox.window.SafeDestroy', { |
f5e17f15 FE |
60 | title: Ext.String.format(gettext("Destroy '{0}'"), rec.data.volid), |
61 | showProgress: true, | |
62 | url: url, | |
f6710aac | 63 | item: { type: 'Image', id: vmid }, |
b9635c9b | 64 | taskName: 'unknownimgdel', |
f5e17f15 | 65 | }).show(); |
1fe81ce9 | 66 | win.on('destroy', reload); |
f6710aac | 67 | }, |
f5e17f15 FE |
68 | }, |
69 | ]; | |
70 | me.useCustomRemoveButton = true; | |
71 | ||
72 | me.callParent(); | |
73 | }, | |
74 | }); |