]> git.proxmox.com Git - pve-manager.git/blobdiff - www/manager6/lxc/Config.js
ui: eslint: fix various spacing related issues
[pve-manager.git] / www / manager6 / lxc / Config.js
index 51864f1aea1ea1c6e56c152665d8d96cd28ad67c..1becc687af01b9a726b6a75e0485079a202f593e 100644 (file)
@@ -6,20 +6,21 @@ Ext.define('PVE.lxc.Config', {
 
     initComponent: function() {
         var me = this;
+       var vm = me.pveSelNode.data;
 
-       var nodename = me.pveSelNode.data.node;
+       var nodename = vm.node;
        if (!nodename) {
            throw "no node name specified";
        }
 
-       var vmid = me.pveSelNode.data.vmid;
+       var vmid = vm.vmid;
        if (!vmid) {
            throw "no VM ID specified";
        }
 
-       var template = !!me.pveSelNode.data.template;
+       var template = !!vm.template;
 
-       var running = !!me.pveSelNode.data.uptime;
+       var running = !!vm.uptime;
 
        var caps = Ext.state.Manager.get('GuiCap');
 
@@ -27,7 +28,7 @@ Ext.define('PVE.lxc.Config', {
 
        me.statusStore = Ext.create('Proxmox.data.ObjectStore', {
            url: '/api2/json' + base_url + '/status/current',
-           interval: 1000
+           interval: 1000,
        });
 
        var vm_command = function(cmd, params) {
@@ -38,7 +39,7 @@ Ext.define('PVE.lxc.Config', {
                method: 'POST',
                failure: function(response, opts) {
                    Ext.Msg.alert('Error', response.htmlStatus);
-               }
+               },
            });
        };
 
@@ -49,18 +50,7 @@ Ext.define('PVE.lxc.Config', {
            handler: function() {
                vm_command('start');
            },
-           iconCls: 'fa fa-play'
-       });
-
-       var stopBtn = Ext.create('Ext.menu.Item',{
-           text: gettext('Stop'),
-           disabled: !caps.vms['VM.PowerMgmt'],
-           confirmMsg: Proxmox.Utils.format_task_description('vzstop', vmid),
-           dangerous: true,
-           handler: function() {
-               vm_command("stop");
-           },
-           iconCls: 'fa fa-stop'
+           iconCls: 'fa fa-play',
        });
 
        var shutdownBtn = Ext.create('PVE.button.Split', {
@@ -72,9 +62,29 @@ Ext.define('PVE.lxc.Config', {
                vm_command('shutdown');
            },
            menu: {
-               items:[stopBtn]
+               items: [{
+                   text: gettext('Reboot'),
+                   disabled: !caps.vms['VM.PowerMgmt'],
+                   confirmMsg: Proxmox.Utils.format_task_description('vzreboot', vmid),
+                   tooltip: Ext.String.format(gettext('Reboot {0}'), 'CT'),
+                   handler: function() {
+                       vm_command("reboot");
+                   },
+                   iconCls: 'fa fa-refresh',
+               },
+               {
+                   text: gettext('Stop'),
+                   disabled: !caps.vms['VM.PowerMgmt'],
+                   confirmMsg: Proxmox.Utils.format_task_description('vzstop', vmid),
+                   tooltip: Ext.String.format(gettext('Stop {0} immediately'), 'CT'),
+                   dangerous: true,
+                   handler: function() {
+                       vm_command("stop");
+                   },
+                   iconCls: 'fa fa-stop',
+               }],
            },
-           iconCls: 'fa fa-power-off'
+           iconCls: 'fa fa-power-off',
        });
 
        var migrateBtn = Ext.create('Ext.Button', {
@@ -85,23 +95,24 @@ Ext.define('PVE.lxc.Config', {
                var win = Ext.create('PVE.window.Migrate', {
                    vmtype: 'lxc',
                    nodename: nodename,
-                   vmid: vmid
+                   vmid: vmid,
                });
                win.show();
            },
-           iconCls: 'fa fa-send-o'
+           iconCls: 'fa fa-send-o',
        });
 
        var moreBtn = Ext.create('Proxmox.button.Button', {
            text: gettext('More'),
-           menu: { items: [
+           menu: {
+ items: [
                {
                    text: gettext('Clone'),
                    iconCls: 'fa fa-fw fa-clone',
                    hidden: caps.vms['VM.Clone'] ? false : true,
                    handler: function() {
                        PVE.window.Clone.wrap(nodename, vmid, template, 'lxc');
-                   }
+                   },
                },
                {
                    text: gettext('Convert to template'),
@@ -117,22 +128,22 @@ Ext.define('PVE.lxc.Config', {
                            method: 'POST',
                            failure: function(response, opts) {
                                Ext.Msg.alert('Error', response.htmlStatus);
-                           }
+                           },
                        });
-                   }
+                   },
                },
                {
                    iconCls: 'fa fa-heartbeat ',
                    hidden: !caps.nodes['Sys.Console'],
                    text: gettext('Manage HA'),
                    handler: function() {
-                       var ha = me.pveSelNode.data.hastate;
+                       var ha = vm.hastate;
                        Ext.create('PVE.ha.VMResourceEdit', {
                            vmid: vmid,
                            guestType: 'ct',
-                           isCreate: (!ha || ha === 'unmanaged')
+                           isCreate: (!ha || ha === 'unmanaged'),
                        }).show();
-                   }
+                   },
                },
                {
                    text: gettext('Remove'),
@@ -141,38 +152,50 @@ Ext.define('PVE.lxc.Config', {
                    handler: function() {
                        Ext.create('PVE.window.SafeDestroy', {
                            url: base_url,
-                           item: { type: 'CT', id: vmid }
+                           item: { type: 'CT', id: vmid },
                        }).show();
                    },
-                   iconCls: 'fa fa-trash-o'
-               }
-           ]}
+                   iconCls: 'fa fa-trash-o',
+               },
+           ]
+},
        });
 
-       var vm = me.pveSelNode.data;
-
        var consoleBtn = Ext.create('PVE.button.ConsoleButton', {
            disabled: !caps.vms['VM.Console'],
            consoleType: 'lxc',
            consoleName: vm.name,
            hidden: template,
            nodename: nodename,
-           vmid: vmid
+           vmid: vmid,
+       });
+
+       var statusTxt = Ext.create('Ext.toolbar.TextItem', {
+           data: {
+               lock: undefined,
+           },
+           tpl: [
+               '<tpl if="lock">',
+               '<i class="fa fa-lg fa-lock"></i> ({lock})',
+               '</tpl>',
+           ],
        });
 
+
        Ext.apply(me, {
            title: Ext.String.format(gettext("Container {0} on node '{1}'"), vm.text, nodename),
            hstateid: 'lxctab',
-           tbar: [ startBtn, shutdownBtn, migrateBtn, consoleBtn, moreBtn ],
+           tbarSpacing: false,
+           tbar: [statusTxt, '->', startBtn, shutdownBtn, migrateBtn, consoleBtn, moreBtn],
            defaults: { statusStore: me.statusStore },
            items: [
                {
                    title: gettext('Summary'),
-                   xtype: 'pveLxcSummary',
+                   xtype: 'pveGuestSummary',
                    iconCls: 'fa fa-book',
-                   itemId: 'summary'
-               }
-           ]
+                   itemId: 'summary',
+               },
+           ],
        });
 
        if (caps.vms['VM.Console'] && !template) {
@@ -185,8 +208,8 @@ Ext.define('PVE.lxc.Config', {
                    vmid: vmid,
                    consoleType: 'lxc',
                    xtermjs: true,
-                   nodename: nodename
-               }
+                   nodename: nodename,
+               },
            );
        }
 
@@ -196,25 +219,25 @@ Ext.define('PVE.lxc.Config', {
                itemId: 'resources',
                expandedOnInit: true,
                iconCls: 'fa fa-cube',
-               xtype: 'pveLxcRessourceView'
+               xtype: 'pveLxcRessourceView',
            },
            {
                title: gettext('Network'),
                iconCls: 'fa fa-exchange',
                itemId: 'network',
-               xtype: 'pveLxcNetworkView'
+               xtype: 'pveLxcNetworkView',
            },
            {
                title: gettext('DNS'),
                iconCls: 'fa fa-globe',
                itemId: 'dns',
-               xtype: 'pveLxcDNS'
+               xtype: 'pveLxcDNS',
            },
            {
                title: gettext('Options'),
                itemId: 'options',
                iconCls: 'fa fa-gear',
-               xtype: 'pveLxcOptions'
+               xtype: 'pveLxcOptions',
            },
            {
                title: gettext('Task History'),
@@ -222,8 +245,8 @@ Ext.define('PVE.lxc.Config', {
                iconCls: 'fa fa-list',
                xtype: 'proxmoxNodeTasks',
                nodename: nodename,
-               vmidFilter: vmid
-           }
+               vmidFilter: vmid,
+           },
        );
 
        if (caps.vms['VM.Backup']) {
@@ -231,22 +254,24 @@ Ext.define('PVE.lxc.Config', {
                title: gettext('Backup'),
                iconCls: 'fa fa-floppy-o',
                xtype: 'pveBackupView',
-               itemId: 'backup'
+               itemId: 'backup',
            },
            {
                title: gettext('Replication'),
                iconCls: 'fa fa-retweet',
                xtype: 'pveReplicaView',
-               itemId: 'replication'
+               itemId: 'replication',
            });
        }
 
-       if ((caps.vms['VM.Snapshot'] || caps.vms['VM.Snapshot.Rollback']) && !template) {
+       if ((caps.vms['VM.Snapshot'] || caps.vms['VM.Snapshot.Rollback'] ||
+           caps.vms['VM.Audit']) && !template) {
            me.items.push({
                title: gettext('Snapshots'),
                iconCls: 'fa fa-history',
-               xtype: 'pveLxcSnapshotTree',
-               itemId: 'snapshot'
+               xtype: 'pveGuestSnapshotTree',
+               type: 'lxc',
+               itemId: 'snapshot',
            });
        }
 
@@ -259,7 +284,7 @@ Ext.define('PVE.lxc.Config', {
                    allow_iface: true,
                    base_url: base_url + '/firewall/rules',
                    list_refs_url: base_url + '/firewall/refs',
-                   itemId: 'firewall'
+                   itemId: 'firewall',
                },
                {
                    xtype: 'pveFirewallOptions',
@@ -269,7 +294,7 @@ Ext.define('PVE.lxc.Config', {
                    title: gettext('Options'),
                    base_url: base_url + '/firewall/options',
                    fwtype: 'vm',
-                   itemId: 'firewall-options'
+                   itemId: 'firewall-options',
                },
                {
                    xtype: 'pveFirewallAliases',
@@ -277,7 +302,7 @@ Ext.define('PVE.lxc.Config', {
                    groups: ['firewall'],
                    iconCls: 'fa fa-external-link',
                    base_url: base_url + '/firewall/aliases',
-                   itemId: 'firewall-aliases'
+                   itemId: 'firewall-aliases',
                },
                {
                    xtype: 'pveIPSet',
@@ -286,7 +311,7 @@ Ext.define('PVE.lxc.Config', {
                    iconCls: 'fa fa-list-ol',
                    base_url: base_url + '/firewall/ipset',
                    list_refs_url: base_url + '/firewall/refs',
-                   itemId: 'firewall-ipset'
+                   itemId: 'firewall-ipset',
                },
                {
                    title: gettext('Log'),
@@ -295,8 +320,8 @@ Ext.define('PVE.lxc.Config', {
                    onlineHelp: 'chapter_pve_firewall',
                    itemId: 'firewall-fwlog',
                    xtype: 'proxmoxLogView',
-                   url: '/api2/extjs' + base_url + '/firewall/log'
-               }
+                   url: '/api2/extjs' + base_url + '/firewall/log',
+               },
            );
        }
 
@@ -306,14 +331,16 @@ Ext.define('PVE.lxc.Config', {
                title: gettext('Permissions'),
                itemId: 'permissions',
                iconCls: 'fa fa-unlock',
-               path: '/vms/' + vmid
+               path: '/vms/' + vmid,
            });
        }
 
        me.callParent();
 
+       var prevStatus = 'unknown';
        me.mon(me.statusStore, 'load', function(s, records, success) {
            var status;
+           var lock;
            if (!success) {
                status = 'unknown';
            } else {
@@ -321,12 +348,25 @@ Ext.define('PVE.lxc.Config', {
                status = rec ? rec.data.value : 'unknown';
                rec = s.data.get('template');
                template = rec.data.value || false;
+               rec = s.data.get('lock');
+               lock = rec ? rec.data.value : undefined;
            }
+
+           statusTxt.update({ lock: lock });
+
            startBtn.setDisabled(!caps.vms['VM.PowerMgmt'] || status === 'running' || template);
            shutdownBtn.setDisabled(!caps.vms['VM.PowerMgmt'] || status !== 'running');
-           stopBtn.setDisabled(!caps.vms['VM.PowerMgmt'] || status === 'stopped');
            me.down('#removeBtn').setDisabled(!caps.vms['VM.Allocate'] || status !== 'stopped');
            consoleBtn.setDisabled(template);
+
+           if (prevStatus === 'stopped' && status === 'running') {
+               let con = me.down('#consolejs');
+               if (con) {
+                   con.reload();
+               }
+           }
+
+           prevStatus = status;
        });
 
        me.on('afterrender', function() {
@@ -336,5 +376,5 @@ Ext.define('PVE.lxc.Config', {
        me.on('destroy', function() {
            me.statusStore.stopUpdate();
        });
-    }
+    },
 });