[pve-devel] [PATCH manager v3 6/6] gui: let users add PCI devices

Dominik Csapak d.csapak at proxmox.com
Thu Nov 22 11:35:46 CET 2018


this enables the gui part to enable the user to add a pci device
via the gui

we disable the button after 4 devices, since that is the maximum
in the backend

Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
---
changes from v2:
* correct noSysConsolePerm check
 www/manager6/qemu/HardwareView.js | 25 ++++++++++++++++++++++---
 1 file changed, 22 insertions(+), 3 deletions(-)

diff --git a/www/manager6/qemu/HardwareView.js b/www/manager6/qemu/HardwareView.js
index fdfe80f1..ca825798 100644
--- a/www/manager6/qemu/HardwareView.js
+++ b/www/manager6/qemu/HardwareView.js
@@ -219,6 +219,7 @@ Ext.define('PVE.qemu.HardwareView', {
 		order: i,
 		tdCls: 'pve-itype-icon-pci',
 		never_delete: caps.nodes['Sys.Console'] ? false : true,
+		editor: caps.nodes['Sys.Console'] ? 'PVE.qemu.PCIEdit' : undefined,
 		header: gettext('PCI Device') + ' (' + confid + ')'
 	    };
 	}
@@ -501,11 +502,14 @@ Ext.define('PVE.qemu.HardwareView', {
 	    // see that there is already one
 	    efidisk_menuitem.setDisabled(me.rstore.getData().map.efidisk0 !== undefined);
 	    // en/disable usb add button
-	    var count = 0;
+	    var usbcount = 0;
+	    var pcicount = 0;
 	    var hasCloudInit = false;
 	    me.rstore.getData().items.forEach(function(item){
 		if (/^usb\d+/.test(item.id)) {
-		    count++;
+		    usbcount++;
+		} else if (/^hostpci\d+/.test(item.id)) {
+		    pcicount++;
 		}
 		if (!hasCloudInit && /vm-.*-cloudinit/.test(item.data.value)) {
 		    hasCloudInit = true;
@@ -515,7 +519,8 @@ Ext.define('PVE.qemu.HardwareView', {
 	    // heuristic only for disabling some stuff, the backend has the final word.
 	    var noSysConsolePerm = !caps.nodes['Sys.Console'];
 
-	    me.down('#addusb').setDisabled(noSysConsolePerm || (count >= 5));
+	    me.down('#addusb').setDisabled(noSysConsolePerm || (usbcount >= 5));
+	    me.down('#addpci').setDisabled(noSysConsolePerm || (pcicount >= 4));
 	    me.down('#addci').setDisabled(noSysConsolePerm || hasCloudInit);
 
 	    if (!rec) {
@@ -619,6 +624,20 @@ Ext.define('PVE.qemu.HardwareView', {
 				}
 			    },
 			    {
+				text: gettext('PCI Device'),
+				itemId: 'addpci',
+				iconCls: 'pve-itype-icon-pci',
+				disabled: !caps.nodes['Sys.Console'],
+				handler: function() {
+				    var win = Ext.create('PVE.qemu.PCIEdit', {
+					url: '/api2/extjs/' + baseurl,
+					pveSelNode: me.pveSelNode
+				    });
+				    win.on('destroy', reload);
+				    win.show();
+				}
+			    },
+			    {
 				text: gettext('Serial Port'),
 				itemId: 'addserial',
 				iconCls: 'pve-itype-icon-serial',
-- 
2.11.0





More information about the pve-devel mailing list