From d6cae26a4b054d4352f7a7bde72cb16f14a4f5aa Mon Sep 17 00:00:00 2001 From: Dietmar Maurer Date: Thu, 3 Mar 2016 10:51:31 +0100 Subject: [PATCH] copy lxc/Options.js from manager to manager6 --- www/manager6/lxc/Options.js | 207 ++++++++++++++++++++++++++++++++++++ 1 file changed, 207 insertions(+) create mode 100644 www/manager6/lxc/Options.js diff --git a/www/manager6/lxc/Options.js b/www/manager6/lxc/Options.js new file mode 100644 index 00000000..fffd8e78 --- /dev/null +++ b/www/manager6/lxc/Options.js @@ -0,0 +1,207 @@ +/*jslint confusion: true */ +Ext.define('PVE.lxc.Options', { + extend: 'PVE.grid.ObjectGrid', + alias: ['widget.pveLxcOptions'], + + initComponent : function() { + var me = this; + var i; + + var nodename = me.pveSelNode.data.node; + if (!nodename) { + throw "no node name specified"; + } + + var vmid = me.pveSelNode.data.vmid; + if (!vmid) { + throw "no VM ID specified"; + } + + var caps = Ext.state.Manager.get('GuiCap'); + + var rows = { + onboot: { + header: gettext('Start at boot'), + defaultValue: '', + renderer: PVE.Utils.format_boolean, + editor: caps.vms['VM.Config.Options'] ? { + xtype: 'pveWindowEdit', + subject: gettext('Start at boot'), + items: { + xtype: 'pvecheckbox', + name: 'onboot', + uncheckedValue: 0, + defaultValue: 0, + fieldLabel: gettext('Start at boot') + } + } : undefined + }, + startup: { + header: gettext('Start/Shutdown order'), + defaultValue: '', + renderer: PVE.Utils.render_kvm_startup, + editor: caps.vms['VM.Config.Options'] && caps.nodes['Sys.Modify'] ? + 'PVE.qemu.StartupEdit' : undefined + }, + ostype: { + header: gettext('OS Type'), + defaultValue: PVE.Utils.unknownText + }, + arch: { + header: gettext('Architecture'), + defaultValue: PVE.Utils.unknownText + }, + console: { + header: gettext('Enable /dev/console'), + defaultValue: 1, + renderer: PVE.Utils.format_boolean, + editor: caps.vms['VM.Config.Options'] ? { + xtype: 'pveWindowEdit', + subject: gettext('Enable /dev/console'), + items: { + xtype: 'pvecheckbox', + name: 'console', + uncheckedValue: 0, + defaultValue: 1, + deleteDefaultValue: true, + checked: true, + fieldLabel: gettext('Enable /dev/console') + } + } : undefined + }, + tty: { + header: gettext('TTY count'), + defaultValue: 2, + editor: caps.vms['VM.Config.Options'] ? { + xtype: 'pveWindowEdit', + subject: gettext('TTY count'), + items: { + xtype: 'numberfield', + name: 'tty', + decimalPrecision: 0, + minValue: 0, + maxValue: 6, + value: 2, + fieldLabel: gettext('TTY count'), + allowEmpty: gettext('Default'), + getSubmitData: function() { + var me = this; + var val = me.getSubmitValue(); + if (val !== null && val !== '' && val !== '2') { + return { tty: val }; + } else { + return { 'delete' : 'tty' }; + } + } + + } + } : undefined + }, + cmode: { + header: gettext('Console mode'), + defaultValue: 'tty', + editor: caps.vms['VM.Config.Options'] ? { + xtype: 'pveWindowEdit', + subject: gettext('Console mode'), + items: { + xtype: 'pveKVComboBox', + name: 'cmode', + deleteEmpty: true, + value: '', + data: [ + ['', PVE.Utils.defaultText + " (tty)"], + ['tty', "/dev/tty[X]"], + ['console', "/dev/console"], + ['shell', "shell"] + ], + fieldLabel: gettext('Console mode') + } + } : undefined + }, + protection: { + header: gettext('CT protection'), + defaultValue: false, + renderer: PVE.Utils.format_boolean, + editor: caps.vms['VM.Config.Options'] ? { + xtype: 'pveWindowEdit', + subject: gettext('CT protection'), + items: { + xtype: 'pvecheckbox', + name: 'protection', + uncheckedValue: 0, + defaultValue: 0, + deleteDefaultValue: true, + fieldLabel: gettext('Enabled') + } + } : undefined + } + }; + + var baseurl = 'nodes/' + nodename + '/lxc/' + vmid + '/config'; + + var reload = function() { + me.rstore.load(); + }; + + var sm = Ext.create('Ext.selection.RowModel', {}); + + var run_editor = function() { + var rec = sm.getSelection()[0]; + if (!rec) { + return; + } + + var rowdef = rows[rec.data.key]; + if (!rowdef.editor) { + return; + } + + var win; + if (Ext.isString(rowdef.editor)) { + win = Ext.create(rowdef.editor, { + pveSelNode: me.pveSelNode, + confid: rec.data.key, + url: '/api2/extjs/' + baseurl + }); + } else { + var config = Ext.apply({ + pveSelNode: me.pveSelNode, + confid: rec.data.key, + url: '/api2/extjs/' + baseurl + }, rowdef.editor); + win = Ext.createWidget(rowdef.editor.xtype, config); + win.load(); + } + + win.show(); + win.on('destroy', reload); + }; + + var edit_btn = new PVE.button.Button({ + text: gettext('Edit'), + disabled: true, + selModel: sm, + enableFn: function(rec) { + var rowdef = rows[rec.data.key]; + return !!rowdef.editor; + }, + handler: run_editor + }); + + Ext.applyIf(me, { + url: "/api2/json/nodes/" + nodename + "/lxc/" + vmid + "/config", + selModel: sm, + cwidth1: 150, + tbar: [ edit_btn ], + rows: rows, + listeners: { + itemdblclick: run_editor + } + }); + + me.callParent(); + + me.on('show', reload); + } +}); +