]> git.proxmox.com Git - pve-manager.git/blob - www/manager6/storage/IScsiEdit.js
api: add proxmox-firewall to versions pkg list
[pve-manager.git] / www / manager6 / storage / IScsiEdit.js
1 Ext.define('PVE.storage.IScsiScan', {
2 extend: 'PVE.form.ComboBoxSetStoreNode',
3 alias: 'widget.pveIScsiScan',
4
5 queryParam: 'portal',
6 valueField: 'target',
7 displayField: 'target',
8 matchFieldWidth: false,
9 allowBlank: false,
10
11 listConfig: {
12 width: 350,
13 columns: [
14 {
15 dataIndex: 'target',
16 flex: 1,
17 },
18 ],
19 emptyText: PVE.Utils.renderNotFound(gettext('iSCSI Target')),
20 },
21
22 config: {
23 apiSuffix: '/scan/iscsi',
24 },
25
26 showNodeSelector: true,
27
28 reload: function() {
29 let me = this;
30 if (!me.isDisabled()) {
31 me.getStore().load();
32 }
33 },
34
35 setPortal: function(portal) {
36 let me = this;
37 me.portal = portal;
38 me.getStore().getProxy().setExtraParams({ portal });
39 me.reload();
40 },
41
42 setNodeName: function(value) {
43 let me = this;
44 me.callParent([value]);
45 me.reload();
46 },
47
48 initComponent: function() {
49 let me = this;
50
51 if (!me.nodename) {
52 me.nodename = 'localhost';
53 }
54
55 let store = Ext.create('Ext.data.Store', {
56 fields: ['target', 'portal'],
57 proxy: {
58 type: 'proxmox',
59 url: `${me.apiBaseUrl}${me.nodename}${me.apiSuffix}`,
60 },
61 });
62 store.sort('target', 'ASC');
63
64 Ext.apply(me, {
65 store: store,
66 });
67
68 me.callParent();
69 },
70 });
71
72 Ext.define('PVE.storage.IScsiInputPanel', {
73 extend: 'PVE.panel.StorageBase',
74 mixins: ['Proxmox.Mixin.CBind'],
75
76 onlineHelp: 'storage_open_iscsi',
77
78 onGetValues: function(values) {
79 let me = this;
80
81 values.content = values.luns ? 'images' : 'none';
82 delete values.luns;
83
84 return me.callParent([values]);
85 },
86
87 setValues: function(values) {
88 values.luns = values.content.indexOf('images') !== -1;
89 this.callParent([values]);
90 },
91
92 column1: [
93 {
94 xtype: 'pmxDisplayEditField',
95 cbind: {
96 editable: '{isCreate}',
97 },
98
99 name: 'portal',
100 value: '',
101 fieldLabel: 'Portal',
102 allowBlank: false,
103
104 editConfig: {
105 listeners: {
106 change: {
107 fn: function(f, value) {
108 let panel = this.up('inputpanel');
109 let exportField = panel.lookup('iScsiTargetScan');
110 if (exportField) {
111 exportField.setDisabled(!value);
112 exportField.setPortal(value);
113 exportField.setValue('');
114 }
115 },
116 buffer: 500,
117 },
118 },
119 },
120 },
121 {
122 cbind: {
123 xtype: (get) => get('isCreate') ? 'pveIScsiScan' : 'displayfield',
124 readOnly: '{!isCreate}',
125 disabled: '{isCreate}',
126 },
127
128 name: 'target',
129 value: '',
130 fieldLabel: gettext('Target'),
131 allowBlank: false,
132 reference: 'iScsiTargetScan',
133 listeners: {
134 nodechanged: function(value) {
135 this.up('inputpanel').lookup('storageNodeRestriction').setValue(value);
136 },
137 },
138 },
139 ],
140
141 column2: [
142 {
143 xtype: 'checkbox',
144 name: 'luns',
145 checked: true,
146 fieldLabel: gettext('Use LUNs directly'),
147 },
148 ],
149 });