[pve-devel] applied: [PATCH manager] ui: vm: allow to add socket backed serial devices
Wolfgang Bumiller
w.bumiller at proxmox.com
Thu May 17 10:18:56 CEST 2018
applied
On Wed, May 16, 2018 at 03:30:59PM +0200, Thomas Lamprecht wrote:
> We show and can remove serial devices but couldn't add new ones
> through the WebUI.
> Add a simple component to allow adding serial ports backed by a
> socket, which can be especially useful now with xterm.js
>
> Passing through serial devices from /dev isn't possible with this, as
> it is normally a root only operation and not that often used.
>
> Signed-off-by: Thomas Lamprecht <t.lamprecht at proxmox.com>
> ---
> www/manager6/Makefile | 1 +
> www/manager6/qemu/HardwareView.js | 13 +++++++
> www/manager6/qemu/SerialEdit.js | 81 +++++++++++++++++++++++++++++++++++++++
> 3 files changed, 95 insertions(+)
> create mode 100644 www/manager6/qemu/SerialEdit.js
>
> diff --git a/www/manager6/Makefile b/www/manager6/Makefile
> index 7e9877b2..a2bd4576 100644
> --- a/www/manager6/Makefile
> +++ b/www/manager6/Makefile
> @@ -129,6 +129,7 @@ JSSRC= \
> qemu/Config.js \
> qemu/CreateWizard.js \
> qemu/USBEdit.js \
> + qemu/SerialEdit.js \
> qemu/AgentIPView.js \
> qemu/CloudInit.js \
> qemu/CIDriveEdit.js \
> diff --git a/www/manager6/qemu/HardwareView.js b/www/manager6/qemu/HardwareView.js
> index 17e755a8..a87a9df1 100644
> --- a/www/manager6/qemu/HardwareView.js
> +++ b/www/manager6/qemu/HardwareView.js
> @@ -570,6 +570,19 @@ Ext.define('PVE.qemu.HardwareView', {
> win.show();
> }
> },
> + {
> + text: gettext('Serial Port'),
> + itemId: 'addserial',
> + iconCls: 'pve-itype-icon-serial',
> + disabled: !caps.vms['VM.Config.Options'],
> + handler: function() {
> + var win = Ext.create('PVE.qemu.SerialEdit', {
> + url: '/api2/extjs/' + baseurl
> + });
> + win.on('destroy', reload);
> + win.show();
> + }
> + },
> {
> text: gettext('CloudInit Drive'),
> itemId: 'addci',
> diff --git a/www/manager6/qemu/SerialEdit.js b/www/manager6/qemu/SerialEdit.js
> new file mode 100644
> index 00000000..794c7fa2
> --- /dev/null
> +++ b/www/manager6/qemu/SerialEdit.js
> @@ -0,0 +1,81 @@
> +/*jslint confusion: true */
> +Ext.define('PVE.qemu.SerialnputPanel', {
> + extend: 'Proxmox.panel.InputPanel',
> +
> + autoComplete: false,
> +
> + setVMConfig: function(vmconfig) {
> + var me = this, i;
> + me.vmconfig = vmconfig;
> +
> + for (i = 0; i < 4; i++) {
> + var port = 'serial' + i.toString();
> + if (!me.vmconfig[port]) {
> + me.down('field[name=serialid]').setValue(i);
> + break;
> + }
> + }
> +
> + },
> +
> + onGetValues: function(values) {
> + var me = this;
> +
> + var id = 'serial' + values.serialid;
> + delete values.serialid;
> + values[id] = 'socket';
> + return values;
> + },
> +
> + items: [
> + {
> + xtype: 'proxmoxintegerfield',
> + name: 'serialid',
> + fieldLabel: gettext('Serial Port'),
> + minValue: 0,
> + maxValue: 3,
> + allowBlank: false,
> + validator: function(id) {
> + if (!this.rendered) {
> + return true;
> + }
> + var me = this.up('panel');
> + if (me.vmconfig !== undefined && Ext.isDefined(me.vmconfig['serial' + id])) {
> + return "This device is already in use.";
> + }
> + return true;
> + }
> + }
> + ]
> +});
> +
> +Ext.define('PVE.qemu.SerialEdit', {
> + extend: 'Proxmox.window.Edit',
> +
> + vmconfig: undefined,
> +
> + isAdd: true,
> +
> + subject: gettext('Serial Port'),
> +
> + initComponent : function() {
> + var me = this;
> +
> + // for now create of (socket) serial port only
> + me.isCreate = true;
> +
> + var ipanel = Ext.create('PVE.qemu.SerialnputPanel', {});
> +
> + Ext.apply(me, {
> + items: [ ipanel ]
> + });
> +
> + me.callParent();
> +
> + me.load({
> + success: function(response, options) {
> + ipanel.setVMConfig(response.result.data);
> + }
> + });
> + }
> +});
> --
> 2.14.2
More information about the pve-devel
mailing list