]> git.proxmox.com Git - pve-manager.git/blame - www/manager6/storage/LvmThinEdit.js
fix #2822: add iscsi, lvm, lvmthin & zfs storage for all cluster nodes
[pve-manager.git] / www / manager6 / storage / LvmThinEdit.js
CommitLineData
cbebb721 1Ext.define('PVE.storage.TPoolSelector', {
14d9ecc4 2 extend: 'PVE.form.ComboBoxSetStoreNode',
cbebb721
DM
3 alias: 'widget.pveTPSelector',
4
5 queryParam: 'vg',
c2317525
DC
6 valueField: 'lv',
7 displayField: 'lv',
8 editable: false,
cbebb721 9
14d9ecc4
SH
10 config: {
11 apiSuffix: '/scan/lvmthin',
12 },
13
cbebb721 14 doRawQuery: function() {
5eb9b7b1 15 // nothing
cbebb721
DM
16 },
17
18 onTriggerClick: function() {
19 var me = this;
20
21 if (!me.queryCaching || me.lastQuery !== me.vg) {
22 me.store.removeAll();
23 }
24
25 me.allQuery = me.vg;
26
27 me.callParent();
28 },
29
30 setVG: function(myvg) {
31 var me = this;
32
33 me.vg = myvg;
34 },
35
8058410f 36 initComponent: function() {
cbebb721
DM
37 var me = this;
38
39 if (!me.nodename) {
40 me.nodename = 'localhost';
41 }
42
43 var store = Ext.create('Ext.data.Store', {
8058410f 44 fields: ['lv'],
cbebb721 45 proxy: {
56a353b9 46 type: 'proxmox',
14d9ecc4 47 url: `${me.apiBaseUrl}${me.nodename}${me.apiSuffix}`,
f6710aac 48 },
cbebb721
DM
49 });
50
9e9ab96f
WL
51 store.sort('lv', 'ASC');
52
cbebb721
DM
53 Ext.apply(me, {
54 store: store,
cbebb721 55 listConfig: {
f6710aac
TL
56 loadingText: gettext('Scanning...'),
57 },
cbebb721
DM
58 });
59
60 me.callParent();
f6710aac 61 },
cbebb721
DM
62});
63
64Ext.define('PVE.storage.BaseVGSelector', {
14d9ecc4 65 extend: 'PVE.form.ComboBoxSetStoreNode',
cbebb721
DM
66 alias: 'widget.pveBaseVGSelector',
67
c2317525
DC
68 valueField: 'vg',
69 displayField: 'vg',
70 queryMode: 'local',
71 editable: false,
14d9ecc4
SH
72 config: {
73 apiSuffix: '/scan/lvm',
74 },
75
76 setNodeName: function(value) {
77 let me = this;
78 me.callParent([value]);
79 me.getStore().load();
80 },
81
8058410f 82 initComponent: function() {
cbebb721
DM
83 var me = this;
84
85 if (!me.nodename) {
86 me.nodename = 'localhost';
87 }
88
89 var store = Ext.create('Ext.data.Store', {
90 autoLoad: {},
8058410f 91 fields: ['vg', 'size', 'free'],
cbebb721 92 proxy: {
56a353b9 93 type: 'proxmox',
14d9ecc4 94 url: `${me.apiBaseUrl}${me.nodename}${me.apiSuffix}`,
f6710aac 95 },
cbebb721
DM
96 });
97
98 Ext.apply(me, {
99 store: store,
cbebb721 100 listConfig: {
f6710aac
TL
101 loadingText: gettext('Scanning...'),
102 },
cbebb721
DM
103 });
104
105 me.callParent();
f6710aac 106 },
cbebb721
DM
107});
108
109Ext.define('PVE.storage.LvmThinInputPanel', {
f28ec3e4 110 extend: 'PVE.panel.StorageBase',
cbebb721 111
96988dfa
DC
112 onlineHelp: 'storage_lvmthin',
113
8058410f 114 initComponent: function() {
cbebb721
DM
115 var me = this;
116
f28ec3e4 117 me.column1 = [];
cbebb721 118
d5e771ce 119 var vgnameField = Ext.createWidget(me.isCreate ? 'textfield' : 'displayfield', {
cbebb721 120 name: 'vgname',
d5e771ce
EK
121 hidden: !!me.isCreate,
122 disabled: !!me.isCreate,
cbebb721
DM
123 value: '',
124 fieldLabel: gettext('Volume group'),
f6710aac 125 allowBlank: false,
cbebb721
DM
126 });
127
d5e771ce 128 var thinpoolField = Ext.createWidget(me.isCreate ? 'textfield' : 'displayfield', {
cbebb721 129 name: 'thinpool',
d5e771ce
EK
130 hidden: !!me.isCreate,
131 disabled: !!me.isCreate,
cbebb721
DM
132 value: '',
133 fieldLabel: gettext('Thin Pool'),
f6710aac 134 allowBlank: false,
cbebb721
DM
135 });
136
d5e771ce 137 if (me.isCreate) {
14d9ecc4
SH
138 me.column1.push({
139 xtype: 'pveStorageScanNodeSelector',
140 listeners: {
141 change: {
142 fn: function(field, value) {
143 me.lookup('thinPoolSelector').setNodeName(value);
144 me.lookup('volumeGroupSelector').setNodeName(value);
145 me.lookup('storageNodeRestriction').setValue(value);
146 },
147 },
148 },
cbebb721
DM
149 });
150
14d9ecc4 151 me.column1.push(Ext.create('PVE.storage.BaseVGSelector', {
cbebb721 152 name: 'vgname',
16152937 153 fieldLabel: gettext('Volume group'),
14d9ecc4 154 reference: 'volumeGroupSelector',
cbebb721
DM
155 listeners: {
156 change: function(f, value) {
d5e771ce 157 if (me.isCreate) {
14d9ecc4 158 let vgField = me.lookup('thinPoolSelector');
cbebb721
DM
159 vgField.setVG(value);
160 vgField.setValue('');
161 }
f6710aac
TL
162 },
163 },
14d9ecc4 164 }));
cbebb721 165
14d9ecc4
SH
166 me.column1.push(Ext.create('PVE.storage.TPoolSelector', {
167 name: 'thinpool',
168 fieldLabel: gettext('Thin Pool'),
169 reference: 'thinPoolSelector',
170 allowBlank: false,
171 }));
cbebb721
DM
172 }
173
174 me.column1.push(vgnameField);
175
176 me.column1.push(thinpoolField);
177
ec0bd652
DC
178 // here value is an array,
179 // while before it was a string
cbebb721
DM
180 me.column1.push({
181 xtype: 'pveContentTypeSelector',
182 cts: ['images', 'rootdir'],
183 fieldLabel: gettext('Content'),
184 name: 'content',
185 value: ['images', 'rootdir'],
186 multiSelect: true,
f6710aac 187 allowBlank: false,
cbebb721
DM
188 });
189
f28ec3e4 190 me.column2 = [];
cbebb721
DM
191
192 me.callParent();
f6710aac 193 },
cbebb721 194});