]> git.proxmox.com Git - pve-manager.git/blame - www/manager6/qemu/NetworkEdit.js
ui: eslint: fix trailing comma and comma related whitespaces errors
[pve-manager.git] / www / manager6 / qemu / NetworkEdit.js
CommitLineData
8487aa12 1Ext.define('PVE.qemu.NetworkInputPanel', {
ef4ef788 2 extend: 'Proxmox.panel.InputPanel',
85806e47 3 alias: 'widget.pveQemuNetworkInputPanel',
c8802a60 4 onlineHelp: 'qm_network_device',
8487aa12
DM
5
6 insideWizard: false,
7
8 onGetValues: function(values) {
9 var me = this;
10
11 me.network.model = values.model;
57f034f6 12 if (values.nonetwork) {
8487aa12 13 return {};
57f034f6 14 } else {
8487aa12
DM
15 me.network.bridge = values.bridge;
16 me.network.tag = values.tag;
17 me.network.firewall = values.firewall;
8487aa12
DM
18 }
19 me.network.macaddr = values.macaddr;
20 me.network.disconnect = values.disconnect;
21 me.network.queues = values.queues;
22
23 if (values.rate) {
24 me.network.rate = values.rate;
25 } else {
26 delete me.network.rate;
27 }
28
29 var params = {};
30
31 params[me.confid] = PVE.Parser.printQemuNetwork(me.network);
32
33 return params;
34 },
35
36 setNetwork: function(confid, data) {
37 var me = this;
38
39 me.confid = confid;
40
41 if (data) {
42 data.networkmode = data.bridge ? 'bridge' : 'nat';
43 } else {
44 data = {};
45 data.networkmode = 'bridge';
46 }
47 me.network = data;
2a4971d8 48
8487aa12
DM
49 me.setValues(me.network);
50 },
51
52 setNodename: function(nodename) {
53 var me = this;
54
55 me.bridgesel.setNodename(nodename);
56 },
57
58 initComponent : function() {
59 var me = this;
60
61 me.network = {};
62 me.confid = 'net0';
63
57f034f6
DC
64 me.column1 = [];
65 me.column2 = [];
66
8487aa12
DM
67 me.bridgesel = Ext.create('PVE.form.BridgeSelector', {
68 name: 'bridge',
69 fieldLabel: gettext('Bridge'),
70 nodename: me.nodename,
8487aa12 71 autoSelect: true,
f6710aac 72 allowBlank: false,
8487aa12
DM
73 });
74
75 me.column1 = [
8487aa12
DM
76 me.bridgesel,
77 {
78 xtype: 'pveVlanField',
79 name: 'tag',
f6710aac 80 value: '',
8487aa12 81 },
8487aa12 82 {
896c0d50 83 xtype: 'proxmoxcheckbox',
8487aa12 84 fieldLabel: gettext('Firewall'),
b2991833 85 name: 'firewall',
f6710aac
TL
86 checked: (me.insideWizard || me.isCreate),
87 },
57f034f6
DC
88 ];
89
90 me.advancedColumn1 = [
8487aa12 91 {
57f034f6
DC
92 xtype: 'proxmoxcheckbox',
93 fieldLabel: gettext('Disconnect'),
f6710aac
TL
94 name: 'disconnect',
95 },
8487aa12
DM
96 ];
97
98 if (me.insideWizard) {
57f034f6
DC
99 me.column1.unshift({
100 xtype: 'checkbox',
101 name: 'nonetwork',
8487aa12 102 inputValue: 'none',
57f034f6
DC
103 boxLabel: gettext('No network device'),
104 listeners: {
105 change: function(cb, value) {
106 var fields = [
107 'disconnect',
108 'bridge',
109 'tag',
110 'firewall',
111 'model',
112 'macaddr',
113 'rate',
f6710aac 114 'queues',
57f034f6
DC
115 ];
116 fields.forEach(function(fieldname) {
117 me.down('field[name='+fieldname+']').setDisabled(value);
118 });
119 me.down('field[name=bridge]').validate();
f6710aac
TL
120 },
121 },
57f034f6
DC
122 });
123 me.column2.unshift({
f6710aac 124 xtype: 'displayfield',
8487aa12
DM
125 });
126 }
127
57f034f6 128 me.column2.push(
8487aa12 129 {
42902182 130 xtype: 'pveNetworkCardSelector',
8487aa12
DM
131 name: 'model',
132 fieldLabel: gettext('Model'),
39c06c69 133 value: PVE.qemu.OSDefaults.generic.networkCard,
f6710aac 134 allowBlank: false,
8487aa12
DM
135 },
136 {
137 xtype: 'textfield',
138 name: 'macaddr',
139 fieldLabel: gettext('MAC address'),
140 vtype: 'MacAddress',
141 allowBlank: true,
f6710aac 142 emptyText: 'auto',
57f034f6
DC
143 });
144 me.advancedColumn2 = [
8487aa12
DM
145 {
146 xtype: 'numberfield',
147 name: 'rate',
148 fieldLabel: gettext('Rate limit') + ' (MB/s)',
149 minValue: 0,
150 maxValue: 10*1024,
151 value: '',
152 emptyText: 'unlimited',
f6710aac 153 allowBlank: true,
8487aa12
DM
154 },
155 {
bf96f60d 156 xtype: 'proxmoxintegerfield',
8487aa12 157 name: 'queues',
a1af3e38 158 fieldLabel: 'Multiqueue',
8487aa12
DM
159 minValue: 1,
160 maxValue: 8,
161 value: '',
f6710aac
TL
162 allowBlank: true,
163 },
8487aa12
DM
164 ];
165
166 me.callParent();
f6710aac 167 },
8487aa12
DM
168});
169
170Ext.define('PVE.qemu.NetworkEdit', {
9fccc702 171 extend: 'Proxmox.window.Edit',
8487aa12
DM
172
173 isAdd: true,
174
175 initComponent : function() {
8487aa12
DM
176
177 var me = this;
178
179 var nodename = me.pveSelNode.data.node;
2a4971d8
TL
180 if (!nodename) {
181 throw "no node name specified";
8487aa12
DM
182 }
183
d5e771ce 184 me.isCreate = me.confid ? false : true;
8487aa12
DM
185
186 var ipanel = Ext.create('PVE.qemu.NetworkInputPanel', {
187 confid: me.confid,
b2991833 188 nodename: nodename,
f6710aac 189 isCreate: me.isCreate,
8487aa12
DM
190 });
191
192 Ext.applyIf(me, {
193 subject: gettext('Network Device'),
f6710aac 194 items: ipanel,
8487aa12
DM
195 });
196
197 me.callParent();
198
199 me.load({
200 success: function(response, options) {
201 var i, confid;
202 me.vmconfig = response.result.data;
d5e771ce 203 if (!me.isCreate) {
8487aa12
DM
204 var value = me.vmconfig[me.confid];
205 var network = PVE.Parser.parseQemuNetwork(me.confid, value);
206 if (!network) {
185a77e5 207 Ext.Msg.alert(gettext('Error'), 'Unable to parse network options');
8487aa12
DM
208 me.close();
209 return;
210 }
211 ipanel.setNetwork(me.confid, network);
212 } else {
213 for (i = 0; i < 100; i++) {
214 confid = 'net' + i.toString();
215 if (!Ext.isDefined(me.vmconfig[confid])) {
216 me.confid = confid;
217 break;
218 }
219 }
410198ac
DJ
220
221 let ostype = me.vmconfig.ostype;
222 let defaults = PVE.qemu.OSDefaults.getDefaults(ostype);
223 let data = {
224 model: defaults.networkCard,
225 };
226
227 ipanel.setNetwork(me.confid, data);
8487aa12 228 }
f6710aac 229 },
8487aa12 230 });
f6710aac 231 },
8487aa12 232});