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.lampre...@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

_______________________________________________
pve-devel mailing list
pve-devel@pve.proxmox.com
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to