]>
git.proxmox.com Git - pve-manager.git/blob - www/manager6/node/Summary.js
320f2247f1a9a9155a77fc9189e4d1de2dc6fc9d
1 Ext
.define('PVE.node.Summary', {
2 extend
: 'Ext.panel.Panel',
3 alias
: 'widget.pveNodeSummary',
8 showVersions: function() {
11 // Note: we use simply text/html here, because ExtJS grid has problems
14 var nodename
= me
.pveSelNode
.data
.node
;
16 var view
= Ext
.createWidget('component', {
21 'background-color': 'white',
23 'font-family': 'monospace',
27 var win
= Ext
.create('Ext.window.Window', {
28 title
: gettext('Package versions'),
37 iconCls
: 'fa fa-clipboard',
38 handler: function(button
) {
39 window
.getSelection().selectAllChildren(
40 document
.getElementById('pkgversions'),
42 document
.execCommand("copy");
44 text
: gettext('Copy'),
49 this.up('window').close();
55 Proxmox
.Utils
.API2Request({
57 url
: `/nodes/${nodename}/apt/versions`,
59 failure: function(response
, opts
) {
61 Ext
.Msg
.alert(gettext('Error'), response
.htmlStatus
);
63 success: function(response
, opts
) {
66 Ext
.Array
.each(response
.result
.data
, function(rec
) {
67 let version
= "not correctly installed";
68 let pkg
= rec
.Package
;
69 if (rec
.OldVersion
&& rec
.CurrentState
=== 'Installed') {
70 version
= rec
.OldVersion
;
72 if (rec
.RunningKernel
) {
73 text
+= `${pkg}: ${version} (running kernel: ${rec.RunningKernel})\n`;
74 } else if (rec
.ManagerVersion
) {
75 text
+= `${pkg}: ${version} (running version: ${rec.ManagerVersion})\n`;
77 text
+= `${pkg}: ${version}\n`;
81 view
.update(Ext
.htmlEncode(text
));
86 updateRepositoryStatus: function() {
88 let repoStatus
= me
.nodeStatus
.down('#repositoryStatus');
90 let nodename
= me
.pveSelNode
.data
.node
;
92 Proxmox
.Utils
.API2Request({
93 url
: `/nodes/${nodename}/apt/repositories`,
95 failure
: response
=> Ext
.Msg
.alert(gettext('Error'), response
.htmlStatus
),
96 success
: response
=> repoStatus
.setRepositoryInfo(response
.result
.data
['standard-repos']),
99 Proxmox
.Utils
.API2Request({
100 url
: `/nodes/${nodename}/subscription`,
102 failure
: response
=> Ext
.Msg
.alert(gettext('Error'), response
.htmlStatus
),
103 success: function(response
, opts
) {
104 const res
= response
.result
;
105 const subscription
= res
?.data
?.status
.toLowerCase() === 'active';
106 repoStatus
.setSubscriptionStatus(subscription
);
111 initComponent: function() {
114 var nodename
= me
.pveSelNode
.data
.node
;
116 throw "no node name specified";
119 if (!me
.statusStore
) {
120 throw "no status storage specified";
123 var rstore
= me
.statusStore
;
125 var version_btn
= new Ext
.Button({
126 text
: gettext('Package versions'),
127 handler: function() {
128 Proxmox
.Utils
.checked_command(function() { me
.showVersions(); });
132 var rrdstore
= Ext
.create('Proxmox.data.RRDStore', {
133 rrdurl
: "/api2/json/nodes/" + nodename
+ "/rrddata",
134 model
: 'pve-rrd-node',
137 let nodeStatus
= Ext
.create('PVE.node.StatusView', {
138 xtype
: 'pveNodeStatus',
141 pveSelNode
: me
.pveSelNode
,
145 tbar
: [version_btn
, '->', { xtype
: 'proxmoxRRDTypeSelector' }],
146 nodeStatus
: nodeStatus
,
150 itemId
: 'itemcontainer',
161 xtype
: 'proxmoxRRDChart',
162 title
: gettext('CPU usage'),
163 fields
: ['cpu', 'iowait'],
164 fieldTitles
: [gettext('CPU usage'), gettext('IO delay')],
169 xtype
: 'proxmoxRRDChart',
170 title
: gettext('Server load'),
172 fieldTitles
: [gettext('Load average')],
176 xtype
: 'proxmoxRRDChart',
177 title
: gettext('Memory usage'),
178 fields
: ['memtotal', 'memused'],
179 fieldTitles
: [gettext('Total'), gettext('RAM usage')],
185 xtype
: 'proxmoxRRDChart',
186 title
: gettext('Network traffic'),
187 fields
: ['netin', 'netout'],
192 resize: function(panel
) {
193 Proxmox
.Utils
.updateColumns(panel
);
199 activate: function() {
200 rstore
.setInterval(1000);
201 rstore
.startUpdate(); // just to be sure
202 rrdstore
.startUpdate();
204 destroy: function() {
205 rstore
.setInterval(5000); // don't stop it, it's not ours!
206 rrdstore
.stopUpdate();
211 me
.updateRepositoryStatus();
215 let sp
= Ext
.state
.Manager
.getProvider();
216 me
.mon(sp
, 'statechange', function(provider
, key
, value
) {
217 if (key
!== 'summarycolumns') {
220 Proxmox
.Utils
.updateColumns(me
.getComponent('itemcontainer'));