]> git.proxmox.com Git - pve-manager.git/blobdiff - www/manager6/lxc/Options.js
ui: lxc: resources: consider rootfs as a disk again
[pve-manager.git] / www / manager6 / lxc / Options.js
index 40bde35f1fa81a5394038c2a869420af981ac822..d0a53fc7168cd194fa06f2fd6551a46b822c0746 100644 (file)
@@ -4,9 +4,8 @@ Ext.define('PVE.lxc.Options', {
 
     onlineHelp: 'pct_options',
 
-    initComponent : function() {
+    initComponent: function() {
        var me = this;
-       var i;
 
        var nodename = me.pveSelNode.data.node;
        if (!nodename) {
@@ -33,27 +32,27 @@ Ext.define('PVE.lxc.Options', {
                        name: 'onboot',
                        uncheckedValue: 0,
                        defaultValue: 0,
-                       fieldLabel: gettext('Start at boot')
-                   }
-               } : undefined
+                       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'] ? 
-                   {
+               editor: caps.vms['VM.Config.Options'] && caps.nodes['Sys.Modify']
+                   {
                        xtype: 'pveWindowStartupEdit',
-                       onlineHelp: 'pct_startup_and_shutdown'
-                   } : undefined
+                       onlineHelp: 'pct_startup_and_shutdown',
+                   } : undefined,
            },
            ostype: {
                header: gettext('OS Type'),
-               defaultValue: Proxmox.Utils.unknownText
+               defaultValue: Proxmox.Utils.unknownText,
            },
            arch: {
                header: gettext('Architecture'),
-               defaultValue: Proxmox.Utils.unknownText
+               defaultValue: Proxmox.Utils.unknownText,
            },
            console: {
                header: '/dev/console',
@@ -69,9 +68,9 @@ Ext.define('PVE.lxc.Options', {
                        defaultValue: 1,
                        deleteDefaultValue: true,
                        checked: true,
-                       fieldLabel: '/dev/console'
-                   }
-               } : undefined
+                       fieldLabel: '/dev/console',
+                   },
+               } : undefined,
            },
            tty: {
                header: gettext('TTY count'),
@@ -87,9 +86,9 @@ Ext.define('PVE.lxc.Options', {
                        value: 2,
                        fieldLabel: gettext('TTY count'),
                        emptyText: gettext('Default'),
-                       deleteEmpty: true
-                   }
-               } : undefined
+                       deleteEmpty: true,
+                   },
+               } : undefined,
            },
            cmode: {
                header: gettext('Console mode'),
@@ -106,11 +105,11 @@ Ext.define('PVE.lxc.Options', {
                            ['__default__', Proxmox.Utils.defaultText + " (tty)"],
                            ['tty', "/dev/tty[X]"],
                            ['console', "/dev/console"],
-                           ['shell', "shell"]
+                           ['shell', "shell"],
                        ],
-                       fieldLabel: gettext('Console mode')
-                   }
-               } : undefined
+                       fieldLabel: gettext('Console mode'),
+                   },
+               } : undefined,
            },
            protection: {
                header: gettext('Protection'),
@@ -125,24 +124,23 @@ Ext.define('PVE.lxc.Options', {
                        uncheckedValue: 0,
                        defaultValue: 0,
                        deleteDefaultValue: true,
-                       fieldLabel: gettext('Enabled')
-                   }
-               } : undefined
+                       fieldLabel: gettext('Enabled'),
+                   },
+               } : undefined,
            },
            unprivileged: {
                header: gettext('Unprivileged container'),
                renderer: Proxmox.Utils.format_boolean,
-               defaultValue: 0
+               defaultValue: 0,
            },
            features: {
                header: gettext('Features'),
                defaultValue: Proxmox.Utils.noneText,
-               editor: Proxmox.UserName === 'root@pam' ?
-                   'PVE.lxc.FeaturesEdit' : undefined
+               editor: 'PVE.lxc.FeaturesEdit',
            },
            hookscript: {
-               header: gettext('Hookscript')
-           }
+               header: gettext('Hookscript'),
+           },
        };
 
        var baseurl = 'nodes/' + nodename + '/lxc/' + vmid + '/config';
@@ -157,14 +155,14 @@ Ext.define('PVE.lxc.Options', {
                var rowdef = rows[rec.data.key];
                return !!rowdef.editor;
            },
-           handler: function() { me.run_editor(); }
+           handler: function() { me.run_editor(); },
        });
 
        var revert_btn = new PVE.button.PendingRevert();
 
        var set_button_status = function() {
-           var sm = me.getSelectionModel();
-           var rec = sm.getSelection()[0];
+           let button_sm = me.getSelectionModel();
+           let rec = button_sm.getSelection()[0];
 
            if (!rec) {
                edit_btn.disable();
@@ -172,10 +170,18 @@ Ext.define('PVE.lxc.Options', {
            }
 
            var key = rec.data.key;
-           var pending = rec.data['delete'] || me.hasPendingChanges(key);
+           var pending = rec.data.delete || me.hasPendingChanges(key);
            var rowdef = rows[key];
 
-           edit_btn.setDisabled(!rowdef.editor);
+           if (key === 'features') {
+               let unprivileged = me.getStore().getById('unprivileged').data.value;
+               let root = Proxmox.UserName === 'root@pam';
+               let vmalloc = caps.vms['VM.Allocate'];
+               edit_btn.setDisabled(!(root || (vmalloc && unprivileged)));
+           } else {
+               edit_btn.setDisabled(!rowdef.editor);
+           }
+
            revert_btn.setDisabled(!pending);
        };
 
@@ -184,15 +190,15 @@ Ext.define('PVE.lxc.Options', {
            url: "/api2/json/nodes/" + nodename + "/lxc/" + vmid + "/pending",
            selModel: sm,
            interval: 5000,
-           tbar: [ edit_btn, revert_btn ],
+           tbar: [edit_btn, revert_btn],
            rows: rows,
            editorConfig: {
-               url: '/api2/extjs/' + baseurl
+               url: '/api2/extjs/' + baseurl,
            },
            listeners: {
                itemdblclick: me.run_editor,
-               selectionchange: set_button_status
-           }
+               selectionchange: set_button_status,
+           },
        });
 
        me.callParent();
@@ -204,7 +210,6 @@ Ext.define('PVE.lxc.Options', {
        me.mon(me.getStore(), 'datachanged', function() {
            set_button_status();
        });
-
-    }
+    },
 });