]> git.proxmox.com Git - pve-manager.git/commitdiff
copy qemu/NetworkEdit.js from manager to manager6
authorDietmar Maurer <dietmar@proxmox.com>
Wed, 16 Mar 2016 08:12:22 +0000 (09:12 +0100)
committerDietmar Maurer <dietmar@proxmox.com>
Wed, 16 Mar 2016 08:12:22 +0000 (09:12 +0100)
www/manager6/qemu/NetworkEdit.js [new file with mode: 0644]

diff --git a/www/manager6/qemu/NetworkEdit.js b/www/manager6/qemu/NetworkEdit.js
new file mode 100644 (file)
index 0000000..033e7d2
--- /dev/null
@@ -0,0 +1,228 @@
+Ext.define('PVE.qemu.NetworkInputPanel', {
+    extend: 'PVE.panel.InputPanel',
+    alias: 'widget.PVE.qemu.NetworkInputPanel',
+
+    insideWizard: false,
+
+    onGetValues: function(values) {
+       var me = this;
+
+       me.network.model = values.model;
+       if (values.networkmode === 'none') {
+           return {};
+       } else if (values.networkmode === 'bridge') {
+           me.network.bridge = values.bridge;
+           me.network.tag = values.tag;
+           me.network.firewall = values.firewall;
+       } else {
+           me.network.bridge = undefined;
+       }
+       me.network.macaddr = values.macaddr;
+       me.network.disconnect = values.disconnect;
+       me.network.queues = values.queues;
+
+       if (values.rate) {
+           me.network.rate = values.rate;
+       } else {
+           delete me.network.rate;
+       }
+
+       var params = {};
+
+       params[me.confid] = PVE.Parser.printQemuNetwork(me.network);
+
+       return params;
+    },
+
+    setNetwork: function(confid, data) {
+       var me = this;
+
+       me.confid = confid;
+
+       if (data) {
+           data.networkmode = data.bridge ? 'bridge' : 'nat';
+       } else {
+           data = {};
+           data.networkmode = 'bridge';
+       }
+       me.network = data;
+       
+       me.setValues(me.network);
+    },
+
+    setNodename: function(nodename) {
+       var me = this;
+
+       me.bridgesel.setNodename(nodename);
+    },
+
+    initComponent : function() {
+       var me = this;
+
+       me.network = {};
+       me.confid = 'net0';
+
+       me.bridgesel = Ext.create('PVE.form.BridgeSelector', {
+           name: 'bridge',
+           fieldLabel: gettext('Bridge'),
+           nodename: me.nodename,
+           labelAlign: 'right',
+           autoSelect: true,
+           allowBlank: false
+       });
+
+       me.column1 = [
+           {
+               xtype: 'radiofield',
+               name: 'networkmode',
+               height: 22, // hack: set same height as text fields
+               inputValue: 'bridge',
+               boxLabel: gettext('Bridged mode'),
+               checked: true,
+               listeners: {
+                   change: function(f, value) {
+                       if (!me.rendered) {
+                           return;
+                       }
+                       me.down('field[name=bridge]').setDisabled(!value);
+                       me.down('field[name=bridge]').validate();
+                       me.down('field[name=tag]').setDisabled(!value);
+                       me.down('field[name=firewall]').setDisabled(!value);
+                   }
+               }
+           },
+           me.bridgesel,
+           {
+               xtype: 'pveVlanField',
+               name: 'tag',
+               value: '',
+               labelAlign: 'right'
+           },
+           me.bridgesel,
+           {
+               xtype: 'pvecheckbox',
+               fieldLabel: gettext('Firewall'),
+               name: 'firewall',
+               labelAlign: 'right'
+           },
+           {
+               xtype: 'radiofield',
+               name: 'networkmode',
+               height: 22, // hack: set same height as text fields
+               inputValue: 'nat',
+               boxLabel: gettext('NAT mode')
+           }
+       ];
+
+       if (me.insideWizard) {
+           me.column1.push({
+               xtype: 'radiofield',
+               name: 'networkmode',
+               height: 22, // hack: set same height as text fields
+               inputValue: 'none',
+               boxLabel: gettext('No network device')
+           });
+       }
+
+       me.column2 = [
+           {
+               xtype: 'PVE.form.NetworkCardSelector',
+               name: 'model',
+               fieldLabel: gettext('Model'),
+               value: 'e1000',
+               allowBlank: false
+           },
+           {
+               xtype: 'textfield',
+               name: 'macaddr',
+               fieldLabel: gettext('MAC address'),
+               vtype: 'MacAddress',
+               allowBlank: true,
+               emptyText: 'auto'
+           },
+           {
+               xtype: 'numberfield',
+               name: 'rate',
+               fieldLabel: gettext('Rate limit') + ' (MB/s)',
+               minValue: 0,
+               maxValue: 10*1024,
+               value: '',
+               emptyText: 'unlimited',
+               allowBlank: true
+           },
+           {
+               xtype: 'numberfield',
+               name: 'queues',
+               fieldLabel: gettext('Multiqueues'),
+               minValue: 1,
+               maxValue: 8,
+               value: '',
+               allowBlank: true
+           },
+           {
+               xtype: 'pvecheckbox',
+               fieldLabel: gettext('Disconnect'),
+               name: 'disconnect'
+           }
+       ];
+
+       me.callParent();
+    }
+});
+
+Ext.define('PVE.qemu.NetworkEdit', {
+    extend: 'PVE.window.Edit',
+
+    isAdd: true,
+
+    initComponent : function() {
+       /*jslint confusion: true */
+
+       var me = this;
+
+       var nodename = me.pveSelNode.data.node;
+       if (!nodename) { 
+           throw "no node name specified";         
+       }
+
+       me.create = me.confid ? false : true;
+
+       var ipanel = Ext.create('PVE.qemu.NetworkInputPanel', {
+           confid: me.confid,
+           nodename: nodename
+       });
+
+       Ext.applyIf(me, {
+           subject: gettext('Network Device'),
+           items: ipanel
+       });
+
+       me.callParent();
+
+       me.load({
+           success: function(response, options) {
+               var i, confid;
+               me.vmconfig = response.result.data;
+               if (!me.create) {
+                   var value = me.vmconfig[me.confid];
+                   var network = PVE.Parser.parseQemuNetwork(me.confid, value);
+                   if (!network) {
+                       Ext.Msg.alert(gettext('Error'), gettext('Unable to parse network options'));
+                       me.close();
+                       return;
+                   }
+                   ipanel.setNetwork(me.confid, network);
+               } else {
+                   for (i = 0; i < 100; i++) {
+                       confid = 'net' + i.toString();
+                       if (!Ext.isDefined(me.vmconfig[confid])) {
+                           me.confid = confid;
+                           break;
+                       }
+                   }
+                   ipanel.setNetwork(me.confid);                   
+               }
+           }
+       });
+    }
+});