]> git.proxmox.com Git - pve-manager.git/blobdiff - www/manager6/dc/Config.js
ui: realm: clarify that the sync jobs really are for the realm
[pve-manager.git] / www / manager6 / dc / Config.js
index 977d3c9cb4bd532ac3b586a20011338885c79088..f9f937a5550df9b65fc260a85e857f29011f12a0 100644 (file)
@@ -6,6 +6,8 @@ Ext.define('PVE.dc.Config', {
     extend: 'PVE.panel.Config',
     alias: 'widget.PVE.dc.Config',
 
+    onlineHelp: 'pve_admin_guide',
+
     initComponent: function() {
         var me = this;
 
@@ -15,99 +17,272 @@ Ext.define('PVE.dc.Config', {
 
        Ext.apply(me, {
            title: gettext("Datacenter"),
-           hstateid: 'dctab'
+           hstateid: 'dctab',
        });
 
        if (caps.dc['Sys.Audit']) {
            me.items.push({
-           title: gettext('Summary'),
+               title: gettext('Summary'),
                xtype: 'pveDcSummary',
-               itemId: 'summary'
-               });
-
-           me.items.push({
-           xtype: 'pveDcOptionView',
+               iconCls: 'fa fa-book',
+               itemId: 'summary',
+           },
+           {
+               xtype: 'pmxNotesView',
+               title: gettext('Notes'),
+               iconCls: 'fa fa-sticky-note-o',
+               itemId: 'notes',
+           },
+           {
+               title: gettext('Cluster'),
+               xtype: 'pveClusterAdministration',
+               iconCls: 'fa fa-server',
+               itemId: 'cluster',
+           },
+           {
+               title: 'Ceph',
+               itemId: 'ceph',
+               iconCls: 'fa fa-ceph',
+               xtype: 'pveNodeCephStatus',
+           },
+           {
+               xtype: 'pveDcOptionView',
                title: gettext('Options'),
-               itemId: 'options'
-               });
+               iconCls: 'fa fa-gear',
+               itemId: 'options',
+           });
        }
 
        if (caps.storage['Datastore.Allocate'] || caps.dc['Sys.Audit']) {
            me.items.push({
                xtype: 'pveStorageView',
                title: gettext('Storage'),
-               itemId: 'storage'
+               iconCls: 'fa fa-database',
+               itemId: 'storage',
            });
        }
 
+
        if (caps.dc['Sys.Audit']) {
-               me.items.push({
+           me.items.push({
                xtype: 'pveDcBackupView',
+               iconCls: 'fa fa-floppy-o',
                title: gettext('Backup'),
-               itemId: 'backup'
+               itemId: 'backup',
+           },
+           {
+               xtype: 'pveReplicaView',
+               iconCls: 'fa fa-retweet',
+               title: gettext('Replication'),
+               itemId: 'replication',
+           },
+           {
+               xtype: 'pveACLView',
+               title: gettext('Permissions'),
+               iconCls: 'fa fa-unlock',
+               itemId: 'permissions',
+               expandedOnInit: true,
            });
        }
 
        me.items.push({
            xtype: 'pveUserView',
+           groups: ['permissions'],
+           iconCls: 'fa fa-user',
            title: gettext('Users'),
-           itemId: 'users'
+           itemId: 'users',
        });
 
-       if (caps.dc['Sys.Audit']) {
-           me.items.push({
-                   xtype: 'pveGroupView',
-                   title: gettext('Groups'),
-                   itemId: 'groups'
-               });
-
-           me.items.push({
-                   xtype: 'pvePoolView',
-                   title: gettext('Pools'),
-                   itemId: 'pools'
-               });
-
-           me.items.push({
-                   xtype: 'pveACLView',
-                   title: gettext('Permissions'),
-                   itemId: 'permissions'
-               });
-
-           me.items.push({
-                   xtype: 'pveRoleView',
-                   title: gettext('Roles'),
-                   itemId: 'roles'
-               });
+       me.items.push({
+           xtype: 'pveTokenView',
+           groups: ['permissions'],
+           iconCls: 'fa fa-user-o',
+           title: gettext('API Tokens'),
+           itemId: 'apitokens',
+       });
 
-           me.items.push({
-                   xtype: 'pveAuthView',
-                   title: gettext('Authentication'),
-                   itemId: 'domains'
-               });
+       me.items.push({
+           xtype: 'pmxTfaView',
+           title: gettext('Two Factor'),
+           groups: ['permissions'],
+           iconCls: 'fa fa-key',
+           itemId: 'tfa',
+           yubicoEnabled: true,
+           issuerName: `Proxmox VE - ${PVE.ClusterName || Proxmox.NodeName}`,
+       });
 
+       if (caps.dc['Sys.Audit']) {
            me.items.push({
-                   xtype: 'pveHAPanel',
-                   title: 'HA',
-                   phstateid: me.hstateid,
-                   itemId: 'ha'
+               xtype: 'pveGroupView',
+               title: gettext('Groups'),
+               iconCls: 'fa fa-users',
+               groups: ['permissions'],
+               itemId: 'groups',
+           },
+           {
+               xtype: 'pvePoolView',
+               title: gettext('Pools'),
+               iconCls: 'fa fa-tags',
+               groups: ['permissions'],
+               itemId: 'pools',
+           },
+           {
+               xtype: 'pveRoleView',
+               title: gettext('Roles'),
+               iconCls: 'fa fa-male',
+               groups: ['permissions'],
+               itemId: 'roles',
+           },
+           {
+               title: gettext('Realms'),
+               xtype: 'panel',
+               layout: {
+                   type: 'border',
+               },
+               groups: ['permissions'],
+               iconCls: 'fa fa-address-book-o',
+               itemId: 'domains',
+               items: [
+                   {
+                       xtype: 'pveAuthView',
+                       region: 'center',
+                       border: false,
+                   },
+                   {
+                       xtype: 'pveRealmSyncJobView',
+                       title: gettext('Realm Sync Jobs'),
+                       region: 'south',
+                       collapsible: true,
+                       animCollapse: false,
+                       border: false,
+                       height: '50%',
+                   },
+               ],
+           },
+           {
+               xtype: 'pveHAStatus',
+               title: 'HA',
+               iconCls: 'fa fa-heartbeat',
+               itemId: 'ha',
+           },
+           {
+               title: gettext('Groups'),
+               groups: ['ha'],
+               xtype: 'pveHAGroupsView',
+               iconCls: 'fa fa-object-group',
+               itemId: 'ha-groups',
+           },
+           {
+               title: gettext('Fencing'),
+               groups: ['ha'],
+               iconCls: 'fa fa-bolt',
+               xtype: 'pveFencingView',
+               itemId: 'ha-fencing',
+           });
+           // always show on initial load, will be hiddea later if the SDN API calls don't exist,
+           // else it won't be shown at first if the user initially loads with DC selected
+           if (PVE.SDNInfo || PVE.SDNInfo === undefined) {
+               me.items.push({
+                   xtype: 'pveSDNStatus',
+                   title: gettext('SDN'),
+                   iconCls: 'fa fa-sdn',
+                   hidden: true,
+                   itemId: 'sdn',
+                   expandedOnInit: true,
+               },
+               {
+                   xtype: 'pveSDNZoneView',
+                   groups: ['sdn'],
+                   title: gettext('Zones'),
+                   hidden: true,
+                   iconCls: 'fa fa-th',
+                   itemId: 'sdnzone',
+               },
+               {
+                   xtype: 'pveSDNVnet',
+                   groups: ['sdn'],
+                   title: 'VNets',
+                   hidden: true,
+                   iconCls: 'fa fa-network-wired',
+                   itemId: 'sdnvnet',
+               },
+               {
+                   xtype: 'pveSDNOptions',
+                   groups: ['sdn'],
+                   title: gettext('Options'),
+                   hidden: true,
+                   iconCls: 'fa fa-gear',
+                   itemId: 'sdnoptions',
                });
+           }
 
-           me.items.push({
-                   xtype: 'pveFirewallPanel',
-                   title: gettext('Firewall'),
-                   base_url: '/cluster/firewall',
-                   fwtype: 'dc',
-                   phstateid: me.hstateid,
-                   itemId: 'firewall'
+           if (Proxmox.UserName === 'root@pam') {
+               me.items.push({
+                   xtype: 'pveACMEClusterView',
+                   title: 'ACME',
+                   iconCls: 'fa fa-certificate',
+                   itemId: 'acme',
                });
+           }
 
            me.items.push({
+               xtype: 'pveFirewallRules',
+               title: gettext('Firewall'),
+               allow_iface: true,
+               base_url: '/cluster/firewall/rules',
+               list_refs_url: '/cluster/firewall/refs',
+               iconCls: 'fa fa-shield',
+               itemId: 'firewall',
+           },
+           {
+               xtype: 'pveFirewallOptions',
+               title: gettext('Options'),
+               groups: ['firewall'],
+               iconCls: 'fa fa-gear',
+               base_url: '/cluster/firewall/options',
+               onlineHelp: 'pve_firewall_cluster_wide_setup',
+               fwtype: 'dc',
+               itemId: 'firewall-options',
+           },
+           {
+               xtype: 'pveSecurityGroups',
+               title: gettext('Security Group'),
+               groups: ['firewall'],
+               iconCls: 'fa fa-group',
+               itemId: 'firewall-sg',
+           },
+           {
+               xtype: 'pveFirewallAliases',
+               title: gettext('Alias'),
+               groups: ['firewall'],
+               iconCls: 'fa fa-external-link',
+               base_url: '/cluster/firewall/aliases',
+               itemId: 'firewall-aliases',
+           },
+           {
+               xtype: 'pveIPSet',
+               title: 'IPSet',
+               groups: ['firewall'],
+               iconCls: 'fa fa-list-ol',
+               base_url: '/cluster/firewall/ipset',
+               list_refs_url: '/cluster/firewall/refs',
+               itemId: 'firewall-ipset',
+           },
+           {
+               xtype: 'pveMetricServerView',
+               title: gettext('Metric Server'),
+               iconCls: 'fa fa-bar-chart',
+               itemId: 'metricservers',
+               onlineHelp: 'external_metric_server',
+           },
+           {
                xtype: 'pveDcSupport',
                title: gettext('Support'),
-               itemId: 'support'
+               itemId: 'support',
+               iconCls: 'fa fa-comments-o',
            });
        }
 
        me.callParent();
-   }
+   },
 });