]> git.proxmox.com Git - pve-manager.git/blame - www/manager6/storage/IScsiEdit.js
update shipped appliance info index
[pve-manager.git] / www / manager6 / storage / IScsiEdit.js
CommitLineData
208ba0c6 1Ext.define('PVE.storage.IScsiScan', {
14d9ecc4 2 extend: 'PVE.form.ComboBoxSetStoreNode',
208ba0c6
DM
3 alias: 'widget.pveIScsiScan',
4
5 queryParam: 'portal',
c2317525
DC
6 valueField: 'target',
7 displayField: 'target',
8 matchFieldWidth: false,
d420b29a
DC
9 allowBlank: false,
10
c2317525 11 listConfig: {
f6710aac 12 width: 350,
d420b29a
DC
13 columns: [
14 {
15 dataIndex: 'target',
16 flex: 1,
17 },
18 ],
04389e49 19 emptyText: PVE.Utils.renderNotFound(gettext('iSCSI Target')),
c2317525 20 },
d420b29a 21
14d9ecc4
SH
22 config: {
23 apiSuffix: '/scan/iscsi',
24 },
208ba0c6 25
d420b29a 26 showNodeSelector: true,
208ba0c6 27
d420b29a
DC
28 reload: function() {
29 let me = this;
30 if (!me.isDisabled()) {
31 me.getStore().load();
208ba0c6 32 }
208ba0c6
DM
33 },
34
35 setPortal: function(portal) {
62427184 36 let me = this;
208ba0c6 37 me.portal = portal;
d420b29a
DC
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();
208ba0c6
DM
46 },
47
8058410f 48 initComponent: function() {
62427184 49 let me = this;
208ba0c6
DM
50
51 if (!me.nodename) {
52 me.nodename = 'localhost';
53 }
54
62427184 55 let store = Ext.create('Ext.data.Store', {
8058410f 56 fields: ['target', 'portal'],
208ba0c6 57 proxy: {
56a353b9 58 type: 'proxmox',
14d9ecc4 59 url: `${me.apiBaseUrl}${me.nodename}${me.apiSuffix}`,
f6710aac 60 },
208ba0c6 61 });
9e9ab96f
WL
62 store.sort('target', 'ASC');
63
208ba0c6 64 Ext.apply(me, {
f6710aac 65 store: store,
208ba0c6
DM
66 });
67
68 me.callParent();
f6710aac 69 },
208ba0c6
DM
70});
71
72Ext.define('PVE.storage.IScsiInputPanel', {
f28ec3e4 73 extend: 'PVE.panel.StorageBase',
df60e210 74 mixins: ['Proxmox.Mixin.CBind'],
208ba0c6 75
96988dfa
DC
76 onlineHelp: 'storage_open_iscsi',
77
208ba0c6 78 onGetValues: function(values) {
b9e706fb 79 let me = this;
208ba0c6 80
208ba0c6
DM
81 values.content = values.luns ? 'images' : 'none';
82 delete values.luns;
83
9c1fe394 84 return me.callParent([values]);
f28ec3e4 85 },
177de3de 86
f28ec3e4 87 setValues: function(values) {
53e3ea84 88 values.luns = values.content.indexOf('images') !== -1;
ff86a291 89 this.callParent([values]);
208ba0c6
DM
90 },
91
df60e210
DC
92 column1: [
93 {
94 xtype: 'pmxDisplayEditField',
95 cbind: {
96 editable: '{isCreate}',
97 },
208ba0c6 98
df60e210
DC
99 name: 'portal',
100 value: '',
101 fieldLabel: 'Portal',
102 allowBlank: false,
103
104 editConfig: {
208ba0c6 105 listeners: {
df60e210
DC
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,
f6710aac
TL
117 },
118 },
208ba0c6 119 },
df60e210
DC
120 },
121 {
122 cbind: {
123 xtype: (get) => get('isCreate') ? 'pveIScsiScan' : 'displayfield',
124 readOnly: '{!isCreate}',
125 disabled: '{isCreate}',
f6710aac 126 },
208ba0c6 127
df60e210
DC
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 ],
208ba0c6 149});