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