]> git.proxmox.com Git - pve-manager.git/blame - www/manager6/storage/IScsiEdit.js
bump version to 4.3-2
[pve-manager.git] / www / manager6 / storage / IScsiEdit.js
CommitLineData
208ba0c6
DM
1Ext.define('PVE.storage.IScsiScan', {
2 extend: 'Ext.form.field.ComboBox',
3 alias: 'widget.pveIScsiScan',
4
5 queryParam: 'portal',
c2317525
DC
6 valueField: 'target',
7 displayField: 'target',
8 matchFieldWidth: false,
9 listConfig: {
10 loadingText: gettext('Scanning...'),
11 width: 350
12 },
208ba0c6
DM
13 doRawQuery: function() {
14 },
15
16 onTriggerClick: function() {
17 var me = this;
18
19 if (!me.queryCaching || me.lastQuery !== me.portal) {
20 me.store.removeAll();
21 }
22
23 me.allQuery = me.portal;
24
25 me.callParent();
26 },
27
28 setPortal: function(portal) {
29 var me = this;
30
31 me.portal = portal;
32 },
33
34 initComponent : function() {
35 var me = this;
36
37 if (!me.nodename) {
38 me.nodename = 'localhost';
39 }
40
41 var store = Ext.create('Ext.data.Store', {
42 fields: [ 'target', 'portal' ],
43 proxy: {
44 type: 'pve',
45 url: '/api2/json/nodes/' + me.nodename + '/scan/iscsi'
46 }
47 });
48
49 Ext.apply(me, {
22f2f9d6 50 store: store
208ba0c6
DM
51 });
52
53 me.callParent();
54 }
55});
56
57Ext.define('PVE.storage.IScsiInputPanel', {
58 extend: 'PVE.panel.InputPanel',
59
60 onGetValues: function(values) {
61 var me = this;
62
63 if (me.create) {
64 values.type = 'iscsi';
65 } else {
66 delete values.storage;
67 }
68
69 values.content = values.luns ? 'images' : 'none';
70 delete values.luns;
71
177de3de 72 values.disable = values.enable ? 0 : 1;
208ba0c6 73 delete values.enable;
177de3de 74
208ba0c6
DM
75 return values;
76 },
77
78 initComponent : function() {
79 var me = this;
80
81
82 me.column1 = [
83 {
84 xtype: me.create ? 'textfield' : 'displayfield',
85 name: 'storage',
208ba0c6
DM
86 value: me.storageId || '',
87 fieldLabel: 'ID',
88 vtype: 'StorageId',
89 allowBlank: false
90 },
91 {
92 xtype: me.create ? 'textfield' : 'displayfield',
208ba0c6
DM
93 name: 'portal',
94 value: '',
95 fieldLabel: 'Portal',
96 allowBlank: false,
97 listeners: {
98 change: function(f, value) {
99 if (me.create) {
100 var exportField = me.down('field[name=target]');
101 exportField.setPortal(value);
102 exportField.setValue('');
103 }
104 }
105 }
106 },
107 {
108 readOnly: !me.create,
109 xtype: me.create ? 'pveIScsiScan' : 'displayfield',
110 name: 'target',
111 value: '',
112 fieldLabel: 'Target',
113 allowBlank: false
114 }
115 ];
116
117 me.column2 = [
118 {
5198365d 119 xtype: 'pveNodeSelector',
208ba0c6
DM
120 name: 'nodes',
121 fieldLabel: gettext('Nodes'),
177de3de 122 emptyText: gettext('All') + ' (' +
208ba0c6
DM
123 gettext('No restrictions') +')',
124 multiSelect: true,
125 autoSelect: false
126 },
127 {
128 xtype: 'pvecheckbox',
129 name: 'enable',
130 checked: true,
131 uncheckedValue: 0,
132 fieldLabel: gettext('Enable')
133 },
134 {
135 xtype: 'checkbox',
136 name: 'luns',
137 checked: true,
138 fieldLabel: gettext('Use LUNs directly')
139 }
140 ];
141
142 me.callParent();
143 }
144});
145
146Ext.define('PVE.storage.IScsiEdit', {
147 extend: 'PVE.window.Edit',
148
149 initComponent : function() {
150 var me = this;
177de3de 151
208ba0c6
DM
152 me.create = !me.storageId;
153
154 if (me.create) {
155 me.url = '/api2/extjs/storage';
156 me.method = 'POST';
157 } else {
158 me.url = '/api2/extjs/storage/' + me.storageId;
159 me.method = 'PUT';
160 }
161
162 var ipanel = Ext.create('PVE.storage.IScsiInputPanel', {
163 create: me.create,
164 storageId: me.storageId
165 });
177de3de 166
208ba0c6
DM
167 Ext.apply(me, {
168 subject: PVE.Utils.format_storage_type('iscsi'),
169 isAdd: true,
170 items: [ ipanel ]
171 });
172
173 me.callParent();
174
175 if (!me.create) {
176 me.load({
177 success: function(response, options) {
178 var values = response.result.data;
179 var ctypes = values.content || '';
180
181 if (values.storage === 'local') {
182 values.content = ctypes.split(',');
183 }
184 if (values.nodes) {
185 values.nodes = values.nodes.split(',');
186 }
187 values.enable = values.disable ? 0 : 1;
188 values.luns = (values.content === 'images') ? true : false;
189
190 ipanel.setValues(values);
191 }
192 });
193 }
194 }
195});