]> git.proxmox.com Git - pve-manager.git/blobdiff - www/manager6/qemu/NetworkEdit.js
api: add proxmox-firewall to versions pkg list
[pve-manager.git] / www / manager6 / qemu / NetworkEdit.js
index dd950d2bb461009bb421c10443adc612469e718a..4917eba5f75ff9292ac88f895f2319c57239c4bc 100644 (file)
@@ -19,6 +19,7 @@ Ext.define('PVE.qemu.NetworkInputPanel', {
        me.network.macaddr = values.macaddr;
        me.network.disconnect = values.disconnect;
        me.network.queues = values.queues;
+       me.network.mtu = values.mtu;
 
        if (values.rate) {
            me.network.rate = values.rate;
@@ -33,6 +34,17 @@ Ext.define('PVE.qemu.NetworkInputPanel', {
        return params;
     },
 
+    viewModel: {
+       data: {
+           networkModel: undefined,
+           mtu: '',
+       },
+       formulas: {
+           isVirtio: get => get('networkModel') === 'virtio',
+           showMtuHint: get => get('mtu') === 1,
+       },
+    },
+
     setNetwork: function(confid, data) {
        var me = this;
 
@@ -45,7 +57,7 @@ Ext.define('PVE.qemu.NetworkInputPanel', {
            data.networkmode = 'bridge';
        }
        me.network = data;
-       
+
        me.setValues(me.network);
     },
 
@@ -55,7 +67,7 @@ Ext.define('PVE.qemu.NetworkInputPanel', {
        me.bridgesel.setNodename(nodename);
     },
 
-    initComponent : function() {
+    initComponent: function() {
        var me = this;
 
        me.network = {};
@@ -69,7 +81,7 @@ Ext.define('PVE.qemu.NetworkInputPanel', {
            fieldLabel: gettext('Bridge'),
            nodename: me.nodename,
            autoSelect: true,
-           allowBlank: false
+           allowBlank: false,
        });
 
        me.column1 = [
@@ -77,21 +89,38 @@ Ext.define('PVE.qemu.NetworkInputPanel', {
            {
                xtype: 'pveVlanField',
                name: 'tag',
-               value: ''
+               value: '',
            },
            {
                xtype: 'proxmoxcheckbox',
                fieldLabel: gettext('Firewall'),
-               name: 'firewall'
-           }
+               name: 'firewall',
+               checked: me.insideWizard || me.isCreate,
+           },
        ];
 
        me.advancedColumn1 = [
            {
                xtype: 'proxmoxcheckbox',
                fieldLabel: gettext('Disconnect'),
-               name: 'disconnect'
-           }
+               name: 'disconnect',
+           },
+           {
+               xtype: 'proxmoxintegerfield',
+               name: 'mtu',
+               fieldLabel: 'MTU',
+               bind: {
+                   disabled: '{!isVirtio}',
+                   value: '{mtu}',
+               },
+               emptyText: '1500 (1 = bridge MTU)',
+               minValue: 1,
+               maxValue: 65520,
+               allowBlank: true,
+               validator: val => val === '' || val >= 576 || val === '1'
+                   ? true
+                   : gettext('MTU needs to be >= 576 or 1 to inherit the MTU from the underlying bridge.'),
+           },
        ];
 
        if (me.insideWizard) {
@@ -110,17 +139,18 @@ Ext.define('PVE.qemu.NetworkInputPanel', {
                            'model',
                            'macaddr',
                            'rate',
-                           'queues'
+                           'queues',
+                           'mtu',
                        ];
                        fields.forEach(function(fieldname) {
                            me.down('field[name='+fieldname+']').setDisabled(value);
                        });
                        me.down('field[name=bridge]').validate();
-                   }
-               }
+                   },
+               },
            });
            me.column2.unshift({
-               xtype: 'displayfield'
+               xtype: 'displayfield',
            });
        }
 
@@ -129,8 +159,9 @@ Ext.define('PVE.qemu.NetworkInputPanel', {
                xtype: 'pveNetworkCardSelector',
                name: 'model',
                fieldLabel: gettext('Model'),
+               bind: '{networkModel}',
                value: PVE.qemu.OSDefaults.generic.networkCard,
-               allowBlank: false
+               allowBlank: false,
            },
            {
                xtype: 'textfield',
@@ -138,7 +169,7 @@ Ext.define('PVE.qemu.NetworkInputPanel', {
                fieldLabel: gettext('MAC address'),
                vtype: 'MacAddress',
                allowBlank: true,
-               emptyText: 'auto'
+               emptyText: 'auto',
            });
        me.advancedColumn2 = [
            {
@@ -149,21 +180,31 @@ Ext.define('PVE.qemu.NetworkInputPanel', {
                maxValue: 10*1024,
                value: '',
                emptyText: 'unlimited',
-               allowBlank: true
+               allowBlank: true,
            },
            {
                xtype: 'proxmoxintegerfield',
                name: 'queues',
                fieldLabel: 'Multiqueue',
                minValue: 1,
-               maxValue: 8,
+               maxValue: 64,
                value: '',
-               allowBlank: true
-           }
+               allowBlank: true,
+           },
+       ];
+       me.advancedColumnB = [
+           {
+               xtype: 'displayfield',
+               userCls: 'pmx-hint',
+               value: gettext("Use the special value '1' to inherit the MTU value from the underlying bridge"),
+               bind: {
+                   hidden: '{!showMtuHint}',
+               },
+           },
        ];
 
        me.callParent();
-    }
+    },
 });
 
 Ext.define('PVE.qemu.NetworkEdit', {
@@ -171,26 +212,25 @@ Ext.define('PVE.qemu.NetworkEdit', {
 
     isAdd: true,
 
-    initComponent : function() {
-       /*jslint confusion: true */
-
+    initComponent: function() {
        var me = this;
 
        var nodename = me.pveSelNode.data.node;
-       if (!nodename) { 
-           throw "no node name specified";         
+       if (!nodename) {
+           throw "no node name specified";
        }
 
-       me.isCreate = me.confid ? false : true;
+       me.isCreate = !me.confid;
 
        var ipanel = Ext.create('PVE.qemu.NetworkInputPanel', {
            confid: me.confid,
-           nodename: nodename
+           nodename: nodename,
+           isCreate: me.isCreate,
        });
 
        Ext.applyIf(me, {
            subject: gettext('Network Device'),
-           items: ipanel
+           items: ipanel,
        });
 
        me.callParent();
@@ -216,9 +256,16 @@ Ext.define('PVE.qemu.NetworkEdit', {
                            break;
                        }
                    }
-                   ipanel.setNetwork(me.confid);                   
+
+                   let ostype = me.vmconfig.ostype;
+                   let defaults = PVE.qemu.OSDefaults.getDefaults(ostype);
+                   let data = {
+                       model: defaults.networkCard,
+                   };
+
+                   ipanel.setNetwork(me.confid, data);
                }
-           }
+           },
        });
-    }
+    },
 });